Changeset - r8585:c9a068074baa
[Not reviewed]
master
0 4 0
smatz - 16 years ago 2008-02-17 12:21:05
smatz@openttd.org
(svn r12166) -Fix [FS#337]: when drag&drop mode was cancelled by keyboard input, depot/group window wasn't updated (original patch by GrimRC)
4 files changed with 17 insertions and 5 deletions:
0 comments (0 inline, 0 general)
src/depot_gui.cpp
Show inline comments
 
@@ -857,14 +857,19 @@ static void DepotWndProc(Window *w, Wind
 

	
 
		case WE_PLACE_OBJ: {
 
			ClonePlaceObj(w);
 
		} 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.. */
 
		case WE_MOUSELOOP: {
 
			const Vehicle *v = _place_clicked_vehicle;
 

	
src/group_gui.cpp
Show inline comments
 
@@ -758,12 +758,19 @@ static void GroupWndProc(Window *w, Wind
 
			if (--gl->l.resort_timer == 0) {
 
				gl->l.resort_timer = DAY_TICKS * PERIODIC_RESORT_DAYS;
 
				gl->l.flags |= VL_RESORT;
 
				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;
 

	
 
	}
 
}
 

	
 

	
 
static const WindowDesc _group_desc = {
 
	WDP_AUTO, WDP_AUTO, 460, 194, 526, 246,
src/viewport.cpp
Show inline comments
 
@@ -2844,15 +2844,14 @@ void SetObjectToPlaceWnd(CursorID icon, 
 
#include "table/animcursors.h"
 

	
 
void SetObjectToPlace(CursorID icon, SpriteID pal, ViewportHighlightMode mode, WindowClass window_class, WindowNumber window_num)
 
{
 
	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);
 
	}
 

	
 
	SetTileSelectSize(1, 1);
 

	
src/window.cpp
Show inline comments
 
@@ -1082,22 +1082,23 @@ static bool HandleDragDrop()
 
	if (_special_mouse_mode != WSM_DRAGDROP) return true;
 

	
 
	if (_left_button_down) return false;
 

	
 
	w = GetCallbackWnd();
 

	
 
	ResetObjectToPlace();
 

	
 
	if (w != NULL) {
 
		/* send an event in client coordinates. */
 
		e.event = WE_DRAGDROP;
 
		e.we.dragdrop.pt.x = _cursor.pos.x - w->left;
 
		e.we.dragdrop.pt.y = _cursor.pos.y - w->top;
 
		e.we.dragdrop.widget = GetWidgetFromPos(w, e.we.dragdrop.pt.x, e.we.dragdrop.pt.y);
 
		w->wndproc(w, &e);
 
	}
 

	
 
	ResetObjectToPlace();
 

	
 
	return false;
 
}
 

	
 
static bool HandlePopupMenu()
 
{
 
	Window *w;
0 comments (0 inline, 0 general)