[Xfce4-commits] [apps/xfce4-terminal] 01/01: Add hidden option MiscDefaultWorkingDir affecting new tabs and windows

noreply at xfce.org noreply at xfce.org
Tue Aug 16 13:19:57 CEST 2016


This is an automated email from the git hooks/post-receive script.

f2404 pushed a commit to branch master
in repository apps/xfce4-terminal.

commit a3a50b04820f330a6641142c0d5a03966c246e01
Author: Igor <f2404 at yandex.ru>
Date:   Tue Aug 16 14:17:15 2016 +0300

    Add hidden option MiscDefaultWorkingDir affecting new tabs and windows
    
    If the option is set (non-empty value), new tabs and windows will use the dir
    specified as their working dir. Otherwise, the behavior remains as is (current
    dir will be used).
    Fixes https://bugzilla.xfce.org/show_bug.cgi?id=3891
---
 terminal/terminal-preferences.c | 11 ++++++++++
 terminal/terminal-window.c      | 46 ++++++++++++++++++++++++++---------------
 2 files changed, 40 insertions(+), 17 deletions(-)

diff --git a/terminal/terminal-preferences.c b/terminal/terminal-preferences.c
index 14d8c7d..0b49b5e 100644
--- a/terminal/terminal-preferences.c
+++ b/terminal/terminal-preferences.c
@@ -92,6 +92,7 @@ enum
   PROP_MISC_TAB_POSITION,
   PROP_MISC_HIGHLIGHT_URLS,
   PROP_MISC_MIDDLE_CLICK_OPENS_URI,
+  PROP_MISC_DEFAULT_WORKING_DIR,
   PROP_SCROLLING_BAR,
   PROP_SCROLLING_LINES,
   PROP_SCROLLING_ON_OUTPUT,
@@ -823,6 +824,16 @@ terminal_preferences_class_init (TerminalPreferencesClass *klass)
                             G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
 
   /**
+   * TerminalPreferences:misc-default-working-dir:
+   **/
+  preferences_props[PROP_MISC_DEFAULT_WORKING_DIR] =
+      g_param_spec_string ("misc-default-working-dir",
+                           NULL,
+                           "MiscDefaultWorkingDir",
+                           "",
+                           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+
+  /**
    * TerminalPreferences:scrolling-bar:
    **/
   preferences_props[PROP_SCROLLING_BAR] =
diff --git a/terminal/terminal-window.c b/terminal/terminal-window.c
index 379b775..24cf637 100644
--- a/terminal/terminal-window.c
+++ b/terminal/terminal-window.c
@@ -1343,20 +1343,25 @@ static void
 terminal_window_action_new_tab (GtkAction      *action,
                                 TerminalWindow *window)
 {
-  const gchar *directory;
-  GtkWidget   *terminal;
+  const gchar    *directory = NULL;
+  gchar          *default_dir;
+  TerminalScreen *terminal;
 
-  terminal = g_object_new (TERMINAL_TYPE_SCREEN, NULL);
+  terminal = TERMINAL_SCREEN (g_object_new (TERMINAL_TYPE_SCREEN, NULL));
+  g_object_get (G_OBJECT (window->preferences), "misc-default-working-dir", &default_dir, NULL);
 
-  if (G_LIKELY (window->active != NULL))
-    {
-      directory = terminal_screen_get_working_directory (window->active);
-      terminal_screen_set_working_directory (TERMINAL_SCREEN (terminal),
-                                             directory);
-    }
+  if (!g_str_equal (default_dir, ""))
+    directory = default_dir;
+  else if (G_LIKELY (window->active != NULL))
+    directory = terminal_screen_get_working_directory (window->active);
 
-  terminal_window_add (window, TERMINAL_SCREEN (terminal));
-  terminal_screen_launch_child (TERMINAL_SCREEN (terminal));
+  if (directory != NULL)
+    terminal_screen_set_working_directory (terminal, directory);
+
+  g_free (default_dir);
+
+  terminal_window_add (window, terminal);
+  terminal_screen_launch_child (terminal);
 }
 
 
@@ -1365,13 +1370,20 @@ static void
 terminal_window_action_new_window (GtkAction      *action,
                                    TerminalWindow *window)
 {
-  const gchar *directory;
+  const gchar *directory = NULL;
+  gchar       *default_dir;
 
-  if (G_LIKELY (window->active != NULL))
-    {
-      directory = terminal_screen_get_working_directory (window->active);
-      g_signal_emit (G_OBJECT (window), window_signals[NEW_WINDOW], 0, directory);
-    }
+  g_object_get (G_OBJECT (window->preferences), "misc-default-working-dir", &default_dir, NULL);
+
+  if (!g_str_equal (default_dir, ""))
+    directory = default_dir;
+  else if (G_LIKELY (window->active != NULL))
+    directory = terminal_screen_get_working_directory (window->active);
+
+  if (directory != NULL)
+    g_signal_emit (G_OBJECT (window), window_signals[NEW_WINDOW], 0, directory);
+
+  g_free (default_dir);
 }
 
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list