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