[EGIT] [core/efl] master 01/01: Evas: Fix proxy rendering for animated objects
jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=981bdc16f6dbb2948b33b5979825a6a2f6f168f2 commit 981bdc16f6dbb2948b33b5979825a6a2f6f168f2 Author: Jean-Philippe Andre Date: Wed Jan 22 16:40:50 2014 +0900 Evas: Fix proxy rendering for animated objects An invalid optimization was implemented in proxy rendering. We can't assume a proxy is a smart object. Refer to 5cefa00d0ad0f54. Fixes T832. Proxy rendering is still broken when using cserve2... :( --- src/lib/evas/canvas/evas_render.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c index 2c3c336..e1b4049 100644 --- a/src/lib/evas/canvas/evas_render.c +++ b/src/lib/evas/canvas/evas_render.c @@ -367,7 +367,7 @@ _evas_render_phase1_direct(Evas_Public_Data *e, _evas_render_prev_cur_clip_cache_add(e, obj); if (obj->proxy->proxies) { - if (obj->smart.smart && evas_object_smart_changed_get(eo_obj)) + if (!obj->smart.smart || evas_object_smart_changed_get(eo_obj)) { EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, obj->proxy, Evas_Object_Proxy_Data, proxy_write) --
[EGIT] [core/enlightenment] master 01/01: fix connman check by not failing al the time on owner check
raster pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=6a39d27a517c0927d2e910694e0264195faa30bb commit 6a39d27a517c0927d2e910694e0264195faa30bb Author: Carsten Haitzler (Rasterman) Date: Wed Jan 22 17:50:19 2014 +0900 fix connman check by not failing al the time on owner check fixes T804 --- src/modules/wizard/page_110.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/modules/wizard/page_110.c b/src/modules/wizard/page_110.c index e8ff69e..3904b1d 100644 --- a/src/modules/wizard/page_110.c +++ b/src/modules/wizard/page_110.c @@ -100,7 +100,8 @@ _check_connman_owner(void *data, const Eldbus_Message *msg, e_wizard_button_next_enable_set(1); ecore_idler_add(_page_next_call, NULL); - + return; + fail: _connman_fail(data); } --
[EGIT] [core/enlightenment] master 01/01: efm - emit signal to icon when rename starts/ends
raster pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=15abb86bea9a325e8cc0fc3d74fd6d11bbe792a8 commit 15abb86bea9a325e8cc0fc3d74fd6d11bbe792a8 Author: Carsten Haitzler (Rasterman) Date: Wed Jan 22 18:31:49 2014 +0900 efm - emit signal to icon when rename starts/ends this, along with theme updates in elm should fix T799 --- src/bin/e_fm.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/bin/e_fm.c b/src/bin/e_fm.c index 0f49301..42bcc9a 100644 --- a/src/bin/e_fm.c +++ b/src/bin/e_fm.c @@ -10294,6 +10294,7 @@ _e_fm2_icon_entry_widget_add(E_Fm2_Icon *ic) e_comp_grab_input(c, 0, 1); edje_object_part_swallow(ic->obj, "e.swallow.entry", ic->entry_widget); evas_object_show(ic->entry_widget); + edje_object_signal_emit(ic->obj, "e,state,rename,on", "e"); e_widget_entry_text_set(ic->entry_widget, ic->info.file); e_widget_focus_set(ic->entry_widget, 0); e_widget_entry_select_all(ic->entry_widget); @@ -10316,6 +10317,7 @@ _e_fm2_icon_entry_widget_del(E_Fm2_Icon *ic) e_grabinput_release(0, ic->keygrab); ic->keygrab = 0; _e_fm2_icon_select(ic); + edje_object_signal_emit(ic->obj, "e,state,rename,off", "e"); } static void --
[EGIT] [core/elementary] master 01/01: theme update to handle rename on/off in efm
raster pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=acf7154c627ec3c51a27bc0aad64023d3ded75a3 commit acf7154c627ec3c51a27bc0aad64023d3ded75a3 Author: Carsten Haitzler (Rasterman) Date: Wed Jan 22 18:32:24 2014 +0900 theme update to handle rename on/off in efm shoudl fix T799 --- data/themes/edc/fileman.edc | 26 +- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/data/themes/edc/fileman.edc b/data/themes/edc/fileman.edc index 8a48a3a..cea767a 100644 --- a/data/themes/edc/fileman.edc +++ b/data/themes/edc/fileman.edc @@ -148,7 +148,7 @@ group { name: "e/fileman/default/list/variable"; } description { state: "disabled" 0.0; inherit: "default" 0.0; - visible: 0; +visible: 0; } } // @@ -526,6 +526,7 @@ group { name: "e/fileman/default/icon/fixed"; // part { name: "label0"; type: SPACER; scale: 1; + clip_to: "textmaster"; description { state: "default" 0.0; align: 0.5 1.0; rel1.offset: 4 -5; @@ -538,6 +539,7 @@ group { name: "e/fileman/default/icon/fixed"; } part { name: "e.text.label"; type: TEXTBLOCK; mouse_events: 0; scale: 1; + clip_to: "textmaster"; description { state: "default" 0.0; align: 0.5 0.0; rel1.to: "label0"; @@ -558,6 +560,7 @@ group { name: "e/fileman/default/icon/fixed"; } part { name: "label2"; type: TEXTBLOCK; mouse_events: 0; scale: 1; + clip_to: "textmaster"; description { state: "default" 0.0; align: 0.5 0.0; rel1.to: "e.text.label"; @@ -577,6 +580,16 @@ group { name: "e/fileman/default/icon/fixed"; visible: 1; } } + part { name: "textmaster"; type: RECT; + description { state: "default" 0.0; +rel1.offset: -20 -20; +rel2.offset: 19 19; + } + description { state: "hidden" 0.0; +inherit: "default" 0.0; +visible: 0; + } + } // part { name: "icon0"; type: SPACER; description { state: "default" 0.0; @@ -731,6 +744,16 @@ group { name: "e/fileman/default/icon/fixed"; } } programs { + program { name: "rename-on"; + signal: "e,state,rename,on"; source: "e"; + action: STATE_SET "hidden" 0.0; + target: "textmaster"; + } + program { name: "rename-off"; + signal: "e,state,rename,off"; source: "e"; + action: STATE_SET "default" 0.0; + target: "textmaster"; + } program { signal: "e,state,selected"; source: "e"; action: STATE_SET "selected" 0.0; @@ -883,6 +906,7 @@ group { name: "e/fileman/desktop/icon/fixed"; } part { name: "bevel"; mouse_events: 0; insert_before: "e.text.label"; + clip_to: "textmaster"; description { state: "default" 0.0; rel1.offset: -8 -7; rel1.to: "e.text.label"; --
[EGIT] [core/elementary] master 01/01: popup: Replace focus_direction_go with focus_cycle.
woohyun pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=14c8899c5d1ffaa12347fb71fd74d9ac2512cfcf commit 14c8899c5d1ffaa12347fb71fd74d9ac2512cfcf Author: WooHyun Jung Date: Wed Jan 22 18:36:13 2014 +0900 popup: Replace focus_direction_go with focus_cycle. --- src/lib/elc_popup.c | 8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/elc_popup.c b/src/lib/elc_popup.c index 640134c..f1f4da3 100644 --- a/src/lib/elc_popup.c +++ b/src/lib/elc_popup.c @@ -1474,25 +1474,25 @@ _elm_popup_smart_event(Eo *obj, void *_pd EINA_UNUSED, va_list *list) else if ((!strcmp(ev->key, "Left")) || ((!strcmp(ev->key, "KP_Left")) && (!ev->string))) { -elm_widget_focus_direction_go(obj, 270.0); +elm_widget_focus_cycle(obj, ELM_FOCUS_LEFT); goto success; } else if ((!strcmp(ev->key, "Right")) || ((!strcmp(ev->key, "KP_Right")) && (!ev->string))) { -elm_widget_focus_direction_go(obj, 90.0); +elm_widget_focus_cycle(obj, ELM_FOCUS_RIGHT); goto success; } else if ((!strcmp(ev->key, "Up")) || ((!strcmp(ev->key, "KP_Up")) && (!ev->string))) { -elm_widget_focus_direction_go(obj, 0.0); +elm_widget_focus_cycle(obj, ELM_FOCUS_UP); goto success; } else if ((!strcmp(ev->key, "Down")) || ((!strcmp(ev->key, "KP_Down")) && (!ev->string))) { -elm_widget_focus_direction_go(obj, 180.0); +elm_widget_focus_cycle(obj, ELM_FOCUS_DOWN); goto success; } --
[EGIT] [core/elementary] master 02/02: fileselector: Make fileselector focusable. Ok on Enter key and Cancel on Escape key.
seoz pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=c7885e7dd49e3f6dc237cdd2352d1ff92e549126 commit c7885e7dd49e3f6dc237cdd2352d1ff92e549126 Author: Daniel Juyung Seo Date: Wed Jan 22 15:53:49 2014 +0900 fileselector: Make fileselector focusable. Ok on Enter key and Cancel on Escape key. Now fileselector accepts the key event on Enter and Escape. --- src/lib/elc_fileselector.c | 35 ++- src/lib/elc_fileselector.h | 2 ++ src/lib/elc_fileselector_entry.c | 2 +- 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/lib/elc_fileselector.c b/src/lib/elc_fileselector.c index dcd9ad7..835afef 100644 --- a/src/lib/elc_fileselector.c +++ b/src/lib/elc_fileselector.c @@ -38,10 +38,15 @@ ELM_PRIV_FILESELECTOR_SIGNALS(ELM_PRIV_STATIC_VARIABLE_DECLARE); static const Evas_Smart_Cb_Description _smart_callbacks[] = { ELM_PRIV_FILESELECTOR_SIGNALS(ELM_PRIV_SMART_CALLBACKS_DESC) + {"focused", ""}, /**< handled by elm_widget */ + {"unfocused", ""}, /**< handled by elm_widget */ {NULL, NULL} }; #undef ELM_PRIV_FILESELECTOR_SIGNALS +static void _ok(void *data, Evas_Object *obj, void *event_info); +static void _canc(void *data, Evas_Object *obj, void *event_info); + /* final routine on deletion */ static void _elm_fileselector_smart_del_do(Elm_Fileselector_Smart_Data *sd) @@ -137,6 +142,33 @@ _elm_fileselector_smart_theme(Eo *obj, void *_pd, va_list *list) if (ret) *ret = EINA_TRUE; } +static void +_elm_fileselector_smart_event(Eo *obj, void *_pd EINA_UNUSED, va_list *list) +{ + Evas_Object *src = va_arg(*list, Evas_Object *); + Evas_Callback_Type type = va_arg(*list, Evas_Callback_Type); + Evas_Event_Key_Down *ev = va_arg(*list, void *); + Eina_Bool *ret = va_arg(*list, Eina_Bool *); + + if (ret) *ret = EINA_FALSE; + (void) src; + + if (elm_widget_disabled_get(obj)) return; + if (type != EVAS_CALLBACK_KEY_DOWN) return; + if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return; + + if ((!strcmp(ev->key, "Return")) || + (!strcmp(ev->key, "KP_Enter"))) + _ok(obj, NULL, NULL); + else if (!strcmp(ev->key, "Escape")) + _canc(obj, NULL, NULL); + else + return; + + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + if (ret) *ret = EINA_TRUE; +} + /*** GENLIST/GENGRID "MODEL" ***/ static char * _itc_text_get(void *data, @@ -1306,7 +1338,7 @@ _elm_fileselector_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED) eo_do_super(obj, MY_CLASS, evas_obj_smart_add()); elm_widget_sub_object_parent_add(obj); - elm_widget_can_focus_set(obj, EINA_FALSE); + elm_widget_can_focus_set(obj, EINA_TRUE); priv->expand = !!_elm_config->fileselector_expand_enable; priv->double_tap_navigation = !!_elm_config->fileselector_double_tap_navigation_enable; @@ -2280,6 +2312,7 @@ _class_constructor(Eo_Class *klass) EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_DEL), _elm_fileselector_smart_del), EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_THEME_APPLY), _elm_fileselector_smart_theme), +EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_EVENT), _elm_fileselector_smart_event), EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_FOCUS_NEXT_MANAGER_IS), _elm_fileselector_smart_focus_next_manager_is), EO_OP_FUNC(ELM_WIDGET_ID(ELM_WIDGET_SUB_ID_FOCUS_DIRECTION_MANAGER_IS), _elm_fileselector_smart_focus_direction_manager_is), diff --git a/src/lib/elc_fileselector.h b/src/lib/elc_fileselector.h index 053e8de..4da2aec 100644 --- a/src/lib/elc_fileselector.h +++ b/src/lib/elc_fileselector.h @@ -52,6 +52,8 @@ * - @c "done" - the user has clicked on the "ok" or "cancel" * buttons (@c event_info is a pointer to the selection's * path, a @b stringshared string) + * - @c "focused" - When the fileselector has received focus. (since 1.9) + * - @c "unfocused" - When the fileselector has lost focus. (since 1.9) * * For text, elm_layout_text_set() will work here on: * @li @c "ok" - OK button label if the ok button is set. @since 1.8 diff --git a/src/lib/elc_fileselector_entry.c b/src/lib/elc_fileselector_entry.c index 0431189..4de0a17 100644 --- a/src/lib/elc_fileselector_entry.c +++ b/src/lib/elc_fileselector_entry.c @@ -387,7 +387,7 @@ _elm_fileselector_entry_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED) elm_layout_content_set(obj, "elm.swallow.entry", priv->entry); } - elm_widget_can_focus_set(obj, EINA_FALSE); + elm_widget_can_focus_set(obj, EINA_TRUE); elm_layout_sizing_eval(obj); } --
[EGIT] [core/elementary] master 01/02: fileselector_button: Added missing description about focus signals.
seoz pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=d7b396cfa863d03f75ec87af070b75176ceaa05f commit d7b396cfa863d03f75ec87af070b75176ceaa05f Author: Daniel Juyung Seo Date: Wed Jan 22 18:25:55 2014 +0900 fileselector_button: Added missing description about focus signals. --- src/lib/elc_fileselector_button.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/lib/elc_fileselector_button.h b/src/lib/elc_fileselector_button.h index 3f43c5b..d7d485f 100644 --- a/src/lib/elc_fileselector_button.h +++ b/src/lib/elc_fileselector_button.h @@ -37,6 +37,8 @@ * pointer comes as the @c event_info data (a stringshared * string) * - @c "language,changed" - the program's language changed + * - @c "focused" - When the fileselector button has received focus. (since 1.8) + * - @c "unfocused" - When the fileselector button has lost focus. (since 1.8) * * Default text parts of the fileselector_button widget that you can use for * are: --
[E-devel] bug triage
please look here: https://phab.enlightenment.org/maniphest/query/F0gsESIdnqkQ/ there are a lot of bugs there which have no one assigned to them and/or not project. they will get lost in the the ether if they are not properly categorized and assigned to someone. i have just run through most of the incoming queue and closed/assigned etc. all but 4. but there are bugs if other priority levels that have no project and/or no person assigned. it's be really nice if people went through this and ensured the bugs are assigned properly so we don't miss them. PLEASE add some custom queries to your tasks page (edit queries) and add some like mine above - list ALL open bugs, and then some per project etc. that you track so you can know what exists or not easily. we really need to work on crushing our bug list down again. -- - Codito, ergo sum - "I code, therefore I am" -- The Rasterman (Carsten Haitzler)ras...@rasterman.com -- CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] [EGIT] [core/efl] master 01/01: Evas: Fix proxy rendering for animated objects
good catch! thank you! -Regards, Hermet- -Original Message- From: "Jean-Philippe Andre" To: ; Cc: Sent: 2014-01-22 (수) 17:02:53 Subject: [EGIT] [core/efl] master 01/01: Evas: Fix proxy rendering for animated objects jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=981bdc16f6dbb2948b33b5979825a6a2f6f168f2 commit 981bdc16f6dbb2948b33b5979825a6a2f6f168f2 Author: Jean-Philippe Andre @samsung.com> Date: Wed Jan 22 16:40:50 2014 +0900 Evas: Fix proxy rendering for animated objects An invalid optimization was implemented in proxy rendering. We can't assume a proxy is a smart object. Refer to 5cefa00d0ad0f54. Fixes T832. Proxy rendering is still broken when using cserve2... :( --- src/lib/evas/canvas/evas_render.c 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c index 2c3c336..e1b4049 100644 --- a/src/lib/evas/canvas/evas_render.c +++ b/src/lib/evas/canvas/evas_render.c @@ -367,7 +367,7 @@ _evas_render_phase1_direct(Evas_Public_Data *e, _evas_render_prev_cur_clip_cache_add(e, obj); if (obj->proxy->proxies) { - if (obj->smart.smart && evas_object_smart_changed_get(eo_obj)) + if (!obj->smart.smart evas_object_smart_changed_get(eo_obj)) { EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, obj->proxy, Evas_Object_Proxy_Data, proxy_write) -- -- CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[EGIT] [apps/terminology] master 01/01: set EMOTION_ENGINE to tyls (and ethumb etc.) can use it inside shell
raster pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=870d592139b5e4d962154799183bbb46931e5924 commit 870d592139b5e4d962154799183bbb46931e5924 Author: Carsten Haitzler (Rasterman) Date: Wed Jan 22 20:31:37 2014 +0900 set EMOTION_ENGINE to tyls (and ethumb etc.) can use it inside shell this should fix T291 --- src/bin/termio.c | 19 --- src/bin/termpty.c | 8 +++- src/bin/termpty.h | 2 +- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/bin/termio.c b/src/bin/termio.c index dbd686e..44b697c 100644 --- a/src/bin/termio.c +++ b/src/bin/termio.c @@ -4430,7 +4430,16 @@ termio_add(Evas_Object *parent, Config *config, const char *cmd, Eina_Bool login Evas *e; Evas_Object *obj, *g; Termio *sd; - + char *modules[] = + { +NULL, +"gstreamer", +"xine", +"vlc", +"gstreamer1" + }; + char *mod = NULL; + EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL); e = evas_object_evas_get(parent); if (!e) return NULL; @@ -4440,6 +4449,10 @@ termio_add(Evas_Object *parent, Config *config, const char *cmd, Eina_Bool login sd = evas_object_smart_data_get(obj); EINA_SAFETY_ON_NULL_RETURN_VAL(sd, obj); + if ((config->vidmod >= 0) && + (config->vidmod < (int)EINA_C_ARRAY_LENGTH(modules))) + mod = modules[config->vidmod]; + termio_config_set(obj, config); sd->glayer = g = elm_gesture_layer_add(parent); @@ -4470,9 +4483,9 @@ termio_add(Evas_Object *parent, Config *config, const char *cmd, Eina_Bool login _smart_cb_drag_pos, obj, _smart_cb_drop, obj); #endif - + sd->pty = termpty_new(cmd, login_shell, cd, w, h, config->scrollback, - config->xterm_256color, config->erase_is_del); + config->xterm_256color, config->erase_is_del, mod); if (!sd->pty) { ERR("Cannot allocate termpty"); diff --git a/src/bin/termpty.c b/src/bin/termpty.c index 5b6b394..d7899eb 100644 --- a/src/bin/termpty.c +++ b/src/bin/termpty.c @@ -272,7 +272,7 @@ _limit_coord(Termpty *ty, Termstate *state) Termpty * termpty_new(const char *cmd, Eina_Bool login_shell, const char *cd, int w, int h, int backscroll, Eina_Bool xterm_256color, -Eina_Bool erase_is_del) +Eina_Bool erase_is_del, const char *emotion_mod) { Termpty *ty; const char *pty; @@ -369,6 +369,7 @@ termpty_new(const char *cmd, Eina_Bool login_shell, const char *cd, const char *args[4] = {NULL, NULL, NULL, NULL}; Eina_Bool needs_shell; int i; +char buf[256]; if (cd) { @@ -443,6 +444,11 @@ termpty_new(const char *cmd, Eina_Bool login_shell, const char *cd, putenv("TERM=xterm"); } putenv("XTERM_256_COLORS=1"); +if (emotion_mod) + { + snprintf(buf, sizeof(buf), "EMOTION_ENGINE=%s", emotion_mod); + putenv(buf); + } if (!login_shell) execvp(args[0], (char *const *)args); else diff --git a/src/bin/termpty.h b/src/bin/termpty.h index e818186..31fa456 100644 --- a/src/bin/termpty.h +++ b/src/bin/termpty.h @@ -208,7 +208,7 @@ void termpty_shutdown(void); Termpty *termpty_new(const char *cmd, Eina_Bool login_shell, const char *cd, int w, int h, int backscroll, Eina_Bool xterm_256color, - Eina_Bool erase_is_del); + Eina_Bool erase_is_del, const char *emotion_mod); void termpty_free(Termpty *ty); void termpty_cellcomp_freeze(Termpty *ty); void termpty_cellcomp_thaw(Termpty *ty); --
[EGIT] [core/elementary] master 01/01: [naviframe] Fix to hide the previous view by emitting signal
hermet pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=e3784b68e01849a99e06f31e02192ffb19d1275c commit e3784b68e01849a99e06f31e02192ffb19d1275c Author: Jaehyun Cho Date: Wed Jan 22 22:07:30 2014 +0900 [naviframe] Fix to hide the previous view by emitting signal Summary: Previously, previous view was hidden by evas_object_hide. However, this method is no longer correct because size calculation of naviframe causes evas_object_show. Now, previous view is hidden by emitting signal to naviframe theme and clipper hides the previous view. Reviewers: Hermet Reviewed By: Hermet CC: seoz Differential Revision: https://phab.enlightenment.org/D484 --- data/themes/edc/elm/naviframe.edc | 6 +- src/lib/elc_naviframe.c | 17 ++--- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/data/themes/edc/elm/naviframe.edc b/data/themes/edc/elm/naviframe.edc index 943294b..2697ad4 100644 --- a/data/themes/edc/elm/naviframe.edc +++ b/data/themes/edc/elm/naviframe.edc @@ -551,7 +551,11 @@ group { name: "elm/naviframe/item/basic/default"; target: "elm.swallow.content"; target: "elements_clip"; } - + program { + signal: "elm,state,invisible"; source: "elm"; + action: STATE_SET "hidden" 0.0; + target: "elements_clip"; + } /* current page is being pushed: [previous]<[current] */ program { signal: "elm,state,cur,pushed"; source: "elm"; diff --git a/src/lib/elc_naviframe.c b/src/lib/elc_naviframe.c index 7441a02..c29a0b3 100644 --- a/src/lib/elc_naviframe.c +++ b/src/lib/elc_naviframe.c @@ -529,7 +529,6 @@ _item_del_pre_hook(Elm_Object_Item *it) if (sd->freeze_events) evas_object_freeze_events_set(VIEW(prev_it), EINA_FALSE); _resize_object_reset(WIDGET(prev_it), prev_it); -evas_object_show(VIEW(prev_it)); _prev_page_focus_recover(prev_it); @@ -1071,8 +1070,7 @@ _on_item_push_finished(void *data, ELM_NAVIFRAME_DATA_GET(WIDGET(it), sd); - evas_object_hide(VIEW(it)); - + elm_object_signal_emit(VIEW(it), "elm,state,invisible", "elm"); elm_widget_tree_unfocusable_set(VIEW(it), it->unfocusable); if (sd->freeze_events) @@ -1522,8 +1520,6 @@ _item_push(Eo *obj, void *_pd, va_list *list) title_label, prev_btn, next_btn, content, item_style); if (!it) return; - evas_object_show(VIEW(it)); - if (prev_it) elm_widget_focused_object_clear(VIEW(prev_it)); _resize_object_reset(obj, it); if (prev_it) @@ -1604,6 +1600,8 @@ _item_insert_before(Eo *obj, void *_pd, va_list *list) (sd->stack, EINA_INLIST_GET(it), EINA_INLIST_GET(((Elm_Naviframe_Item *)before))); + elm_object_signal_emit(VIEW(it), "elm,state,invisible", "elm"); + elm_layout_sizing_eval(obj); *ret = (Elm_Object_Item *)it; @@ -1656,12 +1654,13 @@ _item_insert_after(Eo *obj, void *_pd, va_list *list) { elm_widget_focused_object_clear(VIEW(after)); _resize_object_reset(obj, it); -evas_object_show(VIEW(it)); -evas_object_hide(VIEW(after)); + if (elm_object_focus_allow_get(VIEW(it))) elm_object_focus_set(VIEW(it), EINA_TRUE); else elm_object_focus_set(WIDGET(it), EINA_TRUE); +elm_object_signal_emit(VIEW(it), "elm,state,visible", "elm"); +elm_object_signal_emit(VIEW(after), "elm,state,invisible", "elm"); } elm_layout_sizing_eval(obj); @@ -1732,7 +1731,6 @@ _item_pop(Eo *obj, void *_pd, va_list *list) /* these 2 signals MUST take place simultaneously */ elm_object_signal_emit(VIEW(it), "elm,state,cur,popped", "elm"); -evas_object_show(VIEW(prev_it)); elm_object_signal_emit(VIEW(prev_it), "elm,state,prev,popped", "elm"); edje_object_message_signal_process(elm_layout_edje_get(VIEW(it))); @@ -1817,9 +1815,6 @@ elm_naviframe_item_promote(Elm_Object_Item *it) } elm_object_signal_emit(VIEW(prev_it), "elm,state,cur,pushed", "elm"); - - evas_object_show(VIEW(nit)); - elm_object_signal_emit(VIEW(nit), "elm,state,new,pushed", "elm"); edje_object_message_signal_process(elm_layout_edje_get(VIEW(prev_it))); --
[EGIT] [core/elementary] master 01/01: [naviframe] do not size evaluate during deletion
hermet pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=502a62e19e9012e03475e537c4cb3f865522747f commit 502a62e19e9012e03475e537c4cb3f865522747f Author: Jaehyun Cho Date: Wed Jan 22 22:09:16 2014 +0900 [naviframe] do not size evaluate during deletion Summary: Author: Shinwoo Kim 2012-12-11 20:13:39 Reviewers: Hermet CC: seoz Differential Revision: https://phab.enlightenment.org/D485 --- src/lib/elc_naviframe.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/elc_naviframe.c b/src/lib/elc_naviframe.c index c29a0b3..a2a1f85 100644 --- a/src/lib/elc_naviframe.c +++ b/src/lib/elc_naviframe.c @@ -874,6 +874,7 @@ _elm_naviframe_smart_sizing_eval(Eo *obj, void *_pd, va_list *list EINA_UNUSED) Elm_Naviframe_Smart_Data *sd = _pd; + if (sd->on_deletion) return; if (!sd->stack) return; top = (EINA_INLIST_CONTAINER_GET(sd->stack->last, Elm_Naviframe_Item)); @@ -1399,7 +1400,6 @@ _elm_naviframe_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED) elm_widget_item_del(it); } - sd->on_deletion = EINA_FALSE; evas_object_del(sd->dummy_edje); eo_do_super(obj, MY_CLASS, evas_obj_smart_del()); --
[EGIT] [core/elementary] master 01/01: [naviframe] Fix to enable item deletion in pop_cb
hermet pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=bb39f8616f682af873ccf407086f8ce092369a11 commit bb39f8616f682af873ccf407086f8ce092369a11 Author: Jaehyun Cho Date: Wed Jan 22 22:13:51 2014 +0900 [naviframe] Fix to enable item deletion in pop_cb Summary: Fix to enable item deletion in the registered pop_cb function Reviewers: Hermet Reviewed By: Hermet CC: seoz Differential Revision: https://phab.enlightenment.org/D487 --- src/lib/elc_naviframe.c| 15 +++ src/lib/elm_widget_naviframe.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/src/lib/elc_naviframe.c b/src/lib/elc_naviframe.c index a2a1f85..c89fd0a 100644 --- a/src/lib/elc_naviframe.c +++ b/src/lib/elc_naviframe.c @@ -504,6 +504,9 @@ _item_del_pre_hook(Elm_Object_Item *it) nit = (Elm_Naviframe_Item *)it; ELM_NAVIFRAME_DATA_GET(WIDGET(nit), sd); + nit->delete_me = EINA_TRUE; + if (nit->ref > 0) return EINA_FALSE; + ecore_animator_del(nit->animator); top = (it == elm_naviframe_top_item_get(WIDGET(nit))); @@ -1696,14 +1699,26 @@ _item_pop(Eo *obj, void *_pd, va_list *list) if (it->popping) return; it->popping = EINA_TRUE; + evas_object_ref(obj); if (it->pop_cb) { +it->ref++; if (!it->pop_cb(it->pop_data, (Elm_Object_Item *)it)) { + it->ref--; + if (it->delete_me) + { + _item_del_pre_hook(it); + _elm_widget_item_free(it); + } it->popping = EINA_FALSE; + evas_object_unref(obj); + return; } +it->ref--; } + evas_object_unref(obj); if (sd->preserve) content = it->content; diff --git a/src/lib/elm_widget_naviframe.h b/src/lib/elm_widget_naviframe.h index 83809f9..1b4d3fc 100644 --- a/src/lib/elm_widget_naviframe.h +++ b/src/lib/elm_widget_naviframe.h @@ -57,6 +57,8 @@ struct _Elm_Naviframe_Item Eina_Booltitle_enabled : 1; Eina_Boolunfocusable : 1; Eina_Boolpopping : 1; + Eina_Booldelete_me : 1; + int ref; }; typedef struct _Elm_Naviframe_Content_Item_Pair Elm_Naviframe_Content_Item_Pair; --
Re: [E-devel] [EGIT] [core/elementary] master 01/01: [naviframe] Fix to enable item deletion in pop_cb
* Jaehyun Cho [2014-01-22 05:14:53 -0800]: > hermet pushed a commit to branch master. > > http://git.enlightenment.org/core/elementary.git/commit/?id=bb39f8616f682af873ccf407086f8ce092369a11 > > commit bb39f8616f682af873ccf407086f8ce092369a11 > Author: Jaehyun Cho > Date: Wed Jan 22 22:13:51 2014 +0900 > > [naviframe] Fix to enable item deletion in pop_cb > > Summary: Fix to enable item deletion in the registered pop_cb function > > Reviewers: Hermet > > Reviewed By: Hermet > > CC: seoz > > Differential Revision: https://phab.enlightenment.org/D487 > --- > src/lib/elc_naviframe.c| 15 +++ > src/lib/elm_widget_naviframe.h | 2 ++ > 2 files changed, 17 insertions(+) > > diff --git a/src/lib/elc_naviframe.c b/src/lib/elc_naviframe.c > index a2a1f85..c89fd0a 100644 > --- a/src/lib/elc_naviframe.c > +++ b/src/lib/elc_naviframe.c > @@ -504,6 +504,9 @@ _item_del_pre_hook(Elm_Object_Item *it) > nit = (Elm_Naviframe_Item *)it; > ELM_NAVIFRAME_DATA_GET(WIDGET(nit), sd); > > + nit->delete_me = EINA_TRUE; > + if (nit->ref > 0) return EINA_FALSE; > + > ecore_animator_del(nit->animator); > > top = (it == elm_naviframe_top_item_get(WIDGET(nit))); > @@ -1696,14 +1699,26 @@ _item_pop(Eo *obj, void *_pd, va_list *list) > if (it->popping) return; > it->popping = EINA_TRUE; > > + evas_object_ref(obj); > if (it->pop_cb) > { > +it->ref++; > if (!it->pop_cb(it->pop_data, (Elm_Object_Item *)it)) >{ > + it->ref--; > + if (it->delete_me) > + { > + _item_del_pre_hook(it); > + _elm_widget_item_free(it); Would you please exchange all calls to this couple of functions by the equally working elm_widget_item_del()? > + } > it->popping = EINA_FALSE; > + evas_object_unref(obj); > + > return; >} > +it->ref--; > } > + evas_object_unref(obj); > > if (sd->preserve) > content = it->content; > diff --git a/src/lib/elm_widget_naviframe.h b/src/lib/elm_widget_naviframe.h > index 83809f9..1b4d3fc 100644 > --- a/src/lib/elm_widget_naviframe.h > +++ b/src/lib/elm_widget_naviframe.h > @@ -57,6 +57,8 @@ struct _Elm_Naviframe_Item > Eina_Booltitle_enabled : 1; > Eina_Boolunfocusable : 1; > Eina_Boolpopping : 1; > + Eina_Booldelete_me : 1; > + int ref; > }; > > typedef struct _Elm_Naviframe_Content_Item_Pair > Elm_Naviframe_Content_Item_Pair; > > -- > > -- Gustavo Lima Chaves Senior Developer @ Intel - Open Source Technology Center -- CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] [EGIT] [core/efl] master 01/01: okay, bring back xrandr < 1.4 compat for ecore_x_randr_output_name_get
On 01/21/2014 10:09 PM, Mike Blumenkrantz wrote: > discomfitor pushed a commit to branch master. > > http://git.enlightenment.org/core/efl.git/commit/?id=052fc85cd34aec41d50e5d8333bac6ee9ba9c7d6 > > commit 052fc85cd34aec41d50e5d8333bac6ee9ba9c7d6 > Author: Mike Blumenkrantz > Date: Tue Jan 21 16:07:38 2014 -0500 > > okay, bring back xrandr < 1.4 compat for ecore_x_randr_output_name_get > > apparently I read the commit order wrong and this fix went in for 1.4.0, > not 1.3.2, which means anyone who has 1.3.2 has been having lots of fun > crashes for the past 24 hours > --- > configure.ac | 4 +--- > src/lib/ecore_x/xlib/ecore_x_randr.c | 15 +++ > 2 files changed, 12 insertions(+), 7 deletions(-) > > diff --git a/configure.ac b/configure.ac > index 2d2e377..373ea6d 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -2875,9 +2875,7 @@ if test "x${want_x11_xlib}" = "xyes" ; then > ECORE_CHECK_X_EXTENSION([Xtest], [XTest.h], [Xtst], [XTestFakeKeyEvent]) > ECORE_CHECK_X_EXTENSION([Xss], [scrnsaver.h], [Xss], > [XScreenSaverSelectInput]) > > - if test echo "$ECORE_X_LIBS" | grep -q Xrandr ; then > - PKG_CHECK_EXISTS([xrandr > 1.3.1], [], [AC_MSG_ERROR([Xrandr >= 1.3.1 > required])]) > - fi > + PKG_CHECK_EXISTS([xrandr > 1.3.2], [AC_DEFINE([XRANDR_GOOD], [1], [good > xrandr])], []) Shouldn't the test be >= 1.4.0 then? S. -- CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] [EGIT] [core/efl] master 01/01: okay, bring back xrandr < 1.4 compat for ecore_x_randr_output_name_get
I got a 1920x1200 monitor and a 1600x900 laptop, works like a charm. But as I said, I don't have time to fix this atm, so if it sucks to much, revert. S. On 01/21/2014 10:35 PM, Chris Michael wrote: > Welcome to the wonderful world of XRandr version vs driver version vs E > version vs .. the world ;) > > Lots of fun waiting for you and Seb here ;) > > BTW, YOU BROKE MY RANDR STUFF !!! > > Configuring monitors in the dialog is totally borked now :( 2 monitors > (1600x9000) and (1920x1080) in a side-by-side config does not work > anymore !!! > > The 1600 is fine. The 1920 ends up w/ half a screen !! > > FIX IT !!! You broke it, you bought it ;) > > dh > > > > On 21/01/14 21:09, Mike Blumenkrantz wrote: >> discomfitor pushed a commit to branch master. >> >> http://git.enlightenment.org/core/efl.git/commit/?id=052fc85cd34aec41d50e5d8333bac6ee9ba9c7d6 >> >> commit 052fc85cd34aec41d50e5d8333bac6ee9ba9c7d6 >> Author: Mike Blumenkrantz >> Date: Tue Jan 21 16:07:38 2014 -0500 >> >> okay, bring back xrandr < 1.4 compat for ecore_x_randr_output_name_get >> >> apparently I read the commit order wrong and this fix went in for >> 1.4.0, not 1.3.2, which means anyone who has 1.3.2 has been having lots of >> fun crashes for the past 24 hours >> --- >>configure.ac | 4 +--- >>src/lib/ecore_x/xlib/ecore_x_randr.c | 15 +++ >>2 files changed, 12 insertions(+), 7 deletions(-) >> >> diff --git a/configure.ac b/configure.ac >> index 2d2e377..373ea6d 100644 >> --- a/configure.ac >> +++ b/configure.ac >> @@ -2875,9 +2875,7 @@ if test "x${want_x11_xlib}" = "xyes" ; then >> ECORE_CHECK_X_EXTENSION([Xtest], [XTest.h], [Xtst], >> [XTestFakeKeyEvent]) >> ECORE_CHECK_X_EXTENSION([Xss], [scrnsaver.h], [Xss], >> [XScreenSaverSelectInput]) >> >> - if test echo "$ECORE_X_LIBS" | grep -q Xrandr ; then >> - PKG_CHECK_EXISTS([xrandr > 1.3.1], [], [AC_MSG_ERROR([Xrandr >= 1.3.1 >> required])]) >> - fi >> + PKG_CHECK_EXISTS([xrandr > 1.3.2], [AC_DEFINE([XRANDR_GOOD], [1], [good >> xrandr])], []) >> >> if test "${want_xpresent}" = "yes"; then >> ECORE_CHECK_X_EXTENSION([Xpresent], [Xpresent.h], [Xpresent], >> [XPresentQueryExtension]) >> diff --git a/src/lib/ecore_x/xlib/ecore_x_randr.c >> b/src/lib/ecore_x/xlib/ecore_x_randr.c >> index b47..db1f109 100644 >> --- a/src/lib/ecore_x/xlib/ecore_x_randr.c >> +++ b/src/lib/ecore_x/xlib/ecore_x_randr.c >> @@ -2206,10 +2206,17 @@ ecore_x_randr_output_name_get(Ecore_X_Window root, >> Ecore_X_Randr_Output output, >> { >> if (info->name) >> { >> - ret = malloc(info->nameLen + 1); >> - memcpy(ret, info->name, info->nameLen); >> - ret[info->nameLen] = 0; >> - if (len) *len = info->nameLen; >> + size_t s; >> +#ifdef XRANDR_GOOD >> + s = info->nameLen; >> +#else >> + /* pre 1.4.0 does not fill in info->nameLen */ >> + s = strlen(info->name); >> +#endif >> + ret = malloc(s + 1); >> + memcpy(ret, info->name, s); >> + ret[s] = 0; >> + if (len) *len = s; >> } >> >> /* free the output info */ >> > > -- > CenturyLink Cloud: The Leader in Enterprise Cloud Services. > Learn Why More Businesses Are Choosing CenturyLink Cloud For > Critical Workloads, Development Environments & Everything In Between. > Get a Quote or Start a Free Trial Today. > http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk > ___ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel -- CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] [EGIT] [core/elementary] master 01/01: [naviframe] Fix to enable item deletion in pop_cb
On Wed, Jan 22, 2014 at 10:17 PM, Gustavo Lima Chaves wrote: > * Jaehyun Cho [2014-01-22 05:14:53 -0800]: > > > hermet pushed a commit to branch master. > > > > > http://git.enlightenment.org/core/elementary.git/commit/?id=bb39f8616f682af873ccf407086f8ce092369a11 > > > > commit bb39f8616f682af873ccf407086f8ce092369a11 > > Author: Jaehyun Cho > > Date: Wed Jan 22 22:13:51 2014 +0900 > > > > [naviframe] Fix to enable item deletion in pop_cb > > > > Summary: Fix to enable item deletion in the registered pop_cb > function > > > > Reviewers: Hermet > > > > Reviewed By: Hermet > > > > CC: seoz > > > > Differential Revision: https://phab.enlightenment.org/D487 > > --- > > src/lib/elc_naviframe.c| 15 +++ > > src/lib/elm_widget_naviframe.h | 2 ++ > > 2 files changed, 17 insertions(+) > > > > diff --git a/src/lib/elc_naviframe.c b/src/lib/elc_naviframe.c > > index a2a1f85..c89fd0a 100644 > > --- a/src/lib/elc_naviframe.c > > +++ b/src/lib/elc_naviframe.c > > @@ -504,6 +504,9 @@ _item_del_pre_hook(Elm_Object_Item *it) > > nit = (Elm_Naviframe_Item *)it; > > ELM_NAVIFRAME_DATA_GET(WIDGET(nit), sd); > > > > + nit->delete_me = EINA_TRUE; > > + if (nit->ref > 0) return EINA_FALSE; > > + > > ecore_animator_del(nit->animator); > > > > top = (it == elm_naviframe_top_item_get(WIDGET(nit))); > > @@ -1696,14 +1699,26 @@ _item_pop(Eo *obj, void *_pd, va_list *list) > > if (it->popping) return; > > it->popping = EINA_TRUE; > > > > + evas_object_ref(obj); > > if (it->pop_cb) > > { > > +it->ref++; > > if (!it->pop_cb(it->pop_data, (Elm_Object_Item *)it)) > >{ > > + it->ref--; > > + if (it->delete_me) > > + { > > + _item_del_pre_hook(it); > > + _elm_widget_item_free(it); > > Would you please exchange all calls to this couple of functions by the > equally working elm_widget_item_del()? > > I just fixed it. Jaehyun, please refer https://git.enlightenment.org/core/elementary.git/commit/?id=c38ba2ee7c4bf30395fb3f67ea9cc8d3f06c1d45 Thanks. Daniel Juyung Seo (SeoZ) > > + } > > it->popping = EINA_FALSE; > > + evas_object_unref(obj); > > + > > return; > >} > > +it->ref--; > > } > > + evas_object_unref(obj); > > > > if (sd->preserve) > > content = it->content; > > diff --git a/src/lib/elm_widget_naviframe.h > b/src/lib/elm_widget_naviframe.h > > index 83809f9..1b4d3fc 100644 > > --- a/src/lib/elm_widget_naviframe.h > > +++ b/src/lib/elm_widget_naviframe.h > > @@ -57,6 +57,8 @@ struct _Elm_Naviframe_Item > > Eina_Booltitle_enabled : 1; > > Eina_Boolunfocusable : 1; > > Eina_Boolpopping : 1; > > + Eina_Booldelete_me : 1; > > + int ref; > > }; > > > > typedef struct _Elm_Naviframe_Content_Item_Pair > Elm_Naviframe_Content_Item_Pair; > > > > -- > > > > > > -- > Gustavo Lima Chaves > Senior Developer @ Intel - Open Source Technology Center > > > -- > CenturyLink Cloud: The Leader in Enterprise Cloud Services. > Learn Why More Businesses Are Choosing CenturyLink Cloud For > Critical Workloads, Development Environments & Everything In Between. > Get a Quote or Start a Free Trial Today. > > http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk > ___ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > -- CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[EGIT] [core/elementary] master 01/01: naviframe: Use elm_widget_item_del() when you want to delete the item data.
seoz pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=c38ba2ee7c4bf30395fb3f67ea9cc8d3f06c1d45 commit c38ba2ee7c4bf30395fb3f67ea9cc8d3f06c1d45 Author: Daniel Juyung Seo Date: Wed Jan 22 23:33:16 2014 +0900 naviframe: Use elm_widget_item_del() when you want to delete the item data. It will call del_pre_func and free the item data. Special thanks to glima for the report. --- src/lib/elc_naviframe.c | 5 + 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/lib/elc_naviframe.c b/src/lib/elc_naviframe.c index c89fd0a..53095c8 100644 --- a/src/lib/elc_naviframe.c +++ b/src/lib/elc_naviframe.c @@ -1707,10 +1707,7 @@ _item_pop(Eo *obj, void *_pd, va_list *list) { it->ref--; if (it->delete_me) - { - _item_del_pre_hook(it); - _elm_widget_item_free(it); - } + elm_widget_item_del(it); it->popping = EINA_FALSE; evas_object_unref(obj); --
Re: [E-devel] [EGIT] [core/efl] master 01/01: okay, bring back xrandr < 1.4 compat for ecore_x_randr_output_name_get
Using HDMI on laptop here. S. On 01/22/2014 03:32 PM, Christopher Michael wrote: > Well, the issue does not happen on my work machines using both VGA and > a DVI connectionHowever it does happen at home on the laptop using > an HDMI connection. Have not had time to dig into it myself yet either > > dh > > On 01/22/2014 02:01 PM, Sebastian Dransfeld wrote: >> I got a 1920x1200 monitor and a 1600x900 laptop, works like a charm. But >> as I said, I don't have time to fix this atm, so if it sucks to much, >> revert. >> >> S. >> >> On 01/21/2014 10:35 PM, Chris Michael wrote: >>> Welcome to the wonderful world of XRandr version vs driver version vs E >>> version vs .. the world ;) >>> >>> Lots of fun waiting for you and Seb here ;) >>> >>> BTW, YOU BROKE MY RANDR STUFF !!! >>> >>> Configuring monitors in the dialog is totally borked now :( 2 monitors >>> (1600x9000) and (1920x1080) in a side-by-side config does not work >>> anymore !!! >>> >>> The 1600 is fine. The 1920 ends up w/ half a screen !! >>> >>> FIX IT !!! You broke it, you bought it ;) >>> >>> dh >>> >>> >>> >>> On 21/01/14 21:09, Mike Blumenkrantz wrote: discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=052fc85cd34aec41d50e5d8333bac6ee9ba9c7d6 commit 052fc85cd34aec41d50e5d8333bac6ee9ba9c7d6 Author: Mike Blumenkrantz Date: Tue Jan 21 16:07:38 2014 -0500 okay, bring back xrandr < 1.4 compat for ecore_x_randr_output_name_get apparently I read the commit order wrong and this fix went in for 1.4.0, not 1.3.2, which means anyone who has 1.3.2 has been having lots of fun crashes for the past 24 hours --- configure.ac | 4 +--- src/lib/ecore_x/xlib/ecore_x_randr.c | 15 +++ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/configure.ac b/configure.ac index 2d2e377..373ea6d 100644 --- a/configure.ac +++ b/configure.ac @@ -2875,9 +2875,7 @@ if test "x${want_x11_xlib}" = "xyes" ; then ECORE_CHECK_X_EXTENSION([Xtest], [XTest.h], [Xtst], [XTestFakeKeyEvent]) ECORE_CHECK_X_EXTENSION([Xss], [scrnsaver.h], [Xss], [XScreenSaverSelectInput]) - if test echo "$ECORE_X_LIBS" | grep -q Xrandr ; then - PKG_CHECK_EXISTS([xrandr > 1.3.1], [], [AC_MSG_ERROR([Xrandr >= 1.3.1 required])]) - fi + PKG_CHECK_EXISTS([xrandr > 1.3.2], [AC_DEFINE([XRANDR_GOOD], [1], [good xrandr])], []) if test "${want_xpresent}" = "yes"; then ECORE_CHECK_X_EXTENSION([Xpresent], [Xpresent.h], [Xpresent], [XPresentQueryExtension]) diff --git a/src/lib/ecore_x/xlib/ecore_x_randr.c b/src/lib/ecore_x/xlib/ecore_x_randr.c index b47..db1f109 100644 --- a/src/lib/ecore_x/xlib/ecore_x_randr.c +++ b/src/lib/ecore_x/xlib/ecore_x_randr.c @@ -2206,10 +2206,17 @@ ecore_x_randr_output_name_get(Ecore_X_Window root, Ecore_X_Randr_Output output, { if (info->name) { - ret = malloc(info->nameLen + 1); - memcpy(ret, info->name, info->nameLen); - ret[info->nameLen] = 0; - if (len) *len = info->nameLen; + size_t s; +#ifdef XRANDR_GOOD + s = info->nameLen; +#else + /* pre 1.4.0 does not fill in info->nameLen */ + s = strlen(info->name); +#endif + ret = malloc(s + 1); + memcpy(ret, info->name, s); + ret[s] = 0; + if (len) *len = s; } /* free the output info */ >>> > > -- CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] [EGIT] [core/efl] master 01/01: okay, bring back xrandr < 1.4 compat for ecore_x_randr_output_name_get
Well, the issue does not happen on my work machines using both VGA and a DVI connectionHowever it does happen at home on the laptop using an HDMI connection. Have not had time to dig into it myself yet either dh On 01/22/2014 02:01 PM, Sebastian Dransfeld wrote: > I got a 1920x1200 monitor and a 1600x900 laptop, works like a charm. But > as I said, I don't have time to fix this atm, so if it sucks to much, > revert. > > S. > > On 01/21/2014 10:35 PM, Chris Michael wrote: >> Welcome to the wonderful world of XRandr version vs driver version vs E >> version vs .. the world ;) >> >> Lots of fun waiting for you and Seb here ;) >> >> BTW, YOU BROKE MY RANDR STUFF !!! >> >> Configuring monitors in the dialog is totally borked now :( 2 monitors >> (1600x9000) and (1920x1080) in a side-by-side config does not work >> anymore !!! >> >> The 1600 is fine. The 1920 ends up w/ half a screen !! >> >> FIX IT !!! You broke it, you bought it ;) >> >> dh >> >> >> >> On 21/01/14 21:09, Mike Blumenkrantz wrote: >>> discomfitor pushed a commit to branch master. >>> >>> http://git.enlightenment.org/core/efl.git/commit/?id=052fc85cd34aec41d50e5d8333bac6ee9ba9c7d6 >>> >>> commit 052fc85cd34aec41d50e5d8333bac6ee9ba9c7d6 >>> Author: Mike Blumenkrantz >>> Date: Tue Jan 21 16:07:38 2014 -0500 >>> >>>okay, bring back xrandr < 1.4 compat for >>> ecore_x_randr_output_name_get >>> >>>apparently I read the commit order wrong and this fix went in for >>> 1.4.0, not 1.3.2, which means anyone who has 1.3.2 has been having lots of >>> fun crashes for the past 24 hours >>> --- >>> configure.ac | 4 +--- >>> src/lib/ecore_x/xlib/ecore_x_randr.c | 15 +++ >>> 2 files changed, 12 insertions(+), 7 deletions(-) >>> >>> diff --git a/configure.ac b/configure.ac >>> index 2d2e377..373ea6d 100644 >>> --- a/configure.ac >>> +++ b/configure.ac >>> @@ -2875,9 +2875,7 @@ if test "x${want_x11_xlib}" = "xyes" ; then >>>ECORE_CHECK_X_EXTENSION([Xtest], [XTest.h], [Xtst], >>> [XTestFakeKeyEvent]) >>>ECORE_CHECK_X_EXTENSION([Xss], [scrnsaver.h], [Xss], >>> [XScreenSaverSelectInput]) >>> >>> - if test echo "$ECORE_X_LIBS" | grep -q Xrandr ; then >>> - PKG_CHECK_EXISTS([xrandr > 1.3.1], [], [AC_MSG_ERROR([Xrandr >= >>> 1.3.1 required])]) >>> - fi >>> + PKG_CHECK_EXISTS([xrandr > 1.3.2], [AC_DEFINE([XRANDR_GOOD], [1], [good >>> xrandr])], []) >>> >>>if test "${want_xpresent}" = "yes"; then >>> ECORE_CHECK_X_EXTENSION([Xpresent], [Xpresent.h], [Xpresent], >>> [XPresentQueryExtension]) >>> diff --git a/src/lib/ecore_x/xlib/ecore_x_randr.c >>> b/src/lib/ecore_x/xlib/ecore_x_randr.c >>> index b47..db1f109 100644 >>> --- a/src/lib/ecore_x/xlib/ecore_x_randr.c >>> +++ b/src/lib/ecore_x/xlib/ecore_x_randr.c >>> @@ -2206,10 +2206,17 @@ ecore_x_randr_output_name_get(Ecore_X_Window root, >>> Ecore_X_Randr_Output output, >>> { >>> if (info->name) >>>{ >>> - ret = malloc(info->nameLen + 1); >>> - memcpy(ret, info->name, info->nameLen); >>> - ret[info->nameLen] = 0; >>> - if (len) *len = info->nameLen; >>> + size_t s; >>> +#ifdef XRANDR_GOOD >>> + s = info->nameLen; >>> +#else >>> + /* pre 1.4.0 does not fill in info->nameLen */ >>> + s = strlen(info->name); >>> +#endif >>> + ret = malloc(s + 1); >>> + memcpy(ret, info->name, s); >>> + ret[s] = 0; >>> + if (len) *len = s; >>>} >>> >>> /* free the output info */ >>> >> -- CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[EGIT] [core/elementary] master 01/01: theme - win shadow - stack under all so pulsing icon is not BELOW the shadow.
raster pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=1241390d2f833928bede7dd8f4034d17933ebb83 commit 1241390d2f833928bede7dd8f4034d17933ebb83 Author: Carsten Haitzler (Rasterman) Date: Thu Jan 23 00:28:13 2014 +0900 theme - win shadow - stack under all so pulsing icon is not BELOW the shadow. --- data/themes/edc/border.edc | 50 +++--- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/data/themes/edc/border.edc b/data/themes/edc/border.edc index 5cf70df..fedba2e 100644 --- a/data/themes/edc/border.edc +++ b/data/themes/edc/border.edc @@ -23,6 +23,31 @@ group { name: "e/widgets/border/default/border"; images.image: "win_shadow.png" COMP; data.item: "shadow" "1"; parts { + part { name: "shadow_clip"; type: RECT; mouse_events: 0; + description { state: "default"; +rel1.to: "shadow"; +rel2.to: "shadow"; + } + description { state: "hidden"; +visible: 0; + } + } + part { name: "shadow"; mouse_events: 0; clip_to: "shadow_clip"; + description { state: "default" 0.0; +image.normal: "win_shadow.png"; +image.border: 14 14 14 14; +image.middle: 0; +rel1.to: "top"; +rel1.offset: -7 -3; +rel2.to: "bottom"; +rel2.offset: 6 11; +fill.smooth: 0; + } + description { state: "shaded"; +inherit: "default"; +rel2.to: "top"; + } + } part { name: "client_clip"; type: RECT; mouse_events: 0; description { state: "default" 0.0; rel1.to_y: "e.swallow.client"; @@ -431,31 +456,6 @@ group { name: "e/widgets/border/default/border"; visible: 0; } } - part { name: "shadow_clip"; type: RECT; mouse_events: 0; - description { state: "default"; -rel1.to: "shadow"; -rel2.to: "shadow"; - } - description { state: "hidden"; -visible: 0; - } - } - part { name: "shadow"; mouse_events: 0; clip_to: "shadow_clip"; - description { state: "default" 0.0; -image.normal: "win_shadow.png"; -image.border: 14 14 14 14; -image.middle: 0; -rel1.to: "top"; -rel1.offset: -7 -3; -rel2.to: "bottom"; -rel2.offset: 6 11; -fill.smooth: 0; - } - description { state: "shaded"; -inherit: "default"; -rel2.to: "top"; - } - } part { name: "e.event.resize.bl"; type: RECT; description { state: "default" 0.0; rel1.relative: 0.0 1.0; --
Re: [E-devel] [EGIT] [core/efl] master 01/01: okay, bring back xrandr < 1.4 compat for ecore_x_randr_output_name_get
I have some connectors in the mail which will allow me to spend time working on this. I think at least some of the changes made were worthwhile given that we now have people who were previously unable to use randr able to use it, so it shouldn't be too hard to fix the remaining issues. If you want to point out or manually revert the sections that you know are wrong/unnecessary, that would speed up my work. On Wed, 22 Jan 2014 14:32:51 + Christopher Michael wrote: > Well, the issue does not happen on my work machines using both VGA and a > DVI connectionHowever it does happen at home on the laptop using an > HDMI connection. Have not had time to dig into it myself yet either > > dh > > On 01/22/2014 02:01 PM, Sebastian Dransfeld wrote: > > I got a 1920x1200 monitor and a 1600x900 laptop, works like a charm. But > > as I said, I don't have time to fix this atm, so if it sucks to much, > > revert. > > > > S. > > > > On 01/21/2014 10:35 PM, Chris Michael wrote: > >> Welcome to the wonderful world of XRandr version vs driver version vs E > >> version vs .. the world ;) > >> > >> Lots of fun waiting for you and Seb here ;) > >> > >> BTW, YOU BROKE MY RANDR STUFF !!! > >> > >> Configuring monitors in the dialog is totally borked now :( 2 monitors > >> (1600x9000) and (1920x1080) in a side-by-side config does not work > >> anymore !!! > >> > >> The 1600 is fine. The 1920 ends up w/ half a screen !! > >> > >> FIX IT !!! You broke it, you bought it ;) > >> > >> dh > >> > >> > >> > >> On 21/01/14 21:09, Mike Blumenkrantz wrote: > >>> discomfitor pushed a commit to branch master. > >>> > >>> http://git.enlightenment.org/core/efl.git/commit/?id=052fc85cd34aec41d50e5d8333bac6ee9ba9c7d6 > >>> > >>> commit 052fc85cd34aec41d50e5d8333bac6ee9ba9c7d6 > >>> Author: Mike Blumenkrantz > >>> Date: Tue Jan 21 16:07:38 2014 -0500 > >>> > >>>okay, bring back xrandr < 1.4 compat for > >>> ecore_x_randr_output_name_get > >>> > >>>apparently I read the commit order wrong and this fix went in for > >>> 1.4.0, not 1.3.2, which means anyone who has 1.3.2 has been having lots > >>> of fun crashes for the past 24 hours > >>> --- > >>> configure.ac | 4 +--- > >>> src/lib/ecore_x/xlib/ecore_x_randr.c | 15 +++ > >>> 2 files changed, 12 insertions(+), 7 deletions(-) > >>> > >>> diff --git a/configure.ac b/configure.ac > >>> index 2d2e377..373ea6d 100644 > >>> --- a/configure.ac > >>> +++ b/configure.ac > >>> @@ -2875,9 +2875,7 @@ if test "x${want_x11_xlib}" = "xyes" ; then > >>>ECORE_CHECK_X_EXTENSION([Xtest], [XTest.h], [Xtst], > >>> [XTestFakeKeyEvent]) > >>>ECORE_CHECK_X_EXTENSION([Xss], [scrnsaver.h], [Xss], > >>> [XScreenSaverSelectInput]) > >>> > >>> - if test echo "$ECORE_X_LIBS" | grep -q Xrandr ; then > >>> - PKG_CHECK_EXISTS([xrandr > 1.3.1], [], [AC_MSG_ERROR([Xrandr >= > >>> 1.3.1 required])]) > >>> - fi > >>> + PKG_CHECK_EXISTS([xrandr > 1.3.2], [AC_DEFINE([XRANDR_GOOD], [1], > >>> [good xrandr])], []) > >>> > >>>if test "${want_xpresent}" = "yes"; then > >>> ECORE_CHECK_X_EXTENSION([Xpresent], [Xpresent.h], [Xpresent], > >>> [XPresentQueryExtension]) > >>> diff --git a/src/lib/ecore_x/xlib/ecore_x_randr.c > >>> b/src/lib/ecore_x/xlib/ecore_x_randr.c > >>> index b47..db1f109 100644 > >>> --- a/src/lib/ecore_x/xlib/ecore_x_randr.c > >>> +++ b/src/lib/ecore_x/xlib/ecore_x_randr.c > >>> @@ -2206,10 +2206,17 @@ ecore_x_randr_output_name_get(Ecore_X_Window > >>> root, Ecore_X_Randr_Output output, > >>> { > >>> if (info->name) > >>>{ > >>> - ret = malloc(info->nameLen + 1); > >>> - memcpy(ret, info->name, info->nameLen); > >>> - ret[info->nameLen] = 0; > >>> - if (len) *len = info->nameLen; > >>> + size_t s; > >>> +#ifdef XRANDR_GOOD > >>> + s = info->nameLen; > >>> +#else > >>> + /* pre 1.4.0 does not fill in info->nameLen */ > >>> + s = strlen(info->name); > >>> +#endif > >>> + ret = malloc(s + 1); > >>> + memcpy(ret, info->name, s); > >>> + ret[s] = 0; > >>> + if (len) *len = s; > >>>} > >>> > >>> /* free the output info */ > >>> > >> > -- CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] [EGIT] [core/efl] master 01/01: okay, bring back xrandr < 1.4 compat for ecore_x_randr_output_name_get
Interesting ... I even tried nuking the e_randr.cfg files too, but no luck. Oh well, not that important ... xrandr cli to the rescue ;) dh On 01/22/2014 02:51 PM, Sebastian Dransfeld wrote: > Using HDMI on laptop here. > > S. > > On 01/22/2014 03:32 PM, Christopher Michael wrote: >> Well, the issue does not happen on my work machines using both VGA and >> a DVI connectionHowever it does happen at home on the laptop using >> an HDMI connection. Have not had time to dig into it myself yet either >> >> dh >> >> On 01/22/2014 02:01 PM, Sebastian Dransfeld wrote: >>> I got a 1920x1200 monitor and a 1600x900 laptop, works like a charm. But >>> as I said, I don't have time to fix this atm, so if it sucks to much, >>> revert. >>> >>> S. >>> >>> On 01/21/2014 10:35 PM, Chris Michael wrote: Welcome to the wonderful world of XRandr version vs driver version vs E version vs .. the world ;) Lots of fun waiting for you and Seb here ;) BTW, YOU BROKE MY RANDR STUFF !!! Configuring monitors in the dialog is totally borked now :( 2 monitors (1600x9000) and (1920x1080) in a side-by-side config does not work anymore !!! The 1600 is fine. The 1920 ends up w/ half a screen !! FIX IT !!! You broke it, you bought it ;) dh On 21/01/14 21:09, Mike Blumenkrantz wrote: > discomfitor pushed a commit to branch master. > > http://git.enlightenment.org/core/efl.git/commit/?id=052fc85cd34aec41d50e5d8333bac6ee9ba9c7d6 > > > commit 052fc85cd34aec41d50e5d8333bac6ee9ba9c7d6 > Author: Mike Blumenkrantz > Date: Tue Jan 21 16:07:38 2014 -0500 > > okay, bring back xrandr < 1.4 compat for > ecore_x_randr_output_name_get > > apparently I read the commit order wrong and this fix went > in for 1.4.0, not 1.3.2, which means anyone who has 1.3.2 has been > having lots of fun crashes for the past 24 hours > --- > configure.ac | 4 +--- > src/lib/ecore_x/xlib/ecore_x_randr.c | 15 +++ > 2 files changed, 12 insertions(+), 7 deletions(-) > > diff --git a/configure.ac b/configure.ac > index 2d2e377..373ea6d 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -2875,9 +2875,7 @@ if test "x${want_x11_xlib}" = "xyes" ; then > ECORE_CHECK_X_EXTENSION([Xtest], [XTest.h], [Xtst], > [XTestFakeKeyEvent]) > ECORE_CHECK_X_EXTENSION([Xss], [scrnsaver.h], [Xss], > [XScreenSaverSelectInput]) > > - if test echo "$ECORE_X_LIBS" | grep -q Xrandr ; then > - PKG_CHECK_EXISTS([xrandr > 1.3.1], [], [AC_MSG_ERROR([Xrandr >> = 1.3.1 required])]) > - fi > + PKG_CHECK_EXISTS([xrandr > 1.3.2], [AC_DEFINE([XRANDR_GOOD], > [1], [good xrandr])], []) > > if test "${want_xpresent}" = "yes"; then >ECORE_CHECK_X_EXTENSION([Xpresent], [Xpresent.h], > [Xpresent], [XPresentQueryExtension]) > diff --git a/src/lib/ecore_x/xlib/ecore_x_randr.c > b/src/lib/ecore_x/xlib/ecore_x_randr.c > index b47..db1f109 100644 > --- a/src/lib/ecore_x/xlib/ecore_x_randr.c > +++ b/src/lib/ecore_x/xlib/ecore_x_randr.c > @@ -2206,10 +2206,17 @@ > ecore_x_randr_output_name_get(Ecore_X_Window root, > Ecore_X_Randr_Output output, >{ > if (info->name) > { > - ret = malloc(info->nameLen + 1); > - memcpy(ret, info->name, info->nameLen); > - ret[info->nameLen] = 0; > - if (len) *len = info->nameLen; > + size_t s; > +#ifdef XRANDR_GOOD > + s = info->nameLen; > +#else > + /* pre 1.4.0 does not fill in info->nameLen */ > + s = strlen(info->name); > +#endif > + ret = malloc(s + 1); > + memcpy(ret, info->name, s); > + ret[s] = 0; > + if (len) *len = s; > } > > /* free the output info */ > >> >> > -- CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[EGIT] [core/elementary] master 02/02: spinner: Uncomment ctype.h inclusion because isspace is used.
seoz pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=54865bd7aa826018dcd051930c335b22fe48793e commit 54865bd7aa826018dcd051930c335b22fe48793e Author: Daniel Juyung Seo Date: Thu Jan 23 01:24:42 2014 +0900 spinner: Uncomment ctype.h inclusion because isspace is used. It looks like ctype.h is included in some other headers by luck but it is recommended to explicitly include the necessary header. Confirmed by glima as he commented this out. --- src/lib/elm_spinner.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/elm_spinner.c b/src/lib/elm_spinner.c index d8c59e7..c8b237e 100644 --- a/src/lib/elm_spinner.c +++ b/src/lib/elm_spinner.c @@ -3,7 +3,7 @@ #endif #include -//#include +#include #include "elm_priv.h" #include "elm_widget_spinner.h" --
[EGIT] [core/elementary] master 01/01: test_hoversel: Change the hoversel button text when an hoversel item is selected.
seoz pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=dcbf67bfe9da921184485b1c5e21c9f7c33e2c33 commit dcbf67bfe9da921184485b1c5e21c9f7c33e2c33 Author: Daniel Juyung Seo Date: Thu Jan 23 01:51:04 2014 +0900 test_hoversel: Change the hoversel button text when an hoversel item is selected. This reveals hoversel bug on mobile profile that changes the size of text parts on continuous item change. --- src/bin/test_hoversel.c | 6 -- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bin/test_hoversel.c b/src/bin/test_hoversel.c index 153ae50..b7a9c11 100644 --- a/src/bin/test_hoversel.c +++ b/src/bin/test_hoversel.c @@ -104,8 +104,10 @@ static void _hoversel_selected_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) { - printf("'selected' callback is called. (selected item : %s)\n", - elm_object_item_text_get(event_info)); + const char *txt = elm_object_item_text_get(event_info); + + printf("'selected' callback is called. (selected item : %s)\n", txt); + elm_object_text_set(obj, txt); } static void --
[EGIT] [core/elementary] master 01/02: spinner: Internal code clean up for spinner.
seoz pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=d968878321305c3c535f8075b24864084b9d8b8c commit d968878321305c3c535f8075b24864084b9d8b8c Author: Daniel Juyung Seo Date: Thu Jan 23 00:11:48 2014 +0900 spinner: Internal code clean up for spinner. - Used macro for constant. - Changed timer name to be more descriptive. - Added descriptions about timers. --- src/lib/elm_spinner.c| 20 src/lib/elm_widget_spinner.h | 9 + 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/lib/elm_spinner.c b/src/lib/elm_spinner.c index 50cde23..d8c59e7 100644 --- a/src/lib/elm_spinner.c +++ b/src/lib/elm_spinner.c @@ -17,6 +17,8 @@ EAPI Eo_Op ELM_OBJ_SPINNER_BASE_ID = EO_NOOP; #define MY_CLASS_NAME "Elm_Spinner" #define MY_CLASS_NAME_LEGACY "elm_spinner" +#define ELM_SPINNER_DELAY_CHANGE_TIME 0.2 + static const char SIG_CHANGED[] = "changed"; static const char SIG_DRAG_START[] = "spinner,drag,start"; static const char SIG_DRAG_STOP[] = "spinner,drag,stop"; @@ -114,11 +116,11 @@ apply: } static Eina_Bool -_delay_change(void *data) +_delay_change_timer_cb(void *data) { ELM_SPINNER_DATA_GET(data, sd); - sd->delay_timer = NULL; + sd->delay_change_timer = NULL; evas_object_smart_callback_call(data, SIG_DELAY_CHANGED, NULL); return ECORE_CALLBACK_CANCEL; @@ -153,8 +155,9 @@ _value_set(Evas_Object *obj, sd->val = new_val; evas_object_smart_callback_call(obj, SIG_CHANGED, NULL); - ecore_timer_del(sd->delay_timer); - sd->delay_timer = ecore_timer_add(0.2, _delay_change, obj); + ecore_timer_del(sd->delay_change_timer); + sd->delay_change_timer = ecore_timer_add(ELM_SPINNER_DELAY_CHANGE_TIME, +_delay_change_timer_cb, obj); return EINA_TRUE; } @@ -266,8 +269,9 @@ _entry_activated_cb(void *data, _entry_value_apply(data); evas_object_smart_callback_call(data, SIG_CHANGED, NULL); - ecore_timer_del(sd->delay_timer); - sd->delay_timer = ecore_timer_add(0.2, _delay_change, data); + ecore_timer_del(sd->delay_change_timer); + sd->delay_change_timer = ecore_timer_add(ELM_SPINNER_DELAY_CHANGE_TIME, +_delay_change_timer_cb, data); } static void @@ -547,7 +551,7 @@ _elm_spinner_smart_on_focus(Eo *obj, void *_pd EINA_UNUSED, va_list *list) if (!elm_widget_focus_get(obj)) { -ELM_SAFE_FREE(sd->delay_timer, ecore_timer_del); +ELM_SAFE_FREE(sd->delay_change_timer, ecore_timer_del); ELM_SAFE_FREE(sd->spin_timer, ecore_timer_del); _entry_value_apply(obj); @@ -740,7 +744,7 @@ _elm_spinner_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED) Elm_Spinner_Smart_Data *sd = _pd; eina_stringshare_del(sd->label); - ecore_timer_del(sd->delay_timer); + ecore_timer_del(sd->delay_change_timer); ecore_timer_del(sd->spin_timer); if (sd->special_values) diff --git a/src/lib/elm_widget_spinner.h b/src/lib/elm_widget_spinner.h index 6d13d0f..b4225c2 100644 --- a/src/lib/elm_widget_spinner.h +++ b/src/lib/elm_widget_spinner.h @@ -25,12 +25,13 @@ struct _Elm_Spinner_Smart_Data Evas_Object *ent; const char *label; doubleval, val_min, val_max, val_base; - doublestep; // step for the value change. 1 by default. - doubledrag_start_val; // spinner value on drag start. - // this is reset to 0 when drag stops. + doublestep; /*<< step for the value change. 1 by default. */ + doubledrag_start_val; /*<< spinner value on drag start. + this is reset to 0 when drag stops. */ doublespin_speed, interval, first_interval; int round; - Ecore_Timer *delay_timer, *spin_timer; + Ecore_Timer *delay_change_timer; /*<< a timer for a delay,changed smart callback */ + Ecore_Timer *spin_timer; /*<< a timer for a repeated spinner value change on mouse down */ Eina_List*special_values; Eina_Bool entry_visible : 1; --
[EGIT] [apps/terminology] master 03/05: avoid double free
billiob pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=5f482aff7b3efe219b46fac5bca960286e2f060f commit 5f482aff7b3efe219b46fac5bca960286e2f060f Author: Boris Faure Date: Wed Jan 22 22:50:05 2014 +0100 avoid double free --- src/bin/main.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bin/main.c b/src/bin/main.c index caa761e..3d6c94d 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -2988,6 +2988,7 @@ remote: if (!wn) { config_del(config); +config = NULL; retval = EXIT_FAILURE; goto end; } --
[EGIT] [apps/terminology] master 02/05: fix CID 1162823: Dereference before null check
billiob pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=dc764b68b9ab7986926c1aa59e85a09711464921 commit dc764b68b9ab7986926c1aa59e85a09711464921 Author: Boris Faure Date: Wed Jan 22 22:21:05 2014 +0100 fix CID 1162823: Dereference before null check --- src/bin/options_wallpaper.c | 13 +++-- 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/bin/options_wallpaper.c b/src/bin/options_wallpaper.c index d393d1a..109b7d3 100644 --- a/src/bin/options_wallpaper.c +++ b/src/bin/options_wallpaper.c @@ -163,22 +163,23 @@ _item_selected(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED } } -static void +static void _insert_gengrid_item(Insert_Gen_Grid_Item_Notify *msg_data) { Insert_Gen_Grid_Item_Notify *insert_msg = msg_data; - Background_Item *item = insert_msg->item; - Elm_Gengrid_Item_Class *item_class = insert_msg->class; Config *config = termio_config_get(_term); - if (insert_msg && item && item_class && config) + if (insert_msg && insert_msg->item && insert_msg->class && config) { +Background_Item *item = insert_msg->item; +Elm_Gengrid_Item_Class *item_class = insert_msg->class; + item->item = elm_gengrid_item_append(_bg_grid, item_class, item, _item_selected, item); if ((!item->path) && (!config->background)) { elm_gengrid_item_selected_set(item->item, EINA_TRUE); - elm_gengrid_item_bring_in(item->item, + elm_gengrid_item_bring_in(item->item, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE); } else if ((item->path) && (config->background)) @@ -186,7 +187,7 @@ _insert_gengrid_item(Insert_Gen_Grid_Item_Notify *msg_data) if (strcmp(item->path, config->background) == 0) { elm_gengrid_item_selected_set(item->item, EINA_TRUE); - elm_gengrid_item_bring_in(item->item, + elm_gengrid_item_bring_in(item->item, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE); } } --
[EGIT] [apps/terminology] master 05/05: fix typo: CID 1100646
billiob pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=4602641ac0f799e8676618f25426b1bea6f75407 commit 4602641ac0f799e8676618f25426b1bea6f75407 Author: Boris Faure Date: Wed Jan 22 22:53:48 2014 +0100 fix typo: CID 1100646 --- src/bin/termptyesc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/termptyesc.c b/src/bin/termptyesc.c index ec5a33c..84e6dca 100644 --- a/src/bin/termptyesc.c +++ b/src/bin/termptyesc.c @@ -1041,7 +1041,7 @@ _handle_esc_xterm(Termpty *ty, const Eina_Unicode *c, Eina_Unicode *ce) ty->prop.icon = NULL; } if (ty->cb.set_title.func) ty->cb.set_title.func(ty->cb.set_title.data); -if (ty->cb.set_icon.func) ty->cb.set_title.func(ty->cb.set_icon.data); +if (ty->cb.set_icon.func) ty->cb.set_icon.func(ty->cb.set_icon.data); break; case '1': // XXX: icon name - callback --
[EGIT] [apps/terminology] master 04/05: remove dead code: CID 1100658
billiob pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=defca7b58b691bd7eb7064e63e4720baa7458a89 commit defca7b58b691bd7eb7064e63e4720baa7458a89 Author: Boris Faure Date: Wed Jan 22 22:52:27 2014 +0100 remove dead code: CID 1100658 --- src/bin/termptyesc.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/bin/termptyesc.c b/src/bin/termptyesc.c index 9f7de34..ec5a33c 100644 --- a/src/bin/termptyesc.c +++ b/src/bin/termptyesc.c @@ -427,7 +427,6 @@ _handle_esc_csi(Termpty *ty, const Eina_Unicode *c, Eina_Unicode *ce) arg = _csi_arg_get(&b); if (arg < 1) arg = 1; arg--; - if (arg < 0) arg = 0; else if (arg >= ty->h) arg = ty->h - 1; if (b) { --
[EGIT] [apps/terminology] master 01/05: fix pasting for real… Closes T706
billiob pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=fd43c274c19fc69a015ca7e51d92ed6fa4e5a3e2 commit fd43c274c19fc69a015ca7e51d92ed6fa4e5a3e2 Author: Boris Faure Date: Wed Jan 22 22:12:01 2014 +0100 fix pasting for real… Closes T706 --- src/bin/termio.c | 45 +++-- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/src/bin/termio.c b/src/bin/termio.c index 44b697c..ddc1050 100644 --- a/src/bin/termio.c +++ b/src/bin/termio.c @@ -1831,36 +1831,37 @@ _getsel_cb(void *data, Evas_Object *obj EINA_UNUSED, Elm_Selection_Data *ev) if (ev->format == ELM_SEL_FORMAT_TEXT) { -if (ev->len > 0) +char *tmp; + +if (ev->len <= 0) return EINA_TRUE; + +tmp = malloc(ev->len); +if (tmp) { - char *tmp; + char *s = ev->data; + size_t i; // apparently we have to convert \n into \r in terminal land. - tmp = malloc(ev->len + 1); - if (tmp) + for (i = 0; i < ev->len && s[i]; i++) + { + tmp[i] = s[i]; + if (tmp[i] == '\n') tmp[i] = '\r'; + } + if (i) { - char *s = ev->data; - size_t i; - - tmp[ev->len] = '\0'; - for (i = 0; i < ev->len; i++) -{ - tmp[i] = s[i]; - if (tmp[i] == '\n') tmp[i] = '\r'; -} - - if (sd->pty->state.bracketed_paste) - termpty_write(sd->pty, "\x1b[200~", -sizeof("\x1b[200~") - 1); - termpty_write(sd->pty, tmp, ev->len); +if (sd->pty->state.bracketed_paste) + termpty_write(sd->pty, "\x1b[200~", +sizeof("\x1b[200~") - 1); - if (sd->pty->state.bracketed_paste) - termpty_write(sd->pty, "\x1b[201~", -sizeof("\x1b[201~") - 1); +termpty_write(sd->pty, tmp, i); - free(tmp); +if (sd->pty->state.bracketed_paste) + termpty_write(sd->pty, "\x1b[201~", +sizeof("\x1b[201~") - 1); } + + free(tmp); } } else --
[EGIT] [apps/terminology] master 01/01: oops
billiob pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=ab9243b94f2baafa1dfa9a6c18f16f6355d9113d commit ab9243b94f2baafa1dfa9a6c18f16f6355d9113d Author: Boris Faure Date: Wed Jan 22 23:19:11 2014 +0100 oops --- src/bin/termptyesc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/termptyesc.c b/src/bin/termptyesc.c index 84e6dca..a80e162 100644 --- a/src/bin/termptyesc.c +++ b/src/bin/termptyesc.c @@ -427,7 +427,7 @@ _handle_esc_csi(Termpty *ty, const Eina_Unicode *c, Eina_Unicode *ce) arg = _csi_arg_get(&b); if (arg < 1) arg = 1; arg--; - else if (arg >= ty->h) arg = ty->h - 1; + if (arg >= ty->h) arg = ty->h - 1; if (b) { ty->state.cy = arg; --
[EGIT] [apps/terminology] master 01/01: fix wrong cast. thanks to OnlyHuman
billiob pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=7cc50d4e055a29c28aab3e614eae4848ce70ac33 commit 7cc50d4e055a29c28aab3e614eae4848ce70ac33 Author: Boris Faure Date: Wed Jan 22 23:22:42 2014 +0100 fix wrong cast. thanks to OnlyHuman --- src/bin/termpty.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/termpty.c b/src/bin/termpty.c index d7899eb..0fcd6f5 100644 --- a/src/bin/termpty.c +++ b/src/bin/termpty.c @@ -56,7 +56,7 @@ _handle_buf(Termpty *ty, const Eina_Unicode *codepoints, int len) Eina_Unicode *c, *ce, *b; int n, bytes; - c = (int *)codepoints; + c = (Eina_Unicode *)codepoints; ce = &(c[len]); if (ty->buf) --
[EGIT] [core/efl] master 01/01: embryo_cc - remove trainling / from path for windows stat so it works
raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=1c2da046dccd68f606504bc2029e3e6425293390 commit 1c2da046dccd68f606504bc2029e3e6425293390 Author: Carsten Haitzler (Rasterman) Date: Thu Jan 23 08:45:44 2014 +0900 embryo_cc - remove trainling / from path for windows stat so it works --- src/bin/embryo/embryo_cc_sc1.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/embryo/embryo_cc_sc1.c b/src/bin/embryo/embryo_cc_sc1.c index 391cf98..f296c00 100644 --- a/src/bin/embryo/embryo_cc_sc1.c +++ b/src/bin/embryo/embryo_cc_sc1.c @@ -574,7 +574,7 @@ parseoptions(int argc, char **argv, char *iname, char *oname, if (getenv("EFL_RUN_IN_TREE")) { struct stat st; -snprintf(str, sizeof(str), "%s/data/embryo/", PACKAGE_SRC_DIR); +snprintf(str, sizeof(str), "%s/data/embryo", PACKAGE_SRC_DIR); if (stat(str, &st) != 0) str[0] = '\0'; } --
[EGIT] [core/efl] master 01/01: Add ecore_imf_context_selection_get API to allow Input Method to get the selected text.
jihoon pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=fa165f09022d2d002ed0ccdf05cc7ee00735c4a3 commit fa165f09022d2d002ed0ccdf05cc7ee00735c4a3 Author: Jihoon Kim Date: Thu Jan 23 10:44:00 2014 +0900 Add ecore_imf_context_selection_get API to allow Input Method to get the selected text. --- src/lib/ecore_imf/Ecore_IMF.h | 36 ++ src/lib/ecore_imf/ecore_imf_context.c | 37 +++ src/lib/ecore_imf/ecore_imf_private.h | 2 ++ 3 files changed, 75 insertions(+) diff --git a/src/lib/ecore_imf/Ecore_IMF.h b/src/lib/ecore_imf/Ecore_IMF.h index ee1c249..2d96a22 100644 --- a/src/lib/ecore_imf/Ecore_IMF.h +++ b/src/lib/ecore_imf/Ecore_IMF.h @@ -908,6 +908,20 @@ EAPI void ecore_imf_context_use_preedit_set(Ecore_IMF_C EAPI void ecore_imf_context_retrieve_surrounding_callback_set(Ecore_IMF_Context *ctx, Eina_Bool (*func)(void *data, Ecore_IMF_Context *ctx, char **text, int *cursor_pos), const void *data); /** + * Set the callback to be used on selection_get request. + * + * This callback will be called when the Input Method Context + * module requests the selection context. + * + * @param ctx An #Ecore_IMF_Context. + * @param func The callback to be called. + * @param data The data pointer to be passed to @p func + * @ingroup Ecore_IMF_Context_Group + * @since 1.9.0 + */ +EAPI void ecore_imf_context_retrieve_selection_callback_set(Ecore_IMF_Context *ctx, Eina_Bool (*func)(void *data, Ecore_IMF_Context *ctx, char **text), const void *data); + +/** * Set the input mode used by the Ecore Input Context. * * The input mode can be one of the input modes defined in @@ -1044,6 +1058,28 @@ EAPI void *ecore_imf_context_data_get(Ecore_IMF_Context EAPI Eina_Bool ecore_imf_context_surrounding_get(Ecore_IMF_Context *ctx, char **text, int *cursor_pos); /** + * Retrieve the selected text. + * + * This function is implemented by calling the + * Ecore_IMF_Context::retrieve_selection_func ( + * set using #ecore_imf_context_retrieve_selection_callback_set). + * + * There is no obligation for a widget to respond to the + * retrieve_surrounding_func, so input methods must be prepared + * to function without context. + * + * @param ctx An #Ecore_IMF_Context. + * @param text Location to store a UTF-8 encoded string of the selected text. + * If the function returns @c EINA_TRUE, then you must free + * the result stored in this location with free(). + * @return @c EINA_TRUE if selected text was provided; otherwise + * @c EINA_FALSE. + * @ingroup Ecore_IMF_Context_Module_Group + * @since 1.9.0 + */ +EAPI Eina_Bool ecore_imf_context_selection_get(Ecore_IMF_Context *ctx, char **text); + +/** * Adds ECORE_IMF_EVENT_PREEDIT_START to the event queue. * * ECORE_IMF_EVENT_PREEDIT_START should be added when a new preedit sequence starts. diff --git a/src/lib/ecore_imf/ecore_imf_context.c b/src/lib/ecore_imf/ecore_imf_context.c index 63c41c8..7b554e6 100644 --- a/src/lib/ecore_imf/ecore_imf_context.c +++ b/src/lib/ecore_imf/ecore_imf_context.c @@ -462,6 +462,20 @@ ecore_imf_context_retrieve_surrounding_callback_set(Ecore_IMF_Context *ctx, Eina } EAPI void +ecore_imf_context_retrieve_selection_callback_set(Ecore_IMF_Context *ctx, Eina_Bool (*func)(void *data, Ecore_IMF_Context *ctx, char **text), const void *data) +{ + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { +ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_retrieve_selection_callback_set"); +return; + } + + ctx->retrieve_selection_func = func; + ctx->retrieve_selection_data = (void *) data; +} + +EAPI void ecore_imf_context_input_mode_set(Ecore_IMF_Context *ctx, Ecore_IMF_Input_Mode input_mode) { if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) @@ -563,6 +577,29 @@ ecore_imf_context_surrounding_get(Ecore_IMF_Context *ctx, char **text, int *curs return result; } +EAPI Eina_Bool +ecore_imf_context_selection_get(Ecore_IMF_Context *ctx, char **text) +{ + Eina_Bool result = EINA_FALSE; + + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { +ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_selection_get"); +return EINA_FALSE; + } + + if (ctx->retrieve_selection_func) + { +result = ctx->retrieve_selection_func(ctx->retrieve_selection_data, ctx, text); +if (!result) + { + if (text) *text = NULL; + } + } + return result; +} + static void _ecore_imf_event_free_preedit(void *data EINA_UNUSED, void *event) { diff --git a/src/lib/ecore_imf/ecore_imf_private.h b/src/lib/ecore_imf/ecore_imf_private.h index 81d71c9..d6bf257 100644 --- a/src/lib/ecore_imf/ecore_imf_private.h
[EGIT] [core/efl] master 01/01: ecore_imf: Add selection_set callback type to allow Input Method to select a region of text
jihoon pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=7b30c414432019a602c6c0ea4c76e4ad14ad19d7 commit 7b30c414432019a602c6c0ea4c76e4ad14ad19d7 Author: Jihoon Kim Date: Thu Jan 23 11:02:51 2014 +0900 ecore_imf: Add selection_set callback type to allow Input Method to select a region of text --- src/lib/ecore_imf/Ecore_IMF.h | 11 ++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/lib/ecore_imf/Ecore_IMF.h b/src/lib/ecore_imf/Ecore_IMF.h index 2d96a22..f4521fb 100644 --- a/src/lib/ecore_imf/Ecore_IMF.h +++ b/src/lib/ecore_imf/Ecore_IMF.h @@ -107,6 +107,7 @@ typedef struct _Ecore_IMF_Event_Preedit_End Ecore_IMF_Event_Preedit_End; typedef struct _Ecore_IMF_Event_Preedit_Changed Ecore_IMF_Event_Preedit_Changed; typedef struct _Ecore_IMF_Event_Commit Ecore_IMF_Event_Commit; typedef struct _Ecore_IMF_Event_Delete_Surrounding Ecore_IMF_Event_Delete_Surrounding; +typedef struct _Ecore_IMF_Event_Selection Ecore_IMF_Event_Selection; /* Events to filter */ typedef struct _Ecore_IMF_Event_Mouse_Down Ecore_IMF_Event_Mouse_Down; @@ -147,7 +148,8 @@ typedef enum ECORE_IMF_CALLBACK_PREEDIT_END,/**< "PREEDIT_END" is called when a preediting sequence has been completed or canceled. @since 1.2 */ ECORE_IMF_CALLBACK_PREEDIT_CHANGED,/**< "PREEDIT_CHANGED" is called whenever the preedit sequence currently being entered has changed. @since 1.2 */ ECORE_IMF_CALLBACK_COMMIT, /**< "COMMIT" is called when a complete input sequence has been entered by the user @since 1.2 */ - ECORE_IMF_CALLBACK_DELETE_SURROUNDING /**< "DELETE_SURROUNDING" is called when the input method needs to delete all or part of the context surrounding the cursor @since 1.2 */ + ECORE_IMF_CALLBACK_DELETE_SURROUNDING, /**< "DELETE_SURROUNDING" is called when the input method needs to delete all or part of the context surrounding the cursor @since 1.2 */ + ECORE_IMF_CALLBACK_SELECTION_SET /**< "SELECTION_SET" is called when the input method needs to set the selection @since 1.9 */ } Ecore_IMF_Callback_Type; /** @@ -344,6 +346,13 @@ struct _Ecore_IMF_Event_Delete_Surrounding intn_chars; }; +struct _Ecore_IMF_Event_Selection +{ + Ecore_IMF_Context *ctx; + intstart; + intend; +}; + struct _Ecore_IMF_Event_Mouse_Down { int button; /**< The button which has been pressed */ --
[EGIT] [core/efl] master 01/01: ecore_imf: fix to call function of immodule when the input method property is changed
jihoon pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=4fb04c3cd0f4c8f678666d8b92368d66798aed5d commit 4fb04c3cd0f4c8f678666d8b92368d66798aed5d Author: Jihoon Kim Date: Thu Jan 23 11:19:54 2014 +0900 ecore_imf: fix to call function of immodule when the input method property is changed --- src/lib/ecore_imf/ecore_imf_context.c | 43 +-- 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/src/lib/ecore_imf/ecore_imf_context.c b/src/lib/ecore_imf/ecore_imf_context.c index 7b554e6..3dbe527 100644 --- a/src/lib/ecore_imf/ecore_imf_context.c +++ b/src/lib/ecore_imf/ecore_imf_context.c @@ -858,10 +858,13 @@ ecore_imf_context_input_panel_layout_set(Ecore_IMF_Context *ctx, Ecore_IMF_Input return; } - if (ctx->klass->input_panel_layout_set) - ctx->klass->input_panel_layout_set(ctx, layout); + if (ctx->input_panel_layout != layout) + { +if (ctx->klass->input_panel_layout_set) + ctx->klass->input_panel_layout_set(ctx, layout); - ctx->input_panel_layout = layout; +ctx->input_panel_layout = layout; + } } EAPI Ecore_IMF_Input_Panel_Layout @@ -916,8 +919,13 @@ ecore_imf_context_input_panel_language_set(Ecore_IMF_Context *ctx, Ecore_IMF_Inp return; } - if (ctx->klass->input_panel_language_set) ctx->klass->input_panel_language_set(ctx, lang); - ctx->input_panel_lang = lang; + if (ctx->input_panel_lang != lang) + { +if (ctx->klass->input_panel_language_set) + ctx->klass->input_panel_language_set(ctx, lang); + +ctx->input_panel_lang = lang; + } } EAPI Ecore_IMF_Input_Panel_Lang @@ -1002,8 +1010,12 @@ ecore_imf_context_input_panel_return_key_type_set(Ecore_IMF_Context *ctx, Ecore_ return; } - ctx->input_panel_return_key_type = return_key_type; - if (ctx->klass->input_panel_return_key_type_set) ctx->klass->input_panel_return_key_type_set(ctx, return_key_type); + if (ctx->input_panel_return_key_type != return_key_type) + { +ctx->input_panel_return_key_type = return_key_type; +if (ctx->klass->input_panel_return_key_type_set) + ctx->klass->input_panel_return_key_type_set(ctx, return_key_type); + } } EAPI Ecore_IMF_Input_Panel_Return_Key_Type @@ -1029,8 +1041,12 @@ ecore_imf_context_input_panel_return_key_disabled_set(Ecore_IMF_Context *ctx, Ei return; } - ctx->input_panel_return_key_disabled = disabled; - if (ctx->klass->input_panel_return_key_disabled_set) ctx->klass->input_panel_return_key_disabled_set(ctx, disabled); + if (ctx->input_panel_return_key_disabled != disabled) + { +ctx->input_panel_return_key_disabled = disabled; +if (ctx->klass->input_panel_return_key_disabled_set) + ctx->klass->input_panel_return_key_disabled_set(ctx, disabled); + } } EAPI Eina_Bool @@ -1056,10 +1072,13 @@ ecore_imf_context_input_panel_caps_lock_mode_set(Ecore_IMF_Context *ctx, Eina_Bo return; } - if (ctx->klass->input_panel_caps_lock_mode_set) - ctx->klass->input_panel_caps_lock_mode_set(ctx, mode); + if (ctx->input_panel_caps_lock_mode != mode) + { +if (ctx->klass->input_panel_caps_lock_mode_set) + ctx->klass->input_panel_caps_lock_mode_set(ctx, mode); - ctx->input_panel_caps_lock_mode = mode; +ctx->input_panel_caps_lock_mode = mode; + } } EAPI Eina_Bool --
[EGIT] [core/efl] master 01/01: edje: Support to set or retrieve selection of ecore_imf
jihoon pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=1d7d554348f76645734772b48d83ae63d8ca6de8 commit 1d7d554348f76645734772b48d83ae63d8ca6de8 Author: Jihoon Kim Date: Thu Jan 23 11:26:52 2014 +0900 edje: Support to set or retrieve selection of ecore_imf --- src/lib/edje/edje_entry.c | 57 +++ 1 file changed, 57 insertions(+) diff --git a/src/lib/edje/edje_entry.c b/src/lib/edje/edje_entry.c index 53494a3..8a7b741 100644 --- a/src/lib/edje/edje_entry.c +++ b/src/lib/edje/edje_entry.c @@ -5,6 +5,8 @@ static Eina_Bool _edje_entry_imf_retrieve_surrounding_cb(void *data, Ecore_IMF_C static void _edje_entry_imf_event_commit_cb(void *data, Ecore_IMF_Context *ctx, void *event_info); static void _edje_entry_imf_event_preedit_changed_cb(void *data, Ecore_IMF_Context *ctx, void *event_info); static void _edje_entry_imf_event_delete_surrounding_cb(void *data, Ecore_IMF_Context *ctx, void *event); +static void _edje_entry_imf_event_selection_set_cb(void *data, Ecore_IMF_Context *ctx, void *event_info); +static Eina_Bool _edje_entry_imf_retrieve_selection_cb(void *data, Ecore_IMF_Context *ctx, char **text); #endif typedef struct _Entry Entry; @@ -2495,9 +2497,11 @@ _edje_entry_real_part_init(Edje *ed, Edje_Real_Part *rp) ecore_imf_context_retrieve_surrounding_callback_set(en->imf_context, _edje_entry_imf_retrieve_surrounding_cb, ed); +ecore_imf_context_retrieve_selection_callback_set(en->imf_context, _edje_entry_imf_retrieve_selection_cb, ed); ecore_imf_context_event_callback_add(en->imf_context, ECORE_IMF_CALLBACK_COMMIT, _edje_entry_imf_event_commit_cb, ed); ecore_imf_context_event_callback_add(en->imf_context, ECORE_IMF_CALLBACK_DELETE_SURROUNDING, _edje_entry_imf_event_delete_surrounding_cb, ed); ecore_imf_context_event_callback_add(en->imf_context, ECORE_IMF_CALLBACK_PREEDIT_CHANGED, _edje_entry_imf_event_preedit_changed_cb, ed); +ecore_imf_context_event_callback_add(en->imf_context, ECORE_IMF_CALLBACK_SELECTION_SET, _edje_entry_imf_event_selection_set_cb, ed); ecore_imf_context_input_mode_set(en->imf_context, rp->part->entry_mode == EDJE_ENTRY_EDIT_MODE_PASSWORD ? ECORE_IMF_INPUT_MODE_INVISIBLE : ECORE_IMF_INPUT_MODE_FULL); @@ -2545,6 +2549,7 @@ _edje_entry_real_part_shutdown(Edje *ed, Edje_Real_Part *rp) ecore_imf_context_event_callback_del(en->imf_context, ECORE_IMF_CALLBACK_COMMIT, _edje_entry_imf_event_commit_cb); ecore_imf_context_event_callback_del(en->imf_context, ECORE_IMF_CALLBACK_DELETE_SURROUNDING, _edje_entry_imf_event_delete_surrounding_cb); ecore_imf_context_event_callback_del(en->imf_context, ECORE_IMF_CALLBACK_PREEDIT_CHANGED, _edje_entry_imf_event_preedit_changed_cb); + ecore_imf_context_event_callback_del(en->imf_context, ECORE_IMF_CALLBACK_SELECTION_SET, _edje_entry_imf_event_selection_set_cb); ecore_imf_context_del(en->imf_context); en->imf_context = NULL; @@ -4189,6 +4194,58 @@ end: evas_textblock_cursor_free(del_start); evas_textblock_cursor_free(del_end); } + +static void +_edje_entry_imf_event_selection_set_cb(void *data, Ecore_IMF_Context *ctx EINA_UNUSED, void *event_info) +{ + Edje *ed = data; + Edje_Real_Part *rp = ed->focused_part; + Entry *en = NULL; + Ecore_IMF_Event_Selection *ev = event_info; + + if ((!rp) || (!ev)) return; + if ((rp->type != EDJE_RP_TYPE_TEXT) || + (!rp->typedata.text)) return; + else + en = rp->typedata.text->entry_data; + if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || + (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE)) + return; + + evas_textblock_cursor_pos_set(en->cursor, ev->start); + + _sel_start(en->cursor, rp->object, en); + + evas_textblock_cursor_pos_set(en->cursor, ev->end); + + _sel_extend(ed, en->cursor, rp->object, en); +} + +static Eina_Bool +_edje_entry_imf_retrieve_selection_cb(void *data, Ecore_IMF_Context *ctx EINA_UNUSED, char **text) +{ + Edje *ed = data; + Edje_Real_Part *rp = ed->focused_part; + Entry *en = NULL; + + if (!rp) return EINA_FALSE; + if ((rp->type != EDJE_RP_TYPE_TEXT) || + (!rp->typedata.text)) return EINA_FALSE; + else + en = rp->typedata.text->entry_data; + if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || + (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE)) + return EINA_FALSE; + + if (en->have_selection) + { +if (text) + *text = strdup(_edje_entry_selection_get(rp)); +return EINA_TRUE; + } + else + return EINA_FALSE; +} #endif /* vim:set ts=8 sw=3 sts=3 expandtab cino=>5n-2f0^-2{2(0W1st0 :*/ --
[EGIT] [apps/terminology] master 01/01: fix copy/paste error: CID 1163307
billiob pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=878f4561601f33f6049104061e75d86e2d0800ff commit 878f4561601f33f6049104061e75d86e2d0800ff Author: Boris Faure Date: Thu Jan 23 03:44:07 2014 +0100 fix copy/paste error: CID 1163307 --- src/bin/termptyesc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/termptyesc.c b/src/bin/termptyesc.c index a80e162..7e9a979 100644 --- a/src/bin/termptyesc.c +++ b/src/bin/termptyesc.c @@ -1056,7 +1056,7 @@ _handle_esc_xterm(Termpty *ty, const Eina_Unicode *c, Eina_Unicode *ce) { ty->prop.icon = NULL; } -if (ty->cb.set_icon.func) ty->cb.set_title.func(ty->cb.set_icon.data); +if (ty->cb.set_icon.func) ty->cb.set_icon.func(ty->cb.set_icon.data); break; case '2': // XXX: title - callback --
[EGIT] [core/elementary] master 01/01: naviframe - don't access item after del
raster pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=afc2dbf5eb3ce3b71f24f0f3629d0d3cd6a6441c commit afc2dbf5eb3ce3b71f24f0f3629d0d3cd6a6441c Author: Carsten Haitzler (Rasterman) Date: Thu Jan 23 11:59:07 2014 +0900 naviframe - don't access item after del --- src/lib/elc_naviframe.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/elc_naviframe.c b/src/lib/elc_naviframe.c index 53095c8..16b320e 100644 --- a/src/lib/elc_naviframe.c +++ b/src/lib/elc_naviframe.c @@ -1708,9 +1708,9 @@ _item_pop(Eo *obj, void *_pd, va_list *list) it->ref--; if (it->delete_me) elm_widget_item_del(it); - it->popping = EINA_FALSE; + else + it->popping = EINA_FALSE; evas_object_unref(obj); - return; } it->ref--; --
[EGIT] [core/enlightenment] master 13/21: resize pending update tiler during size update
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=9201ac12d497ca97a036a30b8a0ca2749c70a85d commit 9201ac12d497ca97a036a30b8a0ca2749c70a85d Author: Mike Blumenkrantz Date: Wed Jan 22 21:37:49 2014 -0500 resize pending update tiler during size update another tiler gets merged a few lines down and clipping is bad --- src/bin/e_comp_object.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 522d7f9..efda2e1 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -3000,6 +3000,8 @@ e_comp_object_dirty(Evas_Object *obj) evas_object_image_data_set(cw->obj, NULL); evas_object_image_size_set(cw->obj, w, h); //INF("SIZE [%p]: %dx%d", cw->ec, w, h); + if (cw->pending_updates) + eina_tiler_area_size_set(cw->pending_updates, w, h); EINA_LIST_FOREACH(cw->obj_mirror, l, o) { evas_object_image_pixels_dirty_set(o, dirty); --
[EGIT] [core/enlightenment] master 20/21: add autoclose callback for syscon to null pointer
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=fccfb20972366a38c40c88617f74ac65e41ae883 commit fccfb20972366a38c40c88617f74ac65e41ae883 Author: Mike Blumenkrantz Date: Wed Jan 22 22:11:03 2014 -0500 add autoclose callback for syscon to null pointer previously, repeated uses of syscon would cause a crash --- src/modules/syscon/e_syscon.c | 9 - 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/modules/syscon/e_syscon.c b/src/modules/syscon/e_syscon.c index a64cd2a..3cadee1 100644 --- a/src/modules/syscon/e_syscon.c +++ b/src/modules/syscon/e_syscon.c @@ -24,6 +24,13 @@ static Ecore_Timer *deftimer = NULL; static double show_time = 0.0; static int act_count = 0; +static void +_cb_del(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED) +{ + evas_object_hide(popup); + E_FREE_FUNC(popup, evas_object_del); +} + /* externally accessible functions */ int e_syscon_init(void) @@ -91,7 +98,7 @@ e_syscon_show(E_Zone *zone, const char *defact) popup = e_comp_object_util_add(o_bg, E_COMP_OBJECT_TYPE_POPUP); evas_object_data_set(popup, "zone", zone); evas_object_layer_set(popup, E_LAYER_POPUP); - e_comp_object_util_autoclose(popup, NULL, _cb_key_down, NULL); + e_comp_object_util_autoclose(popup, _cb_del, _cb_key_down, NULL); act_count = 0; show_time = t; --
[EGIT] [core/enlightenment] master 14/21: more commented out debug lines for comp object
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=d5ce4e0517acb7e177569a3139ec2a56f338fbbf commit d5ce4e0517acb7e177569a3139ec2a56f338fbbf Author: Mike Blumenkrantz Date: Wed Jan 22 21:39:42 2014 -0500 more commented out debug lines for comp object --- src/bin/e_comp_object.c | 6 -- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index efda2e1..42cea7d 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -2838,6 +2838,8 @@ e_comp_object_shape_apply(Evas_Object *obj) evas_object_image_size_get(cw->obj, &w, &h); if ((w < 1) || (h < 1)) return; + //INF("SHAPE RENDER %p", cw->ec); + if (cw->ec->shape_rects) evas_object_image_native_surface_set(cw->obj, NULL); evas_object_image_alpha_set(cw->obj, !!cw->ec->shape_rects); EINA_LIST_FOREACH(cw->obj_mirror, l, o) @@ -3018,7 +3020,7 @@ e_comp_object_dirty(Evas_Object *obj) it = eina_tiler_iterator_new(cw->updates); EINA_ITERATOR_FOREACH(it, r) { -//INF("UPDATE [%p]: %d %d %dx%d", cw->ec, r->x, r->y, r->w, r->h); +//INF("UPDATE ADD [%p]: %d %d %dx%d", cw->ec, r->x, r->y, r->w, r->h); evas_object_image_data_update_add(cw->obj, r->x, r->y, r->w, r->h); EINA_LIST_FOREACH(cw->obj_mirror, l, o) evas_object_image_data_update_add(o, r->x, r->y, r->w, r->h); @@ -3066,7 +3068,7 @@ e_comp_object_render(Evas_Object *obj) return EINA_FALSE; } - + //INF("RENDER SIZE: %dx%d", pw, ph); it = eina_tiler_iterator_new(cw->pending_updates); if (e_pixmap_image_is_argb(cw->ec->pixmap)) { --
[EGIT] [core/enlightenment] master 11/21: disable shadows for override clients with alpha
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=199882ea2537c2dc7974a010f457cea03bbc175a commit 199882ea2537c2dc7974a010f457cea03bbc175a Author: Mike Blumenkrantz Date: Wed Jan 22 21:35:49 2014 -0500 disable shadows for override clients with alpha --- src/bin/e_comp_object.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index bd96a11..967dae6 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -469,7 +469,7 @@ _e_comp_object_shadow_setup(E_Comp_Object *cw) } if (cw->ec->override) { -if ((!cw->ec->shaped) && (!no_shadow)) +if ((!cw->ec->shaped) && (!no_shadow) && (!cw->ec->argb)) e_comp_object_signal_emit(cw->smart_obj, "e,state,shadow,on", "e"); else e_comp_object_signal_emit(cw->smart_obj, "e,state,shadow,off", "e"); --
[EGIT] [core/enlightenment] master 15/21: select shape events for override clients
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=2d296615414d0723ef7a3e7adff60b8dd5c77a25 commit 2d296615414d0723ef7a3e7adff60b8dd5c77a25 Author: Mike Blumenkrantz Date: Wed Jan 22 21:40:47 2014 -0500 select shape events for override clients --- src/bin/e_comp_x.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c index a5000ff..2a8b83c 100644 --- a/src/bin/e_comp_x.c +++ b/src/bin/e_comp_x.c @@ -204,6 +204,8 @@ _e_comp_x_client_new_helper(E_Client *ec) e_pixmap_visual_cmap_set(ec->pixmap, ec->comp_data->initial_attributes.visual, ec->comp_data->initial_attributes.colormap); + if (ec->override && (!ec->internal)) + ecore_x_window_shape_events_select(win, 1); if (ec->override && (!ec->input_only)) ecore_x_present_select_events(win, ECORE_X_PRESENT_EVENT_MASK_CONFIGURE_NOTIFY); if (ec->override && (!(ec->comp_data->initial_attributes.event_mask.mine & ECORE_X_EVENT_MASK_WINDOW_PROPERTY))) --
[EGIT] [core/enlightenment] master 12/21: only set shape merge/export flags for non-override clients on resize
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=2943d880427fdca13eb91d9765c9221e9ebe commit 2943d880427fdca13eb91d9765c9221e9ebe Author: Mike Blumenkrantz Date: Wed Jan 22 21:36:47 2014 -0500 only set shape merge/export flags for non-override clients on resize --- src/bin/e_comp_object.c | 11 +++ 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 967dae6..522d7f9 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -772,10 +772,13 @@ _e_comp_intercept_resize(void *data, Evas_Object *obj, int w, int h) //INF("INTERCEPT %dx%d", w, h); evas_object_resize(obj, w, h); } - cw->ec->need_shape_merge |= cw->ec->shaped || cw->ec->shaped_input; - cw->ec->need_shape_export |= cw->ec->shaped; - if (cw->ec->shaped || cw->ec->shaped_input) - EC_CHANGED(cw->ec); + if (!cw->ec->override) + { +cw->ec->need_shape_merge |= cw->ec->shaped || cw->ec->shaped_input; +cw->ec->need_shape_export |= cw->ec->shaped; +if (cw->ec->shaped || cw->ec->shaped_input) + EC_CHANGED(cw->ec); + } /* this fixes positioning jiggles when using a resize mode * which also changes the client's position --
[EGIT] [core/enlightenment] master 05/21: bugfix: remove drop handlers from responsive hash on deletion
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=fdc3d298998d2979249c31a9b487d3a36a147578 commit fdc3d298998d2979249c31a9b487d3a36a147578 Author: Mike Blumenkrantz Date: Wed Jan 22 16:04:58 2014 -0500 bugfix: remove drop handlers from responsive hash on deletion --- src/bin/e_dnd.c | 9 + 1 file changed, 9 insertions(+) diff --git a/src/bin/e_dnd.c b/src/bin/e_dnd.c index fc34277..3dbc8d9 100644 --- a/src/bin/e_dnd.c +++ b/src/bin/e_dnd.c @@ -473,10 +473,19 @@ EAPI void e_drop_handler_del(E_Drop_Handler *handler) { unsigned int i; + Eina_List *l; + Ecore_X_Window hwin; if (!handler) return; + hwin = _e_drag_win_get(handler, 1); + if (hwin) + { +l = eina_hash_find(_drop_handlers_responsives, &hwin); +if (l) + eina_hash_set(_drop_handlers_responsives, &hwin, eina_list_remove(l, handler)); + } _drop_handlers = eina_list_remove(_drop_handlers, handler); if (handler->active) _active_handlers = eina_list_remove(_active_handlers, handler); --
[EGIT] [core/enlightenment] master 10/21: clean up comp object autoclosing when overwriting existing autoclose object
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=6b246c7c8a3fcaff08aa24d4d29c40c77cb1b441 commit 6b246c7c8a3fcaff08aa24d4d29c40c77cb1b441 Author: Mike Blumenkrantz Date: Wed Jan 22 17:16:10 2014 -0500 clean up comp object autoclosing when overwriting existing autoclose object --- src/bin/e_comp_object.c | 32 +++- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 74d5cc4..bd96a11 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -3289,15 +3289,14 @@ e_comp_object_effect_stop(Evas_Object *obj, Edje_Signal_Cb end_cb EINA_UNUSED) static void -_e_comp_object_autoclose_cleanup(E_Comp *c) +_e_comp_object_autoclose_cleanup(E_Comp *c, Eina_Bool already_del) { if (c->autoclose.obj) { -c = e_comp_util_evas_object_comp_get(c->autoclose.obj); e_comp_ungrab_input(c, 0, 1); if (c->autoclose.del_cb) c->autoclose.del_cb(c->autoclose.data, c->autoclose.obj); -else +else if (!already_del) { evas_object_hide(c->autoclose.obj); E_FREE_FUNC(c->autoclose.obj, evas_object_del); @@ -3321,14 +3320,14 @@ _e_comp_object_autoclose_key_down_cb(void *data, int type EINA_UNUSED, void *eve if (c->autoclose.key_cb) del = !c->autoclose.key_cb(c->autoclose.data, ev); - if (del) _e_comp_object_autoclose_cleanup(data); + if (del) _e_comp_object_autoclose_cleanup(data, 0); return ECORE_CALLBACK_RENEW; } static void _e_comp_object_autoclose_mouse_up_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - _e_comp_object_autoclose_cleanup(data); + _e_comp_object_autoclose_cleanup(data, 0); } static void @@ -3339,17 +3338,18 @@ _e_comp_object_autoclose_setup(Evas_Object *obj) if (!c->autoclose.rect) { c->autoclose.rect = evas_object_rectangle_add(c->evas); +evas_object_move(c->autoclose.rect, 0, 0); +evas_object_resize(c->autoclose.rect, c->man->w, c->man->h); +evas_object_show(c->autoclose.rect); evas_object_name_set(c->autoclose.rect, "c->autoclose.rect"); evas_object_color_set(c->autoclose.rect, 0, 0, 0, 0); evas_object_event_callback_add(c->autoclose.rect, EVAS_CALLBACK_MOUSE_UP, _e_comp_object_autoclose_mouse_up_cb, c); +e_comp_grab_input(c, 0, 1); } - evas_object_move(c->autoclose.rect, 0, 0); - evas_object_resize(c->autoclose.rect, c->man->w, c->man->h); evas_object_layer_set(c->autoclose.rect, evas_object_layer_get(obj) - 1); - evas_object_show(c->autoclose.rect); e_comp_shape_queue(c); - c->autoclose.key_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _e_comp_object_autoclose_key_down_cb, c); - e_comp_grab_input(c, 0, 1); + if (!c->autoclose.key_handler) + c->autoclose.key_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _e_comp_object_autoclose_key_down_cb, c); } static void @@ -3363,7 +3363,7 @@ static void _e_comp_object_autoclose_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) { evas_object_event_callback_del(obj, EVAS_CALLBACK_SHOW, _e_comp_object_autoclose_show); - _e_comp_object_autoclose_cleanup(data); + _e_comp_object_autoclose_cleanup(data, 1); } EAPI void @@ -3377,11 +3377,17 @@ e_comp_object_util_autoclose(Evas_Object *obj, E_Comp_Object_Autoclose_Cb del_cb EINA_SAFETY_ON_NULL_RETURN(c); if (c->autoclose.obj) { -/* block overwrite of current autoclose object */ -if (c->autoclose.obj != obj) return; +if (c->autoclose.obj == obj) return; +evas_object_event_callback_del_full(c->autoclose.obj, EVAS_CALLBACK_DEL, _e_comp_object_autoclose_del, c); +c->autoclose.obj = obj; c->autoclose.del_cb = del_cb; c->autoclose.key_cb = cb; c->autoclose.data = (void*)data; +if (evas_object_visible_get(obj)) + _e_comp_object_autoclose_setup(obj); +else + evas_object_event_callback_add(obj, EVAS_CALLBACK_SHOW, _e_comp_object_autoclose_show, c); +evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, _e_comp_object_autoclose_del, c); return; } c->autoclose.obj = obj; --
[EGIT] [core/enlightenment] enlightenment-0.18 03/03: bugfix: remove drop handlers from responsive hash on deletion
discomfitor pushed a commit to branch enlightenment-0.18. http://git.enlightenment.org/core/enlightenment.git/commit/?id=030ade5ad36b20c93b15a1bb15e4a50b268ff49c commit 030ade5ad36b20c93b15a1bb15e4a50b268ff49c Author: Mike Blumenkrantz Date: Wed Jan 22 16:04:58 2014 -0500 bugfix: remove drop handlers from responsive hash on deletion --- src/bin/e_dnd.c | 9 + 1 file changed, 9 insertions(+) diff --git a/src/bin/e_dnd.c b/src/bin/e_dnd.c index 0e85a3e..c62f41a 100644 --- a/src/bin/e_dnd.c +++ b/src/bin/e_dnd.c @@ -457,10 +457,19 @@ EAPI void e_drop_handler_del(E_Drop_Handler *handler) { unsigned int i; + Eina_List *l; + Ecore_X_Window hwin; if (!handler) return; + hwin = _e_drag_win_get(handler, 1); + if (hwin) + { +l = eina_hash_find(_drop_handlers_responsives, &hwin); +if (l) + eina_hash_set(_drop_handlers_responsives, &hwin, eina_list_remove(l, handler)); + } _drop_handlers = eina_list_remove(_drop_handlers, handler); if (handler->active) _active_handlers = eina_list_remove(_active_handlers, handler); --
[EGIT] [core/enlightenment] enlightenment-0.18 02/03: bugfix: efm dnd to external windows
discomfitor pushed a commit to branch enlightenment-0.18. http://git.enlightenment.org/core/enlightenment.git/commit/?id=cce603ea0288ade507138137bea1871b4ba34900 commit cce603ea0288ade507138137bea1871b4ba34900 Author: Mike Blumenkrantz Date: Wed Jan 22 15:59:30 2014 -0500 bugfix: efm dnd to external windows deleting the drag at this point deletes the window which owns the current selection, guaranteeing that the operation will fail --- src/bin/e_dnd.c | 7 ++- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/bin/e_dnd.c b/src/bin/e_dnd.c index 06f7914..0e85a3e 100644 --- a/src/bin/e_dnd.c +++ b/src/bin/e_dnd.c @@ -961,9 +961,6 @@ _e_drag_end(int x, int y) _drag_current->cb.finished(_drag_current, dropped); _drag_current->cb.finished = NULL; -if (_drag_current && (!_xdnd)) - e_object_del(E_OBJECT(_drag_current)); -//e_grabinput_release(_drag_win, _drag_win); return; } @@ -1344,8 +1341,8 @@ _e_dnd_cb_event_dnd_finished(void *data __UNUSED__, int type __UNUSED__, void *e if (!ev->completed) return ECORE_CALLBACK_PASS_ON; */ - if (_drag_win) ecore_x_window_free(_drag_win); - _drag_win = 0; + if (_drag_current && (!_xdnd)) + e_object_del(E_OBJECT(_drag_current)); return ECORE_CALLBACK_PASS_ON; } --
[EGIT] [core/enlightenment] master 18/21: break out X shape rect check loop into helper function
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=c24d3c60aaa01079c9fa3e6bb3343ce50c1c commit c24d3c60aaa01079c9fa3e6bb3343ce50c1c Author: Mike Blumenkrantz Date: Wed Jan 22 21:43:25 2014 -0500 break out X shape rect check loop into helper function --- src/bin/e_comp_x.c | 78 +- 1 file changed, 42 insertions(+), 36 deletions(-) diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c index 57bc6d9..eb38dae 100644 --- a/src/bin/e_comp_x.c +++ b/src/bin/e_comp_x.c @@ -2536,6 +2536,46 @@ _e_comp_x_hook_client_eval_end(void *d EINA_UNUSED, E_Client *ec) } } +static Eina_Bool +_e_comp_x_client_shape_rects_check(E_Client *ec, Ecore_X_Rectangle *rects, int num) +{ + Eina_Bool changed = 1; + Ecore_X_Rectangle *orects; + + if (((unsigned int)num == ec->shape_rects_num) && (ec->shape_rects)) + { +int i; + +orects = (Ecore_X_Rectangle*)ec->shape_rects; +changed = 0; +for (i = 0; i < num; i++) + { + E_RECTS_CLIP_TO_RECT(rects[i].x, rects[i].y, + rects[i].width, rects[i].height, 0, 0, ec->client.w, ec->client.h); + + if ((orects[i].x != rects[i].x) || + (orects[i].y != rects[i].y) || + (orects[i].width != rects[i].width) || + (orects[i].height != rects[i].height)) + { + changed = 1; + break; + } + } + } + if (changed) + { +E_FREE(ec->shape_rects); +ec->shape_rects = (Eina_Rectangle*)rects; +ec->shape_rects_num = num; +ec->shape_changed = 1; +e_comp_shape_queue(ec->comp); + } + else + free(rects); + return changed; +} + static void _e_comp_x_hook_client_post_new_client(void *d EINA_UNUSED, E_Client *ec) { @@ -2585,46 +2625,12 @@ _e_comp_x_hook_client_post_new_client(void *d EINA_UNUSED, E_Client *ec) if (ec->need_shape_export) { -Ecore_X_Rectangle *rects, *orects; +Ecore_X_Rectangle *rects; int num; rects = ecore_x_window_shape_rectangles_get(e_client_util_win_get(ec), &num); if (rects) - { - int changed = 1; - - if (((unsigned int)num == ec->shape_rects_num) && (ec->shape_rects)) - { - int i; - - orects = (Ecore_X_Rectangle*)ec->shape_rects; - changed = 0; - for (i = 0; i < num; i++) -{ - E_RECTS_CLIP_TO_RECT(rects[i].x, rects[i].y, - rects[i].width, rects[i].height, 0, 0, ec->client.w, ec->client.h); - - if ((orects[i].x != rects[i].x) || - (orects[i].y != rects[i].y) || - (orects[i].width != rects[i].width) || - (orects[i].height != rects[i].height)) - { -changed = 1; -break; - } -} - } - if (changed) - { - E_FREE(ec->shape_rects); - ec->shape_rects = (Eina_Rectangle*)rects; - ec->shape_rects_num = num; - ec->shape_changed = 1; - e_comp_shape_queue(ec->comp); - } - else - free(rects); - } + _e_comp_x_client_shape_rects_check(ec, rects, num); else { E_FREE(ec->shape_rects); --
[EGIT] [core/enlightenment] master 07/21: fix compositor grab tracking
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=aad88716a4bd42b1466426fe6f9c229163cc3236 commit aad88716a4bd42b1466426fe6f9c229163cc3236 Author: Mike Blumenkrantz Date: Wed Jan 22 16:45:53 2014 -0500 fix compositor grab tracking it's possible to have multiple/recursive grabs, so the number of grabs active needs to be tracked T820 --- src/bin/e_comp.c | 33 +++-- src/bin/e_comp.h | 2 ++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c index d626e8f..278eaa6 100644 --- a/src/bin/e_comp.c +++ b/src/bin/e_comp.c @@ -1711,13 +1711,42 @@ e_comp_e_object_layer_get(const E_Object *obj) EAPI Eina_Bool e_comp_grab_input(E_Comp *c, Eina_Bool mouse, Eina_Bool kbd) { - return e_grabinput_get((!!mouse) * c->ee_win, 0, (!!kbd) * c->ee_win); + Eina_Bool ret = EINA_FALSE; + Ecore_Window mwin = 0, kwin = 0; + + mouse = !!mouse; + kbd = !!kbd; + if (mouse || c->input_mouse_grabs) + mwin = c->ee_win; + if (kbd || c->input_mouse_grabs) + kwin = c->ee_win; + if ((c->input_mouse_grabs && c->input_key_grabs) || + e_grabinput_get(mwin, 0, kwin)) + { +ret = EINA_TRUE; +c->input_mouse_grabs += mouse; +c->input_key_grabs += kbd; + } + return ret; } EAPI void e_comp_ungrab_input(E_Comp *c, Eina_Bool mouse, Eina_Bool kbd) { - e_grabinput_release((!!mouse) * c->ee_win, (!!kbd) * c->ee_win); + Ecore_Window mwin = 0, kwin = 0; + + mouse = !!mouse; + kbd = !!kbd; + if (mouse && (c->input_mouse_grabs == 1)) + mwin = c->ee_win; + if (kbd && (c->input_key_grabs == 1)) + kwin = c->ee_win; + if (c->input_mouse_grabs) + c->input_mouse_grabs -= mouse; + if (c->input_key_grabs) + c->input_key_grabs -= kbd; + if ((!mwin) || (!kwin)) return; + e_grabinput_release(mwin, kwin); evas_event_feed_mouse_out(c->evas, 0, NULL); evas_event_feed_mouse_in(c->evas, 0, NULL); } diff --git a/src/bin/e_comp.h b/src/bin/e_comp.h index dd86913..1ee47a5 100644 --- a/src/bin/e_comp.h +++ b/src/bin/e_comp.h @@ -101,6 +101,8 @@ struct _E_Comp Ecore_Window cm_selection; //FIXME: move to comp_x ? int depth; + unsigned intinput_key_grabs; + unsigned intinput_mouse_grabs; Ecore_Cbgrab_cb; Ecore_Cbbindings_grab_cb; --
[EGIT] [core/enlightenment] master 09/21: set syscon popup layer before autoclose
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=e23019825e8a3f318de1468e94daa1002aeffb93 commit e23019825e8a3f318de1468e94daa1002aeffb93 Author: Mike Blumenkrantz Date: Wed Jan 22 17:14:21 2014 -0500 set syscon popup layer before autoclose --- src/modules/syscon/e_syscon.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/syscon/e_syscon.c b/src/modules/syscon/e_syscon.c index 8658685..a64cd2a 100644 --- a/src/modules/syscon/e_syscon.c +++ b/src/modules/syscon/e_syscon.c @@ -90,8 +90,8 @@ e_syscon_show(E_Zone *zone, const char *defact) popup = e_comp_object_util_add(o_bg, E_COMP_OBJECT_TYPE_POPUP); evas_object_data_set(popup, "zone", zone); - e_comp_object_util_autoclose(popup, NULL, _cb_key_down, NULL); evas_object_layer_set(popup, E_LAYER_POPUP); + e_comp_object_util_autoclose(popup, NULL, _cb_key_down, NULL); act_count = 0; show_time = t; --
[EGIT] [core/enlightenment] master 21/21: reset focus to last focused client upon closing an autoclose object
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=e115cbc906af34def94b3fd72130cfd6aa97a8ee commit e115cbc906af34def94b3fd72130cfd6aa97a8ee Author: Mike Blumenkrantz Date: Wed Jan 22 22:11:47 2014 -0500 reset focus to last focused client upon closing an autoclose object --- src/bin/e_comp_object.c | 10 ++ 1 file changed, 10 insertions(+) diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 42cea7d..b2d76e7 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -3369,8 +3369,18 @@ _e_comp_object_autoclose_show(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_ static void _e_comp_object_autoclose_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) { + E_Client *ec; + Eina_List *l; + evas_object_event_callback_del(obj, EVAS_CALLBACK_SHOW, _e_comp_object_autoclose_show); _e_comp_object_autoclose_cleanup(data, 1); + if (e_client_focused_get()) return; + EINA_LIST_FOREACH(e_client_focus_stack_get(), l, ec) + if (ec->desk && ec->desk->visible) + { + evas_object_focus_set(ec->frame, 1); + break; + } } EAPI void --
[EGIT] [core/enlightenment] master 19/21: handle shaped overrides more accurately for theme and rendering
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=5549c1b5302bebba3bcd494797e214357022adb5 commit 5549c1b5302bebba3bcd494797e214357022adb5 Author: Mike Blumenkrantz Date: Wed Jan 22 21:44:25 2014 -0500 handle shaped overrides more accurately for theme and rendering overrides don't get to do shape exports for rendering, so this needs to be done during the initial shape check --- src/bin/e_comp_x.c | 10 +- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c index eb38dae..88a7ade 100644 --- a/src/bin/e_comp_x.c +++ b/src/bin/e_comp_x.c @@ -3594,12 +3594,20 @@ _e_comp_x_hook_client_fetch(void *d EINA_UNUSED, E_Client *ec) EC_CHANGED(ec); } } + else +{ + if (_e_comp_x_client_shape_rects_check(ec, rects, num)) + e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h); +} ec->shaped = 1; ec->changes.shape_input = 0; E_FREE(ec->shape_input_rects); ec->shape_input_rects_num = 0; } - free(rects); + if (ec->comp_data->reparented || (!ec->shaped)) + free(rects); + if (ec->shape_changed) + e_comp_object_frame_theme_set(ec->frame, E_COMP_OBJECT_FRAME_RESHADOW); } else { --
[EGIT] [core/enlightenment] enlightenment-0.18 01/03: bugfix: multiple drop handlers using same window no longer overwrite each other
discomfitor pushed a commit to branch enlightenment-0.18. http://git.enlightenment.org/core/enlightenment.git/commit/?id=a581f5566f0cd6d3a45918d4ea7abbdaa605f3e2 commit a581f5566f0cd6d3a45918d4ea7abbdaa605f3e2 Author: Mike Blumenkrantz Date: Wed Jan 22 13:40:24 2014 -0500 bugfix: multiple drop handlers using same window no longer overwrite each other --- src/bin/e_dnd.c | 12 +++- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/bin/e_dnd.c b/src/bin/e_dnd.c index 52a3b7c..06f7914 100644 --- a/src/bin/e_dnd.c +++ b/src/bin/e_dnd.c @@ -111,7 +111,7 @@ e_dnd_init(void) _text_atom = ecore_x_atom_get("text/plain"); _drop_win_hash = eina_hash_string_superfast_new(NULL); - _drop_handlers_responsives = eina_hash_string_superfast_new(NULL); + _drop_handlers_responsives = eina_hash_int32_new(NULL); E_LIST_HANDLER_APPEND(_event_handlers, ECORE_EVENT_MOUSE_BUTTON_UP, _e_dnd_cb_mouse_up, NULL); E_LIST_HANDLER_APPEND(_event_handlers, ECORE_EVENT_MOUSE_MOVE, _e_dnd_cb_mouse_move, NULL); @@ -496,18 +496,20 @@ EAPI void e_drop_handler_responsive_set(E_Drop_Handler *handler) { Ecore_X_Window hwin = _e_drag_win_get(handler, 1); - const char *wid = e_util_winid_str_get(hwin); + Eina_List *l; - eina_hash_add(_drop_handlers_responsives, wid, (void *)handler); + l = eina_hash_find(_drop_handlers_responsives, &hwin); + eina_hash_set(_drop_handlers_responsives, &hwin, eina_list_append(l, handler)); } EAPI int e_drop_handler_responsive_get(const E_Drop_Handler *handler) { Ecore_X_Window hwin = _e_drag_win_get(handler, 1); - const char *wid = e_util_winid_str_get(hwin); + Eina_List *l; - return eina_hash_find(_drop_handlers_responsives, wid) == (void *)handler; + l = eina_hash_find(_drop_handlers_responsives, &hwin); + return l && eina_list_data_find(l, handler); } EAPI void --
[EGIT] [core/enlightenment] master 04/21: bugfix: efm dnd to external windows
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=3e0cbdc4416f910342347dacdc980008dcc4bcf0 commit 3e0cbdc4416f910342347dacdc980008dcc4bcf0 Author: Mike Blumenkrantz Date: Wed Jan 22 15:59:30 2014 -0500 bugfix: efm dnd to external windows deleting the drag at this point deletes the window which owns the current selection, guaranteeing that the operation will fail T797 --- src/bin/e_dnd.c | 7 ++- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/bin/e_dnd.c b/src/bin/e_dnd.c index c6c2627..fc34277 100644 --- a/src/bin/e_dnd.c +++ b/src/bin/e_dnd.c @@ -954,9 +954,6 @@ _e_drag_end(int x, int y) _drag_current->cb.finished(_drag_current, dropped); _drag_current->cb.finished = NULL; -if (_drag_current && (!_xdnd)) - e_object_del(E_OBJECT(_drag_current)); -//e_grabinput_release(_drag_win, _drag_win); return; } @@ -1332,8 +1329,8 @@ _e_dnd_cb_event_dnd_finished(void *data __UNUSED__, int type __UNUSED__, void *e if (!ev->completed) return ECORE_CALLBACK_PASS_ON; */ - if (_drag_win) ecore_x_window_free(_drag_win); - _drag_win = 0; + if (_drag_current && (!_xdnd)) + e_object_del(E_OBJECT(_drag_current)); return ECORE_CALLBACK_PASS_ON; } --
[EGIT] [core/enlightenment] master 16/21: allow toggling composite window events for override windows
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=14207e9770a61f1fee5b10519a86e4532f5fd82a commit 14207e9770a61f1fee5b10519a86e4532f5fd82a Author: Mike Blumenkrantz Date: Wed Jan 22 21:41:32 2014 -0500 allow toggling composite window events for override windows --- src/bin/e_comp_x.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c index 2a8b83c..b650a2d 100644 --- a/src/bin/e_comp_x.c +++ b/src/bin/e_comp_x.c @@ -683,7 +683,7 @@ _e_comp_x_client_pri_norm(E_Client *ec) static void _e_comp_x_client_shape_input_rectangle_set(E_Client *ec) { - Ecore_X_Window win = e_client_util_pwin_get(ec); + Ecore_X_Window win = _e_comp_x_client_window_get(ec); if (!ec->comp_data->reparented) return; --
[EGIT] [core/enlightenment] master 08/21: use regular comp grabs for menu
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=9a3ea2d1bbeae504400148f60bf8b951aa88f110 commit 9a3ea2d1bbeae504400148f60bf8b951aa88f110 Author: Mike Blumenkrantz Date: Wed Jan 22 17:06:26 2014 -0500 use regular comp grabs for menu --- src/bin/e_menu.c | 9 ++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/bin/e_menu.c b/src/bin/e_menu.c index 98eb0af..1456ee6 100644 --- a/src/bin/e_menu.c +++ b/src/bin/e_menu.c @@ -1207,8 +1207,11 @@ e_menu_idler_before(void) { if (_e_menu_win) { - e_grabinput_release(_e_menu_win, _e_menu_win); - _mouse_up_feed(e_comp_find_by_window(_e_menu_win)->evas, 0); + E_Comp *c; + + c = e_comp_find_by_window(_e_menu_win); + if (!c) c = e_comp_get(NULL); + e_comp_ungrab_input(c, 1, 1); _e_menu_win = 0; } } @@ -1991,7 +1994,7 @@ _e_menu_activate_internal(E_Menu *m, E_Zone *zone) if (!_e_menu_win) { _e_menu_win = zone->comp->ee_win; -if (!e_grabinput_get(_e_menu_win, 0, _e_menu_win)) +if (!e_comp_grab_input(zone->comp, 1, 1)) { _e_menu_win = 0; return; --
[EGIT] [core/enlightenment] master 01/21: force prerendering for internal clients
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=db7a1f6df30fb80572e449bc3d2d75567f7d commit db7a1f6df30fb80572e449bc3d2d75567f7d Author: Mike Blumenkrantz Date: Tue Jan 21 18:50:00 2014 -0500 force prerendering for internal clients we can assume that these are always going to be ready for drawing immediately, and sometimes X fucks up the damages so it's best to go with the full frame from the beginning --- src/bin/e_comp_object.c | 6 +- src/bin/e_comp_x.c | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 24bf67b..1ab2b38 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -1228,7 +1228,11 @@ _e_comp_intercept_show_helper(E_Comp_Object *cw) } if (!cw->real_hid) - evas_object_show(cw->smart_obj); + { +if (cw->ec->internal) + e_comp_object_damage(cw->smart_obj, 0, 0, cw->w, cw->h); +evas_object_show(cw->smart_obj); + } } static void diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c index bd2fa42..a5000ff 100644 --- a/src/bin/e_comp_x.c +++ b/src/bin/e_comp_x.c @@ -4005,6 +4005,7 @@ _e_comp_x_hook_client_new(void *d EINA_UNUSED, E_Client *ec) ec->ignored = e_comp_ignore_win_find(win); ec->comp_data = E_NEW(E_Comp_Client_Data, 1); + ec->comp_data->first_damage = ec->internal; ec->comp_data->set_win_type = ec->comp_data->fetch_exe = 1; /* FIXME: ewww - round trip */ --
[EGIT] [core/enlightenment] master 03/21: bugfix: multiple drop handlers using same window no longer overwrite each other
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=d86051ff82e60ed56841e857dfff6521337ab1a8 commit d86051ff82e60ed56841e857dfff6521337ab1a8 Author: Mike Blumenkrantz Date: Wed Jan 22 13:40:24 2014 -0500 bugfix: multiple drop handlers using same window no longer overwrite each other --- src/bin/e_dnd.c | 12 +++- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/bin/e_dnd.c b/src/bin/e_dnd.c index e5a4697..c6c2627 100644 --- a/src/bin/e_dnd.c +++ b/src/bin/e_dnd.c @@ -111,7 +111,7 @@ e_dnd_init(void) _text_atom = ecore_x_atom_get("text/plain"); _drop_win_hash = eina_hash_int32_new(NULL); - _drop_handlers_responsives = eina_hash_string_superfast_new(NULL); + _drop_handlers_responsives = eina_hash_int32_new(NULL); E_LIST_HANDLER_APPEND(_event_handlers, ECORE_EVENT_MOUSE_BUTTON_UP, _e_dnd_cb_mouse_up, NULL); E_LIST_HANDLER_APPEND(_event_handlers, ECORE_EVENT_MOUSE_MOVE, _e_dnd_cb_mouse_move, NULL); @@ -509,18 +509,20 @@ EAPI void e_drop_handler_responsive_set(E_Drop_Handler *handler) { Ecore_X_Window hwin = _e_drag_win_get(handler, 1); - const char *wid = e_util_winid_str_get(hwin); + Eina_List *l; - eina_hash_add(_drop_handlers_responsives, wid, (void *)handler); + l = eina_hash_find(_drop_handlers_responsives, &hwin); + eina_hash_set(_drop_handlers_responsives, &hwin, eina_list_append(l, handler)); } EAPI int e_drop_handler_responsive_get(const E_Drop_Handler *handler) { Ecore_X_Window hwin = _e_drag_win_get(handler, 1); - const char *wid = e_util_winid_str_get(hwin); + Eina_List *l; - return eina_hash_find(_drop_handlers_responsives, wid) == (void *)handler; + l = eina_hash_find(_drop_handlers_responsives, &hwin); + return l && eina_list_data_find(l, handler); } EAPI void --
[EGIT] [core/enlightenment] master 17/21: only set shape export flag during shape update event for non-overrides
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=ae4e98b856d6d35a80075fae52854de6425b9a8a commit ae4e98b856d6d35a80075fae52854de6425b9a8a Author: Mike Blumenkrantz Date: Wed Jan 22 21:42:38 2014 -0500 only set shape export flag during shape update event for non-overrides --- src/bin/e_comp_x.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c index b650a2d..57bc6d9 100644 --- a/src/bin/e_comp_x.c +++ b/src/bin/e_comp_x.c @@ -2429,7 +2429,7 @@ _e_comp_x_shape(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event_Wind { /* bounding box changed, need export for rendering */ EINA_RECTANGLE_SET(&ec->comp_data->shape, ev->x, ev->y, ev->w, ev->h); - ec->need_shape_export = 1; + ec->need_shape_export = !ec->override; } ec->changes.shape = 1; } --
[EGIT] [core/enlightenment] master 02/21: shadow checks for overrides only need to check for shaped and comp match
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=2dac967604d1a59c61145e3d4ad99cb37c62345a commit 2dac967604d1a59c61145e3d4ad99cb37c62345a Author: Mike Blumenkrantz Date: Wed Jan 22 11:11:07 2014 -0500 shadow checks for overrides only need to check for shaped and comp match T833 --- src/bin/e_comp_object.c | 17 + 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 1ab2b38..d864b84 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -132,21 +132,6 @@ _e_comp_shaped_check(int w, int h, const Eina_Rectangle *rects, int num) / -static Eina_Bool -_e_comp_object_do_shadow(E_Comp_Object *cw) -{ - if (cw->ec) - { -if (cw->ec->shaped) return 0; -if (cw->frame_object) return 0; -if (e_client_util_borderless(cw->ec)) - return 0; - } - return 1; -} - -/ - static void _e_comp_object_layers_add(E_Comp_Object *cw, E_Comp_Object *above, E_Comp_Object *below, Eina_Bool prepend) { @@ -486,7 +471,7 @@ _e_comp_object_shadow_setup(E_Comp_Object *cw) } if (cw->ec->override) { -if (_e_comp_object_do_shadow(cw) && (!no_shadow)) +if ((!cw->ec->shaped) && (!no_shadow)) e_comp_object_signal_emit(cw->smart_obj, "e,state,shadow,on", "e"); else e_comp_object_signal_emit(cw->smart_obj, "e,state,shadow,off", "e"); --
[EGIT] [core/enlightenment] master 06/21: use client fullscreen flag to determine current fullscreen state
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=b363dc802dae0cfb6cb7b4179966f3650615e592 commit b363dc802dae0cfb6cb7b4179966f3650615e592 Author: Mike Blumenkrantz Date: Wed Jan 22 16:28:14 2014 -0500 use client fullscreen flag to determine current fullscreen state T834 --- src/bin/e_comp_object.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index d864b84..74d5cc4 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -343,10 +343,8 @@ _e_comp_object_shadow_client_match(const E_Client *ec, E_Comp_Match *m) } if (m->fullscreen != 0) { - int fullscreen = 0; + int fullscreen = ec->fullscreen; - if (ec->netwm.state.fullscreen) - fullscreen = 1; if (!(((m->fullscreen == -1) && (!fullscreen)) || ((m->fullscreen == 1) && (fullscreen return EINA_FALSE; --
[EGIT] [core/enlightenment] master 01/03: unset shape event selection on systray xembed base
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=146f1662d9d6c1d96c4c2b9d81012eeaaa1a08c3 commit 146f1662d9d6c1d96c4c2b9d81012eeaaa1a08c3 Author: Mike Blumenkrantz Date: Wed Jan 22 22:32:53 2014 -0500 unset shape event selection on systray xembed base --- src/modules/systray/e_mod_xembed.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/systray/e_mod_xembed.c b/src/modules/systray/e_mod_xembed.c index ca7cf0c..83680e2 100644 --- a/src/modules/systray/e_mod_xembed.c +++ b/src/modules/systray/e_mod_xembed.c @@ -852,6 +852,7 @@ _systray_xembed_client_add(Instance_Xembed *xembed, int t EINA_UNUSED, E_Event_C xembed->ec = ev->ec; ev->ec->internal_no_remember = ev->ec->borderless = ev->ec->visible = ev->ec->internal = 1; ev->ec->border.changed = 1; +ecore_x_window_shape_events_select(e_client_util_win_get(ev->ec), 0); _xembed_win_resize(xembed); ev->ec->icccm.take_focus = ev->ec->icccm.accepts_focus = 0; EC_CHANGED(ev->ec); --
[EGIT] [core/enlightenment] master 02/03: don't select shape events for input_only clients, do set for internal clients
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=7f72d160af69348209deaf696a4e32eb4ef2dd13 commit 7f72d160af69348209deaf696a4e32eb4ef2dd13 Author: Mike Blumenkrantz Date: Wed Jan 22 22:34:01 2014 -0500 don't select shape events for input_only clients, do set for internal clients --- src/bin/e_comp_x.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c index 88a7ade..ea4b5fb 100644 --- a/src/bin/e_comp_x.c +++ b/src/bin/e_comp_x.c @@ -204,7 +204,7 @@ _e_comp_x_client_new_helper(E_Client *ec) e_pixmap_visual_cmap_set(ec->pixmap, ec->comp_data->initial_attributes.visual, ec->comp_data->initial_attributes.colormap); - if (ec->override && (!ec->internal)) + if (ec->override && (!ec->input_only)) ecore_x_window_shape_events_select(win, 1); if (ec->override && (!ec->input_only)) ecore_x_present_select_events(win, ECORE_X_PRESENT_EVENT_MASK_CONFIGURE_NOTIFY); --
[EGIT] [core/enlightenment] master 03/03: ignore only non-override non-reparented clients when disabling composite events
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=0f3e3ae5da7fb43d2b4af88f5d6eaca24dff385f commit 0f3e3ae5da7fb43d2b4af88f5d6eaca24dff385f Author: Mike Blumenkrantz Date: Wed Jan 22 22:34:55 2014 -0500 ignore only non-override non-reparented clients when disabling composite events --- src/bin/e_comp_x.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c index ea4b5fb..9f059bf 100644 --- a/src/bin/e_comp_x.c +++ b/src/bin/e_comp_x.c @@ -685,7 +685,7 @@ _e_comp_x_client_shape_input_rectangle_set(E_Client *ec) { Ecore_X_Window win = _e_comp_x_client_window_get(ec); - if (!ec->comp_data->reparented) return; + if ((!ec->override) && (!ec->comp_data->reparented)) return; if (ec->shaped_input) ecore_x_composite_window_events_disable(win); --
Re: [E-devel] [EGIT] [core/elementary] master 01/01: [naviframe] Fix to enable item deletion in pop_cb
uh im late. Seoz fixed. it. thanks for report. -Regards, Hermet- -Original Message- From: "Gustavo Lima Chaves" To: "Enlightenment developer list"; Cc: Sent: 2014-01-22 (수) 22:17:44 Subject: Re: [E-devel] [EGIT] [core/elementary] master 01/01: [naviframe] Fix to enable item deletion in pop_cb * Jaehyun Cho @samsung.com> [2014-01-22 05:14:53 -0800]: > hermet pushed a commit to branch master. > > http://git.enlightenment.org/core/elementary.git/commit/?id=bb39f8616f682af873ccf407086f8ce092369a11 > > commit bb39f8616f682af873ccf407086f8ce092369a11 > Author: Jaehyun Cho @samsung.com> > Date: Wed Jan 22 22:13:51 2014 +0900 > > [naviframe] Fix to enable item deletion in pop_cb > > Summary: Fix to enable item deletion in the registered pop_cb function > > Reviewers: Hermet > > Reviewed By: Hermet > > CC: seoz > > Differential Revision: https://phab.enlightenment.org/D487 > --- > src/lib/elc_naviframe.c 15 +++ > src/lib/elm_widget_naviframe.h 2 ++ > 2 files changed, 17 insertions(+) > > diff --git a/src/lib/elc_naviframe.c b/src/lib/elc_naviframe.c > index a2a1f85..c89fd0a 100644 > --- a/src/lib/elc_naviframe.c > +++ b/src/lib/elc_naviframe.c > @@ -504,6 +504,9 @@ _item_del_pre_hook(Elm_Object_Item *it) > nit = (Elm_Naviframe_Item *)it; > ELM_NAVIFRAME_DATA_GET(WIDGET(nit), sd); > > + nit->delete_me = EINA_TRUE; > + if (nit->ref > 0) return EINA_FALSE; > + > ecore_animator_del(nit->animator); > > top = (it == elm_naviframe_top_item_get(WIDGET(nit))); > @@ -1696,14 +1699,26 @@ _item_pop(Eo *obj, void *_pd, va_list *list) > if (it->popping) return; > it->popping = EINA_TRUE; > > + evas_object_ref(obj); > if (it->pop_cb) > { > +it->ref++; > if (!it->pop_cb(it->pop_data, (Elm_Object_Item *)it)) >{ > + it->ref--; > + if (it->delete_me) > + { > + _item_del_pre_hook(it); > + _elm_widget_item_free(it); Would you please exchange all calls to this couple of functions by the equally working elm_widget_item_del()? > + } > it->popping = EINA_FALSE; > + evas_object_unref(obj); > + > return; >} > +it->ref--; > } > + evas_object_unref(obj); > > if (sd->preserve) > content = it->content; > diff --git a/src/lib/elm_widget_naviframe.h b/src/lib/elm_widget_naviframe.h > index 83809f9..1b4d3fc 100644 > --- a/src/lib/elm_widget_naviframe.h > +++ b/src/lib/elm_widget_naviframe.h > @@ -57,6 +57,8 @@ struct _Elm_Naviframe_Item > Eina_Booltitle_enabled : 1; > Eina_Boolunfocusable : 1; > Eina_Boolpopping : 1; > + Eina_Booldelete_me : 1; > + int ref; > }; > > typedef struct _Elm_Naviframe_Content_Item_Pair > Elm_Naviframe_Content_Item_Pair; > > -- > > -- Gustavo Lima Chaves Senior Developer @ Intel - Open Source Technology Center -- CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel -- CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[EGIT] [core/elementary] master 01/01: focus: Fixed focus issue that the highlight was not visible on first click.
seoz pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=dda785611d86af2daa5be44cd3089c73aef58652 commit dda785611d86af2daa5be44cd3089c73aef58652 Author: Amitesh Singh Date: Thu Jan 23 14:12:46 2014 +0900 focus: Fixed focus issue that the highlight was not visible on first click. Summary: Focus highlight was not visible on first click on a widget with focus_highlight enabled on the window. This happens because on first click, the "elm,action,focus,show" signal was emitted before setting focus highlight edje object as theme object of elm window. In this patch, moved the _elm_win_focus_highlight_visible_set() call after focus highlight edje object set as theme object of window. This fixes T774. Test Plan: elementary_test->focus then click any widget. Focus won't appear for the first time. Reviewers: seoz, raster, woohyun Maniphest Tasks: T774 Differential Revision: https://phab.enlightenment.org/D462 --- src/lib/elm_win.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/elm_win.c b/src/lib/elm_win.c index 3ef1dac..7e111c9 100644 --- a/src/lib/elm_win.c +++ b/src/lib/elm_win.c @@ -763,7 +763,6 @@ _elm_win_focus_highlight_reconfigure(Elm_Win_Smart_Data *sd) else common_visible = sd->focus_highlight.cur.visible; - _elm_win_focus_highlight_visible_set(sd, common_visible); if (sig) elm_widget_signal_emit(target, sig, "elm"); @@ -798,6 +797,7 @@ _elm_win_focus_highlight_reconfigure(Elm_Win_Smart_Data *sd) evas_object_raise(fobj); the_end: + _elm_win_focus_highlight_visible_set(sd, common_visible); sd->focus_highlight.geometry_changed = EINA_FALSE; sd->focus_highlight.prev = sd->focus_highlight.cur; } --
[EGIT] [core/elementary] master 01/01: test_focus3: Correct wrong data for smart callback.
woohyun pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=0dcf2fb49ae316d25d0359bef8bb8a4cc04140a7 commit 0dcf2fb49ae316d25d0359bef8bb8a4cc04140a7 Author: WooHyun Jung Date: Thu Jan 23 15:07:33 2014 +0900 test_focus3: Correct wrong data for smart callback. --- src/bin/test_focus3.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/test_focus3.c b/src/bin/test_focus3.c index de951fe..9edb1c7 100644 --- a/src/bin/test_focus3.c +++ b/src/bin/test_focus3.c @@ -336,7 +336,7 @@ test_focus4(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_in evas_object_size_hint_weight_set(tg, EVAS_HINT_EXPAND, 0.0); evas_object_size_hint_align_set(tg, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_check_state_set(tg, EINA_TRUE); - evas_object_smart_callback_add(tg, "changed", custom_chain_unset_cb, bx); + evas_object_smart_callback_add(tg, "changed", custom_chain_unset_cb, bx2); elm_box_pack_end(bx, tg); evas_object_show(tg); --
[EGIT] [core/efl] master 01/01: eina_tls: add eina_tls_cb_new(Eina_TLS *key, Eina_TLS_Delete_Cb delete_cb)
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=316dc52d2f758bba2263cd25b940d1e4457910fd commit 316dc52d2f758bba2263cd25b940d1e4457910fd Author: Jérémy Zurcher Date: Thu Jan 23 14:50:08 2014 +0900 eina_tls: add eina_tls_cb_new(Eina_TLS *key, Eina_TLS_Delete_Cb delete_cb) Summary: delete_cb is called at thread exit for each Eina_TLS keys used by the thread Details: posix: pthread_key_create(key, delete_cb); does it win32/wince: eina_tls_free/new un/registers key&&cb into a static eina_list. eina_tls_set add the key to an eina_list in Eina_Thread_Win3. this list is cleared and callbacks are called in _eina_thread_join() Test Plan: win32/wince has to be tested, I have no setup to do it. Reviewers: cedric CC: cedric Differential Revision: https://phab.enlightenment.org/D489 --- src/lib/eina/eina_inline_lock_posix.x | 12 +++-- src/lib/eina/eina_inline_lock_win32.x | 21 - src/lib/eina/eina_inline_lock_wince.x | 25 +-- src/lib/eina/eina_lock.h | 4 ++ src/lib/eina/eina_thread.c| 85 +++ src/tests/eina/eina_test_lock.c | 40 + 6 files changed, 172 insertions(+), 15 deletions(-) diff --git a/src/lib/eina/eina_inline_lock_posix.x b/src/lib/eina/eina_inline_lock_posix.x index 5270f46..b9136fc 100644 --- a/src/lib/eina/eina_inline_lock_posix.x +++ b/src/lib/eina/eina_inline_lock_posix.x @@ -495,14 +495,20 @@ eina_rwlock_release(Eina_RWLock *mutex) return EINA_LOCK_SUCCEED; } -static inline Eina_Bool -eina_tls_new(Eina_TLS *key) +static inline Eina_Bool +eina_tls_cb_new(Eina_TLS *key, Eina_TLS_Delete_Cb delete_cb) { - if (pthread_key_create(key, NULL) != 0) + if (pthread_key_create(key, delete_cb) != 0) return EINA_FALSE; return EINA_TRUE; } +static inline Eina_Bool +eina_tls_new(Eina_TLS *key) +{ + return eina_tls_cb_new(key, NULL); +} + static inline void eina_tls_free(Eina_TLS key) { diff --git a/src/lib/eina/eina_inline_lock_win32.x b/src/lib/eina/eina_inline_lock_win32.x index 6feb60d..3123ad6 100644 --- a/src/lib/eina/eina_inline_lock_win32.x +++ b/src/lib/eina/eina_inline_lock_win32.x @@ -71,6 +71,9 @@ struct _Eina_RWLock EAPI extern Eina_Bool _eina_threads_activated; +EAPI extern Eina_Bool _eina_thread_tls_cb_register(Eina_TLS key, Eina_TLS_Delete_Cb cb); +EAPI extern Eina_Bool _eina_thread_tls_cb_unregister(Eina_TLS key); +EAPI extern Eina_Bool _eina_thread_tls_key_add(Eina_TLS key); static inline Eina_Bool @@ -481,16 +484,31 @@ eina_rwlock_release(Eina_RWLock *mutex) } static inline Eina_Bool -eina_tls_new(Eina_TLS *key) +eina_tls_cb_new(Eina_TLS *key, Eina_TLS_Delete_Cb delete_cb) { if ((*key = TlsAlloc()) == TLS_OUT_OF_INDEXES) return EINA_FALSE; + if (delete_cb) + { +if (!_eina_thread_tls_cb_register(*key, delete_cb)) + { + TlsFree(key); + return EINA_FALSE; + } + } return EINA_TRUE; } +static inline Eina_Bool +eina_tls_new(Eina_TLS *key) +{ + return eina_tls_cb_new(key, NULL); +} + static inline void eina_tls_free(Eina_TLS key) { + _eina_thread_tls_cb_unregister(key); TlsFree(key); } @@ -505,6 +523,7 @@ eina_tls_set(Eina_TLS key, const void *data) { if (TlsSetValue(key, (LPVOID)data) == 0) return EINA_FALSE; + _eina_thread_tls_key_add(key); return EINA_TRUE; } diff --git a/src/lib/eina/eina_inline_lock_wince.x b/src/lib/eina/eina_inline_lock_wince.x index 3b73256..3d96a84 100644 --- a/src/lib/eina/eina_inline_lock_wince.x +++ b/src/lib/eina/eina_inline_lock_wince.x @@ -26,6 +26,9 @@ #undef WIN32_LEAN_AND_MEAN EAPI extern Eina_Bool _threads_activated; +EAPI extern Eina_Bool _eina_thread_tls_cb_register(Eina_TLS key, Eina_TLS_Delete_Cb cb); +EAPI extern Eina_Bool _eina_thread_tls_cb_unregister(Eina_TLS key); +EAPI extern Eina_Bool _eina_thread_tls_key_add(Eina_TLS key); typedef HANDLEEina_Lock; typedef Eina_Lock Eina_Spinlock; @@ -151,17 +154,32 @@ eina_rwlock_release(Eina_RWLock *mutex) return eina_lock_release(mutex); } -static inline Eina_Bool -eina_tls_new(Eina_TLS *key) +static inline Eina_Bool +eina_tls_cb_new(Eina_TLS *key, Eina_TLS_Delete_Cb delete_cb) { - if (TlsAlloc() == TLS_OUT_OF_INDEXES) + if ((*key = TlsAlloc()) == TLS_OUT_OF_INDEXES) return EINA_FALSE; + if (delete_cb) + { +if (!_eina_thread_tls_cb_register(*key, delete_cb)) + { + TlsFree(key); + return EINA_FALSE; + } + } return EINA_TRUE; } +static inline Eina_Bool +eina_tls_new(Eina_TLS *key) +{ + return eina_tls_cb_new(key, NULL); +} + static inline void eina_tls_free(Eina_TLS key) { + _eina_thread_tls_cb_unregister(key); TlsFree(key); } @@ -176,6 +194,7 @@ eina_tls_set(Eina_TLS key, const void
[EGIT] [core/efl] master 01/01: Registers a fallback handler for a given subsection of the object hierarchy.
raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=86d9b4ed7153e91c9028af9a577c2d3a0dd32b52 commit 86d9b4ed7153e91c9028af9a577c2d3a0dd32b52 Author: Carsten Haitzler (Rasterman) Date: Thu Jan 23 15:45:22 2014 +0900 Registers a fallback handler for a given subsection of the object hierarchy. Summary: Goal of this patch is cover in Eldbus library function dbus_connection_register_fallback. http://dbus.freedesktop.org/doc/api/html/group__DBusConnection.html#gac4473b37bfa74ccf7459959d27e7bc59 Reviewers: stanluk, raster Reviewed By: raster Differential Revision: https://phab.enlightenment.org/D479 --- src/lib/eldbus/eldbus_private_types.h | 2 ++ src/lib/eldbus/eldbus_service.c | 40 +-- src/lib/eldbus/eldbus_service.h | 15 + 3 files changed, 51 insertions(+), 6 deletions(-) diff --git a/src/lib/eldbus/eldbus_private_types.h b/src/lib/eldbus/eldbus_private_types.h index bc4765d..8ebe682 100644 --- a/src/lib/eldbus/eldbus_private_types.h +++ b/src/lib/eldbus/eldbus_private_types.h @@ -146,6 +146,8 @@ struct _Eldbus_Service_Object Eldbus_Service_Object *parent; Eina_Inlist *children; + Eina_Bool fallback :1; /* Fallback mechanism flag */ + //ObjectManager data Eldbus_Service_Interface *objmanager; Eina_List *iface_added; diff --git a/src/lib/eldbus/eldbus_service.c b/src/lib/eldbus/eldbus_service.c index bb300c0..3149a58 100644 --- a/src/lib/eldbus/eldbus_service.c +++ b/src/lib/eldbus/eldbus_service.c @@ -647,7 +647,7 @@ _eldbus_service_object_parent_find(Eldbus_Service_Object *obj) } static Eldbus_Service_Object * -_eldbus_service_object_add(Eldbus_Connection *conn, const char *path) +_eldbus_service_object_add(Eldbus_Connection *conn, const char *path, Eina_Bool fallback) { Eldbus_Service_Object *obj, *rootobj; Eina_Inlist *safe; @@ -656,8 +656,9 @@ _eldbus_service_object_add(Eldbus_Connection *conn, const char *path) obj = calloc(1, sizeof(Eldbus_Service_Object)); EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL); - if (!dbus_connection_register_object_path(conn->dbus_conn, path, &vtable, - obj)) + obj->fallback = fallback; + if ((fallback && !dbus_connection_register_fallback(conn->dbus_conn, path, &vtable, obj)) || + (!fallback && !dbus_connection_register_object_path(conn->dbus_conn, path, &vtable, obj))) { free(obj); return NULL; @@ -668,6 +669,8 @@ _eldbus_service_object_add(Eldbus_Connection *conn, const char *path) obj->interfaces = eina_hash_string_superfast_new(NULL); eldbus_connection_free_cb_add(conn, _on_connection_free, obj); + if (obj->fallback) return obj; + eina_hash_add(obj->interfaces, introspectable->name, introspectable); eina_hash_add(obj->interfaces, properties_iface->name, properties_iface); @@ -924,8 +927,8 @@ fail_signature: return NULL; } -EAPI Eldbus_Service_Interface * -eldbus_service_interface_register(Eldbus_Connection *conn, const char *path, const Eldbus_Service_Interface_Desc *desc) +static Eldbus_Service_Interface * +_eldbus_service_interface_register(Eldbus_Connection *conn, const char *path, const Eldbus_Service_Interface_Desc *desc, Eina_Bool fallback) { Eldbus_Service_Object *obj; Eldbus_Service_Interface *iface; @@ -950,7 +953,7 @@ eldbus_service_interface_register(Eldbus_Connection *conn, const char *path, con return NULL; if (!obj) - obj = _eldbus_service_object_add(conn, path); + obj = _eldbus_service_object_add(conn, path, fallback); else obj->introspection_dirty = EINA_TRUE; EINA_SAFETY_ON_NULL_GOTO(obj, fail); @@ -982,6 +985,18 @@ fail: return NULL; } +EAPI Eldbus_Service_Interface * +eldbus_service_interface_register(Eldbus_Connection *conn, const char *path, const Eldbus_Service_Interface_Desc *desc) +{ + return _eldbus_service_interface_register(conn, path, desc, EINA_FALSE); +} + +EAPI Eldbus_Service_Interface * +eldbus_service_interface_fallback_register(Eldbus_Connection *conn, const char *path, const Eldbus_Service_Interface_Desc *desc) +{ + return _eldbus_service_interface_register(conn, path, desc, EINA_TRUE); +} + static Eina_Bool _idler_propschanged(void *data) { @@ -1275,11 +1290,18 @@ _object_handler(DBusConnection *dbus_conn EINA_UNUSED, DBusMessage *msg, void *u const Eldbus_Method *method; Eldbus_Message *eldbus_msg, *reply; Eldbus_Connection *conn; + const char* fallback_path = NULL; obj = user_data; if (!obj) return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; conn = obj->conn; + if (obj->fallback) + { + fallback_path = eina_stringshare_add(obj->path); + eina_stringshare_replace(&obj->path, dbus_message_get_path(msg)); + } + DBG("Connection@%p Got message:\n" " Type: %s\n" " Path: %s\n" @@ -1331,6 +1353,12 @@
Re: [E-devel] [EGIT] [core/efl] master 01/01: okay, bring back xrandr < 1.4 compat for ecore_x_randr_output_name_get
You can't revert parts of it. The reason I changed it was that it was hard for me to read the previous code. I tried the best I could to recreate the features of the previous code, with some minor additions to make dock/undock my laptop work, and added code to check whether the laptop lid is closed or not. Some of the issues might be because the config is used as the users config, but also to reflect the current system state. When I added the acpi stuff, it seems that this isn't a wise solution. So I would start with splitting this, so that runtime changes does not change how the user wants its system to be at login. S. > Den Jan 22, 2014 kl. 16:33 skrev Michael Blumenkrantz > : > > I have some connectors in the mail which will allow me to spend time working > on this. I think at least some of the changes made were worthwhile given that > we now have people who were previously unable to use randr able to use it, so > it shouldn't be too hard to fix the remaining issues. If you want to point > out or manually revert the sections that you know are wrong/unnecessary, that > would speed up my work. > > On Wed, 22 Jan 2014 14:32:51 + > Christopher Michael wrote: > >> Well, the issue does not happen on my work machines using both VGA and a >> DVI connectionHowever it does happen at home on the laptop using an >> HDMI connection. Have not had time to dig into it myself yet either >> >> dh >> >>> On 01/22/2014 02:01 PM, Sebastian Dransfeld wrote: >>> I got a 1920x1200 monitor and a 1600x900 laptop, works like a charm. But >>> as I said, I don't have time to fix this atm, so if it sucks to much, >>> revert. >>> >>> S. >>> On 01/21/2014 10:35 PM, Chris Michael wrote: Welcome to the wonderful world of XRandr version vs driver version vs E version vs .. the world ;) Lots of fun waiting for you and Seb here ;) BTW, YOU BROKE MY RANDR STUFF !!! Configuring monitors in the dialog is totally borked now :( 2 monitors (1600x9000) and (1920x1080) in a side-by-side config does not work anymore !!! The 1600 is fine. The 1920 ends up w/ half a screen !! FIX IT !!! You broke it, you bought it ;) dh > On 21/01/14 21:09, Mike Blumenkrantz wrote: > discomfitor pushed a commit to branch master. > > http://git.enlightenment.org/core/efl.git/commit/?id=052fc85cd34aec41d50e5d8333bac6ee9ba9c7d6 > > commit 052fc85cd34aec41d50e5d8333bac6ee9ba9c7d6 > Author: Mike Blumenkrantz > Date: Tue Jan 21 16:07:38 2014 -0500 > > okay, bring back xrandr < 1.4 compat for > ecore_x_randr_output_name_get > > apparently I read the commit order wrong and this fix went in for > 1.4.0, not 1.3.2, which means anyone who has 1.3.2 has been having lots > of fun crashes for the past 24 hours > --- >configure.ac | 4 +--- >src/lib/ecore_x/xlib/ecore_x_randr.c | 15 +++ >2 files changed, 12 insertions(+), 7 deletions(-) > > diff --git a/configure.ac b/configure.ac > index 2d2e377..373ea6d 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -2875,9 +2875,7 @@ if test "x${want_x11_xlib}" = "xyes" ; then > ECORE_CHECK_X_EXTENSION([Xtest], [XTest.h], [Xtst], > [XTestFakeKeyEvent]) > ECORE_CHECK_X_EXTENSION([Xss], [scrnsaver.h], [Xss], > [XScreenSaverSelectInput]) > > - if test echo "$ECORE_X_LIBS" | grep -q Xrandr ; then > - PKG_CHECK_EXISTS([xrandr > 1.3.1], [], [AC_MSG_ERROR([Xrandr >= > 1.3.1 required])]) > - fi > + PKG_CHECK_EXISTS([xrandr > 1.3.2], [AC_DEFINE([XRANDR_GOOD], [1], > [good xrandr])], []) > > if test "${want_xpresent}" = "yes"; then > ECORE_CHECK_X_EXTENSION([Xpresent], [Xpresent.h], [Xpresent], > [XPresentQueryExtension]) > diff --git a/src/lib/ecore_x/xlib/ecore_x_randr.c > b/src/lib/ecore_x/xlib/ecore_x_randr.c > index b47..db1f109 100644 > --- a/src/lib/ecore_x/xlib/ecore_x_randr.c > +++ b/src/lib/ecore_x/xlib/ecore_x_randr.c > @@ -2206,10 +2206,17 @@ ecore_x_randr_output_name_get(Ecore_X_Window > root, Ecore_X_Randr_Output output, > { > if (info->name) > { > - ret = malloc(info->nameLen + 1); > - memcpy(ret, info->name, info->nameLen); > - ret[info->nameLen] = 0; > - if (len) *len = info->nameLen; > + size_t s; > +#ifdef XRANDR_GOOD > + s = info->nameLen; > +#else > + /* pre 1.4.0 does not fill in info->nameLen */ > + s = strlen(info->name); > +#endif > + ret = malloc(s + 1); > + memcpy(ret, info->name, s); > +