Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] master from mapeditor:master #14

Open
wants to merge 343 commits into
base: master
Choose a base branch
from
Open

Conversation

pull[bot]
Copy link

@pull pull bot commented Jan 10, 2024

See Commits and Changes for more details.


Created by pull[bot]

Can you help keep this open source service alive? 💖 Please sponsor : )

@pull pull bot added the ⤵️ pull label Jan 10, 2024
@bjorn bjorn force-pushed the master branch 2 times, most recently from 7cc186e to b184313 Compare February 26, 2024 15:59
bjorn and others added 27 commits April 26, 2024 17:53
Crash caused by a double-deletion of the EditableProject, since both
the Project as well as the ProjectDocument classes were deleting it
from their destructors (in the Object and Document superclasses,
respectively).

This issue was introduced in 4244060.
This is now required for publishing the Flatpak.
The change to Qt was cherry-picked to Qt 6.6.3.

This further amends 93f6fef.
Fixed deprecation warnings by replacing `Py_NoSiteFlag` and
`Py_NoUserSiteDirectory` variables with their `PyConfig` equivalent,
supported since Python 3.8.
Unless I'm missing something, this was only due to the missing
ObjectReferenceTool instance in the tile collision editor.

Closes #3399
This should be mostly helpful for people using a VCS like Perforce or
Subversion, which may require a file to be checked out or locked before
it can be edited.

For now the read-only icon is a lock, which is common, but it may be
confusing for Subversion users since they actually need to lock the file
to make it writable.
Extended the Python plugin to support custom tileset exporters and 
readers written in Python. One Python script can implement both a map
and a tileset format (though only one of each).

Also fixed Python include path not recognized in Qt Creator (required 
setting cpp.includePaths instead of relying on cpp.cxxFlags).

Fixes #1865

Co-authored-by: Thorbjørn Lindeijer <[email protected]>
Also fixed that when saving a file with a different name, the read-only
flag was not refreshed.

Fixes for c82539e (see #3924).
The check on whether we could open the file wasn't checking what kind of
file was getting loaded, which could lead to trying to add non-map files
to a world.
Split segment or polyline is "diviser", not "séparer"
Maps are now reloaded the same way as tilesets, by swapping the internal
data of the MapDocument rather than replacing the entire document. This
also means undo history is kept, since the reload is added as an
undoable action.

This fixes map reload to also affect instances that are open as part of
a world. Previously, the old version would stay open in the world.
However, maps that are only open as part of a world are not yet watched
for changes.

This is a somewhat risky change since the code was never prepared for
the map and its internal structures to be replaced entirely without any
specific change events. New "DocumentAboutToReload" and
"DocumentReloaded" events were added, which are hopefully handled in all
the right places.

Selected layers and objects, as well as expanded group layers, are
restored after reload by ID.

This change also addresses several issues with reloading tilesets.

Added tiled.assetReloaded signal to the scripting API. Most scripts will
not have to do anything,, but some might.

Fixed enabled state of Reload action, which shouldn't be always enabled
for maps (since we can only reload maps when they have a file name and
we know the file format).

Closes #3927
When a map is loaded as part of a world, or a tileset is loaded as part
of a map, but not open in its own editor, previously its file was not
watched for changes.

Now these files are also watched. When a change is detected and no
unsaved changes are present, the affected map or tileset will be reloaded.

Closes #1785
Implementing this required a refactor of the state system in
StampBrush.  Behavior and State were previously handled in the
same property, which resulted both in wrong behavior when using
capture and pressing the behavior keys (replicate by holding
right click, start holding shift, release right click, the behavior
wasn't set to line as it should have). This commit refactors this
system by splitting State and Behavior in two enums and two
properties, resulting in making the implemented feature possible,
fixing behavior bugs, and future-proofing this system for
expansion.

Implements #3961

Co-authored-by: Thorbjørn Lindeijer <[email protected]>
Currently translated at 94.1% (1144 of 1215 strings)

Translation: Tiled/Manual
Translate-URL: https://hosted.weblate.org/projects/tiled/manual/fr/
Currently translated at 82.4% (787 of 955 strings)

Translation: Tiled/Reference
Translate-URL: https://hosted.weblate.org/projects/tiled/reference/fr/
Currently translated at 100.0% (1215 of 1215 strings)

Translation: Tiled/Manual
Translate-URL: https://hosted.weblate.org/projects/tiled/manual/fr/
Currently translated at 100.0% (1425 of 1425 strings)
Currently translated at 100.0% (1425 of 1425 strings)
Currently translated at 100.0% (955 of 955 strings)

Translation: Tiled/Reference
Translate-URL: https://hosted.weblate.org/projects/tiled/reference/fr/
Currently translated at 98.8% (1409 of 1425 strings)
Currently translated at 0.1% (2 of 1215 strings)

Translation: Tiled/Manual
Translate-URL: https://hosted.weblate.org/projects/tiled/manual/ru/
Currently translated at 100.0% (1425 of 1425 strings)
Conflicts:
	docs/locale/fr/LC_MESSAGES/manual.po
	translations/tiled_cs.ts
These property managers are triggering deprecated warnings in recent Qt
versions. They'd require quite a bit of code changes and #ifdef to fix,
but since they're not actually used by Tiled I've opted to just remove
them instead.

* Removed QtMetaEnumProvider
* Removed QtLocalePropertyManager
* Removed QtSizePolicyPropertyManager
bjorn and others added 30 commits January 16, 2025 21:11
By accident it was only returning the inherited properties. This was a
regression in c99a1e7.
The `aseprite-msvc-dynamic-runtime.patch` is gone after its target
`CMakeLists.txt` was merged into the qaseprite one.

Check out the 1.0 tag to avoid future breakage in case changes are made
to the plugin. Also use the new `update-submodules.sh` script to check
out only the required submodules.

The snap has been updated as well to use the 1.0 source archive.
An update to GameMaker has broken compatibility in several ways:

* It now requires a "type tag field" at the start of applicable JSON
  records.

* The name is expected to follow the "type tag field" as a "%Name"
  field, in addition to the regular "name" field.

* The JSON fields are now required to be ordered alphabetically
  (case-insentively).

Other minor differences include:

* The "tags" field is left out when there are no tags.
* There is no longer a space included after JSON field names.
* Some new fields were added.

Also, the plugin now uses SaveFile again rather than QFile, because it
seems that recent GameMaker versions will reload fine when using safe
writing of files.

Updated the manual to no longer say "GameMaker Studio 2.3".

Closes #4132
Only supports the SVG 1.2 blend modes for now, not the Porter and Duff
operators because it's unclear what their use would be within the 
current functionality (which does not include compositing groups into
intermediate buffers).

The blend mode does not do anything useful on group layers at the 
moment. This might change in a future version. Currently group layers
effectively behave as "pass through".

The blend mode only affects images (tile layers, tile objects and image 
layers), not shape objects.

Closes #3932
Due to an inverted condition introduced in 629b53c, it
was not actually possible to change properties specific to image layers
and object layers.

Also fixed the undo entry merging for these properties, which was broken
because their undo commands did not have an ID.
Last minute cleanup cleaned up a little too much. We need the list of
values, because they don't match the indexes in the names list...
* Migrated to new signal handling syntax.
* Removed version numbers from imports.
* Migrated to Settings from QtCore.
* Migrated to dialogs from QtQuick.Dialogs.

Some small other changes:

* Disable VSync since it makes things move erratically during resizing
  and delays response times.

* Round scaling factor since a fractional factor causes pixel movement
  during panning and window resizing.
The `aseprite-msvc-dynamic-runtime.patch` is gone after its target
`CMakeLists.txt` was merged into the qaseprite one.

Check out the 1.0 tag to avoid future breakage in case changes are made
to the plugin. Also use the new `update-submodules.sh` script to check
out only the required submodules.

The snap has been updated as well to use the 1.0 source archive.

(cherry picked from commit 9591005)
Now qaseprite uses qt_add_plugin, which fixes the plugin's extension
on macOS and unifies the file name to qaseprite.dll between MinGW and
MSVC.
A crash could occur if a file (usually a map, tileset or world) got
reloaded while no editor was currently open.
When there is more than one custom property selected when closing the
last document, a crash would occur due to a null pointer dereference
while updating the actions on the Properties view tool bar.
Fixing two crashes that have been observed in crash reports sent to
Sentry.
Ship the data needed by xkbcommon.

(cherry picked from commit fe1eadf)
An update to GameMaker has broken compatibility in several ways:

* It now requires a "type tag field" at the start of applicable JSON
  records.

* The name is expected to follow the "type tag field" as a "%Name"
  field, in addition to the regular "name" field.

* The JSON fields are now required to be ordered alphabetically
  (case-insentively).

Other minor differences include:

* The "tags" field is left out when there are no tags.
* There is no longer a space included after JSON field names.
* Some new fields were added.

Also, the plugin now uses SaveFile again rather than QFile, because it
seems that recent GameMaker versions will reload fine when using safe
writing of files.

Updated the manual to no longer say "GameMaker Studio 2.3".

Closes #4132

(cherry picked from commit cc77ce6)
I hadn't expected to do another patch release so soon, but now that I
do, it should be a good idea to include the updated GameMaker export.
Conflicts:
	NEWS.md
	docs/manual/export-yy.rst
	src/tiled/propertieswidget.cpp
If an input index is entirely empty for a given rule, then this index
will no longer cause the rule to always match.

An always-matching rule can still be declared by using the special
"Ignore" tile in its input.
By only deleting the AutoMapper instances for changed rule map files,
the reloading becomes much faster since it can just reuse the still
loaded instances.
This optimizes AutoMapping operations by not loading rule maps which do
not apply to the current map based on file name filters.

Also, re-parsing of the rules.txt file(s) now only happens when any of
such files were changed, not when rule maps have changed.
In Qt 6.8.2, a forward declaration was added for the QStringRef class
from Qt 5, which breaks compilation because it is incompatible with the
"using QStringRef = QStringView" line I was using for compatibility
between Qt 5 and 6.

Fortunately, as of Qt 5.15.2, the QStringView API is complete enough, so
by raising the minimum required Qt version we no longer need QStringRef
at all.
This also drops support for Qt 4 in this part of the code, since
QLockFile was introduced in Qt 5.1. But it was already requiring Qt 5.4
due to use of qUtf8Printable anyway.

The same change was done for Qt Creator here:
https://codereview.qt-project.org/c/qt-creator/qt-creator/+/499187
Bumps [ammaraskar/sphinx-action](https://github.com/ammaraskar/sphinx-action) from 8.1.3 to 8.2.1.
- [Release notes](https://github.com/ammaraskar/sphinx-action/releases)
- [Commits](ammaraskar/sphinx-action@8.1.3...8.2.1)

---
updated-dependencies:
- dependency-name: ammaraskar/sphinx-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [ammaraskar/sphinx-action](https://github.com/ammaraskar/sphinx-action) from 8.2.1 to 8.2.3.
- [Release notes](https://github.com/ammaraskar/sphinx-action/releases)
- [Commits](ammaraskar/sphinx-action@8.2.1...8.2.3)

---
updated-dependencies:
- dependency-name: ammaraskar/sphinx-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Switch from the deprecated "version" option to "release".

Added "fetch-depth: 0" to the checkout as suggested by the usage
instructions for getsentry/action-release.
This adds the following API:

* Project.propertyTypes, giving the list of defined types
* Project.removeTypeByName
* Project.findTypeByName
* Project.addClassType
* Project.addEnumType
* PropertyType > EnumPropertyType, ClassPropertyType for inspecting and 
  modifying a type

The project is immediately saved each time any changes are made to its 
types.

When adding or renaming a type would lead to a duplicate name an error
is thrown.

PropertyType instances are managed by shared pointer to avoid lifetime
issues.

Closes #3419

Co-authored-by: Thorbjørn Lindeijer <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.