summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2010-12-25 12:47:05 +0000
committersmatz <smatz@openttd.org>2010-12-25 12:47:05 +0000
commitb5268dccbd4da760b13114cebd44d371c3d84f56 (patch)
treed65d7da471afad3f38b26cec134b30b44c580228
parentb323000253a471b1a8553ad46bd9f107bea07d4d (diff)
downloadopenttd-b5268dccbd4da760b13114cebd44d371c3d84f56.tar.xz
(svn r21632) -Codechange: call ResetObjectToPlace() even when current place_mode is HT_NONE
-rw-r--r--src/viewport.cpp20
-rw-r--r--src/window.cpp3
2 files changed, 10 insertions, 13 deletions
diff --git a/src/viewport.cpp b/src/viewport.cpp
index 7f3a5078e..ef78356c4 100644
--- a/src/viewport.cpp
+++ b/src/viewport.cpp
@@ -2839,18 +2839,16 @@ void SetObjectToPlaceWnd(CursorID icon, PaletteID pal, HighLightStyle mode, Wind
void SetObjectToPlace(CursorID icon, PaletteID pal, HighLightStyle mode, WindowClass window_class, WindowNumber window_num)
{
- /* undo clicking on button and drag & drop */
- if ((_thd.place_mode & ~HT_DIR_MASK) != HT_NONE || _special_mouse_mode == WSM_DRAGDROP) {
+ if (_thd.window_class != WC_INVALID) {
+ /* Undo clicking on button and drag & drop */
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();
- }
+ /* 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;
+ if (w != NULL) w->OnPlaceObjectAbort();
}
SetTileSelectSize(1, 1);
diff --git a/src/window.cpp b/src/window.cpp
index e9b7e6748..ae9a683ac 100644
--- a/src/window.cpp
+++ b/src/window.cpp
@@ -653,8 +653,7 @@ void Window::DeleteChildWindows(WindowClass wc) const
*/
Window::~Window()
{
- if ((_thd.place_mode & ~HT_DIR_MASK) != HT_NONE &&
- _thd.window_class == this->window_class &&
+ if (_thd.window_class == this->window_class &&
_thd.window_number == this->window_number) {
ResetObjectToPlace();
}