[gnome-terminal/gnome-3-34-ntfy-opn-ttl-ts: 14/16] Restore the action and shortcut to set a static title from the menus
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-terminal/gnome-3-34-ntfy-opn-ttl-ts: 14/16] Restore the action and shortcut to set a static title from the menus
- Date: Tue, 2 Apr 2019 16:17:57 +0000 (UTC)
commit 321a60b5f31a1031b055ee762a7010005fe7ca40
Author: Debarshi Ray <debarshir gnome org>
Date: Wed May 25 13:47:36 2016 +0200
Restore the action and shortcut to set a static title from the menus
This reverts 9bbe19e98f62aa3c9020913a3a5a8080a5177505 with various
minor adjustments to keep up with later changes.
https://bugzilla.redhat.com/show_bug.cgi?id=1296110
src/org.gnome.Terminal.gschema.xml | 4 ++
src/terminal-accels.c | 2 +
src/terminal-window.c | 75 ++++++++++++++++++++++++++++++++++++++
3 files changed, 81 insertions(+)
---
diff --git a/src/org.gnome.Terminal.gschema.xml b/src/org.gnome.Terminal.gschema.xml
index 0c50f82f..aaa9e0e9 100644
--- a/src/org.gnome.Terminal.gschema.xml
+++ b/src/org.gnome.Terminal.gschema.xml
@@ -475,6 +475,10 @@
<default>'disabled'</default>
<summary>Keyboard shortcut to toggle the read-only state</summary>
</key>
+ <key name="set-terminal-title" type="s">
+ <default>'disabled'</default>
+ <summary>Keyboard shortcut to set the terminal title</summary>
+ </key>
<key name="reset" type="s">
<default>'disabled'</default>
<summary>Keyboard shortcut to reset the terminal</summary>
diff --git a/src/terminal-accels.c b/src/terminal-accels.c
index 75ac3a1e..b39e80b5 100644
--- a/src/terminal-accels.c
+++ b/src/terminal-accels.c
@@ -76,6 +76,7 @@
#define KEY_RESET "reset"
#define KEY_SAVE_CONTENTS "save-contents"
#define KEY_SELECT_ALL "select-all"
+#define KEY_SET_TERMINAL_TITLE "set-terminal-title"
#define KEY_TOGGLE_MENUBAR "toggle-menubar"
#define KEY_ZOOM_IN "zoom-in"
#define KEY_ZOOM_NORMAL "zoom-normal"
@@ -165,6 +166,7 @@ static KeyEntry terminal_entries[] = {
ENTRY (N_("Read-Only"), KEY_READ_ONLY, "read-only", NULL, NULL ),
ENTRY (N_("Reset"), KEY_RESET, "reset", "b", "false"),
ENTRY (N_("Reset and Clear"), KEY_RESET_AND_CLEAR, "reset", "b", "true" ),
+ ENTRY (N_("Set Title"), KEY_SET_TERMINAL_TITLE, "set-title", NULL, NULL ),
};
static KeyEntry tabs_entries[] = {
diff --git a/src/terminal-window.c b/src/terminal-window.c
index 6028ca87..7fda0fe5 100644
--- a/src/terminal-window.c
+++ b/src/terminal-window.c
@@ -747,6 +747,80 @@ action_select_all_cb (GSimpleAction *action,
vte_terminal_select_all (VTE_TERMINAL (priv->active_screen));
}
+static void
+terminal_set_title_dialog_response_cb (GtkWidget *dialog,
+ int response,
+ TerminalScreen *screen)
+{
+ if (response == GTK_RESPONSE_OK)
+ {
+ GtkEntry *entry;
+ const char *text;
+
+ entry = GTK_ENTRY (g_object_get_data (G_OBJECT (dialog), "title-entry"));
+ text = gtk_entry_get_text (entry);
+ terminal_screen_set_user_title (screen, text);
+ }
+
+ gtk_widget_destroy (dialog);
+}
+
+static void
+action_set_title_cb (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ TerminalWindow *window = user_data;
+ TerminalWindowPrivate *priv = window->priv;
+ GtkWidget *dialog, *message_area, *hbox, *label, *entry;
+
+ if (priv->active_screen == NULL)
+ return;
+
+ /* FIXME: hook the screen up so this dialogue closes if the terminal screen closes */
+
+ dialog = gtk_message_dialog_new (GTK_WINDOW (window),
+ GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_OTHER,
+ GTK_BUTTONS_OK_CANCEL,
+ "%s", "");
+
+ gtk_window_set_title (GTK_WINDOW (dialog), _("Set Title"));
+ gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
+ gtk_window_set_role (GTK_WINDOW (dialog), "gnome-terminal-change-title");
+ gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
+ /* Alternative button order was set automatically by GtkMessageDialog */
+
+ g_signal_connect (dialog, "response",
+ G_CALLBACK (terminal_set_title_dialog_response_cb), priv->active_screen);
+ g_signal_connect (dialog, "delete-event",
+ G_CALLBACK (terminal_util_dialog_response_on_delete), NULL);
+
+ message_area = gtk_message_dialog_get_message_area (GTK_MESSAGE_DIALOG (dialog));
+ gtk_container_foreach (GTK_CONTAINER (message_area), (GtkCallback) gtk_widget_hide, NULL);
+
+ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
+ gtk_box_pack_start (GTK_BOX (message_area), hbox, FALSE, FALSE, 0);
+
+ label = gtk_label_new_with_mnemonic (_("_Title:"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+
+ entry = gtk_entry_new ();
+ gtk_entry_set_width_chars (GTK_ENTRY (entry), 32);
+ gtk_entry_set_activates_default (GTK_ENTRY (entry), TRUE);
+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry);
+ gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0);
+ gtk_widget_show_all (hbox);
+
+ gtk_widget_grab_focus (entry);
+ gtk_entry_set_text (GTK_ENTRY (entry), terminal_screen_get_user_title (priv->active_screen));
+ gtk_editable_select_region (GTK_EDITABLE (entry), 0, -1);
+ g_object_set_data (G_OBJECT (dialog), "title-entry", entry);
+
+ gtk_window_present (GTK_WINDOW (dialog));
+}
+
static void
action_reset_cb (GSimpleAction *action,
GVariant *parameter,
@@ -2116,6 +2190,7 @@ terminal_window_init (TerminalWindow *window)
{ "paste-uris", action_paste_uris_cb, NULL, NULL, NULL },
{ "reset", action_reset_cb, "b", NULL, NULL },
{ "select-all", action_select_all_cb, NULL, NULL, NULL },
+ { "set-title", action_set_title_cb, NULL, NULL, NULL },
{ "size-to", action_size_to_cb, "(uu)", NULL, NULL },
{ "tab-detach", action_tab_detach_cb, NULL, NULL, NULL },
{ "tab-move-left", action_tab_move_left_cb, NULL, NULL, NULL },
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]