Enlightenment CVS committal

Author  : dj2
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


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


Log Message:
- add the sticky window code

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -3 -r1.50 -r1.51
--- e_border.c  7 Jan 2005 20:29:45 -0000       1.50
+++ e_border.c  8 Jan 2005 07:09:58 -0000       1.51
@@ -68,6 +68,7 @@
 static void _e_border_menu_cb_maximize(void *data, E_Menu *m, E_Menu_Item *mi);
 static void _e_border_menu_cb_shade(void *data, E_Menu *m, E_Menu_Item *mi);
 static void _e_border_menu_cb_icon_edit(void *data, E_Menu *m, E_Menu_Item 
*mi);
+static void _e_border_menu_cb_stick(void *data, E_Menu *m, E_Menu_Item *mi);
 
 /* local subsystem globals */
 static Evas_List *handlers = NULL;
@@ -656,6 +657,21 @@
      }
 }
 
+void
+e_border_stick(E_Border *bd)
+{
+    E_OBJECT_CHECK(bd);
+    bd->sticky = 1;
+}
+
+void
+e_border_unstick(E_Border *bd)
+{
+    E_OBJECT_CHECK(bd);
+    bd->sticky = 0;
+    bd->desk = e_desk_current_get(bd->zone);
+}
+
 E_Border *
 e_border_find_by_client_window(Ecore_X_Window win)
 {
@@ -2484,6 +2500,13 @@
    e_menu_item_callback_set(mi, _e_border_menu_cb_maximize, bd);
 
    mi = e_menu_item_new(m);
+   if (bd->sticky)
+     e_menu_item_label_set(mi, "Un-Stick");
+   else
+     e_menu_item_label_set(mi, "Stick");
+   e_menu_item_callback_set(mi, _e_border_menu_cb_stick, bd);
+
+   mi = e_menu_item_new(m);
    e_menu_item_separator_set(mi, 1);
 
    a = e_app_window_name_class_find(bd->client.icccm.name,
@@ -2593,3 +2616,13 @@
                         please install e_util_eapp_edit\n \
                         or make sure it is in your PATH\n");
 }
+
+static void
+_e_border_menu_cb_stick(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+   E_Border *bd;
+
+   bd = data;
+   if (bd->sticky) e_border_unstick(bd);
+   else e_border_stick(bd);
+}
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- e_border.h  5 Jan 2005 10:37:53 -0000       1.15
+++ e_border.h  8 Jan 2005 07:10:13 -0000       1.16
@@ -149,6 +149,7 @@
    unsigned char   shaded : 1;
    unsigned char   maximized : 1;
    unsigned char   iconic : 1;
+   unsigned char   sticky : 1;
 
    unsigned char   changed : 1;
 
@@ -206,7 +207,9 @@
 EAPI void      e_border_unmaximize(E_Border *bd);
 EAPI void      e_border_iconify(E_Border *bd);
 EAPI void      e_border_uniconify(E_Border *bd);
-    
+EAPI void      e_border_stick(E_Border *bd);
+EAPI void      e_border_unstick(E_Border *bd);
+
 EAPI E_Border *e_border_find_by_client_window(Ecore_X_Window win);
 
 EAPI void      e_border_idler_before(void);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_desk.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- e_desk.c    5 Jan 2005 10:37:53 -0000       1.9
+++ e_desk.c    8 Jan 2005 07:10:13 -0000       1.10
@@ -69,7 +69,7 @@
 
        if (bd->desk->zone == desk->zone && !bd->iconic)
          {
-            if (bd->desk == desk)
+            if (bd->desk == desk || bd->sticky)
               {
                  e_border_show(bd);
               }
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_hints.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- e_hints.c   3 Jan 2005 09:34:24 -0000       1.5
+++ e_hints.c   8 Jan 2005 07:10:13 -0000       1.6
@@ -225,7 +225,7 @@
    ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_MODAL, 
                                  bd->client.netwm.state.modal);
    ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_STICKY,
-                                 (evas_list_count(bd->stick_desks) > 1));
+                                 bd->sticky);
    ecore_x_netwm_window_state_set(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,




-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to