From 2adfd0bfeba3a54c2b764332027af72e7090965a Mon Sep 17 00:00:00 2001 From: Gaspar Capello Date: Tue, 16 Apr 2024 12:46:47 -0300 Subject: [PATCH] Fix do not allow to install theme with the same content of the default aseprite-theme (fix #4226) --- data/strings/en.ini | 1 + src/app/commands/cmd_options.cpp | 28 ++++++++++++++++++++++++++-- src/app/extensions.cpp | 3 +-- src/app/extensions.h | 4 ++++ 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/data/strings/en.ini b/data/strings/en.ini index 1ea1b13bc7d..cc15c6b729f 100644 --- a/data/strings/en.ini +++ b/data/strings/en.ini @@ -90,6 +90,7 @@ job_working = {0}< {2}%\n<< UI Scaling: {3}% -> {4}%\n<extensions().getCompressedExtensionInfo(filename); + + if (kAsepriteDefaultThemeExtensionName == + base::string_to_lower(info.name)) + return true; + return false; + } + catch (const std::exception& ex) { + Console::showException(ex); + } + } + void installExtension(const std::string& filename) { try { Extensions& exts = App::instance()->extensions(); @@ -1760,7 +1784,7 @@ class OptionsWindow : public app::gen::Options { return paths; } - static base::paths createUserDirPaths(const base::paths dirNames) { + static base::paths getUserDirPaths(const base::paths dirNames) { ResourceFinder rf; for (auto& fn : dirNames) rf.includeUserDir(fn.c_str()); @@ -1791,7 +1815,7 @@ class OptionsWindow : public app::gen::Options { if (!e->isDefaultTheme()) return false; auto userThemePaths = - createUserDirPaths({"extensions", skin::SkinTheme::kThemesFolderName}); + getUserDirPaths({"extensions", skin::SkinTheme::kThemesFolderName}); for (auto& p : userThemePaths) { // Has the user path (p) the same path of the extension (e->path())? if (std::strncmp(e->path().c_str(), p.c_str(), p.size()) == 0) diff --git a/src/app/extensions.cpp b/src/app/extensions.cpp index 768a9435e89..fa5684de618 100644 --- a/src/app/extensions.cpp +++ b/src/app/extensions.cpp @@ -1,5 +1,5 @@ // Aseprite -// Copyright (C) 2020-2023 Igara Studio S.A. +// Copyright (C) 2020-2024 Igara Studio S.A. // Copyright (C) 2017-2018 David Capello // // This program is distributed under the terms of @@ -56,7 +56,6 @@ namespace { const char* kPackageJson = "package.json"; const char* kInfoJson = "__info.json"; const char* kPrefLua = "__pref.lua"; -const char* kAsepriteDefaultThemeExtensionName = "aseprite-theme"; class ReadArchive { public: diff --git a/src/app/extensions.h b/src/app/extensions.h index 8123cdbfc47..3d7ca245726 100644 --- a/src/app/extensions.h +++ b/src/app/extensions.h @@ -21,6 +21,10 @@ namespace ui { class Widget; } +namespace { + const char* kAsepriteDefaultThemeExtensionName = "aseprite-theme"; +} + namespace app { // Key=id