diff options
| author | rbuj <[email protected]> | 2021-01-02 13:42:22 +0100 | 
|---|---|---|
| committer | Luke from DC <[email protected]> | 2021-01-23 05:43:01 +0000 | 
| commit | ae644d27a45fc11a65dfe7782497927acd3496b3 (patch) | |
| tree | 827b301408f2db8365c2fce3b36b9294950403d7 /src | |
| parent | c4e7018af3200b8b936c0791fc1b310288e231e9 (diff) | |
| download | caja-ae644d27a45fc11a65dfe7782497927acd3496b3.tar.bz2 caja-ae644d27a45fc11a65dfe7782497927acd3496b3.tar.xz | |
caja-places-sidebar: upgrade format drive item
Diffstat (limited to 'src')
| -rw-r--r-- | src/caja-places-sidebar.c | 51 | 
1 files changed, 49 insertions, 2 deletions
| diff --git a/src/caja-places-sidebar.c b/src/caja-places-sidebar.c index b01bfb87..0848e70d 100644 --- a/src/caja-places-sidebar.c +++ b/src/caja-places-sidebar.c @@ -26,9 +26,11 @@  #include <cairo-gobject.h>  #include <gdk/gdkkeysyms.h> +#include <gdk/gdkx.h>  #include <gtk/gtk.h>  #include <glib/gi18n.h>  #include <gio/gio.h> +#include <gio/gdesktopappinfo.h>  #include <libnotify/notify.h>  #include <eel/eel-debug.h> @@ -1735,6 +1737,18 @@ check_visibility (GMount           *mount,          if (*show_stop)              *show_unmount = FALSE; + +        if (volume != NULL) +        { +            gchar *unix_device_id; +            gchar *disks_path; + +            unix_device_id = g_volume_get_identifier (volume, G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE); +            disks_path = g_find_program_in_path ("gnome-disks"); +            *show_format = (unix_device_id != NULL) && (disks_path != NULL); +            g_free (unix_device_id); +            g_free (disks_path); +        }      }      if (volume != NULL) @@ -2486,10 +2500,43 @@ rescan_shortcut_cb (GtkMenuItem           *item,  }  static void -format_shortcut_cb (GtkMenuItem           *item, +format_shortcut_cb (GtkMenuItem       *item,                      CajaPlacesSidebar *sidebar)  { -    g_spawn_command_line_async ("gfloppy", NULL); +    GAppInfo *app_info; +    char *cmdline; +    char *device_identifier; +    char *xid_string; +    gint xid; +    GtkTreeIter iter; +    GVolume *volume; + +    if (!get_selected_iter (sidebar, &iter)) +    { +        return; +    } + +    gtk_tree_model_get (GTK_TREE_MODEL (sidebar->filter_model), &iter, +                        PLACES_SIDEBAR_COLUMN_VOLUME, &volume, +                        -1); + +    device_identifier = g_volume_get_identifier (volume, G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE); +    xid = (gint) gdk_x11_window_get_xid (gtk_widget_get_window (GTK_WIDGET (item))); +    xid_string = g_strdup_printf ("%d", xid); + +    cmdline = g_strjoin (" ", +                         "gnome-disks", "--format-device", +                         "--block-device", device_identifier, +                         "--xid", xid_string, +                         NULL); + +    app_info = g_app_info_create_from_commandline (cmdline, NULL, 0, NULL); +    g_app_info_launch (app_info, NULL, NULL, NULL); + +    g_free (cmdline); +    g_free (device_identifier); +    g_free (xid_string); +    g_clear_object (&app_info);  }  static void | 
