diff --git a/src/bin/editor/edi_editor.h b/src/bin/editor/edi_editor.h index b0ab5ab..3377d18 100644 --- a/src/bin/editor/edi_editor.h +++ b/src/bin/editor/edi_editor.h @@ -50,6 +50,7 @@ struct _Edi_Editor Edi_Editor_Search *search; Eina_Bool modified; Ecore_Timer *save_timer; + Eina_List *split_views; #if HAVE_LIBCLANG /* Clang */ diff --git a/src/bin/mainview/edi_mainview.c b/src/bin/mainview/edi_mainview.c index 6d1d86e..9777d7c 100644 --- a/src/bin/mainview/edi_mainview.c +++ b/src/bin/mainview/edi_mainview.c @@ -280,21 +280,6 @@ edi_mainview_open_path(const char *path) edi_mainview_panel_open_path(_current_panel, path); } -static void -_focused_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Elm_Code *code; - const char *path; - Edi_Mainview_Panel *panel; - Edi_Editor *editor = data; - - code = elm_code_widget_code_get(editor->entry); - path = elm_code_file_path_get(code->file); - panel = edi_mainview_panel_for_path_get(path); - - edi_mainview_panel_focus(panel); -} - static void _changed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { @@ -329,13 +314,14 @@ void edi_mainview_split_current(void) elm_code_widget_editable_set(widget, EINA_TRUE); elm_code_widget_line_numbers_set(widget, EINA_TRUE); evas_object_smart_callback_add(widget, "changed,user", _changed_cb, editor); - evas_object_smart_callback_add(widget, "focused", _focused_cb, editor); edi_editor_widget_config_get(widget); evas_object_size_hint_weight_set(widget, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(widget, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_show(widget); elm_box_pack_start(panel->current->container, widget); + + editor->split_views = eina_list_append(editor->split_views, widget); } void diff --git a/src/bin/mainview/edi_mainview_panel.c b/src/bin/mainview/edi_mainview_panel.c index 9d865a7..b9a19f4 100644 --- a/src/bin/mainview/edi_mainview_panel.c +++ b/src/bin/mainview/edi_mainview_panel.c @@ -401,11 +401,23 @@ _closetab(void *data, Evas_Object *obj EINA_UNUSED, Edi_Mainview_Panel *panel; Edi_Mainview_Item *item; Edi_Mainview_State *last; + Edi_Editor *editor; int index; item = (Edi_Mainview_Item *) data; - panel = edi_mainview_panel_for_item_get(item); + + editor = (Edi_Editor *) evas_object_data_get(panel->current->view, "editor"); + if (editor && eina_list_count(editor->split_views)) + { + Elm_Code_Widget *widget = eina_list_nth(editor->split_views, 0); + elm_box_unpack(panel->current->container, widget); + editor->split_views = eina_list_remove(editor->split_views, widget); + evas_object_del(widget); + + return; + } + edi_mainview_panel_item_close(panel, item); if (eina_list_count(panel->items)== 0 && edi_mainview_panel_count() > 1) {