raster pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=e912e0a087e545b5c0fc71c7a3546a6c8efdfde1

commit e912e0a087e545b5c0fc71c7a3546a6c8efdfde1
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Wed May 8 15:09:27 2019 +0100

    efm - fix always new window mode to put dir inline from favorites select
    
    when u select something from the favorites on the left it should
    always affect the content of the current window, not open a new one -
    this would happen if u switch mode to open new windows from the default.
    
    this fixes that.
---
 src/modules/fileman/e_fwin.c | 36 +++++++++++++++++++++++++++---------
 1 file changed, 27 insertions(+), 9 deletions(-)

diff --git a/src/modules/fileman/e_fwin.c b/src/modules/fileman/e_fwin.c
index 4fc565dcb..25fabd2e2 100644
--- a/src/modules/fileman/e_fwin.c
+++ b/src/modules/fileman/e_fwin.c
@@ -99,13 +99,21 @@ typedef enum
    E_FWIN_EXEC_DESKTOP
 } E_Fwin_Exec_Type;
 
+typedef enum
+{
+   E_FWIN_WIN_AUTO,
+   E_FWIN_WIN_FORCE_INLINE,
+   E_FWIN_WIN_FORCE_WIN
+} E_Fwin_Win_Mode;
+
+
 /* local subsystem prototypes */
 static int _e_fwin_cb_dir_handler_test(void *data EINA_UNUSED, Evas_Object 
*obj EINA_UNUSED, const char *path);
 static void _e_fwin_cb_dir_handler(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, const char *path);
 static void _e_fwin_page_favorites_add(E_Fwin_Page *page);
 static void _e_fwin_icon_mouse_out(void *data, Evas_Object *obj EINA_UNUSED, 
void *event_info);
 static void _e_fwin_icon_mouse_in(void *data, Evas_Object *obj EINA_UNUSED, 
void *event_info);
-static E_Fwin *_e_fwin_open(E_Fwin_Page *page, E_Fm2_Icon_Info *ici, Eina_Bool 
force, int *need_dia);
+static E_Fwin *_e_fwin_open(E_Fwin_Page *page, E_Fm2_Icon_Info *ici, 
E_Fwin_Win_Mode win_mode, int *need_dia);
 static E_Fwin          *_e_fwin_new(const char *dev, const char *path);
 static void             _e_fwin_free(E_Fwin *fwin);
 static E_Fwin_Page     *_e_fwin_page_create(E_Fwin *fwin);
@@ -313,7 +321,7 @@ _e_fwin_spring_cb(E_Fwin *fwin)
    while (ici)
      {
         /* FIXME: could use an animation here */
-        f = _e_fwin_open(fwin->cur_page, ici, EINA_TRUE, NULL);
+        f = _e_fwin_open(fwin->cur_page, ici, E_FWIN_WIN_FORCE_WIN, NULL);
         if (!f) break;
         f->spring_parent = fwin;
         fwin->spring_child = f;
@@ -1878,7 +1886,7 @@ _e_fwin_favorite_selected(void *data,
    selected = e_fm2_selected_list_get(page->flist);
    if (!selected) return;
    page->setting = 1;
-   _e_fwin_file_open_dialog(page, selected, 0);
+   _e_fwin_file_open_dialog(page, selected, -1);
    eina_list_free(selected);
    page->setting = 0;
 }
@@ -2367,13 +2375,16 @@ _e_fwin_border_set(E_Fwin_Page *page, E_Fwin *fwin, 
E_Fm2_Icon_Info *ici)
 }
 
 static E_Fwin *
-_e_fwin_open(E_Fwin_Page *page, E_Fm2_Icon_Info *ici, Eina_Bool force, int 
*need_dia)
+_e_fwin_open(E_Fwin_Page *page, E_Fm2_Icon_Info *ici, E_Fwin_Win_Mode 
win_mode, int *need_dia)
 {
    E_Fwin *fwin = NULL;
    char buf[PATH_MAX + sizeof("removable:")];
    Eina_Bool new_fwin;
 
-   new_fwin = (force || ((!fileman_config->view.open_dirs_in_place || 
page->fwin->zone)));
+   new_fwin =
+     ((win_mode == E_FWIN_WIN_FORCE_WIN) ||
+      ((!fileman_config->view.open_dirs_in_place ||
+        page->fwin->zone))) && (win_mode != E_FWIN_WIN_FORCE_INLINE);
 
    if ((ici->link) && (ici->mount))
      {
@@ -2493,14 +2504,21 @@ _e_fwin_file_open_dialog(E_Fwin_Page *page,
         e_object_del(E_OBJECT(fwin->fad->dia));
         fwin->fad = NULL;
      }
-   if (!always)
+   if ((!always) || (always == -1))
      {
-        if ((fileman_config->view.open_dirs_in_place) && (!page->fwin->zone))
-          _e_fwin_open(page, eina_list_data_get(files), EINA_FALSE, &need_dia);
+        if (((fileman_config->view.open_dirs_in_place) && (!page->fwin->zone)) 
||
+            (always == -1))
+          {
+             _e_fwin_open(page, eina_list_data_get(files),
+                          (always == -1) ?
+                          E_FWIN_WIN_FORCE_INLINE :
+                          E_FWIN_WIN_AUTO,
+                          &need_dia);
+          }
         else
           {
              EINA_LIST_FOREACH(files, l, ici)
-               _e_fwin_open(page, ici, EINA_FALSE, &need_dia);
+               _e_fwin_open(page, ici, E_FWIN_WIN_AUTO, &need_dia);
           }
         if (!need_dia) return;
      }

-- 


Reply via email to