diff --git a/.github/workflows/packages.yml b/.github/workflows/packages.yml
index fe413131b3..3f835f4986 100644
--- a/.github/workflows/packages.yml
+++ b/.github/workflows/packages.yml
@@ -196,12 +196,12 @@ jobs:
include:
- qt_version: 5.15.2
qt_modules: ""
- version_suffix: "10.13-10.15"
+ version_suffix: "10.13-12"
architectures: x86_64
cmake_architectures: x86_64
- qt_version: 6.10.2
qt_modules: "qtimageformats"
- version_suffix: "11+"
+ version_suffix: "13+"
architectures: x86_64,arm64
cmake_architectures: x86_64;arm64
diff --git a/NEWS.md b/NEWS.md
index b4cecb0dd7..9e0a67d0e4 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,6 +1,15 @@
### Unreleased
* Added 'Collapse All' action and 'Only Expand to Current' mode to Project view (with rhythmcache, #4346)
+* Reduced animated tile marker opacity during terrain editing (by Huy Vũ, #4449)
+* Fixed ability to change properties after deselecting the current object (#4440)
+
+### Tiled 1.12.1 (25 March 2026)
+
+* Fixed Properties view flicker when switching between objects or files (#4460)
+* Fixed selection mode indicator to not toggle on Alt when it would move objects (by kunal649, #4434)
+* Fixed status bar pixel coords being rounded instead of floored (by kunal649, #4426)
+* macOS: Fix ability to choose type when adding properties (#4459)
### Tiled 1.12.0 (13 March 2026)
diff --git a/docs/conf.py b/docs/conf.py
index 20602f1231..00bb2c0ef2 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -69,7 +69,7 @@
# The short X.Y version.
version = '1.12'
# The full version, including alpha/beta/rc tags.
-release = '1.12.0'
+release = '1.12.1'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff --git a/org.mapeditor.Tiled.appdata.xml b/org.mapeditor.Tiled.appdata.xml
index 1d2e1f2b80..f991a3fe08 100644
--- a/org.mapeditor.Tiled.appdata.xml
+++ b/org.mapeditor.Tiled.appdata.xml
@@ -19,6 +19,17 @@
+
+ https://www.mapeditor.org/2026/03/25/tiled-1-12-1-released.html
+
+
+ - Fixed Properties view flicker when switching between objects or files (#4460)
+ - Fixed selection mode indicator to not toggle on Alt when it would move objects (by kunal649, #4434)
+ - Fixed status bar pixel coords being rounded instead of floored (by kunal649, #4426)
+ - macOS: Fix ability to choose type when adding properties (#4459)
+
+
+
https://www.mapeditor.org/2026/03/12/tiled-1-12-released.html
diff --git a/src/tiled/propertieswidget.cpp b/src/tiled/propertieswidget.cpp
index 155a25d7f8..5f03cde9fc 100644
--- a/src/tiled/propertieswidget.cpp
+++ b/src/tiled/propertieswidget.cpp
@@ -1946,7 +1946,7 @@ class MapObjectProperties : public ObjectProperties
QUndoCommand *command = new ChangeMapObject(mapDocument(), mapObject(),
property, value);
- if (mapDocument()->selectedObjects().size() == 1) {
+ if (mapDocument()->selectedObjects().size() <= 1) {
push(command);
return;
}
diff --git a/src/tiled/tilesetview.cpp b/src/tiled/tilesetview.cpp
index 41907c7543..a6cb444361 100644
--- a/src/tiled/tilesetview.cpp
+++ b/src/tiled/tilesetview.cpp
@@ -53,8 +53,6 @@
using namespace Tiled;
-namespace {
-
static void setupTilesetGridTransform(const Tileset &tileset, QTransform &transform, QRect &targetRect)
{
if (tileset.orientation() == Tileset::Isometric) {
@@ -77,6 +75,8 @@ static void setupTilesetGridTransform(const Tileset &tileset, QTransform &transf
}
}
+namespace {
+
/**
* The delegate for drawing tile items in the tileset view.
*/
@@ -95,7 +95,7 @@ class TileDelegate : public QAbstractItemDelegate
const QModelIndex &index) const override;
private:
- static void drawFilmStrip(QPainter *painter, QRect targetRect);
+ static void drawFilmStrip(QPainter *painter, QRect targetRect, bool wangEditingActive);
void drawWangOverlay(QPainter *painter,
const Tile *tile,
@@ -105,6 +105,8 @@ class TileDelegate : public QAbstractItemDelegate
TilesetView *mTilesetView;
};
+} // anonymous namespace
+
void TileDelegate::paint(QPainter *painter,
const QStyleOptionViewItem &option,
const QModelIndex &index) const
@@ -161,7 +163,7 @@ void TileDelegate::paint(QPainter *painter,
// Overlay with film strip when animated
if (mTilesetView->markAnimatedTiles() && tile->isAnimated())
- drawFilmStrip(painter, targetRect);
+ drawFilmStrip(painter, targetRect, mTilesetView->isEditWangSet());
const auto highlight = option.palette.highlight();
@@ -211,7 +213,7 @@ QSize TileDelegate::sizeHint(const QStyleOptionViewItem & /* option */,
return QSize(extra, extra);
}
-void TileDelegate::drawFilmStrip(QPainter *painter, QRect targetRect)
+void TileDelegate::drawFilmStrip(QPainter *painter, QRect targetRect, bool wangEditingActive)
{
painter->save();
@@ -224,7 +226,7 @@ void TileDelegate::drawFilmStrip(QPainter *painter, QRect targetRect)
painter->scale(scale, scale);
painter->translate(-18, 3);
painter->rotate(-45);
- painter->setOpacity(0.8);
+ painter->setOpacity(wangEditingActive ? 0.3 : 0.8);
QRectF strip(0, 0, 32, 6);
painter->fillRect(strip, Qt::black);
@@ -278,8 +280,6 @@ void TileDelegate::drawWangOverlay(QPainter *painter,
painter->restore();
}
-} // anonymous namespace
-
TilesetView::TilesetView(QWidget *parent)
: QTableView(parent)
, mZoomable(new Zoomable(this))
@@ -504,7 +504,7 @@ void TilesetView::keyPressEvent(QKeyEvent *event)
return;
}
- return QTableView::keyPressEvent(event);
+ QTableView::keyPressEvent(event);
}
void TilesetView::setRelocateTiles(bool enabled)
diff --git a/tiled.qbs b/tiled.qbs
index 10c464ce2d..b197e9840a 100644
--- a/tiled.qbs
+++ b/tiled.qbs
@@ -6,7 +6,7 @@ Project {
qbsSearchPaths: "qbs"
minimumQbsVersion: "1.18"
- property string version: Environment.getEnv("TILED_VERSION") || "1.12.0";
+ property string version: Environment.getEnv("TILED_VERSION") || "1.12.1";
property bool snapshot: Environment.getEnv("TILED_SNAPSHOT") == "true"
property bool release: Environment.getEnv("TILED_RELEASE") == "true"
property string libDir: "lib"