Adjustment* adj = scroller.get_hscrollbar()->get_adjustment();
- if ((x0 < adj->get_value()) || (x0 + alloc.get_width()) >= (adj->get_value() + adj->get_page_size())) {
- /* try to put left edge of strip in the middle */
- double half_page = adj->get_page_size() / 2.0;
- if (x0 >= half_page) {
- x0 -= half_page;
- }
+ if (x0 < adj->get_value()) {
adj->set_value (max (adj->get_lower(), min (adj->get_upper(), (double) x0)));
+ } else if (x0 + alloc.get_width() >= adj->get_value() + adj->get_page_size()) {
+ int x1 = x0 + alloc.get_width() - adj->get_page_size();
+ adj->set_value (max (adj->get_lower(), min (adj->get_upper(), (double) x1)));
}
}