rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=395aef6ce426b25fc0d9d724da45ae3351026403

commit 395aef6ce426b25fc0d9d724da45ae3351026403
Author: Vitalii Vorobiov <vi.vorob...@samsung.com>
Date:   Mon Apr 4 18:30:09 2016 +0300

    demo: call SWALLOW_SET/TEXT_SET callbacks only for current workspace
    
    This require some little architecture changing, since before this comming
    it was this way: trying to set up content for secondly opened group in demo 
mode
    setting it into firstly opened group
    
    @fix
---
 src/bin/ui/live_view/elementary/live_check.c       |  6 +--
 src/bin/ui/live_view/elementary/live_radio.c       | 43 +++++++---------------
 .../ui/live_view/elementary/live_widget_common.c   | 33 ++++++++---------
 src/bin/ui/tabs.c                                  | 34 +++++++++++++++++
 src/bin/ui/workspace/workspace.c                   | 28 +++++++++++++-
 src/bin/ui/workspace/workspace.h                   | 10 +++++
 6 files changed, 103 insertions(+), 51 deletions(-)

diff --git a/src/bin/ui/live_view/elementary/live_check.c 
b/src/bin/ui/live_view/elementary/live_check.c
index f5a84ef..4f505a9 100644
--- a/src/bin/ui/live_view/elementary/live_check.c
+++ b/src/bin/ui/live_view/elementary/live_check.c
@@ -28,9 +28,9 @@ widget_check_create(Evas_Object *parent, const Group *group)
 
    Evas_Object *object = elm_check_add(parent);
 
-   evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_SWALLOW_SET, 
on_swallow_check, object);
-   evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_TEXT_SET, on_text_check, 
object);
-   evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_SIGNAL_SEND, 
send_signal, object);
+   evas_object_smart_callback_add(object, SIGNAL_DEMO_SWALLOW_SET, 
on_swallow_check, NULL);
+   evas_object_smart_callback_add(object, SIGNAL_DEMO_TEXT_SET, on_text_check, 
NULL);
+   evas_object_smart_callback_add(object, SIGNAL_DEMO_SIGNAL_SEND, 
send_signal, NULL);
    evas_object_event_callback_add(object, EVAS_CALLBACK_DEL, demo_object_del, 
NULL);
 
    elm_object_style_set(object, group->style);
diff --git a/src/bin/ui/live_view/elementary/live_radio.c 
b/src/bin/ui/live_view/elementary/live_radio.c
index 271e61d..bf6b43b 100644
--- a/src/bin/ui/live_view/elementary/live_radio.c
+++ b/src/bin/ui/live_view/elementary/live_radio.c
@@ -21,12 +21,11 @@
 
 static void
 _on_radio_swallow_check(void *data __UNUSED__,
-                        Evas_Object *obj __UNUSED__,
-                        void *ei __UNUSED__)
+                        Evas_Object *obj,
+                        void *ei)
 {
    Demo_Part *part = (Demo_Part *)ei;
-   Evas_Object *object = (Evas_Object *) data;
-   Eina_List* radio_list = elm_box_children_get(object);
+   Eina_List* radio_list = elm_box_children_get(obj);
    Evas_Object *content, *radio_obj;
 
    int content_type = part->swallow_content;
@@ -43,7 +42,7 @@ _on_radio_swallow_check(void *data __UNUSED__,
              /* if NONE - delete object */
              if (content_type != CONTENT_NONE)
                {
-                  content = object_generate(part, object);
+                  content = object_generate(part, obj);
                   part->objects = eina_list_append(part->objects, content);
                   elm_object_part_content_set(radio_obj, part->name, content);
                }
@@ -69,12 +68,11 @@ _on_radio_swallow_check(void *data __UNUSED__,
 
 static void
 _on_radio_text_check(void *data __UNUSED__,
-                        Evas_Object *obj __UNUSED__,
-                        void *ei __UNUSED__)
+                     Evas_Object *obj,
+                     void *ei)
 {
    Demo_Part *part = (Demo_Part *)ei;
-   Evas_Object *object = (Evas_Object *) data;
-   Eina_List* radio_list = elm_box_children_get(object);
+   Eina_List* radio_list = elm_box_children_get(obj);
    Evas_Object *radio_obj;
 
    EINA_LIST_FREE(radio_list, radio_obj)
@@ -82,13 +80,12 @@ _on_radio_text_check(void *data __UNUSED__,
 }
 
 static void
-_radio_send_signal(void *data,
-                   Evas_Object *obj __UNUSED__,
-                   void *ei __UNUSED__)
+_radio_send_signal(void *data __UNUSED__,
+                   Evas_Object *obj,
+                   void *ei)
 {
    Demo_Signal *sig = (Demo_Signal *)ei;
-   Evas_Object *object = (Evas_Object *)data;
-   Eina_List* radio_list = elm_box_children_get(object);
+   Eina_List* radio_list = elm_box_children_get(obj);
    Evas_Object *radio_obj = NULL;
 
    assert(sig != NULL);
@@ -99,17 +96,6 @@ _radio_send_signal(void *data,
      elm_layout_signal_emit(radio_obj, sig->sig_name, sig->source_name);
 }
 
-void
-_demo_radio_del(void *data __UNUSED__,
-                Evas *evas __UNUSED__,
-                Evas_Object *object,
-                void *event_info __UNUSED__)
-{
-   evas_object_smart_callback_del_full(ap.win, SIGNAL_DEMO_SWALLOW_SET, 
_on_radio_swallow_check, object);
-   evas_object_smart_callback_del_full(ap.win, SIGNAL_DEMO_TEXT_SET, 
_on_radio_text_check, object);
-   evas_object_smart_callback_del_full(ap.win, SIGNAL_DEMO_SIGNAL_SEND, 
_radio_send_signal, object);
-}
-
 Evas_Object *
 widget_radio_create(Evas_Object *parent, const Group *group)
 {
@@ -137,10 +123,9 @@ widget_radio_create(Evas_Object *parent, const Group 
*group)
 
    elm_radio_value_set(rdg, 2);
 
-   evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_SWALLOW_SET, 
_on_radio_swallow_check, object);
-   evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_TEXT_SET, 
_on_radio_text_check, object);
-   evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_SIGNAL_SEND, 
_radio_send_signal, object);
-   evas_object_event_callback_add(object, EVAS_CALLBACK_DEL, _demo_radio_del, 
NULL);
+   evas_object_smart_callback_add(object, SIGNAL_DEMO_SWALLOW_SET, 
_on_radio_swallow_check, NULL);
+   evas_object_smart_callback_add(object, SIGNAL_DEMO_TEXT_SET, 
_on_radio_text_check, NULL);
+   evas_object_smart_callback_add(object, SIGNAL_DEMO_SIGNAL_SEND, 
_radio_send_signal, NULL);
 
    return object;
 }
diff --git a/src/bin/ui/live_view/elementary/live_widget_common.c 
b/src/bin/ui/live_view/elementary/live_widget_common.c
index 369e0be..5b16744 100644
--- a/src/bin/ui/live_view/elementary/live_widget_common.c
+++ b/src/bin/ui/live_view/elementary/live_widget_common.c
@@ -387,33 +387,32 @@ demo_object_del(void *data __UNUSED__,
                 Evas_Object *object,
                 void *event_info __UNUSED__)
 {
-   evas_object_smart_callback_del_full(ap.win, SIGNAL_DEMO_SWALLOW_SET, 
on_swallow_check, object);
-   evas_object_smart_callback_del_full(ap.win, SIGNAL_DEMO_TEXT_SET, 
on_text_check, object);
-   evas_object_smart_callback_del_full(ap.win, SIGNAL_DEMO_SIGNAL_SEND, 
send_signal, object);
+   evas_object_smart_callback_del_full(object, SIGNAL_DEMO_SWALLOW_SET, 
on_swallow_check, NULL);
+   evas_object_smart_callback_del_full(object, SIGNAL_DEMO_TEXT_SET, 
on_text_check, NULL);
+   evas_object_smart_callback_del_full(object, SIGNAL_DEMO_SIGNAL_SEND, 
send_signal, NULL);
 }
 
 void
-on_swallow_check(void *data,
-                 Evas_Object *obj __UNUSED__,
-                 void *ei __UNUSED__)
+on_swallow_check(void *data __UNUSED__,
+                 Evas_Object *obj,
+                 void *ei)
 {
    Demo_Part *part = (Demo_Part *)ei;
-   Evas_Object *object = (Evas_Object *) data;
    Evas_Object *content;
 
    if (part->change)
      {
         if (part->object)
           {
-             content = elm_object_part_content_unset(object, part->name);
+             content = elm_object_part_content_unset(obj, part->name);
              evas_object_del(content);
              content = NULL;
              part->object = NULL;
           }
 
-        part->object = object_generate(part, object);
+        part->object = object_generate(part, obj);
         part->change = false;
-        elm_object_part_content_set(object, part->name, part->object);
+        elm_object_part_content_set(obj, part->name, part->object);
      }
 
    if (part->object)
@@ -435,27 +434,25 @@ on_swallow_check(void *data,
 }
 
 void
-on_text_check(void *data,
-              Evas_Object *obj __UNUSED__,
+on_text_check(void *data __UNUSED__,
+              Evas_Object *obj,
               void *ei)
 {
    Demo_Part *part = (Demo_Part *)ei;
-   Evas_Object *object = (Evas_Object *) data;
 
-   elm_object_part_text_set(object, part->name, part->text_content);
+   elm_object_part_text_set(obj, part->name, part->text_content);
 }
 
 void
-send_signal(void *data,
-             Evas_Object *obj __UNUSED__,
+send_signal(void *data __UNUSED__,
+             Evas_Object *obj,
              void *ei)
 {
    Demo_Signal *sig = (Demo_Signal *)ei;
-   Evas_Object *object = (Evas_Object *)data;
 
    assert(sig != NULL);
    assert(sig->sig_name != NULL);
    assert(sig->source_name != NULL);
 
-   elm_layout_signal_emit(object, sig->sig_name, sig->source_name);
+   elm_layout_signal_emit(obj, sig->sig_name, sig->source_name);
 }
diff --git a/src/bin/ui/tabs.c b/src/bin/ui/tabs.c
index 2f6fcfd..937f0ea 100644
--- a/src/bin/ui/tabs.c
+++ b/src/bin/ui/tabs.c
@@ -324,6 +324,36 @@ _property_attribute_changed(void *data __UNUSED__,
 }
 
 static void
+_demo_swallow_set(void *data __UNUSED__,
+                  Evas_Object *obj __UNUSED__,
+                  void *ei)
+{
+   assert(tabs.current_workspace != NULL);
+
+   workspace_demo_swallow_set(tabs.current_workspace, (Demo_Part *)ei);
+}
+
+static void
+_demo_text_set(void *data __UNUSED__,
+                  Evas_Object *obj __UNUSED__,
+                  void *ei)
+{
+   assert(tabs.current_workspace != NULL);
+
+   workspace_demo_text_set(tabs.current_workspace, (Demo_Part *)ei);
+}
+
+static void
+_demo_send_signal(void *data __UNUSED__,
+                  Evas_Object *obj __UNUSED__,
+                  void *ei)
+{
+   assert(tabs.current_workspace != NULL);
+
+   workspace_demo_signal_set(tabs.current_workspace, (Demo_Signal *)ei);
+}
+
+static void
 _part_renamed(void *data __UNUSED__,
               Evas_Object *obj __UNUSED__,
               void *ei)
@@ -924,6 +954,10 @@ tabs_add(void)
    elm_object_item_disabled_set(tabs.menu.item_text, true);
    elm_object_item_disabled_set(tabs.menu.item_colorclass, true);
 
+   evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_SWALLOW_SET, 
_demo_swallow_set, NULL);
+   evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_TEXT_SET, 
_demo_text_set, NULL);
+   evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_SIGNAL_SEND, 
_demo_send_signal, NULL);
+
    evas_object_smart_callback_add(ap.win, SIGNAL_PART_RENAMED, _part_renamed, 
NULL);
    evas_object_smart_callback_add(ap.win, SIGNAL_PROJECT_CHANGED, 
_project_changed, NULL);
    evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_SAVED, _editor_saved, 
NULL);
diff --git a/src/bin/ui/workspace/workspace.c b/src/bin/ui/workspace/workspace.c
index 85d4cca..b4256fe 100644
--- a/src/bin/ui/workspace/workspace.c
+++ b/src/bin/ui/workspace/workspace.c
@@ -25,7 +25,6 @@
 #include "group_navigator.h"
 #include "history.h"
 #include "demo.h"
-#include "demo_group.h"
 #include "project_manager.h"
 #include "change.h"
 #include "syntax_color.h"
@@ -1391,3 +1390,30 @@ workspace_part_unselect_request(Evas_Object *obj)
 
    group_navigator_part_select(wd->group_navi, NULL);
 }
+
+void
+workspace_demo_swallow_set(Evas_Object *obj, Demo_Part *part)
+{
+   WS_DATA_GET(obj);
+
+   if ((wd->demo.content) && (wd->mode == MODE_DEMO))
+     evas_object_smart_callback_call(wd->demo.content, 
SIGNAL_DEMO_SWALLOW_SET, part);
+}
+
+void
+workspace_demo_text_set(Evas_Object *obj, Demo_Part *part)
+{
+   WS_DATA_GET(obj);
+
+   if ((wd->demo.content) && (wd->mode == MODE_DEMO))
+     evas_object_smart_callback_call(wd->demo.content, SIGNAL_DEMO_TEXT_SET, 
part);
+}
+
+void
+workspace_demo_signal_set(Evas_Object *obj, Demo_Signal *sig)
+{
+   WS_DATA_GET(obj);
+
+   if ((wd->demo.content) && (wd->mode == MODE_DEMO))
+     evas_object_smart_callback_call(wd->demo.content, 
SIGNAL_DEMO_SIGNAL_SEND, sig);
+}
diff --git a/src/bin/ui/workspace/workspace.h b/src/bin/ui/workspace/workspace.h
index ce685ec..d165c2f 100644
--- a/src/bin/ui/workspace/workspace.h
+++ b/src/bin/ui/workspace/workspace.h
@@ -33,6 +33,7 @@
  */
 
 #include "eflete.h"
+#include "demo_group.h"
 
 typedef enum
 {
@@ -383,4 +384,13 @@ workspace_all_parts_showhide_request(Evas_Object *obj);
 void
 workspace_part_unselect_request(Evas_Object *obj);
 
+void
+workspace_demo_swallow_set(Evas_Object *obj, Demo_Part *part);
+
+void
+workspace_demo_text_set(Evas_Object *obj, Demo_Part *part);
+
+void
+workspace_demo_signal_set(Evas_Object *obj, Demo_Signal *sig);
+
 #endif /* WORKSPACE_H */

-- 


Reply via email to