--- gnome-terminal.schemas~ 2004-06-29 15:51:23.000000000 -0700 +++ gnome-terminal.schemas 2004-12-16 09:47:23.022972264 -0800 @@ -11407,6 +11407,25 @@ + /schemas/apps/gnome-terminal/keybindings/duplicate + /apps/gnome-terminal/keybindings/duplicate + gnome-terminal + string + <Ctrl><Shift>d + + Keyboard shortcut to duplicate text + + Keyboard shortcut key for duplicating text---copying + and then pasting it. + Expressed as a string + in the same format used for GTK+ resource files. + If you set the option to the special string "disabled", then there + will be no keyboard shortcut for this action. + + + + + /schemas/apps/gnome-terminal/keybindings/full_screen /apps/gnome-terminal/keybindings/full_screen gnome-terminal --- terminal-accels.c~ 2004-04-25 22:46:24.000000000 -0700 +++ terminal-accels.c 2004-12-16 09:34:47.668803552 -0800 @@ -37,6 +37,7 @@ #define KEY_CLOSE_WINDOW CONF_KEYS_PREFIX"/close_window" #define KEY_COPY CONF_KEYS_PREFIX"/copy" #define KEY_PASTE CONF_KEYS_PREFIX"/paste" +#define KEY_DUPLICATE CONF_KEYS_PREFIX"/duplicate" #define KEY_TOGGLE_MENUBAR CONF_KEYS_PREFIX"/toggle_menubar" #define KEY_FULL_SCREEN CONF_KEYS_PREFIX"/full_screen" #define KEY_RESET CONF_KEYS_PREFIX"/reset" @@ -90,6 +91,8 @@ KEY_COPY, ACCEL_PATH_COPY, 0, 0, NULL, FALSE }, { N_("Paste"), KEY_PASTE, ACCEL_PATH_PASTE, 0, 0, NULL, FALSE }, + { N_("Duplicate"), + KEY_DUPLICATE, ACCEL_PATH_DUPLICATE, 0, 0, NULL, FALSE }, }; static KeyEntry view_entries[] = --- terminal-accels.h~ 2002-10-04 15:29:01.000000000 -0700 +++ terminal-accels.h 2004-12-16 09:34:47.134884720 -0800 @@ -36,6 +36,7 @@ #define ACCEL_PATH_CLOSE_WINDOW ACCEL_PATH_ROOT"/close_window" #define ACCEL_PATH_COPY ACCEL_PATH_ROOT"/copy" #define ACCEL_PATH_PASTE ACCEL_PATH_ROOT"/paste" +#define ACCEL_PATH_DUPLICATE ACCEL_PATH_ROOT"/duplicate" #define ACCEL_PATH_TOGGLE_MENUBAR ACCEL_PATH_ROOT"/toggle_menubar" #define ACCEL_PATH_FULL_SCREEN ACCEL_PATH_ROOT"/full_screen" #define ACCEL_PATH_RESET ACCEL_PATH_ROOT"/reset" --- terminal-screen.c~ 2004-06-28 00:24:12.000000000 -0700 +++ terminal-screen.c 2004-12-16 09:32:48.356941712 -0800 @@ -1200,6 +1200,14 @@ } static void +duplicate_callback (GtkWidget *menu_item, + TerminalScreen *screen) +{ + terminal_widget_copy_clipboard (screen->priv->term); + terminal_widget_paste_clipboard (screen->priv->term); +} + +static void configuration_callback (GtkWidget *menu_item, TerminalScreen *screen) { @@ -1525,6 +1533,13 @@ screen); clip = gtk_clipboard_get (GDK_NONE); gtk_widget_set_sensitive (menu_item, gtk_clipboard_wait_is_text_available (clip)); + + menu_item = append_menuitem (screen->priv->popup_menu, + _("_Duplicate"), + G_CALLBACK(duplicate_callback), + screen); + if (!terminal_screen_get_text_selected (screen)) + gtk_widget_set_sensitive (menu_item, FALSE); menu_item = gtk_separator_menu_item_new (); gtk_widget_show (menu_item); --- terminal-window.c~ 2004-06-28 08:24:55.000000000 -0700 +++ terminal-window.c 2004-12-16 09:35:00.192899600 -0800 @@ -52,6 +52,7 @@ GtkWidget *close_tab_menuitem; GtkWidget *copy_menuitem; GtkWidget *paste_menuitem; + GtkWidget *duplicate_menuitem; GtkWidget *show_menubar_menuitem; GtkWidget *zoom_in_menuitem; GtkWidget *zoom_out_menuitem; @@ -151,6 +152,8 @@ TerminalWindow *window); static void paste_callback (GtkWidget *menuitem, TerminalWindow *window); +static void duplicate_callback (GtkWidget *menuitem, + TerminalWindow *window); static void edit_keybindings_callback (GtkWidget *menuitem, TerminalWindow *window); static void change_configuration_callback (GtkWidget *menuitem, @@ -874,6 +877,11 @@ window); menuitem_icon_visibility (window->priv->paste_menuitem, menus_have_icons); + window->priv->duplicate_menuitem = + append_menuitem (menu, _("_Duplicate"), ACCEL_PATH_DUPLICATE, + G_CALLBACK(duplicate_callback), + window); + mi = gtk_separator_menu_item_new (); gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi); @@ -1088,6 +1096,7 @@ window->priv->main_vbox = NULL; window->priv->copy_menuitem = NULL; window->priv->paste_menuitem = NULL; + window->priv->duplicate_menuitem = NULL; window->priv->edit_config_menuitem = NULL; window->priv->choose_config_menuitem = NULL; window->priv->encoding_menuitem = NULL; @@ -2352,6 +2361,21 @@ } static void +duplicate_callback (GtkWidget *menuitem, + TerminalWindow *window) +{ + GtkWidget *widget; + + if (window->priv->active_term) + { + widget = terminal_screen_get_widget (window->priv->active_term); + + terminal_widget_copy_clipboard (widget); + terminal_widget_paste_clipboard (widget); + } +} + +static void edit_keybindings_callback (GtkWidget *menuitem, TerminalWindow *window) { --- ChangeLog~ 2004-06-29 15:37:28.000000000 -0700 +++ ChangeLog 2004-12-16 09:44:08.040614088 -0800 @@ -1,3 +1,7 @@ +2004-12-16 John Heidemann + + * src/terminal-accels.[ch], src/terminal-screen.c, src/terminal-window.c: add support for "duplicate", i.e., sequential copy then paste + 2004-06-29 Mariano Suárez-Alvarez * configure.in: Version 2.7.3