Add dpi support to Style Configurator dialog
- reorder controls for consistent tab switch - make spacing and position more consistent - use system aware or gdi scaling for Color dialog and Color popup ref #14959 Close #15029pull/15042/head
parent
2531b4d12c
commit
560f29fc8c
|
@ -19,6 +19,8 @@
|
|||
#include <stdexcept>
|
||||
#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);
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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<HWND>(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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue