diff options
author | Paul Gilbert | 2015-07-16 20:21:40 -0400 |
---|---|---|
committer | Paul Gilbert | 2015-07-16 20:21:40 -0400 |
commit | 476d127de4be012a3e8f86bf1cca961e2d268b4a (patch) | |
tree | 8c0a5f7f764ff99c92fb3728b4ced6f04f1d620d /engines/sherlock | |
parent | cce1e5012c25d5fd823584ad79b896ee0ff04236 (diff) | |
download | scummvm-rg350-476d127de4be012a3e8f86bf1cca961e2d268b4a.tar.gz scummvm-rg350-476d127de4be012a3e8f86bf1cca961e2d268b4a.tar.bz2 scummvm-rg350-476d127de4be012a3e8f86bf1cca961e2d268b4a.zip |
SHERLOCK: RT: Fix scrollbar event handling
Diffstat (limited to 'engines/sherlock')
-rw-r--r-- | engines/sherlock/tattoo/widget_base.cpp | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/engines/sherlock/tattoo/widget_base.cpp b/engines/sherlock/tattoo/widget_base.cpp index 5d81c40cc5..4df25961e0 100644 --- a/engines/sherlock/tattoo/widget_base.cpp +++ b/engines/sherlock/tattoo/widget_base.cpp @@ -251,28 +251,26 @@ void WidgetBase::handleScrollbarEvents(int index, int pageSize, int count) { if ((!events._pressed && !events._rightReleased) || !_scroll) return; - Common::Rect r(_bounds.right - BUTTON_SIZE - 3, _bounds.top, _bounds.right - 3, _bounds.bottom - 6); + Common::Rect r(_bounds.right - BUTTON_SIZE - 3, _bounds.top + 3, _bounds.right - 3, _bounds.bottom - 3); // Calculate the Scroll Position bar - int barHeight = pageSize * (r.height() - BUTTON_SIZE * 2) / count; - barHeight = CLIP(barHeight, BUTTON_SIZE, r.height() - BUTTON_SIZE * 2); - - int barY = (count <= pageSize) ? 3 + BUTTON_SIZE : (r.height() - BUTTON_SIZE * 2 - barHeight) * FIXED_INT_MULTIPLIER - / (count - pageSize) * index / FIXED_INT_MULTIPLIER + 3 + BUTTON_SIZE; + int barHeight = (_bounds.height() - BUTTON_SIZE * 2) * pageSize / count; + barHeight = CLIP(barHeight, BUTTON_SIZE, _bounds.height() - BUTTON_SIZE * 2); + int barY = (r.height() - BUTTON_SIZE * 2 - barHeight) * index / pageSize + r.top + BUTTON_SIZE; - if (Common::Rect(r.left, r.top + 3, r.left + BUTTON_SIZE, r.top + BUTTON_SIZE + 3).contains(mousePos)) + if (Common::Rect(r.left, r.top, r.right, r.top + BUTTON_SIZE).contains(mousePos)) // Mouse on scroll up button ui._scrollHighlight = SH_SCROLL_UP; - else if (Common::Rect(r.left, r.top + BUTTON_SIZE + 3, r.left + BUTTON_SIZE, barY - BUTTON_SIZE - 3).contains(mousePos)) + else if (Common::Rect(r.left, r.top + BUTTON_SIZE, r.right, barY).contains(mousePos)) // Mouse on paging up area (the area of the vertical bar above the thumbnail) ui._scrollHighlight = SH_PAGE_UP; - else if (Common::Rect(r.left, r.top + barY, r.left + BUTTON_SIZE, r.top + barY + barHeight).contains(mousePos)) + else if (Common::Rect(r.left, barY, r.right, barY + barHeight).contains(mousePos)) // Mouse on scrollbar thumb ui._scrollHighlight = SH_THUMBNAIL; - else if (Common::Rect(r.left, r.top + barY + barHeight, r.left + BUTTON_SIZE, r.bottom - BUTTON_SIZE + 3).contains(mousePos)) + else if (Common::Rect(r.left, barY + barHeight, r.right, r.bottom - BUTTON_SIZE).contains(mousePos)) // Mouse on paging down area (the area of the vertical bar below the thumbnail) ui._scrollHighlight = SH_PAGE_DOWN; - else if (Common::Rect(r.left, r.bottom - BUTTON_SIZE + 3, r.left + BUTTON_SIZE, r.bottom).contains(mousePos)) + else if (Common::Rect(r.left, r.bottom - BUTTON_SIZE, r.right, r.bottom).contains(mousePos)) // Mouse on scroll down button ui._scrollHighlight = SH_SCROLL_DOWN; } |