Implement jump to pointer feature

This commit is contained in:
Daniel Zaoui 2017-03-08 10:28:56 +02:00
parent e2869aa298
commit 07710c01fc
2 changed files with 48 additions and 4 deletions

View File

@ -566,11 +566,12 @@ _objs_expanded_cb(void *data EINA_UNUSED, const Efl_Event *event)
Obj_Info *info = elm_object_item_data_get(glit), *it_data;
EINA_LIST_FOREACH(info->children, itr, it_data)
{
Elm_Object_Item *nitem = elm_genlist_item_append(event->object, _objs_itc,
it_data->glitem = elm_genlist_item_append(event->object, _objs_itc,
it_data, glit,
it_data->children ? ELM_GENLIST_ITEM_TREE : ELM_GENLIST_ITEM_NONE,
_objs_sel_cb, NULL);
elm_genlist_item_expanded_set(nitem, EINA_FALSE);
elm_genlist_item_expanded_set(it_data->glitem, EINA_FALSE);
efl_wref_add(it_data->glitem, &(it_data->glitem));
}
}
@ -846,6 +847,7 @@ _eoids_get(Eina_Debug_Session *session EINA_UNUSED, int src EINA_UNUSED, void *b
_main_widgets->objects_list, _objs_itc, info, NULL,
info->children ? ELM_GENLIST_ITEM_TREE : ELM_GENLIST_ITEM_NONE,
_objs_sel_cb, NULL);
efl_wref_add(info->glitem, &(info->glitem));
if (info->children)
elm_genlist_item_expanded_set(info->glitem, EINA_FALSE);
}
@ -1005,6 +1007,45 @@ _menu_profile_selected(void *data,
_connection_type_change(REMOTE_CONNECTION);
}
static void
_item_realize(Obj_Info *info)
{
if (info->parent)
{
Obj_Info *pinfo = eina_hash_find(_objs_hash, &(info->parent));
if (pinfo && !pinfo->glitem) _item_realize(pinfo);
elm_genlist_item_expanded_set(pinfo->glitem, EINA_TRUE);
}
}
void
jump_entry_changed(void *data EINA_UNUSED, const Efl_Event *event)
{
Eo *en = event->object;
const char *ptr = elm_entry_entry_get(en);
uint64_t id = 0;
Eina_Bool err = EINA_FALSE;
printf("Ptr %s\n", ptr);
while (*ptr && !err)
{
char c = *ptr;
id <<= 4;
if (c >= '0' && c <= '9') id |= (*ptr - '0');
else if (c >= 'a' && c <= 'f') id |= (*ptr - 'a' + 0xA);
else if (c >= 'A' && c <= 'F') id |= (*ptr - 'A' + 0xA);
else err = EINA_TRUE;
ptr++;
}
if (!err)
{
Obj_Info *info = eina_hash_find(_objs_hash, &id);
if (!info) return;
if (!info->glitem) _item_realize(info);
elm_genlist_item_show(info->glitem, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE);
elm_genlist_item_selected_set(info->glitem, EINA_TRUE);
}
}
void
load_perform(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
{

View File

@ -36,6 +36,8 @@ extern void
conn_menu_show(void *data, const Efl_Event *event);
extern void
load_perform(void *data, const Efl_Event *event);
extern void
jump_entry_changed(void *data, const Efl_Event *event);
static void
_config_open(void *data, const Efl_Event *event);
@ -126,11 +128,12 @@ gui_main_win_create(Eo *__main_parent)
elm_entry_single_line_set(jump_to_entry, EINA_TRUE);
elm_object_part_text_set(jump_to_entry, "guide", "Jump To Pointer");
evas_object_size_hint_align_set(jump_to_entry,
EVAS_HINT_FILL, EVAS_HINT_FILL);
EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(jump_to_entry,
EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bar_box, jump_to_entry);
evas_object_show(jump_to_entry);
efl_event_callback_add(jump_to_entry, ELM_ENTRY_EVENT_ACTIVATED, jump_entry_changed, NULL);
extensions_bt = elm_button_add(bar_box);
evas_object_size_hint_weight_set(extensions_bt, 1.000000, 1.000000);