You can subscribe to this list here.
2013 |
Jan
|
Feb
(511) |
Mar
(1170) |
Apr
(1093) |
May
(812) |
Jun
(937) |
Jul
(870) |
Aug
(722) |
Sep
(254) |
Oct
|
Nov
|
Dec
|
---|
From: Bertrand J. <be...@me...> - 2013-09-13 13:12:19
|
Hi, The present list is now closed and will not accept anymore any mail : enl...@li... This list have been moved to gi...@li.... More info on : http://www.enlightenment.org/p.php?p=contact&l=en https://phab.enlightenment.org/w/hosting/lists/ -- Beber |
From: Stefan S. - E. G. <no-...@en...> - 2013-09-13 12:58:24
|
stefan pushed a commit to branch master. commit 76b0e7f10c57f912ae70c3b5e61667e76e08b048 Author: Stefan Schmidt <s.s...@sa...> Date: Fri Sep 13 13:49:08 2013 +0100 mailmaip: Add .mailmap file to fixup various git author entries. This is an attempt to unify the various spellings and email addresses people use in the git author line. This simple matching rules clean these up and show them as one single author. Which in turn makes statistics with e.g. git shortlog much nicer. I only fixed these up for the top 50 committer in efl. If your entry is missing or wrong feel free to add or change it. This changes alone brings down the unique author count to 275 from 311. --- .mailmap | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/.mailmap b/.mailmap new file mode 100644 index 0000000..ece597b --- /dev/null +++ b/.mailmap @@ -0,0 +1,45 @@ +# This cleans up all kind of different spellings, typos and different email +# addresses for commit authors. It makes git shortlog statistics more meaningful. +# +# More people can be added following this scheme: +# Proper Name <proper@email.xx> Commit Name <commit@email.xx> +# +# Please keep this fiule in sync between efl, elementary and e. + +Carsten Haitzler <ra...@ra...> Carsten Haitzler (Rasterman) <ra...@ra...> +Cedric BAIL <ced...@fr...> Cedric Bail <ced...@sa...> +Cedric BAIL <ced...@fr...> Cedric BAIL <ced...@sa...> +Cedric BAIL <ced...@fr...> Cedric Bail <ced...@fr...> +Cedric BAIL <ced...@fr...> Cedric BAIL <ce...@ef...> +Vincent Torri <vin...@gm...> Vincent Torri <vt...@un...> +Tom Hacohen <to...@st...> Tom 'TAsn' Hacohen <to...@st...> +Tom Hacohen <to...@st...> Tom <to...@st...> +Gustavo Sverzut Barbieri <bar...@gm...> Gustavo Sverzut Barbieri <bar...@pr...> +Christopher Michael <dev...@co...> Christopher Michael <cpm...@co...> +Christopher Michael <dev...@co...> Christopher Michael <cp....@sa...> +Christopher Michael <dev...@co...> Chris Michael <cp....@sa...> +Christopher Michael <dev...@co...> Chris Michael <dev...@co...> +Sebastian Dransfeld <sd...@ta...> Sebastian Dransfeld <seb...@si...> +Mike Blumenkrantz <mic...@gm...> Mike Blumenkrantz <m.b...@sa...> +ChunEon Park <he...@he...> ChunEon Park <chu...@sa...> +David Walter Seikel <on...@gm...> David Walter Seikel <won...@ya...> +Rafael Antognolli <ant...@gm...> Rafael Antognolli <raf...@in...> +Rafael Antognolli <ant...@gm...> Rafael Antognolli <raf...@li...> +Iván Briano <sac...@gm...> Ivan Briano <iva...@in...> +Iván Briano <sac...@gm...> Ivan Briano <sac...@gm...> +Lucas De Marchi <luc...@pr...> Lucas De Marchi <luc...@gm...> +Jihoon Kim <imf...@gm...> Jihoon Kim <jih...@sa...> +Stefan Schmidt <st...@da...> Stefan Schmidt <s.s...@sa...> +Jonas M. Gastal <jg...@pr...> Jonas Gastal <jg...@pr...> +Daniel Juyung Seo <seo...@gm...> Daniel Juyung Seo <juy...@sa...> +Daniel Juyung Seo <seo...@gm...> Daniel Juyung Seo <seo...@gm...> +Daniel Willmann <da...@to...> Daniel Willmann <d.w...@sa...> +Gustavo Lima Chaves <gl...@pr...> Gustavo Lima Chaves <gus...@in...> +José Roberto de Souza <zeh...@pr...> José Roberto de Souza <jos...@in...> +José Roberto de Souza <zeh...@pr...> José Roberto de Souza <zez...@gm...> +José Roberto de Souza <zeh...@pr...> José Roberto de Souza <zeh...@gm...> +Mike McCormack <mi...@at...> Mike McCormack <mj....@ri...> +Mike McCormack <mi...@at...> Mike McCormack <mj....@sa...> +Mike McCormack <mi...@at...> Mike McCormack <mi...@ri...> +Mike McCormack <mi...@at...> Mike McCormack <mi...@at...> +Boris Faure <bi...@gm...> Boris 'billiob' Faure <bi...@gm...> -- |
From: Cedric B. - E. G. <no-...@en...> - 2013-09-13 07:46:15
|
cedric pushed a commit to branch master. commit 7f23deb723f18dc50f307bebd44a721ac3932d39 Author: Cedric Bail <ced...@sa...> Date: Fri Sep 13 16:44:38 2013 +0900 eo: fix typo. --- src/lib/eo/Eo.h | 2 +- src/lib/eo/eo.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/eo/Eo.h b/src/lib/eo/Eo.h index 4921f6d..e1b4997 100644 --- a/src/lib/eo/Eo.h +++ b/src/lib/eo/Eo.h @@ -803,7 +803,7 @@ EAPI Eo *eo_parent_get(const Eo *obj); * * @see eo_parent_set() */ -EAPI Eina_Iterator *eo_childrens_iterator_new(Eo *obj_id); +EAPI Eina_Iterator *eo_children_iterator_new(Eo *obj_id); /** * @brief Set the parent of an object diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c index 1985a57..44895b6 100644 --- a/src/lib/eo/eo.c +++ b/src/lib/eo/eo.c @@ -1135,7 +1135,7 @@ _eo_children_iterator_free(Eo_Children_Iterator *it) } EAPI Eina_Iterator * -eo_childrens_iterator_new(Eo *obj_id) +eo_children_iterator_new(Eo *obj_id) { Eo_Children_Iterator *it; _Eo_Class *klass; -- |
From: ChunEon P. - E. G. <no-...@en...> - 2013-09-13 07:21:35
|
hermet pushed a commit to branch master. commit 0c1131933542ca0c4cd9dd33a3c560ecfd978631 Author: ChunEon Park <he...@he...> Date: Fri Sep 13 16:20:40 2013 +0900 elementary/genlist,gengrid - should be cancel the track object before item view is removed. --- src/lib/elm_gengrid.c | 4 ++-- src/lib/elm_genlist.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c index 913dc50..cd7d61f 100644 --- a/src/lib/elm_gengrid.c +++ b/src/lib/elm_gengrid.c @@ -544,13 +544,13 @@ _elm_gengrid_item_unrealize(Elm_Gen_Item *it, EINA_LIST_FREE(it->content_objs, content) evas_object_del(content); + elm_widget_item_track_cancel(it); + it->unrealize_cb(it); it->realized = EINA_FALSE; it->want_unrealize = EINA_FALSE; - elm_widget_item_track_cancel(it); - evas_event_thaw(evas_object_evas_get(WIDGET(it))); evas_event_thaw_eval(evas_object_evas_get(WIDGET(it))); } diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c index 5c1a756..bf24d98 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -343,13 +343,13 @@ _elm_genlist_item_unrealize(Elm_Gen_Item *it, ELM_SAFE_FREE(it->item_focus_chain, eina_list_free); + elm_widget_item_track_cancel(it); + it->unrealize_cb(it); it->realized = EINA_FALSE; it->want_unrealize = EINA_FALSE; - elm_widget_item_track_cancel(it); - evas_event_thaw(evas_object_evas_get(WIDGET(it))); evas_event_thaw_eval(evas_object_evas_get(WIDGET(it))); } -- |
From: Chris M. - E. G. <no-...@en...> - 2013-09-13 06:02:18
|
devilhorns pushed a commit to branch master. commit 0c88d8e8ceca665343d4ab03ea7ff9048edd7ad4 Author: Chris Michael <cp....@sa...> Date: Fri Sep 13 07:00:28 2013 +0100 Revert "Reduce additional call to eina_stringshare_replace." This reverts commit f4f44c777ad410eaea152cc8745ca641ea2c2d5a. --- src/lib/ecore_wayland/ecore_wl_input.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/ecore_wayland/ecore_wl_input.c b/src/lib/ecore_wayland/ecore_wl_input.c index 20f7381..e458d71 100644 --- a/src/lib/ecore_wayland/ecore_wl_input.c +++ b/src/lib/ecore_wayland/ecore_wl_input.c @@ -240,11 +240,11 @@ ecore_wl_input_cursor_from_name_set(Ecore_Wl_Input *input, const char *cursor_na _pointer_update_stop(input); + eina_stringshare_replace(&input->cursor_name, cursor_name); + /* No cursor. Set to default Left Pointer */ if (!cursor_name) eina_stringshare_replace(&input->cursor_name, "left_ptr"); - else - eina_stringshare_replace(&input->cursor_name, cursor_name); /* try to get this cursor from the theme */ if (!(cursor = ecore_wl_cursor_get(input->cursor_name))) -- |
From: ChunEon P. - E. G. <no-...@en...> - 2013-09-13 05:20:28
|
hermet pushed a commit to branch master. commit e380efe41deb856a4b208df54377cdeb2785cdb7 Author: ChunEon Park <he...@he...> Date: Fri Sep 13 14:19:41 2013 +0900 elementary/elm_object_item - delete the track objects when genlist/gengrid items are unrealized. --- src/lib/elm_gengrid.c | 3 +++ src/lib/elm_genlist.c | 3 +++ src/lib/elm_widget.c | 13 +++++++++++++ src/lib/elm_widget.h | 10 +++++++++- 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c index f4fcb06..913dc50 100644 --- a/src/lib/elm_gengrid.c +++ b/src/lib/elm_gengrid.c @@ -548,6 +548,9 @@ _elm_gengrid_item_unrealize(Elm_Gen_Item *it, it->realized = EINA_FALSE; it->want_unrealize = EINA_FALSE; + + elm_widget_item_track_cancel(it); + evas_event_thaw(evas_object_evas_get(WIDGET(it))); evas_event_thaw_eval(evas_object_evas_get(WIDGET(it))); } diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c index 99da991..5c1a756 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -347,6 +347,9 @@ _elm_genlist_item_unrealize(Elm_Gen_Item *it, it->realized = EINA_FALSE; it->want_unrealize = EINA_FALSE; + + elm_widget_item_track_cancel(it); + evas_event_thaw(evas_object_evas_get(WIDGET(it))); evas_event_thaw_eval(evas_object_evas_get(WIDGET(it))); } diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c index 4705412..9cd945c 100644 --- a/src/lib/elm_widget.c +++ b/src/lib/elm_widget.c @@ -5266,6 +5266,19 @@ _elm_widget_item_domain_part_text_translatable_set(Elm_Widget_Item *item, item->on_translate = EINA_FALSE; } +EAPI void +_elm_widget_item_track_cancel(Elm_Widget_Item *item) +{ + ELM_WIDGET_ITEM_CHECK_OR_RETURN(item); + + if (!item->track_obj) return; + + while (evas_object_ref_get(item->track_obj) > 0) + evas_object_unref(item->track_obj); + + evas_object_del(item->track_obj); +} + EAPI Evas_Object * elm_widget_item_track(Elm_Widget_Item *item) { diff --git a/src/lib/elm_widget.h b/src/lib/elm_widget.h index 6b65601..fb85c2a 100644 --- a/src/lib/elm_widget.h +++ b/src/lib/elm_widget.h @@ -776,6 +776,7 @@ EAPI void _elm_widget_item_domain_part_text_translatable_set(Elm_Wid EAPI Evas_Object *elm_widget_item_track(Elm_Widget_Item *item); EAPI void elm_widget_item_untrack(Elm_Widget_Item *item); EAPI int elm_widget_item_track_get(const Elm_Widget_Item *item); +EAPI void _elm_widget_item_track_cancel(Elm_Widget_Item *item); /** * Function to operate on a given widget's scrollabe children when necessary. @@ -1000,8 +1001,15 @@ EAPI void elm_widget_tree_dot_dump(const Evas_Object *top, FILE *out _elm_widget_item_del_pre_hook_set((Elm_Widget_Item *)item, (Elm_Widget_Del_Pre_Cb)func) /** + * Convenience function to query track_cancel. + * @see _elm_widget_item_del_pre_hook_set() + */ +#define elm_widget_item_track_cancel(item) \ + _elm_widget_item_track_cancel((Elm_Widget_Item *)item) + +/** * Convenience function to query translate hook. - * @see _elm_widget_item_translate() + * @see _elm_widget_item_track_cancel() */ #define elm_widget_item_translate(item) \ _elm_widget_item_translate((Elm_Widget_Item *)item) -- |
From: U. A. E. - E. G. <no-...@en...> - 2013-09-13 03:06:53
|
uartie pushed a commit to branch master. commit 429ecf0a296b80fe434d21ecf342d694029dc2ec Author: U. Artie Eoff <ull...@in...> Date: Thu Sep 12 19:54:13 2013 -0700 elm/examples: port 265eff94bb6274c284e8e111192f9922906990ac "Autodetect engine on the glview example" Signed-off-by: U. Artie Eoff <ull...@in...> --- src/examples/glview_example_01.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/examples/glview_example_01.c b/src/examples/glview_example_01.c index 3fa2c02..0aa8ed6 100644 --- a/src/examples/glview_example_01.c +++ b/src/examples/glview_example_01.c @@ -250,10 +250,6 @@ elm_main(int argc, char **argv) if (!(gld = calloc(1, sizeof(GLData)))) return 1; - // set the preferred engine to opengl_x11. if it isnt' available it - // may use another transparently - elm_config_preferred_engine_set("opengl_x11"); - elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); win = elm_win_util_standard_add("glview simple", "GLView Simple"); -- |
From: U. A. E. - E. G. <no-...@en...> - 2013-09-13 02:37:09
|
uartie pushed a commit to branch master. commit 3f6c2d58133efc4e7541a07e4277efd2a80d2f33 Author: U. Artie Eoff <ull...@in...> Date: Thu Sep 12 19:28:28 2013 -0700 examples: Fixed Makefile regression of rELM1dcd32068 https://phab.enlightenment.org/T366 make - Circular dependency dropped Signed-off-by: U. Artie Eoff <ull...@in...> --- src/examples/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/examples/Makefile.am b/src/examples/Makefile.am index 32beda8..8afe87a 100644 --- a/src/examples/Makefile.am +++ b/src/examples/Makefile.am @@ -288,7 +288,7 @@ transit_example_04 \ web_example_01 \ web_example_02 \ win_example \ -track_example_01.c +track_example_01 if ELEMENTARY_WINDOWS_BUILD efl_thread_1_SOURCES = efl_thread_win32_1.c -- |
From: Jihoon K. - E. G. <no-...@en...> - 2013-09-13 01:53:16
|
jihoon pushed a commit to branch ecore-1.7. commit 72fe9ed09b48cd291237c1669f4f41c382948e08 Author: Jihoon Kim <jih...@sa...> Date: Fri Sep 13 10:53:01 2013 +0900 ecore_imf: Fix memory leak in scim immodule --- ChangeLog | 4 ++++ NEWS | 11 +++++++++++ src/modules/immodules/scim/scim_imcontext.cpp | 14 ++++++++++++++ 3 files changed, 29 insertions(+) diff --git a/ChangeLog b/ChangeLog index 85c2e6f..916e5d0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1196,3 +1196,7 @@ 2013-08-02 Eduardo Lima (Etrunko) * 1.7.8 release + +2013-09-12 Jihoon Kim (jihoon) + + * ecore_imf: Fix memory leak in scim immodule diff --git a/NEWS b/NEWS index b961758..295176d 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,14 @@ +Ecore 1.7.9 + +Changes since Ecore 1.7.8: +-------------------------- +Additions: + +Deprecations: + +Fixes: + * ecore_imf: Fix memory leak in scim immodule + Ecore 1.7.8 Changes since Ecore 1.7.7: diff --git a/src/modules/immodules/scim/scim_imcontext.cpp b/src/modules/immodules/scim/scim_imcontext.cpp index d4d20b1..64d1ebc 100644 --- a/src/modules/immodules/scim/scim_imcontext.cpp +++ b/src/modules/immodules/scim/scim_imcontext.cpp @@ -2818,8 +2818,22 @@ slot_get_surrounding_text(IMEngineInstanceBase *si, { SCIM_DEBUG_FRONTEND(2) << "Surrounding text: " << surrounding <<"\n"; SCIM_DEBUG_FRONTEND(2) << "Cursor Index : " << cursor_index <<"\n"; + if (!surrounding) + return false; + + if (cursor_index < 0) + { + free(surrounding); + surrounding = NULL; + return false; + } + WideString before(utf8_mbstowcs(String(surrounding, surrounding + cursor_index))); WideString after(utf8_mbstowcs(String(surrounding + cursor_index))); + + free(surrounding); + surrounding = NULL; + if (maxlen_before > 0 && ((unsigned int)maxlen_before) < before.length()) before = WideString(before.begin() + (before.length() - maxlen_before), before.end()); else if (maxlen_before == 0) before = WideString(); -- |
From: Bertrand J. - E. G. <no-...@en...> - 2013-09-13 01:03:24
|
beber pushed a commit to branch master. commit b81b9a6c2884d7e5c37403b4a4806b95e9ac09f3 Author: Bertrand Jacquin <be...@me...> Date: Fri Sep 13 03:02:55 2013 +0200 conf: Update EliveCD feed URL --- conf/config.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/config.ini b/conf/config.ini index 6c848d2..5b2a372 100644 --- a/conf/config.ini +++ b/conf/config.ini @@ -111,7 +111,7 @@ user = morlenxus name = ~Brian Miculcy face = yes -[http://www.elivecd.org/feed.xml] +[http://www.elivecd.org/feed/] user = princeamd name = ~Deon Thomas -- |
From: Carsten H. (T. R. <ra...@ra...> - 2013-09-13 00:46:11
|
On Thu, 12 Sep 2013 16:52:07 +0100 Tom Hacohen <tom...@sa...> said: > On 12/09/13 16:37, ChunEon Park wrote: > > Many cases can be. > > > > for example, in case of fancy application. > > user wanna add a particle effect when a list item is selected. > > > > in that case, item geometry may be required. > > > > Same comments as about the previous commit + more. > > Particle effect: unless I get you wrong, shouldn't that be an edje theme? > > Same comments as about the previous commit: > You are adding API without talking about it, or showing any use case. > Real life use case. Or at least showing there is one in some secret lab. > This way we end up with a lot of API no one uses we have to support and > document. > Also, because you don't talk about them on IRC or the ML it feels like > you are trying to sneak them under the radar. hermet did discuss it - off line with me, cedric and daniel. there are use cases. they are rare and special case. you want somethnig to hover/track the tiem (a popup menu, a popup pane that slides out, or just an OVERLAYED effect, and this isnt supported for items - elm_hover supports it for full objects though). exposing a fake rect is the least evil solution. it doesnt expose the real object, which minimized the risk of someone doing something wrong with it, and keeps overhead down. other thnigs like DND want/need to know the starting geometry of the item. if you do dnd yourself within your window via objects, you need this. another example is that on the left i have a list, on the right i have a bunch of panes with expanded info i want to draw a connection line from the item to the pane that it is related to. i NEED to know the position and size of the item AND follow it as it moves. i have to plance/configure/whatever that connecting object. it's a solution to a request from developers making apps. there are many uses for it, but it is niche. > For many APIs there can be many use cases, even for APIs that do nothing > whatsoever, but that doesn't justify them. Especially since there might > be better solutions. > > I believe Gustavo was trying to get more information, in order to try > and think of an alternative solutions or means of achieving what you are > trying to achieve. > > > I'm not trying to belittle your work, and I haven't read the patch > myself. I skimmed over it when I first saw it, and decided to keep quite > because arguing against the previous API lead to nothing. Everyone was > against, and it's still there. > > -- > Tom. > > > ------------------------------------------------------------------------------ > How ServiceNow helps IT people transform IT departments: > 1. Consolidate legacy IT systems to a single system of record for IT > 2. Standardize and globalize service processes across IT > 3. Implement zero-touch automation to replace manual, redundant tasks > http://pubads.g.doubleclick.net/gampad/clk?id=51271111&iu=/4140/ostg.clktrk > _______________________________________________ > enlightenment-devel mailing list > enl...@li... > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- The Rasterman (Carsten Haitzler) ra...@ra... |
From: Tom H. - E. G. <no-...@en...> - 2013-09-12 15:13:01
|
tasn pushed a commit to branch master. commit bded5a995074f7843e2f86a0e517e4a9b70dbc65 Author: Tom Hacohen <to...@st...> Date: Thu Sep 12 16:09:45 2013 +0100 Highlight map area of object if exists. This changes the highlighting code to highlight the map geometry of an object instead of it's geometry when highlighting a mapped object. While doing that, I also simplified the highlighting code a bit, more specifically, removed the unused PADDING option. --- src/lib/clouseau_app.c | 68 +++++++++++++++++++++++++++++++++++---------- src/lib/clouseau_private2.h | 6 +--- 2 files changed, 55 insertions(+), 19 deletions(-) diff --git a/src/lib/clouseau_app.c b/src/lib/clouseau_app.c index 1a399fe..5a282d3 100644 --- a/src/lib/clouseau_app.c +++ b/src/lib/clouseau_app.c @@ -235,15 +235,6 @@ clouseau_data_object_highlight(Evas_Object *obj, Clouseau_Evas_Props *props, bmp if (props) { - /* When working offline grab info from struct */ - Evas_Coord x_bmp, y_bmp; - - evas_object_geometry_get(view->o, &x_bmp, &y_bmp, NULL, NULL); - x = (view->zoom_val * props->x) + x_bmp; - y = (view->zoom_val * props->y) + y_bmp; - wd = (view->zoom_val * props->w); - ht = (view->zoom_val * props->h); - e = evas_object_evas_get(view->win); } else @@ -256,19 +247,68 @@ clouseau_data_object_highlight(Evas_Object *obj, Clouseau_Evas_Props *props, bmp return; } - evas_object_geometry_get(obj, &x, &y, &wd, &ht); - /* Take evas from object if working online */ e = evas_object_evas_get(obj); if (!e) return; } /* Continue and do the Highlight */ - r = evas_object_rectangle_add(e); + r = evas_object_polygon_add(e); + evas_object_move(r, 0, 0); + + if (props) + { + /* When working offline grab info from struct */ + Evas_Coord x_bmp, y_bmp; + + /* If there's a map, highlight the map coords, not the object's */ + if (props->points_count > 0) + { + int i = props->points_count; + for ( ; i > 0 ; i--) + { + evas_object_polygon_point_add(r, + props->points[i].x, props->points[i].y); + } + } + else + { + evas_object_geometry_get(view->o, &x_bmp, &y_bmp, NULL, NULL); + x = (view->zoom_val * props->x) + x_bmp; + y = (view->zoom_val * props->y) + y_bmp; + wd = (view->zoom_val * props->w); + ht = (view->zoom_val * props->h); + evas_object_polygon_point_add(r, x, y); + evas_object_polygon_point_add(r, x + wd, y); + evas_object_polygon_point_add(r, x + wd, y + ht); + evas_object_polygon_point_add(r, x, y + ht); + } + } + else + { + const Evas_Map *map; + if ((map = evas_object_map_get(obj))) + { + int i = evas_map_count_get(map); + for ( ; i > 0 ; i--) + { + Evas_Coord mx, my; + evas_map_point_coord_get(map, i - 1, &mx, &my, NULL); + evas_object_polygon_point_add(r, mx, my); + } + } + else + { + evas_object_geometry_get(obj, &x, &y, &wd, &ht); + evas_object_polygon_point_add(r, x, y); + evas_object_polygon_point_add(r, x + wd, y); + evas_object_polygon_point_add(r, x + wd, y + ht); + evas_object_polygon_point_add(r, x, y + ht); + } + } + /* Put the object as high as possible. */ evas_object_layer_set(r, EVAS_LAYER_MAX); - evas_object_move(r, x - PADDING, y - PADDING); - evas_object_resize(r, wd + (2 * PADDING), ht + (2 * PADDING)); evas_object_color_set(r, HIGHLIGHT_R, HIGHLIGHT_G, HIGHLIGHT_B, HIGHLIGHT_A); evas_object_show(r); diff --git a/src/lib/clouseau_private2.h b/src/lib/clouseau_private2.h index 045618f..586de3a 100644 --- a/src/lib/clouseau_private2.h +++ b/src/lib/clouseau_private2.h @@ -27,11 +27,7 @@ enum { HIGHLIGHT_R = 255, HIGHLIGHT_G = 128, HIGHLIGHT_B = 128, - HIGHLIGHT_A = 255, - - /* How much padding around the highlight box. - * Currently we don't want any. */ - PADDING = 0, + HIGHLIGHT_A = 255 }; typedef enum -- |
From: Stefan S. - E. G. <no-...@en...> - 2013-09-12 14:54:51
|
stefan pushed a commit to branch master. commit c244dfe89ebf936f14f642c1ae090e3c5d6acb6b Author: Stefan Schmidt <s.s...@sa...> Date: Thu Sep 12 15:53:10 2013 +0100 ephysics: Avoid use after free. Like the one before. This time we use free deirectly so no delay. Don't use it after being freed. CID: 1039894 --- src/lib/ephysics/ephysics_world.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/ephysics/ephysics_world.cpp b/src/lib/ephysics/ephysics_world.cpp index b75bb95..60d6b00 100644 --- a/src/lib/ephysics/ephysics_world.cpp +++ b/src/lib/ephysics/ephysics_world.cpp @@ -407,8 +407,8 @@ _ephysics_world_free(EPhysics_World *world) eina_condition_free(&world->condition); eina_lock_free(&world->mutex); - free(world); INF("World %p deleted.", world); + free(world); ephysics_dom_count_dec(); } -- |
From: Stefan S. - E. G. <no-...@en...> - 2013-09-12 14:51:48
|
stefan pushed a commit to branch master. commit 95b8c98e9149ae5cbffe9fea96c1603eb24d2757 Author: Stefan Schmidt <s.s...@sa...> Date: Thu Sep 12 15:48:58 2013 +0100 ephysics: Avoid use after free. body gets deleted here so better not access it afterwards. My guess is that in many cases the actual free gets delayed long enough to not crash here but better avoid this race in the first place. CID: 1039896 --- src/lib/ephysics/ephysics_body.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/ephysics/ephysics_body.cpp b/src/lib/ephysics/ephysics_body.cpp index 791ea50..4235d02 100644 --- a/src/lib/ephysics/ephysics_body.cpp +++ b/src/lib/ephysics/ephysics_body.cpp @@ -3349,8 +3349,8 @@ ephysics_orphan_body_del(EPhysics_Body *body) { _ephysics_body_event_callback_call(body, EPHYSICS_CALLBACK_BODY_DEL, (void *) body->evas_obj); - _ephysics_body_del(body); INF("Body %p deleted.", body); + _ephysics_body_del(body); } EAPI void -- |
From: ChunEon P. - E. G. <no-...@en...> - 2013-09-12 14:49:13
|
hermet pushed a commit to branch master. commit bcd8f08025a0b97e090779ab5a1b13cfb4de676f Author: ChunEon Park <he...@he...> Date: Thu Sep 12 23:48:54 2013 +0900 elementary/elm_object_item - removed white trailings. --- src/lib/elm_object_item.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/lib/elm_object_item.h b/src/lib/elm_object_item.h index cce8f8d..562c16d 100644 --- a/src/lib/elm_object_item.h +++ b/src/lib/elm_object_item.h @@ -657,7 +657,7 @@ EAPI Eina_Bool elm_object_item_cursor_engine_only_get(const E * This returns track object of the item. * * @param it The Elementary Object Item to be tracked. - * @return The track object. + * @return The track object. * * @note This gets a rectangle object that represents the object item's internal * object. If you wanna check the geometry, visibility of the item, you @@ -678,7 +678,7 @@ EAPI Eina_Bool elm_object_item_cursor_engine_only_get(const E * track object. * * @see elm_object_item_untrack() - * @see elm_object_item_track_get() + * @see elm_object_item_track_get() * * @since 1.8 * @@ -692,10 +692,10 @@ EAPI Evas_Object *elm_object_item_track(Elm_Object_Item *it); * @param it The Elementary Object Item that returned track object. * * @note This retrieves the track object that was returned from - * elm_object_item_track(). + * elm_object_item_track(). * * @see elm_object_item_track() - * @see elm_object_item_track_get() + * @see elm_object_item_track_get() * * @since 1.8 * @@ -717,7 +717,7 @@ EAPI void elm_object_item_untrack(Elm_Object_Item *it); * count. * * @see elm_object_item_track() - * @see elm_object_item_track_get() + * @see elm_object_item_track_get() * * @since 1.8 * -- |
From: Stefan S. - E. G. <no-...@en...> - 2013-09-12 14:44:14
|
stefan pushed a commit to branch master. commit 1fd3950cda333fa8147ee92a659505978a471d70 Author: Stefan Schmidt <s.s...@sa...> Date: Thu Sep 12 15:40:41 2013 +0100 ecore_evas: Remove unused code. rot = rot % 360; while (rot < 0) rot += 360; it is guaranteed that rot is between 0 and 359. CID: 1039470, 1039471 --- src/lib/ecore_evas/ecore_evas.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c index f31819e..ac2becb 100644 --- a/src/lib/ecore_evas/ecore_evas.c +++ b/src/lib/ecore_evas/ecore_evas.c @@ -1203,7 +1203,6 @@ ecore_evas_rotation_set(Ecore_Evas *ee, int rot) } rot = rot % 360; while (rot < 0) rot += 360; - while (rot >= 360) rot -= 360; IFC(ee, fn_rotation_set) (ee, rot, 0); /* make sure everything gets redrawn */ evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h); @@ -1222,7 +1221,6 @@ ecore_evas_rotation_with_resize_set(Ecore_Evas *ee, int rot) } rot = rot % 360; while (rot < 0) rot += 360; - while (rot >= 360) rot -= 360; IFC(ee, fn_rotation_set) (ee, rot, 1); /* make sure everything gets redrawn */ evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h); -- |
From: ChunEon P. - E. G. <no-...@en...> - 2013-09-12 14:37:59
|
hermet pushed a commit to branch master. commit ffeed9f3e2c739e178333623fdb026fad06b0f75 Author: ChunEon Park <he...@he...> Date: Thu Sep 12 23:37:00 2013 +0900 elementary - Actually this code is useless. there track object will be always NULL. --- src/lib/elm_widget.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c index 1aa2bbc..4705412 100644 --- a/src/lib/elm_widget.c +++ b/src/lib/elm_widget.c @@ -4985,13 +4985,6 @@ _elm_widget_item_free(Elm_Widget_Item *item) if (item->access_info) eina_stringshare_del(item->access_info); - if (item->track_obj) - { - evas_object_event_callback_del(item->track_obj, EVAS_CALLBACK_DEL, - _track_obj_del); - evas_object_del(item->track_obj); - } - EINA_LIST_FREE(item->signals, wisd) { eina_stringshare_del(wisd->emission); -- |
From: ChunEon P. - E. G. <no-...@en...> - 2013-09-12 14:30:54
|
hermet pushed a commit to branch master. commit e69bda68dc93fb779ec933f27ef8c622e86cf91b Author: ChunEon Park <he...@he...> Date: Thu Sep 12 23:30:23 2013 +0900 elementary - oops missed example adding. --- src/examples/track_example_01.c | 74 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/src/examples/track_example_01.c b/src/examples/track_example_01.c new file mode 100644 index 0000000..3eab308 --- /dev/null +++ b/src/examples/track_example_01.c @@ -0,0 +1,74 @@ +/** + * Simple Elementary's <b>object item track</b> example, illustrating its + * creation. + * + * See stdout/stderr for output. Compile with: + * + * @verbatim + * gcc -g track_example_01.c -o list_example_01 `pkg-config --cflags --libs elementary` + * @endverbatim + */ + +#include <Elementary.h> + +void +item_select_cb(void *data, Evas_Object *obj, void *event_info) +{ + Evas_Coord x, y, w, h; + Eina_Bool visible; + Elm_Object_Item *it = event_info; + Evas_Object *track = elm_object_item_track(it); + evas_object_geometry_get(track, &x, &y, &w, &h); + + visible = evas_object_visible_get(track); + printf("track geometry = (%d %d %d %d) visible(%d)\n", + x, y, w, h, visible); + + elm_object_item_untrack(it); +} + +EAPI_MAIN int +elm_main(int argc, char **argv) +{ + Evas_Object *win, *bx, *li; + unsigned int i; + static const char *lbl[] = + { + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + }; + + elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); + + win = elm_win_util_standard_add("list", "List Example"); + elm_win_autodel_set(win, EINA_TRUE); + + bx = elm_box_add(win); + evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(win, bx); + evas_object_show(bx); + + li = elm_list_add(win); + evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_box_pack_end(bx, li); + for (i = 0; i < sizeof(lbl) / sizeof(lbl[0]); i++) + elm_list_item_append(li, lbl[i], NULL, NULL, item_select_cb, NULL); + + evas_object_show(li); + elm_list_go(li); + + evas_object_resize(win, 320, 240); + evas_object_show(win); + + elm_run(); + elm_shutdown(); + + return 0; +} +ELM_MAIN() -- |
From: Stefan S. - E. G. <no-...@en...> - 2013-09-12 14:26:34
|
stefan pushed a commit to branch master. commit d54bfd7e1db66a7cc8b57669257dcfaf98ab95af Author: Stefan Schmidt <s.s...@sa...> Date: Thu Sep 12 15:24:32 2013 +0100 emotion: Avoid leak by also checking for fd being null. If fd would be null here we would leak the fd handle. Fix the check. CID: 1039175 --- src/lib/emotion/emotion_webcam.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/emotion/emotion_webcam.c b/src/lib/emotion/emotion_webcam.c index a0f81c7..52e6b5b 100644 --- a/src/lib/emotion/emotion_webcam.c +++ b/src/lib/emotion/emotion_webcam.c @@ -123,7 +123,7 @@ _emotion_check_device(Emotion_Webcam *ew) EINA_REFCOUNT_INIT(ew); - if (fd > 0) close(fd); + if (fd >= 0) close(fd); return; -- |
From: ChunEon P. - E. G. <no-...@en...> - 2013-09-12 14:24:38
|
hermet pushed a commit to branch master. commit 1dcd32068b6690c4b474dd79aa82fa34e566eae6 Author: ChunEon Park <he...@he...> Date: Thu Sep 12 23:24:02 2013 +0900 elementary - introduces 3 apis elm_object_item_track/untrack/track_get(). --- ChangeLog | 5 ++ NEWS | 1 + src/examples/Makefile.am | 6 ++- src/lib/elm_main.c | 19 +++++++ src/lib/elm_object_item.h | 73 ++++++++++++++++++++++++++ src/lib/elm_widget.c | 129 ++++++++++++++++++++++++++++++++++++++++++++++ src/lib/elm_widget.h | 5 ++ 7 files changed, 236 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 973c714..4eced13 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1611,3 +1611,8 @@ 2013-09-12 Ryuan Choi (ryuan) * elc_fileselector : Added "selected,invalid" smart callbacks. + +2013-09-12 ChunEon Park (Hermet) + + * elm_object_item : Introduces new APIs, elm_object_item_track(), + elm_object_item_untrack(), elm_object_item_track_get(). diff --git a/NEWS b/NEWS index 029433f..78c1369 100644 --- a/NEWS +++ b/NEWS @@ -89,6 +89,7 @@ Additions: * Add elm_table_child_get(). * Add support for flip focus direction. * Add "selected,invalid" smart callback for fileselector. + * elm_object_item : Introduces new APIs, elm_object_item_track(), elm_object_item_untrack(), elm_object_item_track_get(). Improvements: diff --git a/src/examples/Makefile.am b/src/examples/Makefile.am index 07b29de..32beda8 100644 --- a/src/examples/Makefile.am +++ b/src/examples/Makefile.am @@ -148,7 +148,8 @@ transit_example_03.c \ transit_example_04.c \ web_example_01.c \ web_example_02.c \ -win_example.c +win_example.c \ +track_example_01.c .edc.edj: $(EDJE_CC) $(EDJE_FLAGS) $< $@ @@ -286,7 +287,8 @@ transit_example_03 \ transit_example_04 \ web_example_01 \ web_example_02 \ -win_example +win_example \ +track_example_01.c if ELEMENTARY_WINDOWS_BUILD efl_thread_1_SOURCES = efl_thread_win32_1.c diff --git a/src/lib/elm_main.c b/src/lib/elm_main.c index 17654c6..f3c9a1f 100644 --- a/src/lib/elm_main.c +++ b/src/lib/elm_main.c @@ -1899,3 +1899,22 @@ elm_object_item_cursor_engine_only_get(const Elm_Object_Item *it) { return elm_widget_item_cursor_engine_only_get(it); } + +EAPI Evas_Object * +elm_object_item_track(Elm_Object_Item *it) +{ + return elm_widget_item_track((Elm_Widget_Item *)it); +} + +void +elm_object_item_untrack(Elm_Object_Item *it) +{ + elm_widget_item_untrack((Elm_Widget_Item *)it); +} + +int +elm_object_item_track_get(const Elm_Object_Item *it) +{ + return elm_widget_item_track_get((Elm_Widget_Item *)it); +} + diff --git a/src/lib/elm_object_item.h b/src/lib/elm_object_item.h index 8a0ccde..cce8f8d 100644 --- a/src/lib/elm_object_item.h +++ b/src/lib/elm_object_item.h @@ -652,3 +652,76 @@ EAPI void elm_object_item_cursor_engine_only_set(Elm_Obj * @ingroup General */ EAPI Eina_Bool elm_object_item_cursor_engine_only_get(const Elm_Object_Item *it); + +/** + * This returns track object of the item. + * + * @param it The Elementary Object Item to be tracked. + * @return The track object. + * + * @note This gets a rectangle object that represents the object item's internal + * object. If you wanna check the geometry, visibility of the item, you + * can call the evas apis such as evas_object_geometry_get(), + * evas_object_visible_get() to the track object. Note that all of the + * widget items may/may not have the internal object so this api may + * return @c NULL if the widget item doesn't have it. Additionally, the + * widget item is managed/controlled by the widget, the widget item could + * be changed(moved, resized even deleted) anytime by it's own widget's + * decision. So please dont' change the track object as well as don't + * keep the track object in your side as possible but get the track object + * at the moment you need to refer. Otherwise, you need to add some + * callbacks to the track object to track it's attributes changes. + * + * @warning After use the track object, please call the + * elm_object_item_untrack() paired to elm_object_item_track() + * definitely to free the track object properly. Don't delete the + * track object. + * + * @see elm_object_item_untrack() + * @see elm_object_item_track_get() + * + * @since 1.8 + * + * @ingroup General + */ +EAPI Evas_Object *elm_object_item_track(Elm_Object_Item *it); + +/** + * This retrieve the track object of the item. + * + * @param it The Elementary Object Item that returned track object. + * + * @note This retrieves the track object that was returned from + * elm_object_item_track(). + * + * @see elm_object_item_track() + * @see elm_object_item_track_get() + * + * @since 1.8 + * + * @ingroup General + */ +EAPI void elm_object_item_untrack(Elm_Object_Item *it); + +/** + * Get the track object reference count. + * + * @param it The Elementary Object Item that returned track object. + * + * @note This gets the reference count for the track object. Whenever you call + * the elm_object_item_track(), the reference count will be increased by + * one. Likely the referece count will be decreased again when you call + * the elm_object_item_untrack(). Unless the reference count reaches to + * zero, the track object won't be deleted. So please be sure to call + * elm_object_item_untrack() paired to the elm_object_item_track() call + * count. + * + * @see elm_object_item_track() + * @see elm_object_item_track_get() + * + * @since 1.8 + * + * @ingroup General + */ +EAPI int elm_object_item_track_get(const Elm_Object_Item *it); + diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c index c94f894..1aa2bbc 100644 --- a/src/lib/elm_widget.c +++ b/src/lib/elm_widget.c @@ -4867,6 +4867,68 @@ _elm_widget_orientation_set(Eo *obj __UNUSED__, void *_pd, va_list *list) if (ret) *ret = EINA_TRUE; } +static void +_track_obj_del(void *data, Evas *e, Evas_Object *obj, void *event_info); + +static void +_track_obj_update(Evas_Object *track, Evas_Object *obj) +{ + //Geometry + Evas_Coord x, y, w, h; + evas_object_geometry_get(obj, &x, &y, &w, &h); + evas_object_move(track, x, y); + evas_object_resize(track, w, h); + + //Visibility + if (evas_object_visible_get(obj)) evas_object_show(track); + else evas_object_hide(track); +} + +static void +_track_obj_view_update(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, + void *event_info EINA_UNUSED) +{ + Evas_Object *track = data; + _track_obj_update(track, obj); +} + +static void +_track_obj_view_del(void *data, Evas *e EINA_UNUSED, + Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Elm_Widget_Item *item = data; + + while (evas_object_ref_get(item->track_obj) > 0) + evas_object_unref(item->track_obj); + + evas_object_event_callback_del(item->track_obj, EVAS_CALLBACK_DEL, + _track_obj_del); + evas_object_del(item->track_obj); + item->track_obj = NULL; +} + +static void +_track_obj_del(void *data, Evas *e EINA_UNUSED, + Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Elm_Widget_Item *item = data; + item->track_obj = NULL; + + if (!item->view) return; + + evas_object_event_callback_del(item->view, EVAS_CALLBACK_RESIZE, + _track_obj_view_update); + evas_object_event_callback_del(item->view, EVAS_CALLBACK_MOVE, + _track_obj_view_update); + evas_object_event_callback_del(item->view, EVAS_CALLBACK_SHOW, + _track_obj_view_update); + evas_object_event_callback_del(item->view, EVAS_CALLBACK_HIDE, + _track_obj_view_update); + evas_object_event_callback_del(item->view, EVAS_CALLBACK_DEL, + _track_obj_view_del); +} + + /** * @internal * @@ -4923,6 +4985,13 @@ _elm_widget_item_free(Elm_Widget_Item *item) if (item->access_info) eina_stringshare_del(item->access_info); + if (item->track_obj) + { + evas_object_event_callback_del(item->track_obj, EVAS_CALLBACK_DEL, + _track_obj_del); + evas_object_del(item->track_obj); + } + EINA_LIST_FREE(item->signals, wisd) { eina_stringshare_del(wisd->emission); @@ -5204,6 +5273,66 @@ _elm_widget_item_domain_part_text_translatable_set(Elm_Widget_Item *item, item->on_translate = EINA_FALSE; } +EAPI Evas_Object * +elm_widget_item_track(Elm_Widget_Item *item) +{ + ELM_WIDGET_ITEM_CHECK_OR_RETURN(item, NULL); + + if (item->track_obj) + { + evas_object_ref(item->track_obj); + return item->track_obj; + } + + if (!item->view) return NULL; + + Evas_Object *track = + evas_object_rectangle_add(evas_object_evas_get(item->widget)); + evas_object_color_set(track, 0, 0, 0, 0); + evas_object_pass_events_set(track, EINA_TRUE); + _track_obj_update(track, item->view); + evas_object_event_callback_add(track, EVAS_CALLBACK_DEL, _track_obj_del, + item); + + evas_object_event_callback_add(item->view, EVAS_CALLBACK_RESIZE, + _track_obj_view_update, track); + evas_object_event_callback_add(item->view, EVAS_CALLBACK_MOVE, + _track_obj_view_update, track); + evas_object_event_callback_add(item->view, EVAS_CALLBACK_SHOW, + _track_obj_view_update, track); + evas_object_event_callback_add(item->view, EVAS_CALLBACK_HIDE, + _track_obj_view_update, track); + evas_object_event_callback_add(item->view, EVAS_CALLBACK_DEL, + _track_obj_view_del, item); + + evas_object_ref(track); + + item->track_obj = track; + + return track; +} + +void +elm_widget_item_untrack(Elm_Widget_Item *item) +{ + ELM_WIDGET_ITEM_CHECK_OR_RETURN(item); + + if (!item->track_obj) return; + evas_object_unref(item->track_obj); + + if (evas_object_ref_get(item->track_obj) == 0) + evas_object_del(item->track_obj); +} + +int +elm_widget_item_track_get(const Elm_Widget_Item *item) +{ + ELM_WIDGET_ITEM_CHECK_OR_RETURN(item, 0); + + if (!item->track_obj) return 0; + return evas_object_ref_get(item->track_obj); +} + typedef struct _Elm_Widget_Item_Tooltip Elm_Widget_Item_Tooltip; struct _Elm_Widget_Item_Tooltip diff --git a/src/lib/elm_widget.h b/src/lib/elm_widget.h index 48d8736..6b65601 100644 --- a/src/lib/elm_widget.h +++ b/src/lib/elm_widget.h @@ -579,6 +579,7 @@ struct _Elm_Widget_Item Eina_List *access_order; Eina_Inlist *translate_strings; Eina_List *signals; + Evas_Object *track_obj; Eina_Bool disabled : 1; Eina_Bool on_translate : 1; @@ -772,6 +773,10 @@ EAPI const char * _elm_widget_item_translatable_part_text_get(const Elm_Widg EAPI void _elm_widget_item_translate(Elm_Widget_Item *item); EAPI void _elm_widget_item_domain_part_text_translatable_set(Elm_Widget_Item *item, const char *part, const char *domain, Eina_Bool translatable); +EAPI Evas_Object *elm_widget_item_track(Elm_Widget_Item *item); +EAPI void elm_widget_item_untrack(Elm_Widget_Item *item); +EAPI int elm_widget_item_track_get(const Elm_Widget_Item *item); + /** * Function to operate on a given widget's scrollabe children when necessary. * @warning free the returned list with eina_list_free(). -- |
From: Chris M. - E. G. <no-...@en...> - 2013-09-12 14:04:14
|
devilhorns pushed a commit to branch master. commit 09768f143c4c360c36e9e08efa428119ee9ffb11 Author: Chris Michael <cp....@sa...> Date: Thu Sep 12 14:59:51 2013 +0100 Fix zmike issue w/ surface losing focus when we move/resize. - Check if surface is still focused by the pointer on focus_out events NB: Needed due to spurious focus_out events we receive from evas/edje - On spurious mouse_out event, check if pointer is actually still inside the surface. - Cleanup Move and Resize Grab code (don't need a binding event struct here). Signed-off-by: Chris Michael <cp....@sa...> --- src/modules/wl_desktop_shell/e_mod_main.c | 76 +++++++++++++++++-------------- 1 file changed, 43 insertions(+), 33 deletions(-) diff --git a/src/modules/wl_desktop_shell/e_mod_main.c b/src/modules/wl_desktop_shell/e_mod_main.c index 9393754..c422dd9 100644 --- a/src/modules/wl_desktop_shell/e_mod_main.c +++ b/src/modules/wl_desktop_shell/e_mod_main.c @@ -46,7 +46,7 @@ static void _e_wl_shell_shell_surface_cb_render_post(void *data, Evas *evas EINA static void _e_wl_shell_shell_surface_cb_focus_in(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED); static void _e_wl_shell_shell_surface_cb_focus_out(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED); static void _e_wl_shell_shell_surface_cb_mouse_in(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED); -static void _e_wl_shell_shell_surface_cb_mouse_out(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED); +static void _e_wl_shell_shell_surface_cb_mouse_out(void *data, Evas_Object *obj EINA_UNUSED, void *event); static void _e_wl_shell_shell_surface_cb_mouse_move(void *data, Evas_Object *obj EINA_UNUSED, void *event); static void _e_wl_shell_shell_surface_cb_mouse_up(void *data, Evas_Object *obj EINA_UNUSED, void *event); static void _e_wl_shell_shell_surface_cb_mouse_down(void *data, Evas_Object *obj EINA_UNUSED, void *event); @@ -58,7 +58,7 @@ static void _e_wl_shell_shell_surface_cb_bd_resize_update(void *data, void *bd); static void _e_wl_shell_shell_surface_cb_bd_resize_end(void *data, void *bd); static void _e_wl_shell_mouse_down_helper(E_Border *bd, int button, Evas_Point *output, E_Binding_Event_Mouse_Button *ev, Eina_Bool move); -static void _e_wl_shell_mouse_up_helper(E_Border *bd, int button, Evas_Point *output, E_Binding_Event_Mouse_Button *ev EINA_UNUSED); +static void _e_wl_shell_mouse_up_helper(E_Border *bd, int button, Evas_Point *output, E_Binding_Event_Mouse_Button *ev); /* shell surface interface prototypes */ static void _e_wl_shell_shell_surface_cb_pong(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, unsigned int serial); @@ -73,7 +73,7 @@ static void _e_wl_shell_shell_surface_cb_title_set(struct wl_client *client EINA static void _e_wl_shell_shell_surface_cb_class_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, const char *clas); /* shell move_grab interface prototypes */ -static void _e_wl_shell_move_grab_cb_focus(struct wl_pointer_grab *grab, struct wl_resource *surface EINA_UNUSED, wl_fixed_t x EINA_UNUSED, wl_fixed_t y EINA_UNUSED); +static void _e_wl_shell_move_grab_cb_focus(struct wl_pointer_grab *grab, struct wl_resource *surface, wl_fixed_t x EINA_UNUSED, wl_fixed_t y EINA_UNUSED); static void _e_wl_shell_move_grab_cb_motion(struct wl_pointer_grab *grab, unsigned int timestamp EINA_UNUSED, wl_fixed_t x, wl_fixed_t y); static void _e_wl_shell_move_grab_cb_button(struct wl_pointer_grab *grab, unsigned int timestamp EINA_UNUSED, unsigned int button EINA_UNUSED, unsigned int state); @@ -1186,6 +1186,7 @@ _e_wl_shell_shell_surface_cb_focus_out(void *data, Evas_Object *obj EINA_UNUSED, E_Wayland_Surface *ews = NULL; E_Wayland_Input *input = NULL; Eina_List *l = NULL; + struct wl_pointer *ptr; /* try to cast data to our surface structure */ if (!(ews = data)) return; @@ -1193,6 +1194,12 @@ _e_wl_shell_shell_surface_cb_focus_out(void *data, Evas_Object *obj EINA_UNUSED, /* if this surface is not visible, get out */ if (!ews->mapped) return; + if ((ptr = _e_wl_comp->input->wl.seat.pointer)) + { + if (ews->wl.surface == ptr->current) + return; + } + /* loop the list of inputs */ EINA_LIST_FOREACH(_e_wl_comp->seats, l, input) { @@ -1236,14 +1243,21 @@ _e_wl_shell_shell_surface_cb_mouse_in(void *data, Evas_Object *obj EINA_UNUSED, } static void -_e_wl_shell_shell_surface_cb_mouse_out(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +_e_wl_shell_shell_surface_cb_mouse_out(void *data, Evas_Object *obj EINA_UNUSED, void *event) { E_Wayland_Surface *ews = NULL; struct wl_pointer *ptr = NULL; + Evas_Event_Mouse_Out *ev; + + ev = event; /* try to cast data to our surface structure */ if (!(ews = data)) return; + if (E_INSIDE(ev->canvas.x, ev->canvas.y, ews->geometry.x, ews->geometry.y, + ews->geometry.w, ews->geometry.h)) + return; + /* if (!ews->input) return; */ /* try to get the pointer from this input */ @@ -2093,13 +2107,15 @@ _e_wl_shell_shell_surface_cb_class_set(struct wl_client *client EINA_UNUSED, str /* shell move_grab interface functions */ static void -_e_wl_shell_move_grab_cb_focus(struct wl_pointer_grab *grab, struct wl_resource *surface EINA_UNUSED, wl_fixed_t x EINA_UNUSED, wl_fixed_t y EINA_UNUSED) +_e_wl_shell_move_grab_cb_focus(struct wl_pointer_grab *grab, struct wl_resource *surface, wl_fixed_t x EINA_UNUSED, wl_fixed_t y EINA_UNUSED) { + struct wl_pointer *ptr; + /* safety */ if (!grab) return; - /* remove focus */ - grab->focus = NULL; + ptr = grab->pointer; + ptr->current = surface; } static void @@ -2140,31 +2156,27 @@ _e_wl_shell_move_grab_cb_button(struct wl_pointer_grab *grab, unsigned int times (state == WL_POINTER_BUTTON_STATE_RELEASED)) { E_Wayland_Surface *ews = NULL; - E_Binding_Event_Mouse_Button *ev; + int btn, x, y; if (!(ews = ewsg->shell_surface->surface)) return; - /* create a fake binding event for mouse button */ - ev = E_NEW(E_Binding_Event_Mouse_Button, 1); - /* set button property of the binding event */ if (ptr->grab_button == BTN_LEFT) - ev->button = 1; + btn = 1; else if (ptr->grab_button == BTN_MIDDLE) - ev->button = 2; + btn = 2; else if (ptr->grab_button == BTN_RIGHT) - ev->button = 3; + btn = 3; /* set the clicked location in the binding event */ - ev->canvas.x = wl_fixed_to_int(ptr->x) + + x = wl_fixed_to_int(ptr->x) + (ews->bd->x + ews->bd->client_inset.l); - ev->canvas.y = wl_fixed_to_int(ptr->y) + + y = wl_fixed_to_int(ptr->y) + (ews->bd->y + ews->bd->client_inset.t); /* call our helper function to end a move */ - _e_wl_shell_mouse_up_helper(ews->bd, ev->button, - &(Evas_Point){ev->canvas.x, ev->canvas.y}, - ev); + _e_wl_shell_mouse_up_helper(ews->bd, btn, + &(Evas_Point){x, y}, NULL); /* end the grab */ _e_wl_shell_grab_end(ewsg); @@ -2181,11 +2193,13 @@ _e_wl_shell_move_grab_cb_button(struct wl_pointer_grab *grab, unsigned int times static void _e_wl_shell_resize_grab_cb_focus(struct wl_pointer_grab *grab, struct wl_resource *surface EINA_UNUSED, wl_fixed_t x EINA_UNUSED, wl_fixed_t y EINA_UNUSED) { + struct wl_pointer *ptr; + /* safety */ if (!grab) return; - /* remove focus */ - grab->focus = NULL; + ptr = grab->pointer; + ptr->current = surface; } static void @@ -2226,31 +2240,27 @@ _e_wl_shell_resize_grab_cb_button(struct wl_pointer_grab *grab, unsigned int tim (state == WL_POINTER_BUTTON_STATE_RELEASED)) { E_Wayland_Surface *ews = NULL; - E_Binding_Event_Mouse_Button *ev; + int btn, x, y; if (!(ews = ewsg->shell_surface->surface)) return; - /* create a fake binding event for mouse button */ - ev = E_NEW(E_Binding_Event_Mouse_Button, 1); - /* set button property of the binding event */ if (ptr->grab_button == BTN_LEFT) - ev->button = 1; + btn = 1; else if (ptr->grab_button == BTN_MIDDLE) - ev->button = 2; + btn = 2; else if (ptr->grab_button == BTN_RIGHT) - ev->button = 3; + btn = 3; /* set the clicked location in the binding event */ - ev->canvas.x = wl_fixed_to_int(ptr->x) + + x = wl_fixed_to_int(ptr->x) + (ews->bd->x + ews->bd->client_inset.l); - ev->canvas.y = wl_fixed_to_int(ptr->y) + + y = wl_fixed_to_int(ptr->y) + (ews->bd->y + ews->bd->client_inset.t); /* call our helper function to end a move */ - _e_wl_shell_mouse_up_helper(ews->bd, ev->button, - &(Evas_Point){ev->canvas.x, ev->canvas.y}, - ev); + _e_wl_shell_mouse_up_helper(ews->bd, btn, + &(Evas_Point){x, y}, NULL); /* end the grab */ _e_wl_shell_grab_end(ewsg); -- |
From: Chris M. - E. G. <no-...@en...> - 2013-09-12 14:04:11
|
devilhorns pushed a commit to branch master. commit fddd57c7d9b90dfed75093e2bb30ac26b696115b Author: Chris Michael <cp....@sa...> Date: Thu Sep 12 14:57:58 2013 +0100 Pass along the evas_event for mouse_in/out on a surface to the smart callback. Signed-off-by: Chris Michael <cp....@sa...> --- src/bin/e_surface.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/bin/e_surface.c b/src/bin/e_surface.c index d2063ca..1e61362 100644 --- a/src/bin/e_surface.c +++ b/src/bin/e_surface.c @@ -40,8 +40,8 @@ static void _e_smart_clip_unset(Evas_Object *obj); /* local function prototypes */ static void _e_surface_cb_focus_in(void *data, Evas *evas EINA_UNUSED, void *event EINA_UNUSED); static void _e_surface_cb_focus_out(void *data, Evas *evas EINA_UNUSED, void *event EINA_UNUSED); -static void _e_surface_cb_mouse_in(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED); -static void _e_surface_cb_mouse_out(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED); +static void _e_surface_cb_mouse_in(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event); +static void _e_surface_cb_mouse_out(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event); static void _e_surface_cb_mouse_move(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event); static void _e_surface_cb_mouse_down(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event); static void _e_surface_cb_mouse_up(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj, void *event); @@ -370,15 +370,15 @@ _e_surface_cb_focus_out(void *data, Evas *evas EINA_UNUSED, void *event EINA_UNU } static void -_e_surface_cb_mouse_in(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +_e_surface_cb_mouse_in(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event) { - evas_object_smart_callback_call(data, "mouse_in", NULL); + evas_object_smart_callback_call(data, "mouse_in", event); } static void -_e_surface_cb_mouse_out(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +_e_surface_cb_mouse_out(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event) { - evas_object_smart_callback_call(data, "mouse_out", NULL); + evas_object_smart_callback_call(data, "mouse_out", event); } static void -- |
From: Chris M. - E. G. <no-...@en...> - 2013-09-12 14:04:11
|
devilhorns pushed a commit to branch master. commit 599d98e3f3618c8ef031f7a5b4748c48d9926e6d Author: Chris Michael <cp....@sa...> Date: Thu Sep 12 14:58:44 2013 +0100 Fix zmike issue w/ surface losing focus when we move/resize. Signed-off-by: Chris Michael <cp....@sa...> --- src/bin/e_comp_wl.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index 328b825..719d125 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -592,9 +592,7 @@ wl_pointer_set_focus(struct wl_pointer *pointer, struct wl_resource *surface, wl } resource = _find_resource_for_surface(&pointer->resource_list, surface); - if (resource && - (pointer->focus != surface || - pointer->focus_resource != resource)) + if (resource) { struct wl_display *disp; @@ -2249,7 +2247,6 @@ _e_comp_wl_pointer_configure(E_Wayland_Surface *ews, Evas_Coord x, Evas_Coord y, if (!input->wl.seat.pointer->focus) return; if ((focus = wl_resource_get_user_data(input->wl.seat.pointer->focus))) -// if ((focus = (E_Wayland_Surface *)input->wl.seat.pointer->focus)) { /* NB: Ideally, I wanted to use the e_pointer methods here so that * the cursor would match the E theme, however Wayland currently -- |
From: Chris M. - E. G. <no-...@en...> - 2013-09-12 14:03:45
|
devilhorns pushed a commit to branch master. commit f4f44c777ad410eaea152cc8745ca641ea2c2d5a Author: Chris Michael <cp....@sa...> Date: Thu Sep 12 13:25:34 2013 +0100 Reduce additional call to eina_stringshare_replace. Signed-off-by: Chris Michael <cp....@sa...> --- src/lib/ecore_wayland/ecore_wl_input.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/ecore_wayland/ecore_wl_input.c b/src/lib/ecore_wayland/ecore_wl_input.c index 6f56e9f..8352552 100644 --- a/src/lib/ecore_wayland/ecore_wl_input.c +++ b/src/lib/ecore_wayland/ecore_wl_input.c @@ -238,11 +238,11 @@ ecore_wl_input_cursor_from_name_set(Ecore_Wl_Input *input, const char *cursor_na _pointer_update_stop(input); - eina_stringshare_replace(&input->cursor_name, cursor_name); - /* No cursor. Set to default Left Pointer */ if (!cursor_name) eina_stringshare_replace(&input->cursor_name, "left_ptr"); + else + eina_stringshare_replace(&input->cursor_name, cursor_name); /* try to get this cursor from the theme */ if (!(cursor = ecore_wl_cursor_get(input->cursor_name))) -- |
From: Chris M. - E. G. <no-...@en...> - 2013-09-12 14:03:44
|
devilhorns pushed a commit to branch master. commit 0d0944c4ccee3f27cf3769ecf94e408594ac135c Author: Chris Michael <cp....@sa...> Date: Thu Sep 12 14:56:58 2013 +0100 Reduce unnecessary pointer frame callbacks NB: We only need to do pointer frame callbacks if the pointer is using an animated image. Signed-off-by: Chris Michael <cp....@sa...> --- src/lib/ecore_wayland/ecore_wl_input.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/lib/ecore_wayland/ecore_wl_input.c b/src/lib/ecore_wayland/ecore_wl_input.c index 8352552..20f7381 100644 --- a/src/lib/ecore_wayland/ecore_wl_input.c +++ b/src/lib/ecore_wayland/ecore_wl_input.c @@ -196,6 +196,8 @@ _ecore_wl_input_cursor_update(void *data) unsigned int delay; cursor_image = input->cursor->images[input->cursor_current_index]; + if (!cursor_image) return ECORE_CALLBACK_RENEW; + if ((buffer = wl_cursor_image_get_buffer(cursor_image))) { ecore_wl_input_pointer_set(input, input->cursor_surface, @@ -206,7 +208,7 @@ _ecore_wl_input_cursor_update(void *data) cursor_image->width, cursor_image->height); wl_surface_commit(input->cursor_surface); - if (!input->cursor_frame_cb) + if ((input->cursor->image_count > 1) && (!input->cursor_frame_cb)) _ecore_wl_input_cb_pointer_frame(input, NULL, 0); } @@ -515,7 +517,7 @@ _ecore_wl_input_cb_pointer_frame(void *data, struct wl_callback *callback, unsig return; } - if (!input->cursor_frame_cb) + if ((input->cursor->image_count > 1) && (!input->cursor_frame_cb)) { input->cursor_frame_cb = wl_surface_frame(input->cursor_surface); wl_callback_add_listener(input->cursor_frame_cb, -- |