diff options
| author | Victor Kareh <[email protected]> | 2025-08-15 07:23:22 -0400 |
|---|---|---|
| committer | Luke from DC <[email protected]> | 2025-09-11 18:39:30 +0000 |
| commit | 206c90abd8b71d19bd7a072ce57ba5771873b930 (patch) | |
| tree | 0cdbffb2deeb6672d1719b64ad65859e306c3374 | |
| parent | d26f436c9bce4a0174044695ac29f216f137ed68 (diff) | |
| download | mate-control-center-206c90abd8b71d19bd7a072ce57ba5771873b930.tar.bz2 mate-control-center-206c90abd8b71d19bd7a072ce57ba5771873b930.tar.xz | |
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.
| -rw-r--r-- | capplets/windows/mate-window-properties.c | 73 | ||||
| -rw-r--r-- | capplets/windows/window-properties.ui | 234 |
2 files changed, 295 insertions, 12 deletions
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 <property name="visible">True</property> <property name="can-focus">False</property> <items> - <item translatable="yes">Roll up</item> - <item translatable="yes">Maximize</item> - <item translatable="yes">Maximize Horizontally</item> - <item translatable="yes">Maximize Vertically</item> + <item translatable="yes">Close</item> <item translatable="yes">Minimize</item> + <item translatable="yes">Toggle Maximize</item> + <item translatable="yes">Toggle Maximize Horizontally</item> + <item translatable="yes">Toggle Maximize Vertically</item> + <item translatable="yes">Toggle Shade</item> + <item translatable="yes">Shade</item> + <item translatable="yes">Unshade</item> + <item translatable="yes">Raise</item> + <item translatable="yes">Lower</item> + <item translatable="yes">Toggle Stick</item> + <item translatable="yes">Toggle Above</item> + <item translatable="yes">Menu</item> <item translatable="yes">None</item> </items> <signal name="changed" handler="on_double_click_titlebar_optionmenu_changed" swapped="no"/> @@ -298,7 +306,223 @@ Author: Robert Buj <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="position">8</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="middle_click_titlebar_action_hbox"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="middle_click_titlebar_label"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes">_Middle-click titlebar action:</property> + <property name="use-underline">True</property> + <property name="mnemonic-widget">middle_click_titlebar_optionmenu</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="middle_click_titlebar_optionmenu"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <items> + <item translatable="yes">Close</item> + <item translatable="yes">Minimize</item> + <item translatable="yes">Toggle Maximize</item> + <item translatable="yes">Toggle Maximize Horizontally</item> + <item translatable="yes">Toggle Maximize Vertically</item> + <item translatable="yes">Toggle Shade</item> + <item translatable="yes">Shade</item> + <item translatable="yes">Unshade</item> + <item translatable="yes">Raise</item> + <item translatable="yes">Lower</item> + <item translatable="yes">Toggle Stick</item> + <item translatable="yes">Toggle Above</item> + <item translatable="yes">Menu</item> + <item translatable="yes">None</item> + </items> + <signal name="changed" handler="on_middle_click_titlebar_optionmenu_changed" swapped="no"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkBox" id="right_click_titlebar_action_hbox"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="right_click_titlebar_label"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes">_Right-click titlebar action:</property> + <property name="use-underline">True</property> + <property name="mnemonic-widget">right_click_titlebar_optionmenu</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="right_click_titlebar_optionmenu"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <items> + <item translatable="yes">Close</item> + <item translatable="yes">Minimize</item> + <item translatable="yes">Toggle Maximize</item> + <item translatable="yes">Toggle Maximize Horizontally</item> + <item translatable="yes">Toggle Maximize Vertically</item> + <item translatable="yes">Toggle Shade</item> + <item translatable="yes">Shade</item> + <item translatable="yes">Unshade</item> + <item translatable="yes">Raise</item> + <item translatable="yes">Lower</item> + <item translatable="yes">Toggle Stick</item> + <item translatable="yes">Toggle Above</item> + <item translatable="yes">Menu</item> + <item translatable="yes">None</item> + </items> + <signal name="changed" handler="on_right_click_titlebar_optionmenu_changed" swapped="no"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkBox" id="scroll_up_titlebar_action_hbox"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="scroll_up_titlebar_label"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes">_Scroll up titlebar action:</property> + <property name="use-underline">True</property> + <property name="mnemonic-widget">scroll_up_titlebar_optionmenu</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="scroll_up_titlebar_optionmenu"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <items> + <item translatable="yes">Close</item> + <item translatable="yes">Minimize</item> + <item translatable="yes">Toggle Maximize</item> + <item translatable="yes">Toggle Maximize Horizontally</item> + <item translatable="yes">Toggle Maximize Vertically</item> + <item translatable="yes">Toggle Shade</item> + <item translatable="yes">Shade</item> + <item translatable="yes">Unshade</item> + <item translatable="yes">Raise</item> + <item translatable="yes">Lower</item> + <item translatable="yes">Toggle Stick</item> + <item translatable="yes">Toggle Above</item> + <item translatable="yes">Menu</item> + <item translatable="yes">None</item> + </items> + <signal name="changed" handler="on_scroll_up_titlebar_optionmenu_changed" swapped="no"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">3</property> + </packing> + </child> + <child> + <object class="GtkBox" id="scroll_down_titlebar_action_hbox"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="scroll_down_titlebar_label"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes">Scroll _down titlebar action:</property> + <property name="use-underline">True</property> + <property name="mnemonic-widget">scroll_down_titlebar_optionmenu</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="scroll_down_titlebar_optionmenu"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <items> + <item translatable="yes">Close</item> + <item translatable="yes">Minimize</item> + <item translatable="yes">Toggle Maximize</item> + <item translatable="yes">Toggle Maximize Horizontally</item> + <item translatable="yes">Toggle Maximize Vertically</item> + <item translatable="yes">Toggle Shade</item> + <item translatable="yes">Shade</item> + <item translatable="yes">Unshade</item> + <item translatable="yes">Raise</item> + <item translatable="yes">Lower</item> + <item translatable="yes">Toggle Stick</item> + <item translatable="yes">Toggle Above</item> + <item translatable="yes">Menu</item> + <item translatable="yes">None</item> + </items> + <signal name="changed" handler="on_scroll_down_titlebar_optionmenu_changed" swapped="no"/> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">4</property> </packing> </child> </object> |
