Author: olivier Date: 2007-03-15 22:28:43 +0000 (Thu, 15 Mar 2007) New Revision: 25174
Modified: xfwm4/trunk/src/stacking.c xfwm4/trunk/src/workspaces.c Log: Check only visible windows to see if client is on top of stack (bug #2960) Modified: xfwm4/trunk/src/stacking.c =================================================================== --- xfwm4/trunk/src/stacking.c 2007-03-15 22:05:46 UTC (rev 25173) +++ xfwm4/trunk/src/stacking.c 2007-03-15 22:28:43 UTC (rev 25174) @@ -156,7 +156,8 @@ clientIsTopMost (Client *c) { ScreenInfo *screen_info; - GList *index; + GList *index, *index2; + Client *c2; g_return_val_if_fail (c != NULL, FALSE); TRACE ("entering clientIsTopMost"); @@ -166,18 +167,18 @@ index = g_list_find (screen_info->windows_stack, (gconstpointer) c); if (index) { - GList *index2 = g_list_next (index); - if (index2) + index2 = g_list_next (index); + while (index2) { - Client *c2 = (Client *) index2->data; - return (c2->win_layer > c->win_layer); + c2 = (Client *) index2->data; + if (FLAG_TEST (c2->xfwm_flags, XFWM_FLAG_VISIBLE) && (c2->win_layer == c->win_layer)) + { + return FALSE; + } + index2 = g_list_next (index2); } - else - { - return TRUE; - } } - return FALSE; + return TRUE; } Client * Modified: xfwm4/trunk/src/workspaces.c =================================================================== --- xfwm4/trunk/src/workspaces.c 2007-03-15 22:05:46 UTC (rev 25173) +++ xfwm4/trunk/src/workspaces.c 2007-03-15 22:28:43 UTC (rev 25174) @@ -385,7 +385,7 @@ { if ((screen_info->params->click_to_focus) && (screen_info->params->raise_on_click)) { - if (!clientIsTopMost (new_focus)) + if (!(screen_info->params->raise_on_focus) && !clientIsTopMost (new_focus)) { clientRaise (new_focus, None); } _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits