From 51e37d3be5fa8ec2bc4a8de58bd2f02a2527807d Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Sat, 7 May 2005 04:34:26 +0000 Subject: [PATCH] start on popup generic system... (menus coudl be popups - as would error dialogs, resize/move indicators - maybe they should be ported - well not menus - they are special, but definitely resize/move stuff) SVN revision: 14630 --- data/themes/images/e17_clock_fg.png | Bin 20804 -> 21301 bytes src/bin/Makefile.am | 4 +- src/bin/e_includes.h | 1 + src/bin/e_main.c | 8 ++ src/bin/e_menu.c | 16 +-- src/bin/e_popup.c | 208 ++++++++++++++++++++++++++++ src/bin/e_popup.h | 46 ++++++ src/bin/e_zone.h | 1 + 8 files changed, 274 insertions(+), 10 deletions(-) create mode 100644 src/bin/e_popup.c create mode 100644 src/bin/e_popup.h diff --git a/data/themes/images/e17_clock_fg.png b/data/themes/images/e17_clock_fg.png index 0ba423817ea6aa76ed4ac8dded38634ce80d1053..b48a591a7f286d6f212a238c14e9701dd21be9d2 100644 GIT binary patch literal 21301 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 APyhe` diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am index e9fc9f4c6..a8d7e6173 100644 --- a/src/bin/Makefile.am +++ b/src/bin/Makefile.am @@ -50,7 +50,8 @@ e_theme.h \ e_dnd.h \ e_bindings.h \ e_moveresize.h \ -e_actions.h +e_actions.h \ +e_popup.h enlightenment_SOURCES = \ e_main.c \ @@ -94,6 +95,7 @@ e_dnd.c \ e_bindings.c \ e_moveresize.c \ e_actions.c \ +e_popup.c \ $(ENLIGHTENMENTHEADERS) enlightenment_LDFLAGS = -export-dynamic @e_libs@ @dlopen_libs@ diff --git a/src/bin/e_includes.h b/src/bin/e_includes.h index 5ea2514eb..66e217dee 100644 --- a/src/bin/e_includes.h +++ b/src/bin/e_includes.h @@ -40,3 +40,4 @@ #include "e_bindings.h" #include "e_moveresize.h" #include "e_actions.h" +#include "e_popup.h" diff --git a/src/bin/e_main.c b/src/bin/e_main.c index 18f1bdc0b..588a9e912 100644 --- a/src/bin/e_main.c +++ b/src/bin/e_main.c @@ -277,6 +277,13 @@ main(int argc, char **argv) _e_main_shutdown(-1); } _e_main_shutdown_push(e_bindings_shutdown); + /* init popup system */ + if (!e_popup_init()) + { + e_error_message_show(_("Enlightenment cannot set up its popup system.")); + _e_main_shutdown(-1); + } + _e_main_shutdown_push(e_popup_shutdown); /* setup edje to animate @ e_config->framerate frames per sec. */ edje_frametime_set(1.0 / e_config->framerate); @@ -784,6 +791,7 @@ _e_main_cb_idler_before(void *data __UNUSED__) e_menu_idler_before(); e_focus_idler_before(); e_border_idler_before(); + e_popup_idler_before(); for (l = _e_main_idler_before_list; l; l = l->next) { E_Before_Idler *eb; diff --git a/src/bin/e_menu.c b/src/bin/e_menu.c index ee6770c10..b27960d7f 100644 --- a/src/bin/e_menu.c +++ b/src/bin/e_menu.c @@ -12,7 +12,6 @@ * * support alignment (x, y) as well as spawn direction * * need different menu style support for different menus * * add menu icon/title support - * * support shaped menu windows * * use event timestamps not clock for "click and release" detect * * menu icons can set if/how they will be scaled * * support move/resize of "box" that spawned the menu @@ -21,8 +20,7 @@ * * allow menus to stretch width/height to fit spawner widget/box * * allow menus to auto-shrink (horizontally) if forced to * * support auto left/right direction spawn - * * support menu icons supplied as edjes, not just image files - * * support obscures to indicate offs-creen/not visible menu parts + * * support obscures to indicate offscreen/not visible menu parts */ /* local subsystem functions */ @@ -31,13 +29,13 @@ static void _e_menu_item_free (E_Menu_Item *mi); static void _e_menu_item_realize (E_Menu_Item *mi); static void _e_menu_realize (E_Menu *m); static void _e_menu_items_layout_update (E_Menu *m); -static void _e_menu_item_unrealize (E_Menu_Item *mi); +static void _e_menu_item_unrealize (E_Menu_Item *mi); static void _e_menu_unrealize (E_Menu *m); static void _e_menu_activate_internal (E_Menu *m, E_Zone *zone); static void _e_menu_deactivate_all (void); static void _e_menu_deactivate_above (E_Menu *m); static void _e_menu_submenu_activate (E_Menu_Item *mi); -static void _e_menu_submenu_deactivate (E_Menu_Item *mi); +static void _e_menu_submenu_deactivate (E_Menu_Item *mi); static void _e_menu_reposition (E_Menu *m); static int _e_menu_active_call (void); static void _e_menu_item_activate_next (void); @@ -68,7 +66,7 @@ static int _e_menu_cb_mouse_wheel (void *data, int type, void *e static int _e_menu_cb_scroll_timer (void *data); static int _e_menu_cb_window_shape (void *data, int ev_type, void *ev); -static void _e_menu_item_submenu_post_cb_default(void *data, E_Menu *m, E_Menu_Item *mi); +static void _e_menu_cb_item_submenu_post_default (void *data, E_Menu *m, E_Menu_Item *mi); /* local subsystem globals */ static Ecore_X_Window _e_menu_win = 0; @@ -513,7 +511,7 @@ e_menu_item_submenu_pre_callback_set(E_Menu_Item *mi, void (*func) (void *data, mi->submenu_pre_cb.func = func; mi->submenu_pre_cb.data = data; if (!mi->submenu_post_cb.func) - mi->submenu_post_cb.func = _e_menu_item_submenu_post_cb_default; + mi->submenu_post_cb.func = _e_menu_cb_item_submenu_post_default; } void @@ -715,6 +713,7 @@ static void _e_menu_free(E_Menu *m) { Evas_List *l, *tmp; + _e_menu_unrealize(m); for (l = m->items; l;) { @@ -2211,7 +2210,7 @@ _e_menu_cb_window_shape(void *data, int ev_type, void *ev) } static void -_e_menu_item_submenu_post_cb_default(void *data, E_Menu *m, E_Menu_Item *mi) +_e_menu_cb_item_submenu_post_default(void *data, E_Menu *m, E_Menu_Item *mi) { E_Menu *subm; @@ -2219,6 +2218,5 @@ _e_menu_item_submenu_post_cb_default(void *data, E_Menu *m, E_Menu_Item *mi) subm = mi->submenu; e_menu_item_submenu_set(mi, NULL); - printf("Delete submenu: %d\n", E_OBJECT(subm)->references); e_object_del(E_OBJECT(subm)); } diff --git a/src/bin/e_popup.c b/src/bin/e_popup.c new file mode 100644 index 000000000..9a306da20 --- /dev/null +++ b/src/bin/e_popup.c @@ -0,0 +1,208 @@ +/* + * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 + */ +#include "e.h" + +/* local subsystem functions */ +static void _e_popup_free(E_Popup *pop); +static int _e_popup_cb_window_shape(void *data, int ev_type, void *ev); + +/* local subsystem globals */ +static Ecore_Event_Handler *_e_popup_window_shape_handler = NULL; +static Evas_List *_e_popup_list = NULL; + +/* externally accessible functions */ + +int +e_popup_init(void) +{ + _e_popup_window_shape_handler = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_SHAPE, _e_popup_cb_window_shape, NULL); + return 1; +} + +int +e_popup_shutdown(void) +{ + E_FN_DEL(ecore_event_handler_del, _e_popup_window_shape_handler); + return 1; +} + +E_Popup * +e_popup_new(E_Zone *zone, int x, int y, int w, int h) +{ + E_Popup *pop; + + pop = E_OBJECT_ALLOC(E_Popup, E_POPUP_TYPE, _e_popup_free); + if (!pop) return NULL; + pop->zone = zone; + pop->x = x; + pop->y = y; + pop->w = w; + pop->h = h; + pop->layer = 250; + pop->ecore_evas = ecore_evas_software_x11_new(NULL, + pop->zone->container->win, + pop->zone->x + pop->x, + pop->zone->y + pop->y, + pop->w, pop->h); + ecore_evas_software_x11_direct_resize_set(pop->ecore_evas, 1); + e_canvas_add(pop->ecore_evas); + pop->shape = e_container_shape_add(pop->zone->container); + e_container_shape_move(pop->shape, pop->zone->x + pop->x, pop->zone->y + pop->y); + e_container_shape_resize(pop->shape, pop->w, pop->h); + pop->evas = ecore_evas_get(pop->ecore_evas); + pop->evas_win = ecore_evas_software_x11_window_get(pop->ecore_evas); + e_container_window_raise(pop->zone->container, pop->evas_win, pop->layer); + ecore_x_window_shape_events_select(pop->evas_win, 1); + ecore_evas_name_class_set(pop->ecore_evas, "E", "_e_popup_window"); + ecore_evas_title_set(pop->ecore_evas, "E Popup"); + e_object_ref(E_OBJECT(pop->zone)); + pop->zone->popups = evas_list_append(pop->zone->popups, pop); + _e_popup_list = evas_list_append(_e_popup_list, pop); + return pop; +} + +void +e_popup_show(E_Popup *pop) +{ + if (pop->visible) return; + pop->visible = 1; + ecore_evas_show(pop->ecore_evas); + e_container_shape_show(pop->shape); +} + +void +e_popup_hide(E_Popup *pop) +{ + if (!pop->visible) return; + pop->visible = 0; + ecore_evas_hide(pop->ecore_evas); + e_container_shape_hide(pop->shape); +} + +void +e_popup_move(E_Popup *pop, int x, int y) +{ + if ((pop->x == x) && (pop->y == y)) return; + pop->x = x; + pop->y = y; + ecore_evas_move(pop->ecore_evas, + pop->zone->x + pop->x, + pop->zone->y + pop->y); + e_container_shape_move(pop->shape, + pop->zone->x + pop->x, + pop->zone->y + pop->y); +} + +void +e_popup_resize(E_Popup *pop, int w, int h) +{ + if ((pop->w == w) && (pop->h == h)) return; + pop->w = w; + pop->h = h; + ecore_evas_resize(pop->ecore_evas, pop->w, pop->h); + e_container_shape_resize(pop->shape, pop->w, pop->h); +} + +void +e_popup_move_resize(E_Popup *pop, int x, int y, int w, int h) +{ + if ((pop->x == x) && (pop->y == y) && + (pop->w == w) && (pop->h == h)) return; + pop->x = x; + pop->y = y; + pop->w = w; + pop->h = h; + ecore_evas_move_resize(pop->ecore_evas, + pop->zone->x + pop->x, + pop->zone->y + pop->y, + pop->w, pop->h); + e_container_shape_move(pop->shape, + pop->zone->x + pop->x, + pop->zone->y + pop->y); + e_container_shape_resize(pop->shape, pop->w, pop->h); +} + +void +e_popup_edje_bg_object_set(E_Popup *pop, Evas_Object *o) +{ + const char *shape_option; + + shape_option = edje_object_data_get(o, "shaped"); + if (shape_option) + { + if (!strcmp(shape_option, "1")) + pop->shaped = 1; + else + pop->shaped = 0; + ecore_evas_shaped_set(pop->ecore_evas, pop->shaped); + } +} + +void +e_popup_layer_set(E_Popup *pop, int layer) +{ + pop->layer = layer; + e_container_window_raise(pop->zone->container, pop->evas_win, pop->layer); +} + +void +e_popup_idler_before(void) +{ + Evas_List *l; + + for (l = _e_popup_list; l; l = l->next) + { + E_Popup *pop; + + pop = l->data; + if (pop->need_shape_export) + { + Ecore_X_Rectangle *rects; + int num; + + rects = ecore_x_window_shape_rectangles_get(pop->evas_win, &num); + if (rects) + { + e_container_shape_rects_set(pop->shape, rects, num); + free(rects); + } + pop->need_shape_export = 0; + if (pop->visible) + e_container_shape_show(pop->shape); + } + } +} + +/* local subsystem functions */ + +static void +_e_popup_free(E_Popup *pop) +{ + e_container_shape_hide(pop->shape); + e_object_del(E_OBJECT(pop->shape)); + e_canvas_del(pop->ecore_evas); + ecore_evas_free(pop->ecore_evas); + e_object_unref(E_OBJECT(pop->zone)); + pop->zone->popups = evas_list_remove(pop->zone->popups, pop); + _e_popup_list = evas_list_remove(_e_popup_list, pop); + free(pop); +} + +static int +_e_popup_cb_window_shape(void *data, int ev_type, void *ev) +{ + Evas_List *l; + Ecore_X_Event_Window_Shape *e; + + e = ev; + for (l = _e_popup_list; l; l = l->next) + { + E_Popup *pop; + + pop = l->data; + if (pop->evas_win == e->win) + pop->need_shape_export = 1; + } + return 1; +} diff --git a/src/bin/e_popup.h b/src/bin/e_popup.h new file mode 100644 index 000000000..bc6bbd3dc --- /dev/null +++ b/src/bin/e_popup.h @@ -0,0 +1,46 @@ +/* + * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 + */ +#ifdef E_TYPEDEFS + +typedef struct _E_Popup E_Popup; + +#else +#ifndef E_POPUP_H +#define E_POPUP_H + +#define E_POPUP_TYPE 0xE0b0100e + +struct _E_Popup +{ + E_Object e_obj_inherit; + + int x, y, w, h; + int layer; + unsigned char visible : 1; + unsigned char shaped : 1; + unsigned char need_shape_export : 1; + + Ecore_Evas *ecore_evas; + Evas *evas; + Ecore_X_Window evas_win; + E_Container_Shape *shape; + E_Zone *zone; +}; + +EAPI int e_popup_init(void); +EAPI int e_popup_shutdown(void); + +EAPI E_Popup *e_popup_new(E_Zone *zone, int x, int y, int w, int h); +EAPI void e_popup_show(E_Popup *pop); +EAPI void e_popup_hide(E_Popup *pop); +EAPI void e_popup_move(E_Popup *pop, int x, int y); +EAPI void e_popup_resize(E_Popup *pop, int w, int h); +EAPI void e_popup_move_resize(E_Popup *pop, int x, int y, int w, int h); +EAPI void e_popup_(E_Popup *pop, int x, int y); +EAPI void e_popup_edje_bg_object_set(E_Popup *pop, Evas_Object *o); +EAPI void e_popup_layer_set(E_Popup *pop, int layer); +EAPI void e_popup_idler_before(void); + +#endif +#endif diff --git a/src/bin/e_zone.h b/src/bin/e_zone.h index 25dde243c..98f9d6318 100644 --- a/src/bin/e_zone.h +++ b/src/bin/e_zone.h @@ -41,6 +41,7 @@ struct _E_Zone } flip; E_Action *cur_mouse_action; + Evas_List *popups; }; struct _E_Event_Zone_Desk_Count_Set