mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-16 00:12:51 +00:00
(svn r3247) - Fix: "[ 1335580 ] sticky windows not sticky anymore"
Determine clicked status of sticky icon from window flags rather than the widget click state. This keeps the status in one place where it can't get out of sync.
This commit is contained in:
parent
708c135ff7
commit
627dd10451
@ -735,12 +735,7 @@ void UnclickSomeWindowButtons(Window *w, uint32 mask)
|
||||
|
||||
void UnclickWindowButtons(Window *w)
|
||||
{
|
||||
bool sticky = false;
|
||||
if (w->desc_flags & WDF_STICKY_BUTTON && HASBIT(w->click_state, 2)) sticky = true;
|
||||
|
||||
UnclickSomeWindowButtons(w, (uint32)-1);
|
||||
|
||||
if (sticky) SETBIT(w->click_state, 2);
|
||||
}
|
||||
|
||||
|
||||
|
@ -235,7 +235,6 @@ static void DoShowPlayerFinances(PlayerID player, bool show_small, bool show_sti
|
||||
WP(w,def_d).data_1 = mode;
|
||||
if (show_stickied) {
|
||||
w->flags4 |= WF_STICKY;
|
||||
w->click_state ^= (1 << 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
2
widget.c
2
widget.c
@ -394,6 +394,8 @@ void DrawWindowWidgets(const Window *w)
|
||||
|
||||
case WWT_STICKYBOX: {
|
||||
assert(r.right - r.left == 11); // XXX - to ensure the same sizes are used everywhere!
|
||||
|
||||
clicked = !!(w->flags4 & WF_STICKY);
|
||||
DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->color, (clicked) ? FR_LOWERED : 0);
|
||||
DrawSprite((clicked) ? SPR_PIN_UP : SPR_PIN_DOWN, r.left + 2 + clicked, r.top + 3 + clicked);
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user