[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