summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2018-02-11 00:35:56 +0100
committerPetr Mrázek <peterix@gmail.com>2018-02-11 00:35:56 +0100
commit38e669dbf55635fd715e3a782b39c9f0881eb601 (patch)
treeb3108050526de88d2f94922a83fe9d2755e4fd10
parentca117654368c21ea55fe51b82500447404d9beae (diff)
downloadMultiMC-38e669dbf55635fd715e3a782b39c9f0881eb601.tar
MultiMC-38e669dbf55635fd715e3a782b39c9f0881eb601.tar.gz
MultiMC-38e669dbf55635fd715e3a782b39c9f0881eb601.tar.lz
MultiMC-38e669dbf55635fd715e3a782b39c9f0881eb601.tar.xz
MultiMC-38e669dbf55635fd715e3a782b39c9f0881eb601.zip
NOISSUE change FS::updateTimestamp to work with directories too, use it to fix icon issues on macOS
-rw-r--r--api/logic/FileSystem.cpp35
-rw-r--r--application/MultiMC.cpp2
2 files changed, 17 insertions, 20 deletions
diff --git a/api/logic/FileSystem.cpp b/api/logic/FileSystem.cpp
index 1f9f0e43..d24d9364 100644
--- a/api/logic/FileSystem.cpp
+++ b/api/logic/FileSystem.cpp
@@ -9,6 +9,14 @@
#include <QUrl>
#include <QStandardPaths>
+#if defined Q_OS_WIN32
+ #include <windows.h>
+ #include <string>
+ #include <sys/utime.h>
+#else
+ #include <utime.h>
+#endif
+
namespace FS {
void ensureExists(const QDir &dir)
@@ -62,21 +70,13 @@ QByteArray read(const QString &filename)
bool updateTimestamp(const QString& filename)
{
- QFile file(filename);
- if (!file.exists())
- {
- return false;
- }
- if (!file.open(QIODevice::ReadWrite))
- {
- return false;
- }
- const quint64 size = file.size();
- file.seek(size);
- file.write( QByteArray(1, '0') );
- file.resize(size);
- return true;
-
+#ifdef Q_OS_WIN32
+ std::wstring filename_utf_16 = filename.toStdWString();
+ return (_wutime64(filename_utf_16.c_str(), nullptr) == 0);
+#else
+ QByteArray filenameBA = QFile::encodeName(filename);
+ return (utime(filenameBA.data(), nullptr) == 0);
+#endif
}
bool ensureFilePathExists(QString filenamepath)
@@ -163,11 +163,6 @@ bool copy::operator()(const QString &offset)
return true;
}
-
-#if defined Q_OS_WIN32
-#include <windows.h>
-#include <string>
-#endif
bool deletePath(QString path)
{
bool OK = true;
diff --git a/application/MultiMC.cpp b/application/MultiMC.cpp
index e8309ceb..a5b3b347 100644
--- a/application/MultiMC.cpp
+++ b/application/MultiMC.cpp
@@ -330,6 +330,8 @@ MultiMC::MultiMC(int &argc, char **argv) : QApplication(argc, argv)
#elif defined(Q_OS_MAC)
QDir foo(FS::PathCombine(binPath, "../.."));
m_rootPath = foo.absolutePath();
+ // on macOS, touch the root to force Finder to reload the .app metadata (and fix any icon change issues)
+ FS::updateTimestamp(m_rootPath);
#endif
#ifdef MULTIMC_JARS_LOCATION