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 e_hints.h 


Log Message:
Window hints cleanup.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.163
retrieving revision 1.164
diff -u -3 -r1.163 -r1.164
--- e_border.c  28 Apr 2005 12:26:57 -0000      1.163
+++ e_border.c  29 Apr 2005 08:02:28 -0000      1.164
@@ -3047,32 +3047,7 @@
        ecore_event_add(E_EVENT_BORDER_ADD, ev, 
_e_border_event_border_add_free, NULL);
 
        /* Recreate state */
-       if (ecore_x_netwm_window_type_get(bd->client.win) == 
ECORE_X_WINDOW_TYPE_DESKTOP)
-         bd->layer = 0;
-       else if (ecore_x_netwm_window_state_isset(bd->client.win, 
ECORE_X_WINDOW_STATE_BELOW))
-         bd->layer = 50;
-       else if (ecore_x_netwm_window_state_isset(bd->client.win, 
ECORE_X_WINDOW_STATE_ABOVE))
-         bd->layer = 150;
-       else if (ecore_x_netwm_window_type_get(bd->client.win) == 
ECORE_X_WINDOW_TYPE_DOCK)
-         bd->layer = 150;
-       else if (ecore_x_netwm_window_state_isset(bd->client.win, 
ECORE_X_WINDOW_STATE_FULLSCREEN))
-         bd->layer = 200;
-       else
-         bd->layer = 100;
-       e_container_window_raise(bd->zone->container, bd->win, bd->layer);
-
-       if (e_hints_window_sticky_isset(bd->client.win))
-         e_border_stick(bd);
-       if (e_hints_window_shaded_isset(bd->client.win))
-         e_border_shade(bd, 
e_hints_window_shade_direction_get(bd->client.win));
-       if (e_hints_window_maximized_isset(bd->client.win))
-         e_border_maximize(bd);
-       if (e_hints_window_iconic_isset(bd->client.win))
-         e_border_iconify(bd);
-       /* If a window isn't iconic, and is one the current desk,
-        * show it! */
-       else if (bd->desk == e_desk_current_get(bd->zone))
-         e_border_show(bd);
+       e_hints_window_init(bd);
 
        ecore_x_icccm_move_resize_send(bd->client.win,
                                       bd->x + bd->client_inset.l,
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.h,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -3 -r1.36 -r1.37
--- e_border.h  28 Apr 2005 12:26:58 -0000      1.36
+++ e_border.h  29 Apr 2005 08:02:29 -0000      1.37
@@ -107,6 +107,7 @@
         int start_x, start_y;
         double min_aspect, max_aspect;
         Ecore_X_Window_State_Hint initial_state;
+        Ecore_X_Window_State_Hint state;
         Ecore_X_Pixmap icon_pixmap;
         Ecore_X_Pixmap icon_mask;
         Ecore_X_Window icon_window;
@@ -116,8 +117,6 @@
         unsigned char accepts_focus : 1;
         unsigned char urgent : 1;
         unsigned char delete_request : 1;
-        unsigned char withdrawn : 1;
-        unsigned char iconic : 1;
         unsigned char request_pos : 1;
         struct {
            unsigned int title : 1;
@@ -150,6 +149,9 @@
         /* NetWM Window state */
         struct {
            unsigned char modal : 1;
+           unsigned char sticky : 1;
+           unsigned char shaded : 1;
+           unsigned char hidden : 1;
            unsigned char maximized_v : 1;
            unsigned char maximized_h : 1;
            unsigned char skip_taskbar : 1;
@@ -157,6 +159,8 @@
            unsigned char fullscreen : 1;
            unsigned char stacking : 2; /* 0 = None, 1 = Above, 2 = Below */
         } state;
+
+        Ecore_X_Window_Type type;
         
       } netwm;
       Ecore_X_Window_Attributes initial_attributes;
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_hints.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -3 -r1.13 -r1.14
--- e_hints.c   28 Apr 2005 12:26:58 -0000      1.13
+++ e_hints.c   29 Apr 2005 08:02:29 -0000      1.14
@@ -236,75 +236,122 @@
 }
 
 void
-e_hints_window_state_set(Ecore_X_Window win)
+e_hints_window_init(E_Border *bd)
 {
-   E_Border    *bd;
+   e_hints_window_state_get(bd);
+   e_hints_window_type_get(bd);
 
-   bd = e_border_find_by_client_window(win);
-   
-   ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_MODAL, 
+   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)
+         bd->client.icccm.state = ECORE_X_WINDOW_STATE_HINT_WITHDRAWN;
+       else
+         bd->client.icccm.state = ECORE_X_WINDOW_STATE_HINT_NORMAL;
+     }
+
+   if (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DESKTOP)
+     bd->layer = 0;
+   else if (bd->client.netwm.state.stacking == 2)
+     bd->layer = 50;
+   else if (bd->client.netwm.state.stacking == 1)
+     bd->layer = 150;
+   else if (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DOCK)
+     bd->layer = 150;
+   else if (bd->client.netwm.state.fullscreen)
+     bd->layer = 200;
+   else
+     bd->layer = 100;
+   e_container_window_raise(bd->zone->container, bd->win, bd->layer);
+
+   if (bd->client.netwm.state.sticky)
+     e_border_stick(bd);
+   if (bd->client.netwm.state.shaded)
+     e_border_shade(bd, e_hints_window_shade_direction_get(bd->client.win));
+   if (bd->client.netwm.state.maximized_v && 
bd->client.netwm.state.maximized_h)
+     e_border_maximize(bd);
+   if (bd->client.icccm.state == ECORE_X_WINDOW_STATE_HINT_ICONIC)
+     e_border_iconify(bd);
+   /* If a window isn't iconic, and is one the current desk,
+    * show it! */
+   else if ((bd->client.icccm.state == ECORE_X_WINDOW_STATE_HINT_NORMAL)
+           && (bd->desk == e_desk_current_get(bd->zone)))
+     e_border_show(bd);
+}
+
+void
+e_hints_window_state_set(E_Border *bd)
+{
+   ecore_x_netwm_window_state_set(bd->client.win, ECORE_X_WINDOW_STATE_MODAL, 
                                  bd->client.netwm.state.modal);
-   ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_STICKY,
-                                 bd->sticky);
-   ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_MAXIMIZED_VERT,
+   ecore_x_netwm_window_state_set(bd->client.win, ECORE_X_WINDOW_STATE_STICKY,
+                                 bd->client.netwm.state.sticky);
+   ecore_x_netwm_window_state_set(bd->client.win, 
ECORE_X_WINDOW_STATE_MAXIMIZED_VERT,
                                  bd->client.netwm.state.maximized_v);
-   ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ,
+   ecore_x_netwm_window_state_set(bd->client.win, 
ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ,
                                  bd->client.netwm.state.maximized_h);
-   ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_SHADED,
-                                 bd->shaded);
-   ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_SKIP_TASKBAR,
+   ecore_x_netwm_window_state_set(bd->client.win, ECORE_X_WINDOW_STATE_SHADED,
+                                 bd->client.netwm.state.shaded);
+   ecore_x_netwm_window_state_set(bd->client.win, 
ECORE_X_WINDOW_STATE_SKIP_TASKBAR,
                                  bd->client.netwm.state.skip_taskbar);
-   ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_SKIP_PAGER,
+   ecore_x_netwm_window_state_set(bd->client.win, 
ECORE_X_WINDOW_STATE_SKIP_PAGER,
                                  bd->client.netwm.state.skip_pager);
-   ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_HIDDEN,
-                                 !(bd->visible));
-   ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_FULLSCREEN,
+   ecore_x_netwm_window_state_set(bd->client.win, ECORE_X_WINDOW_STATE_HIDDEN,
+                                 bd->client.netwm.state.hidden);
+   ecore_x_netwm_window_state_set(bd->client.win, 
ECORE_X_WINDOW_STATE_FULLSCREEN,
                                  bd->client.netwm.state.fullscreen);
    
    switch (bd->client.netwm.state.stacking)
      {
       case 1:
-        ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_ABOVE, 1);
-        ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_BELOW, 0);
+        ecore_x_netwm_window_state_set(bd->client.win, 
ECORE_X_WINDOW_STATE_ABOVE, 1);
+        ecore_x_netwm_window_state_set(bd->client.win, 
ECORE_X_WINDOW_STATE_BELOW, 0);
       case 2:
-        ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_ABOVE, 0);
-        ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_BELOW, 1);
+        ecore_x_netwm_window_state_set(bd->client.win, 
ECORE_X_WINDOW_STATE_ABOVE, 0);
+        ecore_x_netwm_window_state_set(bd->client.win, 
ECORE_X_WINDOW_STATE_BELOW, 1);
       default:
-        ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_ABOVE, 0);
-        ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_BELOW, 0);
+        ecore_x_netwm_window_state_set(bd->client.win, 
ECORE_X_WINDOW_STATE_ABOVE, 0);
+        ecore_x_netwm_window_state_set(bd->client.win, 
ECORE_X_WINDOW_STATE_BELOW, 0);
         break;
      }
 }
 
+void e_hints_window_type_set(E_Border *bd)
+{
+   ecore_x_netwm_window_type_set(bd->client.win, bd->client.netwm.type);
+}
+
+void e_hints_window_type_get(E_Border *bd)
+{
+   bd->client.netwm.type = ecore_x_netwm_window_type_get(bd->client.win);
+}
+
 void
-e_hints_window_state_get(Ecore_X_Window win)
+e_hints_window_state_get(E_Border *bd)
 {
-   E_Border    *bd;
    int          above, below;
 
-   bd = e_border_find_by_client_window(win);
-   
    bd->client.netwm.state.modal = 
-      ecore_x_netwm_window_state_isset(win, ECORE_X_WINDOW_STATE_MODAL);
-   bd->sticky = 
-      ecore_x_netwm_window_state_isset(win, ECORE_X_WINDOW_STATE_STICKY);
+      ecore_x_netwm_window_state_isset(bd->client.win, 
ECORE_X_WINDOW_STATE_MODAL);
+   bd->client.netwm.state.sticky = 
+      ecore_x_netwm_window_state_isset(bd->client.win, 
ECORE_X_WINDOW_STATE_STICKY);
    bd->client.netwm.state.maximized_v = 
-      ecore_x_netwm_window_state_isset(win, 
ECORE_X_WINDOW_STATE_MAXIMIZED_VERT);
+      ecore_x_netwm_window_state_isset(bd->client.win, 
ECORE_X_WINDOW_STATE_MAXIMIZED_VERT);
    bd->client.netwm.state.maximized_h = 
-      ecore_x_netwm_window_state_isset(win, 
ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ);
-   bd->shaded =
-      ecore_x_netwm_window_state_isset(win, ECORE_X_WINDOW_STATE_SHADED);
+      ecore_x_netwm_window_state_isset(bd->client.win, 
ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ);
+   bd->client.netwm.state.shaded =
+      ecore_x_netwm_window_state_isset(bd->client.win, 
ECORE_X_WINDOW_STATE_SHADED);
    bd->client.netwm.state.skip_taskbar =
-      ecore_x_netwm_window_state_isset(win, ECORE_X_WINDOW_STATE_SKIP_TASKBAR);
+      ecore_x_netwm_window_state_isset(bd->client.win, 
ECORE_X_WINDOW_STATE_SKIP_TASKBAR);
    bd->client.netwm.state.skip_pager =
-      ecore_x_netwm_window_state_isset(win, ECORE_X_WINDOW_STATE_SKIP_PAGER);
-   bd->visible =
-      !ecore_x_netwm_window_state_isset(win, ECORE_X_WINDOW_STATE_HIDDEN);
+      ecore_x_netwm_window_state_isset(bd->client.win, 
ECORE_X_WINDOW_STATE_SKIP_PAGER);
+   bd->client.netwm.state.hidden =
+      ecore_x_netwm_window_state_isset(bd->client.win, 
ECORE_X_WINDOW_STATE_HIDDEN);
    bd->client.netwm.state.fullscreen =
-      ecore_x_netwm_window_state_isset(win, ECORE_X_WINDOW_STATE_FULLSCREEN);
+      ecore_x_netwm_window_state_isset(bd->client.win, 
ECORE_X_WINDOW_STATE_FULLSCREEN);
    
-   above = ecore_x_netwm_window_state_isset(win, ECORE_X_WINDOW_STATE_ABOVE);
-   below = ecore_x_netwm_window_state_isset(win, ECORE_X_WINDOW_STATE_BELOW);
+   above = ecore_x_netwm_window_state_isset(bd->client.win, 
ECORE_X_WINDOW_STATE_ABOVE);
+   below = ecore_x_netwm_window_state_isset(bd->client.win, 
ECORE_X_WINDOW_STATE_BELOW);
    bd->client.netwm.state.stacking = (above << 0) + (below << 1);
 }
 
@@ -315,13 +362,6 @@
    ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_HIDDEN, 0);
 }
 
-int
-e_hints_window_visible_isset(Ecore_X_Window win)
-{
-   return !ecore_x_netwm_window_state_isset(win, ECORE_X_WINDOW_STATE_HIDDEN)
-         || (ecore_x_icccm_state_get(win) == ECORE_X_WINDOW_STATE_HINT_NORMAL);
-}
-
 void
 e_hints_window_iconic_set(Ecore_X_Window win)
 {
@@ -329,12 +369,6 @@
    ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_HIDDEN, 1);
 }
 
-int
-e_hints_window_iconic_isset(Ecore_X_Window win)
-{
-   return (ecore_x_icccm_state_get(win) == ECORE_X_WINDOW_STATE_HINT_ICONIC);
-}
-
 void
 e_hints_window_hidden_set(Ecore_X_Window win)
 {
@@ -342,25 +376,12 @@
    ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_HIDDEN, 1);
 }
 
-int
-e_hints_window_hidden_isset(Ecore_X_Window win)
-{
-   return ecore_x_netwm_window_state_isset(win, ECORE_X_WINDOW_STATE_HIDDEN)
-         || (ecore_x_icccm_state_get(win) != ECORE_X_WINDOW_STATE_HINT_NORMAL);
-}
-
 void
 e_hints_window_shaded_set(Ecore_X_Window win, int on)
 {
    ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_SHADED, on);
 }
 
-int
-e_hints_window_shaded_isset(Ecore_X_Window win)
-{
-   return ecore_x_netwm_window_state_isset(win, ECORE_X_WINDOW_STATE_SHADED);
-}
-
 void
 e_hints_window_shade_direction_set(Ecore_X_Window win, E_Direction dir)
 {
@@ -389,37 +410,18 @@
    ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ, 
on);
 }
 
-int
-e_hints_window_maximized_isset(Ecore_X_Window win)
-{
-   return ecore_x_netwm_window_state_isset(win, 
ECORE_X_WINDOW_STATE_MAXIMIZED_VERT)
-         && ecore_x_netwm_window_state_isset(win, 
ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ);
-}
-
 void
 e_hints_window_fullscreen_set(Ecore_X_Window win, int on)
 {
    ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_FULLSCREEN, on);
 }
 
-int
-e_hints_window_fullscreen_isset(Ecore_X_Window win)
-{
-   return ecore_x_netwm_window_state_isset(win, 
ECORE_X_WINDOW_STATE_FULLSCREEN);
-}
-
 void
 e_hints_window_sticky_set(Ecore_X_Window win, int on)
 {
    ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_STICKY, on);
 }
 
-int
-e_hints_window_sticky_isset(Ecore_X_Window win)
-{
-   return ecore_x_netwm_window_state_isset(win, ECORE_X_WINDOW_STATE_STICKY);
-}
-
 /*
 ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_MODAL, on);
 ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_SKIP_TASKBAR, on);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_hints.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- e_hints.h   28 Apr 2005 12:26:58 -0000      1.8
+++ e_hints.h   29 Apr 2005 08:02:29 -0000      1.9
@@ -13,24 +13,21 @@
 EAPI void e_hints_window_name_set(Ecore_X_Window win, const char *name);
 EAPI char *e_hints_window_name_get(Ecore_X_Window win);
 EAPI void e_hints_desktop_config_set(void);
-EAPI void e_hints_window_state_set(Ecore_X_Window win);
+EAPI void e_hints_window_init(E_Border *bd);
+EAPI void e_hints_window_state_set(E_Border *bd);
+EAPI void e_hints_window_state_get(E_Border *bd);
+EAPI void e_hints_window_type_set(E_Border *bd);
+EAPI void e_hints_window_type_get(E_Border *bd);
 EAPI void e_hints_window_visible_set(Ecore_X_Window win);
-EAPI int  e_hints_window_visible_isset(Ecore_X_Window win);
 EAPI void e_hints_window_iconic_set(Ecore_X_Window win);
-EAPI int  e_hints_window_iconic_isset(Ecore_X_Window win);
 EAPI void e_hints_window_hidden_set(Ecore_X_Window win);
-EAPI int  e_hints_window_hidden_isset(Ecore_X_Window win);
 EAPI void e_hints_window_shaded_set(Ecore_X_Window win, int on);
-EAPI int  e_hints_window_shaded_isset(Ecore_X_Window win);
 EAPI void e_hints_window_shade_direction_set(Ecore_X_Window win, E_Direction 
dir);
 EAPI E_Direction e_hints_window_shade_direction_get(Ecore_X_Window win);
 
 EAPI void e_hints_window_maximized_set(Ecore_X_Window win, int on);
-EAPI int  e_hints_window_maximized_isset(Ecore_X_Window win);
 EAPI void e_hints_window_sticky_set(Ecore_X_Window win, int on);
-EAPI int  e_hints_window_sticky_isset(Ecore_X_Window win);
 EAPI void e_hints_window_fullscreen_set(Ecore_X_Window win, int on);
-EAPI int  e_hints_window_fullscreen_isset(Ecore_X_Window win);
 EAPI void e_hints_window_icon_name_get(Ecore_X_Window win);
     
 #endif




-------------------------------------------------------
SF.Net email is sponsored by: Tell us your software development plans!
Take this survey and enter to win a one-year sub to SourceForge.net
Plus IDC's 2005 look-ahead and a copy of this survey
Click here to start!  http://www.idcswdc.com/cgi-bin/survey?id=105hix
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to