raster pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=3ad611a82849bc8789a6381b723614cd8047cdf4
commit 3ad611a82849bc8789a6381b723614cd8047cdf4 Author: Carsten Haitzler (Rasterman) <[email protected]> Date: Wed Dec 3 08:42:46 2014 +0900 Revert "top-level tabs" This reverts commit c6b5d0798f88b72b24fc060d1711bd9b3e8a3188. --- data/themes/default.edc | 89 +------ src/bin/termio.c | 2 + src/bin/win.c | 638 +++--------------------------------------------- 3 files changed, 42 insertions(+), 687 deletions(-) diff --git a/data/themes/default.edc b/data/themes/default.edc index 5994acd..4d0cfc2 100644 --- a/data/themes/default.edc +++ b/data/themes/default.edc @@ -2593,93 +2593,6 @@ target: "0.clip"; target: "1.clip"; target: "2.clip"; target: "3.clip"; target: } } } - - group { name: "terminology/tabbar"; - parts { - //part { name: "tabs"; - // type: SWALLOW; - // description { state: "default" 0.0; - // visible: 1; - // } - //} - part { name: "new_tab"; - effect: GLOW; - type: TEXT; - description { state: "default" 0.0; - color: 51 153 255 255; - color2: 51 153 255 24; - color3: 51 153 255 18; - min: 16 16; - text { font: "Sans"; size: 10; - text: "+"; - //align: 0.5 1.0; - //min: 0 1; - } - rel1 { - relative: 1.0 0.0; - offset: -16 0; - } - rel2 { - relative: 1.0 1.0; - offset: 0 0; - } - } - } - } - } - - group { name: "terminology/tabs"; - parts { - part { name: "terminology.tabbar"; - type: SWALLOW; - description { state: "default" 0.0; - visible: 1;// TODO: boris - align: 0 0; - min: 16 16; - rel1 { - relative: 0.0 0.0; - offset: 0 0; - } - rel2 { - relative: 1.0 0.0; - offset: 0 0; - } - } - description { state: "visible" 0.0; - visible: 1; - } - } - program { - signal: "tabbar,show"; source: "terminology"; - action: STATE_SET "visible" 0.0; - transition: DECELERATE 0.4; - target: "terminology.tabbar"; - } - program { - signal: "tabbar,hide"; source: "terminology"; - action: STATE_SET "default" 0.0; - transition: DECELERATE 0.6; - target: "terminology.tabbar"; - } - part { name: "content"; - type: SWALLOW; - description { state: "default" 0.0; - visible: 1; - align: 0.5 1; - rel1 { - relative: 0.0 1.0; - to: "terminology.tabbar"; - offset: 0 0; - } - rel2 { - relative: 1.0 1.0; - offset: 0 0; - } - } - } - } - } - /////////////////////////////////////////////////////////////////////////// //// an object to contain the selection tool used for selecting tabs (with //// a glow grid of terms @@ -2793,7 +2706,7 @@ target: "0.clip"; target: "1.clip"; target: "2.clip"; target: "3.clip"; target: } } } - + group { name: "terminology/sel/item"; images { image: "bg_bevel.png" COMP; diff --git a/src/bin/termio.c b/src/bin/termio.c index b099981..0c92195 100644 --- a/src/bin/termio.c +++ b/src/bin/termio.c @@ -4528,6 +4528,7 @@ _smart_pty_title(void *data) EINA_SAFETY_ON_NULL_RETURN(sd); if (!sd->win) return; evas_object_smart_callback_call(obj, "title,change", NULL); +// elm_win_title_set(sd->win, sd->pty->prop.title); } static void @@ -4539,6 +4540,7 @@ _smart_pty_icon(void *data) EINA_SAFETY_ON_NULL_RETURN(sd); if (!sd->win) return; evas_object_smart_callback_call(obj, "icon,change", NULL); +// elm_win_icon_name_set(sd->win, sd->pty->prop.icon); } static void diff --git a/src/bin/win.c b/src/bin/win.c index 7d44e78..eded91c 100644 --- a/src/bin/win.c +++ b/src/bin/win.c @@ -76,13 +76,13 @@ typedef enum _Term_Container_Type TERM_CONTAINER_TYPE_UNKNOWN, TERM_CONTAINER_TYPE_SOLO, TERM_CONTAINER_TYPE_SPLIT, - TERM_CONTAINER_TYPE_TABS, + TERM_CONTAINER_TYPE_TAB, TERM_CONTAINER_TYPE_WIN } Term_Container_Type; typedef struct _Term_Container Term_Container; typedef struct _Solo Solo; -typedef struct _Tabs Tabs; +typedef struct _Tab Tab; struct _Term_Container { Term_Container_Type type; @@ -98,11 +98,9 @@ struct _Term_Container { Evas_Coord mx, Evas_Coord my); void (*size_eval)(Term_Container *container, Sizeinfo *info); void (*split)(Term_Container *container, const char *cmd, - Eina_Bool is_horizontal); /* TODO: only for solo, move out ? */ + Eina_Bool is_horizontal); void (*swallow)(Term_Container *container, Term_Container *orig, Term_Container *new_child); - void (*focus)(Term_Container *tc, Term_Container *relative); - void (*set_title)(Term_Container *tc, Term_Container *child, const char *title); void (*close)(Term_Container *container, Term_Container *child, Eina_Bool refocus); }; @@ -112,20 +110,9 @@ struct _Solo { Term *term; }; -typedef struct _Tab_Item Tab_Item; -struct _Tab_Item { - Term_Container *tc; - Elm_Object_Item *elm_item; - Elm_Object_Item *separator; -}; - -struct _Tabs { +struct _Tab { Term_Container tc; - Evas_Object *base; - Evas_Object *tabbar; - Elm_Object_Item *tb_item_add; - Eina_List *tabs; - Tab_Item *current; + /* TODO */ }; struct _Split @@ -133,8 +120,6 @@ struct _Split Term_Container tc; Term_Container *tc1, *tc2; // left/right or top/bottom child splits, null if leaf Evas_Object *panes; // null if a leaf node - Term_Container *last_focus; - unsigned char is_horizontal : 1; }; @@ -164,9 +149,8 @@ static Eina_List *wins = NULL; 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); //static void _term_resize_track_start(Term *term); -//static void _split_tabcount_update(Split *sp, Term *tm); +static void _split_tabcount_update(Split *sp, Term *tm); static Term * _win_focused_term_get(Win *wn); static Split * _split_find(Evas_Object *win, Evas_Object *term, Term **ptm); static void _term_focus(Term *term); @@ -414,6 +398,8 @@ _solo_split(Term_Container *tc, const char *cmd, Eina_Bool is_horizontal) tc_new = _solo_new(tm_new, wn); evas_object_data_set(tm_new->termio, "sizedone", tm_new->termio); + /* TODO: focus */ + tc_split = _split_new(tc, tc_new, is_horizontal); obj_split = tc_split->get_evas_object(tc_split); @@ -421,7 +407,6 @@ _solo_split(Term_Container *tc, const char *cmd, Eina_Bool is_horizontal) tc_parent->swallow(tc_parent, tc, tc_split); evas_object_show(obj_split); - _term_focus(tm_new); } static Term * @@ -454,31 +439,6 @@ _solo_term_last(Term_Container *tc) return solo->term; } -static void -_solo_set_title(Term_Container *tc, Term_Container *child EINA_UNUSED, - const char *title) -{ - DBG("set title: '%s'", title); - tc->parent->set_title(tc->parent, tc, title); -} - -static void -_solo_focus(Term_Container *tc, Term_Container *relative EINA_UNUSED) -{ - Solo *solo; - assert (tc->type == TERM_CONTAINER_TYPE_SOLO); - solo = (Solo*) tc; - - if (tc->parent == relative) - { - _term_focus(solo->term); - } - else - { - tc->parent->focus(tc->parent, tc); - } -} - static Term_Container * _solo_new(Term *term, Win *wn) { @@ -501,12 +461,8 @@ _solo_new(Term *term, Win *wn) tc->size_eval = _solo_size_eval; tc->split = _solo_split; tc->swallow = NULL; - tc->focus = _solo_focus; - tc->set_title = _solo_set_title; tc->close= _solo_close; - DBG("tc:%p", tc); - tc->parent = NULL; tc->wn = wn; @@ -524,33 +480,25 @@ _solo_new(Term *term, Win *wn) int win_term_set(Win *wn, Term *term) { - Term_Container *tc_win = NULL, *tc_tabs = NULL, *tc_child = NULL; + Term_Container *tc_win, *tc_child; Evas_Object *base = win_base_get(wn); Evas *evas = evas_object_evas_get(base); + /* TODO: boris tab */ + tc_child = _solo_new(term, wn); - if (!tc_child) - goto bad; + if (!tc_child) return -1; tc_win = (Term_Container*) wn; - tc_tabs = _tabs_new(tc_child, tc_win); - if (!tc_tabs) - goto bad; - /* TODO: resize track */ //_term_resize_track_start(sp); - tc_win->swallow(tc_win, NULL, tc_tabs); + tc_win->swallow(tc_win, NULL, tc_child); _cb_size_hint(term, evas, term->termio, NULL); return 0; - -bad: - free(tc_child); - free(tc_tabs); - return -1; } @@ -748,13 +696,13 @@ _win_get_evas_object(Term_Container *tc) } static Term * -_win_term_next(Term_Container *tc EINA_UNUSED, Term_Container *child) +_win_term_next(Term_Container *tc, Term_Container *child) { return child->term_first(child); } static Term * -_win_term_prev(Term_Container *tc EINA_UNUSED, Term_Container *child) +_win_term_prev(Term_Container *tc, Term_Container *child) { return child->term_last(child); } @@ -817,7 +765,6 @@ _win_swallow(Term_Container *tc, Term_Container *orig, { edje_object_part_unswallow(base, orig->get_evas_object(orig)); - /* TODO: hide */ } edje_object_part_swallow(base, "terminology.content", child->get_evas_object(child)); @@ -837,27 +784,6 @@ _win_close(Term_Container *tc, Term_Container *child EINA_UNUSED, win_free(wn); } -static void -_win_focus(Term_Container *tc, Term_Container *child EINA_UNUSED) -{ - DBG("focus"); - /* TODO: go down? */ -} - -static void -_win_set_title(Term_Container *tc, Term_Container *child EINA_UNUSED, - const char *title) -{ - Win *wn; - assert (tc->type == TERM_CONTAINER_TYPE_WIN); - - wn = (Win*) tc; - - DBG("set title: '%s'", title); - - elm_win_title_set(wn->win, title); -} - Win * win_new(const char *name, const char *role, const char *title, const char *icon_name, Config *config, @@ -889,8 +815,6 @@ win_new(const char *name, const char *role, const char *title, tc->size_eval = _win_size_eval; tc->split = NULL; tc->swallow = _win_swallow; - tc->focus = _win_focus; - tc->set_title = _win_set_title; tc->close = _win_close; tc->type = TERM_CONTAINER_TYPE_WIN; @@ -1237,9 +1161,6 @@ _split_swallow(Term_Container *tc, Term_Container *orig, o = orig->get_evas_object(orig); evas_object_geometry_get(o, &x, &y, &w, &h); - if (orig == split->last_focus) - split->last_focus = new_child; - o = new_child->get_evas_object(new_child); if (split->tc1 == orig) { @@ -1290,59 +1211,28 @@ _split_close(Term_Container *tc, Term_Container *child, Eina_Bool refocus EINA_UNUSED) { Split *split; - Term_Container *parent, *other_child; + Term_Container *parent; assert (tc->type == TERM_CONTAINER_TYPE_SPLIT); split = (Split*) tc; + /* TODO: refocus */ elm_object_part_content_unset(split->panes, PANES_TOP); elm_object_part_content_unset(split->panes, PANES_BOTTOM); parent = tc->parent; - other_child = (child == split->tc1) ? split->tc2 : split->tc1; - parent->swallow(parent, tc, other_child); - if (refocus) - { - other_child->focus(other_child, tc->parent); - } - - evas_object_del(split->panes); - - free(tc); -} - -static void -_split_focus(Term_Container *tc, Term_Container *relative) -{ - Split *split; - assert (tc->type == TERM_CONTAINER_TYPE_SPLIT); - split = (Split*) tc; - - - if (tc->parent == relative) + if (child == split->tc1) { - split->last_focus->focus(split->last_focus, tc); + parent->swallow(parent, tc, split->tc2); } else { - split->last_focus = relative; + parent->swallow(parent, tc, split->tc1); } -} - -static void -_split_set_title(Term_Container *tc, Term_Container *child, - const char *title) -{ - Split *split; - assert (tc->type == TERM_CONTAINER_TYPE_SPLIT); - split = (Split*) tc; - - DBG("set title: '%s' child:%p split->last_focus:%p", - title, child, split->last_focus); + evas_object_del(split->panes); - if (child == split->last_focus) - tc->parent->set_title(tc->parent, tc, title); + free(tc); } static Term_Container * @@ -1368,8 +1258,6 @@ _split_new(Term_Container *tc1, Term_Container *tc2, Eina_Bool is_horizontal) tc->size_eval = _split_size_eval; tc->split = NULL; tc->swallow = _split_swallow; - tc->focus = _split_focus; - tc->set_title = _split_set_title; tc->close = _split_close; tc->parent = NULL; @@ -1381,7 +1269,6 @@ _split_new(Term_Container *tc1, Term_Container *tc2, Eina_Bool is_horizontal) split->tc1 = tc1; split->tc2 = tc2; - split->last_focus = tc2; o = split->panes = elm_panes_add(tc1->wn->win); elm_object_style_set(o, "flush"); @@ -1594,11 +1481,11 @@ _split_free(Split *sp) } #endif -#if 0 static void _split_tabcount_update(Split *sp EINA_UNUSED, Term *tm EINA_UNUSED) { /* TODO */ +#if 0 char buf[32], bufm[32]; int n = eina_list_count(sp->terms); int missed = 0; @@ -1641,11 +1528,14 @@ _split_tabcount_update(Split *sp EINA_UNUSED, Term *tm EINA_UNUSED) else edje_object_signal_emit(term->bg, "tabmissed,off", "terminology"); } +#endif } +#if 0 static void _split_split(Split *sp, Eina_Bool horizontal, char *cmd) { + /* TODO: boris */ Split *sp2, *sp1; Evas_Object *o; Config *config; @@ -1827,7 +1717,9 @@ _split_append(Split *sp, Eina_List **flat) _split_append(sp->s2, flat); } } +#endif +#if 0 static Eina_List * _split_flatten(Split *sp) { @@ -1836,11 +1728,13 @@ _split_flatten(Split *sp) _split_append(sp, &flat); return flat; } +#endif static Term * _term_next_get(Term *termin) { /* TODO */ +#if 0 Split *sp; Eina_List *flat, *l; @@ -1867,12 +1761,15 @@ _term_next_get(Term *termin) eina_list_free(flat); if (sp->terms) return sp->terms->data; return sp->term; +#endif + return termin; } static Term * _term_prev_get(Term *termin) { /* TODO */ +#if 0 Split *sp; Eina_List *flat, *l; @@ -1905,8 +1802,11 @@ _term_prev_get(Term *termin) l = eina_list_last(sp->terms); if (l) return l->data; return sp->term; +#endif + return termin; } +#if 0 static void _split_merge(Split *spp, Split *sp, const char *slot) { @@ -1966,452 +1866,6 @@ _split_merge(Split *spp, Split *sp, const char *slot) #endif /* }}} */ -/* {{{ Tabs */ - -static Evas_Object * -_tabs_get_evas_object(Term_Container *container) -{ - Tabs *tabs; - assert (container->type == TERM_CONTAINER_TYPE_TABS); - tabs = (Tabs*)container; - - return tabs->base; -} - -static Term * -_tabs_find_term_at_coords(Term_Container *container, - Evas_Coord mx, - Evas_Coord my) -{ - Tabs *tabs; - Term_Container *tc; - - assert (container->type == TERM_CONTAINER_TYPE_TABS); - tabs = (Tabs*)container; - - tc = tabs->current->tc; - - return tc->find_term_at_coords(tc, mx, my); -} - -static void -_tabs_size_eval(Term_Container *container, Sizeinfo *info) -{ - int mw = 0, mh = 0; - Tabs *tabs; - Term_Container *tc; - Sizeinfo inforet = {0, 0, 0, 0, 0, 0, 0, 0, 0}; - - assert (container->type == TERM_CONTAINER_TYPE_TABS); - tabs = (Tabs*)container; - - info->min_w = 0; - info->min_h = 0; - info->req_w = 0; - info->req_h = 0; - - evas_object_size_hint_min_get(tabs->base, &mw, &mh); - info->bg_min_w = mw; - info->bg_min_h = mh; - DBG("obj: mw:%d, mh:%d", mw, mh); - - tc = tabs->current->tc; - tc->size_eval(tc, &inforet); - DBG("min_w:%d min_h:%d step_x:%d step_y:%d req_w:%d req_h:%d bg_min_w:%d bg_min_h:%d req:%d", - inforet.min_w, inforet.min_h, inforet.step_x, inforet.step_y, - inforet.req_w, inforet.req_h, inforet.bg_min_w, inforet.bg_min_h, inforet.req); - - info->min_w += inforet.min_w + mw; - info->min_h += inforet.min_h + mh; - - info->step_x = inforet.step_x; - info->step_y = inforet.step_y; - - info->req |= inforet.req; - if (info->req) - { - info->req_h = inforet.req_h; - info->req_w = inforet.req_w; - } - info->bg_min_w = inforet.bg_min_w + mw; - info->bg_min_h = inforet.bg_min_h + mh; -} - -static Eina_List * -_tab_item_find(Tabs *tabs, Term_Container *child) -{ - Eina_List *l; - Tab_Item *tab_item; - - EINA_LIST_FOREACH(tabs->tabs, l, tab_item) - { - if (tab_item->tc == child) - return l; - } - return NULL; -} - - -static void -_tabs_close(Term_Container *tc, Term_Container *child, - Eina_Bool refocus) -{ - int count; - Tabs *tabs; - assert (tc->type == TERM_CONTAINER_TYPE_TABS); - tabs = (Tabs*)tc; - - count = eina_list_count(tabs->tabs); - if (count == 1) - { - tc->parent->close(tc->parent, tc, refocus); - evas_object_del(tabs->base); - free(tc); - } - else - { - Eina_List *l; - Tab_Item *tab_item; - - l = _tab_item_find(tabs, child); - tab_item = l->data; - - if (tab_item == tabs->current) - { - Tab_Item *next_tab_item; - Eina_List *next; - - next = eina_list_next(l); - if (!next) - next = tabs->tabs; - next_tab_item = next->data; - - elm_toolbar_item_selected_set(next_tab_item->elm_item, EINA_TRUE); - if (refocus) - { - tabs->current->tc->focus(tabs->current->tc, tc); - } - } - 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); - } -} - -static Term * -_tabs_term_next(Term_Container *tc, Term_Container *child) -{ - Tabs *tabs; - Tab_Item *tab_item; - Eina_List *l; - - assert (tc->type == TERM_CONTAINER_TYPE_TABS); - tabs = (Tabs*)tc; - l = _tab_item_find(tabs, child); - l = eina_list_next(l); - if (l) - { - tab_item = l->data; - tc = tab_item->tc; - return tc->term_first(tc); - } - else - { - return tc->parent->term_next(tc->parent, tc); - } -} - -static Term * -_tabs_term_prev(Term_Container *tc, Term_Container *child) -{ - Tabs *tabs; - Tab_Item *tab_item; - Eina_List *l; - - assert (tc->type == TERM_CONTAINER_TYPE_TABS); - tabs = (Tabs*)tc; - l = _tab_item_find(tabs, child); - l = eina_list_prev(l); - if (l) - { - tab_item = l->data; - tc = tab_item->tc; - return tc->term_last(tc); - } - else - { - return tc->parent->term_prev(tc->parent, tc); - } -} - -static Term * -_tabs_term_first(Term_Container *tc) -{ - Tabs *tabs; - Tab_Item *tab_item; - - assert (tc->type == TERM_CONTAINER_TYPE_TABS); - tabs = (Tabs*)tc; - - tab_item = tabs->tabs->data; - tc = tab_item->tc; - - return tc->term_first(tc); -} - -static Term * -_tabs_term_last(Term_Container *tc) -{ - Tabs *tabs; - Tab_Item *tab_item; - Eina_List *l; - - assert (tc->type == TERM_CONTAINER_TYPE_TABS); - tabs = (Tabs*)tc; - - l = eina_list_last(tabs->tabs); - tab_item = l->data; - tc = tab_item->tc; - - return tc->term_last(tc); -} - -static void -_tabs_swallow(Term_Container *tc, Term_Container *orig, - Term_Container *new_child) -{ - Tabs *tabs; - Tab_Item *tab_item; - Eina_List *l; - - assert (tc->type == TERM_CONTAINER_TYPE_TABS); - tabs = (Tabs*) tc; - - l = _tab_item_find(tabs, orig); - tab_item = l->data; - tab_item->tc = new_child; - - new_child->parent = tc; - - if (tab_item == tabs->current) - { - edje_object_part_unswallow(tabs->base, orig->get_evas_object(orig)); - /* TODO: hide */ - edje_object_part_swallow(tabs->base, "content", - new_child->get_evas_object(new_child)); - } -} - - -static void -_tab_selected(void *data, - Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) -{ - Term_Container *tc, *child; - Tabs *tabs; - Tab_Item *tab_item = data; - - DBG("selected %p", tab_item->tc); - tc = tab_item->tc->parent; - assert (tc->type == TERM_CONTAINER_TYPE_TABS); - tabs = (Tabs*) tc; - - if (tabs->current) - { - Evas_Object *o; - child = tabs->current->tc; - o = child->get_evas_object(child); - edje_object_part_unswallow(tabs->base, o); - evas_object_hide(o); - child = tab_item->tc; - o = child->get_evas_object(child); - edje_object_part_swallow(tabs->base, "content", o); - evas_object_show(o); - - elm_toolbar_item_selected_set(tabs->current->elm_item, EINA_FALSE); - } - tabs->current = tab_item; - - tab_item->tc->focus(tab_item->tc, tc); -} - -static Tab_Item* -tab_item_new(Tabs *tabs, Term_Container *child) -{ - Elm_Object_Item *toolbar_item, *sep; - Tab_Item *tab_item; - - tab_item = calloc(1, sizeof(Tab_Item)); - tab_item->tc = child; - assert(child != NULL); - - sep = elm_toolbar_item_insert_before(tabs->tabbar, - tabs->tb_item_add, - NULL, NULL, NULL, NULL); - elm_toolbar_item_priority_set(sep, 1); - elm_toolbar_item_separator_set(sep, EINA_TRUE); - tab_item->separator = sep; - toolbar_item = elm_toolbar_item_insert_before(tabs->tabbar, sep, - NULL, "Terminology", - _tab_selected, tab_item); - elm_toolbar_item_priority_set(toolbar_item, 1); - tab_item->elm_item = toolbar_item; - - tabs->tabs = eina_list_append(tabs->tabs, tab_item); - - elm_toolbar_item_selected_set(toolbar_item, EINA_TRUE); - - tabs->current = tab_item; - - return tab_item; -} - - -static void -_tab_new_cb(void *data EINA_UNUSED, - Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) -{ - Tabs *tabs = data; - Term_Container *tc_parent = (Term_Container*) tabs, - *tc_new; - Term *tm_new; - Win *wn = tc_parent->wn; - DBG("new"); - - elm_toolbar_item_selected_set(tabs->tb_item_add, EINA_FALSE); - elm_object_item_focus_set(tabs->tb_item_add, EINA_FALSE); - - tm_new = term_new(wn, wn->config, - NULL, wn->config->login_shell, NULL, - 80, 24, EINA_FALSE); - tc_new = _solo_new(tm_new, wn); - evas_object_data_set(tm_new->termio, "sizedone", tm_new->termio); - - elm_toolbar_item_selected_set(tabs->tb_item_add, EINA_FALSE); - - tc_new->parent = tc_parent; - - tab_item_new(tabs, tc_new); -} - -static void -_tabs_focus(Term_Container *tc, Term_Container *relative) -{ - Tabs *tabs; - - assert (tc->type == TERM_CONTAINER_TYPE_TABS); - tabs = (Tabs*) tc; - - if (tc->parent == relative) - { - tabs->current->tc->focus(tabs->current->tc, tc); - } - else - { - Eina_List *l; - Tab_Item *tab_item; - - l = _tab_item_find(tabs, relative); - assert(l); - - tab_item = l->data; - elm_toolbar_item_selected_set(tab_item->elm_item, EINA_FALSE); - } -} - -static void -_tabs_set_title(Term_Container *tc, Term_Container *child, - const char *title) -{ - Tabs *tabs; - Tab_Item *tab_item; - Eina_List *l; - - assert (tc->type == TERM_CONTAINER_TYPE_TABS); - tabs = (Tabs*) tc; - - l = _tab_item_find(tabs, child); - assert(l); - tab_item = l->data; - - 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); - - if (tab_item == tabs->current) - tc->parent->set_title(tc->parent, tc, title); -} - -static Term_Container * -_tabs_new(Term_Container *child, Term_Container *parent) -{ - Win *wn; - Term_Container *tc; - Tabs *tabs; - Evas_Object *o; - - tabs = calloc(1, sizeof(Tabs)); - if (!tabs) - { - free(tabs); - return NULL; - } - - wn = child->wn; - - tc = (Term_Container*)tabs; - tc->term_next = _tabs_term_next; - tc->term_prev = _tabs_term_prev; - tc->term_first = _tabs_term_first; - tc->term_last = _tabs_term_last; - tc->get_evas_object = _tabs_get_evas_object; - tc->find_term_at_coords = _tabs_find_term_at_coords; - tc->size_eval = _tabs_size_eval; - tc->split = NULL; - tc->swallow = _tabs_swallow; - tc->focus = _tabs_focus; - tc->set_title = _tabs_set_title; - tc->close= _tabs_close; - tc->type = TERM_CONTAINER_TYPE_TABS; - - tc->parent = parent; - tc->wn = wn; - - tabs->base = o = edje_object_add(evas_object_evas_get(wn->win)); - theme_apply(o, wn->config, "terminology/tabs"); - evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_fill_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(o); - - tabs->tabbar = o = elm_toolbar_add(wn->win); - elm_toolbar_homogeneous_set(o, EINA_FALSE); - elm_toolbar_shrink_mode_set(o, ELM_TOOLBAR_SHRINK_EXPAND); - elm_toolbar_transverse_expanded_set(o, EINA_TRUE); - elm_toolbar_standard_priority_set(o, 0); - evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(o); - - tabs->tb_item_add = elm_toolbar_item_append(o, NULL, "+", _tab_new_cb, tabs); - elm_toolbar_item_priority_set(tabs->tb_item_add, 100); - - child->parent = tc; - tab_item_new(tabs, child); - - edje_object_part_swallow(tabs->base, "terminology.tabbar", tabs->tabbar); - o = child->get_evas_object(child); - DBG("swallow:%p", o); - edje_object_part_swallow(tabs->base, "content", o); - - return tc; -} - - -/* }}} */ /* {{{ Term */ #if 0 @@ -2474,10 +1928,8 @@ void change_theme(Evas_Object *win, Config *config) static void _term_focus(Term *term) { - Term_Container *tc; Eina_List *l; Term *term2; - const char *title; EINA_LIST_FOREACH(term->wn->terms, l, term2) { @@ -2497,17 +1949,10 @@ _term_focus(Term *term) 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; - title = termio_title_get(term->termio); - if (title) - tc->set_title(tc, tc, title); - + elm_win_title_set(term->wn->win, termio_title_get(term->termio)); if (term->missed_bell) term->missed_bell = EINA_FALSE; - - /* TODO: tabs ? */ /* TODO: why ? */ #if 0 @@ -2954,11 +2399,8 @@ static void _cb_title(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) { Term *term = data; - Term_Container *tc = term->container; - const char *title = termio_title_get(term->termio); - - if (title) - tc->set_title(tc, tc, title); + if (term->focused) + elm_win_title_set(term->wn->win, termio_title_get(term->termio)); } static void @@ -3648,8 +3090,6 @@ term_new(Win *wn, Config *config, const char *cmd, term->base = o = edje_object_add(canvas); theme_apply(o, term->config, "terminology/core"); - evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_fill_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL); theme_auto_reload_enable(o); evas_object_data_set(o, "theme_reload_func", main_term_bg_config); --
