Fix opening of unmounted volumes from the e main menu

This commit is contained in:
Davide Andreoli 2015-01-11 23:19:19 +01:00
parent 363aef3b3e
commit 4164923ee5
1 changed files with 25 additions and 9 deletions

View File

@ -705,9 +705,25 @@ _places_header_activated_cb(void *data, Evas_Object *o, const char *emission, co
/* E17 menu augmentation */ /* E17 menu augmentation */
void void
_places_menu_cb(void *data, E_Menu *m, E_Menu_Item *mi) _places_menu_folder_cb(void *data, E_Menu *m, E_Menu_Item *mi)
{ {
places_run_fm(data); const char *folder = data;
places_run_fm(folder);
}
void
_places_menu_volume_cb(void *data, E_Menu *m, E_Menu_Item *mi)
{
Volume *vol = data;
if (vol->mounted)
places_run_fm(vol->mount_point);
else if (vol->mount_func)
{
vol->force_open = EINA_TRUE;
places_volume_mount(vol);
}
} }
static void static void
@ -741,7 +757,7 @@ _places_bookmarks_parse(E_Menu *em)
e_menu_item_label_set(mi, alias ? alias : e_menu_item_label_set(mi, alias ? alias :
ecore_file_file_get(uri->path)); ecore_file_file_get(uri->path));
e_util_menu_item_theme_icon_set(mi, "folder"); e_util_menu_item_theme_icon_set(mi, "folder");
e_menu_item_callback_set(mi, _places_menu_cb, e_menu_item_callback_set(mi, _places_menu_folder_cb,
strdup(uri->path)); //TODO free somewhere strdup(uri->path)); //TODO free somewhere
} }
if (uri) efreet_uri_free(uri); if (uri) efreet_uri_free(uri);
@ -761,7 +777,7 @@ places_generate_menu(void *data, E_Menu *em)
mi = e_menu_item_new(em); mi = e_menu_item_new(em);
e_menu_item_label_set(mi, D_("Home")); e_menu_item_label_set(mi, D_("Home"));
e_util_menu_item_theme_icon_set(mi, "user-home"); e_util_menu_item_theme_icon_set(mi, "user-home");
e_menu_item_callback_set(mi, _places_menu_cb, e_user_homedir_get()); e_menu_item_callback_set(mi, _places_menu_folder_cb, e_user_homedir_get());
} }
// Desktop // Desktop
@ -770,7 +786,7 @@ places_generate_menu(void *data, E_Menu *em)
mi = e_menu_item_new(em); mi = e_menu_item_new(em);
e_menu_item_label_set(mi, D_("Desktop")); e_menu_item_label_set(mi, D_("Desktop"));
e_util_menu_item_theme_icon_set(mi, "user-desktop"); e_util_menu_item_theme_icon_set(mi, "user-desktop");
e_menu_item_callback_set(mi, _places_menu_cb, efreet_desktop_dir_get()); e_menu_item_callback_set(mi, _places_menu_folder_cb, efreet_desktop_dir_get());
} }
// Trash // Trash
@ -779,7 +795,7 @@ places_generate_menu(void *data, E_Menu *em)
mi = e_menu_item_new(em); mi = e_menu_item_new(em);
e_menu_item_label_set(mi, D_("Trash")); e_menu_item_label_set(mi, D_("Trash"));
e_util_menu_item_theme_icon_set(mi, "user-trash"); e_util_menu_item_theme_icon_set(mi, "user-trash");
e_menu_item_callback_set(mi, _places_menu_cb, "trash:///"); e_menu_item_callback_set(mi, _places_menu_folder_cb, "trash:///");
} }
// File System // File System
@ -788,7 +804,7 @@ places_generate_menu(void *data, E_Menu *em)
mi = e_menu_item_new(em); mi = e_menu_item_new(em);
e_menu_item_label_set(mi, D_("Filesystem")); e_menu_item_label_set(mi, D_("Filesystem"));
e_util_menu_item_theme_icon_set(mi, "drive-harddisk"); e_util_menu_item_theme_icon_set(mi, "drive-harddisk");
e_menu_item_callback_set(mi, _places_menu_cb, "/"); e_menu_item_callback_set(mi, _places_menu_folder_cb, "/");
} }
// Temp // Temp
@ -797,7 +813,7 @@ places_generate_menu(void *data, E_Menu *em)
mi = e_menu_item_new(em); mi = e_menu_item_new(em);
e_menu_item_label_set(mi, D_("Temp")); e_menu_item_label_set(mi, D_("Temp"));
e_util_menu_item_theme_icon_set(mi, "user-temp"); e_util_menu_item_theme_icon_set(mi, "user-temp");
e_menu_item_callback_set(mi, _places_menu_cb, "/tmp"); e_menu_item_callback_set(mi, _places_menu_folder_cb, "/tmp");
} }
// Separator // Separator
@ -827,7 +843,7 @@ places_generate_menu(void *data, E_Menu *em)
if (vol->icon) if (vol->icon)
e_util_menu_item_theme_icon_set(mi, vol->icon); e_util_menu_item_theme_icon_set(mi, vol->icon);
e_menu_item_callback_set(mi, _places_menu_cb, vol->mount_point); e_menu_item_callback_set(mi, _places_menu_volume_cb, vol);
volumes_visible = 1; volumes_visible = 1;
} }