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_container.c e_hints.c e_hints.h 
        e_int_menus.c e_manager.c 


Log Message:
Clean up icccm and netwm stuff

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.229
retrieving revision 1.230
diff -u -3 -r1.229 -r1.230
--- e_border.c  28 May 2005 13:22:14 -0000      1.229
+++ e_border.c  29 May 2005 11:37:17 -0000      1.230
@@ -272,10 +272,10 @@
 
    bd->client.win = win;
 
-   bd->client.icccm.title = strdup("");
+   bd->client.icccm.title = NULL;
    bd->client.icccm.name = strdup("");
    bd->client.icccm.class = strdup("");
-   bd->client.icccm.icon_name = strdup("");
+   bd->client.icccm.icon_name = NULL;
    bd->client.icccm.machine = strdup("");
    bd->client.icccm.min_w = 1;
    bd->client.icccm.min_h = 1;
@@ -289,6 +289,22 @@
    bd->client.icccm.max_aspect = 0.0;
    bd->client.icccm.accepts_focus = 1;
 
+   bd->client.netwm.pid = 0;
+   bd->client.netwm.name = NULL;
+   bd->client.netwm.icon_name = NULL;
+   bd->client.netwm.desktop = 0;
+   bd->client.netwm.state.modal = 0;
+   bd->client.netwm.state.sticky = 0;
+   bd->client.netwm.state.shaded = 0;
+   bd->client.netwm.state.hidden = 0;
+   bd->client.netwm.state.maximized_v = 0;
+   bd->client.netwm.state.maximized_h = 0;
+   bd->client.netwm.state.skip_taskbar = 0;
+   bd->client.netwm.state.skip_pager = 0;
+   bd->client.netwm.state.fullscreen = 0;
+   bd->client.netwm.state.stacking = E_STACKING_NONE;
+   bd->client.netwm.type = ECORE_X_WINDOW_TYPE_NORMAL;
+
      {
        int at_num = 0, i;
        Ecore_X_Atom *atoms;
@@ -296,6 +312,7 @@
        atoms = ecore_x_window_prop_list(bd->client.win, &at_num);
        if (atoms)
          {
+            /* icccm */
             for (i = 0; i < at_num; i++)
               {
                  if (atoms[i] == ECORE_X_ATOM_WM_NAME)
@@ -319,6 +336,23 @@
                  else if (atoms[i] == ECORE_X_ATOM_WM_WINDOW_ROLE)
                    bd->client.icccm.fetch.window_role = 1;
               }
+            /* netwm, loop again, netwm will ignore some icccm, so we
+             * have to be sure that netwm is checked after */
+            for (i = 0; i < at_num; i++)
+              {
+                 if (atoms[i] == ECORE_X_ATOM_NET_WM_NAME)
+                   {
+                      /* Ignore icccm */
+                      bd->client.icccm.fetch.title = 0;
+                      bd->client.netwm.fetch.name = 1;
+                   }
+                 else if (atoms[i] == ECORE_X_ATOM_NET_WM_ICON_NAME)
+                   {
+                      /* Ignore icccm */
+                      bd->client.icccm.fetch.icon_name = 0;
+                      bd->client.netwm.fetch.icon_name = 1;
+                   }
+              }
             free(atoms);
          }
      }
@@ -334,21 +368,6 @@
  */
    bd->client.border.changed = 1;
    
-   /* FIXME; set fetch flags as above */
-   bd->client.netwm.pid = 0;
-   bd->client.netwm.desktop = 0;
-   bd->client.netwm.state.modal = 0;
-   bd->client.netwm.state.sticky = 0;
-   bd->client.netwm.state.shaded = 0;
-   bd->client.netwm.state.hidden = 0;
-   bd->client.netwm.state.maximized_v = 0;
-   bd->client.netwm.state.maximized_h = 0;
-   bd->client.netwm.state.skip_taskbar = 0;
-   bd->client.netwm.state.skip_pager = 0;
-   bd->client.netwm.state.fullscreen = 0;
-   bd->client.netwm.state.stacking = E_STACKING_NONE;
-   bd->client.netwm.type = ECORE_X_WINDOW_TYPE_NORMAL;
-
    bd->client.w = att->w;
    bd->client.h = att->h;
 
@@ -1839,7 +1858,16 @@
    if (!bd) return 1;
    if (e->atom == ECORE_X_ATOM_WM_NAME)
      {
-       bd->client.icccm.fetch.title = 1;
+       if ((!bd->client.netwm.name) &&
+           (!bd->client.netwm.fetch.name))
+         {
+            bd->client.icccm.fetch.title = 1;
+            bd->changed = 1;
+         }
+     }
+   else if (e->atom == ECORE_X_ATOM_NET_WM_NAME)
+     {
+       bd->client.netwm.fetch.name = 1;
        bd->changed = 1;
      }
    else if (e->atom == ECORE_X_ATOM_WM_CLASS)
@@ -1849,7 +1877,16 @@
      }
    else if (e->atom == ECORE_X_ATOM_WM_ICON_NAME)
      {
-       bd->client.icccm.fetch.icon_name = 1;
+       if ((!bd->client.netwm.icon_name) &&
+           (!bd->client.netwm.fetch.icon_name))
+         {
+            bd->client.icccm.fetch.icon_name = 1;
+            bd->changed = 1;
+         }
+     }
+   else if (e->atom == ECORE_X_ATOM_NET_WM_ICON_NAME)
+     {
+       bd->client.netwm.fetch.icon_name = 1;
        bd->changed = 1;
      }
    else if (e->atom == ECORE_X_ATOM_WM_CLIENT_MACHINE)
@@ -2774,14 +2811,26 @@
    /* fetch any info queued to be fetched */
    if (bd->client.icccm.fetch.title)
      {
-       e_hints_window_name_get(bd);
+       if (bd->client.icccm.title) free(bd->client.icccm.title);
+       bd->client.icccm.title = ecore_x_icccm_title_get(bd->client.win);
+
        bd->client.icccm.fetch.title = 0;
        if (bd->bg_object)
          {
             edje_object_part_text_set(bd->bg_object, "title_text",
-//                                    "Japanese (hiragana): 
いろはにほへとちりぬるを");
                                       bd->client.icccm.title);
-//          printf("SET TITLE %s\n", bd->client.icccm.title);
+         }
+     }
+   if (bd->client.netwm.fetch.name)
+     {
+       if (bd->client.netwm.name) free(bd->client.netwm.name);
+       bd->client.netwm.name = ecore_x_netwm_name_get(bd->client.win);
+
+       bd->client.netwm.fetch.name = 0;
+       if (bd->bg_object)
+         {
+            edje_object_part_text_set(bd->bg_object, "title_text",
+                                      bd->client.netwm.name);
          }
      }
    if (bd->client.icccm.fetch.name_class)
@@ -2852,9 +2901,18 @@
      }
    if (bd->client.icccm.fetch.icon_name)
      {
-       e_hints_window_icon_name_get(bd);
+       if (bd->client.icccm.icon_name) free(bd->client.icccm.icon_name);
+       bd->client.icccm.icon_name = 
ecore_x_icccm_icon_name_get(bd->client.win);
+
        bd->client.icccm.fetch.icon_name = 0;
      }
+   if (bd->client.netwm.fetch.icon_name)
+     {
+       if (bd->client.netwm.icon_name) free(bd->client.netwm.icon_name);
+       bd->client.netwm.icon_name = 
ecore_x_netwm_icon_name_get(bd->client.win);
+
+       bd->client.netwm.fetch.icon_name = 0;
+     }
    if (bd->client.icccm.fetch.machine)
      {
        if (bd->client.icccm.machine) free(bd->client.icccm.machine);
@@ -3082,10 +3140,12 @@
                    }
               }
             
-            edje_object_part_text_set(o, "title_text",
-//                               "Japanese (hiragana): 
いろはにほへとちりぬるを");
-                                      bd->client.icccm.title);
-//          printf("SET TITLE2 %s\n", bd->client.icccm.title);
+            if (bd->client.netwm.name)
+              edje_object_part_text_set(o, "title_text",
+                                        bd->client.netwm.name);
+            else if (bd->client.icccm.title)
+              edje_object_part_text_set(o, "title_text",
+                                        bd->client.icccm.title);
             evas_object_resize(o, 1000, 1000);
             edje_object_calc_force(o);
             edje_object_part_geometry_get(o, "client", &cx, &cy, &cw, &ch);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.h,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -3 -r1.61 -r1.62
--- e_border.h  28 May 2005 13:22:15 -0000      1.61
+++ e_border.h  29 May 2005 11:37:18 -0000      1.62
@@ -158,9 +158,10 @@
         } fetch;
       } mwm;
       struct {
-        /* FIXME: add name field */
         pid_t pid;
         unsigned int desktop;
+        char *name;
+        char *icon_name;
 
         /* NetWM Window state */
         struct {
@@ -180,11 +181,19 @@
         
         struct {
            unsigned char name : 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;
+           */
            unsigned char icon_name : 1;
+           /* No, don't fetch state, update on client message
            unsigned char state : 1;
+           */
         } fetch;
       } netwm;
       Ecore_X_Window_Attributes initial_attributes;
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_container.c,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -3 -r1.61 -r1.62
--- e_container.c       26 May 2005 15:30:10 -0000      1.61
+++ e_container.c       29 May 2005 11:37:18 -0000      1.62
@@ -58,6 +58,7 @@
      {
        con->win = ecore_x_window_override_new(con->manager->win, con->x, 
con->y, con->w, con->h);
        ecore_x_icccm_title_set(con->win, "Enlightenment Container");
+       ecore_x_netwm_name_set(con->win, "Enlightenment Container");
        ecore_x_window_raise(con->win);
      }
    else
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_hints.c,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -3 -r1.38 -r1.39
--- e_hints.c   29 May 2005 11:06:11 -0000      1.38
+++ e_hints.c   29 May 2005 11:37:18 -0000      1.39
@@ -235,30 +235,6 @@
 }
 
 void
-e_hints_window_name_set(E_Border *bd)
-{
-   ecore_x_icccm_title_set(bd->client.win, bd->client.icccm.title);
-   ecore_x_netwm_name_set(bd->client.win, bd->client.icccm.title);
-}
-
-void
-e_hints_window_name_get(E_Border *bd)
-{
-   /* FIXME: only call from border_eval() if fetch flag set */
-   /* FIXME: split name into icccm and netwm name - prefer netwm name */
-   /* if its not NULL */
-   char                *name;
-
-   name = ecore_x_netwm_name_get(bd->client.win);
-   if (!name)
-     name = ecore_x_icccm_title_get(bd->client.win);
-   if (!name)
-     name = strdup("No name!!");
-   if (bd->client.icccm.title) free(bd->client.icccm.title);
-   bd->client.icccm.title = name;
-}
-
-void
 e_hints_desktop_config_set(void)
 {
    /* Set desktop count, desktop names and workarea */
@@ -905,7 +881,7 @@
      }
 }
 
-   void
+void
 e_hints_window_visible_set(E_Border *bd)
 {
    if (bd->client.icccm.state != ECORE_X_WINDOW_STATE_HINT_NORMAL)
@@ -920,7 +896,7 @@
      }
 }
 
-   void
+void
 e_hints_window_iconic_set(E_Border *bd)
 {
    if (bd->client.icccm.state != ECORE_X_WINDOW_STATE_HINT_ICONIC)
@@ -935,7 +911,7 @@
      }
 }
 
-   void
+void
 e_hints_window_hidden_set(E_Border *bd)
 {
    if (bd->client.icccm.state != ECORE_X_WINDOW_STATE_HINT_ICONIC)
@@ -950,7 +926,7 @@
      }
 }
 
-   void
+void
 e_hints_window_shaded_set(E_Border *bd, int on)
 {
    if ((!bd->client.netwm.state.shaded) && (on))
@@ -965,13 +941,13 @@
      }
 }
 
-   void
+void
 e_hints_window_shade_direction_set(E_Border *bd, E_Direction dir)
 {
    ecore_x_window_prop_card32_set(bd->client.win, E_ATOM_SHADE_DIRECTION, 
&dir, 1);
 }
 
-   E_Direction
+E_Direction
 e_hints_window_shade_direction_get(E_Border *bd)
 {
    int ret;
@@ -986,7 +962,7 @@
    return E_DIRECTION_UP;
 }
 
-   void
+void
 e_hints_window_maximized_set(E_Border *bd, int on)
 {
    if ((!bd->client.netwm.state.maximized_v) && (on))
@@ -1011,7 +987,7 @@
      }
 }
 
-   void
+void
 e_hints_window_fullscreen_set(E_Border *bd, int on)
 {
    if ((!bd->client.netwm.state.fullscreen) && (on))
@@ -1026,7 +1002,7 @@
      }
 }
 
-   void
+void
 e_hints_window_sticky_set(E_Border *bd, int on)
 {
    if ((!bd->client.netwm.state.sticky) && (on))
@@ -1041,7 +1017,7 @@
      }
 }
 
-   void
+void
 e_hints_window_stacking_set(E_Border *bd, E_Stacking stacking)
 {
    if (bd->client.netwm.state.stacking == stacking) return;
@@ -1070,24 +1046,7 @@
    ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_SKIP_PAGER, on);
    */
 
-   void
-e_hints_window_icon_name_get(E_Border *bd)
-{
-   char *name;
-
-   if (bd->client.icccm.icon_name) free(bd->client.icccm.icon_name);
-
-   name = ecore_x_netwm_icon_name_get(bd->client.win);
-   if (!name)
-     name = ecore_x_icccm_icon_name_get(bd->client.win);
-   if (!name)
-     name = strdup("");
-
-   bd->client.icccm.icon_name = name;
-   bd->changed = 1;
-}
-
-   void
+void
 e_hints_window_desktop_set(E_Border *bd)
 {
    unsigned int deskpos[2];
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_hints.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- e_hints.h   20 May 2005 05:13:45 -0000      1.15
+++ e_hints.h   29 May 2005 11:37:18 -0000      1.16
@@ -14,9 +14,6 @@
 
 EAPI void e_hints_active_window_set(E_Manager *man, E_Border *bd);
 
-EAPI void e_hints_window_name_set(E_Border *bd);
-EAPI void e_hints_window_name_get(E_Border *bd);
-
 EAPI void e_hints_desktop_config_set(void);
 
 EAPI void e_hints_window_init(E_Border *bd);
@@ -41,8 +38,6 @@
 EAPI void e_hints_window_sticky_set(E_Border *bd, int on);
 EAPI void e_hints_window_stacking_set(E_Border *bd, E_Stacking stacking);
 
-EAPI void e_hints_window_icon_name_get(E_Border *bd);
-
 EAPI void e_hints_window_desktop_set(E_Border *bd);
     
 #endif
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_menus.c,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -3 -r1.62 -r1.63
--- e_int_menus.c       26 May 2005 12:38:53 -0000      1.62
+++ e_int_menus.c       29 May 2005 11:37:18 -0000      1.63
@@ -484,7 +484,12 @@
 
        mi = e_menu_item_new(m);
        e_menu_item_check_set(mi, 1);
-       e_menu_item_label_set(mi, bd->client.icccm.title);
+       if (bd->client.netwm.name)
+         e_menu_item_label_set(mi, bd->client.netwm.name);
+       else if (bd->client.icccm.title)
+         e_menu_item_label_set(mi, bd->client.icccm.title);
+       else
+         e_menu_item_label_set(mi, "No name!!");
        /* ref the border as we implicitly unref it in the callback */
        e_object_ref(E_OBJECT(bd));
        e_menu_item_callback_set(mi, _e_int_menus_clients_item_cb, bd);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_manager.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -3 -r1.27 -r1.28
--- e_manager.c 20 May 2005 03:09:44 -0000      1.27
+++ e_manager.c 29 May 2005 11:37:18 -0000      1.28
@@ -71,6 +71,7 @@
        
        man->win = ecore_x_window_override_new(man->root, man->x, man->y, 
man->w, man->h);
        ecore_x_icccm_title_set(man->win, "Enlightenment Manager");
+       ecore_x_netwm_name_set(man->win, "Enlightenment Manager");
        mwin = e_menu_grab_window_get();
        if (!mwin) mwin = e_init_window_get();
        if (!mwin)




-------------------------------------------------------
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