Enlightenment CVS committal

Author  : devilhorns
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_border.h e_int_border_menu.c 


Log Message:
Ravenlock's "Pin to desktop" patch which adds a menu item to the border menu
for "pinning" an app to the desktop.

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_border.h,v
retrieving revision 1.153
retrieving revision 1.154
diff -u -3 -r1.153 -r1.154
--- e_border.h  30 Nov 2006 17:42:41 -0000      1.153
+++ e_border.h  22 Feb 2007 05:17:44 -0000      1.154
@@ -351,6 +351,7 @@
    unsigned int    need_maximize : 1;
    E_Maximize      maximized;
    unsigned int    borderless : 1;
+   unsigned int    pinned_to_desktop : 1;
    const char     *bordername;
 
    unsigned int    lock_user_location : 1; /*DONE*/
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_int_border_menu.c,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -3 -r1.55 -r1.56
--- e_int_border_menu.c 28 Dec 2006 14:05:07 -0000      1.55
+++ e_int_border_menu.c 22 Feb 2007 05:17:44 -0000      1.56
@@ -27,6 +27,8 @@
 static void _e_border_menu_cb_skip_winlist(void *data, E_Menu *m, E_Menu_Item 
*mi);
 static void _e_border_menu_cb_sendto_pre(void *data, E_Menu *m, E_Menu_Item 
*mi);
 static void _e_border_menu_cb_sendto(void *data, E_Menu *m, E_Menu_Item *mi);
+static void _e_border_menu_cb_pin(void *data, E_Menu *m, E_Menu_Item *mi);
+static void _e_border_menu_cb_unpin(void *data, E_Menu *m, E_Menu_Item *mi);
 static void _e_border_menu_cb_raise(void *data, E_Menu *m, E_Menu_Item *mi);
 static void _e_border_menu_cb_lower(void *data, E_Menu *m, E_Menu_Item *mi);
 static void _e_border_menu_cb_state_pre(void *data, E_Menu *m, E_Menu_Item 
*mi);
@@ -182,6 +184,28 @@
                                  "e/widgets/border/default/sendto");
      }
 
+   if (!bd->pinned_to_desktop)
+     {
+       mi = e_menu_item_new(m);
+       e_menu_item_label_set(mi, _("Pin to Desktop"));
+       e_menu_item_callback_set(mi, _e_border_menu_cb_pin, bd);
+        e_menu_item_icon_edje_set(mi,
+                                 e_theme_edje_file_get("base/theme/borders",
+                                                       
"e/widgets/border/default/stick"),
+                                 "e/widgets/border/default/stick");
+     }
+   
+   if (bd->pinned_to_desktop)
+     {
+       mi = e_menu_item_new(m);
+       e_menu_item_label_set(mi, _("Unpin from Desktop"));
+       e_menu_item_callback_set(mi, _e_border_menu_cb_unpin, bd);
+        e_menu_item_icon_edje_set(mi,
+                                 e_theme_edje_file_get("base/theme/borders",
+                                                       
"e/widgets/border/default/stick"),
+                                 "e/widgets/border/default/stick");
+     }
+
    mi = e_menu_item_new(m);
    e_menu_item_separator_set(mi, 1);
    
@@ -792,6 +816,54 @@
    if ((bd) && (desk))
      {
        e_border_desk_set(bd, desk);
+     }
+}
+
+static void
+_e_border_menu_cb_pin(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+   E_Border *bd;
+
+   bd = e_object_data_get(E_OBJECT(m));
+   if (bd)
+     {
+       bd->pinned_to_desktop = 1;
+       bd->borderless = 1;
+       bd->user_skip_winlist = 1;
+       bd->client.netwm.state.stacking = E_STACKING_BELOW;
+
+        if (bd->layer != 50)
+          {
+            e_border_layer_set(bd, 50);
+            e_hints_window_stacking_set(bd, E_STACKING_BELOW);
+          }
+
+       bd->client.border.changed = 1;
+       bd->changed = 1;
+     }
+}
+
+static void
+_e_border_menu_cb_unpin(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+   E_Border *bd;
+
+   bd = e_object_data_get(E_OBJECT(m));
+   if (bd)
+     {
+       bd->pinned_to_desktop = 0;
+       bd->borderless = 0;
+       bd->user_skip_winlist = 0;
+       bd->client.netwm.state.stacking = E_STACKING_NONE;
+
+        if (bd->layer != 100)
+          {
+            e_border_layer_set(bd, 100);
+            e_hints_window_stacking_set(bd, E_STACKING_NONE);
+          }
+
+       bd->client.border.changed = 1;
+       bd->changed = 1;
      }
 }
 



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to