Revert "work on bell status"

This reverts commit fb6b7e9f75.
This commit is contained in:
Carsten Haitzler 2014-12-03 08:42:36 +09:00
parent f408f58316
commit 480ab8d8d4
3 changed files with 94 additions and 332 deletions

View File

@ -2302,45 +2302,6 @@ target: "0.clip"; target: "1.clip"; target: "2.clip"; target: "3.clip"; target:
}
}
group { name: "terminology/tab";
parts {
part { name: "terminology.tabmissed.label"; type: TEXT; mouse_events: 0;
effect: GLOW;
scale: 1;
description { state: "default" 0.0;
fixed: 1 1;
color: 255 255 64 255;
color2: 255 153 51 128;
color3: 255 0 0 20;
align: 0 0.5;
text { font: "Sans"; size: 10;
align: 0 0.5;
min: 1 1;
ellipsis: 0;
}
}
}
part { name: "terminology.tabtitle.label"; type: TEXT; mouse_events: 0;
effect: GLOW;
scale: 1;
description { state: "default" 0.0;
fixed: 1 1;
rel1.to: "terminology.tabmissed.label";
rel1.relative: 0.0 0.0;
rel2.relative: 1.0 1.0;
color: 255 255 255 255;
color2: 51 153 255 128;
color3: 51 153 255 20;
align: 0.5 0.5;
text { font: "Sans"; size: 10;
align: 0.5 0.5;
min: 1 1;
ellipsis: 1;
}
}
}
}
}
group { name: "terminology/tabs";
parts {
part { name: "terminology.bg";

View File

@ -34,8 +34,6 @@ struct _Term_Container {
Term_Container *parent;
Win *wn;
Evas_Object *selector_img;
Eina_Bool missed_bell;
Eina_Bool is_focused;
const char *title;
Term *(*term_next)(Term_Container *tc, Term_Container *child);
@ -49,9 +47,7 @@ struct _Term_Container {
void (*swallow)(Term_Container *container, Term_Container *orig,
Term_Container *new_child);
void (*focus)(Term_Container *tc, Term_Container *relative);
void (*unfocus)(Term_Container *tc, Term_Container *relative);
void (*set_title)(Term_Container *tc, Term_Container *child, const char *title);
void (*bell)(Term_Container *tc, Term_Container *child);
void (*close)(Term_Container *container, Term_Container *child,
Eina_Bool refocus);
};

View File

@ -46,6 +46,7 @@ struct _Term
struct {
int x, y;
} down;
unsigned char focused : 1;
unsigned char hold : 1;
unsigned char unswallowed : 1;
unsigned char missed_bell : 1;
@ -65,8 +66,8 @@ struct _Solo {
typedef struct _Tab_Item Tab_Item;
struct _Tab_Item {
Term_Container *tc;
Evas_Object *obj;
Elm_Object_Item *elm_item;
Elm_Object_Item *separator;
void *selector_entry;
};
@ -112,6 +113,7 @@ struct _Win
Evas_Object *cmdbox;
Ecore_Timer *cmdbox_del_timer;
Ecore_Timer *cmdbox_focus_timer;
unsigned char focused : 1;
unsigned char cmdbox_up : 1;
};
@ -120,8 +122,6 @@ struct _Win
static Eina_List *wins = NULL;
static Eina_Bool _win_is_focused(Win *wn);
static Eina_Bool _term_is_focused(Term *term);
static Term_Container *_solo_new(Term *term, Win *wn);
static Term_Container *_split_new(Term_Container *tc1, Term_Container *tc2, Eina_Bool is_horizontal);
static Term_Container *_tabs_new(Term_Container *child, Term_Container *parent);
@ -183,11 +183,10 @@ static void
_cb_win_focus_in(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
{
Win *wn = data;
Term_Container *tc = (Term_Container*) wn;
Term *term;
if (!tc->is_focused) elm_win_urgent_set(wn->win, EINA_FALSE);
tc->is_focused = EINA_TRUE;
if (!wn->focused) elm_win_urgent_set(wn->win, EINA_FALSE);
wn->focused = EINA_TRUE;
if ((wn->cmdbox_up) && (wn->cmdbox))
elm_object_focus_set(wn->cmdbox, EINA_TRUE);
@ -215,8 +214,12 @@ _cb_win_focus_in(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUS
}
}
if (term)
_term_focus(term);
if (!term) return;
edje_object_signal_emit(term->bg, "focus,in", "terminology");
edje_object_signal_emit(term->base, "focus,in", "terminology");
if (!wn->cmdbox_up)
elm_object_focus_set(term->termio, EINA_TRUE);
}
static void
@ -225,19 +228,13 @@ _cb_win_focus_out(void *data, Evas_Object *obj EINA_UNUSED,
{
Win *wn = data;
Term *term;
Term_Container *tc = (Term_Container*) wn;
DBG("win focus out");
tc->is_focused = EINA_FALSE;
wn->focused = EINA_FALSE;
if ((wn->cmdbox_up) && (wn->cmdbox))
elm_object_focus_set(wn->cmdbox, EINA_FALSE);
term = _win_focused_term_get(wn);
DBG("term:%p", term);
if (!term)
return;
tc = term->container;
tc->unfocus(tc, tc);
edje_object_signal_emit(term->bg, "focus,out", "terminology");
edje_object_signal_emit(term->base, "focus,out", "terminology");
if (!wn->cmdbox_up)
@ -257,9 +254,11 @@ _cb_term_mouse_in(void *data, Evas *e EINA_UNUSED,
config = termio_config_get(term->termio);
if ((!config) || (!config->mouse_over_focus))
return;
if (!_win_is_focused(term->wn))
if ((!term->wn) || (!term->wn->focused))
return;
term->focused = EINA_TRUE;
_term_focus(term);
}
@ -410,40 +409,11 @@ _solo_set_title(Term_Container *tc, Term_Container *child EINA_UNUSED,
const char *title)
{
eina_stringshare_del(tc->title);
tc->title = eina_stringshare_add(title);
tc->title = eina_stringshare_add(title);
DBG("set title: '%s'", title);
tc->parent->set_title(tc->parent, tc, title);
}
static void
_solo_bell(Term_Container *tc EINA_UNUSED, Term_Container *child EINA_UNUSED)
{
DBG("bell is_focused:%d", tc->is_focused);
if (tc->is_focused)
return;
tc->missed_bell = EINA_TRUE;
tc->parent->bell(tc->parent, tc);
}
static void
_solo_unfocus(Term_Container *tc, Term_Container *relative EINA_UNUSED)
{
assert (tc->type == TERM_CONTAINER_TYPE_SOLO);
DBG("unfocus %d", tc->is_focused);
if (!tc->is_focused)
return;
if (tc->parent != relative)
{
DBG("unfocus from child");
tc->parent->unfocus(tc->parent, tc);
}
tc->is_focused = EINA_FALSE;
}
static void
_solo_focus(Term_Container *tc, Term_Container *relative EINA_UNUSED)
{
@ -451,13 +421,6 @@ _solo_focus(Term_Container *tc, Term_Container *relative EINA_UNUSED)
assert (tc->type == TERM_CONTAINER_TYPE_SOLO);
solo = (Solo*) tc;
DBG("focus %d", tc->is_focused);
if (tc->is_focused)
return;
tc->missed_bell = EINA_FALSE;
if (tc->parent == relative)
{
DBG("focus from parent");
@ -468,8 +431,6 @@ _solo_focus(Term_Container *tc, Term_Container *relative EINA_UNUSED)
DBG("focus from child");
tc->parent->focus(tc->parent, tc);
}
tc->is_focused = EINA_TRUE;
}
static Term_Container *
@ -494,12 +455,8 @@ _solo_new(Term *term, Win *wn)
tc->size_eval = _solo_size_eval;
tc->swallow = NULL;
tc->focus = _solo_focus;
tc->unfocus = _solo_unfocus;
tc->set_title = _solo_set_title;
tc->bell = _solo_bell;
tc->close= _solo_close;
tc->title = eina_stringshare_add("Terminology");
tc->type = TERM_CONTAINER_TYPE_SOLO;
DBG("tc:%p", tc);
@ -507,6 +464,7 @@ _solo_new(Term *term, Win *wn)
tc->wn = wn;
solo->term = term;
tc->type = TERM_CONTAINER_TYPE_SOLO;
term->container = tc;
@ -516,18 +474,6 @@ _solo_new(Term *term, Win *wn)
/* }}} */
/* {{{ Win */
static Eina_Bool
_win_is_focused(Win *wn)
{
Term_Container *tc;
if (!wn)
return EINA_FALSE;
tc = (Term_Container*) wn;
return tc->is_focused;
}
int win_term_set(Win *wn, Term *term)
{
@ -857,30 +803,9 @@ _win_focus(Term_Container *tc, Term_Container *child EINA_UNUSED)
wn = (Win*) tc;
DBG("focus from child");
if (!tc->is_focused) elm_win_urgent_set(wn->win, EINA_FALSE);
tc->is_focused = EINA_TRUE;
}
static void
_win_unfocus(Term_Container *tc, Term_Container *child EINA_UNUSED)
{
tc->is_focused = EINA_FALSE;
}
static void
_win_bell(Term_Container *tc EINA_UNUSED, Term_Container *child EINA_UNUSED)
{
Win *wn;
assert (tc->type == TERM_CONTAINER_TYPE_WIN);
wn = (Win*) tc;
if (tc->is_focused) return;
if (wn->config->urg_bell)
{
elm_win_urgent_set(wn->win, EINA_TRUE);
}
if (!wn->focused) elm_win_urgent_set(wn->win, EINA_FALSE);
wn->focused = EINA_TRUE;
/* TODO: go down? */
}
static void
@ -931,11 +856,8 @@ win_new(const char *name, const char *role, const char *title,
tc->size_eval = _win_size_eval;
tc->swallow = _win_swallow;
tc->focus = _win_focus;
tc->unfocus = _win_unfocus;
tc->set_title = _win_set_title;
tc->bell = _win_bell;
tc->close = _win_close;
tc->title = eina_stringshare_add("Terminology");
tc->type = TERM_CONTAINER_TYPE_WIN;
config_default_font_set(config, evas_object_evas_get(wn->win));
@ -993,7 +915,7 @@ main_close(Evas_Object *win, Evas_Object *term)
wn->terms = eina_list_remove(wn->terms, tm);
tc = tm->container;
tc->close(tc, tc, _term_is_focused(tm));
tc->close(tc, tc, tm->focused);
term_free(tm);
@ -1122,8 +1044,7 @@ _win_focused_term_get(Win *wn)
EINA_LIST_FOREACH(wn->terms, l, term)
{
DBG("term:%p", term);
if (_term_is_focused(term)) return term;
if (term->focused) return term;
}
return NULL;
}
@ -1302,10 +1223,6 @@ _split_swallow(Term_Container *tc, Term_Container *orig,
evas_object_geometry_set(o, x, y, w, h);
evas_object_show(o);
evas_object_show(split->panes);
tc->missed_bell = EINA_FALSE;
if (split->tc1->missed_bell || split->tc2->missed_bell)
tc->missed_bell = EINA_TRUE;
}
static Term *
@ -1368,8 +1285,6 @@ _split_focus(Term_Container *tc, Term_Container *relative)
assert (tc->type == TERM_CONTAINER_TYPE_SPLIT);
split = (Split*) tc;
if (tc->is_focused)
return;
if (tc->parent == relative)
{
@ -1382,21 +1297,6 @@ _split_focus(Term_Container *tc, Term_Container *relative)
split->last_focus = relative;
tc->parent->focus(tc->parent, tc);
}
tc->missed_bell = EINA_FALSE;
if (split->tc1->missed_bell || split->tc2->missed_bell)
tc->missed_bell = EINA_TRUE;
}
static void
_split_unfocus(Term_Container *tc, Term_Container *relative EINA_UNUSED)
{
if (!tc->is_focused)
return;
tc->is_focused = EINA_TRUE;
tc->parent->unfocus(tc->parent, tc);
}
static void
@ -1419,21 +1319,6 @@ _split_set_title(Term_Container *tc, Term_Container *child,
}
}
static void
_split_bell(Term_Container *tc, Term_Container *child)
{
assert (tc->type == TERM_CONTAINER_TYPE_SPLIT);
DBG("bell: self:%p child:%p", tc, child);
if (tc->is_focused)
return;
tc->missed_bell = EINA_TRUE;
tc->parent->bell(tc->parent, tc);
}
static Term_Container *
_split_new(Term_Container *tc1, Term_Container *tc2, Eina_Bool is_horizontal)
{
@ -1457,17 +1342,14 @@ _split_new(Term_Container *tc1, Term_Container *tc2, Eina_Bool is_horizontal)
tc->size_eval = _split_size_eval;
tc->swallow = _split_swallow;
tc->focus = _split_focus;
tc->unfocus = _split_unfocus;
tc->set_title = _split_set_title;
tc->bell = _split_bell;
tc->close = _split_close;
tc->title = eina_stringshare_add("Terminology");
tc->type = TERM_CONTAINER_TYPE_SPLIT;
tc->parent = NULL;
tc->wn = tc1->wn;
tc->type = TERM_CONTAINER_TYPE_SPLIT;
tc1->parent = tc2->parent = tc;
split->tc1 = tc1;
@ -2121,7 +2003,7 @@ _tabs_selector_cb_selected(void *data,
Tabs *tabs = data;
Eina_List *l;
Tab_Item *tab_item;
/* TODO: boris */
DBG("selected: %p info:%p", tabs, info);
EINA_LIST_FOREACH(tabs->tabs, l, tab_item)
@ -2135,6 +2017,27 @@ _tabs_selector_cb_selected(void *data,
}
DBG("FAIL");
#if 0
Split *sp = data;
Eina_List *l;
Term *tm;
EINA_LIST_FOREACH(sp->terms, l, tm)
{
if (tm->sel == info)
{
_term_focus(tm);
_term_focus_show(sp, tm);
_sel_restore(sp);
_term_miniview_check(tm);
return;
}
}
_sel_restore(sp);
_term_focus(sp->term);
_term_focus_show(sp, sp->term);
_term_miniview_check(tm);
#endif
}
static void
@ -2154,8 +2057,12 @@ _tabs_selector_cb_ending(void *data,
void *info EINA_UNUSED)
{
Tabs *tabs = data;
/* TODO */
/* TODO: boris */
DBG("ending: %p", tabs);
#if 0
Split *sp = data;
edje_object_signal_emit(sp->sel_bg, "end", "terminology");
#endif
}
@ -2338,27 +2245,6 @@ _tab_item_find(Tabs *tabs, Term_Container *child)
return NULL;
}
static void
_tabs_bells_check(Tabs *tabs)
{
Term_Container *tc = (Term_Container*)tabs;
Eina_List *l;
Tab_Item *tab_item;
tc->missed_bell = EINA_FALSE;
EINA_LIST_FOREACH(tabs->tabs, l, tab_item)
{
if (tab_item->tc->missed_bell)
{
tc->missed_bell = EINA_TRUE;
goto end;
}
}
end:
edje_object_part_text_set(tabs->base, "terminology.tabmissed.label",
tc->missed_bell ? "!" : "");
}
static void
_tabs_close(Term_Container *tc, Term_Container *child,
@ -2391,7 +2277,6 @@ _tabs_close(Term_Container *tc, Term_Container *child,
{
Eina_List *l;
Tab_Item *tab_item;
char buf[32];
l = _tab_item_find(tabs, child);
tab_item = l->data;
@ -2421,14 +2306,11 @@ _tabs_close(Term_Container *tc, Term_Container *child,
evas_object_del(o);
}
elm_object_item_del(tab_item->elm_item);
elm_object_item_del(tab_item->separator);
tabs->tabs = eina_list_remove_list(tabs->tabs, l);
free(tab_item);
_tabs_bells_check(tabs);
count--;
snprintf(buf, sizeof(buf), "%i", count);
edje_object_part_text_set(tabs->base, "terminology.tabcount.label", buf);
}
}
@ -2545,8 +2427,6 @@ _tabs_swallow(Term_Container *tc, Term_Container *orig,
edje_object_part_swallow(tabs->base, "content",
new_child->get_evas_object(new_child));
}
_tabs_bells_check(tabs);
}
@ -2593,11 +2473,9 @@ tab_item_new(Tabs *tabs, Term_Container *child)
tab_item->tc = child;
assert(child != NULL);
toolbar_item = elm_toolbar_item_append(tabs->tabbar,
NULL, "Terminology",
_tab_selected, tab_item);
elm_toolbar_item_priority_set(toolbar_item, 1);
tab_item->elm_item = toolbar_item;
@ -2632,8 +2510,6 @@ _tab_new_cb(void *data,
tc_new->parent = tc_parent;
tab_item_new(tabs, tc_new);
tc_new->focus(tc_new, tc_parent);
}
static void
@ -2657,14 +2533,9 @@ _tab_hide_cb(void *data,
{
Evas_Coord w = 0, h = 0;
Tabs *tabs = data;
Term_Container *tc;
char buf[32];
int n;
DBG("hide");
tc = (Term_Container*) tabs;
elm_coords_finger_size_adjust(1, &w, 1, &h);
if (!tabs->tabbar_spacer)
@ -2689,11 +2560,9 @@ _tab_hide_cb(void *data,
tabs->selector_spacer);
}
n = eina_list_count(tabs->tabs);
snprintf(buf, sizeof(buf), "%i", n);
edje_object_part_text_set(tabs->base, "terminology.tabcount.label", buf);
edje_object_part_text_set(tabs->base, "terminology.tabmissed.label",
tc->missed_bell ? "!" : "");
/* TODO */
edje_object_part_text_set(tabs->base, "terminology.tabcount.label", "1337");
edje_object_part_text_set(tabs->base, "terminology.tabmissed.label", "42");
edje_object_signal_emit(tabs->base, "tabbar,off", "terminology");
edje_object_signal_emit(tabs->base, "tabcontrols,on", "terminology");
@ -2701,41 +2570,19 @@ _tab_hide_cb(void *data,
evas_object_hide(tabs->box);
}
static void
_tab_item_redo_title(Tab_Item *tab_item)
{
Term_Container *tc = tab_item->tc;
if (tc->missed_bell)
{
const char *custom_title;
custom_title = eina_stringshare_printf("! %s", tc->title);
elm_object_item_text_set(tab_item->elm_item, custom_title);
eina_stringshare_del(custom_title);
}
else
{
elm_object_item_text_set(tab_item->elm_item, tc->title);
}
}
static void
_tabs_focus(Term_Container *tc, Term_Container *relative)
{
Tabs *tabs;
if (tc->is_focused)
return;
assert (tc->type == TERM_CONTAINER_TYPE_TABS);
tabs = (Tabs*) tc;
if (tc->parent == relative)
{
DBG("focus from parent");
tabs->current->tc->focus(tabs->current->tc, tc);
_tab_item_redo_title(tabs->current);
}
else
{
@ -2750,47 +2597,7 @@ _tabs_focus(Term_Container *tc, Term_Container *relative)
elm_toolbar_item_selected_set(tabs->current->elm_item, EINA_FALSE);
elm_toolbar_item_selected_set(tab_item->elm_item, EINA_TRUE);
tc->parent->focus(tc->parent, tc);
_tab_item_redo_title(tab_item);
}
_tabs_bells_check(tabs);
}
static void
_tabs_unfocus(Term_Container *tc, Term_Container *relative EINA_UNUSED)
{
if (!tc->is_focused)
return;
tc->is_focused = EINA_FALSE;
tc->parent->unfocus(tc->parent, tc);
}
static void
_tabs_bell(Term_Container *tc EINA_UNUSED, Term_Container *child EINA_UNUSED)
{
Tabs *tabs;
Tab_Item *tab_item;
Eina_List *l;
DBG("bell");
assert (tc->type == TERM_CONTAINER_TYPE_TABS);
tabs = (Tabs*) tc;
_tabs_bells_check(tabs);
if (tc->is_focused)
return;
l = _tab_item_find(tabs, child);
assert(l);
tab_item = l->data;
_tab_item_redo_title(tab_item);
tc->parent->bell(tc->parent, tc);
}
static void
@ -2808,7 +2615,7 @@ _tabs_set_title(Term_Container *tc, Term_Container *child,
assert(l);
tab_item = l->data;
_tab_item_redo_title(tab_item);
elm_object_item_part_text_set(tab_item->elm_item, "elm.text", title);
DBG("set title: '%s' child:%p current->tc:%p",
title, child, tabs->current->tc);
@ -2853,11 +2660,8 @@ _tabs_new(Term_Container *child, Term_Container *parent)
tc->size_eval = _tabs_size_eval;
tc->swallow = _tabs_swallow;
tc->focus = _tabs_focus;
tc->unfocus = _tabs_unfocus;
tc->set_title = _tabs_set_title;
tc->bell = _tabs_bell;
tc->close= _tabs_close;
tc->title = eina_stringshare_add("Terminology");
tc->type = TERM_CONTAINER_TYPE_TABS;
tc->parent = parent;
@ -2924,18 +2728,6 @@ _tabs_new(Term_Container *child, Term_Container *parent)
/* }}} */
/* {{{ Term */
static Eina_Bool
_term_is_focused(Term *term)
{
Term_Container *tc;
if (!term)
return EINA_FALSE;
tc = term->container;
return tc->is_focused;
}
#if 0
static void
_cb_size_track(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event EINA_UNUSED)
@ -3001,33 +2793,31 @@ _term_focus(Term *term)
Term *term2;
const char *title;
DBG("term focus: %d", _term_is_focused(term));
if (_term_is_focused(term))
return;
DBG("term focus");
EINA_LIST_FOREACH(term->wn->terms, l, term2)
{
if (term2 != term)
{
if (_term_is_focused(term2))
if (term2->focused)
{
tc = term2->container;
tc->unfocus(tc, tc);
term2->focused = EINA_FALSE;
edje_object_signal_emit(term2->bg, "focus,out", "terminology");
edje_object_signal_emit(term2->base, "focus,out", "terminology");
elm_object_focus_set(term2->termio, EINA_FALSE);
}
}
}
tc = term->container;
tc->focus(tc, tc);
term->focused = EINA_TRUE;
edje_object_signal_emit(term->bg, "focus,in", "terminology");
edje_object_signal_emit(term->base, "focus,in", "terminology");
if (term->wn->cmdbox) elm_object_focus_set(term->wn->cmdbox, EINA_FALSE);
elm_object_focus_set(term->termio, EINA_TRUE);
tc = term->container;
tc->focus(tc, tc);
title = termio_title_get(term->termio);
if (title)
tc->set_title(tc, tc, title);
@ -3218,7 +3008,7 @@ _term_miniview_check(Term *term)
//Split *sp = _split_find(term->wn->win, term->term, NULL);
if (term->miniview_shown)
{
if (_term_is_focused(term))
if (term->focused)
edje_object_signal_emit(term->bg, "miniview,on", "terminology");
#if 0
else if (sp->term != term)
@ -3474,7 +3264,7 @@ static void
_cb_icon(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
{
Term *term = data;
if (_term_is_focused(term))
if (term->focused)
elm_win_icon_name_set(term->wn->win, termio_icon_name_get(term->termio));
}
@ -3962,7 +3752,7 @@ main_term_bg_config(Term *term)
}
}
if (_term_is_focused(term) && (_win_is_focused(term->wn)))
if ((term->focused) && (term->wn->focused))
{
edje_object_signal_emit(term->bg, "focus,in", "terminology");
edje_object_signal_emit(term->base, "focus,in", "terminology");
@ -4055,21 +3845,35 @@ static void
_cb_bell(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
{
Term *term = data;
Term_Container *tc;
Config *config = termio_config_get(term->termio);
tc = term->container;
tc->bell(tc, tc);
if (!tc->wn->config->disable_visual_bell)
if (!config) return;
if (!config->disable_visual_bell)
{
#if 0
Split *sp;
edje_object_signal_emit(term->bg, "bell", "terminology");
edje_object_signal_emit(term->base, "bell", "terminology");
if (tc->wn->config->bell_rings)
if (config->bell_rings)
{
edje_object_signal_emit(term->bg, "bell,ring", "terminology");
edje_object_signal_emit(term->base, "bell,ring", "terminology");
}
sp = _split_find(term->wn->win, term->term, NULL);
if (sp)
{
if (sp->term != term)
{
term->missed_bell = EINA_TRUE;
_split_tabcount_update(sp, sp->term);
}
}
#endif
}
if (config->urg_bell)
{
if (!term->wn->focused) elm_win_urgent_set(term->wn->win, EINA_TRUE);
}
}
@ -4080,11 +3884,10 @@ _cb_options_done(void *data EINA_UNUSED)
Win *wn = data;
Eina_List *l;
Term *term;
if (!_win_is_focused(wn)) return;
if (!wn->focused) return;
EINA_LIST_FOREACH(wn->terms, l, term)
{
if (_term_is_focused(term))
if (term->focused)
{
elm_object_focus_set(term->termio, EINA_TRUE);
termio_event_feed_mouse_in(term->termio);
@ -4234,6 +4037,8 @@ term_new(Win *wn, Config *config, const char *cmd,
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_IN,
_cb_term_mouse_in, term);
if (!wn->terms) term->focused = EINA_TRUE;
wn->terms = eina_list_append(wn->terms, term);
app_server_term_add(term);