Enlightenment CVS committal

Author  : sebastid
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


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


Log Message:
Support internal state hints.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.h,v
retrieving revision 1.102
retrieving revision 1.103
diff -u -3 -r1.102 -r1.103
--- e_border.h  22 Aug 2005 04:16:25 -0000      1.102
+++ e_border.h  30 Aug 2005 01:15:25 -0000      1.103
@@ -259,6 +259,18 @@
              unsigned char state : 1;
         } update;
       } netwm;
+
+      /* Extra e stuff */
+      struct {
+        struct {
+           unsigned char centered : 1;
+        } state;
+
+        struct {
+           unsigned char state : 1;
+        } fetch;
+      } e;
+
       Ecore_X_Window_Attributes initial_attributes;
    } client;
    
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.372
retrieving revision 1.373
diff -u -3 -r1.372 -r1.373
--- e_border.c  29 Aug 2005 23:43:58 -0000      1.372
+++ e_border.c  30 Aug 2005 01:15:25 -0000      1.373
@@ -401,6 +401,14 @@
                       bd->client.netwm.fetch.state = 1;
                    }
               }
+            /* loop to check for own atoms */
+            for (i = 0; i < at_num; i++)
+              {
+                 if (atoms[i] == E_ATOM_WINDOW_STATE)
+                   {
+                      bd->client.e.fetch.state = 1;
+                   }
+              }
             free(atoms);
          }
      }
@@ -3997,6 +4005,11 @@
        e_hints_window_state_get(bd);
        bd->client.netwm.fetch.state = 0;
      }
+   if (bd->client.e.fetch.state)
+     {
+       e_hints_window_e_state_get(bd);
+       bd->client.e.fetch.state = 0;
+     }
    if (bd->client.netwm.fetch.type)
      {
        e_hints_window_type_get(bd);
@@ -4689,11 +4702,11 @@
                    }
               }
             free(pnd);
-            bd->pending_move_resize = 
evas_list_remove_list(bd->pending_move_resize, bd->pending_move_resize);
+            bd->pending_move_resize = 
evas_list_remove_list(bd->pending_move_resize,
+                                                            
bd->pending_move_resize);
          }
 
        /* Recreate state */
-       /* FIXME: this should be split into property fetches and state setup */
        e_hints_window_init(bd);
 
        ecore_x_icccm_move_resize_send(bd->client.win,
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_hints.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -3 -r1.20 -r1.21
--- e_hints.h   11 Aug 2005 04:44:08 -0000      1.20
+++ e_hints.h   30 Aug 2005 01:15:25 -0000      1.21
@@ -41,6 +41,9 @@
 EAPI void e_hints_window_stacking_set(E_Border *bd, E_Stacking stacking);
 
 EAPI void e_hints_window_desktop_set(E_Border *bd);
-    
+
+EAPI void e_hints_window_e_state_set(E_Border *bd);
+EAPI void e_hints_window_e_state_get(E_Border *bd);
+
 #endif
 #endif
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_hints.c,v
retrieving revision 1.66
retrieving revision 1.67
diff -u -3 -r1.66 -r1.67
--- e_hints.c   29 Aug 2005 23:04:21 -0000      1.66
+++ e_hints.c   30 Aug 2005 01:15:25 -0000      1.67
@@ -442,6 +442,14 @@
     * show it! */
    else if (bd->desk == e_desk_current_get(bd->zone))
      e_border_show(bd);
+   /* e hints */
+   if (bd->client.e.state.centered)
+     {
+       e_border_move(bd,
+                     bd->zone->x + (bd->zone->w - bd->w) / 2,
+                     bd->zone->y + (bd->zone->h - bd->h) / 2);
+                     
+     }
 
    /* Update stacking */
    e_hints_client_list_set();
@@ -452,9 +460,7 @@
 e_hints_window_state_set(E_Border *bd)
 {
    Ecore_X_Window_State state[10];
-   int num;
-
-   num = 0;
+   int num = 0;
 
    if (bd->client.netwm.state.modal)
      state[num++] = ECORE_X_WINDOW_STATE_MODAL;
@@ -1074,3 +1080,29 @@
 #endif
    bd->client.netwm.desktop = (bd->desk->y * bd->zone->desk_x_count) + 
bd->desk->x;
 }
+
+void
+e_hints_window_e_state_get(E_Border *bd)
+{
+   /* Remember to update the count if we add more states! */
+   Ecore_X_Atom state[1];
+   int num;
+
+   memset(state, 0, sizeof(state));
+   num = ecore_x_window_prop_card32_get(bd->client.win, E_ATOM_WINDOW_STATE, 
state, 1);
+   if (num)
+     {
+       int i;
+       for (i = 0; i < num; i++)
+         {
+            if (state[i] == E_ATOM_WINDOW_STATE_CENTERED)
+              bd->client.e.state.centered = 1;
+         }
+     }
+}
+
+void
+e_hints_window_e_state_set(E_Border *bd)
+{
+   /* TODO */
+}




-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to