From 3312280287b1c0b2a110532d55b4ecb97dfde5f0 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Mon, 20 Jul 2020 11:11:38 -0400 Subject: [PATCH] Fix 1x1 layer tile selection not highlighting --- include/ui/tileseteditortileselector.h | 1 + src/ui/tileseteditor.cpp | 6 +++++- src/ui/tileseteditortileselector.cpp | 10 +++++++--- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/include/ui/tileseteditortileselector.h b/include/ui/tileseteditortileselector.h index 9c8808c1..80f346ae 100644 --- a/include/ui/tileseteditortileselector.h +++ b/include/ui/tileseteditortileselector.h @@ -21,6 +21,7 @@ public: QPoint getSelectionDimensions(); void draw(); void select(uint16_t metatileId); + void highlight(uint16_t metatileId); void setTilesets(Tileset*, Tileset*); void setPaletteId(int); void setTileFlips(bool, bool); diff --git a/src/ui/tileseteditor.cpp b/src/ui/tileseteditor.cpp index aa5fbd56..984322f9 100644 --- a/src/ui/tileseteditor.cpp +++ b/src/ui/tileseteditor.cpp @@ -343,8 +343,12 @@ void TilesetEditor::onMetatileLayerSelectionChanged(QPoint selectionOrigin, int } } - if (width == 1 && height == 1) + if (width == 1 && height == 1) { + this->tileSelector->highlight(static_cast(tiles[0].tile)); ui->spinBox_paletteSelector->setValue(tiles[0].palette); + QPoint pos = tileSelector->getTileCoordsOnWidget(static_cast(tiles[0].tile)); + ui->scrollArea_Tiles->ensureVisible(pos.x(), pos.y()); + } this->tileSelector->setExternalSelection(width, height, tiles, tileIdxs); this->metatileLayersItem->clearLastModifiedCoords(); } diff --git a/src/ui/tileseteditortileselector.cpp b/src/ui/tileseteditortileselector.cpp index 78349c63..1b68466a 100644 --- a/src/ui/tileseteditortileselector.cpp +++ b/src/ui/tileseteditortileselector.cpp @@ -50,19 +50,23 @@ void TilesetEditorTileSelector::draw() { painter.end(); this->setPixmap(QPixmap::fromImage(image)); - if (!this->externalSelection) { + if (!this->externalSelection || (this->externalSelectionWidth == 1 && this->externalSelectionHeight == 1)) { this->drawSelection(); } } void TilesetEditorTileSelector::select(uint16_t tile) { this->externalSelection = false; - QPoint coords = this->getTileCoords(tile); - SelectablePixmapItem::select(coords.x(), coords.y(), 0, 0); + this->highlight(tile); this->updateSelectedTiles(); emit selectedTilesChanged(); } +void TilesetEditorTileSelector::highlight(uint16_t tile) { + QPoint coords = this->getTileCoords(tile); + SelectablePixmapItem::select(coords.x(), coords.y(), 0, 0); +} + void TilesetEditorTileSelector::setTilesets(Tileset *primaryTileset, Tileset *secondaryTileset) { this->primaryTileset = primaryTileset; this->secondaryTileset = secondaryTileset;