Have the list also pull windows that are in other workspaces that have the
2008-02-01 Alex R.M. Turner <armtuk@gmail.com> * src/core/display.c (meta_get_tab_entry_list): Have the list also pull windows that are in other workspaces that have the wm_state_needs_attention flag set * src/core/window.c (meta_window_set_demands_attention): Make windows that are on other workspaces that demand attention that aren't obscured count as being obscured Bug #333548. svn path=/trunk/; revision=3533
This commit is contained in:

committed by
Thomas James Alexander Thurman

parent
48b6e8dd67
commit
18b63e9b5f
@ -8056,37 +8056,38 @@ meta_window_set_demands_attention (MetaWindow *window)
|
||||
MetaWindow *other_window;
|
||||
gboolean obscured = FALSE;
|
||||
|
||||
/* Does the window have any other window on this workspace
|
||||
* overlapping it?
|
||||
*/
|
||||
|
||||
meta_window_get_outer_rect (window, &candidate_rect);
|
||||
|
||||
/* The stack is sorted with the top windows first. */
|
||||
|
||||
while (stack != NULL && stack->data != window)
|
||||
MetaWorkspace *workspace = window->screen->active_workspace;
|
||||
if (workspace!=window->workspace)
|
||||
{
|
||||
other_window = stack->data;
|
||||
stack = stack->next;
|
||||
|
||||
if (other_window->on_all_workspaces ||
|
||||
window->on_all_workspaces ||
|
||||
other_window->workspace == window->workspace)
|
||||
{
|
||||
meta_window_get_outer_rect (other_window, &other_rect);
|
||||
/* windows on other workspaces are necessarily obscured */
|
||||
obscured = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
meta_window_get_outer_rect (window, &candidate_rect);
|
||||
|
||||
if (meta_rectangle_overlap (&candidate_rect, &other_rect))
|
||||
/* The stack is sorted with the top windows first. */
|
||||
|
||||
while (stack != NULL && stack->data != window)
|
||||
{
|
||||
other_window = stack->data;
|
||||
stack = stack->next;
|
||||
|
||||
if (other_window->on_all_workspaces ||
|
||||
window->on_all_workspaces ||
|
||||
other_window->workspace == window->workspace)
|
||||
{
|
||||
obscured = TRUE;
|
||||
break;
|
||||
meta_window_get_outer_rect (other_window, &other_rect);
|
||||
|
||||
if (meta_rectangle_overlap (&candidate_rect, &other_rect))
|
||||
{
|
||||
obscured = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* If the window's in full view, there's no point setting the flag. */
|
||||
/* If the window's in full view, there's no point setting the flag. */
|
||||
|
||||
if (!obscured)
|
||||
{
|
||||
meta_topic (META_DEBUG_WINDOW_OPS,
|
||||
"Not marking %s as needing attention because it's in full view\n",
|
||||
window->desc);
|
||||
|
Reference in New Issue
Block a user