Skip to content

Commit

Permalink
Fix ScrollBar grabber mouse ignores scroll margin
Browse files Browse the repository at this point in the history
(cherry picked from commit blazium-engine/blazium@ca09c1d)
  • Loading branch information
WhalesState authored and Spartan322 committed Oct 25, 2024
1 parent 3a91796 commit ad35df2
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions scene/gui/scroll_bar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ void ScrollBar::gui_input(const Ref<InputEvent> &p_event) {
return;
}

ofs -= decr_size;
ofs -= decr_size + (orientation == VERTICAL ? theme_cache.scroll_style->get_margin(SIDE_TOP) : theme_cache.scroll_style->get_margin(SIDE_LEFT));

if (ofs < grabber_ofs) {
if (scrolling) {
Expand Down Expand Up @@ -153,7 +153,7 @@ void ScrollBar::gui_input(const Ref<InputEvent> &p_event) {
Ref<Texture2D> decr = theme_cache.decrement_icon;

double decr_size = orientation == VERTICAL ? decr->get_height() : decr->get_width();
ofs -= decr_size;
ofs -= decr_size + (orientation == VERTICAL ? theme_cache.scroll_style->get_margin(SIDE_TOP) : theme_cache.scroll_style->get_margin(SIDE_LEFT));

double diff = (ofs - drag.pos_at_click) / get_area_size();

Expand Down Expand Up @@ -250,8 +250,6 @@ void ScrollBar::_notification(int p_what) {
incr = theme_cache.increment_icon;
}

Ref<StyleBox> bg = has_focus() ? theme_cache.scroll_focus_style : theme_cache.scroll_style;

Ref<StyleBox> grabber;
if (drag.active) {
grabber = theme_cache.grabber_pressed_style;
Expand Down Expand Up @@ -279,7 +277,11 @@ void ScrollBar::_notification(int p_what) {
area.height -= incr->get_height() + decr->get_height();
}

bg->draw(ci, Rect2(ofs, area));
if (has_focus()) {
theme_cache.scroll_focus_style->draw(ci, Rect2(ofs, area));
} else {
theme_cache.scroll_style->draw(ci, Rect2(ofs, area));
}

if (orientation == HORIZONTAL) {
ofs.width += area.width;
Expand All @@ -294,11 +296,11 @@ void ScrollBar::_notification(int p_what) {
grabber_rect.size.width = get_grabber_size();
grabber_rect.size.height = get_size().height;
grabber_rect.position.y = 0;
grabber_rect.position.x = get_grabber_offset() + decr->get_width() + bg->get_margin(SIDE_LEFT);
grabber_rect.position.x = get_grabber_offset() + decr->get_width() + theme_cache.scroll_style->get_margin(SIDE_LEFT);
} else {
grabber_rect.size.width = get_size().width;
grabber_rect.size.height = get_grabber_size();
grabber_rect.position.y = get_grabber_offset() + decr->get_height() + bg->get_margin(SIDE_TOP);
grabber_rect.position.y = get_grabber_offset() + decr->get_height() + theme_cache.scroll_style->get_margin(SIDE_TOP);
grabber_rect.position.x = 0;
}

Expand Down

0 comments on commit ad35df2

Please sign in to comment.