# HG changeset patch # User smatz # Date 1203250865 0 # Node ID 61ac905ff5f72aaf741d7245f136cd3a1ce9d360 # Parent 6e53efd3a13731fd8ff675cb2b111e80120a8a3c (svn r12166) -Fix [FS#337]: when drag&drop mode was cancelled by keyboard input, depot/group window wasn't updated (original patch by GrimRC) diff -r 6e53efd3a137 -r 61ac905ff5f7 src/depot_gui.cpp --- a/src/depot_gui.cpp Sun Feb 17 00:47:39 2008 +0000 +++ b/src/depot_gui.cpp Sun Feb 17 12:21:05 2008 +0000 @@ -860,8 +860,13 @@ } break; case WE_ABORT_PLACE_OBJ: { + /* abort clone */ w->RaiseWidget(DEPOT_WIDGET_CLONE); w->InvalidateWidget(DEPOT_WIDGET_CLONE); + + /* abort drag & drop */ + WP(w, depot_d).sel = INVALID_VEHICLE; + w->InvalidateWidget(DEPOT_WIDGET_MATRIX); } break; /* check if a vehicle in a depot was clicked.. */ diff -r 6e53efd3a137 -r 61ac905ff5f7 src/group_gui.cpp --- a/src/group_gui.cpp Sun Feb 17 00:47:39 2008 +0000 +++ b/src/group_gui.cpp Sun Feb 17 12:21:05 2008 +0000 @@ -761,6 +761,13 @@ SetWindowDirty(w); } break; + + case WE_ABORT_PLACE_OBJ: // called when new object to place is selected from keyboard + /* abort drag & drop */ + gv->vehicle_sel = INVALID_VEHICLE; + w->InvalidateWidget(GRP_WIDGET_LIST_VEHICLE); + break; + } } diff -r 6e53efd3a137 -r 61ac905ff5f7 src/viewport.cpp --- a/src/viewport.cpp Sun Feb 17 00:47:39 2008 +0000 +++ b/src/viewport.cpp Sun Feb 17 12:21:05 2008 +0000 @@ -2847,9 +2847,8 @@ { Window *w; - /* undo clicking on button */ - if (_thd.place_mode != VHM_NONE) { - _thd.place_mode = VHM_NONE; + /* 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); if (w != NULL) CallWindowEventNP(w, WE_ABORT_PLACE_OBJ); } diff -r 6e53efd3a137 -r 61ac905ff5f7 src/window.cpp --- a/src/window.cpp Sun Feb 17 00:47:39 2008 +0000 +++ b/src/window.cpp Sun Feb 17 12:21:05 2008 +0000 @@ -1085,8 +1085,6 @@ w = GetCallbackWnd(); - ResetObjectToPlace(); - if (w != NULL) { /* send an event in client coordinates. */ e.event = WE_DRAGDROP; @@ -1095,6 +1093,9 @@ e.we.dragdrop.widget = GetWidgetFromPos(w, e.we.dragdrop.pt.x, e.we.dragdrop.pt.y); w->wndproc(w, &e); } + + ResetObjectToPlace(); + return false; }