summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Untz <vuntz@gnome.org>2006-03-06 18:53:59 +0000
committerVincent Untz <vuntz@src.gnome.org>2006-03-06 18:53:59 +0000
commit327a8a7a5cd81654de03c027d4f234c0bd6fec39 (patch)
treed7ba9c9d591a4408d546447aa22a49dae13e3924
parentb31785b64438f810fa6cc5e9bb2d2a70d9034c2c (diff)
downloadlibwnck-327a8a7a5cd81654de03c027d4f234c0bd6fec39.tar.gz
don't minimize the window when it's on another desktop and it was the last
2006-03-06 Vincent Untz <vuntz@gnome.org> * libwnck/tasklist.c: (wnck_tasklist_activate_task_window): don't minimize the window when it's on another desktop and it was the last active window. Activate it instead. Fix bug #331661
-rw-r--r--ChangeLog6
-rw-r--r--libwnck/tasklist.c18
2 files changed, 14 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 09b9c38..1c40933 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-03-06 Vincent Untz <vuntz@gnome.org>
+
+ * libwnck/tasklist.c: (wnck_tasklist_activate_task_window): don't
+ minimize the window when it's on another desktop and it was the last
+ active window. Activate it instead. Fix bug #331661
+
2006-02-27 Vincent Untz <vuntz@gnome.org>
* configure.in: post-release bump to 2.13.92
diff --git a/libwnck/tasklist.c b/libwnck/tasklist.c
index fe6a85f..fc14609 100644
--- a/libwnck/tasklist.c
+++ b/libwnck/tasklist.c
@@ -2276,6 +2276,8 @@ wnck_tasklist_activate_task_window (WnckTask *task,
{
WnckTasklist *tasklist;
WnckWindowState state;
+ WnckWorkspace *active_ws;
+ WnckWorkspace *window_ws;
tasklist = task->tasklist;
@@ -2284,13 +2286,11 @@ wnck_tasklist_activate_task_window (WnckTask *task,
state = wnck_window_get_state (task->window);
+ active_ws = wnck_screen_get_active_workspace (tasklist->priv->screen);
+ window_ws = wnck_window_get_workspace (task->window);
+
if (state & WNCK_WINDOW_STATE_MINIMIZED)
{
- WnckWorkspace *active_ws;
- WnckWorkspace *window_ws;
-
- active_ws = wnck_screen_get_active_workspace (tasklist->priv->screen);
- window_ws = wnck_window_get_workspace (task->window);
if (window_ws &&
active_ws != window_ws &&
!tasklist->priv->switch_workspace_on_unminimize)
@@ -2300,8 +2300,9 @@ wnck_tasklist_activate_task_window (WnckTask *task,
}
else
{
- if (task->was_active ||
- wnck_window_transient_is_most_recently_activated (task->window))
+ if ((task->was_active ||
+ wnck_window_transient_is_most_recently_activated (task->window)) &&
+ (window_ws && active_ws == window_ws))
{
task->was_active = FALSE;
wnck_window_minimize (task->window);
@@ -2309,13 +2310,10 @@ wnck_tasklist_activate_task_window (WnckTask *task,
}
else
{
- WnckWorkspace *window_ws;
-
/* FIXME: THIS IS SICK AND WRONG AND BUGGY. See the end of
* http://mail.gnome.org/archives/wm-spec-list/2005-July/msg00032.html
* There should only be *one* activate call.
*/
- window_ws = wnck_window_get_workspace (task->window);
if (window_ws)
wnck_workspace_activate (window_ws, timestamp);