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:
parent
48b6e8dd67
commit
18b63e9b5f
19
ChangeLog
19
ChangeLog
@ -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>
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user