From 206c90abd8b71d19bd7a072ce57ba5771873b930 Mon Sep 17 00:00:00 2001 From: Victor Kareh Date: Fri, 15 Aug 2025 07:23:22 -0400 Subject: windows: Add UI for titlebar mouse actions Expose new titlebar mouse actions in the window properties dialog (middle-click, right-click, scroll wheel). Note: requires the matching marco changes to work properly. --- capplets/windows/mate-window-properties.c | 73 +++++++++- capplets/windows/window-properties.ui | 234 +++++++++++++++++++++++++++++- 2 files changed, 295 insertions(+), 12 deletions(-) (limited to 'capplets') diff --git a/capplets/windows/mate-window-properties.c b/capplets/windows/mate-window-properties.c index ccccb03c..45bf0062 100644 --- a/capplets/windows/mate-window-properties.c +++ b/capplets/windows/mate-window-properties.c @@ -50,6 +50,10 @@ #define MARCO_SHOW_TAB_BORDER_KEY "show-tab-border" #define MARCO_BUTTON_LAYOUT_KEY "button-layout" #define MARCO_DOUBLE_CLICK_TITLEBAR_KEY "action-double-click-titlebar" +#define MARCO_MIDDLE_CLICK_TITLEBAR_KEY "action-middle-click-titlebar" +#define MARCO_RIGHT_CLICK_TITLEBAR_KEY "action-right-click-titlebar" +#define MARCO_SCROLL_UP_TITLEBAR_KEY "action-scroll-up-titlebar" +#define MARCO_SCROLL_DOWN_TITLEBAR_KEY "action-scroll-down-titlebar" #define MARCO_FOCUS_KEY "focus-mode" #define MARCO_AUTORAISE_KEY "auto-raise" #define MARCO_AUTORAISE_DELAY_KEY "auto-raise-delay" @@ -77,14 +81,20 @@ static const char *button_layout [MARCO_BUTTON_LAYOUT_COUNT] = { /* keep following enums in sync with marco */ enum { - ACTION_TITLEBAR_TOGGLE_SHADE, + ACTION_TITLEBAR_CLOSE, + ACTION_TITLEBAR_MINIMIZE, ACTION_TITLEBAR_TOGGLE_MAXIMIZE, ACTION_TITLEBAR_TOGGLE_MAXIMIZE_HORIZONTALLY, ACTION_TITLEBAR_TOGGLE_MAXIMIZE_VERTICALLY, - ACTION_TITLEBAR_MINIMIZE, - ACTION_TITLEBAR_NONE, + ACTION_TITLEBAR_TOGGLE_SHADE, + ACTION_TITLEBAR_SHADE, + ACTION_TITLEBAR_UNSHADE, + ACTION_TITLEBAR_RAISE, ACTION_TITLEBAR_LOWER, - ACTION_TITLEBAR_MENU + ACTION_TITLEBAR_TOGGLE_STICK, + ACTION_TITLEBAR_TOGGLE_ABOVE, + ACTION_TITLEBAR_MENU, + ACTION_TITLEBAR_NONE }; enum @@ -108,6 +118,10 @@ static GtkWidget *dialog_win; static GtkWidget *show_tab_border_checkbutton; static GtkWidget *compositing_fast_alt_tab_checkbutton; static GtkWidget *double_click_titlebar_optionmenu; +static GtkWidget *middle_click_titlebar_optionmenu; +static GtkWidget *right_click_titlebar_optionmenu; +static GtkWidget *scroll_up_titlebar_optionmenu; +static GtkWidget *scroll_down_titlebar_optionmenu; static GtkWidget *focus_mode_checkbutton; static GtkWidget *focus_mode_mouse_checkbutton; static GtkWidget *autoraise_checkbutton; @@ -208,6 +222,38 @@ double_click_titlebar_changed_callback (GtkWidget *optionmenu, gtk_combo_box_get_active (GTK_COMBO_BOX (optionmenu))); } +static void +middle_click_titlebar_changed_callback (GtkWidget *optionmenu, + void *data) +{ + g_settings_set_enum (marco_settings, MARCO_MIDDLE_CLICK_TITLEBAR_KEY, + gtk_combo_box_get_active (GTK_COMBO_BOX (optionmenu))); +} + +static void +right_click_titlebar_changed_callback (GtkWidget *optionmenu, + void *data) +{ + g_settings_set_enum (marco_settings, MARCO_RIGHT_CLICK_TITLEBAR_KEY, + gtk_combo_box_get_active (GTK_COMBO_BOX (optionmenu))); +} + +static void +scroll_up_titlebar_changed_callback (GtkWidget *optionmenu, + void *data) +{ + g_settings_set_enum (marco_settings, MARCO_SCROLL_UP_TITLEBAR_KEY, + gtk_combo_box_get_active (GTK_COMBO_BOX (optionmenu))); +} + +static void +scroll_down_titlebar_changed_callback (GtkWidget *optionmenu, + void *data) +{ + g_settings_set_enum (marco_settings, MARCO_SCROLL_DOWN_TITLEBAR_KEY, + gtk_combo_box_get_active (GTK_COMBO_BOX (optionmenu))); +} + static gchar *custom_titlebar_button_layout = NULL; static void @@ -373,6 +419,10 @@ main (int argc, char **argv) gtk_builder_add_callback_symbols (builder, "on_dialog_win_response", G_CALLBACK (response_cb), "on_double_click_titlebar_optionmenu_changed", G_CALLBACK (double_click_titlebar_changed_callback), + "on_middle_click_titlebar_optionmenu_changed", G_CALLBACK (middle_click_titlebar_changed_callback), + "on_right_click_titlebar_optionmenu_changed", G_CALLBACK (right_click_titlebar_changed_callback), + "on_scroll_up_titlebar_optionmenu_changed", G_CALLBACK (scroll_up_titlebar_changed_callback), + "on_scroll_down_titlebar_optionmenu_changed", G_CALLBACK (scroll_down_titlebar_changed_callback), "on_autoraise_delay_spinbutton_value_changed", G_CALLBACK (autoraise_delay_spinbutton_value_callback), "on_titlebar_layout_optionmenu_changed", G_CALLBACK (titlebar_layout_changed_callback), "on_focus_mode_checkbutton_toggled", G_CALLBACK (mouse_focus_toggled_callback), @@ -398,6 +448,10 @@ main (int argc, char **argv) show_tab_border_checkbutton = GET_WIDGET ("show_tab_border_checkbutton"); compositing_fast_alt_tab_checkbutton = GET_WIDGET ("compositing_fast_alt_tab_checkbutton"); double_click_titlebar_optionmenu = GET_WIDGET ("double_click_titlebar_optionmenu"); + middle_click_titlebar_optionmenu = GET_WIDGET ("middle_click_titlebar_optionmenu"); + right_click_titlebar_optionmenu = GET_WIDGET ("right_click_titlebar_optionmenu"); + scroll_up_titlebar_optionmenu = GET_WIDGET ("scroll_up_titlebar_optionmenu"); + scroll_down_titlebar_optionmenu = GET_WIDGET ("scroll_down_titlebar_optionmenu"); focus_mode_checkbutton = GET_WIDGET ("focus_mode_checkbutton"); focus_mode_mouse_checkbutton = GET_WIDGET ("focus_mode_mouse_checkbutton"); autoraise_delay_hbox = GET_WIDGET ("autoraise_delay_hbox"); @@ -427,14 +481,19 @@ main (int argc, char **argv) gtk_combo_box_set_active (GTK_COMBO_BOX (double_click_titlebar_optionmenu), g_settings_get_enum (marco_settings, MARCO_DOUBLE_CLICK_TITLEBAR_KEY)); + gtk_combo_box_set_active (GTK_COMBO_BOX (middle_click_titlebar_optionmenu), + g_settings_get_enum (marco_settings, MARCO_MIDDLE_CLICK_TITLEBAR_KEY)); + gtk_combo_box_set_active (GTK_COMBO_BOX (right_click_titlebar_optionmenu), + g_settings_get_enum (marco_settings, MARCO_RIGHT_CLICK_TITLEBAR_KEY)); + gtk_combo_box_set_active (GTK_COMBO_BOX (scroll_up_titlebar_optionmenu), + g_settings_get_enum (marco_settings, MARCO_SCROLL_UP_TITLEBAR_KEY)); + gtk_combo_box_set_active (GTK_COMBO_BOX (scroll_down_titlebar_optionmenu), + g_settings_get_enum (marco_settings, MARCO_SCROLL_DOWN_TITLEBAR_KEY)); set_titlebar_button_layout (); set_alt_click_value (); - gtk_combo_box_set_active (GTK_COMBO_BOX (double_click_titlebar_optionmenu), - g_settings_get_enum (marco_settings, MARCO_DOUBLE_CLICK_TITLEBAR_KEY)); - /* Behaviour */ g_settings_bind (marco_settings, MARCO_SHOW_TAB_BORDER_KEY, diff --git a/capplets/windows/window-properties.ui b/capplets/windows/window-properties.ui index d480f960..aa531869 100644 --- a/capplets/windows/window-properties.ui +++ b/capplets/windows/window-properties.ui @@ -279,11 +279,19 @@ Author: Robert Buj True False - Roll up - Maximize - Maximize Horizontally - Maximize Vertically + Close Minimize + Toggle Maximize + Toggle Maximize Horizontally + Toggle Maximize Vertically + Toggle Shade + Shade + Unshade + Raise + Lower + Toggle Stick + Toggle Above + Menu None @@ -298,7 +306,223 @@ Author: Robert Buj False True - 8 + 0 + + + + + True + False + 6 + + + True + False + _Middle-click titlebar action: + True + middle_click_titlebar_optionmenu + + + False + True + 0 + + + + + True + False + + Close + Minimize + Toggle Maximize + Toggle Maximize Horizontally + Toggle Maximize Vertically + Toggle Shade + Shade + Unshade + Raise + Lower + Toggle Stick + Toggle Above + Menu + None + + + + + False + True + 1 + + + + + False + True + 1 + + + + + True + False + 6 + + + True + False + _Right-click titlebar action: + True + right_click_titlebar_optionmenu + + + False + True + 0 + + + + + True + False + + Close + Minimize + Toggle Maximize + Toggle Maximize Horizontally + Toggle Maximize Vertically + Toggle Shade + Shade + Unshade + Raise + Lower + Toggle Stick + Toggle Above + Menu + None + + + + + False + True + 1 + + + + + False + True + 2 + + + + + True + False + 6 + + + True + False + _Scroll up titlebar action: + True + scroll_up_titlebar_optionmenu + + + False + True + 0 + + + + + True + False + + Close + Minimize + Toggle Maximize + Toggle Maximize Horizontally + Toggle Maximize Vertically + Toggle Shade + Shade + Unshade + Raise + Lower + Toggle Stick + Toggle Above + Menu + None + + + + + False + True + 1 + + + + + False + True + 3 + + + + + True + False + 6 + + + True + False + Scroll _down titlebar action: + True + scroll_down_titlebar_optionmenu + + + False + True + 0 + + + + + True + False + + Close + Minimize + Toggle Maximize + Toggle Maximize Horizontally + Toggle Maximize Vertically + Toggle Shade + Shade + Unshade + Raise + Lower + Toggle Stick + Toggle Above + Menu + None + + + + + False + True + 1 + + + + + False + True + 4 -- cgit v1.2.1