diff -Naur xfwm4-4.14.0-orig/defaults/defaults xfwm4-4.14.0/defaults/defaults
--- xfwm4-4.14.0-orig/defaults/defaults 2019-08-11 22:53:12.000000000 +0200
+++ xfwm4-4.14.0/defaults/defaults 2019-09-02 16:19:58.027336491 +0200
@@ -26,6 +26,7 @@
full_width_title=true
horiz_scroll_opacity=false
inactive_opacity=100
+invert_scroll_workspaces=false
maximized_offset=0
mousewheel_rollup=true
move_opacity=100
diff -Naur xfwm4-4.14.0-orig/settings-dialogs/Makefile.in xfwm4-4.14.0/settings-dialogs/Makefile.in
--- xfwm4-4.14.0-orig/settings-dialogs/Makefile.in 2019-08-11 22:54:48.000000000 +0200
+++ xfwm4-4.14.0/settings-dialogs/Makefile.in 2019-09-02 16:19:58.027336491 +0200
@@ -1046,8 +1046,8 @@
@MAINTAINER_MODE_TRUE@xfwm4-dialog_ui.h: xfwm4-dialog.glade
@MAINTAINER_MODE_TRUE@ $(AM_V_GEN) $(XDT_CSOURCE) --static --strip-comments --strip-content --name=xfwm4_dialog_ui $< >$@
-@MAINTAINER_MODE_TRUE@xfwm4-tweaks-dialog_ui.h: xfwm4-tweaks-dialog.glade
-@MAINTAINER_MODE_TRUE@ $(AM_V_GEN) $(XDT_CSOURCE) --static --strip-comments --strip-content --name=tweaks_dialog_ui $< >$@
+xfwm4-tweaks-dialog_ui.h: xfwm4-tweaks-dialog.glade
+ $(AM_V_GEN) xdt-csource --static --strip-comments --strip-content --name=tweaks_dialog_ui $< >$@
@MAINTAINER_MODE_TRUE@workspace-resource.h:
@MAINTAINER_MODE_TRUE@ $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) $(srcdir)/workspace.gresource.xml --target=$@ --generate-header
diff -Naur xfwm4-4.14.0-orig/settings-dialogs/tweaks-settings.c xfwm4-4.14.0/settings-dialogs/tweaks-settings.c
--- xfwm4-4.14.0-orig/settings-dialogs/tweaks-settings.c 2019-08-11 22:53:12.000000000 +0200
+++ xfwm4-4.14.0/settings-dialogs/tweaks-settings.c 2019-09-02 16:19:58.027336491 +0200
@@ -123,6 +123,12 @@
}
static void
+cb_scroll_workspaces_toggled (GtkToggleButton *toggle, GtkWidget *invert)
+{
+ gtk_widget_set_sensitive (invert, gtk_toggle_button_get_active (toggle));
+}
+
+static void
cb_activate_placement_center_radio_toggled (GtkToggleButton *toggle, XfconfChannel *channel)
{
if (gtk_toggle_button_get_active (toggle))
@@ -197,6 +203,7 @@
/* Workspaces tab */
GtkWidget *scroll_workspaces_check = GTK_WIDGET (gtk_builder_get_object (builder, "scroll_workspaces_check"));
+ GtkWidget *invert_scroll_workspaces_check = GTK_WIDGET (gtk_builder_get_object (builder, "invert_scroll_workspaces_check"));
GtkWidget *toggle_workspaces_check = GTK_WIDGET (gtk_builder_get_object (builder, "toggle_workspaces_check"));
GtkWidget *wrap_layout_check = GTK_WIDGET (gtk_builder_get_object (builder, "wrap_layout_check"));
GtkWidget *wrap_cycle_check = GTK_WIDGET (gtk_builder_get_object (builder, "wrap_cycle_check"));
@@ -279,6 +286,10 @@
"toggled",
G_CALLBACK (cb_borderless_maximize_button_toggled),
titleless_maximize_check);
+ g_signal_connect (G_OBJECT (scroll_workspaces_check),
+ "toggled",
+ G_CALLBACK (cb_scroll_workspaces_toggled),
+ invert_scroll_workspaces_check);
g_signal_connect (G_OBJECT (placement_center_option),
"toggled",
G_CALLBACK (cb_activate_placement_center_radio_toggled),
@@ -385,6 +396,10 @@
G_TYPE_BOOLEAN,
(GObject *)scroll_workspaces_check, "active");
xfconf_g_property_bind (xfwm4_channel,
+ "/general/invert_scroll_workspaces",
+ G_TYPE_BOOLEAN,
+ (GObject *)invert_scroll_workspaces_check, "active");
+ xfconf_g_property_bind (xfwm4_channel,
"/general/wrap_layout",
G_TYPE_BOOLEAN,
(GObject *)wrap_layout_check, "active");
diff -Naur xfwm4-4.14.0-orig/settings-dialogs/xfwm4-tweaks-dialog.glade xfwm4-4.14.0/settings-dialogs/xfwm4-tweaks-dialog.glade
--- xfwm4-4.14.0-orig/settings-dialogs/xfwm4-tweaks-dialog.glade 2019-08-11 22:53:12.000000000 +0200
+++ xfwm4-4.14.0/settings-dialogs/xfwm4-tweaks-dialog.glade 2019-09-02 16:19:58.031336519 +0200
@@ -601,6 +601,29 @@
+
+
+ False
+ False
+ 1
+
+
+
_Remember and recall previous workspace
when switching via keyboard shortcuts
@@ -614,7 +637,7 @@
False
False
- 1
+ 2
@@ -630,7 +653,7 @@
False
False
- 2
+ 3
@@ -646,7 +669,7 @@
False
False
- 3
+ 4
diff -Naur xfwm4-4.14.0-orig/src/events.c xfwm4-4.14.0/src/events.c
--- xfwm4-4.14.0-orig/src/events.c 2019-08-11 22:53:12.000000000 +0200
+++ xfwm4-4.14.0/src/events.c 2019-09-02 16:19:58.031336519 +0200
@@ -895,11 +895,11 @@
if (event->button == Button4)
{
- workspaceSwitch (screen_info, screen_info->current_ws - 1, NULL, TRUE, event->time);
+ workspaceSwitch (screen_info, screen_info->current_ws - (screen_info->params->invert_scroll_workspaces ? -1 : 1), NULL, TRUE, event->time);
}
else if (event->button == Button5)
{
- workspaceSwitch (screen_info, screen_info->current_ws + 1, NULL, TRUE, event->time);
+ workspaceSwitch (screen_info, screen_info->current_ws + (screen_info->params->invert_scroll_workspaces ? -1 : 1), NULL, TRUE, event->time);
}
}
diff -Naur xfwm4-4.14.0-orig/src/settings.c xfwm4-4.14.0/src/settings.c
--- xfwm4-4.14.0-orig/src/settings.c 2019-08-11 22:53:12.000000000 +0200
+++ xfwm4-4.14.0/src/settings.c 2019-09-02 16:19:58.031336519 +0200
@@ -693,6 +693,7 @@
{"full_width_title", NULL, G_TYPE_BOOLEAN, TRUE},
{"horiz_scroll_opacity", NULL, G_TYPE_BOOLEAN, FALSE},
{"inactive_opacity", NULL, G_TYPE_INT, TRUE},
+ {"invert_scroll_workspaces", NULL, G_TYPE_BOOLEAN, FALSE},
{"margin_bottom", NULL, G_TYPE_INT, FALSE},
{"margin_left", NULL, G_TYPE_INT, FALSE},
{"margin_right", NULL, G_TYPE_INT, FALSE},
@@ -859,6 +860,8 @@
getBoolValue ("wrap_cycle", rc);
screen_info->params->scroll_workspaces =
getBoolValue ("scroll_workspaces", rc);
+ screen_info->params->invert_scroll_workspaces =
+ getBoolValue ("invert_scroll_workspaces", rc);
screen_info->params->wrap_resistance =
getIntValue ("wrap_resistance", rc);
@@ -1368,6 +1371,10 @@
{
screen_info->params->scroll_workspaces = g_value_get_boolean (value);
}
+ else if (!strcmp (name, "invert_scroll_workspaces"))
+ {
+ screen_info->params->invert_scroll_workspaces = g_value_get_boolean (value);
+ }
else if (!strcmp (name, "show_dock_shadow"))
{
screen_info->params->show_dock_shadow = g_value_get_boolean (value);
diff -Naur xfwm4-4.14.0-orig/src/settings.h xfwm4-4.14.0/src/settings.h
--- xfwm4-4.14.0-orig/src/settings.h 2019-08-11 22:53:12.000000000 +0200
+++ xfwm4-4.14.0/src/settings.h 2019-09-02 16:19:58.031336519 +0200
@@ -226,6 +226,7 @@
gboolean raise_with_any_button;
gboolean repeat_urgent_blink;
gboolean scroll_workspaces;
+ gboolean invert_scroll_workspaces;
gboolean show_app_icon;
gboolean show_dock_shadow;
gboolean show_frame_shadow;