diff --git a/src/viewport.cpp b/src/viewport.cpp --- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -1871,7 +1871,7 @@ static void PlaceObject() _tile_fract_coords.x = pt.x & TILE_UNIT_MASK; _tile_fract_coords.y = pt.y & TILE_UNIT_MASK; - w = GetCallbackWnd(); + w = _thd.GetCallbackWnd(); if (w != NULL) w->OnPlaceObject(pt, TileVirtXY(pt.x, pt.y)); } @@ -2017,6 +2017,17 @@ bool TileHighlightData::IsDraggingDiagon } /** + * Get the window that started the current highlighting. + * @return The window that requested the current tile highlighting, or \c NULL if not available. + */ +Window *TileHighlightData::GetCallbackWnd() +{ + return FindWindowById(this->window_class, this->window_number); +} + + + +/** * Updates tile highlighting for all cases. * Uses _thd.selstart and _thd.selend and _thd.place_mode (set elsewhere) to determine _thd.pos and _thd.size * Also drawstyle is determined. Uses _thd.new.* as a buffer and calls SetSelectionTilesDirty() twice,