}
+void BScreen::saveRootScrollDirection(int d) {
+ resource.root_scroll = d;
+ const char *dir;
+ switch (resource.root_scroll) {
+ case NoScroll: dir = "None"; break;
+ case ReverseScroll: dir = "Reverse"; break;
+ case NormalScroll: default: dir = "Normal"; break;
+ }
+ config->setValue(screenstr + "rootScrollDirection", dir);
+}
+
+
void BScreen::save_rc(void) {
saveSloppyFocus(resource.sloppy_focus);
saveAutoRaise(resource.auto_raise);
savePlaceIgnoreMaximized(resource.ignore_maximized);
saveAllowScrollLock(resource.allow_scroll_lock);
saveWorkspaceWarping(resource.workspace_warping);
+ saveRootScrollDirection(resource.root_scroll);
toolbar->save_rc();
slit->save_rc();
resource.ignore_maximized))
resource.ignore_maximized = true;
-if (! config->getValue(screenstr + "disableBindingsWithScrollLock",
+ if (! config->getValue(screenstr + "disableBindingsWithScrollLock",
resource.allow_scroll_lock))
- resource.allow_scroll_lock = false;
+ resource.allow_scroll_lock = false;
if (! config->getValue(screenstr + "workspaceWarping",
resource.workspace_warping))
resource.workspace_warping = false;
+
+ resource.root_scroll = NormalScroll;
+ if (config->getValue(screenstr + "rootScrollDirection", s)) {
+ if (s == "None")
+ resource.root_scroll = NoScroll;
+ else if (s == "Reverse")
+ resource.root_scroll = ReverseScroll;
+ }
}
rootmenu->show();
}
// mouse wheel up
- } else if (xbutton->button == 4) {
+ } else if ((xbutton->button == 4 && resource.root_scroll == NormalScroll) ||
+ (xbutton->button == 5 && resource.root_scroll == ReverseScroll)) {
if (getCurrentWorkspaceID() >= getWorkspaceCount() - 1)
changeWorkspaceID(0);
else
changeWorkspaceID(getCurrentWorkspaceID() + 1);
// mouse wheel down
- } else if (xbutton->button == 5) {
+ } else if ((xbutton->button == 5 && resource.root_scroll == NormalScroll) ||
+ (xbutton->button == 4 && resource.root_scroll == ReverseScroll)) {
if (getCurrentWorkspaceID() == 0)
changeWorkspaceID(getWorkspaceCount() - 1);
else
unsigned int workspaces;
int toolbar_placement, toolbar_width_percent, placement_policy,
- edge_snap_threshold, row_direction, col_direction;
+ edge_snap_threshold, row_direction, col_direction, root_scroll;
unsigned int handle_width, bevel_width, frame_width, border_width,
resize_zones;
WindowShade, WindowIconify, WindowMaximize, WindowClose, WindowRaise,
WindowLower, WindowStick, WindowKill, SetStyle };
enum FocusModel { SloppyFocus, ClickToFocus };
+ enum RootScrollDirection { NoScroll, NormalScroll, ReverseScroll };
BScreen(Blackbox *bb, unsigned int scrn);
~BScreen(void);
inline bool allowScrollLock(void) const { return resource.allow_scroll_lock; }
inline bool doWorkspaceWarping(void) const
{ return resource.workspace_warping; }
+ inline int rootScrollDirection(void) const { return resource.root_scroll; }
inline const GC &getOpGC(void) const { return opGC; }
void savePlaceIgnoreMaximized(bool i);
void saveAllowScrollLock(bool a);
void saveWorkspaceWarping(bool w);
+ void saveRootScrollDirection(int d);
inline void iconUpdate(void) { iconmenu->update(); }
#ifdef HAVE_STRFTIME