static void gtk_mount_operation_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtkMountOperation *operation; gpointer tmp; operation = GTK_MOUNT_OPERATION (object); switch (prop_id) { case PROP_PARENT: tmp = g_value_get_object (value); gtk_mount_operation_set_parent (operation, tmp); break; case PROP_SCREEN: tmp = g_value_get_object (value); gtk_mount_operation_set_screen (operation, tmp); break; case PROP_IS_SHOWING: default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static void xfdesktop_volume_icon_menu_unmount(GtkWidget *widget, gpointer user_data) { XfdesktopVolumeIcon *icon = XFDESKTOP_VOLUME_ICON(user_data); GtkWidget *icon_view = xfdesktop_icon_peek_icon_view(XFDESKTOP_ICON(icon)); GtkWidget *toplevel = gtk_widget_get_toplevel(icon_view); GVolume *volume; GMount *mount; GMountOperation *operation; volume = xfdesktop_volume_icon_peek_volume(icon); mount = g_volume_get_mount(volume); if(!mount) return; #ifdef HAVE_LIBNOTIFY xfdesktop_notify_unmount(mount); #endif operation = gtk_mount_operation_new(toplevel ? GTK_WINDOW(toplevel) : NULL); gtk_mount_operation_set_screen(GTK_MOUNT_OPERATION(operation), icon->priv->gscreen); g_mount_unmount_with_operation(mount, G_MOUNT_UNMOUNT_NONE, operation, NULL, xfdesktop_volume_icon_unmount_finish, g_object_ref(icon)); g_object_unref(mount); g_object_unref(operation); }
static void panel_menu_item_mount_volume (GtkWidget *menuitem, GVolume *volume) { PanelVolumeMountData *mount_data; mount_data = g_slice_new (PanelVolumeMountData); mount_data->screen = menuitem_to_screen (menuitem); mount_data->mount_op = gtk_mount_operation_new (NULL); gtk_mount_operation_set_screen (GTK_MOUNT_OPERATION (mount_data->mount_op), mount_data->screen); g_volume_mount (volume, G_MOUNT_MOUNT_NONE, mount_data->mount_op, NULL, volume_mount_cb, mount_data); }
static gboolean _panel_show_handle_error (const gchar *uri, GdkScreen *screen, GError *local_error, GError **error) { if (local_error == NULL) return TRUE; else if (g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { g_error_free (local_error); return TRUE; } else if (g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_NOT_MOUNTED)) { GFile *file; PanelShowMountOperationHandle *handle; handle = g_slice_new (PanelShowMountOperationHandle); file = g_file_new_for_uri (uri); /* If it's not mounted, try to mount it ourselves */ handle->mount_op = gtk_mount_operation_new (NULL); gtk_mount_operation_set_screen (GTK_MOUNT_OPERATION (handle->mount_op), screen); handle->screen = screen; g_file_mount_enclosing_volume (file, G_MOUNT_MOUNT_NONE, handle->mount_op, NULL, _panel_show_mount_async_callback, handle); g_object_unref (file); return TRUE; } else if (error != NULL) g_propagate_error (error, local_error); else { _panel_show_error_dialog (uri, screen, local_error->message); g_error_free (local_error); } return FALSE; }