From 7f1dfbb26eced888719d262c1d5dd606cf11c201 Mon Sep 17 00:00:00 2001 From: Al Poole Date: Fri, 1 Sep 2017 20:16:19 +0100 Subject: [PATCH] filepanel: add method to select by path and select upon tab promotion. When a file is focussed in it's panel and tab the file is also selected in the filepanel. Another visual indicator of current focus and synchronises behaviour of tab selection and filepanel selection. --- src/bin/edi_filepanel.c | 12 ++++++++++++ src/bin/edi_filepanel.h | 1 + src/bin/mainview/edi_mainview_panel.c | 6 +++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/bin/edi_filepanel.c b/src/bin/edi_filepanel.c index 66c59a1..5cda342 100644 --- a/src/bin/edi_filepanel.c +++ b/src/bin/edi_filepanel.c @@ -781,6 +781,18 @@ _filter_key_down_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) elm_genlist_filter_set(tree, (void *)strdup(match)); } +void +edi_filepanel_select_path(const char *path) +{ + Elm_Object_Item *item; + + item = _file_listing_item_find(path); + if (!item) + return; + + elm_genlist_item_selected_set(item, EINA_TRUE); +} + void edi_filepanel_search() { diff --git a/src/bin/edi_filepanel.h b/src/bin/edi_filepanel.h index ef689dc..b15b7c4 100644 --- a/src/bin/edi_filepanel.h +++ b/src/bin/edi_filepanel.h @@ -41,6 +41,7 @@ void edi_filepanel_add(Evas_Object *parent, Evas_Object *win, const char *edi_filepanel_selected_path_get(Evas_Object *obj); +void edi_filepanel_select_path(const char *path); void edi_filepanel_search(); /** diff --git a/src/bin/mainview/edi_mainview_panel.c b/src/bin/mainview/edi_mainview_panel.c index 1e585bf..e4e5ea1 100644 --- a/src/bin/mainview/edi_mainview_panel.c +++ b/src/bin/mainview/edi_mainview_panel.c @@ -12,6 +12,7 @@ #include "mainview/edi_mainview_panel.h" #include "mainview/edi_mainview.h" +#include "edi_filepanel.h" #include "editor/edi_editor.h" #include "edi_content_provider.h" @@ -268,8 +269,9 @@ _promote(void *data, Evas_Object *obj EINA_UNUSED, { Edi_Mainview_Panel *panel; Edi_Editor *editor; + Edi_Mainview_Item *item = (Edi_Mainview_Item *) data; - panel = edi_mainview_panel_for_item_get((Edi_Mainview_Item *)data); + panel = edi_mainview_panel_for_item_get((Edi_Mainview_Item *)item); edi_mainview_panel_focus(panel); @@ -281,6 +283,8 @@ _promote(void *data, Evas_Object *obj EINA_UNUSED, editor = (Edi_Editor *)evas_object_data_get(panel->current->view, "editor"); if (editor) elm_object_focus_set(editor->entry, EINA_TRUE); + + edi_filepanel_select_path(item->path); } static void