Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        E.h ewins.c ewmh.c focus.c icccm.c 


Log Message:
Initial urgency and DEMANDS_ATTENTION support.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v
retrieving revision 1.445
retrieving revision 1.446
diff -u -3 -r1.445 -r1.446
--- E.h 2 Jun 2005 17:44:41 -0000       1.445
+++ E.h 2 Jun 2005 22:10:57 -0000       1.446
@@ -656,10 +656,11 @@
    Colormap            cmap;
    Window              icon_win;
    Pixmap              icon_pmap, icon_mask;
-   char                start_iconified;
    Window              group;
    Window              client_leader;
+   char                start_iconified;
    char                need_input;
+   char                urgency;
    char                take_focus;
    char                delete_window;
    signed char         transient;
@@ -766,6 +767,7 @@
       unsigned            maximized_vert:1;
       unsigned            fullscreen:1;
       unsigned            showingdesk:1;       /* Iconified by show desktop */
+      unsigned            attention:1;
    } st;
    struct
    {
@@ -1576,6 +1578,7 @@
 #define EWIN_CHANGE_DESKTOP     (1<<3)
 #define EWIN_CHANGE_LAYER       (1<<4)
 #define EWIN_CHANGE_OPACITY     (1<<5)
+#define EWIN_CHANGE_ATTENTION   (1<<6)
 
 void                EwinShapeSet(EWin * ewin);
 void                EwinFloatAt(EWin * ewin, int x, int y);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ewins.c,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -3 -r1.70 -r1.71
--- ewins.c     29 May 2005 23:48:08 -0000      1.70
+++ ewins.c     2 Jun 2005 22:11:07 -0000       1.71
@@ -1606,6 +1606,11 @@
        SnapshotEwinUpdate(ewin, SNAP_USE_OPACITY);
      }
 
+   if (EWinChanges.flags & EWIN_CHANGE_ATTENTION)
+     {
+       HintsSetWindowState(ewin);
+     }
+
    EWinChanges.flags = 0;
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ewmh.c,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -3 -r1.70 -r1.71
--- ewmh.c      7 May 2005 11:19:57 -0000       1.70
+++ ewmh.c      2 Jun 2005 22:11:08 -0000       1.71
@@ -142,9 +142,7 @@
    atom_list[atom_count++] = ECORE_X_ATOM_NET_WM_STATE_FULLSCREEN;
    atom_list[atom_count++] = ECORE_X_ATOM_NET_WM_STATE_ABOVE;
    atom_list[atom_count++] = ECORE_X_ATOM_NET_WM_STATE_BELOW;
-#if 0
    atom_list[atom_count++] = ECORE_X_ATOM_NET_WM_STATE_DEMANDS_ATTENTION;
-#endif
 
    atom_list[atom_count++] = ECORE_X_ATOM_NET_WM_STRUT;
    atom_list[atom_count++] = ECORE_X_ATOM_NET_FRAME_EXTENTS;
@@ -383,10 +381,10 @@
                 EoGetLayer(ewin) >= 6);
    atom_list_set(atom_list, len, &atom_count, ECORE_X_ATOM_NET_WM_STATE_BELOW,
                 EoGetLayer(ewin) <= 2);
-#if 0
    atom_list_set(atom_list, len, &atom_count,
-                ECORE_X_ATOM_NET_WM_STATE_DEMANDS_ATTENTION, TBD);
-#endif
+                ECORE_X_ATOM_NET_WM_STATE_DEMANDS_ATTENTION,
+                ewin->st.attention);
+
    ecore_x_window_prop_atom_set(ewin->client.win, ECORE_X_ATOM_NET_WM_STATE,
                                atom_list, atom_count);
 }
@@ -494,7 +492,7 @@
    ewin->shaded = 0;
    ewin->skiptask = ewin->skip_ext_pager = 0;
    ewin->st.maximized_horz = ewin->st.maximized_vert = 0;
-   ewin->st.fullscreen = 0;
+   ewin->st.fullscreen = ewin->st.attention = 0;
 /* ewin->layer = No ... TBD */
 
    for (i = 0; i < n_atoms; i++)
@@ -520,10 +518,8 @@
           EoSetLayer(ewin, 6);
        else if (atom == ECORE_X_ATOM_NET_WM_STATE_BELOW)
           EoSetLayer(ewin, 2);
-#if 0
        else if (atom == ECORE_X_ATOM_NET_WM_STATE_DEMANDS_ATTENTION)
-          TBD;
-#endif
+          ewin->st.attention = 1;
      }
    Efree(p_atoms);
 }
@@ -817,13 +813,13 @@
          {
             action = do_set(ewin->skiptask, action);
             ewin->skiptask = action;
-            /* Set ECORE_X_ATOM_NET_WM_STATE ? */
+            EWMH_SetWindowState(ewin);
          }
        else if (atom == ECORE_X_ATOM_NET_WM_STATE_SKIP_PAGER)
          {
             action = do_set(ewin->skip_ext_pager, action);
             ewin->skip_ext_pager = action;
-            /* Set ECORE_X_ATOM_NET_WM_STATE ? */
+            EWMH_SetWindowState(ewin);
          }
        else if (atom == ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_VERT ||
                 atom == ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_HORZ)
@@ -889,11 +885,12 @@
             else
                EwinOpSetLayer(ewin, 4);
          }
-#if 0
        else if (atom == ECORE_X_ATOM_NET_WM_STATE_DEMANDS_ATTENTION)
          {
+            action = do_set(ewin->st.attention, action);
+            ewin->st.attention = action;
+            EWMH_SetWindowState(ewin);
          }
-#endif
      }
    else if (ev->message_type == ECORE_X_ATOM_NET_WM_MOVERESIZE)
      {
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/focus.c,v
retrieving revision 1.101
retrieving revision 1.102
diff -u -3 -r1.101 -r1.102
--- focus.c     31 May 2005 21:11:32 -0000      1.101
+++ focus.c     2 Jun 2005 22:11:08 -0000       1.102
@@ -223,6 +223,12 @@
    EwinBorderUpdateState(ewin);
 
    FocusEwinSetGrabs(ewin);
+
+   if (active && ewin->st.attention)
+     {
+       ewin->st.attention = 0;
+       HintsSetWindowState(ewin);
+     }
 }
 
 void
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/icccm.c,v
retrieving revision 1.96
retrieving revision 1.97
diff -u -3 -r1.96 -r1.97
--- icccm.c     21 May 2005 20:58:18 -0000      1.96
+++ icccm.c     2 Jun 2005 22:11:09 -0000       1.97
@@ -632,73 +632,47 @@
               }
          }
 
-       if (hint->flags & InputHint)
-         {
-            if (hint->input)
-              {
-                 ewin->client.need_input = 1;
-              }
-            else
-              {
-                 ewin->client.need_input = 0;
-              }
-         }
-       else
-         {
-            ewin->client.need_input = 1;
-         }
+       ewin->client.need_input =
+          ((hint->flags & InputHint) && (!hint->input)) ? 0 : 1;
+
+       ewin->client.start_iconified =
+          ((hint->flags & StateHint) &&
+           (hint->initial_state == IconicState)) ? 1 : 0;
 
-       if (hint->flags & StateHint)
+       if (hint->flags & IconPixmapHint)
          {
-            if (hint->initial_state == IconicState)
-              {
-                 ewin->client.start_iconified = 1;
-              }
-            else
+            if (ewin->client.icon_pmap != hint->icon_pixmap)
               {
-                 ewin->client.start_iconified = 0;
+                 ewin->client.icon_pmap = hint->icon_pixmap;
+                 EwinChange(ewin, EWIN_CHANGE_ICON_PMAP);
               }
          }
        else
          {
-            ewin->client.start_iconified = 0;
+            ewin->client.icon_pmap = None;
          }
 
-       if (hint->flags & IconPixmapHint)
-         {
-            ewin->client.icon_pmap = hint->icon_pixmap;
-            EwinChange(ewin, EWIN_CHANGE_ICON_PMAP);
-         }
-       else
-         {
-            ewin->client.icon_pmap = 0;
-         }
+       ewin->client.icon_mask =
+          (hint->flags & IconMaskHint) ? hint->icon_mask : None;
 
-       if (hint->flags & IconMaskHint)
-         {
-            ewin->client.icon_mask = hint->icon_mask;
-         }
-       else
-         {
-            ewin->client.icon_mask = 0;
-         }
+       ewin->client.icon_win =
+          (hint->flags & IconWindowHint) ? hint->icon_window : None;
 
-       if (hint->flags & IconWindowHint)
-         {
-            ewin->client.icon_win = hint->icon_window;
-         }
-       else
-         {
-            ewin->client.icon_win = 0;
-         }
+       ewin->client.group =
+          (hint->flags & WindowGroupHint) ? hint->window_group : None;
 
-       if (hint->flags & WindowGroupHint)
+       if (hint->flags & XUrgencyHint)
          {
-            ewin->client.group = hint->window_group;
+            if (!ewin->client.urgency)
+              {
+                 ewin->client.urgency = 1;
+                 EwinChange(ewin, EWIN_CHANGE_ATTENTION);
+              }
+            ewin->st.attention = 1;
          }
        else
          {
-            ewin->client.group = 0;
+            ewin->client.urgency = 0;
          }
 
        XFree(hint);




-------------------------------------------------------
This SF.Net email is sponsored by Yahoo.
Introducing Yahoo! Search Developer Network - Create apps using Yahoo!
Search APIs Find out how you can build Yahoo! directly into your own
Applications - visit http://developer.yahoo.net/?fr=offad-ysdn-ostg-q22005
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to