diff --git a/src/modules/fileman/e_fwin.c b/src/modules/fileman/e_fwin.c index dc7e6a943..f10ad297e 100644 --- a/src/modules/fileman/e_fwin.c +++ b/src/modules/fileman/e_fwin.c @@ -343,6 +343,7 @@ e_fwin_zone_new(E_Zone *zone, * to specify the .edj files to get the list and icon theme stuff from */ evas_object_data_set(page->fm_obj, "fm_page", page); + evas_object_data_set(page->fm_obj, "page_is_zone", page); e_scrollframe_extern_pan_set(o, page->fm_obj, _e_fwin_pan_set, _e_fwin_pan_get, @@ -1285,7 +1286,7 @@ _e_fwin_config_set(E_Fwin_Page *page) fmc.icon.fixed.w = 0; fmc.icon.fixed.h = 0; #endif - fmc.view.no_typebuf_set = 1; + fmc.view.no_typebuf_set = !fileman_config->view.desktop_navigation; fmc.view.open_dirs_in_place = 0; fmc.view.fit_custom_pos = 1; } diff --git a/src/modules/fileman/e_mod_config.c b/src/modules/fileman/e_mod_config.c index 9786e0046..6c43f7cd2 100644 --- a/src/modules/fileman/e_mod_config.c +++ b/src/modules/fileman/e_mod_config.c @@ -21,6 +21,7 @@ struct _E_Config_Dialog_Data int show_desktop_icons; int show_toolbar; int show_sidebar; + int desktop_navigation; int menu_shows_files; } view; struct @@ -133,6 +134,7 @@ _fill_data(E_Config_Dialog_Data *cfdata) cfdata->view.show_desktop_icons = fileman_config->view.show_desktop_icons; cfdata->view.show_toolbar = fileman_config->view.show_toolbar; cfdata->view.show_sidebar = fileman_config->view.show_sidebar; + cfdata->view.desktop_navigation = fileman_config->view.desktop_navigation; cfdata->view.menu_shows_files = fileman_config->view.menu_shows_files; cfdata->icon.icon.w = fileman_config->icon.icon.w; cfdata->icon.icon.h = fileman_config->icon.icon.h; @@ -166,6 +168,7 @@ _basic_apply(E_Config_Dialog *cfd __UNUSED__, fileman_config->view.show_desktop_icons = cfdata->view.show_desktop_icons; fileman_config->view.show_toolbar = cfdata->view.show_toolbar; fileman_config->view.show_sidebar = cfdata->view.show_sidebar; + fileman_config->view.desktop_navigation = cfdata->view.desktop_navigation; fileman_config->view.menu_shows_files = cfdata->view.menu_shows_files; fileman_config->icon.extension.show = cfdata->icon.extension.show; @@ -209,6 +212,7 @@ _basic_check_changed(E_Config_Dialog *cfd __UNUSED__, (fileman_config->view.show_desktop_icons != cfdata->view.show_desktop_icons) || (fileman_config->view.show_toolbar != cfdata->view.show_toolbar) || (fileman_config->view.show_sidebar != cfdata->view.show_sidebar) || + (fileman_config->view.desktop_navigation != cfdata->view.desktop_navigation) || (fileman_config->view.menu_shows_files != cfdata->view.menu_shows_files) || (fileman_config->icon.extension.show != cfdata->icon.extension.show) || (fileman_config->selection.windows_modifiers != cfdata->selection.windows_modifiers) || @@ -301,6 +305,9 @@ _basic_create(E_Config_Dialog *cfd __UNUSED__, ob = e_widget_check_add(evas, _("Use Alternate Selection Modifiers"), &(cfdata->selection.windows_modifiers)); e_widget_list_object_append(o, ob, 1, 1, 0.5); + ob = e_widget_check_add(evas, _("Allow Navigation On Desktop"), + &(cfdata->view.desktop_navigation)); + e_widget_list_object_append(o, ob, 1, 1, 0.5); e_widget_toolbook_page_append(otb, NULL, _("Behavior"), o, 0, 0, 0, 0, 0.5, 0.0); ///////////////////////////////////////////////////////////// diff --git a/src/modules/fileman/e_mod_main.c b/src/modules/fileman/e_mod_main.c index 2038be231..1faad52e5 100644 --- a/src/modules/fileman/e_mod_main.c +++ b/src/modules/fileman/e_mod_main.c @@ -265,7 +265,8 @@ _e_mod_menu_gtk_cb(void *data, m = _e_mod_menu_top_get(m); fm = e_object_data_get(E_OBJECT(m)); - if (fileman_config->view.open_dirs_in_place && fm && evas_object_data_get(fm, "page_is_window")) + if (fileman_config->view.open_dirs_in_place && fm && + (fileman_config->view.desktop_navigation || evas_object_data_get(fm, "page_is_window"))) e_fm2_path_set(fm, NULL, data); else if (m->zone) e_fwin_new(m->zone->container, NULL, data); } @@ -279,7 +280,8 @@ _e_mod_menu_virtual_cb(void *data, m = _e_mod_menu_top_get(m); fm = e_object_data_get(E_OBJECT(m)); - if (fileman_config->view.open_dirs_in_place && fm && evas_object_data_get(fm, "page_is_window")) + if (fileman_config->view.open_dirs_in_place && fm && + (fileman_config->view.desktop_navigation || evas_object_data_get(fm, "page_is_window"))) e_fm2_path_set(fm, data, "/"); else if (m->zone) e_fwin_new(m->zone->container, data, "/"); } @@ -296,7 +298,8 @@ _e_mod_menu_volume_cb(void *data, fm = e_object_data_get(E_OBJECT(m)); if (vol->mounted) { - if (fileman_config->view.open_dirs_in_place && fm && evas_object_data_get(fm, "page_is_window")) + if (fileman_config->view.open_dirs_in_place && fm && + (fileman_config->view.desktop_navigation || evas_object_data_get(fm, "page_is_window"))) e_fm2_path_set(fm, NULL, vol->mount_point); else if (m->zone) e_fwin_new(m->zone->container, NULL, vol->mount_point); @@ -306,7 +309,8 @@ _e_mod_menu_volume_cb(void *data, char buf[PATH_MAX]; snprintf(buf, sizeof(buf), "removable:%s", vol->udi); - if (fileman_config->view.open_dirs_in_place && fm && evas_object_data_get(fm, "page_is_window")) + if (fileman_config->view.open_dirs_in_place && fm && + (fileman_config->view.desktop_navigation || evas_object_data_get(fm, "page_is_window"))) e_fm2_path_set(fm, buf, "/"); else if (m->zone) e_fwin_new(m->zone->container, buf, "/"); @@ -397,7 +401,8 @@ _e_mod_menu_populate_cb(void *data, fm = e_object_data_get(E_OBJECT(m)); path = e_object_data_get(E_OBJECT(mi)); - if (fileman_config->view.open_dirs_in_place && fm && evas_object_data_get(fm, "page_is_window")) + if (fileman_config->view.open_dirs_in_place && fm && + (fileman_config->view.desktop_navigation || evas_object_data_get(fm, "page_is_window"))) e_fm2_path_set(fm, data, path ?: "/"); else if (m->zone) e_fwin_new(m->zone->container, data, path ?: "/"); @@ -677,6 +682,7 @@ _e_mod_fileman_config_load(void) E_CONFIG_VAL(D, T, view.show_desktop_icons, UCHAR); E_CONFIG_VAL(D, T, view.show_toolbar, UCHAR); E_CONFIG_VAL(D, T, view.show_sidebar, UCHAR); + E_CONFIG_VAL(D, T, view.desktop_navigation, UCHAR); E_CONFIG_VAL(D, T, icon.icon.w, INT); E_CONFIG_VAL(D, T, icon.icon.h, INT); E_CONFIG_VAL(D, T, icon.list.w, INT); @@ -780,6 +786,10 @@ _e_mod_fileman_config_load(void) fileman_config->view.menu_shows_files = 0; IFMODCFGEND; + IFMODCFG(0x0109); + fileman_config->view.desktop_navigation = 0; + IFMODCFGEND; + fileman_config->config_version = MOD_CONFIG_FILE_VERSION; /* UCHAR's give nasty compile warnings about comparisons so not gonna limit those */ diff --git a/src/modules/fileman/e_mod_main.h b/src/modules/fileman/e_mod_main.h index 8e71ba86c..aa97b9000 100644 --- a/src/modules/fileman/e_mod_main.h +++ b/src/modules/fileman/e_mod_main.h @@ -4,7 +4,7 @@ /* Increment for Major Changes */ #define MOD_CONFIG_FILE_EPOCH 0x0001 /* Increment for Minor Changes (ie: user doesn't need a new config) */ -#define MOD_CONFIG_FILE_GENERATION 0x0108 +#define MOD_CONFIG_FILE_GENERATION 0x0109 #define MOD_CONFIG_FILE_VERSION ((MOD_CONFIG_FILE_EPOCH << 16) | MOD_CONFIG_FILE_GENERATION) typedef struct _Config Config; @@ -39,6 +39,7 @@ struct _Config unsigned char show_desktop_icons; unsigned char show_toolbar; unsigned char show_sidebar; + unsigned char desktop_navigation; unsigned char menu_shows_files; } view; struct