From 8458630e50d428ce6154aa303c24367abb34c9e9 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Tue, 22 Aug 2017 09:31:38 +0200 Subject: GRAPHICS: MACGUI: Added support for scrolling with mouse wheel --- graphics/macgui/mactextwindow.cpp | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) (limited to 'graphics/macgui/mactextwindow.cpp') diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp index 4818b5b4aa..c05468c2e3 100644 --- a/graphics/macgui/mactextwindow.cpp +++ b/graphics/macgui/mactextwindow.cpp @@ -313,6 +313,16 @@ bool MacTextWindow::processEvent(Common::Event &event) { if (hasAllFocus()) return MacWindow::processEvent(event); // Pass it to upstream + if (event.type == Common::EVENT_WHEELUP) { + scroll(-2); + return true; + } + + if (event.type == Common::EVENT_WHEELDOWN) { + scroll(2); + return true; + } + if (click == kBorderScrollUp || click == kBorderScrollDown) { if (event.type == Common::EVENT_LBUTTONDOWN) { int consoleHeight = getInnerDimensions().height(); @@ -324,22 +334,12 @@ bool MacTextWindow::processEvent(Common::Event &event) { return true; } else if (event.type == Common::EVENT_LBUTTONUP) { - int oldScrollPos = _scrollPos; - switch (click) { case kBorderScrollUp: - _scrollPos = MAX(0, _scrollPos - kConScrollStep); - undrawCursor(); - _cursorY -= (_scrollPos - oldScrollPos); - _contentIsDirty = true; - _borderIsDirty = true; + scroll(-1); break; case kBorderScrollDown: - _scrollPos = MIN(_mactext->getTextHeight() - kConScrollStep, _scrollPos + kConScrollStep); - undrawCursor(); - _cursorY -= (_scrollPos - oldScrollPos); - _contentIsDirty = true; - _borderIsDirty = true; + scroll(1); break; default: return false; @@ -389,6 +389,17 @@ bool MacTextWindow::processEvent(Common::Event &event) { return MacWindow::processEvent(event); } +void MacTextWindow::scroll(int delta) { + int oldScrollPos = _scrollPos; + + _scrollPos += delta * kConScrollStep; + _scrollPos = CLIP(_scrollPos, 0, _mactext->getTextHeight() - kConScrollStep); + undrawCursor(); + _cursorY -= (_scrollPos - oldScrollPos); + _contentIsDirty = true; + _borderIsDirty = true; +} + void MacTextWindow::startMarking(int x, int y) { x -= getInnerDimensions().left - 2; y -= getInnerDimensions().top; -- cgit v1.2.3