ulf.schroeter Posted October 20, 2010 Share Posted October 20, 2010 Problem WidgetTreeBox ruler position calculation fails when scrolling down for large item counts (in our test case 10000+). WidgetTreeBox item scrolling (by keys or ruler dragging) and ruler rendering works correctly for "upper" part of item list. When scrolling to the end of the list, ruler suddenly disappears/gets rendered outside of WidgetTreeBox ruler area or WidgetTreeBox jumps back to start of item list. Link to comment
ulf.schroeter Posted October 23, 2010 Author Share Posted October 23, 2010 Cause int value range exceeded on ruler Y position calculation in WidgetVScroll.cpp due to large object_size of WidgetTree for large item counts. Bug Fix use intermediate double value precision for button_y/value calculation void WidgetVScroll::checkCallbacks(int x,int y) { .... int button_y = (object_size == frame_size) ? h : int( (height - h * 2 - button_height) * double(value) / double(object_size - frame_size) ) + h; ... if(gui->getMouseGrab()) { if(gui->getMouseButton() & App::BUTTON_LEFT) { if(pressed == 5) { value = (object_size == frame_size) ? 0 : (mouse_y - h - mouse_offset) * int( double(object_size - frame_size) / double(height - h * 2 - button_height) ); ..... void WidgetVScroll::render() { ..... int button_y = (object_size == frame_size) ? h : int( (height - h * 2 - button_height) * double(value) / double( object_size - frame_size ) ) + h; ..... Link to comment
frustum Posted October 25, 2010 Share Posted October 25, 2010 Thanks, fixed for HScroll and VScroll Link to comment
Recommended Posts