discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=3dd0ea5189d418e2e37b174e1380bd82b23ba548

commit 3dd0ea5189d418e2e37b174e1380bd82b23ba548
Author: Mike Blumenkrantz <[email protected]>
Date:   Mon Jan 27 16:24:42 2014 -0500

    break out client urgency setting into separate api function
    
    this unclutters the client idler a little and also makes it easier to 
correctly set the urgency hint for clients
---
 src/bin/e_client.c | 39 ++++++++++++++++++++++++---------------
 src/bin/e_client.h |  1 +
 src/bin/e_comp_x.c | 10 +++-------
 3 files changed, 28 insertions(+), 22 deletions(-)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index 45d75ab..bd3fbfe 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -2058,7 +2058,6 @@ e_client_idler_before(void)
 
         EINA_LIST_FOREACH(c->clients, ll, ec)
           {
-             int urgent = ec->icccm.urgent;
              Eina_Stringshare *title;
              // pass 1 - eval0. fetch properties on new or on change and
              // call hooks to decide what to do - maybe move/resize
@@ -2081,20 +2080,6 @@ e_client_idler_before(void)
                   _e_client_frame_update(ec);
                   ec->border.changed = 0;
                }
-             if (urgent != ec->icccm.urgent)
-               {
-                  _e_client_event_property(ec, E_CLIENT_PROPERTY_URGENCY);
-                  if (ec->icccm.urgent && (!ec->focused))
-                    e_comp_object_signal_emit(ec->frame, "e,state,urgent", 
"e");
-                  else
-                    e_comp_object_signal_emit(ec->frame, "e,state,not_urgent", 
"e");
-                  if (ec->icccm.urgent && e_screensaver_on_get() && 
e_config->screensaver_wake_on_urgent)
-                    {
-                       int x, y;
-                       ecore_evas_pointer_xy_get(e_comp_get(NULL)->ee, &x, &y);
-                       ecore_evas_pointer_warp(e_comp_get(NULL)->ee, x, y);
-                    }
-               }
              _e_client_hook_call(E_CLIENT_HOOK_EVAL_POST_FRAME_ASSIGN, ec);
           }
 
@@ -3638,6 +3623,30 @@ e_client_uniconify(E_Client *ec)
 ///////////////////////////////////////
 
 EAPI void
+e_client_urgent_set(E_Client *ec, Eina_Bool urgent)
+{
+   E_OBJECT_CHECK(ec);
+   E_OBJECT_TYPE_CHECK(ec, E_CLIENT_TYPE);
+
+   urgent = !!urgent;
+   if (urgent == ec->icccm.urgent) return;
+   ec->icccm.urgent = urgent;
+   _e_client_event_property(ec, E_CLIENT_PROPERTY_URGENCY);
+   if (urgent && (!ec->focused))
+     e_comp_object_signal_emit(ec->frame, "e,state,urgent", "e");
+   else
+     e_comp_object_signal_emit(ec->frame, "e,state,not_urgent", "e");
+   if (urgent && e_screensaver_on_get() && 
e_config->screensaver_wake_on_urgent)
+     {
+        int x, y;
+        ecore_evas_pointer_xy_get(e_comp_get(NULL)->ee, &x, &y);
+        ecore_evas_pointer_warp(e_comp_get(NULL)->ee, x, y);
+     }
+}
+
+///////////////////////////////////////
+
+EAPI void
 e_client_stick(E_Client *ec)
 {
    E_OBJECT_CHECK(ec);
diff --git a/src/bin/e_client.h b/src/bin/e_client.h
index 4308c99..22ed687 100644
--- a/src/bin/e_client.h
+++ b/src/bin/e_client.h
@@ -767,6 +767,7 @@ EAPI void e_client_fullscreen(E_Client *ec, E_Fullscreen 
policy);
 EAPI void e_client_unfullscreen(E_Client *ec);
 EAPI void e_client_iconify(E_Client *ec);
 EAPI void e_client_uniconify(E_Client *ec);
+EAPI void e_client_urgent_set(E_Client *ec, Eina_Bool urgent);
 EAPI void e_client_stick(E_Client *ec);
 EAPI void e_client_unstick(E_Client *ec);
 EAPI void e_client_pinned_set(E_Client *ec, Eina_Bool set);
diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c
index 2aa401a..874be93 100644
--- a/src/bin/e_comp_x.c
+++ b/src/bin/e_comp_x.c
@@ -1865,18 +1865,14 @@ _e_comp_x_message(void *data EINA_UNUSED, int type 
EINA_UNUSED, Ecore_X_Event_Cl
            case 0: break;
 
            case 1:
-             e_comp_object_signal_emit(ec->frame, "e,state,urgent", "e");
-             ec->icccm.urgent = 1;
-             EC_CHANGED(ec);
+             e_client_urgent_set(ec, 1);
              break;
 
            default:
              if (e_client_action_get())
                {
                   /* be helpful and ignore activates during window actions, 
but still set urgent */
-                  e_comp_object_signal_emit(ec->frame, "e,state,urgent", "e");
-                  ec->icccm.urgent = 1;
-                  EC_CHANGED(ec);
+                  e_client_urgent_set(ec, 1);
                   break;
                }
              if ((!starting) && (!ec->focused))
@@ -3082,7 +3078,7 @@ _e_comp_x_hook_client_fetch(void *d EINA_UNUSED, E_Client 
*ec)
                                     &is_urgent))
           {
              ec->icccm.accepts_focus = accepts_focus;
-             ec->icccm.urgent = is_urgent;
+             e_client_urgent_set(ec, is_urgent);
 
              /* If this is a new window, set the state as requested. */
              if ((ec->new_client) &&

-- 


Reply via email to