diff --git a/src/tiled/clipboardmanager.cpp b/src/tiled/clipboardmanager.cpp index 8751447a79..f2e51c848d 100644 --- a/src/tiled/clipboardmanager.cpp +++ b/src/tiled/clipboardmanager.cpp @@ -33,6 +33,7 @@ #include "tile.h" #include "tilelayer.h" #include "tmxmapformat.h" +#include "preferences.h" #include #include @@ -47,7 +48,6 @@ #include -static const char * const TMX_MIMETYPE = "text/tmx"; using namespace Tiled; @@ -60,6 +60,9 @@ ClipboardManager::ClipboardManager() this, &ClipboardManager::update, Qt::QueuedConnection); + connect(Preferences::instance(), &Preferences::enableTextPasteChanged, + this, &ClipboardManager::update); + update(); } @@ -79,6 +82,12 @@ ClipboardManager *ClipboardManager::instance() */ std::unique_ptr ClipboardManager::map() const { + + const char* TMX_MIMETYPE = + Preferences::instance()->enableTextPaste() + ? "text/plain" + : "text/tmx"; + const auto mimeData = mClipboard->mimeData(); const QByteArray data = mimeData->data(QLatin1String(TMX_MIMETYPE)); if (data.isEmpty()) @@ -95,6 +104,11 @@ void ClipboardManager::setMap(const Map &map) { TmxMapFormat format; + const char* TMX_MIMETYPE = + Preferences::instance()->enableTextPaste() + ? "text/plain" + : "text/tmx"; + auto mimeData = new QMimeData; mimeData->setData(QLatin1String(TMX_MIMETYPE), format.toByteArray(&map)); @@ -274,6 +288,12 @@ void ClipboardManager::update() bool hasListValues = false; if (const auto data = mClipboard->mimeData()) { + + const char* TMX_MIMETYPE = + Preferences::instance()->enableTextPaste() + ? "text/plain" + : "text/tmx"; + hasMap = data->hasFormat(QLatin1String(TMX_MIMETYPE)); hasProperties = data->hasFormat(QLatin1String(PROPERTIES_MIMETYPE)); hasListValues = data->hasFormat(QLatin1String(LIST_VALUES_MIMETYPE)); diff --git a/src/tiled/preferences.cpp b/src/tiled/preferences.cpp index 0fe04219b1..6c02722f64 100644 --- a/src/tiled/preferences.cpp +++ b/src/tiled/preferences.cpp @@ -447,6 +447,17 @@ void Preferences::setSafeSavingEnabled(bool enabled) SaveFile::setSafeSavingEnabled(enabled); } +bool Preferences::enableTextPaste() const +{ + return get("Storage/enableTextPaste", false); +} + +void Preferences::setEnableTextPaste(bool enabled) +{ + setValue(QLatin1String("Storage/enableTextPaste"), enabled); + emit enableTextPasteChanged(enabled); +} + bool Preferences::exportOnSave() const { return get("Storage/ExportOnSave", false); diff --git a/src/tiled/preferences.h b/src/tiled/preferences.h index 17f26f4200..45e6fb6eaa 100644 --- a/src/tiled/preferences.h +++ b/src/tiled/preferences.h @@ -118,6 +118,9 @@ class TILED_EDITOR_EXPORT Preferences : public QSettings bool exportOnSave() const; void setExportOnSave(bool enabled); + bool enableTextPaste() const; + void setEnableTextPaste(bool enabled); + enum ExportOption { EmbedTilesets = 0x1, DetachTemplateInstances = 0x2, @@ -260,6 +263,8 @@ public slots: void checkForUpdatesChanged(bool on); void displayNewsChanged(bool on); + void enableTextPasteChanged(bool enabled); + void aboutToSwitchSession(); private: diff --git a/src/tiled/preferencesdialog.cpp b/src/tiled/preferencesdialog.cpp index 5d625c2a20..b44de17046 100644 --- a/src/tiled/preferencesdialog.cpp +++ b/src/tiled/preferencesdialog.cpp @@ -93,6 +93,9 @@ PreferencesDialog::PreferencesDialog(QWidget *parent) preferences, &Preferences::setSafeSavingEnabled); connect(mUi->exportOnSave, &QCheckBox::toggled, preferences, &Preferences::setExportOnSave); + connect(mUi->enableTextPaste, &QCheckBox::toggled, + preferences, &Preferences::setEnableTextPaste); + connect(mUi->naturalSorting, &QCheckBox::toggled, preferences, &Preferences::setNaturalSorting); @@ -220,6 +223,8 @@ void PreferencesDialog::fromPreferences() mUi->restoreSession->setChecked(prefs->restoreSessionOnStartup()); mUi->safeSaving->setChecked(prefs->safeSavingEnabled()); mUi->exportOnSave->setChecked(prefs->exportOnSave()); + mUi->enableTextPaste->setChecked(prefs->enableTextPaste()); + mUi->naturalSorting->setChecked(prefs->naturalSorting()); mUi->embedTilesets->setChecked(prefs->exportOption(Preferences::EmbedTilesets)); diff --git a/src/tiled/preferencesdialog.ui b/src/tiled/preferencesdialog.ui index f89ec94d22..cb638d130f 100644 --- a/src/tiled/preferencesdialog.ui +++ b/src/tiled/preferencesdialog.ui @@ -64,6 +64,16 @@ + + + + Enable to copy TMX as text from other programs. + + + Set clipboard to use plain text + + + @@ -687,6 +697,8 @@ restoreSession safeSaving exportOnSave + enableTextPaste + embedTilesets detachTemplateInstances resolveObjectTypesAndProperties