summary refs log tree commit diff
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2022-09-24 00:40:36 +0200
committerJan Tojnar <jtojnar@gmail.com>2022-10-11 18:52:34 +0200
commitee2cbd86a0d78fda4dad81863cad6de17bcede9f (patch)
tree6b8cf765b661a3cbd53111d2804a7ed92af35d5f
parent39ae9caf09887de6260e96f568ebac9bc2d7ee3d (diff)
downloadnixpkgs-ee2cbd86a0d78fda4dad81863cad6de17bcede9f.tar
nixpkgs-ee2cbd86a0d78fda4dad81863cad6de17bcede9f.tar.gz
nixpkgs-ee2cbd86a0d78fda4dad81863cad6de17bcede9f.tar.bz2
nixpkgs-ee2cbd86a0d78fda4dad81863cad6de17bcede9f.tar.lz
nixpkgs-ee2cbd86a0d78fda4dad81863cad6de17bcede9f.tar.xz
nixpkgs-ee2cbd86a0d78fda4dad81863cad6de17bcede9f.tar.zst
nixpkgs-ee2cbd86a0d78fda4dad81863cad6de17bcede9f.zip
dropbox-cli: update extension for Nautilus 43
-rw-r--r--pkgs/applications/networking/dropbox/cli.nix6
-rw-r--r--pkgs/applications/networking/dropbox/nautilus-43.patch195
2 files changed, 201 insertions, 0 deletions
diff --git a/pkgs/applications/networking/dropbox/cli.nix b/pkgs/applications/networking/dropbox/cli.nix
index ffbf42715f5..c6b0baa9d3f 100644
--- a/pkgs/applications/networking/dropbox/cli.nix
+++ b/pkgs/applications/networking/dropbox/cli.nix
@@ -1,5 +1,6 @@
 { lib, stdenv
 , substituteAll
+, autoreconfHook
 , pkg-config
 , fetchurl
 , python3
@@ -28,6 +29,10 @@ stdenv.mkDerivation {
   strictDeps = true;
 
   patches = [
+    # Fix extension for Nautilus 43
+    # https://github.com/dropbox/nautilus-dropbox/pull/105
+    ./nautilus-43.patch
+
     (substituteAll {
       src = ./fix-cli-paths.patch;
       inherit dropboxd;
@@ -35,6 +40,7 @@ stdenv.mkDerivation {
   ];
 
   nativeBuildInputs = [
+    autoreconfHook
     pkg-config
     gobject-introspection
     gdk-pixbuf
diff --git a/pkgs/applications/networking/dropbox/nautilus-43.patch b/pkgs/applications/networking/dropbox/nautilus-43.patch
new file mode 100644
index 00000000000..b4b55784319
--- /dev/null
+++ b/pkgs/applications/networking/dropbox/nautilus-43.patch
@@ -0,0 +1,195 @@
+diff --git a/configure.ac b/configure.ac
+index 025289c..42b49fa 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -12,7 +12,7 @@ AM_CONFIG_HEADER(config.h)
+ #AC_PROG_INTLTOOL([0.29])
+ 
+ # Dependency checks
+-NAUTILUS_REQUIRED=2.16.0
++NAUTILUS_REQUIRED=43.rc
+ GLIB_REQUIRED=2.14.0
+ 
+ # Used programs
+@@ -26,8 +26,11 @@ if test "x$HAVE_PKGCONFIG" = "xno"; then
+ 	AC_MSG_ERROR(you need to have pkgconfig installed !)
+ fi
+ 
+-PKG_CHECK_MODULES(NAUTILUS, libnautilus-extension >= $NAUTILUS_REQUIRED)
++PKG_CHECK_MODULES(NAUTILUS, libnautilus-extension-4 >= $NAUTILUS_REQUIRED)
+ PKG_CHECK_MODULES(GLIB, glib-2.0 >= $GLIB_REQUIRED)
++PKG_CHECK_MODULES(GTK, gtk4 >= 4.6.0)
++
++AC_SUBST(GTK_CFLAGS)
+ 
+ AC_PATH_PROG([PYTHON3], [python3])
+ 
+@@ -84,10 +87,10 @@ AC_MSG_CHECKING([for nautilus extension directory])
+ if test -n "$with_nautilus_extension_dir"; then
+     NAUTILUS_EXTENSION_DIR=$with_nautilus_extension_dir
+ else
+-    NAUTILUS_EXTENSION_DIR=`$PKG_CONFIG --variable=extensiondir libnautilus-extension`
++    NAUTILUS_EXTENSION_DIR=`$PKG_CONFIG --variable=extensiondir libnautilus-extension-4`
+ fi
+ if test -z "$NAUTILUS_EXTENSION_DIR"; then
+-    NAUTILUS_EXTENSION_DIR='${exec_prefix}/lib/nautilus/extension-1.0'
++    NAUTILUS_EXTENSION_DIR='${exec_prefix}/lib/nautilus/extension-4'
+ fi
+ 
+ AC_MSG_RESULT([${NAUTILUS_EXTENSION_DIR}])
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 15d6687..c521ec5 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -13,6 +13,7 @@ libnautilus_dropbox_la_CFLAGS = 	                \
+ 	$(WARN_CFLAGS)                                  \
+ 	$(DISABLE_DEPRECATED_CFLAGS)					\
+ 	$(NAUTILUS_CFLAGS)                              \
++	$(GTK_CFLAGS)                              \
+ 	$(GLIB_CFLAGS)
+ 
+ if DEBUG
+diff --git a/src/dropbox.c b/src/dropbox.c
+index 0d59559..8162aa9 100644
+--- a/src/dropbox.c
++++ b/src/dropbox.c
+@@ -27,9 +27,6 @@
+ 
+ #include <glib-object.h>
+ 
+-#include <gdk/gdk.h>
+-#include <gtk/gtk.h>
+-
+ #include "nautilus-dropbox.h"
+ 
+ static GType type_list[1];
+@@ -41,9 +38,6 @@ nautilus_module_initialize (GTypeModule *module) {
+   nautilus_dropbox_register_type (module);
+   type_list[0] = NAUTILUS_TYPE_DROPBOX;
+ 
+-  dropbox_use_nautilus_submenu_workaround
+-    = (NAUTILUS_VERSION_MAJOR < 2 ||
+-       (NAUTILUS_VERSION_MAJOR == 2 && NAUTILUS_VERSION_MINOR <= 22));
+   dropbox_use_operation_in_progress_workaround = TRUE;
+ }
+ 
+diff --git a/src/nautilus-dropbox.c b/src/nautilus-dropbox.c
+index c75ccbf..b9c10b4 100644
+--- a/src/nautilus-dropbox.c
++++ b/src/nautilus-dropbox.c
+@@ -37,9 +37,7 @@
+ #include <glib-object.h>
+ #include <gtk/gtk.h>
+ 
+-#include <libnautilus-extension/nautilus-extension-types.h>
+-#include <libnautilus-extension/nautilus-menu-provider.h>
+-#include <libnautilus-extension/nautilus-info-provider.h>
++#include <nautilus-extension.h>
+ 
+ #include "g-util.h"
+ #include "dropbox-command-client.h"
+@@ -49,7 +47,7 @@
+ static char *emblems[] = {"dropbox-uptodate", "dropbox-syncing", "dropbox-unsyncable"};
+ gchar *DEFAULT_EMBLEM_PATHS[2] = { EMBLEMDIR , NULL };
+ 
+-gboolean dropbox_use_nautilus_submenu_workaround;
++
+ gboolean dropbox_use_operation_in_progress_workaround;
+ 
+ static GType dropbox_type = 0;
+@@ -630,13 +628,6 @@ nautilus_dropbox_parse_menu(gchar			**options,
+ 	g_object_set_property (G_OBJECT(item), "sensitive", &sensitive);
+       }
+ 
+-      /* taken from nautilus-file-repairer (http://repairer.kldp.net/):
+-       * this code is a workaround for a bug of nautilus
+-       * See: http://bugzilla.gnome.org/show_bug.cgi?id=508878 */
+-      if (dropbox_use_nautilus_submenu_workaround) {
+-	toret = g_list_append(toret, item);
+-      }
+-
+       g_object_unref(item);
+       g_string_free(new_action_string, TRUE);
+       ret++;
+@@ -661,7 +652,6 @@ get_file_items_callback(GHashTable *response, gpointer ud)
+ 
+ static GList *
+ nautilus_dropbox_get_file_items(NautilusMenuProvider *provider,
+-                                GtkWidget            *window,
+ 				GList                *files)
+ {
+   /*
+@@ -778,14 +768,13 @@ add_emblem_paths(GHashTable* emblem_paths_response)
+ 
+   gchar **emblem_paths_list;
+   int i;
+-
+-  GtkIconTheme *theme = gtk_icon_theme_get_default();
++  GtkIconTheme *theme = gtk_icon_theme_get_for_display (gdk_display_get_default ());
+ 
+   if (emblem_paths_response &&
+       (emblem_paths_list = g_hash_table_lookup(emblem_paths_response, "path"))) {
+       for (i = 0; emblem_paths_list[i] != NULL; i++) {
+ 	if (emblem_paths_list[i][0])
+-	  gtk_icon_theme_append_search_path(theme, emblem_paths_list[i]);
++	  gtk_icon_theme_add_search_path(theme, emblem_paths_list[i]);
+       }
+   }
+   g_hash_table_unref(emblem_paths_response);
+@@ -804,15 +793,14 @@ remove_emblem_paths(GHashTable* emblem_paths_response)
+       goto exit;
+ 
+   // We need to remove the old paths.
+-  GtkIconTheme * icon_theme = gtk_icon_theme_get_default();
+   gchar ** paths;
+-  gint path_count;
++  GtkIconTheme *theme = gtk_icon_theme_get_for_display (gdk_display_get_default ());
+ 
+-  gtk_icon_theme_get_search_path(icon_theme, &paths, &path_count);
++  paths = gtk_icon_theme_get_search_path(theme);
+ 
+   gint i, j, out = 0;
+   gboolean found = FALSE;
+-  for (i = 0; i < path_count; i++) {
++  for (i = 0; paths[i] != NULL; i++) {
+       gboolean keep = TRUE;
+       for (j = 0; emblem_paths_list[j] != NULL; j++) {
+ 	  if (emblem_paths_list[j][0]) {
+@@ -834,7 +822,7 @@ remove_emblem_paths(GHashTable* emblem_paths_response)
+      accomodate the changes */
+   if (found) {
+     paths[out] = NULL; /* Clear the last one */
+-    gtk_icon_theme_set_search_path(icon_theme, (const gchar **)paths, out);
++    gtk_icon_theme_set_search_path(theme, (const gchar **)paths);
+   }
+ 
+   g_strfreev(paths);
+@@ -888,13 +876,13 @@ on_disconnect(NautilusDropbox *cvs) {
+ 
+ 
+ static void
+-nautilus_dropbox_menu_provider_iface_init (NautilusMenuProviderIface *iface) {
++nautilus_dropbox_menu_provider_iface_init (NautilusMenuProviderInterface *iface) {
+   iface->get_file_items = nautilus_dropbox_get_file_items;
+   return;
+ }
+ 
+ static void
+-nautilus_dropbox_info_provider_iface_init (NautilusInfoProviderIface *iface) {
++nautilus_dropbox_info_provider_iface_init (NautilusInfoProviderInterface *iface) {
+   iface->update_file_info = nautilus_dropbox_update_file_info;
+   iface->cancel_update = nautilus_dropbox_cancel_update;
+   return;
+diff --git a/src/nautilus-dropbox.h b/src/nautilus-dropbox.h
+index 65734be..44faa27 100644
+--- a/src/nautilus-dropbox.h
++++ b/src/nautilus-dropbox.h
+@@ -27,7 +27,7 @@
+ #include <glib.h>
+ #include <glib-object.h>
+ 
+-#include <libnautilus-extension/nautilus-info-provider.h>
++#include <nautilus-extension.h>
+ 
+ #include "dropbox-command-client.h"
+ #include "nautilus-dropbox-hooks.h"