Add two extra options for disabling Shift-F10 and Shift-Up/Shift-Down. Terminal's usage of these keys - specifically, Shift-Up and Shift-Down - gets right in the way of my preferred usage of these keys - in a readline-using shell, that is history searching (history-search-backward and history-search-forward). Signed-off-by: Darren Salt diff -ur xfce4-terminal-0.2.6.std/terminal/terminal-preferences-dialog.c xfce4-terminal-0.2.6/terminal/terminal-preferences-dialog.c --- xfce4-terminal-0.2.6.std/terminal/terminal-preferences-dialog.c 2007-05-12 22:36:08.000000000 +0100 +++ xfce4-terminal-0.2.6/terminal/terminal-preferences-dialog.c 2007-05-12 23:05:28.000000000 +0100 @@ -848,6 +848,16 @@ gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0); gtk_widget_show (button); + button = gtk_check_button_new_with_mnemonic (_("Disable _menu pop-up via Shift-F10")); + exo_mutual_binding_new (G_OBJECT (dialog->preferences), "disable-menu-popup-shortcut", G_OBJECT (button), "active"); + gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, TRUE, 0); + gtk_widget_show (button); + + button = gtk_check_button_new_with_mnemonic (_("Disable single-line _scrolling via Shift-Up and Shift-Down")); + exo_mutual_binding_new (G_OBJECT (dialog->preferences), "disable-single-line-scrolling", G_OBJECT (button), "active"); + gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, TRUE, 0); + gtk_widget_show (button); + icon = gtk_widget_render_icon (GTK_WIDGET (dialog->icon_bar), TERMINAL_STOCK_SHORTCUTS, GTK_ICON_SIZE_DIALOG, diff -ur xfce4-terminal-0.2.6.std/terminal/terminal-preferences.c xfce4-terminal-0.2.6/terminal/terminal-preferences.c --- xfce4-terminal-0.2.6.std/terminal/terminal-preferences.c 2007-01-20 14:30:51.000000000 +0000 +++ xfce4-terminal-0.2.6/terminal/terminal-preferences.c 2007-05-12 22:52:15.000000000 +0100 @@ -101,6 +101,8 @@ PROP_COLOR_PALETTE16, PROP_COMMAND_UPDATE_RECORDS, PROP_COMMAND_LOGIN_SHELL, + PROP_DISABLE_MENU_POPUP_SHORTCUT, + PROP_DISABLE_SINGLE_LINE_SCROLLING, PROP_FONT_ALLOW_BOLD, PROP_FONT_ANTI_ALIAS, PROP_FONT_NAME, @@ -946,6 +948,28 @@ * TerminalPreferences:font-allow-bold: **/ g_object_class_install_property (gobject_class, + PROP_DISABLE_MENU_POPUP_SHORTCUT, + g_param_spec_boolean ("disable-menu-popup-shortcut", + "disable-menu-popup-shortcut", + "disable-menu-popup-shortcut", + FALSE, + EXO_PARAM_READWRITE)); + + /** + * TerminalPreferences:font-allow-bold: + **/ + g_object_class_install_property (gobject_class, + PROP_DISABLE_SINGLE_LINE_SCROLLING, + g_param_spec_boolean ("disable-single-line-scrolling", + "disable-single-line-scrolling", + "disable-single-line-scrolling", + FALSE, + EXO_PARAM_READWRITE)); + + /** + * TerminalPreferences:font-allow-bold: + **/ + g_object_class_install_property (gobject_class, PROP_FONT_ALLOW_BOLD, g_param_spec_boolean ("font-allow-bold", "font-allow-bold", diff -ur xfce4-terminal-0.2.6.std/terminal/terminal-widget.c xfce4-terminal-0.2.6/terminal/terminal-widget.c --- xfce4-terminal-0.2.6.std/terminal/terminal-widget.c 2007-05-12 22:36:08.000000000 +0100 +++ xfce4-terminal-0.2.6/terminal/terminal-widget.c 2007-05-12 23:07:11.000000000 +0100 @@ -592,6 +592,14 @@ } +static gboolean +pref_is_active (GtkWidget *widget, const char *pref) +{ + gboolean ret; + g_object_get (G_OBJECT (TERMINAL_WIDGET (widget)->preferences), pref, &ret, NULL); + return ret; +} + static gboolean terminal_widget_key_press_event (GtkWidget *widget, @@ -603,7 +611,9 @@ gint y; /* popup context menu if "Menu" or "F10" is pressed */ - if (event->keyval == GDK_Menu || ((event->state & GDK_SHIFT_MASK) != 0 && event->keyval == GDK_F10)) + if (event->keyval == GDK_Menu || + ( (event->state & GDK_SHIFT_MASK) != 0 && event->keyval == GDK_F10 + && !pref_is_active (widget, "disable-menu-popup-shortcut"))) { gtk_widget_get_pointer (widget, &x, &y); terminal_widget_context_menu (TERMINAL_WIDGET (widget), 0, event->time, x, y); @@ -611,14 +621,16 @@ } /* scroll up one line with "Up" */ else if ((event->state & GDK_SHIFT_MASK) != 0 - && (event->keyval == GDK_Up || event->keyval == GDK_KP_Up)) + && (event->keyval == GDK_Up || event->keyval == GDK_KP_Up) + && !pref_is_active (widget, "disable-single-line-scrolling")) { gtk_adjustment_set_value (adjustment, adjustment->value - 1); return TRUE; } /* scroll down one line with "Down" */ else if ((event->state & GDK_SHIFT_MASK) != 0 - && (event->keyval == GDK_Down || event->keyval == GDK_KP_Down)) + && (event->keyval == GDK_Down || event->keyval == GDK_KP_Down) + && !pref_is_active (widget, "disable-single-line-scrolling")) { value = MIN (adjustment->value + 1, adjustment->upper - adjustment->page_size); gtk_adjustment_set_value (adjustment, value);