mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-01 03:48:43 +00:00
(svn r13110) -Fix [FS#2018]: some toolbar buttons not being unpressed properly.
This commit is contained in:
parent
9013632325
commit
c81a333cb6
@ -2708,11 +2708,18 @@ void SetObjectToPlaceWnd(CursorID icon, SpriteID pal, ViewportHighlightMode mode
|
||||
|
||||
void SetObjectToPlace(CursorID icon, SpriteID pal, ViewportHighlightMode mode, WindowClass window_class, WindowNumber window_num)
|
||||
{
|
||||
Window *w = NULL;
|
||||
|
||||
/* undo clicking on button and drag & drop */
|
||||
if (_thd.place_mode != VHM_NONE || _special_mouse_mode == WSM_DRAGDROP) {
|
||||
w = FindWindowById(_thd.window_class, _thd.window_number);
|
||||
Window *w = FindWindowById(_thd.window_class, _thd.window_number);
|
||||
if (w != NULL) {
|
||||
/* Call the abort function, but set the window class to something
|
||||
* that will never be used to avoid infinite loops. Setting it to
|
||||
* the 'next' window class must not be done because recursion into
|
||||
* this function might in some cases reset the newly set object to
|
||||
* place or not properly reset the original selection. */
|
||||
_thd.window_class = WC_INVALID;
|
||||
w->OnPlaceObjectAbort();
|
||||
}
|
||||
}
|
||||
|
||||
SetTileSelectSize(1, 1);
|
||||
@ -2739,10 +2746,6 @@ void SetObjectToPlace(CursorID icon, SpriteID pal, ViewportHighlightMode mode, W
|
||||
SetMouseCursor(icon, pal);
|
||||
}
|
||||
|
||||
/* Call the abort function only *after* the window class/number
|
||||
* are reset so one doesn't get into infinite loops when someone
|
||||
* resets the object to place during the abort callback. */
|
||||
if (w != NULL) w->OnPlaceObjectAbort();
|
||||
}
|
||||
|
||||
void ResetObjectToPlace()
|
||||
|
@ -94,6 +94,8 @@ enum WindowClass {
|
||||
WC_BUILD_SIGNAL,
|
||||
WC_COMPANY_PASSWORD_WINDOW,
|
||||
WC_OSK,
|
||||
|
||||
WC_INVALID = 0xFFFF
|
||||
};
|
||||
|
||||
struct Window;
|
||||
|
Loading…
Reference in New Issue
Block a user