[mutter] [MetaDisplay] added "window-marked-urgent" signal



commit 5e2c66e241ce6f9a6e4fe28290ae63b8b1520dce
Author: Tomas Frydrych <tf linux intel com>
Date:   Tue Nov 17 10:24:18 2009 +0000

    [MetaDisplay] added "window-marked-urgent" signal
    
    Having a MetaDisplay window-marked-urgent signal when a window sets its urgent
    hint allows for centralized processing
    
    https://bugzilla.gnome.org/show_bug.cgi?id=600068

 src/core/display.c      |   11 +++++++++++
 src/core/window-props.c |    9 +++++++++
 src/core/window.c       |    3 +++
 3 files changed, 23 insertions(+), 0 deletions(-)
---
diff --git a/src/core/display.c b/src/core/display.c
index 5b08eac..6995f95 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -131,6 +131,7 @@ enum
   FOCUS_WINDOW,
   WINDOW_CREATED,
   WINDOW_DEMANDS_ATTENTION,
+  WINDOW_MARKED_URGENT,
   LAST_SIGNAL
 };
 
@@ -246,6 +247,16 @@ meta_display_class_init (MetaDisplayClass *klass)
                   g_cclosure_marshal_VOID__OBJECT,
                   G_TYPE_NONE, 1, META_TYPE_WINDOW);
 
+  display_signals[WINDOW_MARKED_URGENT] =
+    g_signal_new ("window-marked-urgent",
+                  G_TYPE_FROM_CLASS (klass),
+                  G_SIGNAL_RUN_LAST,
+                  0,
+                  NULL, NULL,
+                  g_cclosure_marshal_VOID__OBJECT,
+                  G_TYPE_NONE, 1,
+                  META_TYPE_WINDOW);
+
   g_object_class_install_property (object_class,
                                    PROP_FOCUS_WINDOW,
                                    g_param_spec_object ("focus-window",
diff --git a/src/core/window-props.c b/src/core/window-props.c
index 4e14502..4d95119 100644
--- a/src/core/window-props.c
+++ b/src/core/window-props.c
@@ -1406,6 +1406,15 @@ reload_wm_hints (MetaWindow    *window,
   if (!initial && (window->wm_hints_urgent != old_urgent))
     g_object_notify (G_OBJECT (window), "urgent");
 
+  /*
+   * Do not emit signal for the initial property load, let the constructor to
+   * take care of it once the MetaWindow is fully constructed.
+   *
+   * Only emit if the property is both changed and set.
+   */
+  if (!initial && window->wm_hints_urgent && !old_urgent)
+    g_signal_emit_by_name (window->display, "window-marked-urgent", window);
+
   meta_icon_cache_property_changed (&window->icon_cache,
                                     window->display,
                                     XA_WM_HINTS);
diff --git a/src/core/window.c b/src/core/window.c
index 4b83977..be4cfbc 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -1125,6 +1125,9 @@ meta_window_new_with_attrs (MetaDisplay       *display,
   if (window->wm_state_demands_attention)
     g_signal_emit_by_name (window->display, "window-demands-attention", window);
 
+  if (window->wm_hints_urgent)
+    g_signal_emit_by_name (window->display, "window-marked-urgent", window);
+
   return window;
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]