diff --git a/defaults/defaults b/defaults/defaults index 38d34704b..a1371bf06 100644 --- a/defaults/defaults +++ b/defaults/defaults @@ -28,6 +28,7 @@ horiz_scroll_opacity=false inactive_opacity=100 maximized_offset=0 mousewheel_rollup=true +mousewheel_lower=true move_opacity=100 placement_mode=center placement_ratio=20 diff --git a/settings-dialogs/tweaks-settings.c b/settings-dialogs/tweaks-settings.c index d5f711be6..93174bff9 100644 --- a/settings-dialogs/tweaks-settings.c +++ b/settings-dialogs/tweaks-settings.c @@ -140,6 +140,13 @@ cb_activate_placement_mouse_radio_toggled (GtkToggleButton *toggle, XfconfChanne } } +static void +cb_mousewheel_rollup_button_toggled (GtkToggleButton *toggle, GtkWidget *mousewheel_lower) +{ + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (mousewheel_lower), FALSE); + gtk_widget_set_sensitive (mousewheel_lower, gtk_toggle_button_get_active (toggle)); +} + static void cb_urgent_blink_button_toggled (GtkToggleButton *toggle, GtkWidget *repeat_urgent_blink) { @@ -194,6 +201,7 @@ wm_tweaks_dialog_configure_widgets (GtkBuilder *builder) GtkWidget *urgent_blink = GTK_WIDGET (gtk_builder_get_object (builder, "urgent_blink")); GtkWidget *repeat_urgent_blink = GTK_WIDGET (gtk_builder_get_object (builder, "repeat_urgent_blink")); GtkWidget *mousewheel_rollup = GTK_WIDGET (gtk_builder_get_object (builder, "mousewheel_rollup")); + GtkWidget *mousewheel_lower = GTK_WIDGET (gtk_builder_get_object (builder, "mousewheel_lower")); /* Workspaces tab */ GtkWidget *scroll_workspaces_check = GTK_WIDGET (gtk_builder_get_object (builder, "scroll_workspaces_check")); @@ -299,6 +307,10 @@ wm_tweaks_dialog_configure_widgets (GtkBuilder *builder) "toggled", G_CALLBACK (cb_urgent_blink_button_toggled), repeat_urgent_blink); + g_signal_connect (G_OBJECT (mousewheel_rollup), + "toggled", + G_CALLBACK (cb_mousewheel_rollup_button_toggled), + mousewheel_lower); /* Bind easy properties */ /* Cycling tab */ @@ -370,6 +382,12 @@ wm_tweaks_dialog_configure_widgets (GtkBuilder *builder) "/general/mousewheel_rollup", G_TYPE_BOOLEAN, (GObject *)mousewheel_rollup, "active"); + xfconf_g_property_bind (xfwm4_channel, + "/general/mousewheel_lower", + G_TYPE_BOOLEAN, + (GObject *)mousewheel_lower, "active"); + gtk_widget_set_sensitive (mousewheel_lower, + gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (mousewheel_rollup))); gtk_widget_set_sensitive (repeat_urgent_blink, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (urgent_blink))); gtk_widget_set_sensitive (titleless_maximize_check, diff --git a/settings-dialogs/xfwm4-tweaks-dialog.glade b/settings-dialogs/xfwm4-tweaks-dialog.glade index 38135a7e9..65ae7f4d0 100644 --- a/settings-dialogs/xfwm4-tweaks-dialog.glade +++ b/settings-dialogs/xfwm4-tweaks-dialog.glade @@ -528,6 +528,22 @@ or "skip taskbar" properties set 6 + + + Use mouse wheel on title bar to lo_wer the window + False + True + True + False + True + True + + + False + False + 7 + + Notify of _urgency by making window's decoration blink @@ -541,7 +557,7 @@ or "skip taskbar" properties set False False - 7 + 8 @@ -557,7 +573,7 @@ or "skip taskbar" properties set False False - 8 + 9 diff --git a/src/events.c b/src/events.c index 91c0dd6c5..f672ea2f0 100644 --- a/src/events.c +++ b/src/events.c @@ -835,6 +835,10 @@ titleButton (Client *c, guint state, XfwmEventButton *event) if (screen_info->params->mousewheel_rollup) { clientShade (c); + if (screen_info->params->mousewheel_lower) + { + clientLower (c, None); + } } } } @@ -853,6 +857,10 @@ titleButton (Client *c, guint state, XfwmEventButton *event) if (screen_info->params->mousewheel_rollup) { clientUnshade (c); + if (screen_info->params->mousewheel_lower) + { + clientRaise (c, None); + } } } } diff --git a/src/settings.c b/src/settings.c index c74194b80..eeb5d6722 100644 --- a/src/settings.c +++ b/src/settings.c @@ -697,6 +697,7 @@ loadSettings (ScreenInfo *screen_info) {"margin_top", NULL, G_TYPE_INT, FALSE}, {"maximized_offset", NULL, G_TYPE_INT, TRUE}, {"mousewheel_rollup", NULL, G_TYPE_BOOLEAN, FALSE}, + {"mousewheel_lower", NULL, G_TYPE_BOOLEAN, FALSE}, {"move_opacity", NULL, G_TYPE_INT, TRUE}, {"placement_mode", NULL, G_TYPE_STRING, TRUE}, {"placement_ratio", NULL, G_TYPE_INT, TRUE}, @@ -790,6 +791,8 @@ loadSettings (ScreenInfo *screen_info) getBoolValue ("horiz_scroll_opacity", rc); screen_info->params->mousewheel_rollup = getBoolValue ("mousewheel_rollup", rc); + screen_info->params->mousewheel_lower = + getBoolValue ("mousewheel_lower", rc); screen_info->params->prevent_focus_stealing = getBoolValue ("prevent_focus_stealing", rc); screen_info->params->raise_delay = @@ -1353,6 +1356,10 @@ cb_xfwm4_channel_property_changed(XfconfChannel *channel, const gchar *property_ { screen_info->params->mousewheel_rollup = g_value_get_boolean (value); } + else if (!strcmp (name, "mousewheel_lower")) + { + screen_info->params->mousewheel_lower = g_value_get_boolean (value); + } else if (!strcmp (name, "prevent_focus_stealing")) { screen_info->params->prevent_focus_stealing = g_value_get_boolean (value); diff --git a/src/settings.h b/src/settings.h index f20c6db46..ffa75fcd2 100644 --- a/src/settings.h +++ b/src/settings.h @@ -220,6 +220,7 @@ struct _XfwmParams gboolean full_width_title; gboolean horiz_scroll_opacity; gboolean mousewheel_rollup; + gboolean mousewheel_lower; gboolean prevent_focus_stealing; gboolean raise_on_click; gboolean raise_on_focus;