From 3af1a7b4cfd18469086fcbec2eef9f7da64a15ef Mon Sep 17 00:00:00 2001 From: Ville Voutilainen Date: Mon, 23 Mar 2020 15:45:55 +0200 Subject: [PATCH] Android: fix a thinko in syncing icons to widgets The path can't be set unconditionally, and copyIcon sets the path when necessary. So call copyIcon here. Task-number: QTCREATORBUG-23747 Change-Id: I72a61798ad54c94a5c2a30bb313eb234f51d5ff3 Reviewed-by: Assam Boudjelthia Reviewed-by: BogDan Vatra --- .../android/androidmanifesteditorwidget.cpp | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/src/plugins/android/androidmanifesteditorwidget.cpp b/src/plugins/android/androidmanifesteditorwidget.cpp index 72c6dc11b2d..e3722374d51 100644 --- a/src/plugins/android/androidmanifesteditorwidget.cpp +++ b/src/plugins/android/androidmanifesteditorwidget.cpp @@ -840,12 +840,12 @@ void AndroidManifestEditorWidget::syncToWidgets(const QDomDocument &doc) metadataElem = metadataElem.nextSiblingElement(QLatin1String("meta-data")); } + copyIcon(LowDPI, baseDir, baseDir + iconPath(LowDPI)); + copyIcon(MediumDPI, baseDir, baseDir + iconPath(MediumDPI)); + copyIcon(HighDPI, baseDir, baseDir + iconPath(HighDPI)); m_lIconButton->setIcon(icon(baseDir, LowDPI)); m_mIconButton->setIcon(icon(baseDir, MediumDPI)); m_hIconButton->setIcon(icon(baseDir, HighDPI)); - m_lIconPath = baseDir + iconPath(LowDPI); - m_mIconPath = baseDir + iconPath(MediumDPI); - m_hIconPath = baseDir + iconPath(HighDPI); disconnect(m_defaultPermissonsCheckBox, &QCheckBox::stateChanged, this, &AndroidManifestEditorWidget::defaultPermissionOrFeatureCheckBoxClicked); @@ -1343,18 +1343,19 @@ void AndroidManifestEditorWidget::copyIcon(IconDPI dpi, const QString &baseDir, return; } QFileInfo targetFile(targetPath); - if (filePath == targetPath) - return; - removeIcon(dpi, baseDir); + if (filePath != targetPath) + removeIcon(dpi, baseDir); QImage original(filePath); if (!targetPath.isEmpty() && !original.isNull()) { - QDir dir; - dir.mkpath(QFileInfo(targetPath).absolutePath()); - QSize targetSize = iconSize(dpi); - QImage scaled = original.scaled(targetSize.width(), targetSize.height(), - Qt::KeepAspectRatio, Qt::SmoothTransformation); - toggleIconScaleWarning(dpi, scaled.width() > original.width() || scaled.height() > original.height()); - scaled.save(targetPath); + if (filePath != targetPath) { + QDir dir; + dir.mkpath(QFileInfo(targetPath).absolutePath()); + QSize targetSize = iconSize(dpi); + QImage scaled = original.scaled(targetSize.width(), targetSize.height(), + Qt::KeepAspectRatio, Qt::SmoothTransformation); + toggleIconScaleWarning(dpi, scaled.width() > original.width() || scaled.height() > original.height()); + scaled.save(targetPath); + } updateIconPath(targetPath, dpi); } } @@ -1403,6 +1404,7 @@ void AndroidManifestEditorWidget::setMasterIcon() m_lIconButton->setIcon(icon(baseDir, LowDPI)); m_mIconButton->setIcon(icon(baseDir, MediumDPI)); m_hIconButton->setIcon(icon(baseDir, HighDPI)); + syncToEditor(); } void AndroidManifestEditorWidget::setLDPIIcon() @@ -1414,6 +1416,7 @@ void AndroidManifestEditorWidget::setLDPIIcon() QString baseDir = m_textEditorWidget->textDocument()->filePath().toFileInfo().absolutePath(); copyIcon(LowDPI, baseDir, m_lIconPath); m_lIconButton->setIcon(icon(baseDir, LowDPI)); + syncToEditor(); } void AndroidManifestEditorWidget::setMDPIIcon() @@ -1425,6 +1428,7 @@ void AndroidManifestEditorWidget::setMDPIIcon() QString baseDir = m_textEditorWidget->textDocument()->filePath().toFileInfo().absolutePath(); copyIcon(MediumDPI, baseDir, m_mIconPath); m_mIconButton->setIcon(icon(baseDir, MediumDPI)); + syncToEditor(); } void AndroidManifestEditorWidget::setHDPIIcon() @@ -1436,6 +1440,7 @@ void AndroidManifestEditorWidget::setHDPIIcon() QString baseDir = m_textEditorWidget->textDocument()->filePath().toFileInfo().absolutePath(); copyIcon(HighDPI, baseDir, m_hIconPath); m_hIconButton->setIcon(icon(baseDir, HighDPI)); + syncToEditor(); } void AndroidManifestEditorWidget::clearLDPIIcon() @@ -1444,6 +1449,7 @@ void AndroidManifestEditorWidget::clearLDPIIcon() m_lIconButton->setIcon(QIcon()); QString baseDir = m_textEditorWidget->textDocument()->filePath().toFileInfo().absolutePath(); removeIcon(LowDPI, baseDir); + syncToEditor(); } void AndroidManifestEditorWidget::clearMDPIIcon() @@ -1452,6 +1458,7 @@ void AndroidManifestEditorWidget::clearMDPIIcon() m_mIconButton->setIcon(QIcon()); QString baseDir = m_textEditorWidget->textDocument()->filePath().toFileInfo().absolutePath(); removeIcon(MediumDPI, baseDir); + syncToEditor(); } void AndroidManifestEditorWidget::clearHDPIIcon() @@ -1460,6 +1467,7 @@ void AndroidManifestEditorWidget::clearHDPIIcon() m_hIconButton->setIcon(QIcon()); QString baseDir = m_textEditorWidget->textDocument()->filePath().toFileInfo().absolutePath(); removeIcon(HighDPI, baseDir); + syncToEditor(); } void AndroidManifestEditorWidget::createDPIButton(QHBoxLayout *layout,