rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=1786ce90a20a0c3f9c8b04d7da31bd0a9943c198

commit 1786ce90a20a0c3f9c8b04d7da31bd0a9943c198
Author: Andrii Kroitor <an.kroi...@samsung.com>
Date:   Mon Dec 21 17:33:16 2015 +0200

    workspace: fix part del logic
---
 src/bin/common/signals.h         | 16 ----------------
 src/bin/ui/group_navigator.c     | 22 ++++------------------
 src/bin/ui/group_navigator.h     |  3 +++
 src/bin/ui/tabs.c                | 29 +++++++++++++++--------------
 src/bin/ui/workspace/workspace.c | 22 +++++++++++++---------
 src/bin/ui/workspace/workspace.h | 11 +++++------
 6 files changed, 40 insertions(+), 63 deletions(-)

diff --git a/src/bin/common/signals.h b/src/bin/common/signals.h
index 8da3ff0..3a2ea90 100644
--- a/src/bin/common/signals.h
+++ b/src/bin/common/signals.h
@@ -69,14 +69,6 @@
 #define SIGNAL_PART_UNSELECTED "SIGNAL_PART_UNSELECTED"
 
 /**
- * emited when new part is added.
- * eventinfo - pointer to Part_ structure
- *
- * @ingroup Window
- */
-#define SIGNAL_PART_ADDED "SIGNAL_PART_ADDED"
-
-/**
  * emited when new part_item is added.
  * eventinfo - pointer to Part_ structure
  *
@@ -84,14 +76,6 @@
  */
 #define SIGNAL_PART_ITEM_ADDED "SIGNAL_PART_ITEM_ADDED"
 
-/**
- * emited when part is deleted.
- * eventinfo - pointer to Part_ structure
- *
- * @ingroup Window
- */
-#define SIGNAL_PART_DELETED "SIGNAL_PART_DELETED"
-
 typedef struct {
    const char *old_name;
    const char *new_name;
diff --git a/src/bin/ui/group_navigator.c b/src/bin/ui/group_navigator.c
index 2ecae16..9ab0de0 100644
--- a/src/bin/ui/group_navigator.c
+++ b/src/bin/ui/group_navigator.c
@@ -1027,33 +1027,20 @@ _part_item_find(Part_List *pl, Part_ *part)
    return part_item;
 }
 
-static void
-_editor_part_deleted_cb(void *data,
-                        Evas_Object *obj __UNUSED__,
-                        void *event_info)
+void
+group_navigator_part_del(Evas_Object *obj, Part_ *part)
 {
-   Part_List *pl = data;
-   Eina_Stringshare *part_name = event_info;
-   Part_ *part;
+   Part_List *pl = evas_object_data_get(obj, GROUP_NAVIGATOR_DATA);
    Elm_Object_Item *part_item;
 
    assert(pl != NULL);
-   assert(part_name != NULL);
-
-   part = pm_resource_unsorted_get(pl->group->parts, part_name);
+   assert(part != NULL);
 
    part_item = _part_item_find(pl, part);
    if (pl->selected_part_item == part_item)
      _unselect_part(pl);
 
-   /* This callbck should be called before actual part deletion */
-   evas_object_smart_callback_call(ap.win, SIGNAL_PART_DELETED, (void *)part);
-
    elm_object_item_del(part_item);
-   /* part is freed after deletion so we need to save its name */
-   part_name = eina_stringshare_ref(part->name);
-   gm_part_del(ap.project, part);
-   eina_stringshare_del(part_name);
 }
 
 static void
@@ -1597,7 +1584,6 @@ group_navigator_add(Group *group)
    pl->name_validator = elm_validator_regexp_new(PART_NAME_REGEX, NULL);
 
    TODO("Fix multi-tab logic");
-   evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_DELETED, 
_editor_part_deleted_cb, pl);
    evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_ITEM_ADDED, 
_editor_part_item_added_cb, pl);
    evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_ITEM_DELETED, 
_editor_part_item_deleted_cb, pl);
    evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_RESTACKED, 
_editor_part_restacked_cb, pl);
diff --git a/src/bin/ui/group_navigator.h b/src/bin/ui/group_navigator.h
index fb0f11f..b542e80 100644
--- a/src/bin/ui/group_navigator.h
+++ b/src/bin/ui/group_navigator.h
@@ -91,4 +91,7 @@ group_navigator_part_update(Evas_Object *obj, Part_ *part);
 
 void
 group_navigator_part_add(Evas_Object *obj, Part_ *part);
+
+void
+group_navigator_part_del(Evas_Object *obj, Part_ *part);
 #endif /* GROUP_NAVIGATOR_H */
diff --git a/src/bin/ui/tabs.c b/src/bin/ui/tabs.c
index 3d8d789..29a7b7f 100644
--- a/src/bin/ui/tabs.c
+++ b/src/bin/ui/tabs.c
@@ -212,18 +212,6 @@ _part_item_added(void *data __UNUSED__,
 }
 
 static void
-_part_deleted(void *data __UNUSED__,
-              Evas_Object *obj __UNUSED__,
-              void *ei)
-{
-   Part_ *part = ei;
-
-   assert(tabs.current_workspace != NULL);
-
-   workspace_edit_object_part_del(tabs.current_workspace, part);
-}
-
-static void
 _part_renamed(void *data __UNUSED__,
               Evas_Object *obj __UNUSED__,
               void *ei)
@@ -334,6 +322,20 @@ _editor_part_added_cb(void *data __UNUSED__,
    workspace_part_add(tabs.current_workspace, part_name);
 }
 
+static void
+_editor_part_deleted_cb(void *data __UNUSED__,
+                        Evas_Object *obj __UNUSED__,
+                        void *event_info)
+{
+   Eina_Stringshare *part_name = event_info;
+
+   assert(part_name != NULL);
+   assert(tabs.current_group != NULL);
+   assert(tabs.current_workspace != NULL);
+
+   workspace_part_del(tabs.current_workspace, part_name);
+}
+
 Evas_Object *
 tabs_add(void)
 {
@@ -416,7 +418,6 @@ tabs_add(void)
    elm_object_item_disabled_set(tabs.menu.item_colorclass, true);
 
    evas_object_smart_callback_add(ap.win, SIGNAL_PROPERTY_ATTRIBUTE_CHANGED, 
_property_attribute_changed, NULL);
-   evas_object_smart_callback_add(ap.win, SIGNAL_PART_DELETED, _part_deleted, 
NULL);
    evas_object_smart_callback_add(ap.win, SIGNAL_PART_RENAMED, _part_renamed, 
NULL);
    evas_object_smart_callback_add(ap.win, SIGNAL_PART_UNSELECTED, 
_part_unselected, NULL);
    evas_object_smart_callback_add(ap.win, SIGNAL_PART_ITEM_ADDED, 
_part_item_added, NULL);
@@ -426,7 +427,7 @@ tabs_add(void)
    evas_object_smart_callback_add(ap.win, SIGNAL_PROJECT_CLOSED, 
_project_closed, NULL);
 
    evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_ADDED, 
_editor_part_added_cb, NULL);
-   //evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_DELETED, 
_editor_part_deleted_cb, NULL);
+   evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_DELETED, 
_editor_part_deleted_cb, NULL);
    //evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_ITEM_ADDED, 
_editor_part_item_added_cb, NULL);
    //evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_ITEM_DELETED, 
_editor_part_item_deleted_cb, NULL);
    //evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PART_RESTACKED, 
_editor_part_restacked_cb, NULL);
diff --git a/src/bin/ui/workspace/workspace.c b/src/bin/ui/workspace/workspace.c
index 292fa36..68ca357 100644
--- a/src/bin/ui/workspace/workspace.c
+++ b/src/bin/ui/workspace/workspace.c
@@ -1730,15 +1730,6 @@ workspace_edit_object_soft_update(Evas_Object *obj)
 }
 
 Eina_Bool
-workspace_edit_object_part_del(Evas_Object *obj, Part_ *part)
-{
-   WS_DATA_GET(obj, sd);
-   assert(part != NULL);
-
-   return groupedit_edit_object_part_del(sd->groupedit, part);
-}
-
-Eina_Bool
 workspace_edit_object_part_state_set(Evas_Object *obj, Part_ *part)
 {
    WS_DATA_GET(obj, sd);
@@ -1903,3 +1894,16 @@ workspace_part_add(Evas_Object *obj, Eina_Stringshare 
*part_name)
    groupedit_edit_object_part_add(sd->groupedit, part);
    group_navigator_part_add(sd->group_navigator, part);
 }
+
+void
+workspace_part_del(Evas_Object *obj, Eina_Stringshare *part_name)
+{
+   Part_ *part;
+   WS_DATA_GET(obj, sd);
+   assert(part_name != NULL);
+
+   part = pm_resource_unsorted_get(sd->group->parts, part_name);
+   group_navigator_part_del(sd->group_navigator, part);
+   groupedit_edit_object_part_del(sd->groupedit, part);
+   gm_part_del(ap.project, part);
+}
diff --git a/src/bin/ui/workspace/workspace.h b/src/bin/ui/workspace/workspace.h
index 21b63b9..d849dc1 100644
--- a/src/bin/ui/workspace/workspace.h
+++ b/src/bin/ui/workspace/workspace.h
@@ -118,17 +118,16 @@ void
 workspace_part_add(Evas_Object *obj, Eina_Stringshare *part_name);
 
 /**
- * Delete part from style, which currently loaded into workspace.
+ * Del part from group_edit and group_navigator.
+ * Part should be already deleted edit_object.
  *
  * @param obj The workspace object.
- * @param part Pointer to deleting part.
- *
- * @return EINA_FALSE on failure, EINA_TRUE on success.
+ * @param part_name name of deleted part
  *
  * @ingroup Workspace
  */
-Eina_Bool
-workspace_edit_object_part_del(Evas_Object *obj, Part_ *part);
+void
+workspace_part_del(Evas_Object *obj, Eina_Stringshare *part_name);
 
 /**
  *

-- 


Reply via email to