Enlightenment CVS committal

Author  : devilhorns
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_widget_desk_preview.c 


Log Message:
Add in the right-click menu for Set Wallpaper & Set Desk Name.
Set wallpaper works, set desk name is in progress.
Remove a todo which was done already.
Some formatting.

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_desk_preview.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- e_widget_desk_preview.c     14 Nov 2006 05:39:26 -0000      1.7
+++ e_widget_desk_preview.c     15 Nov 2006 05:00:50 -0000      1.8
@@ -2,9 +2,6 @@
  * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
  */
 
-/* 
- * XXX need to detect when bg's change and update
- */
 #include "e.h"
 
 typedef struct _E_Widget_Data E_Widget_Data;
@@ -25,14 +22,17 @@
 typedef struct _E_Widget_Desk_Data E_Widget_Desk_Data;
 struct _E_Widget_Desk_Data
 {
+   E_Menu *menu;
    Evas_Object *thumb;
    int container, zone;
    int x, y;
 };
 
 static void _e_wid_reconfigure(E_Widget_Data *wd);
-static void _e_wid_desk_cb_menu(void *data, Evas_Object *obj, const char 
*signal, const char *source);
+static void _e_wid_desk_cb_menu(void *data, Evas *e, Evas_Object *obj, void 
*event_info);
 static int  _e_wid_cb_bg_update(void *data, int type, void *event);
+static void _menu_cb_post(void *data, E_Menu *m);
+static void _menu_cb_wallpaper(void *data, E_Menu *m, E_Menu_Item *mi);
 
 static void
 _e_wid_del_hook(Evas_Object *obj)
@@ -108,7 +108,7 @@
    evas_object_show(o);
    e_widget_sub_object_add(obj, o);
    overlay = o;
-   edje_object_signal_callback_add(o, "mouse,down,1", "e.event.menu", 
_e_wid_desk_cb_menu, dd);
+   evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, 
_e_wid_desk_cb_menu, dd);
 
    o = e_thumb_icon_add(evas);
    e_icon_fill_inside_set(o, 0);
@@ -123,7 +123,6 @@
    return obj;
 }
 
-
 static void
 _e_wid_reconfigure(E_Widget_Data *wd)
 {
@@ -252,14 +251,44 @@
    return obj;
 }
 
-static void
-_e_wid_desk_cb_menu(void *data, Evas_Object *obj, const char *signal, const 
char *source)
+static void 
+_e_wid_desk_cb_menu(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
    E_Widget_Desk_Data *dd;
-
+   Evas_Event_Mouse_Down *ev;
+   
    dd = data;
-   /* XXX change this to display a menu with the option to set the desktop 
name or change the desktop bg */
-   e_int_config_wallpaper_desk(dd->container, dd->zone, dd->x, dd->y);
+   ev = event_info;
+   if ((ev->button == 3) && (!dd->menu)) 
+     {
+       E_Zone *zone;
+       E_Menu *m;
+       E_Menu_Item *mi;
+       int x, y;
+       
+       m = e_menu_new();
+       e_menu_post_deactivate_callback_set(m, _menu_cb_post, dd);
+       dd->menu = m;
+       
+       mi = e_menu_item_new(m);
+       e_menu_item_label_set(mi, _("Set Wallpaper"));
+       e_util_menu_item_edje_icon_set(mi, "enlightenment/background");
+       e_menu_item_callback_set(mi, _menu_cb_wallpaper, dd);
+
+       /*
+       e_menu_item_label_set(mi, _("Set Desk Name"));
+       e_util_menu_item_edje_icon_set(mi, "enlightenment/desktops");
+       */
+       
+       zone = e_util_zone_current_get(e_manager_current_get());
+       ecore_x_pointer_xy_get(zone->container->win, &x, &y);
+       
+       e_menu_activate_mouse(m, zone,
+                             x, y, 1, 1,
+                             E_MENU_POP_DIRECTION_DOWN, ev->timestamp);
+       e_util_evas_fake_mouse_up_later(evas_object_evas_get(dd->thumb), 
+                                       ev->button);
+     }
 }
 
 static int
@@ -295,4 +324,25 @@
          }
      }
    return 1;
+}
+
+static void 
+_menu_cb_post(void *data, E_Menu *m) 
+{
+   E_Widget_Desk_Data *dd;
+
+   dd = data;
+   if (!dd->menu) return;
+   e_object_del(E_OBJECT(dd->menu));
+   dd->menu = NULL;
+}
+
+static void 
+_menu_cb_wallpaper(void *data, E_Menu *m, E_Menu_Item *mi) 
+{
+   E_Widget_Desk_Data *dd;
+
+   dd = data;
+   if (!dd) return;
+   e_int_config_wallpaper_desk(dd->container, dd->zone, dd->x, dd->y);
 }



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