diff --git a/PowerEditor/src/WinControls/ColourPicker/ColourPopup.cpp b/PowerEditor/src/WinControls/ColourPicker/ColourPopup.cpp index 2a60db64a..41f652b79 100644 --- a/PowerEditor/src/WinControls/ColourPicker/ColourPopup.cpp +++ b/PowerEditor/src/WinControls/ColourPicker/ColourPopup.cpp @@ -19,6 +19,8 @@ #include #include "ColourPopup.h" #include "NppDarkMode.h" +#include "dpiManagerV2.h" + DWORD colourItems[] = { RGB( 0, 0, 0), RGB( 64, 0, 0), RGB(128, 0, 0), RGB(128, 64, 64), RGB(255, 0, 0), RGB(255, 128, 128), @@ -43,6 +45,17 @@ void ColourPopup::create(int dialogID) display(); } +void ColourPopup::createForDpi(int dialogID) +{ + const DPI_AWARENESS_CONTEXT dpiContextSystem = NppDarkMode::isWindows10() ? DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED : DPI_AWARENESS_CONTEXT_SYSTEM_AWARE; + const auto dpiContext = DPIManagerV2::setThreadDpiAwarenessContext(dpiContextSystem); + create(dialogID); + if (dpiContext != NULL) + { + DPIManagerV2::setThreadDpiAwarenessContext(dpiContext); + } +} + intptr_t CALLBACK ColourPopup::dlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) @@ -228,8 +241,16 @@ intptr_t CALLBACK ColourPopup::run_dlgProc(UINT message, WPARAM wParam, LPARAM l cc.Flags = CC_FULLOPEN | CC_RGBINIT | CC_ENABLEHOOK; display(false); - - if (ChooseColor(&cc)==TRUE) + + const DPI_AWARENESS_CONTEXT dpiContextSystem = NppDarkMode::isWindows10() ? DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED : DPI_AWARENESS_CONTEXT_SYSTEM_AWARE; + const auto dpiContext = DPIManagerV2::setThreadDpiAwarenessContext(dpiContextSystem); + const bool isCreated = ChooseColor(&cc) == TRUE; + if (dpiContext != NULL) + { + DPIManagerV2::setThreadDpiAwarenessContext(dpiContext); + } + + if (isCreated) { ::SendMessage(_hParent, WM_PICKUP_COLOR, cc.rgbResult, 0); } diff --git a/PowerEditor/src/WinControls/ColourPicker/ColourPopup.h b/PowerEditor/src/WinControls/ColourPicker/ColourPopup.h index 8372a8b22..6d125e035 100644 --- a/PowerEditor/src/WinControls/ColourPicker/ColourPopup.h +++ b/PowerEditor/src/WinControls/ColourPicker/ColourPopup.h @@ -37,12 +37,13 @@ public : } void create(int dialogID); + void createForDpi(int dialogID); void doDialog(POINT p) { if (!isCreated()) - create(IDD_COLOUR_POPUP); - ::SetWindowPos(_hSelf, HWND_TOP, p.x, p.y, _rc.right - _rc.left, _rc.bottom - _rc.top, SWP_SHOWWINDOW); + createForDpi(IDD_COLOUR_POPUP); + ::SetWindowPos(_hSelf, HWND_TOP, p.x, p.y, 0, 0, SWP_NOSIZE | SWP_SHOWWINDOW); } virtual void destroy() diff --git a/PowerEditor/src/WinControls/ColourPicker/WordStyleDlg.cpp b/PowerEditor/src/WinControls/ColourPicker/WordStyleDlg.cpp index 0b3f2a1f7..1ddc9f3fc 100644 --- a/PowerEditor/src/WinControls/ColourPicker/WordStyleDlg.cpp +++ b/PowerEditor/src/WinControls/ColourPicker/WordStyleDlg.cpp @@ -136,6 +136,7 @@ intptr_t CALLBACK WordStyleDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM _pFgColour->init(_hInst, _hSelf); _pBgColour->init(_hInst, _hSelf); + setDpi(); const int cpDynamicalSize = DPIManagerV2::scale(25); move2CtrlRight(IDC_FG_STATIC, _pFgColour->getHSelf(), cpDynamicalSize, cpDynamicalSize); @@ -251,14 +252,11 @@ intptr_t CALLBACK WordStyleDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM case WM_DESTROY: { - _pFgColour->destroy(); - _pBgColour->destroy(); - delete _pFgColour; - delete _pBgColour; + destroy(); return TRUE; } - case WM_HSCROLL : + case WM_HSCROLL: { if (reinterpret_cast(lParam) == ::GetDlgItem(_hSelf, IDC_SC_PERCENTAGE_SLIDER)) { @@ -268,7 +266,22 @@ intptr_t CALLBACK WordStyleDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM return TRUE; } - case WM_COMMAND : + case WM_DPICHANGED: + { + DPIManagerV2::setDpiWP(wParam); + + _goToSettings.destroy(); + + const int cpDynamicalSize = DPIManagerV2::scale(25); + move2CtrlRight(IDC_FG_STATIC, _pFgColour->getHSelf(), cpDynamicalSize, cpDynamicalSize); + move2CtrlRight(IDC_BG_STATIC, _pBgColour->getHSelf(), cpDynamicalSize, cpDynamicalSize); + + setPositionDpi(lParam); + + return TRUE; + } + + case WM_COMMAND: { if (HIWORD(wParam) == EN_CHANGE) { @@ -278,13 +291,16 @@ intptr_t CALLBACK WordStyleDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM updateUserKeywords(); notifyDataModified(); apply(); + return TRUE; } else if (editID == IDC_USER_EXT_EDIT) { updateExtension(); notifyDataModified(); apply(false); + return TRUE; } + return FALSE; } else { @@ -294,19 +310,19 @@ intptr_t CALLBACK WordStyleDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM updateFontStyleStatus(BOLD_STATUS); notifyDataModified(); apply(); - break; + return TRUE; case IDC_ITALIC_CHECK : updateFontStyleStatus(ITALIC_STATUS); notifyDataModified(); apply(); - break; + return TRUE; case IDC_UNDERLINE_CHECK : updateFontStyleStatus(UNDERLINE_STATUS); notifyDataModified(); apply(); - break; + return TRUE; case IDC_GLOBAL_GOTOSETTINGS_LINK : { @@ -315,7 +331,7 @@ intptr_t CALLBACK WordStyleDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM if (pageAndCtrlID.first != -1) ::SendMessage(_hParent, NPPM_INTERNAL_LAUNCHPREFERENCES, pageAndCtrlID.first, pageAndCtrlID.second); } - break; + return TRUE; case IDCANCEL : if (_isDirty) @@ -1202,6 +1218,25 @@ void WordStyleDlg::doDialog(bool isRTL) display(); } +void WordStyleDlg::destroy() +{ + _goToSettings.destroy(); + + if (_pFgColour != nullptr) + { + _pFgColour->destroy(); + delete _pFgColour; + _pFgColour = nullptr; + } + + if (_pBgColour != nullptr) + { + _pBgColour->destroy(); + delete _pBgColour; + _pBgColour = nullptr; + } +} + void WordStyleDlg::prepare2Cancel() { _styles2restored = (NppParameters::getInstance()).getLStylerArray(); diff --git a/PowerEditor/src/WinControls/ColourPicker/WordStyleDlg.h b/PowerEditor/src/WinControls/ColourPicker/WordStyleDlg.h index 04f94b3a5..64f97424d 100644 --- a/PowerEditor/src/WinControls/ColourPicker/WordStyleDlg.h +++ b/PowerEditor/src/WinControls/ColourPicker/WordStyleDlg.h @@ -63,6 +63,7 @@ public : void create(int dialogID, bool isRTL = false, bool msgDestParent = true) override; void doDialog(bool isRTL = false); + void destroy() override; void prepare2Cancel(); void redraw(bool forceUpdate = false) const override; void restoreGlobalOverrideValues(); diff --git a/PowerEditor/src/WinControls/ColourPicker/WordStyleDlg.rc b/PowerEditor/src/WinControls/ColourPicker/WordStyleDlg.rc index bf8c46357..dbf16eab0 100644 --- a/PowerEditor/src/WinControls/ColourPicker/WordStyleDlg.rc +++ b/PowerEditor/src/WinControls/ColourPicker/WordStyleDlg.rc @@ -22,53 +22,61 @@ #define IDC_STATIC -1 #endif -IDD_STYLER_DLG DIALOGEX 36, 44, 500, 246 +IDD_STYLER_DLG DIALOGEX 0, 0, 500, 246 STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_DLGMODALFRAME | WS_EX_WINDOWEDGE CAPTION "Style Configurator" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN - LTEXT "Select theme : ",IDC_SWITCH2THEME_STATIC,6,9,83,8,0,WS_EX_RIGHT + RTEXT "Select theme:",IDC_SWITCH2THEME_STATIC,6,9,83,8 COMBOBOX IDC_SWITCH2THEME_COMBO,95,7,104,78,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - LTEXT "Foreground colour",IDC_FG_STATIC,203,72,59,8,0,WS_EX_RIGHT - LTEXT "Background colour",IDC_BG_STATIC,203,99,59,8,0,WS_EX_RIGHT + + GROUPBOX "",IDC_STATIC,7,24,166,212 + LTEXT "Language:",IDC_LANGDESC_STATIC,20,35,61,8 + LISTBOX IDC_LANGUAGES_LIST,17,46,59,146,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + LTEXT "Style:",IDC_STYLEDESC_STATIC,89,35,68,8 + LISTBOX IDC_STYLES_LIST,86,46,77,146,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP + LTEXT "Default ext.:",IDC_DEF_EXT_STATIC,20,203,61,8 + EDITTEXT IDC_DEF_EXT_EDIT,17,214,59,12,ES_AUTOHSCROLL | ES_READONLY + LTEXT "+",IDC_PLUSSYMBOL2_STATIC,82,216,8,8 + LTEXT "User ext.:",IDC_USER_EXT_STATIC,96,203,71,8 + EDITTEXT IDC_USER_EXT_EDIT,93,214,70,12,ES_AUTOHSCROLL + + GROUPBOX "",IDC_STATIC,181,24,312,184 + LTEXT " ",IDC_STYLEDESCRIPTION_STATIC,190,30,295,22 + + GROUPBOX "Colour Style",IDC_COLOURGROUP_STATIC,191,52,111,77,BS_CENTER + RTEXT "Foreground colour",IDC_FG_STATIC,203,72,59,8 + RTEXT "Background colour",IDC_BG_STATIC,203,99,59,8 + + GROUPBOX "Font Style",IDC_FONTGROUP_STATIC,312,52,171,77,BS_CENTER + RTEXT "Font name:",IDC_FONTNAME_STATIC,315,71,52,8 COMBOBOX IDC_FONT_COMBO,371,68,104,78,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP + RTEXT "Font size:",IDC_FONTSIZE_STATIC,388,97,51,8 COMBOBOX IDC_FONTSIZE_COMBO,442,95,33,82,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "Bold",IDC_BOLD_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,327,88,63,10 - CONTROL "Italic",IDC_ITALIC_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,327,100,62,10 - GROUPBOX "Font Style",IDC_FONTGROUP_STATIC,311,52,169,77,BS_CENTER - GROUPBOX "Colour Style",IDC_COLOURGROUP_STATIC,191,52,111,77,BS_CENTER - LTEXT "Font name :",IDC_FONTNAME_STATIC,315,71,52,8,0,WS_EX_RIGHT - LTEXT "Font size :",IDC_FONTSIZE_STATIC,388,97,51,8,0,WS_EX_RIGHT - LTEXT "Style :",IDC_STYLEDESC_STATIC,87,34,68,8 - LTEXT " ",IDC_STYLEDESCRIPTION_STATIC,190,30,295,22 - EDITTEXT IDC_DEF_EXT_EDIT,17,215,61,14,ES_AUTOHSCROLL | ES_READONLY - LTEXT "Default ext. : ",IDC_DEF_EXT_STATIC,20,203,61,8 - EDITTEXT IDC_USER_EXT_EDIT,93,215,71,14,ES_AUTOHSCROLL - LTEXT "User ext. :",IDC_USER_EXT_STATIC,95,204,71,8 - CONTROL "Underline",IDC_UNDERLINE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,327,112,80,10 - EDITTEXT IDC_DEF_KEYWORDS_EDIT,191,151,136,43,ES_MULTILINE | ES_READONLY | WS_VSCROLL - EDITTEXT IDC_USER_KEYWORDS_EDIT,347,150,134,43,ES_MULTILINE | WS_VSCROLL - LTEXT "Default keywords",IDC_DEF_KEYWORDS_STATIC,193,141,122,8 - LTEXT "User-defined keywords",IDC_USER_KEYWORDS_STATIC,349,140,126,8 - LTEXT "+",IDC_PLUSSYMBOL_STATIC,335,166,8,8 - PUSHBUTTON "Cancel",IDCANCEL,332,222,57,14 - PUSHBUTTON "Save && Close",IDC_SAVECLOSE_BUTTON,255,222,69,14 - CONTROL "",IDC_SC_PERCENTAGE_SLIDER,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | TBS_TRANSPARENTBKGND | NOT WS_VISIBLE | WS_TABSTOP,441,235,53,10 - CONTROL "Transparency",IDC_SC_TRANSPARENT_CHECK,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,431,221,63,10 - LISTBOX IDC_LANGUAGES_LIST,17,46,59,146,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP - LISTBOX IDC_STYLES_LIST,87,46,76,146,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP - GROUPBOX "",IDC_STATIC,7,24,166,212 - LTEXT "Language :",IDC_LANGDESC_STATIC,19,34,61,8 - GROUPBOX "",IDC_STATIC,181,24,310,184 - LTEXT "+",IDC_PLUSSYMBOL2_STATIC,83,217,8,8 - CONTROL "Enable global foreground colour",IDC_GLOBAL_FG_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,191,138,132,10 - CONTROL "Enable global background colour",IDC_GLOBAL_BG_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,191,153,131,10 + CONTROL "Italic",IDC_ITALIC_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,327,101,62,10 + CONTROL "Underline",IDC_UNDERLINE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,327,114,80,10 + + LTEXT "Default keywords",IDC_DEF_KEYWORDS_STATIC,194,135,122,8 + EDITTEXT IDC_DEF_KEYWORDS_EDIT,191,146,136,52,ES_MULTILINE | ES_READONLY | WS_VSCROLL + LTEXT "+",IDC_PLUSSYMBOL_STATIC,334,168,8,8 + LTEXT "User-defined keywords",IDC_USER_KEYWORDS_STATIC,350,135,126,8 + EDITTEXT IDC_USER_KEYWORDS_EDIT,347,146,136,52,ES_MULTILINE | WS_VSCROLL + + CONTROL "Enable global foreground colour",IDC_GLOBAL_FG_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,191,134,132,10 + CONTROL "Enable global background colour",IDC_GLOBAL_BG_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,191,149,131,10 CONTROL "Enable global font",IDC_GLOBAL_FONT_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,327,134,153,10 CONTROL "Enable global font size",IDC_GLOBAL_FONTSIZE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,327,149,135,10 - CONTROL "Enable global bold font style",IDC_GLOBAL_BOLD_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,328,164,135,10 - CONTROL "Enable global italic font style",IDC_GLOBAL_ITALIC_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,328,179,135,10 - CONTROL "Enable global underline font style",IDC_GLOBAL_UNDERLINE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,328,194,135,10 - + CONTROL "Enable global bold font style",IDC_GLOBAL_BOLD_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,327,164,135,10 + CONTROL "Enable global italic font style",IDC_GLOBAL_ITALIC_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,327,179,135,10 + CONTROL "Enable global underline font style",IDC_GLOBAL_UNDERLINE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,327,194,135,10 + + PUSHBUTTON "Save && Close",IDC_SAVECLOSE_BUTTON,264,222,69,14 + PUSHBUTTON "Cancel",IDCANCEL,337,222,50,14 + LTEXT "Go to settings",IDC_GLOBAL_GOTOSETTINGS_LINK,210,153,131,10,WS_TABSTOP + + CONTROL "Transparency",IDC_SC_TRANSPARENT_CHECK,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,431,221,63,10 + CONTROL "",IDC_SC_PERCENTAGE_SLIDER,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | TBS_TRANSPARENTBKGND | NOT WS_VISIBLE | WS_TABSTOP,441,235,53,10 END