aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCedric BAIL <cedric.bail@free.fr>2012-03-07 16:52:35 +0000
committerCedric BAIL <cedric.bail@free.fr>2012-03-07 16:52:35 +0000
commit8217a140a04f1734aaed8155e4d86b3f28e387df (patch)
treef5f7ff5e3e9ce0962bc57827cb23281dfb089e8f
parentecore: add needed exotic include. (diff)
downloadefl-8217a140a04f1734aaed8155e4d86b3f28e387df.tar.gz
edje: correctly propagate preload signal with GROUP.
SVN revision: 69004
-rw-r--r--legacy/edje/ChangeLog4
-rw-r--r--legacy/edje/NEWS3
-rw-r--r--legacy/edje/src/lib/edje_util.c18
3 files changed, 22 insertions, 3 deletions
diff --git a/legacy/edje/ChangeLog b/legacy/edje/ChangeLog
index f31d28ea77..e4f53e1764 100644
--- a/legacy/edje/ChangeLog
+++ b/legacy/edje/ChangeLog
@@ -382,3 +382,7 @@
* Entry: Replaced edje_object_part_text_style_user_set/get
with edje_object_part_text_style_user_set/get to correspond to
textblock's recent changes.
+
+2012-03-07 Cedric Bail
+
+ * Correctly count and propagate preload signal with GROUP.
diff --git a/legacy/edje/NEWS b/legacy/edje/NEWS
index 6b8c8f6182..01b76769b1 100644
--- a/legacy/edje/NEWS
+++ b/legacy/edje/NEWS
@@ -22,6 +22,9 @@ Improvements:
* Lua scripts now more resilient against API changes.
* edje_cc only store the image activelly used in an edje file.
+Fixes:
+ * Correctly count and propagate preload signal with GROUP.
+
Changes since Edje 1.0.0:
-------------------------
diff --git a/legacy/edje/src/lib/edje_util.c b/legacy/edje/src/lib/edje_util.c
index 31183e152f..da1a158309 100644
--- a/legacy/edje/src/lib/edje_util.c
+++ b/legacy/edje/src/lib/edje_util.c
@@ -3917,9 +3917,21 @@ edje_object_preload(Evas_Object *obj, Eina_Bool cancel)
else if (ep->type == EDJE_PART_TYPE_GROUP)
{
if (rp->swallowed_object) {
- edje_object_signal_callback_del(rp->swallowed_object, EDJE_PRELOAD_EMISSION, EDJE_PRELOAD_SOURCE, _edje_object_signal_preload_cb);
- edje_object_signal_callback_add(rp->swallowed_object, EDJE_PRELOAD_EMISSION, EDJE_PRELOAD_SOURCE, _edje_object_signal_preload_cb, ed);
- edje_object_preload(rp->swallowed_object, cancel);
+ char *tmp;
+
+ if (rp->part->name)
+ {
+ tmp = alloca(strlen(rp->part->name) + 2);
+ sprintf(tmp, "%s:", rp->part->name);
+
+ edje_object_signal_callback_del(obj, EDJE_PRELOAD_EMISSION, tmp, _edje_object_signal_preload_cb);
+ edje_object_signal_callback_add(obj, EDJE_PRELOAD_EMISSION, tmp, _edje_object_signal_preload_cb, ed);
+ edje_object_preload(rp->swallowed_object, cancel);
+ }
+ else
+ {
+ ed->preload_count--;
+ }
count--;
}