make root scrolling customizable
Dana Jansens danakj@orodu.net
2 files changed,
31 insertions(+),
5 deletions(-)
M
src/Screen.cc
→
src/Screen.cc
@@ -544,6 +544,18 @@ resource.workspace_warping);
} +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);@@ -572,6 +584,7 @@ savePlaceIgnoreShaded(resource.ignore_shaded);
savePlaceIgnoreMaximized(resource.ignore_maximized); saveAllowScrollLock(resource.allow_scroll_lock); saveWorkspaceWarping(resource.workspace_warping); + saveRootScrollDirection(resource.root_scroll); toolbar->save_rc(); slit->save_rc();@@ -707,13 +720,21 @@ if (! config->getValue(screenstr + "placementIgnoreMaximized",
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; + } }@@ -2242,13 +2263,15 @@ blackbox->checkMenu();
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
M
src/Screen.hh
→
src/Screen.hh
@@ -154,7 +154,7 @@ BColor border_color;
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;@@ -196,6 +196,7 @@ enum { Restart = 1, RestartOther, Exit, Shutdown, Execute, Reconfigure,
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);@@ -221,6 +222,7 @@ { return resource.window_corner_snap; }
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; }@@ -294,6 +296,7 @@ void savePlaceIgnoreShaded(bool i);
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