hermet pushed a commit to branch master.

http://git.enlightenment.org/tools/enventor.git/commit/?id=0f6a9873cee207a26b10930a5d5917aecdaeda32

commit 0f6a9873cee207a26b10930a5d5917aecdaeda32
Author: Hermet Park <her...@hermet.pe.kr>
Date:   Fri Apr 22 17:38:23 2016 +0900

    edc_navigator: deselect an selected item when user focuses on editing.
---
 src/bin/base_gui.c          | 11 ++++++++++-
 src/bin/edc_navigator.c     | 40 ++++++++++++++++++++++++++++++++++------
 src/bin/main.c              | 11 +++++++++++
 src/include/base_gui.h      |  1 +
 src/include/edc_navigator.h |  1 +
 5 files changed, 57 insertions(+), 7 deletions(-)

diff --git a/src/bin/base_gui.c b/src/bin/base_gui.c
index 6ba4100..43a8b2a 100644
--- a/src/bin/base_gui.c
+++ b/src/bin/base_gui.c
@@ -94,6 +94,12 @@ void base_file_browser_toggle(Eina_Bool toggle)
      elm_object_signal_emit(bd->layout, "elm,state,file_browser,hide", "");
 }
 
+void base_edc_navigator_deselect(void)
+{
+   if (config_edc_navigator_get())
+     edc_navigator_deselect();
+}
+
 void base_edc_navigator_toggle(Eina_Bool toggle)
 {
    base_data *bd = g_bd;
@@ -107,7 +113,10 @@ void base_edc_navigator_toggle(Eina_Bool toggle)
         elm_object_signal_emit(bd->layout, "elm,state,edc_navigator,show", "");
      }
    else
-     elm_object_signal_emit(bd->layout, "elm,state,edc_navigator,hide", "");
+     {
+        elm_object_signal_emit(bd->layout, "elm,state,edc_navigator,hide", "");
+        edc_navigator_deselect();
+     }
 }
 
 void
diff --git a/src/bin/edc_navigator.c b/src/bin/edc_navigator.c
index c83f865..ef23e23 100644
--- a/src/bin/edc_navigator.c
+++ b/src/bin/edc_navigator.c
@@ -27,6 +27,8 @@ typedef struct edc_navigator_s
    Elm_Genlist_Item_Class *programs_itc;
    Elm_Genlist_Item_Class *program_itc;
 
+   Eina_Bool selected : 1;
+
 } navi_data;
 
 typedef enum
@@ -112,6 +114,26 @@ static void programs_contract(programs_it *pit);
 /*****************************************************************************/
 /* Internal method implementation                                            */
 /*****************************************************************************/
+static void
+gl_selected_cb(void *data, Evas_Object *obj, void *event_info)
+{
+   navi_data *nd = data;
+   nd->selected = EINA_TRUE;
+}
+
+static void
+gl_unselected_cb(void *data, Evas_Object *obj, void *event_info)
+{
+   navi_data *nd = data;
+   nd->selected = EINA_FALSE;
+}
+
+static void
+navigator_item_deselect(navi_data *nd)
+{
+   Elm_Object_Item *it = elm_genlist_selected_item_get(nd->genlist);
+   if (it) elm_genlist_item_selected_set(it, EINA_FALSE);
+}
 
 static int
 gl_comp_func(const void *pa, const void *pb)
@@ -626,7 +648,6 @@ gl_state_selected_cb(void *data, Evas_Object *obj 
EINA_UNUSED,
    state_it *sit = data;
    find_state_proc(sit->pit->git->name, sit->pit->name, 
part_type_get(sit->pit),
                    sit->name);
-
 }
 
 static void
@@ -1227,6 +1248,13 @@ gl_contract_request_cb(void *data, Evas_Object *obj, 
void *event_info)
 /*****************************************************************************/
 /* Externally accessible calls                                               */
 /*****************************************************************************/
+void
+edc_navigator_deselect(void)
+{
+   navi_data *nd = g_nd;
+   if (!nd || !nd->selected) return;
+   navigator_item_deselect(nd);
+}
 
 void
 edc_navigator_group_update(const char *cur_group)
@@ -1235,11 +1263,7 @@ edc_navigator_group_update(const char *cur_group)
    if (!nd) return;
 
    //Cancel item selection if group was not indicated. 
-   if (!cur_group)
-     {
-        Elm_Object_Item *it = elm_genlist_selected_item_get(nd->genlist);
-        if (it) elm_genlist_item_selected_set(it, EINA_FALSE);
-     }
+   if (!cur_group) navigator_item_deselect(nd);
 
    Eina_List *group_list = edje_file_collection_list(config_output_path_get());
    unsigned int cur_group_len = 0;
@@ -1347,6 +1371,10 @@ edc_navigator_init(Evas_Object *parent)
                                   gl_expand_request_cb, nd);
    evas_object_smart_callback_add(genlist, "contract,request",
                                   gl_contract_request_cb, nd);
+   evas_object_smart_callback_add(genlist, "selected",
+                                  gl_selected_cb, nd);
+   evas_object_smart_callback_add(genlist, "selected",
+                                  gl_unselected_cb, nd);
    evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND,
                                     EVAS_HINT_EXPAND);
    evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
diff --git a/src/bin/main.c b/src/bin/main.c
index 124ed08..30582dc 100644
--- a/src/bin/main.c
+++ b/src/bin/main.c
@@ -459,6 +459,7 @@ enventor_live_view_cursor_moved_cb(void *data EINA_UNUSED,
    if (!config_stats_bar_get()) return;
    Enventor_Live_View_Cursor *cursor = event_info;
    stats_cursor_pos_update(cursor->x, cursor->y, cursor->relx, cursor->rely);
+   base_edc_navigator_deselect();
 }
 
 static void
@@ -536,6 +537,14 @@ enventor_focused_cb(void *data EINA_UNUSED, Evas_Object 
*obj EINA_UNUSED,
 }
 
 static void
+enventor_mouse_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED,
+                       Evas_Object *obj EINA_UNUSED,
+                       void *event_info EINA_UNUSED)
+{
+   base_edc_navigator_deselect();
+}
+
+static void
 enventor_setup(app_data *ad)
 {
    Evas_Object *enventor = enventor_object_add(base_layout_get());
@@ -565,6 +574,8 @@ enventor_setup(app_data *ad)
                                   enventor_ctxpopup_dismissed_cb, ad);
    evas_object_smart_callback_add(enventor, "focused",
                                   enventor_focused_cb, ad);
+   evas_object_event_callback_add(enventor, EVAS_CALLBACK_MOUSE_DOWN,
+                                  enventor_mouse_down_cb, ad);
 
    evas_object_size_hint_expand_set(enventor, EVAS_HINT_EXPAND,
                                     EVAS_HINT_EXPAND);
diff --git a/src/include/base_gui.h b/src/include/base_gui.h
index d64050a..d644791 100644
--- a/src/include/base_gui.h
+++ b/src/include/base_gui.h
@@ -28,3 +28,4 @@ void base_console_full_view(void);
 void base_file_browser_toggle(Eina_Bool toggle);
 void base_edc_navigator_toggle(Eina_Bool toggle);
 void base_edc_navigator_group_update(void);
+void base_edc_navigator_deselect(void);
diff --git a/src/include/edc_navigator.h b/src/include/edc_navigator.h
index 2f2f33f..0051593 100644
--- a/src/include/edc_navigator.h
+++ b/src/include/edc_navigator.h
@@ -1,3 +1,4 @@
 Evas_Object *edc_navigator_init(Evas_Object *parent);
 void edc_navigator_term(void);
 void edc_navigator_group_update(const char *cur_group);
+void edc_navigator_deselect(void);

-- 


Reply via email to