diff -Naur xfwm4-4.5.91-orig/defaults/defaults xfwm4-4.5.91/defaults/defaults
--- xfwm4-4.5.91-orig/defaults/defaults 2008-10-10 00:42:42.000000000 +0200
+++ xfwm4-4.5.91/defaults/defaults 2008-11-01 16:52:26.539539519 +0100
@@ -19,6 +19,7 @@
frame_opacity=100
full_width_title=true
inactive_opacity=100
+invert_scroll_workspaces=false
keytheme=Default
maximized_offset=0
move_opacity=100
diff -Naur xfwm4-4.5.91-orig/settings-dialogs/tweaks-settings.c xfwm4-4.5.91/settings-dialogs/tweaks-settings.c
--- xfwm4-4.5.91-orig/settings-dialogs/tweaks-settings.c 2008-10-13 13:39:21.000000000 +0200
+++ xfwm4-4.5.91/settings-dialogs/tweaks-settings.c 2008-11-01 16:50:16.328812562 +0100
@@ -110,6 +110,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))
@@ -165,6 +171,7 @@
/* Workspaces tab */
GtkWidget *scroll_workspaces_check = glade_xml_get_widget (gxml, "scroll_workspaces_check");
+ GtkWidget *invert_scroll_workspaces_check = glade_xml_get_widget (gxml, "invert_scroll_workspaces_check");
GtkWidget *toggle_workspaces_check = glade_xml_get_widget (gxml, "toggle_workspaces_check");
GtkWidget *wrap_layout_check = glade_xml_get_widget (gxml, "wrap_layout_check");
GtkWidget *wrap_cycle_check = glade_xml_get_widget (gxml, "wrap_cycle_check");
@@ -249,6 +256,12 @@
G_CALLBACK (cb_prevent_focus_stealing_check_button_toggled),
prevent_focus_stealing_box);
#endif
+
+ 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),
@@ -327,6 +340,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.5.91-orig/settings-dialogs/xfwm4-tweaks-dialog.glade xfwm4-4.5.91/settings-dialogs/xfwm4-tweaks-dialog.glade
--- xfwm4-4.5.91-orig/settings-dialogs/xfwm4-tweaks-dialog.glade 2008-10-10 00:42:41.000000000 +0200
+++ xfwm4-4.5.91/settings-dialogs/xfwm4-tweaks-dialog.glade 2008-11-01 16:50:02.740533621 +0100
@@ -377,6 +377,29 @@
+
+ True
+ 6
+ 12
+
+
+ True
+ False
+ True
+ _Invert mouse wheel workspace switching direction
+ True
+ 0
+ True
+
+
+
+
+ False
+ False
+ 1
+
+
+
True
True
@@ -389,7 +412,7 @@
False
False
- 1
+ 2
@@ -404,7 +427,7 @@
False
False
- 2
+ 3
@@ -419,7 +442,7 @@
False
False
- 3
+ 4
diff -Naur xfwm4-4.5.91-orig/src/events.c xfwm4-4.5.91/src/events.c
--- xfwm4-4.5.91-orig/src/events.c 2008-10-14 10:10:49.000000000 +0200
+++ xfwm4-4.5.91/src/events.c 2008-11-01 16:52:47.659991662 +0100
@@ -835,11 +835,13 @@
if (ev->button == Button4)
{
- workspaceSwitch (screen_info, screen_info->current_ws - 1, NULL, TRUE, ev->time);
+ workspaceSwitch (screen_info, screen_info->current_ws - (screen_info->params->invert_scroll_workspaces ? -1 : 1), NULL, TRUE, ev->time);
+
}
else if (ev->button == Button5)
{
- workspaceSwitch (screen_info, screen_info->current_ws + 1, NULL, TRUE, ev->time);
+ workspaceSwitch (screen_info, screen_info->current_ws + (screen_info->params->invert_scroll_workspaces ? -1 : 1), NULL, TRUE, ev->time);
+
}
}
diff -Naur xfwm4-4.5.91-orig/src/settings.c xfwm4-4.5.91/src/settings.c
--- xfwm4-4.5.91-orig/src/settings.c 2008-10-10 00:42:42.000000000 +0200
+++ xfwm4-4.5.91/src/settings.c 2008-11-01 16:54:54.438644152 +0100
@@ -655,6 +655,7 @@
{"inactive_hilight_2", NULL, G_TYPE_STRING, FALSE},
{"inactive_shadow_2", NULL, G_TYPE_STRING, FALSE},
{"inactive_mid_2", NULL, G_TYPE_STRING, FALSE},
+ {"invert_scroll_workspaces", NULL, G_TYPE_BOOLEAN, FALSE},
/* You can change the order of the following parameters */
{"activate_action", NULL, G_TYPE_STRING, TRUE},
{"borderless_maximize", NULL, G_TYPE_BOOLEAN, TRUE},
@@ -677,6 +678,7 @@
{"frame_opacity", NULL, G_TYPE_INT, TRUE},
{"full_width_title", NULL, G_TYPE_BOOLEAN, TRUE},
{"inactive_opacity", NULL, G_TYPE_INT, TRUE},
+ {"invert_scroll_workspaces", NULL, G_TYPE_BOOLEAN, FALSE},
{"keytheme", NULL, G_TYPE_STRING, TRUE},
{"margin_bottom", NULL, G_TYPE_INT, FALSE},
{"margin_left", NULL, G_TYPE_INT, FALSE},
@@ -933,6 +935,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);
@@ -1327,6 +1331,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, "toggle_workspaces"))
{
screen_info->params->toggle_workspaces = g_value_get_boolean (value);
diff -Naur xfwm4-4.5.91-orig/src/settings.h xfwm4-4.5.91/src/settings.h
--- xfwm4-4.5.91-orig/src/settings.h 2008-10-10 00:42:42.000000000 +0200
+++ xfwm4-4.5.91/src/settings.h 2008-11-01 16:53:16.000579394 +0100
@@ -200,6 +200,7 @@
gboolean focus_hint;
gboolean focus_new;
gboolean full_width_title;
+ gboolean invert_scroll_workspaces;
gboolean prevent_focus_stealing;
gboolean raise_on_click;
gboolean raise_on_focus;