diff options
Diffstat (limited to 'gnome2-libs/nautilus2/000-gnome-desktop-3.8.patch')
-rw-r--r-- | gnome2-libs/nautilus2/000-gnome-desktop-3.8.patch | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/gnome2-libs/nautilus2/000-gnome-desktop-3.8.patch b/gnome2-libs/nautilus2/000-gnome-desktop-3.8.patch new file mode 100644 index 0000000000..28deba46a2 --- /dev/null +++ b/gnome2-libs/nautilus2/000-gnome-desktop-3.8.patch @@ -0,0 +1,155 @@ +diff -Naur nautilus-3.6.1.orig/eel/eel-gnome-extensions.c nautilus-3.6.1/eel/eel-gnome-extensions.c +--- nautilus-3.6.1.orig/eel/eel-gnome-extensions.c 2013-06-24 15:48:18.490246931 -0700 ++++ nautilus-3.6.1/eel/eel-gnome-extensions.c 2013-06-24 16:19:53.829949278 -0700 +@@ -31,7 +31,6 @@ + #include "eel-gnome-extensions.h" + + #include <gtk/gtk.h> +-#include <libgnome-desktop/gnome-desktop-utils.h> + + /* Return a command string containing the path to a terminal on this system. */ + +@@ -89,6 +88,137 @@ + return result; + } + ++ ++/** ++ * gnome_desktop_prepend_terminal_to_vector: ++ * @argc: a pointer to the vector size ++ * @argv: a pointer to the vector ++ * ++ * Description: Prepends a terminal (either the one configured as default in ++ * the user's GNOME setup, or one of the common xterm emulators) to the passed ++ * in vector, modifying it in the process. The vector should be allocated with ++ * #g_malloc, as this will #g_free the original vector. Also all elements must ++ * have been allocated separately. That is the standard glib/GNOME way of ++ * doing vectors however. If the integer that @argc points to is negative, the ++ * size will first be computed. Also note that passing in pointers to a vector ++ * that is empty, will just create a new vector for you. ++ **/ ++static void ++gnome_desktop_prepend_terminal_to_vector (int *argc, char ***argv) ++{ ++#ifndef G_OS_WIN32 ++ char **real_argv; ++ int real_argc; ++ int i, j; ++ char **term_argv = NULL; ++ int term_argc = 0; ++ GSettings *settings; ++ ++ gchar *terminal = NULL; ++ ++ char **the_argv; ++ ++ g_return_if_fail (argc != NULL); ++ g_return_if_fail (argv != NULL); ++ ++ // _gnome_desktop_init_i18n (); ++ ++ /* sanity */ ++ if(*argv == NULL) ++ *argc = 0; ++ ++ the_argv = *argv; ++ ++ /* compute size if not given */ ++ if (*argc < 0) { ++ for (i = 0; the_argv[i] != NULL; i++) ++ ; ++ *argc = i; ++ } ++ ++ settings = g_settings_new ("org.gnome.desktop.default-applications.terminal"); ++ terminal = g_settings_get_string (settings, "exec"); ++ ++ if (terminal) { ++ gchar *command_line; ++ gchar *exec_flag; ++ ++ exec_flag = g_settings_get_string (settings, "exec-arg"); ++ ++ if (exec_flag == NULL) ++ command_line = g_strdup (terminal); ++ else ++ command_line = g_strdup_printf ("%s %s", terminal, ++ exec_flag); ++ ++ g_shell_parse_argv (command_line, ++ &term_argc, ++ &term_argv, ++ NULL /* error */); ++ ++ g_free (command_line); ++ g_free (exec_flag); ++ g_free (terminal); ++ } ++ ++ g_object_unref (settings); ++ ++ if (term_argv == NULL) { ++ char *check; ++ ++ term_argc = 2; ++ term_argv = g_new0 (char *, 3); ++ ++ check = g_find_program_in_path ("gnome-terminal"); ++ if (check != NULL) { ++ term_argv[0] = check; ++ /* Note that gnome-terminal takes -x and ++ * as -e in gnome-terminal is broken we use that. */ ++ term_argv[1] = g_strdup ("-x"); ++ } else { ++ if (check == NULL) ++ check = g_find_program_in_path ("nxterm"); ++ if (check == NULL) ++ check = g_find_program_in_path ("color-xterm"); ++ if (check == NULL) ++ check = g_find_program_in_path ("rxvt"); ++ if (check == NULL) ++ check = g_find_program_in_path ("xterm"); ++ if (check == NULL) ++ check = g_find_program_in_path ("dtterm"); ++ if (check == NULL) { ++ g_warning ("Cannot find a terminal, using xterm, even if it may not work"); ++ check = g_strdup ("xterm"); ++ } ++ term_argv[0] = check; ++ term_argv[1] = g_strdup ("-e"); ++ } ++ } ++ real_argc = term_argc + *argc; ++ real_argv = g_new (char *, real_argc + 1); ++ ++ for (i = 0; i < term_argc; i++) ++ real_argv[i] = term_argv[i]; ++ ++ for (j = 0; j < *argc; j++, i++) ++ real_argv[i] = (char *)the_argv[j]; ++ ++ real_argv[i] = NULL; ++ ++ g_free (*argv); ++ *argv = real_argv; ++ *argc = real_argc; ++ ++ /* we use g_free here as we sucked all the inner strings ++ * out from it into real_argv */ ++ g_free (term_argv); ++#else ++ /* FIXME: Implement when needed */ ++ g_warning ("gnome_prepend_terminal_to_vector: Not implemented"); ++#endif ++} ++ ++ + static char * + get_terminal_command_prefix (gboolean for_command) + { +@@ -198,3 +328,5 @@ + + g_free (command_line); + } ++ ++ |