billiob pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=bac8e078c79c86f856c0a303ca3d1724467d4553
commit bac8e078c79c86f856c0a303ca3d1724467d4553 Author: Boris Faure <bill...@gmail.com> Date: Tue Jun 2 23:11:16 2015 +0200 add some debug to fix focus issues --- src/bin/win.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 54 insertions(+), 2 deletions(-) diff --git a/src/bin/win.c b/src/bin/win.c index 2bfea24..941e954 100644 --- a/src/bin/win.c +++ b/src/bin/win.c @@ -15,6 +15,21 @@ #include "controls.h" #include "term_container.h" +/* specific log domain to help debug only terminal code parser */ +int _win_log_dom = -1; + +#undef CRITICAL +#undef ERR +#undef WRN +#undef INF +#undef DBG + +#define CRITICAL(...) EINA_LOG_DOM_CRIT(_win_log_dom, __VA_ARGS__) +#define ERR(...) EINA_LOG_DOM_ERR(_win_log_dom, __VA_ARGS__) +#define WRN(...) EINA_LOG_DOM_WARN(_win_log_dom, __VA_ARGS__) +#define INF(...) EINA_LOG_DOM_INFO(_win_log_dom, __VA_ARGS__) +#define DBG(...) EINA_LOG_DOM_DBG(_win_log_dom, __VA_ARGS__) + #if (ELM_VERSION_MAJOR == 1) && (ELM_VERSION_MINOR < 8) #define PANES_TOP "left" #define PANES_BOTTOM "right" @@ -303,6 +318,8 @@ _solo_unfocus(Term_Container *tc, Term_Container *relative) solo = (Solo*) tc; term = solo->term; + DBG("tc:%p tc->is_focused:%d from_parent:%d", + tc, tc->is_focused, tc->parent == relative); if (!tc->is_focused) return; @@ -329,6 +346,8 @@ _solo_focus(Term_Container *tc, Term_Container *relative) solo = (Solo*) tc; term = solo->term; + DBG("tc:%p tc->is_focused:%d from_parent:%d", + tc, tc->is_focused, tc->parent == relative); if (tc->is_focused) return; @@ -411,6 +430,8 @@ _cb_win_focus_in(void *data, Term_Container *tc = (Term_Container*) wn; Term *term; + DBG("tc:%p tc->is_focused:%d", + tc, tc->is_focused); if (!tc->is_focused) elm_win_urgent_set(wn->win, EINA_FALSE); tc->is_focused = EINA_TRUE; @@ -452,6 +473,8 @@ _cb_win_focus_out(void *data, Evas_Object *obj EINA_UNUSED, Win *wn = data; Term_Container *tc = (Term_Container*) wn; + DBG("tc:%p tc->is_focused:%d", + tc, tc->is_focused); tc->unfocus(tc, NULL); } @@ -465,6 +488,8 @@ _win_is_focused(Win *wn) tc = (Term_Container*) wn; + DBG("tc:%p tc->is_focused:%d", + tc, tc->is_focused); return tc->is_focused; } @@ -795,13 +820,15 @@ _win_close(Term_Container *tc, Term_Container *child EINA_UNUSED) } static void -_win_focus(Term_Container *tc, Term_Container *child) +_win_focus(Term_Container *tc, Term_Container *relative) { Win *wn; assert (tc->type == TERM_CONTAINER_TYPE_WIN); wn = (Win*) tc; - if (child != wn->child) + DBG("tc:%p tc->is_focused:%d from_child:%d", + tc, tc->is_focused, wn->child == relative); + if (relative != wn->child) wn->child->focus(wn->child, tc); if (!tc->is_focused) elm_win_urgent_set(wn->win, EINA_FALSE); @@ -816,6 +843,8 @@ _win_unfocus(Term_Container *tc, Term_Container *relative) wn = (Win*) tc; + DBG("tc:%p tc->is_focused:%d from_child:%d", + tc, tc->is_focused, wn->child == relative); if (relative != wn->child) { tc->is_focused = EINA_FALSE; @@ -1260,6 +1289,8 @@ _split_focus(Term_Container *tc, Term_Container *relative) assert (tc->type == TERM_CONTAINER_TYPE_SPLIT); split = (Split*) tc; + DBG("tc:%p tc->is_focused:%d from_parent:%d", + tc, tc->is_focused, tc->parent == relative); if (tc->parent == relative) { tc->is_focused = EINA_TRUE; @@ -1283,6 +1314,8 @@ _split_unfocus(Term_Container *tc, Term_Container *relative) assert (tc->type == TERM_CONTAINER_TYPE_SPLIT); split = (Split*) tc; + DBG("tc:%p tc->is_focused:%d from_parent:%d", + tc, tc->is_focused, tc->parent == relative); if (!tc->is_focused) return; @@ -2276,6 +2309,8 @@ _tabs_focus(Term_Container *tc, Term_Container *relative) assert (tc->type == TERM_CONTAINER_TYPE_TABS); tabs = (Tabs*) tc; + DBG("tc:%p tc->is_focused:%d from_parent:%d", + tc, tc->is_focused, tc->parent == relative); if (tc->parent == relative) { if (!tc->is_focused) @@ -2317,6 +2352,8 @@ _tabs_unfocus(Term_Container *tc, Term_Container *relative) { Tabs *tabs; + DBG("tc:%p tc->is_focused:%d from_parent:%d", + tc, tc->is_focused, tc->parent == relative); if (!tc->is_focused) return; @@ -2634,6 +2671,7 @@ _term_is_focused(Term *term) if (!tc) return EINA_FALSE; + DBG("tc:%p tc->is_focused:%d", tc, tc->is_focused); return tc->is_focused; } @@ -2671,6 +2709,7 @@ _term_focus(Term *term) return; tc = term->container; + DBG("tc:%p", tc); tc->focus(tc, tc); } @@ -2683,6 +2722,7 @@ term_unfocus(Term *term) return; tc = term->container; + DBG("tc:%p", tc); tc->unfocus(tc, tc); } @@ -3797,6 +3837,7 @@ _cb_options_done(void *data) return; } } + DBG("tc:%p", tc); tc->focus(tc, tc); } @@ -3859,6 +3900,12 @@ term_new(Win *wn, Config *config, const char *cmd, if (!config) abort(); /* TODO: clean up that */ + if (_win_log_dom < 0) + { + _win_log_dom = eina_log_domain_register("win", NULL); + if (_win_log_dom < 0) + EINA_LOG_CRIT("Could not create logging domain '%s'.", "win"); + } termpty_init(); miniview_init(); gravatar_init(); @@ -3983,6 +4030,11 @@ windows_free(void) wn = eina_list_data_get(wins); win_free(wn); } + + /* TODO: ugly */ + if (_win_log_dom < 0) return; + eina_log_domain_unregister(_win_log_dom); + _win_log_dom = -1; } void --