From d86284c07b29817b93db1875fa1430d221b94a63 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Mon, 29 Jul 2002 14:49:12 +0000 Subject: [PATCH] make root scrolling customizable --- src/Screen.cc | 31 +++++++++++++++++++++++++++---- src/Screen.hh | 5 ++++- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/src/Screen.cc b/src/Screen.cc index d11894ce..d03fa50e 100644 --- a/src/Screen.cc +++ b/src/Screen.cc @@ -544,6 +544,18 @@ void BScreen::saveWorkspaceWarping(bool w) { } +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 @@ void BScreen::save_rc(void) { 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 @@ void BScreen::load_rc(void) { 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 @@ void BScreen::buttonPressEvent(const XButtonEvent *xbutton) { 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 diff --git a/src/Screen.hh b/src/Screen.hh index 12cd960d..2fbf20fd 100644 --- a/src/Screen.hh +++ b/src/Screen.hh @@ -154,7 +154,7 @@ private: 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 @@ public: 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 @@ public: 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 @@ public: 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 -- 2.39.2