Skip to content

Commit

Permalink
Scripting: Replaced TileMap.selectedArea with TileMap.selectedRegion
Browse files Browse the repository at this point in the history
This new property has type `region` instead of `SelectedArea`, with the
goal of unifying region values in the JS API.
  • Loading branch information
bjorn committed Jan 23, 2023
1 parent 142d565 commit 2924427
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 0 deletions.
11 changes: 11 additions & 0 deletions docs/scripting-doc/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
/**
Expand Down Expand Up @@ -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.
*/
Expand Down
13 changes: 13 additions & 0 deletions src/tiled/editablemap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -122,6 +123,13 @@ QList<QObject *> EditableMap::layers()
return editables;
}

RegionValueType EditableMap::selectedRegion() const
{
if (auto document = mapDocument())
return RegionValueType(document->selectedArea());
return {};
}

EditableLayer *EditableMap::currentLayer()
{
if (auto document = mapDocument())
Expand Down Expand Up @@ -610,6 +618,11 @@ void EditableMap::setLayerDataFormat(LayerDataFormat value)
map()->setLayerDataFormat(static_cast<Map::LayerDataFormat>(value));
}

void EditableMap::setSelectedRegion(const RegionValueType &region)
{
push(new ChangeSelectedArea(mapDocument(), region.region()));
}

void EditableMap::setCurrentLayer(EditableLayer *layer)
{
QList<QObject*> layers;
Expand Down
4 changes: 4 additions & 0 deletions src/tiled/editablemap.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ class EditableMap : public EditableAsset
Q_PROPERTY(QList<QObject*> tilesets READ tilesets)
Q_PROPERTY(QList<QObject*> 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<QObject*> selectedLayers READ selectedLayers WRITE setSelectedLayers NOTIFY selectedLayersChanged)
Q_PROPERTY(QList<QObject*> selectedObjects READ selectedObjects WRITE setSelectedObjects NOTIFY selectedObjectsChanged)
Expand Down Expand Up @@ -133,6 +134,7 @@ class EditableMap : public EditableAsset
QList<QObject*> tilesets() const;
QList<QObject*> layers();
EditableSelectedArea *selectedArea();
RegionValueType selectedRegion() const;
EditableLayer *currentLayer();
QList<QObject*> selectedLayers();
QList<QObject*> selectedObjects();
Expand Down Expand Up @@ -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 &region);
void setCurrentLayer(EditableLayer *layer);
void setSelectedLayers(const QList<QObject*> &layers);
void setSelectedObjects(const QList<QObject*> &objects);
Expand All @@ -202,6 +205,7 @@ class EditableMap : public EditableAsset
QSharedPointer<Document> createDocument() override;

signals:
void selectedRegionChanged();
void currentLayerChanged();
void selectedLayersChanged();
void selectedObjectsChanged();
Expand Down

0 comments on commit 2924427

Please sign in to comment.