metacity r3533 - in trunk: . src/core
- From: tthurman svn gnome org
- To: svn-commits-list gnome org
- Subject: metacity r3533 - in trunk: . src/core
- Date: Sat, 2 Feb 2008 04:05:17 +0000 (GMT)
Author: tthurman
Date: Sat Feb 2 04:05:16 2008
New Revision: 3533
URL: http://svn.gnome.org/viewvc/metacity?rev=3533&view=rev
Log:
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.
Modified:
trunk/ChangeLog
trunk/src/core/display.c
trunk/src/core/window.c
Modified: trunk/src/core/display.c
==============================================================================
--- trunk/src/core/display.c (original)
+++ trunk/src/core/display.c Sat Feb 2 04:05:16 2008
@@ -4596,6 +4596,29 @@
}
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;
}
Modified: trunk/src/core/window.c
==============================================================================
--- trunk/src/core/window.c (original)
+++ trunk/src/core/window.c Sat Feb 2 04:05:16 2008
@@ -8056,37 +8056,38 @@
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);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]