rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=10b54cc9672c341872154144f087a847be8f3d36

commit 10b54cc9672c341872154144f087a847be8f3d36
Author: Mykyta Biliavskyi <m.biliavs...@samsung.com>
Date:   Mon Jul 11 19:50:55 2016 +0300

    Group navigator: use internal structures for a part restack order.
    
    Instead use not perfect genlist items mechanism now uses internal lists
    of parts. By using parts list from _Group structure created more
    orthogonal architecture between restack UI and logic.
    
    @fix T4054
---
 src/bin/ui/workspace/group_navigator.c | 40 ++++++++++++++++------------------
 1 file changed, 19 insertions(+), 21 deletions(-)

diff --git a/src/bin/ui/workspace/group_navigator.c 
b/src/bin/ui/workspace/group_navigator.c
index 0918fd8..ddd9c3d 100644
--- a/src/bin/ui/workspace/group_navigator.c
+++ b/src/bin/ui/workspace/group_navigator.c
@@ -2146,45 +2146,41 @@ _on_btn_minus_clicked(void *data,
 static void
 _part_restack(Part_List *pl, Elm_Object_Item *glit, Eina_Bool move_up)
 {
-   Part *part, *rel_part;
-   Elm_Object_Item *rel_glit;
+   Part *part, *rel_part = NULL;
+   Eina_List *part_list_node = NULL;
+   Eina_List *rel_part_list_node = NULL;
+
    Eina_Stringshare *msg;
    Change *change;
 
    assert(pl != NULL);
    assert(glit != NULL);
 
+   part = elm_object_item_data_get(glit);
+   part_list_node = eina_list_data_find_list(pl->group->parts, part);
+
+   assert(part_list_node != NULL);
+
    if (move_up)
      {
-        rel_glit = elm_genlist_item_prev_get(glit);
-        /* Finding where to move item. genlist don't allows to ignore subitems 
*/
-        while ((rel_glit != NULL) && 
(elm_genlist_item_item_class_get(rel_glit) != pl->itc_part))
-          rel_glit = elm_genlist_item_parent_get(rel_glit);
-        assert(rel_glit != NULL); /* we shouldn't move up first item */
-        assert(elm_genlist_item_item_class_get(rel_glit) == pl->itc_part);
+       rel_part_list_node = eina_list_prev(part_list_node);
+       rel_part = eina_list_data_get(rel_part_list_node);
      }
    else
      {
-        rel_glit = elm_genlist_item_next_get(glit);
-        while ((rel_glit != NULL) && 
(elm_genlist_item_item_class_get(rel_glit) != pl->itc_part))
-          rel_glit = elm_genlist_item_next_get(rel_glit);
-        assert(rel_glit != NULL); /* we shouldn't move down last item */
-        rel_glit = elm_genlist_item_next_get(rel_glit);
-        while ((rel_glit != NULL) && 
(elm_genlist_item_item_class_get(rel_glit) != pl->itc_part))
-          rel_glit = elm_genlist_item_next_get(rel_glit);
-
-        /* NULL after second loop means that part will be moved to first 
position */
-        assert((rel_glit == NULL) || 
(elm_genlist_item_item_class_get(rel_glit) == pl->itc_part));
+        rel_part_list_node = eina_list_next(part_list_node);
+        rel_part = eina_list_data_get(rel_part_list_node);
+        Part *part_tmp = rel_part;
+        rel_part = part;
+        part = part_tmp;
      }
 
-   part = elm_object_item_data_get(glit);
-   rel_part = elm_object_item_data_get(rel_glit);
-
    if (rel_part)
       msg = eina_stringshare_printf(_("part \"%s\" placed below part \"%s\" in 
the stack"), part->name, rel_part->name);
    else
       msg = eina_stringshare_printf(_("part \"%s\" restacked to the top of the 
stack"), part->name);
    change = change_add(msg);
+
    CRIT_ON_FAIL(editor_part_restack(pl->group->edit_object, change, false, 
true,
                                     part->name,
                                     (rel_part) ? rel_part->name : NULL));
@@ -2350,6 +2346,7 @@ _on_btn_down_clicked(void *data,
      _part_restack(pl, glit, false);
    else if (itc == pl->itc_item)
      _part_item_restack(pl, glit, false);
+   elm_genlist_item_selected_set(glit, true);
 }
 
 static void
@@ -2372,6 +2369,7 @@ _on_btn_up_clicked(void *data,
      _part_restack(pl, glit, true);
    else if (itc == pl->itc_item)
      _part_item_restack(pl, glit, true);
+   elm_genlist_item_selected_set(glit, true);
 }
 
 static void

-- 


Reply via email to