edc_navigator: deselect an selected item when user focuses on editing.

This commit is contained in:
Hermet Park 2016-04-22 17:38:23 +09:00
parent 12cdcc0ee3
commit 0f6a9873ce
5 changed files with 57 additions and 7 deletions

View File

@ -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

View File

@ -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);

View File

@ -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
@ -535,6 +536,14 @@ enventor_focused_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
if (file_mgr_edc_modified_get()) file_mgr_warning_open();
}
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)
{
@ -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);

View File

@ -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);

View File

@ -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);