Enlightenment CVS committal

Author  : sebastid
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_border.c e_border.h e_hints.c 


Log Message:
Add fetch flag for netwm/icccm state. Easier to manipulate before a new
client is mapped.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.246
retrieving revision 1.247
diff -u -3 -r1.246 -r1.247
--- e_border.c  6 Jun 2005 17:46:36 -0000       1.246
+++ e_border.c  7 Jun 2005 13:16:23 -0000       1.247
@@ -343,6 +343,8 @@
                    bd->client.icccm.fetch.transient_for = 1;
                  else if (atoms[i] == ECORE_X_ATOM_WM_WINDOW_ROLE)
                    bd->client.icccm.fetch.window_role = 1;
+                 else if (atoms[i] == ECORE_X_ATOM_WM_STATE)
+                   bd->client.icccm.fetch.state = 1;
               }
             /* netwm, loop again, netwm will ignore some icccm, so we
              * have to be sure that netwm is checked after */
@@ -385,20 +387,14 @@
                       */
                       bd->client.netwm.fetch.type = 1;
                    }
+                 else if (atoms[i] == ECORE_X_ATOM_NET_WM_STATE)
+                   {
+                      bd->client.netwm.fetch.state = 1;
+                   }
               }
             free(atoms);
          }
      }
-/*   
-   bd->client.icccm.fetch.title = 1;
-   bd->client.icccm.fetch.name_class = 1;
-   bd->client.icccm.fetch.icon_name = 1;
-   bd->client.icccm.fetch.machine = 1;
-   bd->client.icccm.fetch.hints = 1;
-   bd->client.icccm.fetch.size_pos_hints = 1;
-   bd->client.icccm.fetch.protocol = 1;
-   bd->client.mwm.fetch.hints = 1;
- */
    bd->client.border.changed = 1;
    
    bd->client.w = att->w;
@@ -3139,11 +3135,6 @@
                                       bd->client.netwm.name);
          }
      }
-   if (bd->client.netwm.update.state)
-     {
-       e_hints_window_state_set(bd);
-       bd->client.netwm.update.state = 0;
-     }
    if (bd->client.icccm.fetch.name_class)
      {
        int nc_change = 0;
@@ -3236,34 +3227,15 @@
 
        bd->client.netwm.fetch.strut = 0;
      }
-   if (bd->changes.icon)
+   if (bd->client.icccm.fetch.state)
      {
-       if (bd->icon_object)
-         {
-            evas_object_del(bd->icon_object);
-            bd->icon_object = NULL;
-         }
-
-       bd->icon_object = e_border_icon_add(bd, bd->bg_evas);
-       if (bd->bg_object)
-         {
-            evas_object_show(bd->icon_object);
-            edje_object_part_swallow(bd->bg_object, "icon_swallow", 
bd->icon_object);
-         }
-       else
-         {
-            evas_object_hide(bd->icon_object);
-         }
-
-         {
-            E_Event_Border_Icon_Change *ev;
-
-            ev = calloc(1, sizeof(E_Event_Border_Icon_Change));
-            ev->border = bd;
-            e_object_ref(E_OBJECT(bd));
-            ecore_event_add(E_EVENT_BORDER_ICON_CHANGE, ev, 
_e_border_event_border_icon_change_free, NULL);
-         }
-       bd->changes.icon = 0;
+       bd->client.icccm.state = ecore_x_icccm_state_get(bd->client.win);
+       bd->client.icccm.fetch.state = 0;
+     }
+   if (bd->client.netwm.fetch.state)
+     {
+       e_hints_window_state_get(bd);
+       bd->client.netwm.fetch.state = 0;
      }
    if (bd->client.netwm.fetch.type)
      {
@@ -3274,6 +3246,23 @@
             bd->client.border.name = strdup("borderless");
             bd->client.border.changed = 1;
          }
+       if (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DOCK)
+         {
+            if (bd->client.border.name) free(bd->client.border.name);
+            bd->client.border.name = strdup("borderless");
+            bd->client.border.changed = 1;
+
+            if (!bd->client.netwm.state.skip_pager)
+              {
+                 bd->client.netwm.state.skip_pager = 1;
+                 bd->client.netwm.update.state = 1;
+              }
+            if (!bd->client.netwm.state.skip_taskbar)
+              {
+                 bd->client.netwm.state.skip_taskbar = 1;
+                 bd->client.netwm.update.state = 1;
+              }
+         }
 
        bd->client.netwm.fetch.type = 0;
      }
@@ -3419,6 +3408,41 @@
        bd->client.icccm.window_role = 
ecore_x_icccm_window_role_get(bd->client.win);
        bd->client.icccm.fetch.window_role = 0;
      }
+   if (bd->client.netwm.update.state)
+     {
+       e_hints_window_state_set(bd);
+       bd->client.netwm.update.state = 0;
+     }
+   if (bd->changes.icon)
+     {
+       if (bd->icon_object)
+         {
+            evas_object_del(bd->icon_object);
+            bd->icon_object = NULL;
+         }
+
+       bd->icon_object = e_border_icon_add(bd, bd->bg_evas);
+       if (bd->bg_object)
+         {
+            evas_object_show(bd->icon_object);
+            edje_object_part_swallow(bd->bg_object, "icon_swallow", 
bd->icon_object);
+         }
+       else
+         {
+            evas_object_hide(bd->icon_object);
+         }
+
+         {
+            E_Event_Border_Icon_Change *ev;
+
+            ev = calloc(1, sizeof(E_Event_Border_Icon_Change));
+            ev->border = bd;
+            e_object_ref(E_OBJECT(bd));
+            ecore_event_add(E_EVENT_BORDER_ICON_CHANGE, ev,
+                            _e_border_event_border_icon_change_free, NULL);
+         }
+       bd->changes.icon = 0;
+     }
    if (bd->changes.shape)
      {
        Ecore_X_Rectangle *rects;
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.h,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -3 -r1.70 -r1.71
--- e_border.h  6 Jun 2005 15:22:04 -0000       1.70
+++ e_border.h  7 Jun 2005 13:16:24 -0000       1.71
@@ -145,6 +145,7 @@
            unsigned char protocol : 1;
            unsigned char transient_for : 1;
            unsigned char window_role : 1;
+           unsigned char state : 1;
         } fetch;
       } icccm;
       struct {
@@ -216,18 +217,13 @@
            unsigned char user_time : 1;
            unsigned char strut : 1;
            unsigned char type : 1;
+           unsigned char state : 1;
            /* No, fetch on new_client, shouldn't be changed after map.
            unsigned char pid : 1;
            */
            /* No, ignore this
            unsigned char desktop : 1;
            */
-           /* No, fetch on new_client, shouldn't be changed after map.
-           unsigned char type : 1;
-           */
-           /* No, don't fetch state, update on client message
-           unsigned char state : 1;
-           */
         } fetch;
 
         struct {
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_hints.c,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -3 -r1.48 -r1.49
--- e_hints.c   6 Jun 2005 15:22:05 -0000       1.48
+++ e_hints.c   7 Jun 2005 13:16:24 -0000       1.49
@@ -329,10 +329,6 @@
 void
 e_hints_window_init(E_Border *bd)
 {
-   /* Don't need fetch flag, is onlt called from new border */
-   e_hints_window_state_get(bd);
-
-   bd->client.icccm.state = ecore_x_icccm_state_get(bd->client.win);
    if (bd->client.icccm.state == ECORE_X_WINDOW_STATE_HINT_NONE)
      {
        if (bd->client.netwm.state.hidden)
@@ -458,7 +454,6 @@
 
 void e_hints_window_type_get(E_Border *bd)
 {
-   /* Don't need fetch flag, only called on new border */
    bd->client.netwm.type = ecore_x_netwm_window_type_get(bd->client.win);
 }
 




-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games.  How far can you shotput
a projector? How fast can you ride your desk chair down the office luge track?
If you want to score the big prize, get to know the little guy.  
Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=20
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to