forked from enlightenment/terminology
the tab selector is back!
This commit is contained in:
parent
fd6ce546ed
commit
4fd9c9d178
|
@ -2770,7 +2770,7 @@ target: "0.clip"; target: "1.clip"; target: "2.clip"; target: "3.clip"; target:
|
||||||
}
|
}
|
||||||
program {
|
program {
|
||||||
signal: "mouse,clicked,1"; source: "tabselector_ev";
|
signal: "mouse,clicked,1"; source: "tabselector_ev";
|
||||||
action: SIGNAL_EMIT "tabselector,go" "terminology";
|
action: SIGNAL_EMIT "tabselector,show" "terminology";
|
||||||
}
|
}
|
||||||
program {
|
program {
|
||||||
signal: "mouse,wheel,0,-1"; source: "tabselector_ev";
|
signal: "mouse,wheel,0,-1"; source: "tabselector_ev";
|
||||||
|
|
|
@ -53,6 +53,7 @@ lz4/lz4.c lz4/lz4.h \
|
||||||
md5/md5.c md5/md5.h \
|
md5/md5.c md5/md5.h \
|
||||||
utf8.c utf8.h \
|
utf8.c utf8.h \
|
||||||
win.c win.h \
|
win.c win.h \
|
||||||
|
term_container.h \
|
||||||
utils.c utils.h \
|
utils.c utils.h \
|
||||||
dbus.c dbus.h \
|
dbus.c dbus.h \
|
||||||
extns.c extns.h \
|
extns.c extns.h \
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
#include "sel.h"
|
#include "sel.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#include "termio.h"
|
#include "term_container.h"
|
||||||
|
|
||||||
typedef struct _Sel Sel;
|
typedef struct _Sel Sel;
|
||||||
typedef struct _Entry Entry;
|
typedef struct _Entry Entry;
|
||||||
|
@ -41,7 +41,8 @@ struct _Sel
|
||||||
|
|
||||||
struct _Entry
|
struct _Entry
|
||||||
{
|
{
|
||||||
Evas_Object *obj, *bg, *termio;
|
Evas_Object *obj, *bg;
|
||||||
|
Term_Container *tc;
|
||||||
unsigned char selected : 1;
|
unsigned char selected : 1;
|
||||||
unsigned char selected_before : 1;
|
unsigned char selected_before : 1;
|
||||||
unsigned char selected_orig : 1;
|
unsigned char selected_orig : 1;
|
||||||
|
@ -476,39 +477,40 @@ _label_redo(Entry *en)
|
||||||
{
|
{
|
||||||
const char *s;
|
const char *s;
|
||||||
|
|
||||||
if (!en->obj) return;
|
if (!en->obj || !en->tc)
|
||||||
if (!en->termio) return;
|
return;
|
||||||
s = termio_title_get(en->termio);
|
s = en->tc->title;
|
||||||
if (!s) s = termio_icon_name_get(en->termio);
|
if (!s)
|
||||||
if (s) edje_object_part_text_set(en->bg, "terminology.label", s);
|
s = "Terminology";
|
||||||
|
edje_object_part_text_set(en->bg, "terminology.label", s);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
_title_cb(void *data, Evas_Object *obj EINA_UNUSED, void *info EINA_UNUSED)
|
sel_entry_title_set(void *entry, const char *title)
|
||||||
{
|
{
|
||||||
_label_redo(data);
|
Entry *en = entry;
|
||||||
|
|
||||||
|
edje_object_part_text_set(en->bg, "terminology.label", title);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
_icon_cb(void *data, Evas_Object *obj EINA_UNUSED, void *info EINA_UNUSED)
|
sel_entry_close(void *data)
|
||||||
{
|
|
||||||
_label_redo(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_bell_cb(void *data, Evas_Object *obj EINA_UNUSED, void *info EINA_UNUSED)
|
|
||||||
{
|
{
|
||||||
Entry *en = data;
|
Entry *en = data;
|
||||||
edje_object_signal_emit(en->bg, "bell", "terminology");
|
|
||||||
|
en->tc = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
_entry_termio_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *info EINA_UNUSED)
|
sel_entry_update(void *data)
|
||||||
{
|
{
|
||||||
Entry *en = data;
|
Entry *en = data;
|
||||||
if (en->termio) evas_object_event_callback_del_full
|
|
||||||
(en->termio, EVAS_CALLBACK_DEL, _entry_termio_del_cb, en);
|
en->tc = evas_object_data_get(en->obj, "tc");
|
||||||
en->termio = NULL;
|
if (en->tc)
|
||||||
|
{
|
||||||
|
_label_redo(en);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -518,10 +520,9 @@ _entry_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, voi
|
||||||
if (en->obj) evas_object_event_callback_del_full
|
if (en->obj) evas_object_event_callback_del_full
|
||||||
(en->obj, EVAS_CALLBACK_DEL, _entry_del_cb, en);
|
(en->obj, EVAS_CALLBACK_DEL, _entry_del_cb, en);
|
||||||
en->obj = NULL;
|
en->obj = NULL;
|
||||||
|
/*
|
||||||
if (en->termio)
|
if (en->termio)
|
||||||
{
|
{
|
||||||
evas_object_event_callback_del_full(en->termio, EVAS_CALLBACK_DEL,
|
|
||||||
_entry_termio_del_cb, en);
|
|
||||||
evas_object_smart_callback_del_full(en->termio, "title,change",
|
evas_object_smart_callback_del_full(en->termio, "title,change",
|
||||||
_title_cb, en);
|
_title_cb, en);
|
||||||
evas_object_smart_callback_del_full(en->termio, "icon,change",
|
evas_object_smart_callback_del_full(en->termio, "icon,change",
|
||||||
|
@ -530,6 +531,7 @@ _entry_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, voi
|
||||||
_bell_cb, en);
|
_bell_cb, en);
|
||||||
en->termio = NULL;
|
en->termio = NULL;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -562,17 +564,6 @@ _smart_del(Evas_Object *obj)
|
||||||
if (sd->autozoom_timeout) ecore_timer_del(sd->autozoom_timeout);
|
if (sd->autozoom_timeout) ecore_timer_del(sd->autozoom_timeout);
|
||||||
EINA_LIST_FREE(sd->items, en)
|
EINA_LIST_FREE(sd->items, en)
|
||||||
{
|
{
|
||||||
if (en->termio)
|
|
||||||
{
|
|
||||||
evas_object_event_callback_del_full(en->termio, EVAS_CALLBACK_DEL,
|
|
||||||
_entry_termio_del_cb, en);
|
|
||||||
evas_object_smart_callback_del_full(en->termio, "title,change",
|
|
||||||
_title_cb, en);
|
|
||||||
evas_object_smart_callback_del_full(en->termio, "icon,change",
|
|
||||||
_icon_cb, en);
|
|
||||||
evas_object_smart_callback_del_full(en->termio, "bell",
|
|
||||||
_bell_cb, en);
|
|
||||||
}
|
|
||||||
if (en->obj) evas_object_event_callback_del_full
|
if (en->obj) evas_object_event_callback_del_full
|
||||||
(en->obj, EVAS_CALLBACK_DEL, _entry_del_cb, en);
|
(en->obj, EVAS_CALLBACK_DEL, _entry_del_cb, en);
|
||||||
if (en->obj) evas_object_del(en->obj);
|
if (en->obj) evas_object_del(en->obj);
|
||||||
|
@ -669,12 +660,13 @@ sel_add(Evas_Object *parent)
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void *
|
||||||
sel_entry_add(Evas_Object *obj, Evas_Object *entry, Eina_Bool selected, Eina_Bool bell, Config *config)
|
sel_entry_add(Evas_Object *obj, Evas_Object *entry,
|
||||||
|
Eina_Bool selected, Eina_Bool bell, Config *config)
|
||||||
{
|
{
|
||||||
Sel *sd = evas_object_smart_data_get(obj);
|
Sel *sd = evas_object_smart_data_get(obj);
|
||||||
Entry *en = calloc(1, sizeof(Entry));
|
Entry *en = calloc(1, sizeof(Entry));
|
||||||
if (!en) return;
|
if (!en) return NULL;
|
||||||
sd->items = eina_list_append(sd->items, en);
|
sd->items = eina_list_append(sd->items, en);
|
||||||
sd->config = config;
|
sd->config = config;
|
||||||
en->obj = entry;
|
en->obj = entry;
|
||||||
|
@ -703,21 +695,15 @@ sel_entry_add(Evas_Object *obj, Evas_Object *entry, Eina_Bool selected, Eina_Boo
|
||||||
edje_object_message_signal_process(en->bg);
|
edje_object_message_signal_process(en->bg);
|
||||||
}
|
}
|
||||||
sd->interp = 1.0;
|
sd->interp = 1.0;
|
||||||
en->termio = evas_object_data_get(en->obj, "termio");
|
en->tc = evas_object_data_get(en->obj, "tc");
|
||||||
if (en->termio)
|
if (en->tc)
|
||||||
{
|
{
|
||||||
evas_object_smart_callback_add(en->termio, "title,change",
|
|
||||||
_title_cb, en);
|
|
||||||
evas_object_smart_callback_add(en->termio, "icon,change",
|
|
||||||
_icon_cb, en);
|
|
||||||
evas_object_smart_callback_add(en->termio, "bell",
|
|
||||||
_bell_cb, en);
|
|
||||||
_label_redo(en);
|
_label_redo(en);
|
||||||
evas_object_event_callback_add(en->termio, EVAS_CALLBACK_DEL,
|
|
||||||
_entry_termio_del_cb, en);
|
|
||||||
}
|
}
|
||||||
evas_object_event_callback_add(en->obj, EVAS_CALLBACK_DEL,
|
evas_object_event_callback_add(en->obj, EVAS_CALLBACK_DEL,
|
||||||
_entry_del_cb, en);
|
_entry_del_cb, en);
|
||||||
|
|
||||||
|
return en;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -4,7 +4,10 @@
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
Evas_Object *sel_add(Evas_Object *parent);
|
Evas_Object *sel_add(Evas_Object *parent);
|
||||||
void sel_entry_add(Evas_Object *obj, Evas_Object *entry, Eina_Bool selected, Eina_Bool bell, Config *config);
|
void *sel_entry_add(Evas_Object *obj, Evas_Object *entry, Eina_Bool selected, Eina_Bool bell, Config *config);
|
||||||
|
void sel_entry_title_set(void *entry, const char *title);
|
||||||
|
void sel_entry_close(void *entry);
|
||||||
|
void sel_entry_update(void *entry);
|
||||||
void sel_go(Evas_Object *obj);
|
void sel_go(Evas_Object *obj);
|
||||||
void sel_entry_selected_set(Evas_Object *obj, Evas_Object *entry, Eina_Bool keep_before);
|
void sel_entry_selected_set(Evas_Object *obj, Evas_Object *entry, Eina_Bool keep_before);
|
||||||
void sel_zoom(Evas_Object *obj, double zoom);
|
void sel_zoom(Evas_Object *obj, double zoom);
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
#ifndef _TERM_CONTAINER_H__
|
||||||
|
#define _TERM_CONTAINER_H__ 1
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct _Term_Container Term_Container;
|
||||||
|
typedef struct _Term Term;
|
||||||
|
typedef struct _Win Win;
|
||||||
|
typedef struct _Sizeinfo Sizeinfo;
|
||||||
|
|
||||||
|
struct _Sizeinfo
|
||||||
|
{
|
||||||
|
int min_w;
|
||||||
|
int min_h;
|
||||||
|
int step_x;
|
||||||
|
int step_y;
|
||||||
|
int req_w;
|
||||||
|
int req_h;
|
||||||
|
int bg_min_w;
|
||||||
|
int bg_min_h;
|
||||||
|
int req;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef enum _Term_Container_Type
|
||||||
|
{
|
||||||
|
TERM_CONTAINER_TYPE_UNKNOWN,
|
||||||
|
TERM_CONTAINER_TYPE_SOLO,
|
||||||
|
TERM_CONTAINER_TYPE_SPLIT,
|
||||||
|
TERM_CONTAINER_TYPE_TABS,
|
||||||
|
TERM_CONTAINER_TYPE_WIN
|
||||||
|
} Term_Container_Type;
|
||||||
|
|
||||||
|
struct _Term_Container {
|
||||||
|
Term_Container_Type type;
|
||||||
|
Term_Container *parent;
|
||||||
|
Win *wn;
|
||||||
|
Evas_Object *selector_img;
|
||||||
|
const char *title;
|
||||||
|
|
||||||
|
Term *(*term_next)(Term_Container *tc, Term_Container *child);
|
||||||
|
Term *(*term_prev)(Term_Container *tc, Term_Container *child);
|
||||||
|
Term *(*term_first)(Term_Container *tc);
|
||||||
|
Term *(*term_last)(Term_Container *tc);
|
||||||
|
Evas_Object* (*get_evas_object)(Term_Container *container);
|
||||||
|
Term *(*find_term_at_coords)(Term_Container *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 ? */
|
||||||
|
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);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
417
src/bin/win.c
417
src/bin/win.c
|
@ -25,7 +25,6 @@
|
||||||
|
|
||||||
/* {{{ Structs */
|
/* {{{ Structs */
|
||||||
|
|
||||||
typedef struct _Term_Container Term_Container;
|
|
||||||
typedef struct _Split Split;
|
typedef struct _Split Split;
|
||||||
|
|
||||||
struct _Term
|
struct _Term
|
||||||
|
@ -40,7 +39,6 @@ struct _Term
|
||||||
Evas_Object *media;
|
Evas_Object *media;
|
||||||
Evas_Object *popmedia;
|
Evas_Object *popmedia;
|
||||||
Evas_Object *miniview;
|
Evas_Object *miniview;
|
||||||
//Evas_Object *sel;
|
|
||||||
Evas_Object *tabcount_spacer;
|
Evas_Object *tabcount_spacer;
|
||||||
Eina_List *popmedia_queue;
|
Eina_List *popmedia_queue;
|
||||||
Media_Type poptype, mediatype;
|
Media_Type poptype, mediatype;
|
||||||
|
@ -56,56 +54,9 @@ struct _Term
|
||||||
unsigned char popmedia_deleted : 1;
|
unsigned char popmedia_deleted : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct _Sizeinfo Sizeinfo;
|
|
||||||
|
|
||||||
struct _Sizeinfo
|
|
||||||
{
|
|
||||||
int min_w;
|
|
||||||
int min_h;
|
|
||||||
int step_x;
|
|
||||||
int step_y;
|
|
||||||
int req_w;
|
|
||||||
int req_h;
|
|
||||||
int bg_min_w;
|
|
||||||
int bg_min_h;
|
|
||||||
int req;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef enum _Term_Container_Type
|
|
||||||
{
|
|
||||||
TERM_CONTAINER_TYPE_UNKNOWN,
|
|
||||||
TERM_CONTAINER_TYPE_SOLO,
|
|
||||||
TERM_CONTAINER_TYPE_SPLIT,
|
|
||||||
TERM_CONTAINER_TYPE_TABS,
|
|
||||||
TERM_CONTAINER_TYPE_WIN
|
|
||||||
} Term_Container_Type;
|
|
||||||
|
|
||||||
typedef struct _Term_Container Term_Container;
|
|
||||||
typedef struct _Solo Solo;
|
typedef struct _Solo Solo;
|
||||||
typedef struct _Tabs Tabs;
|
typedef struct _Tabs Tabs;
|
||||||
|
|
||||||
struct _Term_Container {
|
|
||||||
Term_Container_Type type;
|
|
||||||
Term_Container *parent;
|
|
||||||
Win *wn;
|
|
||||||
|
|
||||||
Term *(*term_next)(Term_Container *tc, Term_Container *child);
|
|
||||||
Term *(*term_prev)(Term_Container *tc, Term_Container *child);
|
|
||||||
Term *(*term_first)(Term_Container *tc);
|
|
||||||
Term *(*term_last)(Term_Container *tc);
|
|
||||||
Evas_Object* (*get_evas_object)(Term_Container *container);
|
|
||||||
Term *(*find_term_at_coords)(Term_Container *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 ? */
|
|
||||||
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);
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _Solo {
|
struct _Solo {
|
||||||
Term_Container tc;
|
Term_Container tc;
|
||||||
|
@ -117,11 +68,14 @@ struct _Tab_Item {
|
||||||
Term_Container *tc;
|
Term_Container *tc;
|
||||||
Elm_Object_Item *elm_item;
|
Elm_Object_Item *elm_item;
|
||||||
Elm_Object_Item *separator;
|
Elm_Object_Item *separator;
|
||||||
|
void *selector_entry;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _Tabs {
|
struct _Tabs {
|
||||||
Term_Container tc;
|
Term_Container tc;
|
||||||
Evas_Object *base;
|
Evas_Object *base;
|
||||||
|
Evas_Object *selector;
|
||||||
|
Evas_Object *selector_bg;
|
||||||
Evas_Object *tabbar;
|
Evas_Object *tabbar;
|
||||||
Evas_Object *tabbar_spacer;
|
Evas_Object *tabbar_spacer;
|
||||||
Evas_Object *selector_spacer;
|
Evas_Object *selector_spacer;
|
||||||
|
@ -162,6 +116,7 @@ struct _Win
|
||||||
};
|
};
|
||||||
|
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
static Eina_List *wins = NULL;
|
static Eina_List *wins = NULL;
|
||||||
|
|
||||||
|
|
||||||
|
@ -171,12 +126,11 @@ static Term_Container *_tabs_new(Term_Container *child, Term_Container *parent);
|
||||||
//static void _term_resize_track_start(Term *term);
|
//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 Term * _win_focused_term_get(Win *wn);
|
||||||
static Split * _split_find(Evas_Object *win, Evas_Object *term, Term **ptm);
|
//static Split * _split_find(Evas_Object *win, Evas_Object *term, Term **ptm);
|
||||||
static void _term_focus(Term *term);
|
static void _term_focus(Term *term);
|
||||||
static void term_free(Term *term);
|
static void term_free(Term *term);
|
||||||
//static void _split_free(Split *sp);
|
//static void _split_free(Split *sp);
|
||||||
//static void _sel_restore(Split *sp);
|
//static void _sel_restore(Split *sp);
|
||||||
static void _sel_go(Split *sp, Term *term);
|
|
||||||
//static void _term_resize_track_stop(Term *term);
|
//static void _term_resize_track_stop(Term *term);
|
||||||
//static void _split_merge(Split *spp, Split *sp, const char *slot);
|
//static void _split_merge(Split *spp, Split *sp, const char *slot);
|
||||||
//static void _term_focus_show(Split *sp, Term *term);
|
//static void _term_focus_show(Split *sp, Term *term);
|
||||||
|
@ -378,6 +332,8 @@ _solo_close(Term_Container *tc, Term_Container *child EINA_UNUSED,
|
||||||
{
|
{
|
||||||
tc->parent->close(tc->parent, tc, refocus);
|
tc->parent->close(tc->parent, tc, refocus);
|
||||||
|
|
||||||
|
eina_stringshare_del(tc->title);
|
||||||
|
|
||||||
free(tc);
|
free(tc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -450,6 +406,8 @@ static void
|
||||||
_solo_set_title(Term_Container *tc, Term_Container *child EINA_UNUSED,
|
_solo_set_title(Term_Container *tc, Term_Container *child EINA_UNUSED,
|
||||||
const char *title)
|
const char *title)
|
||||||
{
|
{
|
||||||
|
eina_stringshare_del(tc->title);
|
||||||
|
tc->title = eina_stringshare_add(title);
|
||||||
DBG("set title: '%s'", title);
|
DBG("set title: '%s'", title);
|
||||||
tc->parent->set_title(tc->parent, tc, title);
|
tc->parent->set_title(tc->parent, tc, title);
|
||||||
}
|
}
|
||||||
|
@ -463,10 +421,12 @@ _solo_focus(Term_Container *tc, Term_Container *relative EINA_UNUSED)
|
||||||
|
|
||||||
if (tc->parent == relative)
|
if (tc->parent == relative)
|
||||||
{
|
{
|
||||||
|
DBG("focus from parent");
|
||||||
_term_focus(solo->term);
|
_term_focus(solo->term);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
DBG("focus from child");
|
||||||
tc->parent->focus(tc->parent, tc);
|
tc->parent->focus(tc->parent, tc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -807,8 +767,10 @@ _win_swallow(Term_Container *tc, Term_Container *orig,
|
||||||
|
|
||||||
if (orig)
|
if (orig)
|
||||||
{
|
{
|
||||||
edje_object_part_unswallow(base,
|
Evas_Object *o;
|
||||||
orig->get_evas_object(orig));
|
|
||||||
|
o = edje_object_part_swallow_get(base, "terminology.content");
|
||||||
|
edje_object_part_unswallow(base, o);
|
||||||
/* TODO: hide */
|
/* TODO: hide */
|
||||||
}
|
}
|
||||||
edje_object_part_swallow(base, "terminology.content",
|
edje_object_part_swallow(base, "terminology.content",
|
||||||
|
@ -826,17 +788,19 @@ _win_close(Term_Container *tc, Term_Container *child EINA_UNUSED,
|
||||||
|
|
||||||
wn = (Win*) tc;
|
wn = (Win*) tc;
|
||||||
|
|
||||||
|
eina_stringshare_del(tc->title);
|
||||||
|
|
||||||
win_free(wn);
|
win_free(wn);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_win_focus(Term_Container *tc, Term_Container *child EINA_UNUSED)
|
_win_focus(Term_Container *tc, Term_Container *child EINA_UNUSED)
|
||||||
{
|
{
|
||||||
DBG("focus");
|
|
||||||
Win *wn;
|
Win *wn;
|
||||||
assert (tc->type == TERM_CONTAINER_TYPE_WIN);
|
assert (tc->type == TERM_CONTAINER_TYPE_WIN);
|
||||||
|
|
||||||
wn = (Win*) tc;
|
wn = (Win*) tc;
|
||||||
|
DBG("focus from child");
|
||||||
|
|
||||||
if (!wn->focused) elm_win_urgent_set(wn->win, EINA_FALSE);
|
if (!wn->focused) elm_win_urgent_set(wn->win, EINA_FALSE);
|
||||||
wn->focused = EINA_TRUE;
|
wn->focused = EINA_TRUE;
|
||||||
|
@ -852,6 +816,9 @@ _win_set_title(Term_Container *tc, Term_Container *child EINA_UNUSED,
|
||||||
|
|
||||||
wn = (Win*) tc;
|
wn = (Win*) tc;
|
||||||
|
|
||||||
|
eina_stringshare_del(tc->title);
|
||||||
|
tc->title = eina_stringshare_ref(title);
|
||||||
|
|
||||||
DBG("set title: '%s'", title);
|
DBG("set title: '%s'", title);
|
||||||
|
|
||||||
elm_win_title_set(wn->win, title);
|
elm_win_title_set(wn->win, title);
|
||||||
|
@ -1307,6 +1274,7 @@ _split_close(Term_Container *tc, Term_Container *child,
|
||||||
|
|
||||||
evas_object_del(split->panes);
|
evas_object_del(split->panes);
|
||||||
|
|
||||||
|
eina_stringshare_del(tc->title);
|
||||||
free(tc);
|
free(tc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1320,10 +1288,12 @@ _split_focus(Term_Container *tc, Term_Container *relative)
|
||||||
|
|
||||||
if (tc->parent == relative)
|
if (tc->parent == relative)
|
||||||
{
|
{
|
||||||
|
DBG("focus from parent");
|
||||||
split->last_focus->focus(split->last_focus, tc);
|
split->last_focus->focus(split->last_focus, tc);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
DBG("focus from child");
|
||||||
split->last_focus = relative;
|
split->last_focus = relative;
|
||||||
tc->parent->focus(tc->parent, tc);
|
tc->parent->focus(tc->parent, tc);
|
||||||
}
|
}
|
||||||
|
@ -1342,7 +1312,11 @@ _split_set_title(Term_Container *tc, Term_Container *child,
|
||||||
title, child, split->last_focus);
|
title, child, split->last_focus);
|
||||||
|
|
||||||
if (child == split->last_focus)
|
if (child == split->last_focus)
|
||||||
tc->parent->set_title(tc->parent, tc, title);
|
{
|
||||||
|
eina_stringshare_del(tc->title);
|
||||||
|
tc->title = eina_stringshare_ref(title);
|
||||||
|
tc->parent->set_title(tc->parent, tc, title);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static Term_Container *
|
static Term_Container *
|
||||||
|
@ -1565,13 +1539,11 @@ _split_split_find(Split *sp, Evas_Object *term, Term **ptm)
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
static Split *
|
static Split *
|
||||||
_split_find(Evas_Object *win EINA_UNUSED, Evas_Object *term EINA_UNUSED, Term **ptm EINA_UNUSED)
|
_split_find(Evas_Object *win EINA_UNUSED, Evas_Object *term EINA_UNUSED, Term **ptm EINA_UNUSED)
|
||||||
{
|
{
|
||||||
/* TODO */
|
/* TODO */
|
||||||
#if 0
|
|
||||||
Win *wn;
|
Win *wn;
|
||||||
Eina_List *l;
|
Eina_List *l;
|
||||||
|
|
||||||
|
@ -1579,11 +1551,9 @@ _split_find(Evas_Object *win EINA_UNUSED, Evas_Object *term EINA_UNUSED, Term **
|
||||||
{
|
{
|
||||||
if (wn->win == win) return _split_split_find(wn->split, term, ptm);
|
if (wn->win == win) return _split_split_find(wn->split, term, ptm);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
static void
|
static void
|
||||||
_split_free(Split *sp)
|
_split_free(Split *sp)
|
||||||
{
|
{
|
||||||
|
@ -1592,9 +1562,7 @@ _split_free(Split *sp)
|
||||||
if (sp->panes) evas_object_del(sp->panes);
|
if (sp->panes) evas_object_del(sp->panes);
|
||||||
free(sp);
|
free(sp);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
static void
|
static void
|
||||||
_split_tabcount_update(Split *sp EINA_UNUSED, Term *tm EINA_UNUSED)
|
_split_tabcount_update(Split *sp EINA_UNUSED, Term *tm EINA_UNUSED)
|
||||||
{
|
{
|
||||||
|
@ -1965,9 +1933,232 @@ _split_merge(Split *spp, Split *sp, const char *slot)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* }}} */
|
||||||
|
/* {{{ Sel */
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
static void
|
||||||
|
_sel_restore(Split *sp EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Eina_List *l;
|
||||||
|
Term *tm;
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(sp->terms, l, tm)
|
||||||
|
{
|
||||||
|
if (tm->unswallowed)
|
||||||
|
{
|
||||||
|
#if (EVAS_VERSION_MAJOR > 1) || (EVAS_VERSION_MINOR >= 8)
|
||||||
|
evas_object_image_source_visible_set(tm->sel, EINA_TRUE);
|
||||||
|
#endif
|
||||||
|
edje_object_part_swallow(tm->bg, "terminology.content", tm->base);
|
||||||
|
tm->unswallowed = EINA_FALSE;
|
||||||
|
evas_object_show(tm->base);
|
||||||
|
tm->sel = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
evas_object_del(sp->sel);
|
||||||
|
evas_object_del(sp->sel_bg);
|
||||||
|
sp->sel = NULL;
|
||||||
|
sp->sel_bg = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
/* }}} */
|
/* }}} */
|
||||||
/* {{{ Tabs */
|
/* {{{ Tabs */
|
||||||
|
|
||||||
|
static void
|
||||||
|
_tabs_restore(Tabs *tabs)
|
||||||
|
{
|
||||||
|
Eina_List *l;
|
||||||
|
Tab_Item *tab_item;
|
||||||
|
Evas_Object *o;
|
||||||
|
Term_Container *tc = (Term_Container*)tabs;
|
||||||
|
|
||||||
|
DBG("exit: %p", tabs);
|
||||||
|
if (!tabs->selector)
|
||||||
|
return;
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(tabs->tabs, l, tab_item)
|
||||||
|
{
|
||||||
|
tab_item->selector_entry = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
o = tabs->current->tc->get_evas_object(tabs->current->tc);
|
||||||
|
edje_object_part_swallow(tabs->base, "content", o);
|
||||||
|
evas_object_show(o);
|
||||||
|
evas_object_del(tabs->selector);
|
||||||
|
evas_object_del(tabs->selector_bg);
|
||||||
|
tabs->selector = NULL;
|
||||||
|
tabs->selector_bg = NULL;
|
||||||
|
tc->focus(tc, tc->parent);
|
||||||
|
|
||||||
|
elm_toolbar_item_selected_set(tabs->current->elm_item, EINA_TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_tabs_selector_cb_selected(void *data,
|
||||||
|
Evas_Object *obj EINA_UNUSED,
|
||||||
|
void *info)
|
||||||
|
{
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
if (tab_item->tc->selector_img == info)
|
||||||
|
{
|
||||||
|
tabs->current = tab_item;
|
||||||
|
_tabs_restore(tabs);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
_tabs_selector_cb_exit(void *data,
|
||||||
|
Evas_Object *obj EINA_UNUSED,
|
||||||
|
void *info EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Tabs *tabs = data;
|
||||||
|
|
||||||
|
DBG("exit: %p", tabs);
|
||||||
|
_tabs_restore(tabs);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_tabs_selector_cb_ending(void *data,
|
||||||
|
Evas_Object *obj EINA_UNUSED,
|
||||||
|
void *info EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Tabs *tabs = data;
|
||||||
|
/* TODO: boris */
|
||||||
|
DBG("ending: %p", tabs);
|
||||||
|
#if 0
|
||||||
|
Split *sp = data;
|
||||||
|
edje_object_signal_emit(sp->sel_bg, "end", "terminology");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
_cb_tab_selector_show(void *data,
|
||||||
|
Evas_Object *obj EINA_UNUSED,
|
||||||
|
const char *sig EINA_UNUSED,
|
||||||
|
const char *src EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Tabs *tabs = data;
|
||||||
|
Term_Container *tc = (Term_Container *)tabs;
|
||||||
|
Eina_List *l;
|
||||||
|
int count;
|
||||||
|
double z;
|
||||||
|
Edje_Message_Int msg;
|
||||||
|
Win *wn = tc->wn;
|
||||||
|
Tab_Item *tab_item;
|
||||||
|
Evas_Object *o;
|
||||||
|
|
||||||
|
DBG("show tabs selector: %p", tabs->selector_bg);
|
||||||
|
|
||||||
|
/* TODO: tab count off */
|
||||||
|
|
||||||
|
if (tabs->selector_bg)
|
||||||
|
return;
|
||||||
|
|
||||||
|
tabs->selector_bg = edje_object_add(evas_object_evas_get(tabs->base));
|
||||||
|
theme_apply(tabs->selector_bg, wn->config, "terminology/sel/base");
|
||||||
|
if (wn->config->translucent)
|
||||||
|
msg.val = wn->config->opacity;
|
||||||
|
else
|
||||||
|
msg.val = 100;
|
||||||
|
|
||||||
|
edje_object_message_send(tabs->selector_bg, EDJE_MESSAGE_INT, 1, &msg);
|
||||||
|
edje_object_signal_emit(tabs->selector_bg, "begin", "terminology");
|
||||||
|
|
||||||
|
tab_item = tabs->current;
|
||||||
|
o = edje_object_part_swallow_get(tabs->base, "content");
|
||||||
|
edje_object_part_unswallow(tabs->base, o);
|
||||||
|
evas_object_hide(o);
|
||||||
|
|
||||||
|
tabs->selector = sel_add(wn->win);
|
||||||
|
DBG("tabs->selector: %p", tabs->selector);
|
||||||
|
EINA_LIST_FOREACH(tabs->tabs, l, tab_item)
|
||||||
|
{
|
||||||
|
Evas_Object *img;
|
||||||
|
Evas_Coord w, h;
|
||||||
|
Eina_Bool is_selected, missed_bell;
|
||||||
|
|
||||||
|
img = evas_object_image_filled_add(evas_object_evas_get(wn->win));
|
||||||
|
o = tab_item->tc->get_evas_object(tab_item->tc);
|
||||||
|
evas_object_lower(o);
|
||||||
|
evas_object_move(o, -9999, -9999);
|
||||||
|
evas_object_show(o);
|
||||||
|
evas_object_clip_unset(o);
|
||||||
|
evas_object_image_source_set(img, o);
|
||||||
|
evas_object_geometry_get(o, NULL, NULL, &w, &h);
|
||||||
|
evas_object_resize(img, w, h);
|
||||||
|
evas_object_data_set(img, "tc", tab_item->tc);
|
||||||
|
tab_item->tc->selector_img = img;
|
||||||
|
|
||||||
|
is_selected = (tab_item == tabs->current);
|
||||||
|
missed_bell = EINA_FALSE;
|
||||||
|
tab_item->selector_entry = sel_entry_add(tabs->selector, img,
|
||||||
|
is_selected,
|
||||||
|
missed_bell, wn->config);
|
||||||
|
DBG("adding entry %p selected:%d img:%p selector_entry:%p",
|
||||||
|
tab_item, is_selected, img, tab_item->selector_entry);
|
||||||
|
}
|
||||||
|
edje_object_part_swallow(tabs->selector_bg, "terminology.content",
|
||||||
|
tabs->selector);
|
||||||
|
evas_object_show(tabs->selector);
|
||||||
|
|
||||||
|
/* XXX: reswallow in parent */
|
||||||
|
tc->parent->swallow(tc->parent, tc, tc);
|
||||||
|
evas_object_show(tabs->selector_bg);
|
||||||
|
|
||||||
|
evas_object_smart_callback_add(tabs->selector, "selected",
|
||||||
|
_tabs_selector_cb_selected, tabs);
|
||||||
|
evas_object_smart_callback_add(tabs->selector, "exit",
|
||||||
|
_tabs_selector_cb_exit, tabs);
|
||||||
|
evas_object_smart_callback_add(tabs->selector, "ending",
|
||||||
|
_tabs_selector_cb_ending, tabs);
|
||||||
|
z = 1.0;
|
||||||
|
sel_go(tabs->selector);
|
||||||
|
count = eina_list_count(tabs->tabs);
|
||||||
|
if (count >= 1)
|
||||||
|
z = 1.0 / (sqrt(count) * 0.8);
|
||||||
|
if (z > 1.0) z = 1.0;
|
||||||
|
sel_orig_zoom_set(tabs->selector, z);
|
||||||
|
sel_zoom(tabs->selector, z);
|
||||||
|
elm_object_focus_set(tabs->selector, EINA_TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static Evas_Object *
|
static Evas_Object *
|
||||||
_tabs_get_evas_object(Term_Container *container)
|
_tabs_get_evas_object(Term_Container *container)
|
||||||
{
|
{
|
||||||
|
@ -1975,6 +2166,10 @@ _tabs_get_evas_object(Term_Container *container)
|
||||||
assert (container->type == TERM_CONTAINER_TYPE_TABS);
|
assert (container->type == TERM_CONTAINER_TYPE_TABS);
|
||||||
tabs = (Tabs*)container;
|
tabs = (Tabs*)container;
|
||||||
|
|
||||||
|
DBG("evas_object: tabs->selector_bg:%p", tabs->selector_bg);
|
||||||
|
if (tabs->selector_bg)
|
||||||
|
return tabs->selector_bg;
|
||||||
|
|
||||||
return tabs->base;
|
return tabs->base;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2064,11 +2259,15 @@ _tabs_close(Term_Container *tc, Term_Container *child,
|
||||||
count = eina_list_count(tabs->tabs);
|
count = eina_list_count(tabs->tabs);
|
||||||
if (count == 1)
|
if (count == 1)
|
||||||
{
|
{
|
||||||
|
if (tabs->selector)
|
||||||
|
_tabs_restore(tabs);
|
||||||
|
|
||||||
tc->parent->close(tc->parent, tc, refocus);
|
tc->parent->close(tc->parent, tc, refocus);
|
||||||
evas_object_del(tabs->base);
|
evas_object_del(tabs->base);
|
||||||
evas_object_del(tabs->tabbar);
|
evas_object_del(tabs->tabbar);
|
||||||
evas_object_del(tabs->tabbar_spacer);
|
evas_object_del(tabs->tabbar_spacer);
|
||||||
evas_object_del(tabs->selector_spacer);
|
evas_object_del(tabs->selector_spacer);
|
||||||
|
eina_stringshare_del(tc->title);
|
||||||
free(tc);
|
free(tc);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -2095,6 +2294,16 @@ _tabs_close(Term_Container *tc, Term_Container *child,
|
||||||
tabs->current->tc->focus(tabs->current->tc, tc);
|
tabs->current->tc->focus(tabs->current->tc, tc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tab_item->tc->selector_img)
|
||||||
|
{
|
||||||
|
Evas_Object *o;
|
||||||
|
o = tab_item->tc->selector_img;
|
||||||
|
tab_item->tc->selector_img = NULL;
|
||||||
|
evas_object_del(o);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
elm_object_item_del(tab_item->elm_item);
|
elm_object_item_del(tab_item->elm_item);
|
||||||
elm_object_item_del(tab_item->separator);
|
elm_object_item_del(tab_item->separator);
|
||||||
tabs->tabs = eina_list_remove_list(tabs->tabs, l);
|
tabs->tabs = eina_list_remove_list(tabs->tabs, l);
|
||||||
|
@ -2197,9 +2406,20 @@ _tabs_swallow(Term_Container *tc, Term_Container *orig,
|
||||||
|
|
||||||
new_child->parent = tc;
|
new_child->parent = tc;
|
||||||
|
|
||||||
if (tab_item == tabs->current)
|
if (tabs->selector)
|
||||||
{
|
{
|
||||||
edje_object_part_unswallow(tabs->base, orig->get_evas_object(orig));
|
Evas_Object *img = tab_item->tc->selector_img;
|
||||||
|
evas_object_image_source_set(img,
|
||||||
|
new_child->get_evas_object(new_child));
|
||||||
|
evas_object_data_set(img, "tc", new_child);
|
||||||
|
sel_entry_update(tab_item->selector_entry);
|
||||||
|
}
|
||||||
|
else if (tab_item == tabs->current)
|
||||||
|
{
|
||||||
|
Evas_Object *o;
|
||||||
|
|
||||||
|
o = edje_object_part_swallow_get(tabs->base, "content");
|
||||||
|
edje_object_part_unswallow(tabs->base, o);
|
||||||
/* TODO: hide */
|
/* TODO: hide */
|
||||||
edje_object_part_swallow(tabs->base, "content",
|
edje_object_part_swallow(tabs->base, "content",
|
||||||
new_child->get_evas_object(new_child));
|
new_child->get_evas_object(new_child));
|
||||||
|
@ -2221,11 +2441,13 @@ _tab_selected(void *data,
|
||||||
assert (tc->type == TERM_CONTAINER_TYPE_TABS);
|
assert (tc->type == TERM_CONTAINER_TYPE_TABS);
|
||||||
tabs = (Tabs*) tc;
|
tabs = (Tabs*) tc;
|
||||||
|
|
||||||
|
if (tabs->current && tab_item == tabs->current)
|
||||||
|
return;
|
||||||
if (tabs->current)
|
if (tabs->current)
|
||||||
{
|
{
|
||||||
Evas_Object *o;
|
Evas_Object *o;
|
||||||
child = tabs->current->tc;
|
child = tabs->current->tc;
|
||||||
o = child->get_evas_object(child);
|
o = edje_object_part_swallow_get(tabs->base, "content");
|
||||||
edje_object_part_unswallow(tabs->base, o);
|
edje_object_part_unswallow(tabs->base, o);
|
||||||
evas_object_hide(o);
|
evas_object_hide(o);
|
||||||
child = tab_item->tc;
|
child = tab_item->tc;
|
||||||
|
@ -2236,8 +2458,6 @@ _tab_selected(void *data,
|
||||||
elm_toolbar_item_selected_set(tabs->current->elm_item, EINA_FALSE);
|
elm_toolbar_item_selected_set(tabs->current->elm_item, EINA_FALSE);
|
||||||
}
|
}
|
||||||
tabs->current = tab_item;
|
tabs->current = tab_item;
|
||||||
|
|
||||||
tab_item->tc->focus(tab_item->tc, tc);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static Tab_Item*
|
static Tab_Item*
|
||||||
|
@ -2368,14 +2588,17 @@ _tabs_focus(Term_Container *tc, Term_Container *relative)
|
||||||
assert (tc->type == TERM_CONTAINER_TYPE_TABS);
|
assert (tc->type == TERM_CONTAINER_TYPE_TABS);
|
||||||
tabs = (Tabs*) tc;
|
tabs = (Tabs*) tc;
|
||||||
|
|
||||||
|
|
||||||
if (tc->parent == relative)
|
if (tc->parent == relative)
|
||||||
{
|
{
|
||||||
|
DBG("focus from parent");
|
||||||
tabs->current->tc->focus(tabs->current->tc, tc);
|
tabs->current->tc->focus(tabs->current->tc, tc);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Eina_List *l;
|
Eina_List *l;
|
||||||
Tab_Item *tab_item;
|
Tab_Item *tab_item;
|
||||||
|
DBG("focus from child");
|
||||||
|
|
||||||
l = _tab_item_find(tabs, relative);
|
l = _tab_item_find(tabs, relative);
|
||||||
assert(l);
|
assert(l);
|
||||||
|
@ -2407,8 +2630,17 @@ _tabs_set_title(Term_Container *tc, Term_Container *child,
|
||||||
DBG("set title: '%s' child:%p current->tc:%p",
|
DBG("set title: '%s' child:%p current->tc:%p",
|
||||||
title, child, tabs->current->tc);
|
title, child, tabs->current->tc);
|
||||||
|
|
||||||
|
if (tabs->selector)
|
||||||
|
{
|
||||||
|
sel_entry_title_set(tab_item->selector_entry, title);
|
||||||
|
}
|
||||||
|
|
||||||
if (tab_item == tabs->current)
|
if (tab_item == tabs->current)
|
||||||
tc->parent->set_title(tc->parent, tc, title);
|
{
|
||||||
|
eina_stringshare_del(tc->title);
|
||||||
|
tc->title = eina_stringshare_ref(title);
|
||||||
|
tc->parent->set_title(tc->parent, tc, title);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static Term_Container *
|
static Term_Container *
|
||||||
|
@ -2480,6 +2712,8 @@ _tabs_new(Term_Container *child, Term_Container *parent)
|
||||||
|
|
||||||
edje_object_signal_callback_add(tabs->base, "tabbar,show", "terminology",
|
edje_object_signal_callback_add(tabs->base, "tabbar,show", "terminology",
|
||||||
_cb_tabbar_show, tabs);
|
_cb_tabbar_show, tabs);
|
||||||
|
edje_object_signal_callback_add(tabs->base, "tabselector,show", "terminology",
|
||||||
|
_cb_tab_selector_show, tabs);
|
||||||
|
|
||||||
|
|
||||||
return tc;
|
return tc;
|
||||||
|
@ -2554,6 +2788,8 @@ _term_focus(Term *term)
|
||||||
Term *term2;
|
Term *term2;
|
||||||
const char *title;
|
const char *title;
|
||||||
|
|
||||||
|
DBG("term focus");
|
||||||
|
|
||||||
EINA_LIST_FOREACH(term->wn->terms, l, term2)
|
EINA_LIST_FOREACH(term->wn->terms, l, term2)
|
||||||
{
|
{
|
||||||
if (term2 != term)
|
if (term2 != term)
|
||||||
|
@ -2943,16 +3179,6 @@ _cb_command(void *data, Evas_Object *obj EINA_UNUSED, void *event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
_cb_tabcount_go(void *data, Evas_Object *obj EINA_UNUSED, const char *sig EINA_UNUSED, const char *src EINA_UNUSED)
|
|
||||||
{
|
|
||||||
Term *term = data;
|
|
||||||
Split *sp;
|
|
||||||
|
|
||||||
sp = _split_find(term->wn->win, term->termio, NULL);
|
|
||||||
_sel_go(sp, term);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_cb_prev(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
|
_cb_prev(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
|
||||||
{
|
{
|
||||||
|
@ -3465,9 +3691,7 @@ main_term_bg_config(Term *term)
|
||||||
|
|
||||||
termio_theme_set(term->termio, term->bg);
|
termio_theme_set(term->termio, term->bg);
|
||||||
edje_object_signal_callback_add(term->bg, "popmedia,done", "terminology",
|
edje_object_signal_callback_add(term->bg, "popmedia,done", "terminology",
|
||||||
_cb_popmedia_done, term);
|
_cb_popmedia_done, term);
|
||||||
edje_object_signal_callback_add(term->bg, "tabcount,go", "terminology",
|
|
||||||
_cb_tabcount_go, term);
|
|
||||||
edje_object_signal_callback_add(term->bg, "tabcount,prev", "terminology",
|
edje_object_signal_callback_add(term->bg, "tabcount,prev", "terminology",
|
||||||
_cb_tabcount_prev, term);
|
_cb_tabcount_prev, term);
|
||||||
edje_object_signal_callback_add(term->bg, "tabcount,next", "terminology",
|
edje_object_signal_callback_add(term->bg, "tabcount,next", "terminology",
|
||||||
|
@ -3764,8 +3988,6 @@ term_new(Win *wn, Config *config, const char *cmd,
|
||||||
|
|
||||||
edje_object_signal_callback_add(term->bg, "popmedia,done", "terminology",
|
edje_object_signal_callback_add(term->bg, "popmedia,done", "terminology",
|
||||||
_cb_popmedia_done, term);
|
_cb_popmedia_done, term);
|
||||||
edje_object_signal_callback_add(term->bg, "tabcount,go", "terminology",
|
|
||||||
_cb_tabcount_go, term);
|
|
||||||
edje_object_signal_callback_add(term->bg, "tabcount,prev", "terminology",
|
edje_object_signal_callback_add(term->bg, "tabcount,prev", "terminology",
|
||||||
_cb_tabcount_prev, term);
|
_cb_tabcount_prev, term);
|
||||||
edje_object_signal_callback_add(term->bg, "tabcount,next", "terminology",
|
edje_object_signal_callback_add(term->bg, "tabcount,next", "terminology",
|
||||||
|
@ -3820,6 +4042,19 @@ term_new(Win *wn, Config *config, const char *cmd,
|
||||||
|
|
||||||
|
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
|
void
|
||||||
|
windows_free(void)
|
||||||
|
{
|
||||||
|
Win *wn;
|
||||||
|
|
||||||
|
while (wins)
|
||||||
|
{
|
||||||
|
wn = eina_list_data_get(wins);
|
||||||
|
win_free(wn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* {{{ Sel */
|
/* {{{ Sel */
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -3893,12 +4128,10 @@ _sel_cb_ending(void *data, Evas_Object *obj EINA_UNUSED, void *info EINA_UNUSED)
|
||||||
Split *sp = data;
|
Split *sp = data;
|
||||||
edje_object_signal_emit(sp->sel_bg, "end", "terminology");
|
edje_object_signal_emit(sp->sel_bg, "end", "terminology");
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_sel_go(Split *sp EINA_UNUSED, Term *term EINA_UNUSED)
|
_sel_go(Split *sp EINA_UNUSED, Term *term EINA_UNUSED)
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
Eina_List *l;
|
Eina_List *l;
|
||||||
Term *tm;
|
Term *tm;
|
||||||
double z;
|
double z;
|
||||||
|
@ -3935,7 +4168,7 @@ _sel_go(Split *sp EINA_UNUSED, Term *term EINA_UNUSED)
|
||||||
evas_object_resize(img, w, h);
|
evas_object_resize(img, w, h);
|
||||||
evas_object_data_set(img, "termio", tm->term);
|
evas_object_data_set(img, "termio", tm->term);
|
||||||
tm->sel = img;
|
tm->sel = img;
|
||||||
|
|
||||||
sel_entry_add(sp->sel, tm->sel, (tm == sp->term),
|
sel_entry_add(sp->sel, tm->sel, (tm == sp->term),
|
||||||
tm->missed_bell, tm->config);
|
tm->missed_bell, tm->config);
|
||||||
}
|
}
|
||||||
|
@ -3975,19 +4208,7 @@ _sel_go(Split *sp EINA_UNUSED, Term *term EINA_UNUSED)
|
||||||
sel_exit(sp->sel);
|
sel_exit(sp->sel);
|
||||||
}
|
}
|
||||||
elm_object_focus_set(sp->sel, EINA_TRUE);
|
elm_object_focus_set(sp->sel, EINA_TRUE);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
void
|
|
||||||
windows_free(void)
|
|
||||||
{
|
|
||||||
Win *wn;
|
|
||||||
|
|
||||||
while (wins)
|
|
||||||
{
|
|
||||||
wn = eina_list_data_get(wins);
|
|
||||||
win_free(wn);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -2,11 +2,7 @@
|
||||||
#define _WIN_H__ 1
|
#define _WIN_H__ 1
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
#include "term_container.h"
|
||||||
typedef struct _Win Win;
|
|
||||||
typedef struct _Term Term;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Eina_Bool main_term_popup_exists(const Term *term);
|
Eina_Bool main_term_popup_exists(const Term *term);
|
||||||
void main_term_focus(Term *term);
|
void main_term_focus(Term *term);
|
||||||
|
|
Loading…
Reference in New Issue