Let volumes open in new windows from popup menus
This commit is contained in:
parent
f0fe2b797c
commit
f91400ecbf
|
@ -59,6 +59,9 @@
|
|||
# define BINDIR PREFIX "/bin"
|
||||
#endif
|
||||
|
||||
#ifndef PROGNAME_BROWSER
|
||||
# define PROGNAME_BROWSER "browser"
|
||||
#endif
|
||||
#ifndef PROGNAME_PROPERTIES
|
||||
# define PROGNAME_PROPERTIES "properties"
|
||||
#endif
|
||||
|
@ -896,6 +899,7 @@ static void _volumes_on_unmount_selection(gpointer data)
|
|||
/* volumes_on_view_button_press */
|
||||
static void _volumes_on_eject(GtkWidget * widget, gpointer data);
|
||||
static void _volumes_on_open(GtkWidget * widget, gpointer data);
|
||||
static void _volumes_on_open_new_window(GtkWidget * widget, gpointer data);
|
||||
static void _volumes_on_properties(GtkWidget * widget, gpointer data);
|
||||
static void _volumes_on_mount(GtkWidget * widget, gpointer data);
|
||||
static void _volumes_on_unmount(GtkWidget * widget, gpointer data);
|
||||
|
@ -928,6 +932,15 @@ static gboolean _volumes_on_view_button_press(GtkWidget * widget,
|
|||
g_signal_connect(widget, "activate", G_CALLBACK(_volumes_on_open),
|
||||
volumes);
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(menu), widget);
|
||||
widget = gtk_image_menu_item_new_with_mnemonic(
|
||||
_("Open in new _window"));
|
||||
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(widget),
|
||||
gtk_image_new_from_icon_name("window-new",
|
||||
GTK_ICON_SIZE_MENU));
|
||||
g_object_set_data(G_OBJECT(widget), "mountpoint", mountpoint);
|
||||
g_signal_connect(widget, "activate", G_CALLBACK(
|
||||
_volumes_on_open_new_window), volumes);
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(menu), widget);
|
||||
widget = gtk_separator_menu_item_new();
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(menu), widget);
|
||||
/* unmount */
|
||||
|
@ -1018,6 +1031,27 @@ static void _volumes_on_open(GtkWidget * widget, gpointer data)
|
|||
g_free(mountpoint);
|
||||
}
|
||||
|
||||
static void _volumes_on_open_new_window(GtkWidget * widget, gpointer data)
|
||||
{
|
||||
Volumes * volumes = data;
|
||||
BrowserPluginHelper * helper = volumes->helper;
|
||||
gchar * mountpoint;
|
||||
char * argv[] = { BINDIR "/" PROGNAME_BROWSER, PROGNAME_BROWSER,
|
||||
"--", NULL, NULL };
|
||||
const unsigned int flags = G_SPAWN_FILE_AND_ARGV_ZERO;
|
||||
GError * error = NULL;
|
||||
|
||||
mountpoint = g_object_get_data(G_OBJECT(widget), "mountpoint");
|
||||
argv[2] = mountpoint;
|
||||
if(g_spawn_async(NULL, argv, NULL, flags, NULL, NULL, NULL, &error)
|
||||
!= TRUE)
|
||||
{
|
||||
helper->error(helper->browser, error->message, 1);
|
||||
g_error_free(error);
|
||||
}
|
||||
g_free(mountpoint);
|
||||
}
|
||||
|
||||
static void _volumes_on_properties(GtkWidget * widget, gpointer data)
|
||||
{
|
||||
Volumes * volumes = data;
|
||||
|
|
Loading…
Reference in New Issue
Block a user