diff --git a/PowerEditor/src/Notepad_plus.cpp b/PowerEditor/src/Notepad_plus.cpp index e1153c595..04d86d886 100644 --- a/PowerEditor/src/Notepad_plus.cpp +++ b/PowerEditor/src/Notepad_plus.cpp @@ -7930,8 +7930,18 @@ void Notepad_plus::refreshDarkMode(bool resetStyle) generic_string xmlFileName = NppDarkMode::getThemeName(); if (!xmlFileName.empty()) { - themePath = themeSwitcher.getThemeDirPath(); - pathAppend(themePath, xmlFileName); + if (!nppParams.isLocal() || nppParams.isCloud()) + { + themePath = nppParams.getUserPath(); + pathAppend(themePath, TEXT("themes\\")); + pathAppend(themePath, xmlFileName); + } + + if (::PathFileExists(themePath.c_str()) == FALSE || themePath.empty()) + { + themePath = themeSwitcher.getThemeDirPath(); + pathAppend(themePath, xmlFileName); + } themeName = themeSwitcher.getThemeFromXmlFileName(themePath.c_str()); } @@ -7944,7 +7954,7 @@ void Notepad_plus::refreshDarkMode(bool resetStyle) themeName = themeSwitcher.getDefaultThemeLabel(); } - if (::PathFileExists(themePath.c_str())) + if (::PathFileExists(themePath.c_str()) == TRUE) { nppParams.getNppGUI()._themeName = themePath; diff --git a/PowerEditor/src/Notepad_plus_Window.cpp b/PowerEditor/src/Notepad_plus_Window.cpp index 410c2cd80..678e7dc10 100644 --- a/PowerEditor/src/Notepad_plus_Window.cpp +++ b/PowerEditor/src/Notepad_plus_Window.cpp @@ -70,7 +70,7 @@ void Notepad_plus_Window::init(HINSTANCE hInst, HWND parent, const TCHAR *cmdLin timestampBegin = time(NULL); Window::init(hInst, parent); - WNDCLASS nppClass; + WNDCLASS nppClass{}; nppClass.style = CS_BYTEALIGNWINDOW | CS_DBLCLKS; nppClass.lpfnWndProc = Notepad_plus_Proc; @@ -128,8 +128,8 @@ void Notepad_plus_Window::init(HINSTANCE hInst, HWND parent, const TCHAR *cmdLin } else { - WINDOWPLACEMENT posInfo; - posInfo.length = sizeof(WINDOWPLACEMENT); + WINDOWPLACEMENT posInfo{}; + posInfo.length = sizeof(WINDOWPLACEMENT); posInfo.flags = 0; if (_isPrelaunch) posInfo.showCmd = SW_HIDE; @@ -215,22 +215,24 @@ void Notepad_plus_Window::init(HINSTANCE hInst, HWND parent, const TCHAR *cmdLin // Get themes from both npp install themes dir and app data themes dir with the per user // overriding default themes of the same name. - generic_string appDataThemeDir; - if (nppParams.getAppDataNppDir() && nppParams.getAppDataNppDir()[0]) - { - appDataThemeDir = nppParams.getAppDataNppDir(); - pathAppend(appDataThemeDir, TEXT("themes\\")); - _notepad_plus_plus_core.getMatchedFileNames(appDataThemeDir.c_str(), 0, patterns, fileNames, false, false); - for (size_t i = 0, len = fileNames.size() ; i < len ; ++i) - { - themeSwitcher.addThemeFromXml(fileNames[i]); - } - } + generic_string appDataThemeDir = nppParams.isCloud() ? nppParams.getUserPath() : nppParams.getAppDataNppDir(); + if (!appDataThemeDir.empty()) + { + pathAppend(appDataThemeDir, TEXT("themes\\")); + _notepad_plus_plus_core.getMatchedFileNames(appDataThemeDir.c_str(), 0, patterns, fileNames, false, false); + for (size_t i = 0, len = fileNames.size() ; i < len ; ++i) + { + themeSwitcher.addThemeFromXml(fileNames[i]); + } + } fileNames.clear(); generic_string nppThemeDir; - nppThemeDir = nppDir.c_str(); // <- should use the pointer to avoid the constructor of copy + if (!nppParams.isLocal()) + { + nppThemeDir = nppDir.c_str(); // <- should use the pointer to avoid the constructor of copy + } pathAppend(nppThemeDir, TEXT("themes\\")); // Set theme directory to their installation directory @@ -240,7 +242,7 @@ void Notepad_plus_Window::init(HINSTANCE hInst, HWND parent, const TCHAR *cmdLin for (size_t i = 0, len = fileNames.size(); i < len ; ++i) { generic_string themeName( themeSwitcher.getThemeFromXmlFileName(fileNames[i].c_str()) ); - if (!themeSwitcher.themeNameExists(themeName.c_str()) ) + if (!themeSwitcher.themeNameExists(themeName.c_str())) { themeSwitcher.addThemeFromXml(fileNames[i]); @@ -266,8 +268,18 @@ void Notepad_plus_Window::init(HINSTANCE hInst, HWND parent, const TCHAR *cmdLin generic_string xmlFileName = NppDarkMode::getThemeName(); if (!xmlFileName.empty()) { - themePath = themeSwitcher.getThemeDirPath(); - pathAppend(themePath, xmlFileName); + if (!nppParams.isLocal() || nppParams.isCloud()) + { + themePath = nppParams.getUserPath(); + pathAppend(themePath, TEXT("themes\\")); + pathAppend(themePath, xmlFileName); + } + + if (::PathFileExists(themePath.c_str()) == FALSE || themePath.empty()) + { + themePath = themeSwitcher.getThemeDirPath(); + pathAppend(themePath, xmlFileName); + } } else { @@ -275,7 +287,7 @@ void Notepad_plus_Window::init(HINSTANCE hInst, HWND parent, const TCHAR *cmdLin themePath = themeInfo.second; } - if (::PathFileExists(themePath.c_str())) + if (::PathFileExists(themePath.c_str()) == TRUE) { nppGUI._themeName.assign(themePath); nppParams.reloadStylers(themePath.c_str()); @@ -305,7 +317,7 @@ void Notepad_plus_Window::init(HINSTANCE hInst, HWND parent, const TCHAR *cmdLin ::SendMessage(_hSelf, NPPM_INTERNAL_ENABLECHANGEHISTORY, 0, 0); // Notify plugins that Notepad++ is ready - SCNotification scnN; + SCNotification scnN{}; scnN.nmhdr.code = NPPN_READY; scnN.nmhdr.hwndFrom = _hSelf; scnN.nmhdr.idFrom = 0; diff --git a/PowerEditor/src/NppDarkMode.h b/PowerEditor/src/NppDarkMode.h index 099961438..58c83bbe7 100644 --- a/PowerEditor/src/NppDarkMode.h +++ b/PowerEditor/src/NppDarkMode.h @@ -100,8 +100,8 @@ namespace NppDarkMode { bool _enableWindowsMode = false; - NppDarkMode::AdvOptDefaults _darkDefaults{}; - NppDarkMode::AdvOptDefaults _lightDefaults{}; + NppDarkMode::AdvOptDefaults _darkDefaults{ L"DarkModeDefault.xml", 0, 2, false }; + NppDarkMode::AdvOptDefaults _lightDefaults{ L"", 4, 0, true }; }; void initDarkMode(); // pulls options from NppParameters diff --git a/PowerEditor/src/Parameters.cpp b/PowerEditor/src/Parameters.cpp index fa196ef2c..17a48c375 100644 --- a/PowerEditor/src/Parameters.cpp +++ b/PowerEditor/src/Parameters.cpp @@ -1180,7 +1180,8 @@ bool NppParameters::load() // // the 2nd priority: cloud Choice Path // - if (::PathFileExists(cloudChoicePath.c_str())) + _isCloud = (::PathFileExists(cloudChoicePath.c_str()) == TRUE); + if (_isCloud) { // Read cloud choice std::string cloudChoiceStr = getFileContent(cloudChoicePath.c_str()); @@ -1193,6 +1194,10 @@ bool NppParameters::load() _nppGUI._cloudPath = cloudChoiceStrW; _initialCloudChoice = _nppGUI._cloudPath; } + else + { + _isCloud = false; + } } // diff --git a/PowerEditor/src/Parameters.h b/PowerEditor/src/Parameters.h index f0a06cdd8..699f6ad2f 100644 --- a/PowerEditor/src/Parameters.h +++ b/PowerEditor/src/Parameters.h @@ -1704,6 +1704,10 @@ public: return _isLocal; } + bool isCloud() const { + return _isCloud; + } + void saveConfig_xml(); generic_string getUserPath() const { @@ -1831,6 +1835,7 @@ private: WNDPROC _enableThemeDialogTextureFuncAddr = nullptr; bool _isLocal = false; bool _isx64 = false; // by default 32-bit + bool _isCloud = false; generic_string _cmdSettingsDir; generic_string _titleBarAdditional;