diff options
author | smatz <smatz@openttd.org> | 2008-02-17 12:21:05 +0000 |
---|---|---|
committer | smatz <smatz@openttd.org> | 2008-02-17 12:21:05 +0000 |
commit | 291931bf5078e407d89046e7e2d92e0dcf261730 (patch) | |
tree | 22ddea3397fca7768e35d1a7ca62b9d0b33149c2 | |
parent | 16e23a75febeb32efad491c4916315ef9cfd73d4 (diff) | |
download | openttd-291931bf5078e407d89046e7e2d92e0dcf261730.tar.xz |
(svn r12166) -Fix [FS#337]: when drag&drop mode was cancelled by keyboard input, depot/group window wasn't updated (original patch by GrimRC)
-rw-r--r-- | src/depot_gui.cpp | 5 | ||||
-rw-r--r-- | src/group_gui.cpp | 7 | ||||
-rw-r--r-- | src/viewport.cpp | 5 | ||||
-rw-r--r-- | src/window.cpp | 5 |
4 files changed, 17 insertions, 5 deletions
diff --git a/src/depot_gui.cpp b/src/depot_gui.cpp index 98097817c..f9605dd65 100644 --- a/src/depot_gui.cpp +++ b/src/depot_gui.cpp @@ -860,8 +860,13 @@ static void DepotWndProc(Window *w, WindowEvent *e) } 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 --git a/src/group_gui.cpp b/src/group_gui.cpp index 34169479a..818b73479 100644 --- a/src/group_gui.cpp +++ b/src/group_gui.cpp @@ -761,6 +761,13 @@ static void GroupWndProc(Window *w, WindowEvent *e) 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 --git a/src/viewport.cpp b/src/viewport.cpp index f4c20c3e5..cc7b7a519 100644 --- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -2847,9 +2847,8 @@ void SetObjectToPlace(CursorID icon, SpriteID pal, ViewportHighlightMode mode, W { 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 --git a/src/window.cpp b/src/window.cpp index d7fbfea3d..1ee8da60b 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -1085,8 +1085,6 @@ static bool HandleDragDrop() w = GetCallbackWnd(); - ResetObjectToPlace(); - if (w != NULL) { /* send an event in client coordinates. */ e.event = WE_DRAGDROP; @@ -1095,6 +1093,9 @@ static bool HandleDragDrop() e.we.dragdrop.widget = GetWidgetFromPos(w, e.we.dragdrop.pt.x, e.we.dragdrop.pt.y); w->wndproc(w, &e); } + + ResetObjectToPlace(); + return false; } |