[EGIT] [core/enlightenment] master 01/01: enlightenment: Update README.wayland to reflect things that do not work yet
devilhorns pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=20c0ddffd52723967fa1b92d8f4743d4d6f5bff3 commit 20c0ddffd52723967fa1b92d8f4743d4d6f5bff3 Author: Chris Michael cp.mich...@samsung.com Date: Wed Aug 12 10:55:54 2015 -0400 enlightenment: Update README.wayland to reflect things that do not work yet Signed-off-by: Chris Michael cp.mich...@samsung.com --- README.wayland | 5 + 1 file changed, 5 insertions(+) diff --git a/README.wayland b/README.wayland index 0ff7269..8a9ea13 100644 --- a/README.wayland +++ b/README.wayland @@ -66,6 +66,11 @@ pass a few more options to the configure stage of Enlightenment: --enable-wayland +Since this is all still a work-in-progress, there are a few Enlightenment +modules that have not been fixed to work without X11 yet. +Those will need to be disabled if you enabled the wayland-only option: + + --disable-xkbswitch If you also want support for running X applications under Wayland you might want to try out XWayland support: --
[EGIT] [core/elementary] master 01/01: elementary: Fix Copy and Paste test to actually paste clipboard text
devilhorns pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=7147e8b487cfdc61886f0adebca8cd85457833af commit 7147e8b487cfdc61886f0adebca8cd85457833af Author: Chris Michael cp.mich...@samsung.com Date: Wed Aug 12 10:18:41 2015 -0400 elementary: Fix Copy and Paste test to actually paste clipboard text Summary: The Elm Copy and Paste test was not actually pasting the copied text into the entry when the Paste button was clicked. This patch fixes that issue. @fix Signed-off-by: Chris Michael cp.mich...@samsung.com --- src/bin/test_cnp.c | 18 -- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/bin/test_cnp.c b/src/bin/test_cnp.c index 66f8bc4..35de89e 100644 --- a/src/bin/test_cnp.c +++ b/src/bin/test_cnp.c @@ -17,9 +17,11 @@ _bt_copy_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA } static Eina_Bool -_selection(void *d EINA_UNUSED, Evas_Object *obj EINA_UNUSED, Elm_Selection_Data *ev) +_selection(void *data, Evas_Object *obj EINA_UNUSED, Elm_Selection_Data *ev) { + Evas_Object *en = data; const char *fmt = NULL; + switch (ev-format) { case ELM_SEL_FORMAT_TARGETS: fmt = TARGETS; break; @@ -31,6 +33,18 @@ _selection(void *d EINA_UNUSED, Evas_Object *obj EINA_UNUSED, Elm_Selection_Data case ELM_SEL_FORMAT_HTML: fmt = HTML; break; } fprintf(stderr, got selection type '%s': length %zu\n, fmt, ev-len); + + if (ev-format == ELM_SEL_FORMAT_TEXT) + { +char *stripstr; + +stripstr = malloc(ev-len + 1); +strncpy(stripstr, (char *)ev-data, ev-len); +stripstr[ev-len] = '\0'; +elm_entry_entry_insert(en, stripstr); +free(stripstr); + } + return EINA_TRUE; } @@ -40,7 +54,7 @@ _bt_paste_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EIN Evas_Object *en = data; elm_cnp_selection_get(en, ELM_SEL_TYPE_CLIPBOARD, ELM_SEL_FORMAT_TEXT, - _selection, NULL); + _selection, en); } static void --
[EGIT] [core/enlightenment] master 01/01: init null wl mime types array when new type is offered
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=7f3d59f6f2608ad216840dc5de60e36429da6aa7 commit 7f3d59f6f2608ad216840dc5de60e36429da6aa7 Author: Mike Blumenkrantz zm...@osg.samsung.com Date: Wed Aug 12 18:42:42 2015 -0400 init null wl mime types array when new type is offered --- src/bin/e_comp_wl_data.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/bin/e_comp_wl_data.c b/src/bin/e_comp_wl_data.c index a45c44d..06b17db 100644 --- a/src/bin/e_comp_wl_data.c +++ b/src/bin/e_comp_wl_data.c @@ -93,6 +93,8 @@ _e_comp_wl_data_source_cb_offer(struct wl_client *client EINA_UNUSED, struct wl_ if (!(source = wl_resource_get_user_data(resource))) return; + if (!source-mime_types) + source-mime_types = eina_array_new(1); eina_array_push(source-mime_types, eina_stringshare_add(mime_type)); } --
[EGIT] [core/enlightenment] master 02/03: don't toggle screensaver twice on x11 xdnd selection owner change
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=466ceca59be3915a038734c4d58ec2e4d160ddaa commit 466ceca59be3915a038734c4d58ec2e4d160ddaa Author: Mike Blumenkrantz zm...@osg.samsung.com Date: Wed Aug 12 17:45:34 2015 -0400 don't toggle screensaver twice on x11 xdnd selection owner change --- src/modules/xwayland/dnd.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/modules/xwayland/dnd.c b/src/modules/xwayland/dnd.c index 59f9c81..0705d22 100644 --- a/src/modules/xwayland/dnd.c +++ b/src/modules/xwayland/dnd.c @@ -219,7 +219,6 @@ _xwl_fixes_selection_notify(void *d EINA_UNUSED, int t EINA_UNUSED, Ecore_X_Even source-cancelled = _xwayland_cancelled_send; source-mime_types = namelist; free(names); - e_screensaver_inhibit_toggle(1); } else { --
[EGIT] [core/enlightenment] master 01/03: only delete current drag on x11 xdnd selection loss if x11 owned selection
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=ce6703e97985f31ef39d5e97f34b95e5520ff741 commit ce6703e97985f31ef39d5e97f34b95e5520ff741 Author: Mike Blumenkrantz zm...@osg.samsung.com Date: Wed Aug 12 17:45:01 2015 -0400 only delete current drag on x11 xdnd selection loss if x11 owned selection --- src/modules/xwayland/dnd.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/modules/xwayland/dnd.c b/src/modules/xwayland/dnd.c index ddc3bfd..59f9c81 100644 --- a/src/modules/xwayland/dnd.c +++ b/src/modules/xwayland/dnd.c @@ -223,7 +223,9 @@ _xwl_fixes_selection_notify(void *d EINA_UNUSED, int t EINA_UNUSED, Ecore_X_Even } else { - if (e_comp-wl_comp_data-drag) + if (e_comp-wl_comp_data-drag + e_comp-wl_comp_data-drag_client + e_client_has_xwindow(e_comp-wl_comp_data-drag_client)) e_object_del(E_OBJECT(e_comp-wl_comp_data-drag)); } e_screensaver_inhibit_toggle(!!ev-owner); --
[EGIT] [core/enlightenment] master 03/03: reject xwl selection notify events which do not match our xwl property atom
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=3b785403b6a70496a1a993da3f66c5fcdb7265f7 commit 3b785403b6a70496a1a993da3f66c5fcdb7265f7 Author: Mike Blumenkrantz zm...@osg.samsung.com Date: Wed Aug 12 17:59:16 2015 -0400 reject xwl selection notify events which do not match our xwl property atom --- src/modules/xwayland/dnd.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/modules/xwayland/dnd.c b/src/modules/xwayland/dnd.c index 0705d22..4a022f8 100644 --- a/src/modules/xwayland/dnd.c +++ b/src/modules/xwayland/dnd.c @@ -285,8 +285,9 @@ _xwl_selection_notify(void *d EINA_UNUSED, int t EINA_UNUSED, Ecore_X_Event_Sele return ECORE_CALLBACK_RENEW; } } - /* FIXME: ecore-x events are fucked */ - //if (ecore_x_atom_get(ev-target) != xwl_dnd_atom) return ECORE_CALLBACK_RENEW; +#if (EFL_VERSION_MAJOR 1) || (EFL_VERSION_MINOR = 16) + if (ev-property != xwl_dnd_atom) return ECORE_CALLBACK_RENEW; +#endif sd = ev-data; do --
[EGIT] [core/efl] master 01/01: ecore-x: add property member to Ecore_X_Event_Selection_Notify
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=0efc83d64d195d6fc3869058b6e7146cd8149ce1 commit 0efc83d64d195d6fc3869058b6e7146cd8149ce1 Author: Mike Blumenkrantz zm...@osg.samsung.com Date: Wed Aug 12 17:57:30 2015 -0400 ecore-x: add property member to Ecore_X_Event_Selection_Notify @feature --- src/lib/ecore_x/Ecore_X.h | 1 + src/lib/ecore_x/xcb/ecore_xcb_events.c | 1 + src/lib/ecore_x/xlib/ecore_x_events.c | 1 + 3 files changed, 3 insertions(+) diff --git a/src/lib/ecore_x/Ecore_X.h b/src/lib/ecore_x/Ecore_X.h index f5c2da4..7337ae2 100644 --- a/src/lib/ecore_x/Ecore_X.h +++ b/src/lib/ecore_x/Ecore_X.h @@ -742,6 +742,7 @@ struct _Ecore_X_Event_Selection_Notify Ecore_X_Atom atom; char *target; void *data; + Ecore_X_Atom property; /** @since 1.16 */ }; struct _Ecore_X_Selection_Data diff --git a/src/lib/ecore_x/xcb/ecore_xcb_events.c b/src/lib/ecore_x/xcb/ecore_xcb_events.c index 1d837d8..9f1e2fc 100644 --- a/src/lib/ecore_x/xcb/ecore_xcb_events.c +++ b/src/lib/ecore_x/xcb/ecore_xcb_events.c @@ -1367,6 +1367,7 @@ _ecore_xcb_event_handle_selection_notify(xcb_generic_event_t *event) e-win = ev-requestor; e-time = ev-time; e-atom = selection; + e-property = ev-property; e-target = _ecore_xcb_selection_target_get(ev-target); if (selection == ECORE_X_ATOM_SELECTION_PRIMARY) diff --git a/src/lib/ecore_x/xlib/ecore_x_events.c b/src/lib/ecore_x/xlib/ecore_x_events.c index c8cd012..48af12d 100644 --- a/src/lib/ecore_x/xlib/ecore_x_events.c +++ b/src/lib/ecore_x/xlib/ecore_x_events.c @@ -1510,6 +1510,7 @@ _ecore_x_event_handle_selection_notify(XEvent *xevent) e-win = xevent-xselection.requestor; e-time = xevent-xselection.time; e-atom = selection; + e-property = xevent-xselection.property; e-target = _ecore_x_selection_target_get(xevent-xselection.target); if (selection == ECORE_X_ATOM_SELECTION_PRIMARY) --
[EGIT] [core/enlightenment] master 05/05: redo wayland shot init to account for async+slow global loading
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=83f49bf44c4850ea9d86e92adfba77f6e94a2987 commit 83f49bf44c4850ea9d86e92adfba77f6e94a2987 Author: Mike Blumenkrantz zm...@osg.samsung.com Date: Wed Aug 12 20:19:18 2015 -0400 redo wayland shot init to account for async+slow global loading previously it was possible for the shot module to init in a wayland compositor and fail to grab the necessary globals, resulting in black rects for all shots --- src/modules/shot/e_mod_main.c | 107 +++--- 1 file changed, 70 insertions(+), 37 deletions(-) diff --git a/src/modules/shot/e_mod_main.c b/src/modules/shot/e_mod_main.c index 7b2c798..e05da8f 100644 --- a/src/modules/shot/e_mod_main.c +++ b/src/modules/shot/e_mod_main.c @@ -50,6 +50,7 @@ struct screenshooter_output struct wl_output *output; struct wl_buffer *buffer; int x, y, w, h; + uint32_t id; void *data; }; #endif @@ -1245,6 +1246,70 @@ _e_mod_menu_add(void *data EINA_UNUSED, E_Menu *m) e_menu_item_callback_set(mi, _e_mod_menu_cb, NULL); } +#ifdef HAVE_WAYLAND +static Ecore_Event_Handler *wl_global_handler; + +static Eina_Bool +_wl_init() +{ + Eina_Inlist *globals; + Ecore_Wl_Global *global; + struct wl_registry *reg; + + reg = e_comp-wl_comp_data-wl.registry ?: ecore_wl_registry_get(); + if (e_comp-wl_comp_data-wl.registry) + globals = e_comp-wl_comp_data-wl.globals; + else + globals = ecore_wl_globals_get(); + if (!globals) + { +if (!wl_global_handler) + { + if (e_comp-wl_comp_data-wl.registry) + wl_global_handler = ecore_event_handler_add(E_EVENT_WAYLAND_GLOBAL_ADD, + (Ecore_Event_Handler_Cb)_wl_init, NULL); + else + wl_global_handler = ecore_event_handler_add(ECORE_WL_EVENT_INTERFACES_BOUND, + (Ecore_Event_Handler_Cb)_wl_init, NULL); + } +return ECORE_CALLBACK_RENEW; + } + EINA_INLIST_FOREACH(globals, global) + { +if ((!_wl_screenshooter) (!strcmp(global-interface, screenshooter))) + { + _wl_screenshooter = + wl_registry_bind(reg, global-id, +screenshooter_interface, global-version); + + if (_wl_screenshooter) + screenshooter_add_listener(_wl_screenshooter, + _screenshooter_listener, + _wl_screenshooter); + } +else if (!strcmp(global-interface, wl_output)) + { + struct screenshooter_output *output; + Eina_List *l; + + EINA_LIST_FOREACH(_outputs, l, output) + if (output-id == global-id) return ECORE_CALLBACK_RENEW; + output = calloc(1, sizeof(*output)); + if (output) + { + output-output = +wl_registry_bind(reg, global-id, + wl_output_interface, global-version); + _outputs = eina_list_append(_outputs, output); + wl_output_add_listener(output-output, + _output_listener, output); + } + } + } + return ECORE_CALLBACK_RENEW; +} +#endif + /* module setup */ E_API E_Module_Api e_modapi = { @@ -1285,44 +1350,9 @@ e_modapi_init(E_Module *m) (main/2, _(Take Screenshot), _e_mod_menu_add, NULL, NULL, NULL); border_hook = e_int_client_menu_hook_add(_bd_hook, NULL); - if (e_comp-comp_type == E_PIXMAP_TYPE_X) return m; - #ifdef HAVE_WAYLAND - Eina_Inlist *globals; - Ecore_Wl_Global *global; - struct wl_registry *reg; - - globals = e_comp-wl_comp_data-wl.globals ?: ecore_wl_globals_get(); - reg = e_comp-wl_comp_data-wl.registry ?: ecore_wl_registry_get(); - EINA_INLIST_FOREACH(globals, global) - { -if (!strcmp(global-interface, screenshooter)) - { - _wl_screenshooter = - wl_registry_bind(reg, global-id, -screenshooter_interface, global-version); - - if (_wl_screenshooter) - screenshooter_add_listener(_wl_screenshooter, - _screenshooter_listener, - _wl_screenshooter); - } -else if (!strcmp(global-interface, wl_output)) - { - struct screenshooter_output *output; - - output = calloc(1, sizeof(*output)); - if (output) - { - output-output = -wl_registry_bind(reg, global-id, - wl_output_interface, global-version); - _outputs = eina_list_append(_outputs, output); - wl_output_add_listener(output-output, -
[EGIT] [core/enlightenment] master 01/01: convert E_Comp_Wl_Data_Source-mime_types to Eina_Array
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=ecffe370d16d6709b1be8450f6bd3769dc175e7b commit ecffe370d16d6709b1be8450f6bd3769dc175e7b Author: Mike Blumenkrantz zm...@osg.samsung.com Date: Wed Aug 12 17:39:15 2015 -0400 convert E_Comp_Wl_Data_Source-mime_types to Eina_Array this data struct fits the usage of the data more effectively --- src/bin/e_comp_wl_data.c | 71 -- src/bin/e_comp_wl_data.h | 2 +- src/modules/xwayland/dnd.c | 21 -- 3 files changed, 51 insertions(+), 43 deletions(-) diff --git a/src/bin/e_comp_wl_data.c b/src/bin/e_comp_wl_data.c index 1a92288..a45c44d 100644 --- a/src/bin/e_comp_wl_data.c +++ b/src/bin/e_comp_wl_data.c @@ -2,6 +2,15 @@ #define E_COMP_WL #include e.h +static void +_mime_types_free(E_Comp_Wl_Data_Source *source) +{ + if (!source-mime_types) return; + while (eina_array_count(source-mime_types)) + eina_stringshare_del(eina_array_pop(source-mime_types)); + eina_array_free(source-mime_types); +} + static void _e_comp_wl_data_offer_cb_accept(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t serial, const char *mime_type) { @@ -84,8 +93,7 @@ _e_comp_wl_data_source_cb_offer(struct wl_client *client EINA_UNUSED, struct wl_ if (!(source = wl_resource_get_user_data(resource))) return; - source-mime_types = - eina_list_append(source-mime_types, eina_stringshare_add(mime_type)); + eina_array_push(source-mime_types, eina_stringshare_add(mime_type)); } /* called by wl_data_source_destroy */ @@ -101,16 +109,13 @@ static void _e_comp_wl_data_source_cb_resource_destroy(struct wl_resource *resource) { E_Comp_Wl_Data_Source *source; - char *t; if (!(source = wl_resource_get_user_data(resource))) return; wl_signal_emit(source-destroy_signal, source); - EINA_LIST_FREE(source-mime_types, t) - eina_stringshare_del(t); - + _mime_types_free(source); free(source); } @@ -174,7 +179,7 @@ static struct wl_resource* _e_comp_wl_data_device_data_offer_create(E_Comp_Wl_Data_Source *source, struct wl_resource *data_device_res) { E_Comp_Wl_Data_Offer *offer; - Eina_List *l; + Eina_Iterator *it; char *t; DBG(Data Offer Create); @@ -201,8 +206,10 @@ _e_comp_wl_data_device_data_offer_create(E_Comp_Wl_Data_Source *source, struct w wl_data_device_send_data_offer(data_device_res, offer-resource); - EINA_LIST_FOREACH(source-mime_types, l, t) - wl_data_offer_send_offer(offer-resource, t); + it = eina_array_iterator_new(source-mime_types); + EINA_ITERATOR_FOREACH(it, t) + wl_data_offer_send_offer(offer-resource, t); + eina_iterator_free(it); return offer-resource; } @@ -572,7 +579,7 @@ _e_comp_wl_clipboard_source_send_send(E_Comp_Wl_Data_Source *source, const char clip_source = container_of(source, E_Comp_Wl_Clipboard_Source, data_source); if (!clip_source) return; - t = eina_list_nth(source-mime_types, 0); + t = eina_array_data_get(source-mime_types, 0); if (!strcmp(mime_type, t)) _e_comp_wl_clipboard_offer_create(clip_source, fd); else @@ -610,7 +617,7 @@ _e_comp_wl_clipboard_selection_set(struct wl_listener *listener EINA_UNUSED, voi e_comp_wl_clipboard_source_unref(clip_source); e_comp-wl_comp_data-clipboard.source = NULL; - mime_type = eina_list_nth(sel_source-mime_types, 0); + mime_type = eina_array_data_get(sel_source-mime_types, 0); if (pipe2(p, O_CLOEXEC) == -1) return; @@ -665,37 +672,31 @@ e_comp_wl_data_device_send_enter(E_Client *ec) { int d1 = 0x5UL, d2, d3, d4; E_Comp_Wl_Data_Source *source; -Eina_List *l; d2 = d3 = d4 = 0; source = e_comp-wl_comp_data-drag_source; -if (eina_list_count(source-mime_types) 3) +if (eina_array_count(source-mime_types) 3) { - const char *type, *types[eina_list_count(source-mime_types)]; + const char *type, *types[eina_array_count(source-mime_types)]; int i = 0; + Eina_Iterator *it; d1 |= 0x1UL; - EINA_LIST_FOREACH(source-mime_types, l, type) + it = eina_array_iterator_new(source-mime_types); + EINA_ITERATOR_FOREACH(it, type) types[i++] = type; + eina_iterator_free(it); ecore_x_dnd_types_set(e_comp-cm_selection, types, i); } -else +else if (source-mime_types) { - l = source-mime_types; - - if (source-mime_types) - d2 = ecore_x_atom_get(e_comp-wl_comp_data-drag-types[0]); - if (eina_list_count(source-mime_types) 1) - { - l = eina_list_next(l); - d3 = ecore_x_atom_get(eina_list_data_get(l)); - } - if
[EGIT] [core/enlightenment] master 03/05: emit randr change event on randr init
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=725890f105e32de5c51a2a4e14b2693c3cb5dbfe commit 725890f105e32de5c51a2a4e14b2693c3cb5dbfe Author: Mike Blumenkrantz zm...@osg.samsung.com Date: Wed Aug 12 20:17:25 2015 -0400 emit randr change event on randr init wayland compositors have been failing to create any outputs for some time as a result of not getting any randr events on init --- src/bin/e_randr2.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bin/e_randr2.c b/src/bin/e_randr2.c index 103000f..789e388 100644 --- a/src/bin/e_randr2.c +++ b/src/bin/e_randr2.c @@ -96,6 +96,7 @@ e_randr2_init(void) _config_update(e_randr2, e_randr2_cfg); e_randr2_config_save(); } + ecore_event_add(E_EVENT_RANDR_CHANGE, NULL, NULL, NULL); return EINA_TRUE; } --
[EGIT] [core/enlightenment] master 01/05: move x11 ee resize callback to comp_canvas, simplify x11 randr event handler
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=a08a1434c103b73f2cd51965596dd24fffd5caef commit a08a1434c103b73f2cd51965596dd24fffd5caef Author: Mike Blumenkrantz zm...@osg.samsung.com Date: Wed Aug 12 19:26:19 2015 -0400 move x11 ee resize callback to comp_canvas, simplify x11 randr event handler this should ensure that all compositors accurately perform resize-related canvas operations --- src/bin/e_comp_canvas.c | 7 +++ src/bin/e_comp_x.c | 33 + 2 files changed, 8 insertions(+), 32 deletions(-) diff --git a/src/bin/e_comp_canvas.c b/src/bin/e_comp_canvas.c index a380a7d..87fc003 100644 --- a/src/bin/e_comp_canvas.c +++ b/src/bin/e_comp_canvas.c @@ -204,6 +204,12 @@ _e_comp_canvas_cb_zone_sort(const void *data1, const void *data2) return z1-num - z2-num; } +static void +_e_comp_canvas_resize(Ecore_Evas *ee EINA_UNUSED) +{ + e_randr2_screens_setup(e_comp-w, e_comp-h); + e_comp_canvas_update(); +} E_API Eina_Bool e_comp_canvas_init(int w, int h) @@ -260,6 +266,7 @@ e_comp_canvas_init(int w, int h) E_LIST_HANDLER_APPEND(handlers, E_EVENT_SCREENSAVER_ON, _e_comp_cb_screensaver_on, NULL); E_LIST_HANDLER_APPEND(handlers, E_EVENT_SCREENSAVER_OFF, _e_comp_cb_screensaver_off, NULL); + ecore_evas_callback_resize_set(e_comp-ee, _e_comp_canvas_resize); ecore_evas_resize(e_comp-ee, w, h); return EINA_TRUE; diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c index fa2d80e..9c6e8d9 100644 --- a/src/bin/e_comp_x.c +++ b/src/bin/e_comp_x.c @@ -4741,45 +4741,15 @@ _e_comp_x_cb_frame_extents_request(void *data EINA_UNUSED, int ev_type EINA_UNUS static Eina_Bool _e_comp_x_randr_change(void *data EINA_UNUSED, int ev_type EINA_UNUSED, void *event_info EINA_UNUSED) { - if ((e_comp-w != e_randr2-w) || - (e_comp-h != e_randr2-h)) - { -if (e_comp-comp_type == E_PIXMAP_TYPE_X) - e_comp_canvas_resize(e_randr2-w, e_randr2-h); - } - else - { -E_Client *ec; - -ecore_x_netwm_desk_size_set(e_comp-root, e_comp-w, e_comp-h); -if (e_comp-comp_type == E_PIXMAP_TYPE_X) - e_randr2_screens_setup(e_comp-w, e_comp-h); - -if (e_comp-comp_type == E_PIXMAP_TYPE_X) - e_comp_canvas_update(); -E_CLIENT_FOREACH(ec) - { - if (!e_client_util_ignored_get(ec)) - _e_comp_x_client_zone_geometry_set(ec); - } - } - return ECORE_CALLBACK_RENEW; -} - -static void -_e_comp_x_ee_resize(Ecore_Evas *ee EINA_UNUSED) -{ E_Client *ec; ecore_x_netwm_desk_size_set(e_comp-root, e_comp-w, e_comp-h); - e_randr2_screens_setup(e_comp-w, e_comp-h); - - e_comp_canvas_update(); E_CLIENT_FOREACH(ec) { if (!e_client_util_ignored_get(ec)) _e_comp_x_client_zone_geometry_set(ec); } + return ECORE_CALLBACK_RENEW; } static void @@ -5132,7 +5102,6 @@ _e_comp_x_setup(Ecore_X_Window root, int w, int h) ECORE_EVENT_MODIFIER_CTRL | ECORE_EVENT_MODIFIER_ALT, 0); - ecore_evas_callback_resize_set(e_comp-ee, _e_comp_x_ee_resize); ecore_evas_data_set(e_comp-ee, comp, e_comp); e_comp-bindings_grab_cb = _e_comp_x_bindings_grab_cb; e_comp-bindings_ungrab_cb = _e_comp_x_bindings_ungrab_cb; --
[EGIT] [core/enlightenment] master 02/05: enforce compositor canvas resizing/updating when emitting randr events
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=7986b084f82f3920ef485ae297253f71d7b8b9e2 commit 7986b084f82f3920ef485ae297253f71d7b8b9e2 Author: Mike Blumenkrantz zm...@osg.samsung.com Date: Wed Aug 12 19:27:53 2015 -0400 enforce compositor canvas resizing/updating when emitting randr events all compositors will want this to occur, so make it automatic --- src/bin/e_randr2.c | 7 +++ 1 file changed, 7 insertions(+) diff --git a/src/bin/e_randr2.c b/src/bin/e_randr2.c index c1f6e5f..103000f 100644 --- a/src/bin/e_randr2.c +++ b/src/bin/e_randr2.c @@ -597,6 +597,13 @@ _cb_screen_change_delay(void *data EINA_UNUSED) } // update screen info after the above apply or due to external changes e_randr2_screeninfo_update(); + if ((e_comp-w != e_randr2-w) || (e_comp-h != e_randr2-h)) + e_comp_canvas_resize(e_randr2-w, e_randr2-h); + else + { +e_randr2_screens_setup(e_comp-w, e_comp-h); +e_comp_canvas_update(); + } // tell the rest of e some screen reconfigure thing happened ecore_event_add(E_EVENT_RANDR_CHANGE, NULL, NULL, NULL); event_screen = EINA_FALSE; --
[EGIT] [core/enlightenment] master 04/05: add local event for wl_wl output to use when a global has been received
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=97f131582e64596b9b1b7bda16dc8cf0e92634eb commit 97f131582e64596b9b1b7bda16dc8cf0e92634eb Author: Mike Blumenkrantz zm...@osg.samsung.com Date: Wed Aug 12 20:18:43 2015 -0400 add local event for wl_wl output to use when a global has been received --- src/bin/e_comp_wl.c| 4 src/bin/e_comp_wl.h| 2 ++ src/modules/wl_wl/wl.c | 1 + 3 files changed, 7 insertions(+) diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index 12c60ca..6051514 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -8,6 +8,8 @@ #define COMPOSITOR_VERSION 3 +E_API int E_EVENT_WAYLAND_GLOBAL_ADD = -1; + /* Resource Data Mapping: (wl_resource_get_user_data) * * wl_surface == e_pixmap @@ -2676,6 +2678,8 @@ e_comp_wl_init(void) e_desklock_show_hook_add(_e_comp_wl_desklock_show); e_desklock_hide_hook_add(_e_comp_wl_desklock_hide); + E_EVENT_WAYLAND_GLOBAL_ADD = ecore_event_type_new(); + _last_event_time = ecore_loop_time_get(); return EINA_TRUE; diff --git a/src/bin/e_comp_wl.h b/src/bin/e_comp_wl.h index e105fa2..15059ed 100644 --- a/src/bin/e_comp_wl.h +++ b/src/bin/e_comp_wl.h @@ -335,6 +335,8 @@ EINTERN Eina_Bool e_comp_wl_key_down(Ecore_Event_Key *ev); EINTERN Eina_Bool e_comp_wl_key_up(Ecore_Event_Key *ev); E_API Eina_Bool e_comp_wl_evas_handle_mouse_button(E_Client *ec, uint32_t timestamp, uint32_t button_id, uint32_t state); +E_API extern int E_EVENT_WAYLAND_GLOBAL_ADD; + # ifndef HAVE_WAYLAND_ONLY EINTERN void e_comp_wl_xwayland_client_queue(E_Client *ec); static inline E_Comp_X_Client_Data * diff --git a/src/modules/wl_wl/wl.c b/src/modules/wl_wl/wl.c index 36f88ce..d137c99 100644 --- a/src/modules/wl_wl/wl.c +++ b/src/modules/wl_wl/wl.c @@ -17,6 +17,7 @@ _wl_handle_global(void *data EINA_UNUSED, struct wl_registry *registry EINA_UNUS if (!strcmp(interface, wl_shm)) e_comp-wl_comp_data-wl.shm = wl_registry_bind(registry, id, wl_shm_interface, 1); + ecore_event_add(E_EVENT_WAYLAND_GLOBAL_ADD, NULL, NULL, NULL); } static void --
[EGIT] [core/elementary] master 01/01: focus: item focus moves by geometry.
jaehwan pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=f6712f962367dc2930eb376e8d98d7130e8ccdf6 commit f6712f962367dc2930eb376e8d98d7130e8ccdf6 Author: Jaehwan Kim jae.hwan@samsung.com Date: Thu Aug 13 13:45:21 2015 +0900 focus: item focus moves by geometry. In the widget code, focus origin is added. It can know the focus movement is originated by which action. The widgets can choose the item focus moves to last focused item or geometrically nearby item by focus origin. In gengrid, focus moves to last focused item if focus origin is ELM_FOCUS_REVERT. It moves to nearby item if focus origin is from ELM_FOCUS_UP to ELM_FOCUS_LEFT. TODO: widgets have items should add the direction feature if it want the focus to move to nearby item. @feature --- src/lib/elm_focus.h | 4 +++- src/lib/elm_gengrid.c | 40 +++- src/lib/elm_widget.c | 26 +++--- src/lib/elm_widget.eo | 5 + src/lib/elm_widget.h | 4 src/lib/elm_win.c | 18 +- 6 files changed, 91 insertions(+), 6 deletions(-) diff --git a/src/lib/elm_focus.h b/src/lib/elm_focus.h index fcc6aa1..5bb4f89 100644 --- a/src/lib/elm_focus.h +++ b/src/lib/elm_focus.h @@ -45,7 +45,9 @@ typedef enum ELM_FOCUS_UP, /** up direction */ ELM_FOCUS_DOWN, /** down direction */ ELM_FOCUS_RIGHT,/** right direction */ - ELM_FOCUS_LEFT /** left direction */ + ELM_FOCUS_LEFT, /** left direction */ + ELM_FOCUS_MOUSE, /** direction is from mouse */ + ELM_FOCUS_REVERT /** direction is from focus revert */ } Elm_Focus_Direction; /** diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c index 26a4953..65783c6 100644 --- a/src/lib/elm_gengrid.c +++ b/src/lib/elm_gengrid.c @@ -3524,12 +3524,47 @@ _elm_gengrid_nearest_visible_item_get(Evas_Object *obj, Elm_Object_Item *eo_it) return eo_it; } +static Elm_Object_Item * +_elm_gengrid_direction_item_get(Evas_Object *obj, Elm_Focus_Direction dir) +{ + double max_weight = 0.0, weight = 0.0; + Eina_List *item_list = NULL, *l = NULL; + Elm_Object_Item *eo_item = NULL, *best_item = NULL; + Evas_Object *fobj = _elm_widget_focus_highlight_object_get(obj); + + double degree = 0.0; + if (dir == ELM_FOCUS_UP) degree = 0.0; + else if (dir == ELM_FOCUS_DOWN) degree = 180.0; + else if (dir == ELM_FOCUS_RIGHT) degree = 90.0; + else if (dir == ELM_FOCUS_LEFT) degree = 270.0; + + item_list = elm_gengrid_realized_items_get(obj); + best_item = elm_gengrid_first_item_get(obj); + + EINA_LIST_FOREACH(item_list, l, eo_item) + { +ELM_GENGRID_ITEM_DATA_GET(eo_item, item); +weight = _elm_widget_focus_direction_weight_get(fobj, VIEW(item), degree); +if ((weight == -1.0) || +((weight != 0.0) (max_weight != -1.0) + ((int)(max_weight * 1) (int)(weight * 1 + { + best_item = eo_item; + max_weight = weight; + } + } + eina_list_free(item_list); + + return best_item; +} + EOLIAN static Eina_Bool _elm_gengrid_elm_widget_on_focus(Eo *obj, Elm_Gengrid_Data *sd) { Eina_Bool int_ret = EINA_FALSE; Elm_Object_Item *eo_it = NULL; Eina_Bool is_sel = EINA_FALSE; + Elm_Focus_Direction focus_origin; eo_do_super(obj, MY_CLASS, int_ret = elm_obj_widget_on_focus()); if (!int_ret) return EINA_FALSE; @@ -3543,7 +3578,10 @@ _elm_gengrid_elm_widget_on_focus(Eo *obj, Elm_Gengrid_Data *sd) if (elm_widget_focus_get(obj) !sd-mouse_down) { -if (sd-last_focused_item) +focus_origin = elm_widget_focus_origin_get(obj); +if (focus_origin = ELM_FOCUS_UP focus_origin = ELM_FOCUS_LEFT) + eo_it = _elm_gengrid_direction_item_get(obj, focus_origin); +else if (sd-last_focused_item) eo_it = sd-last_focused_item; else if (sd-last_selected_item) eo_it = sd-last_selected_item; diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c index 0bb9f0f..db963b7 100644 --- a/src/lib/elm_widget.c +++ b/src/lib/elm_widget.c @@ -63,6 +63,7 @@ struct _Elm_Translate_String_Data /* local subsystem globals */ static unsigned int focus_order = 0; +Elm_Focus_Direction focus_origin = -1; static inline Eina_Bool _elm_widget_is(const Evas_Object *obj) @@ -173,6 +174,16 @@ _elm_widget_focus_highlight_start(const Evas_Object *obj) _elm_win_focus_highlight_start(top); } +Evas_Object * +_elm_widget_focus_highlight_object_get(const Evas_Object *obj) +{ + Evas_Object *top = elm_widget_top_get(obj); + + if (top eo_isa(top, ELM_WIN_CLASS)) + return _elm_win_focus_highlight_object_get(top); + return NULL; +} + EAPI Eina_Bool elm_widget_focus_highlight_enabled_get(const Evas_Object *obj) { @@ -385,6 +396,7 @@ _if_focused_revert(Evas_Object *obj, if (!sd-focused) return; if
[EGIT] [core/elementary] master 01/01: test_gengrid: change the min size of gengrid
jaehwan pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=fdca39ae16968f41aee14b12fe9d07d3071c288e commit fdca39ae16968f41aee14b12fe9d07d3071c288e Author: Jaehwan Kim jae.hwan@samsung.com Date: Thu Aug 13 13:32:43 2015 +0900 test_gengrid: change the min size of gengrid --- src/bin/test_gengrid.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bin/test_gengrid.c b/src/bin/test_gengrid.c index 7e7c982..1de161a 100644 --- a/src/bin/test_gengrid.c +++ b/src/bin/test_gengrid.c @@ -1743,7 +1743,7 @@ test_gengrid_focus(void *data EINA_UNUSED, ELM_SCALE_SIZE(150)); evas_object_size_hint_weight_set(gengrid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(gengrid, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_size_hint_min_set(gengrid, 0, ELM_SCALE_SIZE(600)); + evas_object_size_hint_min_set(gengrid, 0, ELM_SCALE_SIZE(620)); elm_box_pack_end(in_bx, gengrid); evas_object_show(gengrid); evas_object_smart_callback_add(gengrid, item,focused, _gengrid_focus_item_cb, item,focused); @@ -1761,7 +1761,7 @@ test_gengrid_focus(void *data EINA_UNUSED, ELM_SCALE_SIZE(150)); evas_object_size_hint_weight_set(gengrid2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(gengrid2, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_size_hint_min_set(gengrid2, 0, ELM_SCALE_SIZE(600)); + evas_object_size_hint_min_set(gengrid2, 0, ELM_SCALE_SIZE(620)); elm_box_pack_end(in_bx, gengrid2); evas_object_show(gengrid2); evas_object_smart_callback_add(gengrid2, item,focused, _gengrid_focus_item_cb, item,focused); --
[EGIT] [core/enlightenment] master 01/02: e_widget_filepreview: Remove assign without effect
stefan pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=be97356eaae573a8f75352af594060e7c62b4b1b commit be97356eaae573a8f75352af594060e7c62b4b1b Author: Stefan Schmidt ste...@osg.samsung.com Date: Wed Aug 12 09:25:16 2015 +0200 e_widget_filepreview: Remove assign without effect CID: 1316023 --- src/bin/e_widget_filepreview.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/bin/e_widget_filepreview.c b/src/bin/e_widget_filepreview.c index c7d05be..54494e5 100644 --- a/src/bin/e_widget_filepreview.c +++ b/src/bin/e_widget_filepreview.c @@ -250,7 +250,6 @@ _e_wid_fprev_preview_video_opened(E_Widget_Data *wd, Evas_Object *obj, void *eve if (iw 1) iw = 1; if (ih 1) ih = 1; - w = w; h = (w * ih) / iw; e_widget_preview_vsize_set(wd-o_preview_preview, w, h); if (h oh) --
[EGIT] [core/elementary] master 01/01: Fix docs for elm_object_tooltip_orient_set
davemds pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=132847c53f17b4e18c56dab1cc9e9cc5669d2bc0 commit 132847c53f17b4e18c56dab1cc9e9cc5669d2bc0 Author: Dave Andreoli d...@gurumeditation.it Date: Wed Aug 12 09:15:09 2015 +0200 Fix docs for elm_object_tooltip_orient_set The function is not visible in docs, this should make it visible --- src/lib/elm_tooltip.h | 10 -- 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/lib/elm_tooltip.h b/src/lib/elm_tooltip.h index 2d934d4..cb508a6 100644 --- a/src/lib/elm_tooltip.h +++ b/src/lib/elm_tooltip.h @@ -71,19 +71,17 @@ EAPI void elm_object_tooltip_move_freeze_pop(Evas_Object *obj); EAPI int elm_object_tooltip_move_freeze_get(const Evas_Object *obj); /** - * @def elm_object_tooltip_orient_set - * @since 1.9 - * * @brief Sets the orientation of the tooltip around the owner region * * Sets the position in which tooltip will appear around its owner. By default, * #ELM_TOOLTIP_ORIENT_NONE is set. * - * @param[in] obj owner widget. - * @param[in] orient orientation. + * @param obj The owner widget. + * @param orient The orientation of the tooltip. * * @ingroup Tooltips - * @see @ref Elm_Tooltip_Orient for possible values. + * @see Elm_Tooltip_Orient for possible values. + * @since 1.9 */ EAPI void elm_object_tooltip_orient_set(Evas_Object *obj, Elm_Tooltip_Orient orient); --
[EGIT] [core/enlightenment] master 02/02: modules/battery: Remove assign without effect
stefan pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=c588867c1f20027f708e505b6e7cdff952ae173f commit c588867c1f20027f708e505b6e7cdff952ae173f Author: Stefan Schmidt ste...@osg.samsung.com Date: Wed Aug 12 09:26:19 2015 +0200 modules/battery: Remove assign without effect CID: 1316024 --- src/modules/battery/batget.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/modules/battery/batget.c b/src/modules/battery/batget.c index b2c3404..fa183a5 100644 --- a/src/modules/battery/batget.c +++ b/src/modules/battery/batget.c @@ -812,7 +812,6 @@ linux_sys_class_power_supply_check(void) if (sysev-present) have_battery = 1; if (charging) { - pwr_now = pwr_now; have_power = 1; if (time_to_full = 0) { --
[EGIT] [tools/erigo] master 01/01: Add possibility to reorder items in content view
yakov pushed a commit to branch master. http://git.enlightenment.org/tools/erigo.git/commit/?id=b8bb68d7515af0f9693ce9dcaf5e2de3d79211f8 commit b8bb68d7515af0f9693ce9dcaf5e2de3d79211f8 Author: Yakov Goldberg yako...@samsung.com Date: Wed Aug 12 11:37:25 2015 +0300 Add possibility to reorder items in content view This doesn't affect on real packing. Only on order how items will be displayed in content view. --- src/bin/gui/contentview.c | 4 +++- src/bin/gui/editor.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/bin/gui/contentview.c b/src/bin/gui/contentview.c index 4baac59..5c373b8 100644 --- a/src/bin/gui/contentview.c +++ b/src/bin/gui/contentview.c @@ -101,7 +101,9 @@ contentview_build(const Gui_Widget *wdg) const char *wdg_name = wdg_obj_container_class_name_get(wdg); Eina_Bool isbox = (wdg_name (!strcmp(wdg_name, DB_DEF_BOX_CLASS) || - !strcmp(wdg_name, DB_DEF_WIN_CLASS))); + !strcmp(wdg_name, DB_DEF_WIN_CLASS) || + !strcmp(wdg_name, DB_DEF_TABLE_CLASS) || + !strcmp(wdg_name, DB_DEF_GRID_CLASS))); Egui_Layout_Widgets *g = egui_layout_gui_get(); elm_object_disabled_set(g-main_win-contentview_down_btn, !isbox); diff --git a/src/bin/gui/editor.c b/src/bin/gui/editor.c index 59a9c84..69de7b4 100644 --- a/src/bin/gui/editor.c +++ b/src/bin/gui/editor.c @@ -4256,7 +4256,9 @@ _content_reorder_from_propview(void *data, Eo *obj EINA_UNUSED, const Eo_Event_D if (wdg_obj_container_class_name_get(wdg) (!strcmp(wdg_obj_container_class_name_get(wdg), DB_DEF_BOX_CLASS) || - !strcmp(wdg_obj_container_class_name_get(wdg), DB_DEF_WIN_CLASS))) + !strcmp(wdg_obj_container_class_name_get(wdg), DB_DEF_WIN_CLASS) || + !strcmp(wdg_obj_container_class_name_get(wdg), DB_DEF_TABLE_CLASS) || + !strcmp(wdg_obj_container_class_name_get(wdg), DB_DEF_GRID_CLASS) )) { Object_Container *_old_container, *_new_container; _old_container = (Object_Container *) wdg_obj_container_get((Gui_Widget *) wdg); --
[EGIT] [bindings/python/python-efl] master 01/01: Add the missed prop elm.Object.tooltip_orient
davemds pushed a commit to branch master. http://git.enlightenment.org/bindings/python/python-efl.git/commit/?id=d0026d610381791376df3fb7a6e535e10ab32f8a commit d0026d610381791376df3fb7a6e535e10ab32f8a Author: Dave Andreoli d...@gurumeditation.it Date: Wed Aug 12 09:54:07 2015 +0200 Add the missed prop elm.Object.tooltip_orient --- doc/elementary/object.rst | 73 ++ efl/elementary/object.pxi | 18 +++ efl/elementary/object.py | 12 +++ efl/elementary/object_cdef.pxi | 16 + 4 files changed, 119 insertions(+) diff --git a/doc/elementary/object.rst b/doc/elementary/object.rst index 14756ce..fc8c138 100644 --- a/doc/elementary/object.rst +++ b/doc/elementary/object.rst @@ -278,6 +278,79 @@ Selection modes No select mode with no finger size rule +.. _Elm_Tooltip_Orient: + +Tooltip orientation +--- + +.. data:: ELM_TOOLTIP_ORIENT_NONE + +Default value, Tooltip moves with mouse pointer + +.. versionadded:: 1.16 + +.. data:: ELM_TOOLTIP_ORIENT_TOP_LEFT + +Tooltip should appear at the top left of parent + +.. versionadded:: 1.16 + +.. data:: ELM_TOOLTIP_ORIENT_TOP + +Tooltip should appear at the top of parent + +.. versionadded:: 1.16 + +.. data:: ELM_TOOLTIP_ORIENT_TOP_RIGHT + +Tooltip should appear at the top right of parent + +.. versionadded:: 1.16 + +.. data:: ELM_TOOLTIP_ORIENT_LEFT + +Tooltip should appear at the left of parent + +.. versionadded:: 1.16 + +.. data:: ELM_TOOLTIP_ORIENT_CENTER + +Tooltip should appear at the center of parent + +.. versionadded:: 1.16 + +.. data:: ELM_TOOLTIP_ORIENT_RIGHT + +Tooltip should appear at the right of parent + +.. versionadded:: 1.16 + +.. data:: ELM_TOOLTIP_ORIENT_BOTTOM_LEFT + +Tooltip should appear at the bottom left of parent + +.. versionadded:: 1.16 + +.. data:: ELM_TOOLTIP_ORIENT_BOTTOM + +Tooltip should appear at the bottom of parent + +.. versionadded:: 1.16 + +.. data:: ELM_TOOLTIP_ORIENT_BOTTOM_RIGHT + +Tooltip should appear at the bottom right of parent + +.. versionadded:: 1.16 + +.. data:: ELM_TOOLTIP_ORIENT_LAST + +Sentinel value, don't use + +.. versionadded:: 1.16 + + + Inheritance diagram === diff --git a/efl/elementary/object.pxi b/efl/elementary/object.pxi index 7d3c5e4..a2076a2 100644 --- a/efl/elementary/object.pxi +++ b/efl/elementary/object.pxi @@ -1251,6 +1251,24 @@ cdef class Object(SmartObject): def tooltip_style_get(self): return _ctouni(elm_object_tooltip_style_get(self.obj)) +property tooltip_orient: +The orientation of the tooltip around the owner region. + +:type: :ref:`Elm_Tooltip_Orient` + +.. versionadded:: 1.16 + + +def __get__(self): +return elm_object_tooltip_orient_get(self.obj) +def __set__(self, Elm_Tooltip_Orient orient): +elm_object_tooltip_orient_set(self.obj, orient) + +def tooltip_orient_set(self, Elm_Tooltip_Orient orient): +elm_object_tooltip_orient_set(self.obj, orient) +def tooltip_orient_get(self): +return elm_object_tooltip_orient_get(self.obj) + property tooltip_window_mode: def __get__(self): return bool(elm_object_tooltip_window_mode_get(self.obj)) diff --git a/efl/elementary/object.py b/efl/elementary/object.py index 1345a87..3558eb9 100644 --- a/efl/elementary/object.py +++ b/efl/elementary/object.py @@ -34,3 +34,15 @@ from . import ELM_XDND_ACTION_ASK from . import ELM_XDND_ACTION_LIST from . import ELM_XDND_ACTION_LINK from . import ELM_XDND_ACTION_DESCRIPTION + +from . import ELM_TOOLTIP_ORIENT_NONE +from . import ELM_TOOLTIP_ORIENT_TOP_LEFT +from . import ELM_TOOLTIP_ORIENT_TOP +from . import ELM_TOOLTIP_ORIENT_TOP_RIGHT +from . import ELM_TOOLTIP_ORIENT_LEFT +from . import ELM_TOOLTIP_ORIENT_CENTER +from . import ELM_TOOLTIP_ORIENT_RIGHT +from . import ELM_TOOLTIP_ORIENT_BOTTOM_LEFT +from . import ELM_TOOLTIP_ORIENT_BOTTOM +from . import ELM_TOOLTIP_ORIENT_BOTTOM_RIGHT +from . import ELM_TOOLTIP_ORIENT_LAST diff --git a/efl/elementary/object_cdef.pxi b/efl/elementary/object_cdef.pxi index 8e986d7..476444c 100644 --- a/efl/elementary/object_cdef.pxi +++ b/efl/elementary/object_cdef.pxi @@ -77,6 +77,20 @@ cdef extern from Elementary.h: ctypedef enum Elm_Xdnd_Action: pass +cpdef enum Elm_Tooltip_Orient: + ELM_TOOLTIP_ORIENT_NONE + ELM_TOOLTIP_ORIENT_TOP_LEFT + ELM_TOOLTIP_ORIENT_TOP + ELM_TOOLTIP_ORIENT_TOP_RIGHT + ELM_TOOLTIP_ORIENT_LEFT + ELM_TOOLTIP_ORIENT_CENTER + ELM_TOOLTIP_ORIENT_RIGHT + ELM_TOOLTIP_ORIENT_BOTTOM_LEFT + ELM_TOOLTIP_ORIENT_BOTTOM + ELM_TOOLTIP_ORIENT_BOTTOM_RIGHT + ELM_TOOLTIP_ORIENT_LAST +ctypedef enum Elm_Tooltip_Orient: +pass ctypedef struct Elm_Theme @@ -203,6 +217,8 @@ cdef extern from Elementary.h:
[EGIT] [tools/enventor] master 01/01: templates: Change sound file name.
jaehyun pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=8b3ef719f0a1297ea2fa24fc055f364b3d49c8f9 commit 8b3ef719f0a1297ea2fa24fc055f364b3d49c8f9 Author: Jaehyun Cho jae_hyun@samsung.com Date: Wed Aug 12 16:43:05 2015 +0900 templates: Change sound file name. --- data/sounds/{kbd-tap.wav = ENVENTOR_EMBEDDED_TAP.wav} | Bin data/sounds/Makefile.am| 2 +- data/templates/sound.edc | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/sounds/kbd-tap.wav b/data/sounds/ENVENTOR_EMBEDDED_TAP.wav similarity index 100% rename from data/sounds/kbd-tap.wav rename to data/sounds/ENVENTOR_EMBEDDED_TAP.wav diff --git a/data/sounds/Makefile.am b/data/sounds/Makefile.am index b5e47f3..875471a 100644 --- a/data/sounds/Makefile.am +++ b/data/sounds/Makefile.am @@ -1,6 +1,6 @@ MAINTAINERCLEANFILES = Makefile.in filesdir = $(datadir)/$(PACKAGE)/sounds files_DATA = \ -kbd-tap.wav +ENVENTOR_EMBEDDED_TAP.wav EXTRA_DIST = $(files_DATA) diff --git a/data/templates/sound.edc b/data/templates/sound.edc index af30411..485dd02 100644 --- a/data/templates/sound.edc +++ b/data/templates/sound.edc @@ -2,7 +2,7 @@ collections { base_scale: 1.0; sounds { sample { name: sound LOSSY 64; - source: kbd-tap.wav; + source: ENVENTOR_EMBEDDED_TAP.wav; } } group { main; --
[EGIT] [core/efl] master 04/04: evas render 2 - tiled rouding of updates to keep number regions down
raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=40fc5a928219daaaf461d6cdeabd558a38a5463f commit 40fc5a928219daaaf461d6cdeabd558a38a5463f Author: Carsten Haitzler (Rasterman) ras...@rasterman.com Date: Wed Aug 12 20:06:30 2015 +0900 evas render 2 - tiled rouding of updates to keep number regions down tile to 16x16 (we can cahnge) to keep number of update rects down/minimal with render2 --- src/lib/evas/canvas/render2/evas_render2_th_main.c | 32 ++ src/lib/evas/canvas/render2/region.c | 11 +++- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/src/lib/evas/canvas/render2/evas_render2_th_main.c b/src/lib/evas/canvas/render2/evas_render2_th_main.c index 7791229..1379b88 100644 --- a/src/lib/evas/canvas/render2/evas_render2_th_main.c +++ b/src/lib/evas/canvas/render2/evas_render2_th_main.c @@ -167,6 +167,30 @@ _evas_render2_th_main_obj_process(Evas_Public_Data *e, offx, offy, l); } +static Region * +_evas_render2_regions_merge(Region *region) +{ + Region *region2; + Box *rects; + int num, i; + int tsize = 16; + + region2 = region_new(); + rects = region_rects(region); + num = region_rects_num(region); + for (i = 0; i num; i++) + { +region_rect_add +(region2, + (rects[i].x1 / tsize) * tsize, + (rects[i].y1 / tsize) * tsize, + (((rects[i].x2 - rects[i].x1) + tsize - 1) / tsize) * tsize, + (((rects[i].y2 - rects[i].y1) + tsize - 1) / tsize) * tsize); + } + region_free(region); + return region2; +} + static void _evas_render2_th_main_do(Eo *eo_e, Evas_Public_Data *e) { @@ -207,6 +231,8 @@ _evas_render2_th_main_do(Eo *eo_e, Evas_Public_Data *e) t = get_time() - t; printf(T: update generation: ); out_time(t); + updates = _evas_render2_regions_merge(updates); + rects = region_rects(updates); rects_num = region_rects_num(updates); for (i = 0; i rects_num; i++) @@ -214,6 +240,8 @@ _evas_render2_th_main_do(Eo *eo_e, Evas_Public_Data *e) rect = malloc(sizeof(Eina_Rectangle)); if (rect) { + if (rects[i].x2 e-output.w) rects[i].x2 = e-output.w; + if (rects[i].y2 e-output.h) rects[i].y2 = e-output.h; rect-x = rects[i].x1; rect-y = rects[i].y1; rect-w = rects[i].x2 - rects[i].x1; @@ -223,6 +251,10 @@ _evas_render2_th_main_do(Eo *eo_e, Evas_Public_Data *e) updates_list = eina_list_append(updates_list, rect); } } + t = get_time() - t; + printf(T: merge updates: ); out_time(t); + + // ... now render every update region region_free(updates); e-changed = EINA_FALSE; diff --git a/src/lib/evas/canvas/render2/region.c b/src/lib/evas/canvas/render2/region.c index 70fb39b..30999d9 100644 --- a/src/lib/evas/canvas/render2/region.c +++ b/src/lib/evas/canvas/render2/region.c @@ -744,8 +744,6 @@ region_rects(Region *region) Eina_Bool region_copy(Region *dest, Region *src) { - if (dest == src) return EINA_TRUE; - dest-last_del.w = 0; dest-last_add.w = 0; @@ -827,9 +825,6 @@ region_add(Region *dest, Region *source) // Return EINA_TRUE if some overlap between dest, source // checks all the simple cases - // Region 1 and 2 are the same - if (dest == source) return region_copy(dest, dest); - dest-last_del.w = 0; dest-last_add.w = 0; @@ -1343,7 +1338,7 @@ region_point_inside(Region *region, int x, int y, Box *box) if ((!num) || (!INBOX(region-bound, x, y))) return EINA_FALSE; if (num == 1) { -*box = region-bound; +if (box) *box = region-bound; return EINA_TRUE; } for (bx = PIXREGION_BOXPTR(region), bxend = bx + num; bx != bxend; bx++) @@ -1351,7 +1346,7 @@ region_point_inside(Region *region, int x, int y, Box *box) if (y = bx-y2) continue; // not there yet if ((y bx-y1) || (x bx-x1)) break; // missed it if (x = bx-x2) continue; // not there yet -*box = *bx; +if (box) *box = *bx; return EINA_TRUE; } return EINA_FALSE; @@ -1370,6 +1365,8 @@ region_empty(Region *region) region-bound.x2 = region-bound.x1; region-bound.y2 = region-bound.y1; region-data = _region_emptydata; + region-last_del.w = 0; + region-last_add.w = 0; } Box * --
[EGIT] [core/efl] master 02/04: efreet - fix efreetd kill and start with clean cache case blank icons
raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=e89253e59702442ee41c55975323e57a37fd353c commit e89253e59702442ee41c55975323e57a37fd353c Author: Carsten Haitzler (Rasterman) ras...@rasterman.com Date: Tue Aug 11 12:56:02 2015 +0900 efreet - fix efreetd kill and start with clean cache case blank icons if you kill efreetd ANd delete all the caches, the restart of efreetd will lose all icons until an app re-registeres icon extensions and it can scan all icons .. and then app has to actually get the right upodate events and do the update properly when this happens. this fixes that scenario @fix --- src/lib/efreet/efreet_cache.c | 114 src/lib/efreet/efreet_icon.c| 10 +++- src/lib/efreet/efreet_private.h | 1 + 3 files changed, 65 insertions(+), 60 deletions(-) diff --git a/src/lib/efreet/efreet_cache.c b/src/lib/efreet/efreet_cache.c index bba77d4..88fda2e 100644 --- a/src/lib/efreet/efreet_cache.c +++ b/src/lib/efreet/efreet_cache.c @@ -146,10 +146,63 @@ _cb_server_del(void *data EINA_UNUSED, int type EINA_UNUSED, void *event) s = efreet_language_get(); if (s) len = strlen(s); ecore_ipc_server_send(ipc, 1, 0, 0, 0, 0, s, len); +efreet_icon_extensions_refresh(); } return ECORE_CALLBACK_DONE; } +static void +_icon_desktop_cache_update_event_add(int event_type) +{ + Efreet_Event_Cache_Update *ev; + Efreet_Old_Cache *d = NULL; + Eina_List *l = NULL; + + efreet_cache_desktop_close(); + + ev = NEW(Efreet_Event_Cache_Update, 1); + if (!ev) return; + + IF_RELEASE(theme_name); + + // Save all old caches + d = NEW(Efreet_Old_Cache, 1); + if (d) + { +d-hash = themes; +d-ef = icon_theme_cache; +l = eina_list_append(l, d); + } + + d = NEW(Efreet_Old_Cache, 1); + if (d) + { +d-hash = icons; +d-ef = icon_cache; +l = eina_list_append(l, d); + } + + d = NEW(Efreet_Old_Cache, 1); + if (d) + { +d-hash = fallbacks; +d-ef = fallback_cache; +l = eina_list_append(l, d); + } + + // Create new empty caches + themes = eina_hash_string_superfast_new(EINA_FREE_CB(efreet_cache_icon_theme_free)); + icons = eina_hash_string_superfast_new(EINA_FREE_CB(efreet_cache_icon_free)); + fallbacks = eina_hash_string_superfast_new(EINA_FREE_CB(efreet_cache_icon_fallback_free)); + + icon_theme_cache = NULL; + icon_cache = NULL; + fallback_cache = NULL; + + // Send event + ecore_event_add(event_type, ev, icon_cache_update_free, l); +} + static Eina_Bool _cb_server_data(void *data EINA_UNUSED, int type EINA_UNUSED, void *event) { @@ -162,69 +215,14 @@ _cb_server_data(void *data EINA_UNUSED, int type EINA_UNUSED, void *event) else if (e-major == 2) // icon cache update { if (e-minor == 1) - { - Efreet_Event_Cache_Update *ev; - - efreet_cache_desktop_close(); - - ev = NEW(Efreet_Event_Cache_Update, 1); - if (ev) -ecore_event_add(EFREET_EVENT_DESKTOP_CACHE_UPDATE, ev, NULL, NULL); - } + _icon_desktop_cache_update_event_add(EFREET_EVENT_ICON_CACHE_UPDATE); else - ecore_event_add(EFREET_EVENT_DESKTOP_CACHE_BUILD, NULL, NULL, NULL); + ecore_event_add(EFREET_EVENT_ICON_CACHE_UPDATE, NULL, NULL, NULL); } else if (e-major == 3) // desktop cache update { -Efreet_Event_Cache_Update *ev = NULL; -Efreet_Old_Cache *d = NULL; -Eina_List *l = NULL; - -if (e-minor == 1) - { - ev = NEW(Efreet_Event_Cache_Update, 1); - if (!ev) goto error; - - IF_RELEASE(theme_name); - - // Save all old caches - d = NEW(Efreet_Old_Cache, 1); - if (!d) goto error; - d-hash = themes; - d-ef = icon_theme_cache; - l = eina_list_append(l, d); - - d = NEW(Efreet_Old_Cache, 1); - if (!d) goto error; - d-hash = icons; - d-ef = icon_cache; - l = eina_list_append(l, d); - - d = NEW(Efreet_Old_Cache, 1); - if (!d) goto error; - d-hash = fallbacks; - d-ef = fallback_cache; - l = eina_list_append(l, d); - - // Create new empty caches - themes = eina_hash_string_superfast_new(EINA_FREE_CB(efreet_cache_icon_theme_free)); - icons = eina_hash_string_superfast_new(EINA_FREE_CB(efreet_cache_icon_free)); - fallbacks = eina_hash_string_superfast_new(EINA_FREE_CB(efreet_cache_icon_fallback_free)); - - icon_theme_cache = NULL; - icon_cache = NULL; - fallback_cache = NULL; - - // Send event - ecore_event_add(EFREET_EVENT_ICON_CACHE_UPDATE, ev,
[EGIT] [core/efl] master 01/04: edje - signal matcvhes - fix null deref when patterns is NULL
raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=761d6fa192b3912ef2ae787d955f605e4e657536 commit 761d6fa192b3912ef2ae787d955f605e4e657536 Author: Carsten Haitzler (Rasterman) ras...@rasterman.com Date: Sun Aug 9 10:29:28 2015 +0900 edje - signal matcvhes - fix null deref when patterns is NULL ok. i found this once-ever-seen thing where Edje_Signal_Callback_Matches has ALL fields NULL/0 except refcount was huge (like 13834275 or something like that). i can't see why at the moment, but defend against it to avoid crashes here by handling these being null --- src/lib/edje/edje_program.c | 62 ++--- src/lib/edje/edje_signal.c | 3 +-- 2 files changed, 32 insertions(+), 33 deletions(-) diff --git a/src/lib/edje/edje_program.c b/src/lib/edje/edje_program.c index bf719a0..0c97e21 100644 --- a/src/lib/edje/edje_program.c +++ b/src/lib/edje/edje_program.c @@ -1442,47 +1442,47 @@ _edje_emit_cb(Edje *ed, const char *sig, const char *src, Edje_Message_Signal_Da ed-walking_callbacks++; ssp = _edje_signal_callback_patterns_ref(ed-callbacks); + if (ssp) + { +m = (Edje_Signal_Callback_Matches *)ed-callbacks-matches; +EINA_REFCOUNT_REF(m); - m = (Edje_Signal_Callback_Matches *)ed-callbacks-matches; - EINA_REFCOUNT_REF(m); - - callback_extra_data = (data) ? data-data : NULL; +callback_extra_data = (data) ? data-data : NULL; - if (eina_inarray_count(ssp-u.callbacks.globing)) - r = edje_match_callback_exec(ssp, - m-matches, - sig, - src, - ed, - prop); +if (eina_inarray_count(ssp-u.callbacks.globing)) + r = edje_match_callback_exec(ssp, + m-matches, + sig, + src, + ed, + prop); - if (!r) - goto break_prog; +if (!r) goto break_prog; - match = edje_match_signal_source_hash_get(sig, src, - ssp-exact_match); - if (match) - { -const Edje_Signal_Callback_Match *cb; -unsigned int *i; +match = edje_match_signal_source_hash_get(sig, src, + ssp-exact_match); +if (match) + { + const Edje_Signal_Callback_Match *cb; + unsigned int *i; -EINA_INARRAY_FOREACH(match, i) -{ - if (ed-callbacks-flags[*i].delete_me) continue; - if ((prop) (ed-callbacks-flags[*i].propagate)) continue; + EINA_INARRAY_FOREACH(match, i) + { + if (ed-callbacks-flags[*i].delete_me) continue; + if ((prop) (ed-callbacks-flags[*i].propagate)) continue; - cb = m-matches[*i]; + cb = m-matches[*i]; - cb-func((void *)ed-callbacks-custom_data[*i], ed-obj, sig, src); - if (_edje_block_break(ed)) - break; -} - } + cb-func((void *)ed-callbacks-custom_data[*i], ed-obj, sig, src); + if (_edje_block_break(ed)) break; + } + } break_prog: - _edje_signal_callback_matches_unref(m); +_edje_signal_callback_matches_unref(m); - _edje_signal_callback_patterns_unref(ssp); +_edje_signal_callback_patterns_unref(ssp); + } ed-walking_callbacks--; diff --git a/src/lib/edje/edje_signal.c b/src/lib/edje/edje_signal.c index e92787f..ccefc7f 100644 --- a/src/lib/edje/edje_signal.c +++ b/src/lib/edje/edje_signal.c @@ -406,8 +406,7 @@ _edje_signal_callback_patterns_ref(const Edje_Signal_Callback_Group *gp) got_it: tmp = (Edje_Signal_Callback_Matches *)gp-matches; - - EINA_REFCOUNT_REF(tmp-patterns); + if (tmp-patterns) EINA_REFCOUNT_REF(tmp-patterns); return gp-matches-patterns; } --
[EGIT] [core/elementary] master 01/01: map: convert docs
q66 pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=99d1e3e9923f3aab3e83fa8ed9decf4858a2d9b5 commit 99d1e3e9923f3aab3e83fa8ed9decf4858a2d9b5 Author: Daniel Kolesa d.kol...@osg.samsung.com Date: Wed Aug 12 17:12:16 2015 +0100 map: convert docs --- src/lib/elm_map.eo | 881 - 1 file changed, 329 insertions(+), 552 deletions(-) diff --git a/src/lib/elm_map.eo b/src/lib/elm_map.eo index 9c6e9dc..e0d682a 100644 --- a/src/lib/elm_map.eo +++ b/src/lib/elm_map.eo @@ -6,770 +6,547 @@ class Elm.Map (Elm.Widget, Elm_Interface_Scrollable, methods { @property zoom { set { -/*@ -Set the zoom level of the map. +[[Set the zoom level of the map. -This sets the zoom level. + This sets the zoom level. -It will respect limits defined by elm_map_zoom_min_set() and -elm_map_zoom_max_set(). + It will respect limits defined by @.zoom_min.set and + @.zoom_max.set. -By default these values are 0 (world map) and 18 (maximum zoom). + By default these values are 0 (world map) and 18 (maximum zoom). -This function should be used when zoom mode is set to #ELM_MAP_ZOOM_MODE_MANUAL. -This is the default mode, and can be set with elm_map_zoom_mode_set(). - -@see elm_map_zoom_mode_set() -@see elm_map_zoom_get() - -@ingroup Map */ + This function should be used when zoom mode is set to + #ELM_MAP_ZOOM_MODE_MANUAL. This is the default mode, and + can be set with @.zoom_mode.set. +]] } get { -/*@ -Get the zoom level of the map. - -@return The current zoom level. - -This returns the current zoom level of the map object. +[[Get the zoom level of the map. -Note that if you set the fill mode to other than #ELM_MAP_ZOOM_MODE_MANUAL -(which is the default), the zoom level may be changed at any time by the -map object itself to account for map size and map viewport size. + This returns the current zoom level of the map object. -@see elm_map_zoom_set() for details. - -@ingroup Map */ + Note that if you set the fill mode to other than + #ELM_MAP_ZOOM_MODE_MANUAL (which is the default), the zoom + level may be changed at any time by the map object itself + to account for map size and map viewport size. +]] } values { -zoom: int; /*@ The zoom level to set. */ +zoom: int; [[The zoom level.]] } } @property paused { set { -/*@ -Pause or unpause the map. - -This sets the paused state to on ($true) or off ($false) -for map. +[[Pause or unpause the map. -The default is off. + This sets the paused state to on ($true) or off ($false) + for map. -This will stop zooming using animation, changing zoom levels will -change instantly. This will stop any existing animations that are running. + The default is off. -@see elm_map_paused_get() - -@ingroup Map */ + This will stop zooming using animation, changing zoom levels + will change instantly. This will stop any existing animations + that are running. +]] } get { -/*@ -Get a value whether map is paused or not. - -@return $true means map is pause. $false indicates -it is not. +[[Get a value whether map is paused or not. -This gets the current paused state for the map object. - -@see elm_map_paused_set() for details. - -@ingroup Map */ + This gets the current paused state for the map object. +]] } values { -paused: bool; /*@ Use $true to pause the map $obj or $false -to unpause it. */ +paused: bool; [[Use $true to pause the map $obj or $false +to unpause it.]] } } @property wheel_disabled { set { -/*@ -Enable or disable mouse wheel to be used to zoom in / out the map. - -Mouse wheel can be used for the user to zoom in or zoom out the map. - -Wheel is enabled by default. +[[Enable or disable mouse wheel to be used to zoom in / out the + map. -@see elm_map_wheel_disabled_get() - -@ingroup Map */ + Wheel is enabled by default. +]] } get
[EGIT] [core/elementary] master 01/01: datetime: convert docs
q66 pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=a5c647037730cfb25b5bcc8a3593125f24c06f32 commit a5c647037730cfb25b5bcc8a3593125f24c06f32 Author: Daniel Kolesa d.kol...@osg.samsung.com Date: Wed Aug 12 13:45:30 2015 +0100 datetime: convert docs --- src/lib/elm_datetime.eo | 289 +--- 1 file changed, 127 insertions(+), 162 deletions(-) diff --git a/src/lib/elm_datetime.eo b/src/lib/elm_datetime.eo index c5a2b44..d40bd35 100644 --- a/src/lib/elm_datetime.eo +++ b/src/lib/elm_datetime.eo @@ -19,18 +19,23 @@ class Elm.Datetime (Elm.Layout) methods { @property format { set { -/*@ -Set the datetime format. Format is a combination of allowed Libc date format -specifiers like: %b %d, %Y %I : %M %p. +[[Set the datetime format. Format is a combination of allowed + Libc date format specifiers like: %b %d, %Y %I : %M %p. -Maximum allowed format length is 64 chars. + Maximum allowed format length is 64 chars. -Format can include separators for each individual datetime field except -for AM/PM field. + Format can include separators for each individual datetime + field except for AM/PM field. -Each separator can be a maximum of 6 UTF-8 bytes. -Space is also taken as a separator. + Each separator can be a maximum of 6 UTF-8 bytes. + Space is also taken as a separator. + These specifiers can be arranged in any order and the widget + will display the fields accordingly. + + Default format is taken as per the system locale settings. +]] +/* FIXME-doc Following are the allowed set of format specifiers for each datetime field. @b %%Y : The year as a decimal number including the century. @@ -84,239 +89,199 @@ class Elm.Datetime (Elm.Layout) @b %%D : The date using the format %%m/%%d/%%y. @b %%F : The date using the format %%Y-%%m-%%d. - -These specifiers can be arranged in any order and the widget will display the -fields accordingly. - -Default format is taken as per the system locale settings. - -@see elm_datetime_format_get() -@ingroup Datetime */ +*/ } get { -/*@ Get the datetime format. */ +[[Get the datetime format.]] } values { -fmt: const(char)* @nullable; /*@ The datetime format */ +fmt: const(char)* @nullable; [[The datetime format.]] } } field_limit_set { - /*@ - @brief Set the field limits of a field. + [[Set the field limits of a field. - Limits can be set to individual fields, independently, except for AM/PM field. - Any field can display the values only in between these Minimum and Maximum limits unless - the corresponding time value is restricted from MinTime to MaxTime. - That is, Min/ Max field limits always works under the limitations of MinTime/ MaxTime. - - There is no provision to set the limits of AM/PM field. - - @see elm_datetime_field_limit_set() - @ingroup Datetime */ + Limits can be set to individual fields, independently, except + for AM/PM field. Any field can display the values only in between + these minimum and maximum limits unless the corresponding time + value is restricted from MinTime to MaxTime. That is, min/max + field limits always works under the limitations of mintime/maxtime. + There is no provision to set the limits of AM/PM field. + ]] params { -@in fieldtype: Elm.Datetime.Field_Type; /*@ Type of the field. #ELM_DATETIME_YEAR etc. */ -@in min: int; /*@ Reference to field's minimum value */ -@in max: int; /*@ Reference to field's maximum value */ +@in fieldtype: Elm.Datetime.Field_Type; [[Type of the field. #ELM_DATETIME_YEAR etc.]] +@in min: int; [[Reference to field's minimum value.]] +@in max: int; [[Reference to field's maximum value.]] } } field_limit_get @const { - /*@ - @brief Get the field limits of a field. - - Limits can be set to individual fields, independently, except for AM/PM field. - Any field can display the values only in between these Minimum and Maximum limits unless - the corresponding time value is restricted from MinTime to MaxTime. - That is, Min/ Max field limits always works under the limitations of MinTime/ MaxTime. + [[ Get the field limits of a field. - There is no provision to set the limits of AM/PM field. +
[EGIT] [core/enlightenment] master 01/01: enlightenment: Remove legacy unused e_pixmap_image_draw_done function
devilhorns pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=cb622b8a7ab9383c040c4745618bd68970e74a25 commit cb622b8a7ab9383c040c4745618bd68970e74a25 Author: Chris Michael cp.mich...@samsung.com Date: Wed Aug 12 14:19:47 2015 -0400 enlightenment: Remove legacy unused e_pixmap_image_draw_done function Signed-off-by: Chris Michael cp.mich...@samsung.com --- src/bin/e_pixmap.c | 15 --- 1 file changed, 15 deletions(-) diff --git a/src/bin/e_pixmap.c b/src/bin/e_pixmap.c index 2d5943e..48dc771 100644 --- a/src/bin/e_pixmap.c +++ b/src/bin/e_pixmap.c @@ -842,21 +842,6 @@ e_pixmap_image_draw(E_Pixmap *cp, const Eina_Rectangle *r) return EINA_FALSE; } -E_API void -e_pixmap_image_draw_done(E_Pixmap *cp) -{ - EINA_SAFETY_ON_NULL_RETURN(cp); - -#ifdef HAVE_WAYLAND - struct wl_shm_buffer *shm_buffer; - - shm_buffer = wl_shm_buffer_get(cp-buffer_ref.buffer-resource); - if (!shm_buffer) return; - - wl_shm_buffer_end_access(shm_buffer); -#endif -} - E_API void e_pixmap_image_opaque_set(E_Pixmap *cp, int x, int y, int w, int h) { --
[EGIT] [apps/express] master 03/08: express: Start on media support for movies
devilhorns pushed a commit to branch master. http://git.enlightenment.org/apps/express.git/commit/?id=fd8e9efa2bf049aab9d63243b4e10c30cc677894 commit fd8e9efa2bf049aab9d63243b4e10c30cc677894 Author: Chris Michael cp.mich...@samsung.com Date: Wed Aug 12 12:26:07 2015 -0400 express: Start on media support for movies Signed-off-by: Chris Michael cp.mich...@samsung.com --- src/bin/media.c | 285 ++-- 1 file changed, 277 insertions(+), 8 deletions(-) diff --git a/src/bin/media.c b/src/bin/media.c index 25d7a4d..e020d70 100644 --- a/src/bin/media.c +++ b/src/bin/media.c @@ -33,6 +33,8 @@ struct _Media Ecore_Timer *anim_tmr; Ecore_Timer *smooth_tmr; + Ecore_Job *restart_job; + Media_Type type; struct @@ -44,6 +46,7 @@ struct _Media Eina_Bool nosmooth : 1; Eina_Bool downloading : 1; Eina_Bool queued : 1; + Eina_Bool pos_drag : 1; }; static Evas_Smart *_smart = NULL; @@ -581,6 +584,269 @@ _smooth_handler(Evas_Object *obj) } static void +_mov_type_calc(Media *sd, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h) +{ + if (!sd) return; + + evas_object_move(sd-o_ctrl, x, y); + evas_object_resize(sd-o_ctrl, w, h); + + emotion_object_size_get(sd-o_img, (sd-iw), (sd-ih)); + if ((w = 0) || (h = 0) || (sd-iw = 0) || (sd-ih = 0)) + { +w = 1; +h = 1; + } + else + { +int iw = 1, ih = 1; +double ratio; + +ratio = emotion_object_ratio_get(sd-o_img); +if (ratio 0.0) sd-iw = (sd-ih * ratio) + 0.5; +else ratio = (double)sd-iw / (double)sd-ih; + +if ((sd-mode MEDIA_SIZE_MASK) == MEDIA_BG) + { + iw = w; + ih = w / ratio; + if (ih h) + { + ih = h; + iw = h * ratio; + if (iw w) iw = w; + } + } +else if ((sd-mode MEDIA_SIZE_MASK) == MEDIA_POP) + { + iw = w; + ih = w / ratio; + if (ih h) + { + ih = h; + iw = h * ratio; + if (iw w) iw = w; + } + } +else if ((sd-mode MEDIA_SIZE_MASK) == MEDIA_STRETCH) + { + iw = w; + ih = h; + } +x += ((w - iw) / 2); +y += ((h - ih) / 2); +w = iw; +h = ih; + } + + evas_object_move(sd-o_img, x, y); + evas_object_resize(sd-o_img, w, h); +} + +static void +_mov_cb_frame_decode(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Media *sd; + Evas_Coord x, y, w, h; + double len, pos; + + if (!(sd = evas_object_smart_data_get(data))) return; + + evas_object_geometry_get(data, x, y, w, h); + evas_object_show(sd-o_img); + evas_object_show(sd-o_clip); + + _mov_type_calc(sd, x, y, w, h); + + if (sd-pos_drag) return; + + len = emotion_object_play_length_get(sd-o_img); + pos = emotion_object_position_get(sd-o_img); + pos /= len; + + edje_object_part_drag_value_set(sd-o_ctrl, express.posdrag, pos, pos); +} + +static void +_mov_cb_frame_resize(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Media *sd; + Evas_Coord x, y, w, h; + + if (!(sd = evas_object_smart_data_get(data))) return; + evas_object_geometry_get(data, x, y, w, h); + _mov_type_calc(sd, x, y, w, h); +} + +static void +_mov_cb_restart(void *data) +{ + Media *sd; + + if (!(sd = evas_object_smart_data_get(data))) return; + sd-restart_job = NULL; + emotion_object_position_set(sd-o_img, 0.0); + emotion_object_play_set(sd-o_img, EINA_TRUE); +} + +static void +_mov_cb_decode_stop(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Media *sd; + + if (!(sd = evas_object_smart_data_get(data))) return; + if (sd-restart_job) ecore_job_del(sd-restart_job); + sd-restart_job = ecore_job_add(_mov_cb_restart, data); + evas_object_smart_callback_call(data, loop, NULL); +} + +/* static void */ +/* _mov_cb_progress(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) */ +/* { */ + +/* } */ + +static void +_mov_cb_play(void *data, Evas_Object *obj EINA_UNUSED, const char *emission EINA_UNUSED, const char *src EINA_UNUSED) +{ + _media_play_set(data, EINA_TRUE); +} + +static void +_mov_cb_pause(void *data, Evas_Object *obj EINA_UNUSED, const char *emission EINA_UNUSED, const char *src EINA_UNUSED) +{ + _media_play_set(data, EINA_FALSE); +} + +static void +_mov_cb_stop(void *data, Evas_Object *obj EINA_UNUSED, const char *emission EINA_UNUSED, const char *src EINA_UNUSED) +{ + _media_stop(data); +} + +static void +_mov_cb_vol(void *data, Evas_Object *obj EINA_UNUSED, const char *emission EINA_UNUSED, const char *src EINA_UNUSED) +{ + Media *sd; + double vx, vy; + + if (!(sd = evas_object_smart_data_get(data))) return; + +
[EGIT] [apps/express] master 05/08: express: Add media control part to express default theme
devilhorns pushed a commit to branch master. http://git.enlightenment.org/apps/express.git/commit/?id=4b45acb50cf59347d5808b5ac1a190b7739460d4 commit 4b45acb50cf59347d5808b5ac1a190b7739460d4 Author: Chris Michael cp.mich...@samsung.com Date: Wed Aug 12 13:02:01 2015 -0400 express: Add media control part to express default theme Signed-off-by: Chris Michael cp.mich...@samsung.com --- data/themes/default.edc | 326 +++- 1 file changed, 325 insertions(+), 1 deletion(-) diff --git a/data/themes/default.edc b/data/themes/default.edc index c82896e..6fd64ee 100644 --- a/data/themes/default.edc +++ b/data/themes/default.edc @@ -2007,6 +2007,7 @@ collections } /* TODO: bell */ + /* TODO: popmedia */ } programs { @@ -3656,6 +3657,329 @@ collections target: fade; } } -} + } + + group + { +name: express/mediactrl; +images + { + image: media_bg.png COMP; + image: media_play.png COMP; + image: media_stop.png COMP; + image: media_pause.png COMP; + image: media_line.png COMP; + image: media_knob_vol.png COMP; + image: media_knob_pos.png COMP; + } +parts + { + part + { + name: clip; + type: RECT; + mouse_events: 0; + description +{ + state: default 0.0; + rel1.to: background; + rel2.to: background; +} + } + part + { + name: background; + clip_to: clip; + description +{ + state: default 0.0; + image.normal: media_bg.png; + image.border: 11 11 11 11; + min: 24 24; + max: 24 24; + align: 1.0 0.0; +} + description +{ + state: expanded 0.0; + inherit: default 0.0; + min: 216 24; + max: 216 24; +} + } + part + { + name: play; + mouse_events: 1; + repeat_events: 1; + clip_to: clip; + description +{ + state: default 0.0; + image.normal: media_pause.png; + max: 24 24; + align: 1.0 0.0; +} + description +{ + state: paused 0.0; + inherit: default 0.0; + image.normal: media_play.png; +} + } + part + { + name: stop; + mouse_events: 1; + repeat_events: 1; + clip_to: clip; + description +{ + state: default 0.0; + image.normal: media_stop.png; + max: 24 24; + rel1.to: play; + rel1.offset: -16 0; + rel2.to: play; + rel2.offset: -16 0; +} + } + part + { + name: posline; + mouse_events: 1; + repeat_events: 1; + clip_to: clip; + description +{ + state: default 0.0; + image.normal: media_line.png; + image.border: 15 15 0 0; + min: 90 14; + max: 90 14; + rel1.to: stop; + rel1.offset: -25 0; + rel2.to: stop; + rel2.offset: -90 0; +} + } + part + { + name: express.posdrag; + mouse_events: 0; + repeat_events: 1; + clip_to: clip; + dragable +{ + confine: posline; + x: 1 1 0; + y: 0 0 0; +} + description +{ + state: default 0.0; + image.normal: media_knob_pos.png; + min: 14 14; + max: 14 14; +} +
[EGIT] [core/enlightenment] master 01/02: force copy rendering for argb wayland clients
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=f29410b0840b753d20f687e7f37d16bbca1f7b49 commit f29410b0840b753d20f687e7f37d16bbca1f7b49 Author: Mike Blumenkrantz zm...@osg.samsung.com Date: Wed Aug 12 14:12:04 2015 -0400 force copy rendering for argb wayland clients wayland protocol for shm handling is broken for now and I can't fix real issues because of the constant crashing when buffers disappear randomly --- src/bin/e_comp_object.c | 10 +- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index b812cbc..c683e48 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -3473,7 +3473,15 @@ e_comp_object_render(Evas_Object *obj) RENDER_DEBUG(UPDATE [%p] %i %i %ix%i, cw-ec, r-x, r-y, r-w, r-h); } /* set pixel data */ -evas_object_image_data_set(cw-obj, pix); +if (e_comp-comp_type == E_PIXMAP_TYPE_WL) + { +#warning FIXME BROKEN WAYLAND SHM BUFFER PROTOCOL + evas_object_image_data_copy_set(cw-obj, pix); + pix = evas_object_image_data_get(cw-obj, 0); + evas_object_image_data_set(cw-obj, pix); + } +else + evas_object_image_data_set(cw-obj, pix); EINA_LIST_FOREACH(cw-obj_mirror, l, o) { evas_object_image_data_set(o, pix); --
[EGIT] [apps/express] master 08/08: express: Disable Color config options in config toolbar
devilhorns pushed a commit to branch master. http://git.enlightenment.org/apps/express.git/commit/?id=67bd8aa4919656f272494d131a7d91a00d83ab7a commit 67bd8aa4919656f272494d131a7d91a00d83ab7a Author: Chris Michael cp.mich...@samsung.com Date: Wed Aug 12 13:18:10 2015 -0400 express: Disable Color config options in config toolbar Summary: Disabling option to config colors (for now) as it's not implemented yet anyway Signed-off-by: Chris Michael cp.mich...@samsung.com --- src/bin/options.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/options.c b/src/bin/options.c index f2cc944..e19cf3a 100644 --- a/src/bin/options.c +++ b/src/bin/options.c @@ -172,7 +172,7 @@ _options_toggle(Evas_Object *win, Evas_Object *base, Evas_Object *grid, void (*c elm_toolbar_item_selected_set(o_itm, EINA_TRUE); TB_APPEND(preferences-desktop-font, Font, FONT); -TB_APPEND(preferences-desktop-theme, Colors, COLORS); +/* TB_APPEND(preferences-desktop-theme, Colors, COLORS); */ TB_APPEND(video-display, Video, VIDEO); TB_APPEND(preferences-system-network, Networks, NETWORKS); #undef TB_APPEND --
[EGIT] [apps/express] master 06/08: express: Add config options for video engine used for movie media playback
devilhorns pushed a commit to branch master. http://git.enlightenment.org/apps/express.git/commit/?id=b045e197da7a6c9fb0698b7e31e438ad7b6658df commit b045e197da7a6c9fb0698b7e31e438ad7b6658df Author: Chris Michael cp.mich...@samsung.com Date: Wed Aug 12 13:17:20 2015 -0400 express: Add config options for video engine used for movie media playback Signed-off-by: Chris Michael cp.mich...@samsung.com --- src/bin/options_video.c | 106 +++- 1 file changed, 104 insertions(+), 2 deletions(-) diff --git a/src/bin/options_video.c b/src/bin/options_video.c index dbf8833..9d081df 100644 --- a/src/bin/options_video.c +++ b/src/bin/options_video.c @@ -1,10 +1,36 @@ #include private.h #include options_video.h +#include config.h + +static void +_cb_mute_changed(void *data EINA_UNUSED, Evas_Object *obj, void *event EINA_UNUSED) +{ + _ex_cfg-video.muted = elm_check_state_get(obj); + _config_save(); +} + +static void +_cb_visual_changed(void *data EINA_UNUSED, Evas_Object *obj, void *event EINA_UNUSED) +{ + _ex_cfg-video.visualized = elm_check_state_get(obj); + _config_save(); +} + +static void +_cb_module_changed(void *data EINA_UNUSED, Evas_Object *obj, void *event EINA_UNUSED) +{ + int v; + + v = elm_radio_value_get(obj); + if (v == _ex_cfg-video.module) return; + _ex_cfg-video.module = v; + _config_save(); +} void _options_video(Evas_Object *box, Evas_Object *grid EINA_UNUSED) { - Evas_Object *o_frame, *vbox, *o; + Evas_Object *o_frame, *vbox, *o, *o_mod; /* video frame */ o_frame = elm_frame_add(box); @@ -21,12 +47,88 @@ _options_video(Evas_Object *box, Evas_Object *grid EINA_UNUSED) elm_object_content_set(o_frame, vbox); evas_object_show(vbox); + o = elm_check_add(box); + WEIGHT_SET(o, EVAS_HINT_EXPAND, 0.0); + ALIGN_SET(o, EVAS_HINT_FILL, 0.5); + elm_object_text_set(o, Audio Muted); + elm_check_state_set(o, _ex_cfg-video.muted); + evas_object_smart_callback_add(o, changed, _cb_mute_changed, NULL); + elm_box_pack_end(vbox, o); + evas_object_show(o); + + o = elm_check_add(box); + WEIGHT_SET(o, EVAS_HINT_EXPAND, 0.0); + ALIGN_SET(o, EVAS_HINT_FILL, 0.5); + elm_object_text_set(o, Audio Visualized); + elm_check_state_set(o, _ex_cfg-video.visualized); + evas_object_smart_callback_add(o, changed, _cb_visual_changed, NULL); + elm_box_pack_end(vbox, o); + evas_object_show(o); + + o = elm_separator_add(box); + WEIGHT_SET(o, EVAS_HINT_EXPAND, 0.0); + ALIGN_SET(o, EVAS_HINT_FILL, 0.5); + elm_separator_horizontal_set(o, EINA_TRUE); + elm_box_pack_end(vbox, o); + evas_object_show(o); + o = elm_label_add(box); WEIGHT_SET(o, EVAS_HINT_EXPAND, 0.0); ALIGN_SET(o, 0.0, EVAS_HINT_FILL); - elm_object_text_set(o, Video Engine); + elm_object_text_set(o, Video Engine:); elm_box_pack_end(vbox, o); evas_object_show(o); + o_mod = o = elm_radio_add(box); + WEIGHT_SET(o, EVAS_HINT_EXPAND, 0.0); + ALIGN_SET(o, EVAS_HINT_FILL, 0.5); + elm_object_text_set(o, Automatic); + elm_radio_state_value_set(o, 0); + evas_object_smart_callback_add(o, changed, _cb_module_changed, NULL); + elm_box_pack_end(vbox, o); + evas_object_show(o); + + o = elm_radio_add(box); + WEIGHT_SET(o, EVAS_HINT_EXPAND, 0.0); + ALIGN_SET(o, EVAS_HINT_FILL, 0.5); + elm_object_text_set(o, Gstreamer); + elm_radio_state_value_set(o, 1); + elm_radio_group_add(o, o_mod); + evas_object_smart_callback_add(o, changed, _cb_module_changed, NULL); + elm_box_pack_end(vbox, o); + evas_object_show(o); + + o = elm_radio_add(box); + WEIGHT_SET(o, EVAS_HINT_EXPAND, 0.0); + ALIGN_SET(o, EVAS_HINT_FILL, 0.5); + elm_object_text_set(o, Xine); + elm_radio_state_value_set(o, 2); + elm_radio_group_add(o, o_mod); + evas_object_smart_callback_add(o, changed, _cb_module_changed, NULL); + elm_box_pack_end(vbox, o); + evas_object_show(o); + + o = elm_radio_add(box); + WEIGHT_SET(o, EVAS_HINT_EXPAND, 0.0); + ALIGN_SET(o, EVAS_HINT_FILL, 0.5); + elm_object_text_set(o, VLC); + elm_radio_state_value_set(o, 3); + elm_radio_group_add(o, o_mod); + evas_object_smart_callback_add(o, changed, _cb_module_changed, NULL); + elm_box_pack_end(vbox, o); + evas_object_show(o); + + o = elm_radio_add(box); + WEIGHT_SET(o, EVAS_HINT_EXPAND, 0.0); + ALIGN_SET(o, EVAS_HINT_FILL, 0.5); + elm_object_text_set(o, Gstreamer 1.X); + elm_radio_state_value_set(o, 4); + elm_radio_group_add(o, o_mod); + evas_object_smart_callback_add(o, changed, _cb_module_changed, NULL); + elm_box_pack_end(vbox, o); + evas_object_show(o); + + elm_radio_value_set(o, _ex_cfg-video.module); + elm_box_pack_end(box, o_frame); } --
[EGIT] [apps/express] master 04/08: express: Add images for media control to theme
devilhorns pushed a commit to branch master. http://git.enlightenment.org/apps/express.git/commit/?id=b63268e9d019c124965f80bcb8d6a78e0e3a9e37 commit b63268e9d019c124965f80bcb8d6a78e0e3a9e37 Author: Chris Michael cp.mich...@samsung.com Date: Wed Aug 12 12:31:07 2015 -0400 express: Add images for media control to theme Signed-off-by: Chris Michael cp.mich...@samsung.com --- data/themes/images/Makefile.am| 10 -- data/themes/images/media_bg.png | Bin 0 - 1171 bytes data/themes/images/media_knob_pos.png | Bin 0 - 660 bytes data/themes/images/media_knob_vol.png | Bin 0 - 693 bytes data/themes/images/media_line.png | Bin 0 - 471 bytes data/themes/images/media_pause.png| Bin 0 - 250 bytes data/themes/images/media_play.png | Bin 0 - 293 bytes data/themes/images/media_stop.png | Bin 0 - 243 bytes 8 files changed, 8 insertions(+), 2 deletions(-) diff --git a/data/themes/images/Makefile.am b/data/themes/images/Makefile.am index 84b56da..1b6745b 100644 --- a/data/themes/images/Makefile.am +++ b/data/themes/images/Makefile.am @@ -42,5 +42,11 @@ tab_shad_l1.png \ tab_shad_l2.png \ tab_shad_r0.png \ tab_shad_r1.png \ -tab_shad_r2.png - +tab_shad_r2.png \ +media_bg.png \ +media_play.png \ +media_stop.png \ +media_pause.png \ +media_line.png \ +media_knob_vol.png \ +media_knob_pos.png diff --git a/data/themes/images/media_bg.png b/data/themes/images/media_bg.png new file mode 100644 index 000..00642a2 Binary files /dev/null and b/data/themes/images/media_bg.png differ diff --git a/data/themes/images/media_knob_pos.png b/data/themes/images/media_knob_pos.png new file mode 100644 index 000..52b333d Binary files /dev/null and b/data/themes/images/media_knob_pos.png differ diff --git a/data/themes/images/media_knob_vol.png b/data/themes/images/media_knob_vol.png new file mode 100644 index 000..db8b273 Binary files /dev/null and b/data/themes/images/media_knob_vol.png differ diff --git a/data/themes/images/media_line.png b/data/themes/images/media_line.png new file mode 100644 index 000..96381ed Binary files /dev/null and b/data/themes/images/media_line.png differ diff --git a/data/themes/images/media_pause.png b/data/themes/images/media_pause.png new file mode 100644 index 000..ed5e7ba Binary files /dev/null and b/data/themes/images/media_pause.png differ diff --git a/data/themes/images/media_play.png b/data/themes/images/media_play.png new file mode 100644 index 000..5a924b4 Binary files /dev/null and b/data/themes/images/media_play.png differ diff --git a/data/themes/images/media_stop.png b/data/themes/images/media_stop.png new file mode 100644 index 000..727e0e2 Binary files /dev/null and b/data/themes/images/media_stop.png differ --
[EGIT] [apps/express] master 07/08: express: Re-enable Video options in config toolbar
devilhorns pushed a commit to branch master. http://git.enlightenment.org/apps/express.git/commit/?id=ef0fa3fb134265f8a82166c8bd6b49b63dcad8c8 commit ef0fa3fb134265f8a82166c8bd6b49b63dcad8c8 Author: Chris Michael cp.mich...@samsung.com Date: Wed Aug 12 13:17:39 2015 -0400 express: Re-enable Video options in config toolbar Signed-off-by: Chris Michael cp.mich...@samsung.com --- src/bin/options.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/options.c b/src/bin/options.c index 2710234..f2cc944 100644 --- a/src/bin/options.c +++ b/src/bin/options.c @@ -173,7 +173,7 @@ _options_toggle(Evas_Object *win, Evas_Object *base, Evas_Object *grid, void (*c TB_APPEND(preferences-desktop-font, Font, FONT); TB_APPEND(preferences-desktop-theme, Colors, COLORS); -/* TB_APPEND(video-display, Video, VIDEO); */ +TB_APPEND(video-display, Video, VIDEO); TB_APPEND(preferences-system-network, Networks, NETWORKS); #undef TB_APPEND --
[EGIT] [core/elementary] master 01/01: entry: fix since tag for entry_input_panel_show_on_demand_set()
ami pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=0c502c735f52d93a0a2fbd9af1cc52247299addd commit 0c502c735f52d93a0a2fbd9af1cc52247299addd Author: Amitesh Singh amitesh...@samsung.com Date: Wed Aug 12 23:43:29 2015 +0530 entry: fix since tag for entry_input_panel_show_on_demand_set() --- src/lib/elm_entry.eo | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lib/elm_entry.eo b/src/lib/elm_entry.eo index 33819e1..9dd9e36 100644 --- a/src/lib/elm_entry.eo +++ b/src/lib/elm_entry.eo @@ -124,6 +124,8 @@ class Elm.Entry (Elm.Layout, Elm_Interface_Scrollable, Evas.Clickable_Interface, set { [[Set the attribute to show the input panel in case of only an user's explicit Mouse Up event. It doesn't request to show the input panel even though it has focus. + + @since 1.9 ]] } get { @@ -135,8 +137,7 @@ class Elm.Entry (Elm.Layout, Elm_Interface_Scrollable, Evas.Clickable_Interface, values { ondemand: bool; [[If true, the input panel will be shown in case of only Mouse up event. (Focus event will be ignored.) - -@since 1.9.]] +]] } } @property context_menu_disabled { --
[EGIT] [core/enlightenment] master 01/04: break out wl client motion sending, force motion events during x11 drags
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=5bc8376fb5d2bfea72dea093def1ef39b40497bf commit 5bc8376fb5d2bfea72dea093def1ef39b40497bf Author: Mike Blumenkrantz zm...@osg.samsung.com Date: Wed Aug 12 14:56:55 2015 -0400 break out wl client motion sending, force motion events during x11 drags weird, but fixes xwl drag positioning --- src/bin/e_comp_wl.c | 36 +++- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index bdabb80..08dcbcb 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -224,32 +224,38 @@ _e_comp_wl_evas_cb_mouse_out(void *data, Evas *evas EINA_UNUSED, Evas_Object *ob } static void -_e_comp_wl_evas_cb_mouse_move(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event) +_e_comp_wl_send_mouse_move(E_Client *ec, int x, int y, unsigned int timestamp) { - E_Client *ec; - Evas_Event_Mouse_Move *ev; struct wl_resource *res; struct wl_client *wc; Eina_List *l; - ev = event; - if (!(ec = data)) return; - if (ec-cur_mouse_action) return; - if (e_object_is_del(E_OBJECT(ec))) return; - if (ec-ignored) return; - if (!ec-comp_data-surface) return; - wc = wl_resource_get_client(ec-comp_data-surface); EINA_LIST_FOREACH(e_comp-wl_comp_data-ptr.resources, l, res) { if (!e_comp_wl_input_pointer_check(res)) continue; if (wl_resource_get_client(res) != wc) continue; -wl_pointer_send_motion(res, ev-timestamp, - wl_fixed_from_int(ev-cur.canvas.x - ec-client.x), - wl_fixed_from_int(ev-cur.canvas.y - ec-client.y)); +wl_pointer_send_motion(res, timestamp, + wl_fixed_from_int(x - ec-client.x), + wl_fixed_from_int(y - ec-client.y)); } } +static void +_e_comp_wl_evas_cb_mouse_move(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event) +{ + E_Client *ec = data; + Evas_Event_Mouse_Move *ev = event; + + if (ec-cur_mouse_action) return; + if (e_object_is_del(E_OBJECT(ec))) return; + if (ec-ignored) return; + if (!ec-comp_data-surface) return; + + if ((!e_comp-wl_comp_data-drag_client) || (!e_client_has_xwindow(e_comp-wl_comp_data-drag_client))) + _e_comp_wl_send_mouse_move(ec, ev-cur.canvas.x, ev-cur.canvas.y, ev-timestamp); +} + static Eina_Bool _e_comp_wl_evas_handle_mouse_button(E_Client *ec, uint32_t timestamp, uint32_t button_id, uint32_t state) { @@ -915,6 +921,10 @@ _e_comp_wl_cb_mouse_move(void *d EINA_UNUSED, int t EINA_UNUSED, Ecore_Event_Mou y = ev-y - e_comp-wl_comp_data-selection.target-client.y; wl_data_device_send_motion(res, ev-timestamp, wl_fixed_from_int(x), wl_fixed_from_int(y)); } + if (e_comp-wl_comp_data-drag + e_comp-wl_comp_data-drag_client + e_client_has_xwindow(e_comp-wl_comp_data-drag_client)) + _e_comp_wl_send_mouse_move(e_comp-wl_comp_data-drag_client, ev-x, ev-y, ev-timestamp); return ECORE_CALLBACK_RENEW; } --
[EGIT] [core/enlightenment] master 04/04: track button mask for all drags, only end drag when mask has depopulated
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=442d63d8d6ec2e3623f377945da36eeba0885c50 commit 442d63d8d6ec2e3623f377945da36eeba0885c50 Author: Mike Blumenkrantz zm...@osg.samsung.com Date: Wed Aug 12 15:39:42 2015 -0400 track button mask for all drags, only end drag when mask has depopulated previously, beginning a drag with the left button, then pressing and releasing another button would result in the drag terminating without the original button being released --- src/bin/e_client.c | 1 + src/bin/e_comp_wl_data.c | 1 + src/bin/e_dnd.c | 5 + src/bin/e_dnd.h | 1 + src/bin/e_fm.c | 3 ++- src/bin/e_gadcon.c | 1 + src/bin/e_int_menus.c| 1 + src/modules/gadman/e_mod_gadman.c| 1 + src/modules/ibar/e_mod_main.c| 1 + src/modules/ibox/e_mod_main.c| 1 + src/modules/pager/e_mod_main.c | 2 ++ src/modules/pager_plain/e_mod_main.c | 2 ++ src/modules/xwayland/dnd.c | 1 + 13 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/bin/e_client.c b/src/bin/e_client.c index 20fa998..96103f9 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -3015,6 +3015,7 @@ e_client_mouse_move(E_Client *ec, Evas_Point *output) drag_types, 1, ec, -1, NULL, _e_client_cb_drag_finished); + client_drag-button_mask = evas_pointer_button_down_mask_get(e_comp-evas); e_drag_resize(client_drag, w, h); o = e_client_icon_add(ec, client_drag-evas); diff --git a/src/bin/e_comp_wl_data.c b/src/bin/e_comp_wl_data.c index 3c2ad61..1a92288 100644 --- a/src/bin/e_comp_wl_data.c +++ b/src/bin/e_comp_wl_data.c @@ -364,6 +364,7 @@ _e_comp_wl_data_device_cb_drag_start(struct wl_client *client, struct wl_resourc evas_pointer_canvas_xy_get(e_comp-evas, x, y); e_comp-wl_comp_data-drag = e_drag_new(x, y, NULL, 0, NULL, 0, NULL, _e_comp_wl_data_device_drag_finished); + e_comp-wl_comp_data-drag-button_mask = evas_pointer_button_down_mask_get(e_comp-evas); if (ec) e_drag_object_set(e_comp-wl_comp_data-drag, ec-frame); e_drag_start(e_comp-wl_comp_data-drag, x, y); diff --git a/src/bin/e_dnd.c b/src/bin/e_dnd.c index ea74c1c..7a2324b 100644 --- a/src/bin/e_dnd.c +++ b/src/bin/e_dnd.c @@ -1197,6 +1197,11 @@ _e_dnd_cb_mouse_up(void *data EINA_UNUSED, int type EINA_UNUSED, void *event) if (ev-window != _drag_win) return ECORE_CALLBACK_PASS_ON; + if (_drag_current _drag_current-button_mask) + { +_drag_current-button_mask = ~(1 (ev-buttons - 1)); +if (_drag_current-button_mask) return ECORE_CALLBACK_RENEW; + } _e_drag_end(ev-x, ev-y); return ECORE_CALLBACK_PASS_ON; diff --git a/src/bin/e_dnd.h b/src/bin/e_dnd.h index 3baa9b0..a02d4ab 100644 --- a/src/bin/e_dnd.h +++ b/src/bin/e_dnd.h @@ -44,6 +44,7 @@ struct _E_Drag intx, y, w, h; intdx, dy; + unsigned int button_mask; E_Layerlayer; unsigned char visible : 1; diff --git a/src/bin/e_fm.c b/src/bin/e_fm.c index ea820e3..cc89a33 100644 --- a/src/bin/e_fm.c +++ b/src/bin/e_fm.c @@ -7562,7 +7562,7 @@ _e_fm2_cb_icon_mouse_out(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_ } static void -_e_fm2_cb_icon_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) +_e_fm2_cb_icon_mouse_move(void *data, Evas *e, Evas_Object *obj EINA_UNUSED, void *event_info) { Evas_Event_Mouse_Move *ev; E_Fm2_Icon *ic; @@ -7699,6 +7699,7 @@ _e_fm2_cb_icon_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA d = e_drag_new(0, 0, drag_types, 1, sel, sel_length, NULL, _e_fm2_cb_drag_finished); + d-button_mask = evas_pointer_button_down_mask_get(e); if (layout) d-x = ic-sd-x, d-y = ic-sd-y; else diff --git a/src/bin/e_gadcon.c b/src/bin/e_gadcon.c index 9ec7d79..cf49ca8 100644 --- a/src/bin/e_gadcon.c +++ b/src/bin/e_gadcon.c @@ -2302,6 +2302,7 @@ _e_gadcon_client_drag_begin(E_Gadcon_Client *gcc, int x, int y) drag_types, 1, gcc, -1, NULL, e_gadcon_drag_finished_cb); if (!drag) return; + drag-button_mask = evas_pointer_button_down_mask_get(e_comp-evas); o = gcc-client_class-func.icon((E_Gadcon_Client_Class *)gcc-client_class, e_drag_evas_get(drag)); diff --git a/src/bin/e_int_menus.c b/src/bin/e_int_menus.c index 1bfb848..7c50a2c 100644 --- a/src/bin/e_int_menus.c +++
[EGIT] [core/enlightenment] master 02/04: make wl client mouse button handler fn external
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=48be7016adf9cca770437f9fc19ea8093d0cccf9 commit 48be7016adf9cca770437f9fc19ea8093d0cccf9 Author: Mike Blumenkrantz zm...@osg.samsung.com Date: Wed Aug 12 15:04:45 2015 -0400 make wl client mouse button handler fn external --- src/bin/e_comp_wl.c | 98 ++--- src/bin/e_comp_wl.h | 1 + 2 files changed, 50 insertions(+), 49 deletions(-) diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index 08dcbcb..12c60ca 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -256,60 +256,13 @@ _e_comp_wl_evas_cb_mouse_move(void *data, Evas *evas EINA_UNUSED, Evas_Object *o _e_comp_wl_send_mouse_move(ec, ev-cur.canvas.x, ev-cur.canvas.y, ev-timestamp); } -static Eina_Bool -_e_comp_wl_evas_handle_mouse_button(E_Client *ec, uint32_t timestamp, uint32_t button_id, uint32_t state) -{ - Eina_List *l; - struct wl_client *wc; - uint32_t serial, btn; - struct wl_resource *res; - - if (ec-cur_mouse_action || ec-border_menu || e_comp-wl_comp_data-drag) return EINA_FALSE; - if (e_object_is_del(E_OBJECT(ec))) return EINA_FALSE; - if (ec-ignored) return EINA_FALSE; - - switch (button_id) - { - case 1: -btn = BTN_LEFT; -break; - case 2: -btn = BTN_MIDDLE; -break; - case 3: -btn = BTN_RIGHT; -break; - default: -btn = button_id; -break; - } - - e_comp-wl_comp_data-ptr.button = btn; - - if (!ec-comp_data-surface) return EINA_FALSE; - - if (!eina_list_count(e_comp-wl_comp_data-ptr.resources)) - return EINA_TRUE; - - wc = wl_resource_get_client(ec-comp_data-surface); - serial = wl_display_next_serial(e_comp-wl_comp_data-wl.disp); - - EINA_LIST_FOREACH(e_comp-wl_comp_data-ptr.resources, l, res) - { -if (wl_resource_get_client(res) != wc) continue; -if (!e_comp_wl_input_pointer_check(res)) continue; -wl_pointer_send_button(res, serial, timestamp, btn, state); - } - return EINA_TRUE; -} - static void _e_comp_wl_evas_cb_mouse_down(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event) { E_Client *ec = data; Evas_Event_Mouse_Down *ev = event; - _e_comp_wl_evas_handle_mouse_button(ec, ev-timestamp, ev-button, + e_comp_wl_evas_handle_mouse_button(ec, ev-timestamp, ev-button, WL_POINTER_BUTTON_STATE_PRESSED); } @@ -319,7 +272,7 @@ _e_comp_wl_evas_cb_mouse_up(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj E_Client *ec = data; Evas_Event_Mouse_Up *ev = event; - _e_comp_wl_evas_handle_mouse_button(ec, ev-timestamp, ev-button, + e_comp_wl_evas_handle_mouse_button(ec, ev-timestamp, ev-button, WL_POINTER_BUTTON_STATE_RELEASED); } @@ -3161,6 +3114,53 @@ e_comp_wl_key_up(Ecore_Event_Key *ev) return !!ec; } +E_API Eina_Bool +e_comp_wl_evas_handle_mouse_button(E_Client *ec, uint32_t timestamp, uint32_t button_id, uint32_t state) +{ + Eina_List *l; + struct wl_client *wc; + uint32_t serial, btn; + struct wl_resource *res; + + if (ec-cur_mouse_action || ec-border_menu || e_comp-wl_comp_data-drag) return EINA_FALSE; + if (e_object_is_del(E_OBJECT(ec))) return EINA_FALSE; + if (ec-ignored) return EINA_FALSE; + + switch (button_id) + { + case 1: +btn = BTN_LEFT; +break; + case 2: +btn = BTN_MIDDLE; +break; + case 3: +btn = BTN_RIGHT; +break; + default: +btn = button_id; +break; + } + + e_comp-wl_comp_data-ptr.button = btn; + + if (!ec-comp_data-surface) return EINA_FALSE; + + if (!eina_list_count(e_comp-wl_comp_data-ptr.resources)) + return EINA_TRUE; + + wc = wl_resource_get_client(ec-comp_data-surface); + serial = wl_display_next_serial(e_comp-wl_comp_data-wl.disp); + + EINA_LIST_FOREACH(e_comp-wl_comp_data-ptr.resources, l, res) + { +if (wl_resource_get_client(res) != wc) continue; +if (!e_comp_wl_input_pointer_check(res)) continue; +wl_pointer_send_button(res, serial, timestamp, btn, state); + } + return EINA_TRUE; +} + EINTERN void e_comp_wl_xwayland_client_queue(E_Client *ec) { diff --git a/src/bin/e_comp_wl.h b/src/bin/e_comp_wl.h index c55d163..e105fa2 100644 --- a/src/bin/e_comp_wl.h +++ b/src/bin/e_comp_wl.h @@ -333,6 +333,7 @@ E_API void e_comp_wl_output_remove(const char *id); EINTERN Eina_Bool e_comp_wl_key_down(Ecore_Event_Key *ev); EINTERN Eina_Bool e_comp_wl_key_up(Ecore_Event_Key *ev); +E_API Eina_Bool e_comp_wl_evas_handle_mouse_button(E_Client *ec, uint32_t timestamp, uint32_t button_id, uint32_t state); # ifndef HAVE_WAYLAND_ONLY EINTERN void e_comp_wl_xwayland_client_queue(E_Client *ec); --
[EGIT] [apps/express] master 01/04: express: Add function for returning the active url link in a grid
devilhorns pushed a commit to branch master. http://git.enlightenment.org/apps/express.git/commit/?id=92c57067c4dc31496811642a2270028904af10db commit 92c57067c4dc31496811642a2270028904af10db Author: Chris Michael cp.mich...@samsung.com Date: Wed Aug 12 15:58:50 2015 -0400 express: Add function for returning the active url link in a grid Signed-off-by: Chris Michael cp.mich...@samsung.com --- src/bin/grid.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bin/grid.h b/src/bin/grid.h index 2023005..f189a3c 100644 --- a/src/bin/grid.h +++ b/src/bin/grid.h @@ -182,6 +182,7 @@ void _grid_theme_set(Evas_Object *obj, Evas_Object *theme); void _grid_resize(Evas_Object *obj, int nw, int nh); void _grid_text_append(Evas_Object *obj, const char *txt, int len, Row_Color *color); void _grid_nicklen_set(Evas_Object *obj, int len); +const char *_grid_link_get(Evas_Object *obj); #define GRID_CELLS(SD, X, Y) \ SD-cells[X + (((Y + SD-circular_offset) % SD-h) * SD-w)] --
[EGIT] [apps/express] master 04/04: express: Add popmedia controls to default theme
devilhorns pushed a commit to branch master. http://git.enlightenment.org/apps/express.git/commit/?id=13ca55f4b4a64db9cb22f30594bb81cd04930177 commit 13ca55f4b4a64db9cb22f30594bb81cd04930177 Author: Chris Michael cp.mich...@samsung.com Date: Wed Aug 12 16:00:48 2015 -0400 express: Add popmedia controls to default theme Signed-off-by: Chris Michael cp.mich...@samsung.com --- data/themes/default.edc | 284 +++- 1 file changed, 282 insertions(+), 2 deletions(-) diff --git a/data/themes/default.edc b/data/themes/default.edc index 6fd64ee..4c43cb6 100644 --- a/data/themes/default.edc +++ b/data/themes/default.edc @@ -2007,7 +2007,229 @@ collections } /* TODO: bell */ - /* TODO: popmedia */ + + part + { + name: popmedia_clip; + type: RECT; + mouse_events: 1; + description +{ + state: default 0.0; + fixed: 1 1; + visible: 0; + color: 255 255 255 0; +} + description +{ + state: visible 0.0; + inherit: default 0.0; + visible: 1; + color: 255 255 255 255; +} + } + part + { + name: popmedia_shadow; + mouse_events: 0; + description +{ + state: default 0.0; + fixed: 1 1; + rel1.to: express.popmedia; + rel2.to: express.popmedia; + image + { +normal: pm_shadow.png; +border: 64 64 64 64; +border_scale_by: 0.1; + } + fill.smooth: 0; + visible: 0; +} + description +{ + state: visible 0.0; + inherit: default 0.0; + visible: 1; + rel1.offset: -32 -32; + rel2.offset: 31 31; + image.border_scale_by: 1.0; +} + } + part + { + name: popmedia_fill; + mouse_events: 0; + description +{ + state: default 0.0; + fixed: 1 1; + rel1.to: express.popmedia; + rel2.to: express.popmedia; + image.normal: pm_fill.png; + fill + { +size.relative: 0.0 0.0; +size.offset: 64 64; + } +} + } + part + { + name: express.popmedia; + type: SWALLOW; + clip_to: popmedia_clip; + description +{ + state: default 0.0; + fixed: 1 1; + rel1.relative: 0.5 0.5; + rel2.relative: 0.5 0.5; + visible: 0; +} + description +{ + state: visible 0.0; + inherit: default 0.0; + rel1.relative: 0.1 0.1; + rel2.relative: 0.9 0.9; + visible: 1; +} + } + part + { + name: popmedia_overlay; + mouse_events: 0; + description +{ + state: default 0.0; + fixed: 1 1; + rel1.to: express.popmedia; + rel2.to: express.popmedia; + image.normal: pm_overlay.png; + fill.smooth: 0; + visible: 0; +} + description +{ + state: visible 0.0; + inherit: default 0.0; + visible: 1; +} + } + part + { + name: popmedia_bevel; + mouse_events: 0; + description +{ + state: default 0.0; + fixed: 1 1; + rel1.to: express.popmedia; + rel2.to: express.popmedia; +
[EGIT] [apps/express] master 03/04: express: Add support for popup media in a channel
devilhorns pushed a commit to branch master. http://git.enlightenment.org/apps/express.git/commit/?id=4f746c9c85e39015f8cfe8882e7aad944fe8e02f commit 4f746c9c85e39015f8cfe8882e7aad944fe8e02f Author: Chris Michael cp.mich...@samsung.com Date: Wed Aug 12 15:59:42 2015 -0400 express: Add support for popup media in a channel Signed-off-by: Chris Michael cp.mich...@samsung.com --- src/bin/channel.c | 129 ++ 1 file changed, 129 insertions(+) diff --git a/src/bin/channel.c b/src/bin/channel.c index 6668aa8..7be2383 100644 --- a/src/bin/channel.c +++ b/src/bin/channel.c @@ -6,6 +6,8 @@ #include grid.h #include utils.h #include commands.h +#include dbus.h +#include media.h struct _Channel { @@ -23,6 +25,7 @@ struct _Channel Evas_Object *o_tabregion_base; Evas_Object *o_img; Evas_Object *o_entry; + Evas_Object *o_popmedia; struct { @@ -59,16 +62,125 @@ struct _Channel int min_w, min_h; int req_w, req_h; + Eina_List *popmedia_queue; + Eina_Bool active : 1; Eina_Bool size_done : 1; Eina_Bool translucent : 1; Eina_Bool focused : 1; Eina_Bool unswallowed : 1; Eina_Bool missed : 1; + Eina_Bool popmedia_deleted : 1; Express_Network *net; }; +static void _channel_popmedia(Channel *chl, const char *src); + +static void +_cb_popmedia_loop(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Channel *chl; + + chl = data; + if (chl-popmedia_queue) + { +if (chl-o_popmedia) _media_play_set(chl-o_popmedia, EINA_FALSE); +edje_object_signal_emit(chl-o_bg, popmedia,off, PACKAGE_NAME); + } +} + +static void +_cb_popmedia_del(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Channel *chl; + + chl = data; + chl-o_popmedia = NULL; + chl-popmedia_deleted = EINA_TRUE; + edje_object_signal_emit(chl-o_bg, popmedia,off, PACKAGE_NAME); +} + +static void +_channel_popmedia_queue_process(Channel *chl) +{ + const char *src; + + if (!chl-popmedia_queue) return; + src = chl-popmedia_queue-data; + chl-popmedia_queue = + eina_list_remove_list(chl-popmedia_queue, chl-popmedia_queue); + if (!src) return; + _channel_popmedia(chl, src); + eina_stringshare_del(src); +} + +static void +_cb_popmedia_done(void *data, Evas_Object *obj EINA_UNUSED, const char *emission EINA_UNUSED, const char *src EINA_UNUSED) +{ + Channel *chl; + + chl = data; + if ((chl-o_popmedia) || (chl-popmedia_deleted)) + { +if (chl-o_popmedia) + { + evas_object_event_callback_del(chl-o_popmedia, EVAS_CALLBACK_DEL, +_cb_popmedia_del); + evas_object_del(chl-o_popmedia); + chl-o_popmedia = NULL; + } +chl-popmedia_deleted = EINA_FALSE; +_channel_popmedia_queue_process(chl); + } +} + +static void +_channel_popmedia_show(Channel *chl, const char *src, Media_Type type) +{ + _dbus_link_hide(); + + if (chl-o_popmedia) + { +const char *s; + +EINA_LIST_FREE(chl-popmedia_queue, s) + eina_stringshare_del(s); + +chl-popmedia_queue = + eina_list_append(chl-popmedia_queue, eina_stringshare_add(src)); + +edje_object_signal_emit(chl-o_bg, popmedia,off, PACKAGE_NAME); + +return; + } + + chl-o_popmedia = _media_add(chl-o_win, src, MEDIA_POP, type); + chl-popmedia_deleted = EINA_FALSE; + evas_object_smart_callback_add(chl-o_popmedia, loop, + _cb_popmedia_loop, chl); + evas_object_event_callback_add(chl-o_popmedia, EVAS_CALLBACK_DEL, + _cb_popmedia_del, chl); + edje_object_part_swallow(chl-o_bg, express.popmedia, chl-o_popmedia); + evas_object_show(chl-o_popmedia); + + edje_object_signal_emit(chl-o_bg, popmedia,on, PACKAGE_NAME); +} + +static void +_channel_popmedia(Channel *chl, const char *src) +{ + Media_Type type; + + type = _media_src_type_get(src); + if (type == MEDIA_TYPE_UNKNOWN) + { + + } + else + _channel_popmedia_show(chl, src, type); +} + static void _cb_theme_reload(Channel *chl) { @@ -138,6 +250,19 @@ _cb_next(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) } } +static void +_cb_popup(void *data, Evas_Object *obj EINA_UNUSED, void *event) +{ + Channel *chl; + const char *src; + + chl = data; + src = event; + if (!src) src = _grid_link_get(chl-o_grid); + if (!src) return; + _channel_popmedia(chl, src); +} + static void _cb_count_go(void *data, Evas_Object *obj EINA_UNUSED, const char *sig EINA_UNUSED, const char *source EINA_UNUSED) { @@ -646,6 +771,7 @@ _channel_create(Evas *evas, Evas_Object *win, const char *name, const char *serv evas_object_smart_callback_add(chl-o_grid, options, _cb_options, chl); evas_object_smart_callback_add(chl-o_grid, prev,