mirror of
https://github.com/notepad-plus-plus/notepad-plus-plus.git
synced 2025-07-27 07:44:24 +02:00
Refactor fluent icon color feature code
- fix visual glitches when toggling dark mode - make english names consistent Close #16435
This commit is contained in:
parent
331030ce66
commit
d5b5e5e107
@ -688,12 +688,9 @@ LRESULT Notepad_plus::init(HWND hwnd)
|
||||
|
||||
|
||||
//-- Tool Bar Section --//
|
||||
|
||||
const NppDarkMode::TbIconInfo toolbarIconInfo = NppDarkMode::getToolbarIconInfo();
|
||||
nppGUI._tbIconInfo = toolbarIconInfo;
|
||||
nppGUI._toolBarStatus = static_cast<toolBarStatusType>(nppGUI._tbIconInfo._tbIconSet);
|
||||
|
||||
toolBarStatusType tbStatus = nppGUI._toolBarStatus;
|
||||
nppGUI._tbIconInfo = NppDarkMode::getToolbarIconInfo();
|
||||
toolBarStatusType tbStatus = nppGUI._tbIconInfo._tbIconSet;
|
||||
willBeShown = nppGUI._toolbarShow;
|
||||
|
||||
// To notify plugins that toolbar icons can be registered
|
||||
@ -893,7 +890,7 @@ bool Notepad_plus::saveGUIParams()
|
||||
NppParameters& nppParams = NppParameters::getInstance();
|
||||
NppGUI & nppGUI = nppParams.getNppGUI();
|
||||
nppGUI._toolbarShow = _rebarTop.getIDVisible(REBAR_BAR_TOOLBAR);
|
||||
nppGUI._toolBarStatus = _toolBar.getState();
|
||||
nppGUI._tbIconInfo._tbIconSet = _toolBar.getState();
|
||||
|
||||
nppGUI._splitterPos = _subSplitter.isVertical()?POS_VERTICAL:POS_HORIZOTAL;
|
||||
UserDefineDialog *udd = _pEditView->getUserDefineDlg();
|
||||
@ -7290,11 +7287,11 @@ void Notepad_plus::launchClipboardHistoryPanel()
|
||||
// define the default docking behaviour
|
||||
data.uMask = DWS_DF_CONT_RIGHT | DWS_ICONTAB | DWS_USEOWNDARKMODE;
|
||||
|
||||
int icoID = IDR_CLIPBOARDPANEL_ICO;
|
||||
if (NppDarkMode::isEnabled())
|
||||
int icoID = IDR_CLIPBOARDPANEL_ICO2;
|
||||
if (nppParams.getNppGUI()._tbIconInfo._tbIconSet == TB_STANDARD)
|
||||
icoID = IDR_CLIPBOARDPANEL_ICO;
|
||||
else if (NppDarkMode::isEnabled())
|
||||
icoID = IDR_CLIPBOARDPANEL_ICO_DM;
|
||||
else if (nppParams.getNppGUI()._toolBarStatus != TB_STANDARD)
|
||||
icoID = IDR_CLIPBOARDPANEL_ICO2;
|
||||
|
||||
const int iconSize = DPIManagerV2::scale(g_dockingContTabIconSize, _pClipboardHistoryPanel->getHSelf());
|
||||
DPIManagerV2::loadIcon(_pPublicInterface->getHinst(), MAKEINTRESOURCE(icoID), iconSize, iconSize, &data.hIconTab, LR_LOADMAP3DCOLORS | LR_LOADTRANSPARENT);
|
||||
@ -7354,11 +7351,11 @@ void Notepad_plus::launchDocumentListPanel(bool changeFromBtnCmd)
|
||||
// define the default docking behaviour
|
||||
data.uMask = DWS_DF_CONT_LEFT | DWS_ICONTAB | DWS_USEOWNDARKMODE;
|
||||
|
||||
int icoID = IDR_DOCLIST_ICO;
|
||||
if (NppDarkMode::isEnabled())
|
||||
int icoID = IDR_DOCLIST_ICO2;
|
||||
if (nppParams.getNppGUI()._tbIconInfo._tbIconSet == TB_STANDARD)
|
||||
icoID = IDR_DOCLIST_ICO;
|
||||
else if (NppDarkMode::isEnabled())
|
||||
icoID = IDR_DOCLIST_ICO_DM;
|
||||
else if (nppParams.getNppGUI()._toolBarStatus != TB_STANDARD)
|
||||
icoID = IDR_DOCLIST_ICO2;
|
||||
|
||||
const int iconSize = DPIManagerV2::scale(g_dockingContTabIconSize, _pDocumentListPanel->getHSelf());
|
||||
DPIManagerV2::loadIcon(_pPublicInterface->getHinst(), MAKEINTRESOURCE(icoID), iconSize, iconSize, &data.hIconTab, LR_LOADMAP3DCOLORS | LR_LOADTRANSPARENT);
|
||||
@ -7442,11 +7439,11 @@ void Notepad_plus::launchAnsiCharPanel()
|
||||
// define the default docking behaviour
|
||||
data.uMask = DWS_DF_CONT_RIGHT | DWS_ICONTAB | DWS_USEOWNDARKMODE;
|
||||
|
||||
int icoID = IDR_ASCIIPANEL_ICO;
|
||||
if (NppDarkMode::isEnabled())
|
||||
int icoID = IDR_ASCIIPANEL_ICO2;
|
||||
if (nppParams.getNppGUI()._tbIconInfo._tbIconSet == TB_STANDARD)
|
||||
icoID = IDR_ASCIIPANEL_ICO;
|
||||
else if (NppDarkMode::isEnabled())
|
||||
icoID = IDR_ASCIIPANEL_ICO_DM;
|
||||
else if (nppParams.getNppGUI()._toolBarStatus != TB_STANDARD)
|
||||
icoID = IDR_ASCIIPANEL_ICO2;
|
||||
|
||||
const int iconSize = DPIManagerV2::scale(g_dockingContTabIconSize, _pAnsiCharPanel->getHSelf());
|
||||
DPIManagerV2::loadIcon(_pPublicInterface->getHinst(), MAKEINTRESOURCE(icoID), iconSize, iconSize, &data.hIconTab, LR_LOADMAP3DCOLORS | LR_LOADTRANSPARENT);
|
||||
@ -7494,11 +7491,11 @@ void Notepad_plus::launchFileBrowser(const vector<wstring> & folders, const wstr
|
||||
// define the default docking behaviour
|
||||
data.uMask = DWS_DF_CONT_LEFT | DWS_ICONTAB | DWS_USEOWNDARKMODE;
|
||||
|
||||
int icoID = IDR_FILEBROWSER_ICO;
|
||||
if (NppDarkMode::isEnabled())
|
||||
int icoID = IDR_FILEBROWSER_ICO2;
|
||||
if (nppParams.getNppGUI()._tbIconInfo._tbIconSet == TB_STANDARD)
|
||||
icoID = IDR_FILEBROWSER_ICO;
|
||||
else if (NppDarkMode::isEnabled())
|
||||
icoID = IDR_FILEBROWSER_ICO_DM;
|
||||
else if (nppParams.getNppGUI()._toolBarStatus != TB_STANDARD)
|
||||
icoID = IDR_FILEBROWSER_ICO2;
|
||||
|
||||
const int iconSize = DPIManagerV2::scale(g_dockingContTabIconSize, _pFileBrowser->getHSelf());
|
||||
DPIManagerV2::loadIcon(_pPublicInterface->getHinst(), MAKEINTRESOURCE(icoID), iconSize, iconSize, &data.hIconTab, LR_LOADMAP3DCOLORS | LR_LOADTRANSPARENT);
|
||||
@ -7604,11 +7601,11 @@ void Notepad_plus::launchProjectPanel(int cmdID, ProjectPanel ** pProjPanel, int
|
||||
// define the default docking behaviour
|
||||
data.uMask = DWS_DF_CONT_LEFT | DWS_ICONTAB | DWS_USEOWNDARKMODE;
|
||||
|
||||
int icoID = IDR_PROJECTPANEL_ICO;
|
||||
if (NppDarkMode::isEnabled())
|
||||
int icoID = IDR_PROJECTPANEL_ICO2;
|
||||
if (nppParam.getNppGUI()._tbIconInfo._tbIconSet == TB_STANDARD)
|
||||
icoID = IDR_PROJECTPANEL_ICO;
|
||||
else if (NppDarkMode::isEnabled())
|
||||
icoID = IDR_PROJECTPANEL_ICO_DM;
|
||||
else if (nppParam.getNppGUI()._toolBarStatus != TB_STANDARD)
|
||||
icoID = IDR_PROJECTPANEL_ICO2;
|
||||
|
||||
const int iconSize = DPIManagerV2::scale(g_dockingContTabIconSize, (*pProjPanel)->getHSelf());
|
||||
DPIManagerV2::loadIcon(_pPublicInterface->getHinst(), MAKEINTRESOURCE(icoID), iconSize, iconSize, &data.hIconTab, LR_LOADMAP3DCOLORS | LR_LOADTRANSPARENT);
|
||||
@ -7670,11 +7667,11 @@ void Notepad_plus::launchDocMap()
|
||||
// define the default docking behaviour
|
||||
data.uMask = DWS_DF_CONT_RIGHT | DWS_ICONTAB | DWS_USEOWNDARKMODE;
|
||||
|
||||
int icoID = IDR_DOCMAP_ICO;
|
||||
if (NppDarkMode::isEnabled())
|
||||
int icoID = IDR_DOCMAP_ICO2;
|
||||
if (nppParam.getNppGUI()._tbIconInfo._tbIconSet == TB_STANDARD)
|
||||
icoID = IDR_DOCMAP_ICO;
|
||||
else if (NppDarkMode::isEnabled())
|
||||
icoID = IDR_DOCMAP_ICO_DM;
|
||||
else if (nppParam.getNppGUI()._toolBarStatus != TB_STANDARD)
|
||||
icoID = IDR_DOCMAP_ICO2;
|
||||
|
||||
const int iconSize = DPIManagerV2::scale(g_dockingContTabIconSize, _pDocMap->getHSelf());
|
||||
DPIManagerV2::loadIcon(_pPublicInterface->getHinst(), MAKEINTRESOURCE(icoID), iconSize, iconSize, &data.hIconTab, LR_LOADMAP3DCOLORS | LR_LOADTRANSPARENT);
|
||||
@ -7721,11 +7718,11 @@ void Notepad_plus::launchFunctionList()
|
||||
|
||||
NppParameters& nppParam = NppParameters::getInstance();
|
||||
|
||||
int icoID = IDR_FUNC_LIST_ICO;
|
||||
if (NppDarkMode::isEnabled())
|
||||
int icoID = IDR_FUNC_LIST_ICO2;
|
||||
if (nppParam.getNppGUI()._tbIconInfo._tbIconSet == TB_STANDARD)
|
||||
icoID = IDR_FUNC_LIST_ICO;
|
||||
else if (NppDarkMode::isEnabled())
|
||||
icoID = IDR_FUNC_LIST_ICO_DM;
|
||||
else if (nppParam.getNppGUI()._toolBarStatus != TB_STANDARD)
|
||||
icoID = IDR_FUNC_LIST_ICO2;
|
||||
|
||||
const int iconSize = DPIManagerV2::scale(g_dockingContTabIconSize, _pFuncList->getHSelf());
|
||||
DPIManagerV2::loadIcon(_pPublicInterface->getHinst(), MAKEINTRESOURCE(icoID), iconSize, iconSize, &data.hIconTab, LR_LOADMAP3DCOLORS | LR_LOADTRANSPARENT);
|
||||
@ -8521,13 +8518,10 @@ void Notepad_plus::refreshDarkMode(bool resetStyle)
|
||||
}
|
||||
}
|
||||
|
||||
toolBarStatusType state = TB_STANDARD;
|
||||
auto& nppGUITbInfo = nppParams.getNppGUI()._tbIconInfo;
|
||||
const NppDarkMode::TbIconInfo toolbarIconInfo = NppDarkMode::getToolbarIconInfo();
|
||||
nppGUITbInfo = toolbarIconInfo;
|
||||
state = static_cast<toolBarStatusType>(nppGUITbInfo._tbIconSet);
|
||||
nppGUITbInfo = NppDarkMode::getToolbarIconInfo();
|
||||
|
||||
switch (state)
|
||||
switch (nppGUITbInfo._tbIconSet)
|
||||
{
|
||||
case TB_SMALL:
|
||||
_toolBar.reduce();
|
||||
|
@ -322,13 +322,10 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa
|
||||
nppGUI._darkmode._isEnabled = enableDarkMode;
|
||||
if (!_preference.isCreated())
|
||||
{
|
||||
toolBarStatusType state = TB_STANDARD;
|
||||
auto& nppGUITbInfo = nppGUI._tbIconInfo;
|
||||
const NppDarkMode::TbIconInfo toolbarIconInfo = NppDarkMode::getToolbarIconInfo();
|
||||
nppGUITbInfo = toolbarIconInfo;
|
||||
state = static_cast<toolBarStatusType>(nppGUITbInfo._tbIconSet);
|
||||
nppGUITbInfo = NppDarkMode::getToolbarIconInfo();
|
||||
|
||||
switch (state)
|
||||
switch (nppGUITbInfo._tbIconSet)
|
||||
{
|
||||
case TB_SMALL:
|
||||
_toolBar.reduce();
|
||||
|
@ -34,7 +34,6 @@
|
||||
|
||||
#ifdef __GNUC__
|
||||
#include <cmath>
|
||||
#include <memory>
|
||||
#define WINAPI_LAMBDA WINAPI
|
||||
#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE
|
||||
#define DWMWA_USE_IMMERSIVE_DARK_MODE 20
|
||||
@ -377,7 +376,7 @@ namespace NppDarkMode
|
||||
}
|
||||
|
||||
static Options _options; // actual runtime options
|
||||
static AdvancedOptions g_advOptions;
|
||||
static ::AdvancedOptions g_advOptions;
|
||||
|
||||
static Options configuredOptions()
|
||||
{
|
||||
@ -578,7 +577,7 @@ namespace NppDarkMode
|
||||
: g_advOptions._lightDefaults._tbIconInfo;
|
||||
|
||||
if (toolbarInfo._tbCustomColor == 0)
|
||||
toolbarInfo._tbCustomColor = NppDarkMode::getAccentColor();
|
||||
toolbarInfo._tbCustomColor = NppDarkMode::getAccentColor(useDark);
|
||||
|
||||
return toolbarInfo;
|
||||
}
|
||||
@ -591,9 +590,9 @@ namespace NppDarkMode
|
||||
void setToolbarIconSet(int state2Set, bool useDark)
|
||||
{
|
||||
if (useDark)
|
||||
g_advOptions._darkDefaults._tbIconInfo._tbIconSet = state2Set;
|
||||
g_advOptions._darkDefaults._tbIconInfo._tbIconSet = static_cast<toolBarStatusType>(state2Set);
|
||||
else
|
||||
g_advOptions._lightDefaults._tbIconInfo._tbIconSet = state2Set;
|
||||
g_advOptions._lightDefaults._tbIconInfo._tbIconSet = static_cast<toolBarStatusType>(state2Set);
|
||||
}
|
||||
|
||||
void setToolbarIconSet(int state2Set)
|
||||
@ -721,9 +720,14 @@ namespace NppDarkMode
|
||||
return lightness;
|
||||
}
|
||||
|
||||
COLORREF getAccentColor(bool useDark)
|
||||
{
|
||||
return useDark ? cAccentDark : cAccentLight;
|
||||
}
|
||||
|
||||
COLORREF getAccentColor()
|
||||
{
|
||||
return NppDarkMode::isEnabled() ? cAccentDark : cAccentLight;
|
||||
return getAccentColor(NppDarkMode::isEnabled());
|
||||
}
|
||||
|
||||
COLORREF getBackgroundColor() { return getTheme()._colors.background; }
|
||||
@ -3856,204 +3860,4 @@ namespace NppDarkMode
|
||||
}
|
||||
return NppDarkMode::onCtlColor(hdc);
|
||||
}
|
||||
|
||||
bool changeFluentIconColor(HICON* phIcon, const std::vector<std::pair<COLORREF, COLORREF>>& colorMappings, int tolerance)
|
||||
{
|
||||
if (!*phIcon)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
HDC hdcScreen = nullptr;
|
||||
HDC hdcBitmap = nullptr;
|
||||
BITMAP bm{};
|
||||
ICONINFO ii{};
|
||||
HBITMAP hbmNew = nullptr;
|
||||
std::unique_ptr<RGBQUAD[]> pixels;
|
||||
|
||||
const bool changeEverything = colorMappings[0].first == 0;
|
||||
|
||||
auto cleanup = [&]()
|
||||
{
|
||||
if (hdcScreen) ::ReleaseDC(nullptr, hdcScreen);
|
||||
if (hdcBitmap) ::DeleteDC(hdcBitmap);
|
||||
if (ii.hbmColor) ::DeleteObject(ii.hbmColor);
|
||||
if (ii.hbmMask) ::DeleteObject(ii.hbmMask);
|
||||
if (hbmNew) ::DeleteObject(hbmNew);
|
||||
};
|
||||
|
||||
hdcScreen = ::GetDC(nullptr);
|
||||
hdcBitmap = ::CreateCompatibleDC(nullptr);
|
||||
|
||||
if (!hdcScreen || !hdcBitmap || !::GetIconInfo(*phIcon, &ii) || !ii.hbmColor || !::GetObject(ii.hbmColor, sizeof(BITMAP), &bm))
|
||||
{
|
||||
cleanup();
|
||||
return false;
|
||||
}
|
||||
|
||||
BITMAPINFO bmi{};
|
||||
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||
bmi.bmiHeader.biWidth = bm.bmWidth;
|
||||
bmi.bmiHeader.biHeight = -bm.bmHeight; // Top-down bitmap
|
||||
bmi.bmiHeader.biPlanes = 1;
|
||||
bmi.bmiHeader.biBitCount = 32;
|
||||
bmi.bmiHeader.biCompression = BI_RGB;
|
||||
|
||||
pixels = std::make_unique<RGBQUAD[]>(static_cast<size_t>(bm.bmWidth) * bm.bmHeight);
|
||||
if (!pixels || !::GetDIBits(hdcBitmap, ii.hbmColor, 0, bm.bmHeight, pixels.get(), &bmi, DIB_RGB_COLORS))
|
||||
{
|
||||
cleanup();
|
||||
return false;
|
||||
}
|
||||
|
||||
for (int i = 0; i < bm.bmWidth * bm.bmHeight; i++)
|
||||
{
|
||||
if (pixels[i].rgbReserved != 0) // Modify non-transparent pixels
|
||||
{
|
||||
if (changeEverything)
|
||||
{
|
||||
COLORREF cNew = colorMappings[0].second == 0 ? NppDarkMode::getAccentColor() : colorMappings[0].second;
|
||||
pixels[i].rgbRed = GetRValue(cNew);
|
||||
pixels[i].rgbGreen = GetGValue(cNew);
|
||||
pixels[i].rgbBlue = GetBValue(cNew);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (const auto& [cToChange, cNew] : colorMappings)
|
||||
{
|
||||
|
||||
if (std::abs(pixels[i].rgbRed - GetRValue(cToChange)) <= tolerance &&
|
||||
std::abs(pixels[i].rgbGreen - GetGValue(cToChange)) <= tolerance &&
|
||||
std::abs(pixels[i].rgbBlue - GetBValue(cToChange)) <= tolerance)
|
||||
{
|
||||
COLORREF finalNewColor = (cNew == 0) ? NppDarkMode::getAccentColor() : cNew;
|
||||
pixels[i].rgbRed = GetRValue(finalNewColor);
|
||||
pixels[i].rgbGreen = GetGValue(finalNewColor);
|
||||
pixels[i].rgbBlue = GetBValue(finalNewColor);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
hbmNew = ::CreateCompatibleBitmap(hdcScreen, bm.bmWidth, bm.bmHeight);
|
||||
if (!hbmNew || !::SetDIBits(hdcBitmap, hbmNew, 0, bm.bmHeight, pixels.get(), &bmi, DIB_RGB_COLORS))
|
||||
{
|
||||
cleanup();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ii.hbmColor)
|
||||
{
|
||||
::DeleteObject(ii.hbmColor);
|
||||
ii.hbmColor = nullptr;
|
||||
}
|
||||
|
||||
ii.hbmColor = hbmNew;
|
||||
HICON hIconNew = ::CreateIconIndirect(&ii);
|
||||
if (!hIconNew)
|
||||
{
|
||||
cleanup();
|
||||
return false;
|
||||
}
|
||||
|
||||
::DestroyIcon(*phIcon);
|
||||
*phIcon = hIconNew;
|
||||
|
||||
cleanup();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool changeFluentIconColor(HICON* phIcon)
|
||||
{
|
||||
const auto cMain = NppDarkMode::isEnabled() ? cDefaultMainDark : cDefaultMainLight;
|
||||
const auto cSecondary = NppDarkMode::isEnabled() ? cDefaultSecondaryDark : cDefaultSecondaryLight;
|
||||
std::vector<std::pair<COLORREF, COLORREF>> colorMappings;
|
||||
|
||||
NppParameters& nppParams = NppParameters::getInstance();
|
||||
const auto& tbInfo = nppParams.getNppGUI()._tbIconInfo;
|
||||
|
||||
COLORREF cOld = tbInfo._tbUseMono ? 0 : cSecondary;
|
||||
COLORREF cNew = 0;
|
||||
|
||||
switch (tbInfo._tbColor)
|
||||
{
|
||||
case FluentColor::accent:
|
||||
{
|
||||
cNew = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case FluentColor::red:
|
||||
{
|
||||
cNew = RGB(0xE8, 0x11, 0x23);
|
||||
break;
|
||||
}
|
||||
|
||||
case FluentColor::green:
|
||||
{
|
||||
cNew = RGB(0x00, 0x8B, 0x00);
|
||||
break;
|
||||
}
|
||||
|
||||
case FluentColor::blue:
|
||||
{
|
||||
cNew = RGB(0x00, 0x78, 0xD4);
|
||||
break;
|
||||
}
|
||||
|
||||
case FluentColor::purple:
|
||||
{
|
||||
cNew = RGB(0xB1, 0x46, 0xC2);
|
||||
break;
|
||||
}
|
||||
|
||||
case FluentColor::cyan:
|
||||
{
|
||||
cNew = RGB(0x00, 0xB7, 0xC3);
|
||||
break;
|
||||
}
|
||||
|
||||
case FluentColor::olive:
|
||||
{
|
||||
cNew = RGB(0x49, 0x82, 0x05);
|
||||
break;
|
||||
}
|
||||
|
||||
case FluentColor::yellow:
|
||||
{
|
||||
cNew = RGB(0xFF, 0xB9, 0x00);
|
||||
break;
|
||||
}
|
||||
|
||||
case FluentColor::custom:
|
||||
{
|
||||
if (tbInfo._tbCustomColor != 0)
|
||||
{
|
||||
cNew = tbInfo._tbCustomColor;
|
||||
break;
|
||||
}
|
||||
[[fallthrough]];
|
||||
}
|
||||
|
||||
case FluentColor::defaultColor:
|
||||
{
|
||||
if (tbInfo._tbUseMono)
|
||||
{
|
||||
cNew = cMain;
|
||||
break;
|
||||
}
|
||||
[[fallthrough]];
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
colorMappings = { {cOld, cNew} };
|
||||
return NppDarkMode::changeFluentIconColor(phIcon, colorMappings);
|
||||
}
|
||||
}
|
||||
|
@ -17,9 +17,11 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <windows.h>
|
||||
|
||||
enum class FluentColor;
|
||||
struct TbIconInfo;
|
||||
struct AdvancedOptions;
|
||||
|
||||
namespace NppDarkMode
|
||||
{
|
||||
@ -80,52 +82,6 @@ namespace NppDarkMode
|
||||
dark = 2
|
||||
};
|
||||
|
||||
enum class FluentColor
|
||||
{
|
||||
defaultColor = 0,
|
||||
accent = 1,
|
||||
red = 2,
|
||||
green = 3,
|
||||
blue = 4,
|
||||
purple = 5,
|
||||
cyan = 6,
|
||||
olive = 7,
|
||||
yellow = 8,
|
||||
custom = 9,
|
||||
maxValue = 10
|
||||
};
|
||||
|
||||
struct TbIconInfo
|
||||
{
|
||||
// 0: Fluent small, 1: Fluent big, 2: Filled Fluent small, 3: Filled Fluent big, 4: Standard small
|
||||
int _tbIconSet = 4;
|
||||
|
||||
// fluent icon color
|
||||
FluentColor _tbColor = FluentColor::defaultColor;
|
||||
|
||||
// fluent icon custom color, used when _tbColor == FluentColor::custom
|
||||
COLORREF _tbCustomColor = 0;
|
||||
|
||||
// does fluent icon use monochrome colorization
|
||||
bool _tbUseMono = false;
|
||||
};
|
||||
|
||||
struct AdvOptDefaults
|
||||
{
|
||||
std::wstring _xmlFileName;
|
||||
TbIconInfo _tbIconInfo{};
|
||||
int _tabIconSet = -1;
|
||||
bool _tabUseTheme = false;
|
||||
};
|
||||
|
||||
struct AdvancedOptions
|
||||
{
|
||||
bool _enableWindowsMode = false;
|
||||
|
||||
NppDarkMode::AdvOptDefaults _darkDefaults{ L"DarkModeDefault.xml", {0, FluentColor::defaultColor, 0, false}, 2, false};
|
||||
NppDarkMode::AdvOptDefaults _lightDefaults{ L"", { 4, FluentColor::defaultColor, 0, false }, 0, true };
|
||||
};
|
||||
|
||||
constexpr UINT WM_SETBUTTONIDEALSIZE = (WM_USER + 4200);
|
||||
|
||||
void initDarkMode(); // pulls options from NppParameters
|
||||
@ -167,6 +123,7 @@ namespace NppDarkMode
|
||||
|
||||
void setDarkTone(ColorTone colorToneChoice);
|
||||
|
||||
COLORREF getAccentColor(bool useDark);
|
||||
COLORREF getAccentColor();
|
||||
|
||||
COLORREF getBackgroundColor();
|
||||
@ -281,7 +238,4 @@ namespace NppDarkMode
|
||||
LRESULT onCtlColorError(HDC hdc);
|
||||
LRESULT onCtlColorDlgStaticText(HDC hdc, bool isTextEnabled);
|
||||
LRESULT onCtlColorListbox(WPARAM wParam, LPARAM lParam);
|
||||
|
||||
bool changeFluentIconColor(HICON* phIcon, const std::vector<std::pair<COLORREF, COLORREF>>& colorMappings, int tolerance = 3);
|
||||
bool changeFluentIconColor(HICON* phIcon);
|
||||
}
|
||||
|
@ -4803,7 +4803,7 @@ void NppParameters::feedGUIParameters(TiXmlNode *node)
|
||||
if (val)
|
||||
{
|
||||
auto& tbColor = _nppGUI._tbIconInfo._tbColor;
|
||||
tbColor = static_cast<NppDarkMode::FluentColor>(i);
|
||||
tbColor = static_cast<FluentColor>(i);
|
||||
}
|
||||
|
||||
val = element->Attribute(L"fluentCustomColor", &i);
|
||||
@ -4829,16 +4829,17 @@ void NppParameters::feedGUIParameters(TiXmlNode *node)
|
||||
val = n->Value();
|
||||
if (val)
|
||||
{
|
||||
auto& tbIconSet = _nppGUI._tbIconInfo._tbIconSet;
|
||||
if (!lstrcmp(val, L"small"))
|
||||
_nppGUI._toolBarStatus = TB_SMALL;
|
||||
tbIconSet = TB_SMALL;
|
||||
else if (!lstrcmp(val, L"large"))
|
||||
_nppGUI._toolBarStatus = TB_LARGE;
|
||||
tbIconSet = TB_LARGE;
|
||||
else if (!lstrcmp(val, L"small2"))
|
||||
_nppGUI._toolBarStatus = TB_SMALL2;
|
||||
tbIconSet = TB_SMALL2;
|
||||
else if (!lstrcmp(val, L"large2"))
|
||||
_nppGUI._toolBarStatus = TB_LARGE2;
|
||||
tbIconSet = TB_LARGE2;
|
||||
else //if (!lstrcmp(val, L"standard"))
|
||||
_nppGUI._toolBarStatus = TB_STANDARD;
|
||||
tbIconSet = TB_STANDARD;
|
||||
}
|
||||
|
||||
}
|
||||
@ -6393,14 +6394,15 @@ void NppParameters::feedGUIParameters(TiXmlNode *node)
|
||||
auto& windowsMode = _nppGUI._darkmode._advOptions._enableWindowsMode;
|
||||
windowsMode = parseYesNoBoolAttribute(L"enableWindowsMode");
|
||||
|
||||
constexpr int fluentColorMaxValue = static_cast<int>(NppDarkMode::FluentColor::maxValue) - 1;
|
||||
constexpr int fluentColorMaxValue = static_cast<int>(FluentColor::maxValue) - 1;
|
||||
constexpr int tbStdIcoSet = static_cast<int>(TB_STANDARD);
|
||||
|
||||
auto& darkDefaults = _nppGUI._darkmode._advOptions._darkDefaults;
|
||||
auto& darkThemeName = darkDefaults._xmlFileName;
|
||||
auto& darkTbInfo = darkDefaults._tbIconInfo;
|
||||
darkThemeName = parseStringAttribute(L"darkThemeName", L"DarkModeDefault.xml");
|
||||
darkTbInfo._tbIconSet = parseMinMaxAttribute(L"darkToolBarIconSet", 0, 4);
|
||||
darkTbInfo._tbColor = static_cast<NppDarkMode::FluentColor>(parseMinMaxAttribute(L"darkTbFluentColor", 0, fluentColorMaxValue));
|
||||
darkTbInfo._tbIconSet = static_cast<toolBarStatusType>(parseMinMaxAttribute(L"darkToolBarIconSet", static_cast<int>(TB_SMALL), tbStdIcoSet));
|
||||
darkTbInfo._tbColor = static_cast<FluentColor>(parseMinMaxAttribute(L"darkTbFluentColor", 0, fluentColorMaxValue));
|
||||
darkTbInfo._tbCustomColor = parseIntAttribute(L"darkTbFluentCustomColor", 0);
|
||||
darkTbInfo._tbUseMono = parseYesNoBoolAttribute(L"darkTbFluentMono");
|
||||
darkDefaults._tabIconSet = parseMinMaxAttribute(L"darkTabIconSet", 2);
|
||||
@ -6410,8 +6412,8 @@ void NppParameters::feedGUIParameters(TiXmlNode *node)
|
||||
auto& lightThemeName = lightDefaults._xmlFileName;
|
||||
auto& lightTbInfo = lightDefaults._tbIconInfo;
|
||||
lightThemeName = parseStringAttribute(L"lightThemeName");
|
||||
lightTbInfo._tbIconSet = parseMinMaxAttribute(L"lightToolBarIconSet", 4, 4);
|
||||
lightTbInfo._tbColor = static_cast<NppDarkMode::FluentColor>(parseMinMaxAttribute(L"lightTbFluentColor", 0, fluentColorMaxValue));
|
||||
lightTbInfo._tbIconSet = static_cast<toolBarStatusType>(parseMinMaxAttribute(L"lightToolBarIconSet", tbStdIcoSet, tbStdIcoSet));
|
||||
lightTbInfo._tbColor = static_cast<FluentColor>(parseMinMaxAttribute(L"lightTbFluentColor", 0, fluentColorMaxValue));
|
||||
lightTbInfo._tbCustomColor = parseIntAttribute(L"lightTbFluentCustomColor", 0);
|
||||
lightTbInfo._tbUseMono = parseYesNoBoolAttribute(L"lightTbFluentMono");
|
||||
lightDefaults._tabIconSet = parseMinMaxAttribute(L"lightTabIconSet", 0);
|
||||
@ -7301,24 +7303,48 @@ void NppParameters::createXmlTreeFromGUIParams()
|
||||
// <GUIConfig name="ToolBar" visible="yes">standard</GUIConfig>
|
||||
{
|
||||
TiXmlElement *GUIConfigElement = (newGUIRoot->InsertEndChild(TiXmlElement(L"GUIConfig")))->ToElement();
|
||||
auto& nppGUITbInfo = _nppGUI._tbIconInfo;
|
||||
GUIConfigElement->SetAttribute(L"name", L"ToolBar");
|
||||
const wchar_t *pStr = (_nppGUI._toolbarShow) ? L"yes" : L"no";
|
||||
const wchar_t* pStr = (_nppGUI._toolbarShow) ? L"yes" : L"no";
|
||||
GUIConfigElement->SetAttribute(L"visible", pStr);
|
||||
GUIConfigElement->SetAttribute(L"fluentColor", static_cast<int>(_nppGUI._tbIconInfo._tbColor));
|
||||
GUIConfigElement->SetAttribute(L"fluentCustomColor", _nppGUI._tbIconInfo._tbCustomColor);
|
||||
pStr = (_nppGUI._tbIconInfo._tbUseMono) ? L"yes" : L"no";
|
||||
GUIConfigElement->SetAttribute(L"fluentColor", static_cast<int>(nppGUITbInfo._tbColor));
|
||||
GUIConfigElement->SetAttribute(L"fluentCustomColor", nppGUITbInfo._tbCustomColor);
|
||||
pStr = (nppGUITbInfo._tbUseMono) ? L"yes" : L"no";
|
||||
GUIConfigElement->SetAttribute(L"fluentMono", pStr);
|
||||
|
||||
if (_nppGUI._toolBarStatus == TB_SMALL)
|
||||
pStr = L"small";
|
||||
else if (_nppGUI._toolBarStatus == TB_LARGE)
|
||||
pStr = L"large";
|
||||
else if (_nppGUI._toolBarStatus == TB_SMALL2)
|
||||
pStr = L"small2";
|
||||
else if (_nppGUI._toolBarStatus == TB_LARGE2)
|
||||
pStr = L"large2";
|
||||
else //if (_nppGUI._toolBarStatus == TB_STANDARD)
|
||||
pStr = L"standard";
|
||||
switch (nppGUITbInfo._tbIconSet)
|
||||
{
|
||||
case TB_SMALL:
|
||||
{
|
||||
pStr = L"small";
|
||||
break;
|
||||
}
|
||||
|
||||
case TB_LARGE:
|
||||
{
|
||||
pStr = L"large";
|
||||
break;
|
||||
}
|
||||
|
||||
case TB_SMALL2:
|
||||
{
|
||||
pStr = L"small2";
|
||||
break;
|
||||
}
|
||||
|
||||
case TB_LARGE2:
|
||||
{
|
||||
pStr = L"large2";
|
||||
break;
|
||||
}
|
||||
|
||||
case TB_STANDARD:
|
||||
default:
|
||||
{
|
||||
pStr = L"standard";
|
||||
break;
|
||||
}
|
||||
}
|
||||
GUIConfigElement->InsertEndChild(TiXmlText(pStr));
|
||||
}
|
||||
|
||||
|
@ -764,13 +764,63 @@ public:
|
||||
bool _doDoubleQuotes = false;
|
||||
};
|
||||
|
||||
constexpr COLORREF g_cDefaultMainDark = RGB(0xDE, 0xDE, 0xDE);
|
||||
constexpr COLORREF g_cDefaultSecondaryDark = RGB(0x4C, 0xC2, 0xFF);
|
||||
constexpr COLORREF g_cDefaultMainLight = RGB(0x21, 0x21, 0x21);
|
||||
constexpr COLORREF g_cDefaultSecondaryLight = RGB(0x00, 0x78, 0xD4);
|
||||
|
||||
enum class FluentColor
|
||||
{
|
||||
defaultColor = 0,
|
||||
red = 1,
|
||||
green = 2,
|
||||
blue = 3,
|
||||
purple = 4,
|
||||
cyan = 5,
|
||||
olive = 6,
|
||||
yellow = 7,
|
||||
accent = 8,
|
||||
custom = 9,
|
||||
maxValue = 10
|
||||
};
|
||||
|
||||
struct TbIconInfo
|
||||
{
|
||||
toolBarStatusType _tbIconSet = TB_STANDARD;
|
||||
|
||||
// fluent icon color
|
||||
FluentColor _tbColor = FluentColor::defaultColor;
|
||||
|
||||
// fluent icon custom color, used when _tbColor == FluentColor::custom
|
||||
COLORREF _tbCustomColor = 0;
|
||||
|
||||
// does fluent icon use monochrome colorization
|
||||
bool _tbUseMono = false;
|
||||
};
|
||||
|
||||
struct AdvOptDefaults final
|
||||
{
|
||||
std::wstring _xmlFileName;
|
||||
TbIconInfo _tbIconInfo{};
|
||||
int _tabIconSet = -1;
|
||||
bool _tabUseTheme = false;
|
||||
};
|
||||
|
||||
struct AdvancedOptions final
|
||||
{
|
||||
AdvOptDefaults _darkDefaults{ L"DarkModeDefault.xml", {TB_SMALL, FluentColor::defaultColor, 0, false}, 2, false };
|
||||
AdvOptDefaults _lightDefaults{ L"", { TB_STANDARD, FluentColor::defaultColor, 0, false }, 0, true };
|
||||
|
||||
bool _enableWindowsMode = false;
|
||||
};
|
||||
|
||||
struct DarkModeConf final
|
||||
{
|
||||
bool _isEnabled = false;
|
||||
bool _isEnabledPlugin = true;
|
||||
NppDarkMode::ColorTone _colorTone = NppDarkMode::blackTone;
|
||||
NppDarkMode::Colors _customColors = NppDarkMode::getDarkModeDefaultColors();
|
||||
NppDarkMode::AdvancedOptions _advOptions{};
|
||||
AdvancedOptions _advOptions{};
|
||||
};
|
||||
|
||||
|
||||
@ -791,8 +841,7 @@ struct LargeFileRestriction final
|
||||
|
||||
struct NppGUI final
|
||||
{
|
||||
toolBarStatusType _toolBarStatus = TB_STANDARD;
|
||||
NppDarkMode::TbIconInfo _tbIconInfo{ TB_STANDARD, NppDarkMode::FluentColor::defaultColor, 0, false };
|
||||
TbIconInfo _tbIconInfo{ TB_STANDARD, FluentColor::defaultColor, 0, false };
|
||||
bool _toolbarShow = true;
|
||||
bool _statusBarShow = true;
|
||||
bool _menuBarShow = true;
|
||||
|
@ -3611,11 +3611,11 @@ void FindReplaceDlg::findAllIn(InWhat op)
|
||||
// define the default docking behaviour
|
||||
data.uMask = DWS_DF_CONT_BOTTOM | DWS_ICONTAB | DWS_ADDINFO | DWS_USEOWNDARKMODE;
|
||||
|
||||
int icoID = IDI_FIND_RESULT_ICON;
|
||||
if (NppDarkMode::isEnabled())
|
||||
int icoID = IDR_FIND_RESULT_ICO2;
|
||||
if (nppParam.getNppGUI()._tbIconInfo._tbIconSet == TB_STANDARD)
|
||||
icoID = IDI_FIND_RESULT_ICON;
|
||||
else if (NppDarkMode::isEnabled())
|
||||
icoID = IDR_FIND_RESULT_ICO_DM;
|
||||
else if (nppParam.getNppGUI()._toolBarStatus != TB_STANDARD)
|
||||
icoID = IDR_FIND_RESULT_ICO2;
|
||||
|
||||
const int iconSize = DPIManagerV2::scale(g_dockingContTabIconSize, _pFinder->getHSelf());
|
||||
DPIManagerV2::loadIcon(_hInst, MAKEINTRESOURCE(icoID), iconSize, iconSize, &data.hIconTab, LR_LOADMAP3DCOLORS | LR_LOADTRANSPARENT);
|
||||
@ -3759,11 +3759,11 @@ Finder* FindReplaceDlg::createFinder()
|
||||
// define the default docking behaviour
|
||||
data.uMask = DWS_DF_CONT_BOTTOM | DWS_ICONTAB | DWS_ADDINFO | DWS_USEOWNDARKMODE;
|
||||
|
||||
int icoID = IDI_FIND_RESULT_ICON;
|
||||
if (NppDarkMode::isEnabled())
|
||||
int icoID = IDR_FIND_RESULT_ICO2;
|
||||
if (nppParam.getNppGUI()._tbIconInfo._tbIconSet == TB_STANDARD)
|
||||
icoID = IDI_FIND_RESULT_ICON;
|
||||
else if (NppDarkMode::isEnabled())
|
||||
icoID = IDR_FIND_RESULT_ICO_DM;
|
||||
else if (nppParam.getNppGUI()._toolBarStatus != TB_STANDARD)
|
||||
icoID = IDR_FIND_RESULT_ICO2;
|
||||
|
||||
const int iconSize = DPIManagerV2::scale(g_dockingContTabIconSize, _pFinder->getHSelf());
|
||||
DPIManagerV2::loadIcon(_hInst, MAKEINTRESOURCE(icoID), iconSize, iconSize, &data.hIconTab, LR_LOADMAP3DCOLORS | LR_LOADTRANSPARENT);
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include <stdexcept>
|
||||
#include <memory>
|
||||
#include "ImageListSet.h"
|
||||
#include "Parameters.h"
|
||||
#include "NppDarkMode.h"
|
||||
#include "dpiManagerV2.h"
|
||||
|
||||
@ -74,7 +75,6 @@ void IconList::addIcon(int iconID, int cx, int cy, int failIconID, bool isToolba
|
||||
return;
|
||||
}
|
||||
}
|
||||
constexpr int IDI_ICONABSENT = 104; // check resource.h for correct id
|
||||
DPIManagerV2::loadIcon(_hInst, MAKEINTRESOURCE(IDI_ICONABSENT), cx, cy, &hIcon);
|
||||
}
|
||||
}
|
||||
@ -82,7 +82,7 @@ void IconList::addIcon(int iconID, int cx, int cy, int failIconID, bool isToolba
|
||||
if (hIcon != nullptr)
|
||||
{
|
||||
if (isToolbarNormal)
|
||||
NppDarkMode::changeFluentIconColor(&hIcon);
|
||||
IconList::changeFluentIconColor(&hIcon);
|
||||
::ImageList_AddIcon(_hImglst, hIcon);
|
||||
::DestroyIcon(hIcon);
|
||||
}
|
||||
@ -105,6 +105,207 @@ bool IconList::changeIcon(size_t index, const wchar_t* iconLocation) const
|
||||
return (i == index);
|
||||
}
|
||||
|
||||
|
||||
bool IconList::changeFluentIconColor(HICON* phIcon, const std::vector<std::pair<COLORREF, COLORREF>>& colorMappings, int tolerance) const
|
||||
{
|
||||
if (!*phIcon)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
HDC hdcScreen = nullptr;
|
||||
HDC hdcBitmap = nullptr;
|
||||
BITMAP bm{};
|
||||
ICONINFO ii{};
|
||||
HBITMAP hbmNew = nullptr;
|
||||
std::unique_ptr<RGBQUAD[]> pixels;
|
||||
|
||||
const bool changeEverything = colorMappings[0].first == 0;
|
||||
|
||||
auto cleanup = [&]()
|
||||
{
|
||||
if (hdcScreen) ::ReleaseDC(nullptr, hdcScreen);
|
||||
if (hdcBitmap) ::DeleteDC(hdcBitmap);
|
||||
if (ii.hbmColor) ::DeleteObject(ii.hbmColor);
|
||||
if (ii.hbmMask) ::DeleteObject(ii.hbmMask);
|
||||
if (hbmNew) ::DeleteObject(hbmNew);
|
||||
};
|
||||
|
||||
hdcScreen = ::GetDC(nullptr);
|
||||
hdcBitmap = ::CreateCompatibleDC(nullptr);
|
||||
|
||||
if (!hdcScreen || !hdcBitmap || !::GetIconInfo(*phIcon, &ii) || !ii.hbmColor || !::GetObject(ii.hbmColor, sizeof(BITMAP), &bm))
|
||||
{
|
||||
cleanup();
|
||||
return false;
|
||||
}
|
||||
|
||||
BITMAPINFO bmi{};
|
||||
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||
bmi.bmiHeader.biWidth = bm.bmWidth;
|
||||
bmi.bmiHeader.biHeight = -bm.bmHeight; // Top-down bitmap
|
||||
bmi.bmiHeader.biPlanes = 1;
|
||||
bmi.bmiHeader.biBitCount = 32;
|
||||
bmi.bmiHeader.biCompression = BI_RGB;
|
||||
|
||||
pixels = std::make_unique<RGBQUAD[]>(static_cast<size_t>(bm.bmWidth) * bm.bmHeight);
|
||||
if (!pixels || !::GetDIBits(hdcBitmap, ii.hbmColor, 0, bm.bmHeight, pixels.get(), &bmi, DIB_RGB_COLORS))
|
||||
{
|
||||
cleanup();
|
||||
return false;
|
||||
}
|
||||
|
||||
for (int i = 0; i < bm.bmWidth * bm.bmHeight; i++)
|
||||
{
|
||||
if (pixels[i].rgbReserved != 0) // Modify non-transparent pixels
|
||||
{
|
||||
if (changeEverything)
|
||||
{
|
||||
COLORREF cNew = colorMappings[0].second == 0 ? NppDarkMode::getAccentColor() : colorMappings[0].second;
|
||||
pixels[i].rgbRed = GetRValue(cNew);
|
||||
pixels[i].rgbGreen = GetGValue(cNew);
|
||||
pixels[i].rgbBlue = GetBValue(cNew);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (const auto& [cToChange, cNew] : colorMappings)
|
||||
{
|
||||
|
||||
if (std::abs(pixels[i].rgbRed - GetRValue(cToChange)) <= tolerance &&
|
||||
std::abs(pixels[i].rgbGreen - GetGValue(cToChange)) <= tolerance &&
|
||||
std::abs(pixels[i].rgbBlue - GetBValue(cToChange)) <= tolerance)
|
||||
{
|
||||
COLORREF finalNewColor = (cNew == 0) ? NppDarkMode::getAccentColor() : cNew;
|
||||
pixels[i].rgbRed = GetRValue(finalNewColor);
|
||||
pixels[i].rgbGreen = GetGValue(finalNewColor);
|
||||
pixels[i].rgbBlue = GetBValue(finalNewColor);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
hbmNew = ::CreateCompatibleBitmap(hdcScreen, bm.bmWidth, bm.bmHeight);
|
||||
if (!hbmNew || !::SetDIBits(hdcBitmap, hbmNew, 0, bm.bmHeight, pixels.get(), &bmi, DIB_RGB_COLORS))
|
||||
{
|
||||
cleanup();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ii.hbmColor)
|
||||
{
|
||||
::DeleteObject(ii.hbmColor);
|
||||
ii.hbmColor = nullptr;
|
||||
}
|
||||
|
||||
ii.hbmColor = hbmNew;
|
||||
HICON hIconNew = ::CreateIconIndirect(&ii);
|
||||
if (!hIconNew)
|
||||
{
|
||||
cleanup();
|
||||
return false;
|
||||
}
|
||||
|
||||
::DestroyIcon(*phIcon);
|
||||
*phIcon = hIconNew;
|
||||
|
||||
cleanup();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool IconList::changeFluentIconColor(HICON* phIcon) const
|
||||
{
|
||||
const auto cMain = NppDarkMode::isEnabled() ? g_cDefaultMainDark : g_cDefaultMainLight;
|
||||
const auto cSecondary = NppDarkMode::isEnabled() ? g_cDefaultSecondaryDark : g_cDefaultSecondaryLight;
|
||||
std::vector<std::pair<COLORREF, COLORREF>> colorMappings;
|
||||
|
||||
NppParameters& nppParams = NppParameters::getInstance();
|
||||
const auto& tbInfo = nppParams.getNppGUI()._tbIconInfo;
|
||||
|
||||
COLORREF cOld = tbInfo._tbUseMono ? 0 : cSecondary;
|
||||
COLORREF cNew = 0;
|
||||
|
||||
switch (tbInfo._tbColor)
|
||||
{
|
||||
case FluentColor::accent:
|
||||
{
|
||||
cNew = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case FluentColor::red:
|
||||
{
|
||||
cNew = RGB(0xE8, 0x11, 0x23);
|
||||
break;
|
||||
}
|
||||
|
||||
case FluentColor::green:
|
||||
{
|
||||
cNew = RGB(0x00, 0x8B, 0x00);
|
||||
break;
|
||||
}
|
||||
|
||||
case FluentColor::blue:
|
||||
{
|
||||
cNew = RGB(0x00, 0x78, 0xD4);
|
||||
break;
|
||||
}
|
||||
|
||||
case FluentColor::purple:
|
||||
{
|
||||
cNew = RGB(0xB1, 0x46, 0xC2);
|
||||
break;
|
||||
}
|
||||
|
||||
case FluentColor::cyan:
|
||||
{
|
||||
cNew = RGB(0x00, 0xB7, 0xC3);
|
||||
break;
|
||||
}
|
||||
|
||||
case FluentColor::olive:
|
||||
{
|
||||
cNew = RGB(0x49, 0x82, 0x05);
|
||||
break;
|
||||
}
|
||||
|
||||
case FluentColor::yellow:
|
||||
{
|
||||
cNew = RGB(0xFF, 0xB9, 0x00);
|
||||
break;
|
||||
}
|
||||
|
||||
case FluentColor::custom:
|
||||
{
|
||||
if (tbInfo._tbCustomColor != 0)
|
||||
{
|
||||
cNew = tbInfo._tbCustomColor;
|
||||
break;
|
||||
}
|
||||
[[fallthrough]];
|
||||
}
|
||||
|
||||
case FluentColor::defaultColor:
|
||||
{
|
||||
if (tbInfo._tbUseMono)
|
||||
{
|
||||
cNew = cMain;
|
||||
break;
|
||||
}
|
||||
[[fallthrough]];
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
colorMappings = { {cOld, cNew} };
|
||||
return IconList::changeFluentIconColor(phIcon, colorMappings);
|
||||
}
|
||||
|
||||
void ToolBarIcons::init(ToolBarButtonUnit *buttonUnitArray, int arraySize, const std::vector<DynamicCmdIcoBmp>& moreCmds)
|
||||
{
|
||||
for (int i = 0 ; i < arraySize ; ++i)
|
||||
|
@ -50,6 +50,9 @@ private :
|
||||
int *_pIconIDArray = nullptr;
|
||||
int _iconIDArraySize = 0;
|
||||
int _iconSize = 0;
|
||||
|
||||
bool changeFluentIconColor(HICON* phIcon, const std::vector<std::pair<COLORREF, COLORREF>>& colorMappings, int tolerance = 3) const;
|
||||
bool changeFluentIconColor(HICON* phIcon) const;
|
||||
};
|
||||
|
||||
struct ToolBarButtonUnit
|
||||
@ -158,4 +161,3 @@ private :
|
||||
|
||||
std::vector<IconList> _iconListVector;
|
||||
};
|
||||
|
||||
|
@ -194,8 +194,8 @@ intptr_t CALLBACK PreferenceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
_searchEngineSubDlg.create(IDD_PREFERENCE_SUB_SEARCHENGINE, false, false);
|
||||
|
||||
_wVector.push_back(DlgInfo(&_generalSubDlg, L"General", L"Global"));
|
||||
_wVector.push_back(DlgInfo(&_toolbarSubDlg, L"Tool Bar", L"Toolbar"));
|
||||
_wVector.push_back(DlgInfo(&_tabbarSubDlg, L"Tab bar", L"Tabbar"));
|
||||
_wVector.push_back(DlgInfo(&_toolbarSubDlg, L"Toolbar", L"Toolbar"));
|
||||
_wVector.push_back(DlgInfo(&_tabbarSubDlg, L"Tab Bar", L"Tabbar"));
|
||||
_wVector.push_back(DlgInfo(&_editingSubDlg, L"Editing 1", L"Scintillas"));
|
||||
_wVector.push_back(DlgInfo(&_editing2SubDlg, L"Editing 2", L"Scintillas2"));
|
||||
_wVector.push_back(DlgInfo(&_darkModeSubDlg, L"Dark Mode", L"DarkMode"));
|
||||
@ -289,6 +289,10 @@ intptr_t CALLBACK PreferenceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
|
||||
const bool isEnableAutoC = _autoCompletionSubDlg.isCheckedOrNot(IDD_AUTOC_ENABLECHECK);
|
||||
::EnableWindow(::GetDlgItem(_autoCompletionSubDlg.getHSelf(), IDD_AUTOC_USEKEY_GRP_STATIC), isEnableAutoC);
|
||||
|
||||
const bool isFluentIcon = !_toolbarSubDlg.isCheckedOrNot(IDC_RADIO_STANDARD);
|
||||
::EnableWindow(::GetDlgItem(_toolbarSubDlg.getHSelf(), IDC_TOOLBAR_GB_COLORCHOICE), isFluentIcon);
|
||||
::EnableWindow(::GetDlgItem(_toolbarSubDlg.getHSelf(), IDC_TOOLBAR_GB_COLORIZATION), isFluentIcon);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
@ -299,38 +303,36 @@ intptr_t CALLBACK PreferenceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
NppParameters& nppParams = NppParameters::getInstance();
|
||||
NppGUI& nppGUI = nppParams.getNppGUI();
|
||||
auto& nppGUITbInfo = nppGUI._tbIconInfo;
|
||||
const NppDarkMode::TbIconInfo toolbarIconInfo = NppDarkMode::getToolbarIconInfo(static_cast<bool>(wParam));
|
||||
nppGUITbInfo = toolbarIconInfo;
|
||||
nppGUI._toolBarStatus = static_cast<toolBarStatusType>(nppGUITbInfo._tbIconSet);
|
||||
nppGUITbInfo = NppDarkMode::getToolbarIconInfo(static_cast<bool>(wParam));
|
||||
|
||||
const HWND hToolbarlSubDlg = _toolbarSubDlg.getHSelf();
|
||||
|
||||
auto checkOrUncheckBtn = [&hToolbarlSubDlg](int id, WPARAM check = BST_UNCHECKED) -> void
|
||||
auto checkOrUncheckBtn = [&hToolbarlSubDlg](int id, bool check = false) -> void
|
||||
{
|
||||
::SendDlgItemMessage(hToolbarlSubDlg, id, BM_SETCHECK, check, 0);
|
||||
::SendDlgItemMessage(hToolbarlSubDlg, id, BM_SETCHECK, check ? BST_CHECKED : BST_UNCHECKED, 0);
|
||||
};
|
||||
|
||||
checkOrUncheckBtn(IDC_RADIO_SMALLICON, nppGUI._toolBarStatus == TB_SMALL ? BST_CHECKED : BST_UNCHECKED);
|
||||
checkOrUncheckBtn(IDC_RADIO_BIGICON, nppGUI._toolBarStatus == TB_LARGE ? BST_CHECKED : BST_UNCHECKED);
|
||||
checkOrUncheckBtn(IDC_RADIO_SMALLICON2, nppGUI._toolBarStatus == TB_SMALL2 ? BST_CHECKED : BST_UNCHECKED);
|
||||
checkOrUncheckBtn(IDC_RADIO_BIGICON2, nppGUI._toolBarStatus == TB_LARGE2 ? BST_CHECKED : BST_UNCHECKED);
|
||||
checkOrUncheckBtn(IDC_RADIO_STANDARD, nppGUI._toolBarStatus == TB_STANDARD ? BST_CHECKED : BST_UNCHECKED);
|
||||
checkOrUncheckBtn(IDC_RADIO_SMALLICON, nppGUITbInfo._tbIconSet == TB_SMALL);
|
||||
checkOrUncheckBtn(IDC_RADIO_BIGICON, nppGUITbInfo._tbIconSet == TB_LARGE);
|
||||
checkOrUncheckBtn(IDC_RADIO_SMALLICON2, nppGUITbInfo._tbIconSet == TB_SMALL2);
|
||||
checkOrUncheckBtn(IDC_RADIO_BIGICON2, nppGUITbInfo._tbIconSet == TB_LARGE2);
|
||||
checkOrUncheckBtn(IDC_RADIO_STANDARD, nppGUITbInfo._tbIconSet == TB_STANDARD);
|
||||
|
||||
checkOrUncheckBtn(IDC_RADIO_RED, nppGUITbInfo._tbColor == NppDarkMode::FluentColor::red ? BST_CHECKED : BST_UNCHECKED);
|
||||
checkOrUncheckBtn(IDC_RADIO_GREEN, nppGUITbInfo._tbColor == NppDarkMode::FluentColor::green ? BST_CHECKED : BST_UNCHECKED);
|
||||
checkOrUncheckBtn(IDC_RADIO_BLUE, nppGUITbInfo._tbColor == NppDarkMode::FluentColor::blue ? BST_CHECKED : BST_UNCHECKED);
|
||||
checkOrUncheckBtn(IDC_RADIO_PURPLE, nppGUITbInfo._tbColor == NppDarkMode::FluentColor::purple ? BST_CHECKED : BST_UNCHECKED);
|
||||
checkOrUncheckBtn(IDC_RADIO_CYAN, nppGUITbInfo._tbColor == NppDarkMode::FluentColor::cyan ? BST_CHECKED : BST_UNCHECKED);
|
||||
checkOrUncheckBtn(IDC_RADIO_OLIVE, nppGUITbInfo._tbColor == NppDarkMode::FluentColor::olive ? BST_CHECKED : BST_UNCHECKED);
|
||||
checkOrUncheckBtn(IDC_RADIO_YELLOW, nppGUITbInfo._tbColor == NppDarkMode::FluentColor::yellow ? BST_CHECKED : BST_UNCHECKED);
|
||||
checkOrUncheckBtn(IDC_RADIO_ACCENTCOLOR, nppGUITbInfo._tbColor == NppDarkMode::FluentColor::accent ? BST_CHECKED : BST_UNCHECKED);
|
||||
checkOrUncheckBtn(IDC_RADIO_CUSTOMCOLOR, nppGUITbInfo._tbColor == NppDarkMode::FluentColor::custom ? BST_CHECKED : BST_UNCHECKED);
|
||||
checkOrUncheckBtn(IDC_RADIO_DEFAULTCOLOR, nppGUITbInfo._tbColor == NppDarkMode::FluentColor::defaultColor ? BST_CHECKED : BST_UNCHECKED);
|
||||
checkOrUncheckBtn(IDC_RADIO_RED, nppGUITbInfo._tbColor == FluentColor::red);
|
||||
checkOrUncheckBtn(IDC_RADIO_GREEN, nppGUITbInfo._tbColor == FluentColor::green);
|
||||
checkOrUncheckBtn(IDC_RADIO_BLUE, nppGUITbInfo._tbColor == FluentColor::blue);
|
||||
checkOrUncheckBtn(IDC_RADIO_PURPLE, nppGUITbInfo._tbColor == FluentColor::purple);
|
||||
checkOrUncheckBtn(IDC_RADIO_CYAN, nppGUITbInfo._tbColor == FluentColor::cyan);
|
||||
checkOrUncheckBtn(IDC_RADIO_OLIVE, nppGUITbInfo._tbColor == FluentColor::olive);
|
||||
checkOrUncheckBtn(IDC_RADIO_YELLOW, nppGUITbInfo._tbColor == FluentColor::yellow);
|
||||
checkOrUncheckBtn(IDC_RADIO_ACCENTCOLOR, nppGUITbInfo._tbColor == FluentColor::accent);
|
||||
checkOrUncheckBtn(IDC_RADIO_CUSTOMCOLOR, nppGUITbInfo._tbColor == FluentColor::custom);
|
||||
checkOrUncheckBtn(IDC_RADIO_DEFAULTCOLOR, nppGUITbInfo._tbColor == FluentColor::defaultColor);
|
||||
|
||||
checkOrUncheckBtn(IDC_RADIO_COMPLETE, nppGUITbInfo._tbUseMono ? BST_CHECKED : BST_UNCHECKED);
|
||||
checkOrUncheckBtn(IDC_RADIO_PARTIAL, nppGUITbInfo._tbUseMono ? BST_UNCHECKED : BST_CHECKED);
|
||||
checkOrUncheckBtn(IDC_RADIO_COMPLETE, nppGUITbInfo._tbUseMono);
|
||||
checkOrUncheckBtn(IDC_RADIO_PARTIAL, !nppGUITbInfo._tbUseMono);
|
||||
|
||||
::SendMessage(hToolbarlSubDlg, NPPM_INTERNAL_CHANGETOOLBARCOLORABLESTATE, 0, 0);
|
||||
::SendMessage(hToolbarlSubDlg, NPPM_INTERNAL_CHANGETOOLBARCOLORABLESTATE, static_cast<WPARAM>(true), 0);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@ -752,7 +754,6 @@ intptr_t CALLBACK ToolbarSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
toolBarStatusType toolbarStatus = nppGUI._toolBarStatus;
|
||||
auto& nppGUITbInfo = nppGUI._tbIconInfo;
|
||||
|
||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_HIDE, BM_SETCHECK, nppGUI._toolbarShow ? BST_UNCHECKED : BST_CHECKED, 0);
|
||||
@ -783,34 +784,34 @@ intptr_t CALLBACK ToolbarSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
ID2Check = 0;
|
||||
switch (nppGUITbInfo._tbColor)
|
||||
{
|
||||
case NppDarkMode::FluentColor::custom:
|
||||
case FluentColor::custom:
|
||||
ID2Check = IDC_RADIO_CUSTOMCOLOR;
|
||||
break;
|
||||
case NppDarkMode::FluentColor::accent:
|
||||
case FluentColor::accent:
|
||||
ID2Check = IDC_RADIO_ACCENTCOLOR;
|
||||
break;
|
||||
case NppDarkMode::FluentColor::red:
|
||||
case FluentColor::red:
|
||||
ID2Check = IDC_RADIO_RED;
|
||||
break;
|
||||
case NppDarkMode::FluentColor::green:
|
||||
case FluentColor::green:
|
||||
ID2Check = IDC_RADIO_GREEN;
|
||||
break;
|
||||
case NppDarkMode::FluentColor::blue:
|
||||
case FluentColor::blue:
|
||||
ID2Check = IDC_RADIO_BLUE;
|
||||
break;
|
||||
case NppDarkMode::FluentColor::purple:
|
||||
case FluentColor::purple:
|
||||
ID2Check = IDC_RADIO_PURPLE;
|
||||
break;
|
||||
case NppDarkMode::FluentColor::cyan:
|
||||
case FluentColor::cyan:
|
||||
ID2Check = IDC_RADIO_CYAN;
|
||||
break;
|
||||
case NppDarkMode::FluentColor::olive:
|
||||
case FluentColor::olive:
|
||||
ID2Check = IDC_RADIO_OLIVE;
|
||||
break;
|
||||
case NppDarkMode::FluentColor::yellow:
|
||||
case FluentColor::yellow:
|
||||
ID2Check = IDC_RADIO_YELLOW;
|
||||
break;
|
||||
case NppDarkMode::FluentColor::defaultColor:
|
||||
case FluentColor::defaultColor:
|
||||
default:
|
||||
ID2Check = IDC_RADIO_DEFAULTCOLOR;
|
||||
}
|
||||
@ -827,7 +828,7 @@ intptr_t CALLBACK ToolbarSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
_pIconColorPicker->display();
|
||||
_pIconColorPicker->setColour(nppGUI._tbIconInfo._tbCustomColor);
|
||||
|
||||
if (toolbarStatus == TB_STANDARD)
|
||||
if (nppGUITbInfo._tbIconSet == TB_STANDARD)
|
||||
{
|
||||
::SendMessage(_hSelf, NPPM_INTERNAL_CHANGETOOLBARCOLORABLESTATE, 0, 0);
|
||||
}
|
||||
@ -839,10 +840,9 @@ intptr_t CALLBACK ToolbarSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
{
|
||||
bool enableColor = !isCheckedOrNot(IDC_RADIO_STANDARD);
|
||||
|
||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_TOOLBAR_GB_COLORIZATION), enableColor);
|
||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_RADIO_COMPLETE), enableColor);
|
||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_RADIO_PARTIAL), enableColor);
|
||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_TOOLBAR_GB_COLORCHOICE), enableColor);
|
||||
|
||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_RADIO_RED), enableColor);
|
||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_RADIO_GREEN), enableColor);
|
||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_RADIO_BLUE), enableColor);
|
||||
@ -856,11 +856,29 @@ intptr_t CALLBACK ToolbarSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
|
||||
::EnableWindow(_pIconColorPicker->getHSelf(), enableColor);
|
||||
|
||||
const bool usePrevDarkMode = static_cast<bool>(wParam) ? !NppDarkMode::isEnabled() : NppDarkMode::isEnabled();
|
||||
|
||||
if (enableColor)
|
||||
{
|
||||
_pIconColorPicker->setColour(nppGUI._tbIconInfo._tbCustomColor);
|
||||
_pIconColorPicker->redraw();
|
||||
const auto& tbIconInfo = NppDarkMode::getToolbarIconInfo(usePrevDarkMode);
|
||||
_pIconColorPicker->setColour(tbIconInfo._tbCustomColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
COLORREF disabledColor = usePrevDarkMode ? NppDarkMode::getDlgBackgroundColor() : ::GetSysColor(COLOR_3DFACE);
|
||||
_pIconColorPicker->setColour(disabledColor);
|
||||
}
|
||||
|
||||
_pIconColorPicker->redraw();
|
||||
|
||||
if (NppDarkMode::isEnabled())
|
||||
{
|
||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_TOOLBAR_GB_COLORCHOICE), enableColor);
|
||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_TOOLBAR_GB_COLORIZATION), enableColor);
|
||||
redrawDlgItem(IDC_TOOLBAR_GB_COLORCHOICE);
|
||||
redrawDlgItem(IDC_TOOLBAR_GB_COLORIZATION);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -943,7 +961,7 @@ intptr_t CALLBACK ToolbarSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
|
||||
case IDC_RADIO_CUSTOMCOLOR:
|
||||
{
|
||||
NppDarkMode::FluentColor c = NppDarkMode::FluentColor::custom;
|
||||
FluentColor c = FluentColor::custom;
|
||||
NppDarkMode::setToolbarFluentColor(c);
|
||||
nppGUI._tbIconInfo._tbColor = c;
|
||||
UINT msg = getToolbarIconSetMsg(nullptr);
|
||||
@ -953,7 +971,7 @@ intptr_t CALLBACK ToolbarSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
|
||||
case IDC_RADIO_ACCENTCOLOR:
|
||||
{
|
||||
NppDarkMode::FluentColor c = NppDarkMode::FluentColor::accent;
|
||||
FluentColor c = FluentColor::accent;
|
||||
NppDarkMode::setToolbarFluentColor(c);
|
||||
nppGUI._tbIconInfo._tbColor = c;
|
||||
UINT msg = getToolbarIconSetMsg(nullptr);
|
||||
@ -963,7 +981,7 @@ intptr_t CALLBACK ToolbarSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
|
||||
case IDC_RADIO_RED:
|
||||
{
|
||||
NppDarkMode::FluentColor c = NppDarkMode::FluentColor::red;
|
||||
FluentColor c = FluentColor::red;
|
||||
NppDarkMode::setToolbarFluentColor(c);
|
||||
nppGUI._tbIconInfo._tbColor = c;
|
||||
UINT msg = getToolbarIconSetMsg(nullptr);
|
||||
@ -973,7 +991,7 @@ intptr_t CALLBACK ToolbarSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
|
||||
case IDC_RADIO_GREEN:
|
||||
{
|
||||
NppDarkMode::FluentColor c = NppDarkMode::FluentColor::green;
|
||||
FluentColor c = FluentColor::green;
|
||||
NppDarkMode::setToolbarFluentColor(c);
|
||||
nppGUI._tbIconInfo._tbColor = c;
|
||||
UINT msg = getToolbarIconSetMsg(nullptr);
|
||||
@ -983,7 +1001,7 @@ intptr_t CALLBACK ToolbarSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
|
||||
case IDC_RADIO_BLUE:
|
||||
{
|
||||
NppDarkMode::FluentColor c = NppDarkMode::FluentColor::blue;
|
||||
FluentColor c = FluentColor::blue;
|
||||
NppDarkMode::setToolbarFluentColor(c);
|
||||
nppGUI._tbIconInfo._tbColor = c;
|
||||
UINT msg = getToolbarIconSetMsg(nullptr);
|
||||
@ -993,7 +1011,7 @@ intptr_t CALLBACK ToolbarSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
|
||||
case IDC_RADIO_PURPLE:
|
||||
{
|
||||
NppDarkMode::FluentColor c = NppDarkMode::FluentColor::purple;
|
||||
FluentColor c = FluentColor::purple;
|
||||
NppDarkMode::setToolbarFluentColor(c);
|
||||
nppGUI._tbIconInfo._tbColor = c;
|
||||
UINT msg = getToolbarIconSetMsg(nullptr);
|
||||
@ -1003,7 +1021,7 @@ intptr_t CALLBACK ToolbarSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
|
||||
case IDC_RADIO_CYAN:
|
||||
{
|
||||
NppDarkMode::FluentColor c = NppDarkMode::FluentColor::cyan;
|
||||
FluentColor c = FluentColor::cyan;
|
||||
NppDarkMode::setToolbarFluentColor(c);
|
||||
nppGUI._tbIconInfo._tbColor = c;
|
||||
UINT msg = getToolbarIconSetMsg(nullptr);
|
||||
@ -1013,7 +1031,7 @@ intptr_t CALLBACK ToolbarSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
|
||||
case IDC_RADIO_OLIVE:
|
||||
{
|
||||
NppDarkMode::FluentColor c = NppDarkMode::FluentColor::olive;
|
||||
FluentColor c = FluentColor::olive;
|
||||
NppDarkMode::setToolbarFluentColor(c);
|
||||
nppGUI._tbIconInfo._tbColor = c;
|
||||
UINT msg = getToolbarIconSetMsg(nullptr);
|
||||
@ -1023,7 +1041,7 @@ intptr_t CALLBACK ToolbarSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
|
||||
case IDC_RADIO_YELLOW:
|
||||
{
|
||||
NppDarkMode::FluentColor c = NppDarkMode::FluentColor::yellow;
|
||||
FluentColor c = FluentColor::yellow;
|
||||
NppDarkMode::setToolbarFluentColor(c);
|
||||
nppGUI._tbIconInfo._tbColor = c;
|
||||
UINT msg = getToolbarIconSetMsg(nullptr);
|
||||
@ -1033,10 +1051,9 @@ intptr_t CALLBACK ToolbarSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
|
||||
case IDC_RADIO_DEFAULTCOLOR:
|
||||
{
|
||||
NppDarkMode::FluentColor c = NppDarkMode::FluentColor::defaultColor;
|
||||
FluentColor c = FluentColor::defaultColor;
|
||||
NppDarkMode::setToolbarFluentColor(c);
|
||||
nppGUI._tbIconInfo._tbColor = c;
|
||||
|
||||
UINT msg = getToolbarIconSetMsg(nullptr);
|
||||
::SendMessage(::GetParent(_hParent), msg, TRUE, 0);
|
||||
return TRUE;
|
||||
@ -1083,7 +1100,7 @@ intptr_t CALLBACK ToolbarSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
setChecked(IDC_RADIO_ACCENTCOLOR, false);
|
||||
setChecked(IDC_RADIO_DEFAULTCOLOR, false);
|
||||
|
||||
NppDarkMode::FluentColor colorType = NppDarkMode::FluentColor::custom;
|
||||
FluentColor colorType = FluentColor::custom;
|
||||
NppDarkMode::setToolbarFluentColor(colorType);
|
||||
nppGUI._tbIconInfo._tbColor = colorType;
|
||||
UINT msg = getToolbarIconSetMsg(nullptr);
|
||||
@ -1096,7 +1113,7 @@ intptr_t CALLBACK ToolbarSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
{
|
||||
if (reinterpret_cast<HWND>(lParam) == _pIconColorPicker->getHSelf())
|
||||
{
|
||||
NppDarkMode::FluentColor colorType = NppDarkMode::FluentColor::custom;
|
||||
FluentColor colorType = FluentColor::custom;
|
||||
NppDarkMode::setToolbarFluentColor(colorType);
|
||||
nppGUI._tbIconInfo._tbColor = colorType;
|
||||
|
||||
|
@ -291,7 +291,7 @@ bool TreeView::setImageList(const std::vector<int>& imageIds, int imgSize)
|
||||
int dpiImgSize = DPIManagerV2::scale(imgSize, _hParent);
|
||||
|
||||
NppParameters& nppParam = NppParameters::getInstance();
|
||||
const bool useStdIcons = nppParam.getNppGUI()._toolBarStatus == TB_STANDARD;
|
||||
const bool useStdIcons = nppParam.getNppGUI()._tbIconInfo._tbIconSet == TB_STANDARD;
|
||||
|
||||
if (_hImaLst != nullptr)
|
||||
{
|
||||
@ -334,7 +334,7 @@ bool TreeView::setImageList(const std::vector<int>& imageIds, int imgSize)
|
||||
std::vector<int> TreeView::getImageIds(std::vector<int> stdIds, std::vector<int> darkIds, std::vector<int> lightIds)
|
||||
{
|
||||
NppParameters& nppParam = NppParameters::getInstance();
|
||||
const bool useStdIcons = nppParam.getNppGUI()._toolBarStatus == TB_STANDARD;
|
||||
const bool useStdIcons = nppParam.getNppGUI()._tbIconInfo._tbIconSet == TB_STANDARD;
|
||||
if (useStdIcons)
|
||||
{
|
||||
return stdIds;
|
||||
|
Loading…
x
Reference in New Issue
Block a user