From 804d14cef36c0af453915d866b95b24c969f9c11 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Mon, 24 Jul 2017 18:27:45 +0100 Subject: [PATCH] panels: Track focus of editors when we're changing panel --- src/bin/editor/edi_editor.c | 13 +++++++++++++ src/bin/mainview/edi_mainview_panel.c | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/bin/editor/edi_editor.c b/src/bin/editor/edi_editor.c index 07452aa..d9fb404 100644 --- a/src/bin/editor/edi_editor.c +++ b/src/bin/editor/edi_editor.c @@ -961,6 +961,18 @@ _edi_clang_dispose(void *data, Ecore_Thread *thread EINA_UNUSED) } #endif +static void +_focused_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Edi_Mainview_Panel *panel; + Edi_Mainview_Item *item; + + item = (Edi_Mainview_Item *)data; + panel = edi_mainview_panel_for_item_get(item); + + edi_mainview_panel_focus(panel); +} + static void _unfocused_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { @@ -1115,6 +1127,7 @@ edi_editor_add(Evas_Object *parent, Edi_Mainview_Item *item) _smart_cb_key_down, editor); evas_object_smart_callback_add(widget, "changed,user", _changed_cb, editor); evas_object_event_callback_add(widget, EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb, editor); + evas_object_smart_callback_add(widget, "focused", _focused_cb, item); evas_object_smart_callback_add(widget, "unfocused", _unfocused_cb, editor); elm_code_parser_standard_add(code, ELM_CODE_PARSER_STANDARD_TODO); diff --git a/src/bin/mainview/edi_mainview_panel.c b/src/bin/mainview/edi_mainview_panel.c index e558d32..f97d2a5 100644 --- a/src/bin/mainview/edi_mainview_panel.c +++ b/src/bin/mainview/edi_mainview_panel.c @@ -245,6 +245,7 @@ edi_mainview_panel_item_select(Edi_Mainview_Panel *panel, Edi_Mainview_Item *ite _edi_project_config_save_no_notify(); } + edi_mainview_panel_focus(panel); ecore_event_add(EDI_EVENT_TAB_CHANGED, NULL, NULL, NULL); } @@ -255,7 +256,6 @@ _promote(void *data, Evas_Object *obj EINA_UNUSED, Edi_Mainview_Panel *panel; panel = edi_mainview_panel_for_item_get((Edi_Mainview_Item *)data); - edi_mainview_panel_focus(panel); edi_mainview_panel_item_select(panel, (Edi_Mainview_Item *)data); }