mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-11 08:49:50 +00:00
(svn r20577) -Fix [FS#4043]: scroll button flickering when pressed
This commit is contained in:
parent
1231dc7b57
commit
3e3cd47222
@ -85,8 +85,8 @@ static void ScrollbarClickPositioning(Window *w, NWidgetScrollbar *sb, int x, in
|
||||
if (pos <= mi + 9) {
|
||||
/* Pressing the upper button? */
|
||||
SetBit(sb->disp_flags, NDB_SCROLLBAR_UP);
|
||||
if (_scroller_click_timeout == 0) {
|
||||
_scroller_click_timeout = 6;
|
||||
if (_scroller_click_timeout <= 1) {
|
||||
_scroller_click_timeout = 3;
|
||||
sb->UpdatePosition(rtl ? 1 : -1);
|
||||
}
|
||||
_left_button_clicked = false;
|
||||
@ -94,8 +94,8 @@ static void ScrollbarClickPositioning(Window *w, NWidgetScrollbar *sb, int x, in
|
||||
/* Pressing the lower button? */
|
||||
SetBit(sb->disp_flags, NDB_SCROLLBAR_DOWN);
|
||||
|
||||
if (_scroller_click_timeout == 0) {
|
||||
_scroller_click_timeout = 6;
|
||||
if (_scroller_click_timeout <= 1) {
|
||||
_scroller_click_timeout = 3;
|
||||
sb->UpdatePosition(rtl ? -1 : 1);
|
||||
}
|
||||
_left_button_clicked = false;
|
||||
|
@ -54,7 +54,7 @@ Point _cursorpos_drag_start;
|
||||
|
||||
int _scrollbar_start_pos;
|
||||
int _scrollbar_size;
|
||||
byte _scroller_click_timeout;
|
||||
byte _scroller_click_timeout = 0;
|
||||
|
||||
bool _scrolling_viewport; ///< A viewport is being scrolled with the mouse.
|
||||
bool _mouse_hovering; ///< The mouse is hovering over the same point.
|
||||
@ -1373,6 +1373,7 @@ static void DecreaseWindowCounters()
|
||||
{
|
||||
Window *w;
|
||||
FOR_ALL_WINDOWS_FROM_FRONT(w) {
|
||||
if (_scroller_click_timeout == 0) {
|
||||
/* Unclick scrollbar buttons if they are pressed. */
|
||||
for (uint i = 0; i < w->nested_array_size; i++) {
|
||||
NWidgetBase *nwid = w->nested_array[i];
|
||||
@ -1384,6 +1385,7 @@ static void DecreaseWindowCounters()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
w->OnMouseLoop();
|
||||
}
|
||||
|
||||
@ -2500,11 +2502,7 @@ void InvalidateWindowClassesData(WindowClass cls, int data)
|
||||
*/
|
||||
void CallWindowTickEvent()
|
||||
{
|
||||
if (_scroller_click_timeout > 3) {
|
||||
_scroller_click_timeout -= 3;
|
||||
} else {
|
||||
_scroller_click_timeout = 0;
|
||||
}
|
||||
if (_scroller_click_timeout != 0) _scroller_click_timeout--;
|
||||
|
||||
Window *w;
|
||||
FOR_ALL_WINDOWS_FROM_FRONT(w) {
|
||||
|
Loading…
Reference in New Issue
Block a user