]> git.armaanb.net Git - chorizo.git/commitdiff
Add "open with xdg-open" option to downloads
authorArmaan Bhojwani <me@armaanb.net>
Thu, 10 Jun 2021 01:54:32 +0000 (21:54 -0400)
committerArmaan Bhojwani <me@armaanb.net>
Thu, 10 Jun 2021 14:14:18 +0000 (10:14 -0400)
src/downloads.c

index ec0b242876adac89781a1acaaf0ab08c4e58f015..52a8eb00b89c6f9d89e9647721762f7531fe8860 100644 (file)
@@ -181,6 +181,15 @@ download_copy_path(GtkMenuItem *tb, gpointer data) {
                            strlen(path) - 7); // Offset by 7 to remove "file://"
 }
 
                            strlen(path) - 7); // Offset by 7 to remove "file://"
 }
 
+void
+download_xdg_open(GtkMenuItem *tb, gpointer data) {
+    struct DownloadItem *payload = data;
+    const gchar *path = webkit_download_get_destination(payload->download);
+    char *cmd = malloc(strlen(path) + 9);
+    sprintf(cmd, "xdg-open %s", path);
+    system(cmd);
+}
+
 void
 download_click(GtkToolButton *tb, gpointer data) {
     GtkWidget *pmenu = gtk_menu_new();
 void
 download_click(GtkToolButton *tb, gpointer data) {
     GtkWidget *pmenu = gtk_menu_new();
@@ -191,13 +200,21 @@ download_click(GtkToolButton *tb, gpointer data) {
         option = gtk_menu_item_new_with_label("Cancel download");
         g_signal_connect(G_OBJECT(option), "activate",
                          G_CALLBACK(download_cancel), data);
         option = gtk_menu_item_new_with_label("Cancel download");
         g_signal_connect(G_OBJECT(option), "activate",
                          G_CALLBACK(download_cancel), data);
+        gtk_widget_show(option);
+        gtk_menu_shell_append(GTK_MENU_SHELL(pmenu), option);
     } else {
         option = gtk_menu_item_new_with_label("Remove download");
         g_signal_connect(G_OBJECT(option), "activate",
                          G_CALLBACK(download_remove), data);
     } else {
         option = gtk_menu_item_new_with_label("Remove download");
         g_signal_connect(G_OBJECT(option), "activate",
                          G_CALLBACK(download_remove), data);
+        gtk_widget_show(option);
+        gtk_menu_shell_append(GTK_MENU_SHELL(pmenu), option);
+
+        option = gtk_menu_item_new_with_label("Open file with xdg-open");
+        gtk_widget_show(option);
+        gtk_menu_shell_append(GTK_MENU_SHELL(pmenu), option);
+        g_signal_connect(G_OBJECT(option), "activate",
+                         G_CALLBACK(download_xdg_open), data);
     }
     }
-    gtk_widget_show(option);
-    gtk_menu_shell_append(GTK_MENU_SHELL(pmenu), option);
 
     option = gtk_menu_item_new_with_label("Copy download URL");
     gtk_widget_show(option);
 
     option = gtk_menu_item_new_with_label("Copy download URL");
     gtk_widget_show(option);