diff --git a/misc_gui.c b/misc_gui.c index 8e9bfbb866..c3dc9dc9e8 100644 --- a/misc_gui.c +++ b/misc_gui.c @@ -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); } diff --git a/player_gui.c b/player_gui.c index 67fa40041b..26561b8a1e 100644 --- a/player_gui.c +++ b/player_gui.c @@ -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); } } } diff --git a/widget.c b/widget.c index 8d0d3ad582..9e1c4a213a 100644 --- a/widget.c +++ b/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; diff --git a/window.c b/window.c index be2f8d4084..3398081a85 100644 --- a/window.c +++ b/window.c @@ -74,7 +74,6 @@ static void DispatchLeftClickEvent(Window* w, int x, int y) } if (w->desc_flags & WDF_STICKY_BUTTON && wi->type == WWT_STICKYBOX) { - TOGGLEBIT(w->click_state, e.click.widget); w->flags4 ^= WF_STICKY; InvalidateWidget(w, e.click.widget); return;