From 2924427968d695e714906b9e6f2823cb893748a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Mon, 23 Jan 2023 13:32:56 +0100 Subject: [PATCH] Scripting: Replaced TileMap.selectedArea with TileMap.selectedRegion This new property has type `region` instead of `SelectedArea`, with the goal of unifying region values in the JS API. --- docs/scripting-doc/index.d.ts | 11 +++++++++++ src/tiled/editablemap.cpp | 13 +++++++++++++ src/tiled/editablemap.h | 4 ++++ 3 files changed, 28 insertions(+) diff --git a/docs/scripting-doc/index.d.ts b/docs/scripting-doc/index.d.ts index 80e51abfc6..38b1f825ff 100644 --- a/docs/scripting-doc/index.d.ts +++ b/docs/scripting-doc/index.d.ts @@ -2174,6 +2174,8 @@ declare class Layer extends TiledObject { * get the {@link region} of this area, modify that region, and then assign it * back. The necessary methods have been added to the {@link region} type with * Tiled 1.8. + * + * @deprecated Use {@link region} instead. */ interface SelectedArea { /** @@ -2354,9 +2356,18 @@ declare class TileMap extends Asset { /** * The selected area of tiles. + * + * @deprecated Use {@link selectedRegion} instead, which returns {@link region}. */ readonly selectedArea : SelectedArea + /** + * The selected area of tiles. + * + * @since 1.10 + */ + selectedRegion : region + /** * The current layer. */ diff --git a/src/tiled/editablemap.cpp b/src/tiled/editablemap.cpp index e40d576eea..72e708eac2 100644 --- a/src/tiled/editablemap.cpp +++ b/src/tiled/editablemap.cpp @@ -69,6 +69,7 @@ EditableMap::EditableMap(MapDocument *mapDocument, QObject *parent) connect(mapDocument, &MapDocument::layerAdded, this, &EditableMap::attachLayer); connect(mapDocument, &MapDocument::layerRemoved, this, &EditableMap::detachLayer); + connect(mapDocument, &MapDocument::selectedAreaChanged, this, &EditableMap::selectedRegionChanged); connect(mapDocument, &MapDocument::currentLayerChanged, this, &EditableMap::currentLayerChanged); connect(mapDocument, &MapDocument::selectedLayersChanged, this, &EditableMap::selectedLayersChanged); connect(mapDocument, &MapDocument::selectedObjectsChanged, this, &EditableMap::selectedObjectsChanged); @@ -122,6 +123,13 @@ QList EditableMap::layers() return editables; } +RegionValueType EditableMap::selectedRegion() const +{ + if (auto document = mapDocument()) + return RegionValueType(document->selectedArea()); + return {}; +} + EditableLayer *EditableMap::currentLayer() { if (auto document = mapDocument()) @@ -610,6 +618,11 @@ void EditableMap::setLayerDataFormat(LayerDataFormat value) map()->setLayerDataFormat(static_cast(value)); } +void EditableMap::setSelectedRegion(const RegionValueType ®ion) +{ + push(new ChangeSelectedArea(mapDocument(), region.region())); +} + void EditableMap::setCurrentLayer(EditableLayer *layer) { QList layers; diff --git a/src/tiled/editablemap.h b/src/tiled/editablemap.h index 543c3ff849..efa784a91e 100644 --- a/src/tiled/editablemap.h +++ b/src/tiled/editablemap.h @@ -58,6 +58,7 @@ class EditableMap : public EditableAsset Q_PROPERTY(QList tilesets READ tilesets) Q_PROPERTY(QList layers READ layers) Q_PROPERTY(Tiled::EditableSelectedArea *selectedArea READ selectedArea CONSTANT) + Q_PROPERTY(Tiled::RegionValueType selectedRegion READ selectedRegion WRITE setSelectedRegion NOTIFY selectedRegionChanged) Q_PROPERTY(Tiled::EditableLayer* currentLayer READ currentLayer WRITE setCurrentLayer NOTIFY currentLayerChanged) Q_PROPERTY(QList selectedLayers READ selectedLayers WRITE setSelectedLayers NOTIFY selectedLayersChanged) Q_PROPERTY(QList selectedObjects READ selectedObjects WRITE setSelectedObjects NOTIFY selectedObjectsChanged) @@ -133,6 +134,7 @@ class EditableMap : public EditableAsset QList tilesets() const; QList layers(); EditableSelectedArea *selectedArea(); + RegionValueType selectedRegion() const; EditableLayer *currentLayer(); QList selectedLayers(); QList selectedObjects(); @@ -192,6 +194,7 @@ class EditableMap : public EditableAsset void setRenderOrder(RenderOrder value); void setBackgroundColor(const QColor &value); void setLayerDataFormat(LayerDataFormat value); + void setSelectedRegion(const RegionValueType ®ion); void setCurrentLayer(EditableLayer *layer); void setSelectedLayers(const QList &layers); void setSelectedObjects(const QList &objects); @@ -202,6 +205,7 @@ class EditableMap : public EditableAsset QSharedPointer createDocument() override; signals: + void selectedRegionChanged(); void currentLayerChanged(); void selectedLayersChanged(); void selectedObjectsChanged();