diff --git a/src/bin/e_widget_filepreview.c b/src/bin/e_widget_filepreview.c index aba1cadf2..5156a1554 100644 --- a/src/bin/e_widget_filepreview.c +++ b/src/bin/e_widget_filepreview.c @@ -294,6 +294,37 @@ _e_wid_fprev_preview_reset(E_Widget_Data *wd) 1, 1, 0.5); } + +static void +_e_wid_cb_selected(void *data, Evas_Object *obj, void *event __UNUSED__) +{ + evas_object_smart_callback_call(data, "selected", obj); +} + +static void +_e_wid_cb_selection_change(void *data, Evas_Object *obj, void *event __UNUSED__) +{ + evas_object_smart_callback_call(data, "selection_change", obj); +} + +static void +_e_wid_cb_dir_changed(void *data, Evas_Object *obj, void *event __UNUSED__) +{ + evas_object_smart_callback_call(data, "dir_changed", obj); +} + +static void +_e_wid_cb_changed(void *data, Evas_Object *obj, void *event __UNUSED__) +{ + evas_object_smart_callback_call(data, "changed", obj); +} + +static void +_e_wid_cb_file_deleted(void *data, Evas_Object *obj, void *event __UNUSED__) +{ + evas_object_smart_callback_call(data, "files_deleted", obj); +} + static void _e_wid_fprev_preview_fm(E_Widget_Data *wd) { @@ -320,7 +351,7 @@ _e_wid_fprev_preview_fm(E_Widget_Data *wd) fmc.view.mode = E_FM2_VIEW_MODE_LIST; fmc.view.open_dirs_in_place = 1; fmc.view.selector = 1; - fmc.view.single_click = 1; + fmc.view.single_click = 0; fmc.view.no_subdir_jump = 1; fmc.view.no_subdir_drop = 1; fmc.view.link_drop = 1; @@ -329,8 +360,20 @@ _e_wid_fprev_preview_fm(E_Widget_Data *wd) fmc.icon.fixed.w = 1; fmc.icon.fixed.h = 1; fmc.list.sort.no_case = 1; + fmc.view.no_click_rename = 1; fmc.selection.single = 1; e_fm2_config_set(o, &fmc); + e_fm2_icon_menu_flags_set(o, E_FM2_MENU_NO_VIEW_MENU); + evas_object_smart_callback_add(o, "dir_changed", + _e_wid_cb_dir_changed, wd->obj); + evas_object_smart_callback_add(o, "selection_change", + _e_wid_cb_selection_change, wd->obj); + evas_object_smart_callback_add(o, "changed", + _e_wid_cb_changed, wd->obj); + evas_object_smart_callback_add(o, "files_deleted", + _e_wid_cb_file_deleted, wd->obj); + evas_object_smart_callback_add(o, "selected", + _e_wid_cb_selected, wd->obj); o = e_widget_scrollframe_pan_add(evas, wd->o_preview_preview, e_fm2_pan_set, e_fm2_pan_get, diff --git a/src/bin/e_widget_fsel.c b/src/bin/e_widget_fsel.c index fccd65962..aaf7d44ff 100644 --- a/src/bin/e_widget_fsel.c +++ b/src/bin/e_widget_fsel.c @@ -229,6 +229,29 @@ _e_wid_fsel_files_selection_change(void *data, Evas_Object *obj __UNUSED__, void if (wd->chg_func) wd->chg_func(wd->chg_data, wd->obj); } +static void +_e_wid_fsel_preview_file_selected(void *data, Evas_Object *obj __UNUSED__, void *event_info) +{ + E_Widget_Data *wd; + Eina_List *l; + E_Fm2_Icon_Info *ici; + const char *path, *dev, *newpath; + + wd = data; + l = e_fm2_selected_list_get(event_info); + if (!l) return; + ici = eina_list_data_get(l); + if (S_ISDIR(ici->statinfo.st_mode)) + { + e_fm2_path_get(event_info, &dev, &path); + newpath = eina_stringshare_printf("%s/%s", path, ici->file); + e_fm2_path_set(wd->o_files_fm, dev, newpath); + eina_stringshare_del(newpath); + return; + } + if (wd->sel_func) wd->sel_func(wd->sel_data, wd->obj); +} + static void _e_wid_fsel_files_selected(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { @@ -300,6 +323,8 @@ e_widget_fsel_add(Evas *evas, const char *dev, const char *path, char *selected, wd->o_preview_frame = e_widget_framelist_add(evas, _("Preview"), 0); wd->o_preview = e_widget_filepreview_add(evas, 128, 128, 0); e_widget_framelist_object_append(wd->o_preview_frame, wd->o_preview); + evas_object_smart_callback_add(wd->o_preview, "selected", + _e_wid_fsel_preview_file_selected, wd); } o = e_fm2_add(evas); @@ -363,6 +388,7 @@ e_widget_fsel_add(Evas *evas, const char *dev, const char *path, char *selected, fmc.list.sort.dirs.last = 0; fmc.selection.single = 1; fmc.selection.windows_modifiers = 0; + fmc.view.no_click_rename = 1; e_fm2_config_set(o, &fmc); e_fm2_icon_menu_flags_set(o, E_FM2_MENU_NO_VIEW_MENU); evas_object_smart_callback_add(o, "dir_changed",