1
0
Fork 0

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:
Alex R.M. Turner 2008-02-02 04:05:16 +00:00 committed by Thomas James Alexander Thurman
parent 48b6e8dd67
commit 18b63e9b5f
3 changed files with 64 additions and 29 deletions

View file

@ -1,9 +1,20 @@
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.
2008-01-28 Christian Persch <chpe@gnome.org>
* src/core/display.c: (convert_property):
* src/core/screen.c: (meta_screen_calc_workspace_layout):
* src/core/xprops.c: (meta_prop_get_values):
Use G_STRFUNC instead of the deprecated G_GNUC_FUNCTION. Bug #512561.
* src/core/display.c (convert_property):
* src/core/screen.c (meta_screen_calc_workspace_layout):
* src/core/xprops.c (meta_prop_get_values):
Use G_STRFUNC instead of the deprecated G_GNUC_FUNCTION.
Bug #512561.
2008-01-21 Thomas Thurman <tthurman@gnome.org>

View file

@ -4596,6 +4596,29 @@ meta_display_get_tab_list (MetaDisplay *display,
}
tab_list = g_list_reverse (tab_list);
{
GSList *tmp;
MetaWindow *l_window;
tmp = meta_display_list_windows (display);
/* Go through all windows */
while (tmp != NULL)
{
l_window=tmp->data;
/* Check to see if it demands attention */
if (l_window->wm_state_demands_attention &&
l_window->workspace!=workspace)
{
/* if it does, add it to the popup */
tab_list = g_list_prepend (tab_list, l_window);
}
tmp = tmp->next;
} /* End while tmp!=NULL */
}
return tab_list;
}

View file

@ -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);