forked from enlightenment/terminology
tab_selector: fix focus issue
This commit is contained in:
parent
0f462611c3
commit
14d799d63e
|
@ -182,18 +182,18 @@ _autozoom(Evas_Object *obj)
|
||||||
sd->autozoom_timeout = ecore_timer_add(0.5, _autozoom_reset, obj);
|
sd->autozoom_timeout = ecore_timer_add(0.5, _autozoom_reset, obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
_key_down_cb(void *data,
|
sel_key_down(Evas_Object *obj,
|
||||||
Evas *_e EINA_UNUSED,
|
Evas_Event_Key_Down *event)
|
||||||
Evas_Object *obj,
|
|
||||||
void *event)
|
|
||||||
{
|
{
|
||||||
Evas_Event_Key_Down *ev = event;
|
Evas_Event_Key_Down *ev = event;
|
||||||
Sel *sd = evas_object_smart_data_get(data);
|
Sel *sd = evas_object_smart_data_get(obj);
|
||||||
Eina_List *l;
|
Eina_List *l;
|
||||||
Entry *en;
|
Entry *en;
|
||||||
|
|
||||||
if (!sd) return;
|
EINA_SAFETY_ON_NULL_RETURN(sd);
|
||||||
|
|
||||||
if ((!strcmp(ev->key, "Next")) ||
|
if ((!strcmp(ev->key, "Next")) ||
|
||||||
(!strcmp(ev->key, "Right")))
|
(!strcmp(ev->key, "Right")))
|
||||||
{
|
{
|
||||||
|
@ -207,11 +207,14 @@ _key_down_cb(void *data,
|
||||||
sel_entry_selected_set(obj, en->obj, EINA_FALSE);
|
sel_entry_selected_set(obj, en->obj, EINA_FALSE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else return;
|
else
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sd->exit_now = EINA_FALSE;
|
sd->exit_now = EINA_FALSE;
|
||||||
_autozoom(data);
|
_autozoom(obj);
|
||||||
}
|
}
|
||||||
else if ((!strcmp(ev->key, "Prior")) ||
|
else if ((!strcmp(ev->key, "Prior")) ||
|
||||||
(!strcmp(ev->key, "Left")))
|
(!strcmp(ev->key, "Left")))
|
||||||
|
@ -226,11 +229,14 @@ _key_down_cb(void *data,
|
||||||
sel_entry_selected_set(obj, en->obj, EINA_FALSE);
|
sel_entry_selected_set(obj, en->obj, EINA_FALSE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else return;
|
else
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sd->exit_now = EINA_FALSE;
|
sd->exit_now = EINA_FALSE;
|
||||||
_autozoom(data);
|
_autozoom(obj);
|
||||||
}
|
}
|
||||||
else if (!strcmp(ev->key, "Up"))
|
else if (!strcmp(ev->key, "Up"))
|
||||||
{
|
{
|
||||||
|
@ -255,12 +261,14 @@ _key_down_cb(void *data,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (found == EINA_FALSE)
|
if (found == EINA_FALSE)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sd->exit_now = EINA_FALSE;
|
sd->exit_now = EINA_FALSE;
|
||||||
_autozoom(data);
|
_autozoom(obj);
|
||||||
}
|
}
|
||||||
else if (!strcmp(ev->key, "Down"))
|
else if (!strcmp(ev->key, "Down"))
|
||||||
{
|
{
|
||||||
|
@ -285,12 +293,14 @@ _key_down_cb(void *data,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (found == EINA_FALSE)
|
if (found == EINA_FALSE)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sd->exit_now = EINA_FALSE;
|
sd->exit_now = EINA_FALSE;
|
||||||
_autozoom(data);
|
_autozoom(obj);
|
||||||
}
|
}
|
||||||
else if ((!strcmp(ev->key, "Return")) ||
|
else if ((!strcmp(ev->key, "Return")) ||
|
||||||
(!strcmp(ev->key, "KP_Enter")) ||
|
(!strcmp(ev->key, "KP_Enter")) ||
|
||||||
|
@ -303,8 +313,8 @@ _key_down_cb(void *data,
|
||||||
ecore_timer_del(sd->autozoom_timeout);
|
ecore_timer_del(sd->autozoom_timeout);
|
||||||
sd->autozoom_timeout = NULL;
|
sd->autozoom_timeout = NULL;
|
||||||
}
|
}
|
||||||
evas_object_smart_callback_call(data, "ending", NULL);
|
evas_object_smart_callback_call(obj, "ending", NULL);
|
||||||
sel_zoom(data, 1.0);
|
sel_zoom(obj, 1.0);
|
||||||
}
|
}
|
||||||
else if (!strcmp(ev->key, "Escape"))
|
else if (!strcmp(ev->key, "Escape"))
|
||||||
{
|
{
|
||||||
|
@ -322,8 +332,8 @@ _key_down_cb(void *data,
|
||||||
ecore_timer_del(sd->autozoom_timeout);
|
ecore_timer_del(sd->autozoom_timeout);
|
||||||
sd->autozoom_timeout = NULL;
|
sd->autozoom_timeout = NULL;
|
||||||
}
|
}
|
||||||
evas_object_smart_callback_call(data, "ending", NULL);
|
evas_object_smart_callback_call(obj, "ending", NULL);
|
||||||
sel_zoom(data, 1.0);
|
sel_zoom(obj, 1.0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -670,8 +680,6 @@ sel_add(Evas_Object *parent)
|
||||||
_mouse_up_cb, obj);
|
_mouse_up_cb, obj);
|
||||||
evas_object_event_callback_add(sd->o_event, EVAS_CALLBACK_MOUSE_MOVE,
|
evas_object_event_callback_add(sd->o_event, EVAS_CALLBACK_MOUSE_MOVE,
|
||||||
_mouse_move_cb, obj);
|
_mouse_move_cb, obj);
|
||||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_KEY_DOWN,
|
|
||||||
_key_down_cb, obj);
|
|
||||||
sd->zoom = 1.0;
|
sd->zoom = 1.0;
|
||||||
|
|
||||||
return obj;
|
return obj;
|
||||||
|
|
|
@ -13,5 +13,6 @@ void sel_entry_selected_set(Evas_Object *obj, Evas_Object *entry, Eina_Bool keep
|
||||||
void sel_zoom(Evas_Object *obj, double zoom);
|
void sel_zoom(Evas_Object *obj, double zoom);
|
||||||
void sel_orig_zoom_set(Evas_Object *obj, double zoom);
|
void sel_orig_zoom_set(Evas_Object *obj, double zoom);
|
||||||
void sel_exit(Evas_Object *obj);
|
void sel_exit(Evas_Object *obj);
|
||||||
|
void sel_key_down(Evas_Object *obj, Evas_Event_Key_Down *event);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1303,7 +1303,30 @@ _cb_win_key_down(void *data,
|
||||||
DBG("ctrl:%d alt:%d shift:%d win:%d meta:%d hyper:%d",
|
DBG("ctrl:%d alt:%d shift:%d win:%d meta:%d hyper:%d",
|
||||||
ctrl, alt, shift, win, meta, hyper);
|
ctrl, alt, shift, win, meta, hyper);
|
||||||
|
|
||||||
/* 1st/ Miniview */
|
/* 1st/ Tab selector */
|
||||||
|
{
|
||||||
|
Term_Container *tc = (Term_Container*) wn;
|
||||||
|
|
||||||
|
term = tc->focused_term_get(tc);
|
||||||
|
if (term)
|
||||||
|
{
|
||||||
|
Term_Container *tc = term->container;
|
||||||
|
Term_Container *tc_parent = tc->parent;
|
||||||
|
|
||||||
|
if (tc_parent->type == TERM_CONTAINER_TYPE_TABS)
|
||||||
|
{
|
||||||
|
Tabs *tabs = (Tabs*) tc_parent;
|
||||||
|
|
||||||
|
if (tabs->selector != NULL)
|
||||||
|
{
|
||||||
|
sel_key_down(tabs->selector, ev);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 2nd/ Miniview */
|
||||||
if (wn->group_input)
|
if (wn->group_input)
|
||||||
{
|
{
|
||||||
GROUPED_INPUT_TERM_FOREACH(wn, l, term)
|
GROUPED_INPUT_TERM_FOREACH(wn, l, term)
|
||||||
|
@ -1329,7 +1352,7 @@ _cb_win_key_down(void *data,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* 2nd/ PopMedia */
|
/* 3rd/ PopMedia */
|
||||||
done = EINA_FALSE;
|
done = EINA_FALSE;
|
||||||
if (wn->group_input)
|
if (wn->group_input)
|
||||||
{
|
{
|
||||||
|
@ -1361,7 +1384,7 @@ _cb_win_key_down(void *data,
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 3rd/ Handle key bindings */
|
/* 4th/ Handle key bindings */
|
||||||
done = EINA_FALSE;
|
done = EINA_FALSE;
|
||||||
if (wn->group_input)
|
if (wn->group_input)
|
||||||
{
|
{
|
||||||
|
@ -1391,7 +1414,7 @@ _cb_win_key_down(void *data,
|
||||||
}
|
}
|
||||||
done = EINA_FALSE;
|
done = EINA_FALSE;
|
||||||
|
|
||||||
/* 4th/ Composing */
|
/* 5th/ Composing */
|
||||||
/* composing */
|
/* composing */
|
||||||
if (wn->khdl.imf)
|
if (wn->khdl.imf)
|
||||||
{
|
{
|
||||||
|
@ -1472,7 +1495,7 @@ _cb_win_key_down(void *data,
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 5th/ send key to pty */
|
/* 6th/ send key to pty */
|
||||||
if (wn->group_input)
|
if (wn->group_input)
|
||||||
{
|
{
|
||||||
GROUPED_INPUT_TERM_FOREACH(wn, l, term)
|
GROUPED_INPUT_TERM_FOREACH(wn, l, term)
|
||||||
|
@ -1489,7 +1512,7 @@ _cb_win_key_down(void *data,
|
||||||
keyin_handle_key_to_pty(ty, ev, alt, shift, ctrl);
|
keyin_handle_key_to_pty(ty, ev, alt, shift, ctrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 6th: specifics: jump on keypress / flicker on key */
|
/* 7th: specifics: jump on keypress / flicker on key */
|
||||||
end:
|
end:
|
||||||
if (wn->group_input)
|
if (wn->group_input)
|
||||||
{
|
{
|
||||||
|
@ -2719,6 +2742,8 @@ _tabs_restore(Tabs *tabs)
|
||||||
Term *term;
|
Term *term;
|
||||||
Solo *solo;
|
Solo *solo;
|
||||||
Win *wn = tc->wn;
|
Win *wn = tc->wn;
|
||||||
|
Evas_Object *selector = tabs->selector;
|
||||||
|
Evas_Object *selector_bg = tabs->selector_bg;
|
||||||
|
|
||||||
if (!tabs->selector)
|
if (!tabs->selector)
|
||||||
return;
|
return;
|
||||||
|
@ -2741,19 +2766,17 @@ _tabs_restore(Tabs *tabs)
|
||||||
tab_item->tc->unfocus(tab_item->tc, tc);
|
tab_item->tc->unfocus(tab_item->tc, tc);
|
||||||
}
|
}
|
||||||
|
|
||||||
evas_object_smart_callback_del_full(tabs->selector, "selected",
|
evas_object_smart_callback_del_full(selector, "selected",
|
||||||
_tabs_selector_cb_selected, tabs);
|
_tabs_selector_cb_selected, tabs);
|
||||||
evas_object_smart_callback_del_full(tabs->selector, "exit",
|
evas_object_smart_callback_del_full(selector, "exit",
|
||||||
_tabs_selector_cb_exit, tabs);
|
_tabs_selector_cb_exit, tabs);
|
||||||
evas_object_smart_callback_del_full(tabs->selector, "ending",
|
evas_object_smart_callback_del_full(selector, "ending",
|
||||||
_tabs_selector_cb_ending, tabs);
|
_tabs_selector_cb_ending, tabs);
|
||||||
evas_object_del(tabs->selector);
|
|
||||||
evas_object_del(tabs->selector_bg);
|
|
||||||
tabs->selector = NULL;
|
tabs->selector = NULL;
|
||||||
tabs->selector_bg = NULL;
|
tabs->selector_bg = NULL;
|
||||||
|
|
||||||
wn->on_popover = EINA_FALSE;
|
|
||||||
|
|
||||||
/* XXX: reswallow in parent */
|
/* XXX: reswallow in parent */
|
||||||
tc->parent->swallow(tc->parent, tc, tc);
|
tc->parent->swallow(tc->parent, tc, tc);
|
||||||
solo = (Solo*)tabs->current->tc;
|
solo = (Solo*)tabs->current->tc;
|
||||||
|
@ -2763,6 +2786,11 @@ _tabs_restore(Tabs *tabs)
|
||||||
_tabs_refresh(tabs);
|
_tabs_refresh(tabs);
|
||||||
tabs->current->tc->unfocus(tabs->current->tc, tabs->current->tc);
|
tabs->current->tc->unfocus(tabs->current->tc, tabs->current->tc);
|
||||||
tabs->current->tc->focus(tabs->current->tc, tabs->current->tc);
|
tabs->current->tc->focus(tabs->current->tc, tabs->current->tc);
|
||||||
|
|
||||||
|
elm_object_focus_set(selector, EINA_FALSE);
|
||||||
|
|
||||||
|
evas_object_del(selector);
|
||||||
|
evas_object_del(selector_bg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -2822,8 +2850,6 @@ _cb_tab_selector_show(Tabs *tabs, Tab_Item *to_item)
|
||||||
if (tabs->selector_bg)
|
if (tabs->selector_bg)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
wn->on_popover = EINA_TRUE;
|
|
||||||
|
|
||||||
o = tc->get_evas_object(tc);
|
o = tc->get_evas_object(tc);
|
||||||
evas_object_geometry_get(o, &x, &y, &w, &h);
|
evas_object_geometry_get(o, &x, &y, &w, &h);
|
||||||
|
|
||||||
|
@ -2899,7 +2925,6 @@ _cb_tab_selector_show(Tabs *tabs, Tab_Item *to_item)
|
||||||
EINA_TRUE);
|
EINA_TRUE);
|
||||||
sel_exit(tabs->selector);
|
sel_exit(tabs->selector);
|
||||||
}
|
}
|
||||||
elm_object_focus_set(tabs->selector, EINA_TRUE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in New Issue