From: Enlightenment C. <no...@cv...> - 2007-11-20 10:46:01
|
Enlightenment CVS committal Author : morlenxus Project : e_modules Module : calendar Dir : e_modules/calendar Modified Files: e_mod_main.c Log Message: Bugfix for day change (popup has been shown). Adding keybinding action to allow show/hide the monthview popup. =================================================================== RCS file: /cvs/e/e_modules/calendar/e_mod_main.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- e_mod_main.c 12 Nov 2007 08:11:18 -0000 1.10 +++ e_mod_main.c 20 Nov 2007 10:45:58 -0000 1.11 @@ -34,6 +34,7 @@ static void _calendar_popup_content_create(Instance *inst); static void _calendar_popup_resize(Evas_Object *obj, int *w, int *h); static void _calendar_popup_destroy(Instance *inst); +static void _cb_action(E_Object *obj, const char *params); static void _cb_mouse_in(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _cb_mouse_out(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info); @@ -47,6 +48,7 @@ static E_Config_DD *conf_edd = NULL; static E_Config_DD *conf_item_edd = NULL; +static E_Action *act = NULL; Config *calendar_conf = NULL; @@ -191,7 +193,8 @@ strftime (buf, sizeof(buf), "%a", local_time); edje_object_part_text_set (calendar->o_icon, "weekday", buf); - if (inst->popup) + if ((inst->popup) && + (inst->popup->win->visible)) { _calendar_popup_content_create(inst); e_gadcon_popup_show(inst->popup); @@ -296,6 +299,31 @@ } static void +_cb_action(E_Object *obj, const char *params) +{ + Evas_List *l; + + for (l = calendar_conf->instances; l; l = l->next) + { + Instance *inst; + + inst = l->data; + if (!inst) continue; + if (!inst->popup) continue; + if (inst->popup->win->visible) + { + e_gadcon_popup_toggle_pinned(inst->popup); + e_gadcon_popup_hide(inst->popup); + } + else + { + e_gadcon_popup_toggle_pinned(inst->popup); + e_gadcon_popup_show(inst->popup); + } + } +} + +static void _cb_mouse_in(void *data, Evas *e, Evas_Object *obj, void *event_info) { Instance *inst; @@ -391,6 +419,14 @@ calendar_conf->module = m; e_gadcon_provider_register(&_gc_class); + /* add module supplied action */ + act = e_action_add("calendar"); + if (act) + { + act->func.go = _cb_action; + e_action_predef_name_set(_("Calendar"), _("Monthview Popup (Show/Hide)"), "calendar", + "<none>", NULL, 0); + } return m; } @@ -399,6 +435,13 @@ { calendar_conf->module = NULL; e_gadcon_provider_unregister(&_gc_class); + /* remove module-supplied action */ + if (act) + { + e_action_predef_name_del(_("Calendar"), _("Monthview Popup (Show/Hide)")); + e_action_del("calendar"); + act = NULL; + } while (calendar_conf->items) { |