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_desk.c e_desk.h 
        e_hints.c 


Log Message:
Don't need to store if the DESKTOP hint was set on init. If the hint
doesn't exist or the desktop doesn't exists, update the hint with our
desktop.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.206
retrieving revision 1.207
diff -u -3 -r1.206 -r1.207
--- e_border.c  16 May 2005 15:43:08 -0000      1.206
+++ e_border.c  17 May 2005 12:33:12 -0000      1.207
@@ -2004,22 +2004,18 @@
    Ecore_X_Event_Desktop_Change *e;
 
    e = ev;
-   if (e->desk < 0) return 1;
    bd = e_border_find_by_client_window(e->win);
    if (bd)
      {
-       if (bd->client.netwm.desktop == 0xffffffff)
+       if (e->desk == 0xffffffff)
          e_border_stick(bd);
        else if (e->desk < (bd->zone->desk_x_count * bd->zone->desk_y_count))
          {
             E_Desk *desk;
-            int x, y;
-
-            y = e->desk / bd->zone->desk_x_count;
-            x = e->desk - (y * bd->zone->desk_x_count);
 
-            desk = e_desk_at_xy_get(bd->zone, x, y);
-            e_border_desk_set(bd, desk);
+            desk = e_desk_at_pos_get(bd->zone, e->desk);
+            if (desk)
+              e_border_desk_set(bd, desk);
          }
      }
    else
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.h,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -3 -r1.54 -r1.55
--- e_border.h  17 May 2005 08:30:15 -0000      1.54
+++ e_border.h  17 May 2005 12:33:12 -0000      1.55
@@ -148,7 +148,6 @@
       struct {
         pid_t pid;
         unsigned int desktop;
-        unsigned char use_desktop : 1;
 
         /* NetWM Window state */
         struct {
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_container.c,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -3 -r1.54 -r1.55
--- e_container.c       17 May 2005 11:57:22 -0000      1.54
+++ e_container.c       17 May 2005 12:33:12 -0000      1.55
@@ -56,8 +56,6 @@
    con->h = con->manager->h;
    if (e_config->use_virtual_roots)
      {
-        Ecore_X_Window mwin;
-       
        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_window_raise(con->win);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_desk.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -3 -r1.32 -r1.33
--- e_desk.c    13 May 2005 10:09:55 -0000      1.32
+++ e_desk.c    17 May 2005 12:33:12 -0000      1.33
@@ -147,6 +147,23 @@
    return zone->desks[x + (y * zone->desk_x_count)];
 }
 
+E_Desk *
+e_desk_at_pos_get(E_Zone *zone, int pos)
+{
+   int x, y;
+
+   E_OBJECT_CHECK_RETURN(zone, NULL);
+   E_OBJECT_TYPE_CHECK_RETURN(zone, E_ZONE_TYPE, NULL);
+
+   y = pos / zone->desk_x_count;
+   x = pos - (y * zone->desk_x_count);
+
+   if ((x >= zone->desk_x_count) || (y >= zone->desk_y_count))
+     return NULL;
+
+   return zone->desks[x + (y * zone->desk_x_count)];
+}
+
 void
 e_desk_xy_get(E_Desk *desk, int *x, int *y)
 {
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_desk.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -3 -r1.13 -r1.14
--- e_desk.h    9 Apr 2005 00:13:09 -0000       1.13
+++ e_desk.h    17 May 2005 12:33:12 -0000      1.14
@@ -36,6 +36,7 @@
 EAPI void         e_desk_show(E_Desk *desk);
 EAPI E_Desk      *e_desk_current_get(E_Zone *zone);
 EAPI E_Desk      *e_desk_at_xy_get(E_Zone *zone, int x, int y);
+EAPI E_Desk      *e_desk_at_pos_get(E_Zone *zone, int pos);
 EAPI void         e_desk_xy_get(E_Desk *desk, int *x, int *y);
 EAPI void         e_desk_next(E_Zone *zone);
 EAPI void         e_desk_prev(E_Zone *zone);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_hints.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -3 -r1.24 -r1.25
--- e_hints.c   17 May 2005 08:30:26 -0000      1.24
+++ e_hints.c   17 May 2005 12:33:12 -0000      1.25
@@ -266,6 +266,7 @@
 {
    e_hints_window_state_get(bd);
    e_hints_window_type_get(bd);
+   int has;
 
    bd->client.icccm.state = ecore_x_icccm_state_get(bd->client.win);
    if (bd->client.icccm.state == ECORE_X_WINDOW_STATE_HINT_NONE)
@@ -288,33 +289,36 @@
      bd->layer = 100;
    e_border_raise(bd);
 
+   has = 1;
    if (!ecore_x_netwm_desktop_get(bd->client.win, &bd->client.netwm.desktop))
+     has = 0;
+   if (has)
      {
-       bd->client.netwm.use_desktop = 0;
-       bd->client.netwm.desktop = 0;
+       if (bd->client.netwm.desktop == 0xffffffff)
+         e_border_stick(bd);
+       else if (bd->client.netwm.desktop < (bd->zone->desk_x_count * 
bd->zone->desk_y_count))
+         {
+            E_Desk *desk;
+
+            desk = e_desk_at_pos_get(bd->zone, bd->client.netwm.desktop);
+            if (desk)
+              e_border_desk_set(bd, desk);
+         }
+       else
+         {
+            /* Update netwm desktop with current desktop */
+            e_hints_window_desktop_set(bd);
+         }
      }
    else
-     bd->client.netwm.use_desktop = 1;
+     {
+       /* Update netwm desktop with current desktop */
+       e_hints_window_desktop_set(bd);
+     }
+
    if (!ecore_x_netwm_pid_get(bd->client.win, &bd->client.netwm.pid))
      bd->client.netwm.pid = -1;
 
-   if (bd->client.netwm.desktop == 0xffffffff)
-     e_border_stick(bd);
-   else if ((bd->client.netwm.use_desktop) &&
-           (bd->client.netwm.desktop >= 0) &&
-           (bd->client.netwm.desktop < (bd->zone->desk_x_count * 
bd->zone->desk_y_count)))
-     {
-       E_Desk *desk;
-       int x, y;
-
-       y = bd->client.netwm.desktop / bd->zone->desk_x_count;
-       x = bd->client.netwm.desktop - (y * bd->zone->desk_x_count);
-
-       desk = e_desk_at_xy_get(bd->zone, x, y);
-       if (desk)
-         e_border_desk_set(bd, desk);
-     }
-
    if (bd->client.netwm.state.sticky)
      e_border_stick(bd);
    if (bd->client.netwm.state.shaded)




-------------------------------------------------------
This SF.Net email is sponsored by Oracle Space Sweepstakes
Want to be the first software developer in space?
Enter now for the Oracle Space Sweepstakes!
http://ads.osdn.com/?ad_id=7412&alloc_id=16344&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to