Use new dpi manager scaled default fonts

ref #14959

Close #14991
pull/15016/head
ozone10 2024-04-13 17:07:56 +02:00 committed by Don Ho
parent a92a9fd7c7
commit 01a088f994
8 changed files with 25 additions and 71 deletions

View File

@ -1899,55 +1899,6 @@ bool NppParameters::isInFontList(const std::wstring& fontName2Search) const
return false;
}
LOGFONT NppParameters::getDefaultGUIFont(DefaultFontType type)
{
LOGFONT lf{};
NONCLIENTMETRICS ncm{};
ncm.cbSize = sizeof(NONCLIENTMETRICS);
if (::SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0) != FALSE)
{
switch (type)
{
case DefaultFontType::menu:
{
lf = ncm.lfMenuFont;
break;
}
case DefaultFontType::status:
{
lf = ncm.lfStatusFont;
break;
}
case DefaultFontType::caption:
{
lf = ncm.lfCaptionFont;
break;
}
case DefaultFontType::smcaption:
{
lf = ncm.lfSmCaptionFont;
break;
}
// case DefaultFontType::message:
default:
{
lf = ncm.lfMessageFont;
break;
}
}
}
else // should not happen, fallback
{
auto hf = static_cast<HFONT>(::GetStockObject(DEFAULT_GUI_FONT));
::GetObject(hf, sizeof(LOGFONT), &lf);
}
return lf;
}
void NppParameters::getLangKeywordsFromXmlTree()
{
TiXmlNode *root =

View File

@ -1546,9 +1546,6 @@ public:
bool isInFontList(const std::wstring& fontName2Search) const;
const std::vector<std::wstring>& getFontList() const { return _fontlist; }
enum class DefaultFontType { menu, status, message, caption, smcaption };
static LOGFONT getDefaultGUIFont(DefaultFontType type = DefaultFontType::message);
int getNbUserLang() const {return _nbUserLang;}
UserLangContainer & getULCFromIndex(size_t i) {return *_userLangArray[i];};
UserLangContainer * getULCFromName(const TCHAR *userLangName);

View File

@ -300,8 +300,6 @@ void FindReplaceDlg::create(int dialogID, bool isRTL, bool msgDestParent, bool t
getClientRect(rect);
_tab.init(_hInst, _hSelf, false, true);
NppDarkMode::subclassTabControl(_tab.getHSelf());
int tabDpiDynamicalHeight = dpiManager.scaleY(13);
_tab.setFont(TEXT("Tahoma"), tabDpiDynamicalHeight);
const TCHAR *find = TEXT("Find");
const TCHAR *replace = TEXT("Replace");

View File

@ -1005,9 +1005,6 @@ intptr_t CALLBACK UserDefineDialog::run_dlgProc(UINT message, WPARAM wParam, LPA
_ctrlTab.init(_hInst, _hSelf, false);
NppDarkMode::subclassTabControl(_ctrlTab.getHSelf());
int tabDpiDynamicalHeight = nppParam._dpiManager.scaleY(13);
_ctrlTab.setFont(TEXT("Tahoma"), tabDpiDynamicalHeight);
_folderStyleDlg.init(_hInst, _hSelf);
_folderStyleDlg.create(IDD_FOLDER_STYLE_DLG);
_folderStyleDlg.display();

View File

@ -123,11 +123,11 @@ void DockingCont::doDialog(bool willBeShown, bool isFloating)
::ShowWindow(_hCaption, SW_SHOW);
}
//If you want defualt GUI font
LOGFONT lfTab{ NppParameters::getDefaultGUIFont() };
//If you want default GUI font
LOGFONT lfTab{ DPIManagerV2::getDefaultGUIFontForDpi(_hParent) };
_hFont = ::CreateFontIndirect(&lfTab);
LOGFONT lfCaption{ NppParameters::getDefaultGUIFont(NppParameters::DefaultFontType::smcaption) };
LOGFONT lfCaption{ DPIManagerV2::getDefaultGUIFontForDpi(_hParent, DPIManagerV2::FontType::smcaption) };
_hFontCaption = ::CreateFontIndirect(&lfCaption);
}
@ -578,7 +578,7 @@ void DockingCont::drawCaptionItem(DRAWITEMSTRUCT *pDrawItemStruct)
rc.right = rc.bottom - rc.top;
rc.bottom += 14;
LOGFONT lf{ NppParameters::getDefaultGUIFont(NppParameters::DefaultFontType::smcaption) };
LOGFONT lf{ DPIManagerV2::getDefaultGUIFontForDpi(_hParent, DPIManagerV2::FontType::smcaption) };
lf.lfEscapement = 900;
hFont = ::CreateFontIndirect(&lf);
if (hFont == nullptr)
@ -612,7 +612,7 @@ void DockingCont::drawCaptionItem(DRAWITEMSTRUCT *pDrawItemStruct)
{
if (_hFont == nullptr)
{
LOGFONT lf{ NppParameters::getDefaultGUIFont() };
LOGFONT lf{ DPIManagerV2::getDefaultGUIFontForDpi(_hParent) };
_hFont = ::CreateFontIndirect(&lf);
}
auto hOld = static_cast<HFONT>(::SelectObject(hDc, _hFont));

View File

@ -898,7 +898,7 @@ intptr_t CALLBACK FunctionListPanel::run_dlgProc(UINT message, WPARAM wParam, LP
if (_hFontSearchEdit == nullptr)
{
LOGFONT lf{ NppParameters::getDefaultGUIFont() };
LOGFONT lf{ DPIManagerV2::getDefaultGUIFontForDpi(_hParent) };
_hFontSearchEdit = ::CreateFontIndirect(&lf);
}

View File

@ -133,9 +133,6 @@ void PluginsAdminDlg::create(int dialogID, bool isRTL, bool msgDestParent)
NppDarkMode::subclassTabControl(_tab.getHSelf());
DPIManager& dpiManager = NppParameters::getInstance()._dpiManager;
int tabDpiDynamicalHeight = dpiManager.scaleY(13);
_tab.setFont(TEXT("Tahoma"), tabDpiDynamicalHeight);
const TCHAR *available = TEXT("Available");
const TCHAR *updates = TEXT("Updates");
const TCHAR *installed = TEXT("Installed");
@ -150,7 +147,7 @@ void PluginsAdminDlg::create(int dialogID, bool isRTL, bool msgDestParent)
getMappedChildRect(IDC_PLUGINADM_EDIT, rcDesc);
const long margeX = ::GetSystemMetrics(SM_CXEDGE);
const long margeY = tabDpiDynamicalHeight;
const long margeY = dpiManager.scaleY(13);
rect.bottom = rcDesc.bottom + margeY;
_tab.reSizeTo(rect);

View File

@ -73,6 +73,16 @@ void TabBar::init(HINSTANCE hInst, HWND parent, bool isVertical, bool isMultiLin
{
throw std::runtime_error("TabBar::init : CreateWindowEx() function return null");
}
if (_hFont == nullptr)
{
const UINT dpi = DPIManagerV2::getDpiForWindow(_hParent);
LOGFONT lf{ DPIManagerV2::getDefaultGUIFontForDpi(dpi) };
lf.lfHeight = DPIManagerV2::scaleFont(8, dpi);
_hFont = ::CreateFontIndirect(&lf);
::SendMessage(_hSelf, WM_SETFONT, reinterpret_cast<WPARAM>(_hFont), 0);
}
}
@ -337,13 +347,17 @@ void TabBarPlus::init(HINSTANCE hInst, HWND parent, bool isVertical, bool isMult
::SetWindowLongPtr(_hSelf, GWLP_USERDATA, reinterpret_cast<LONG_PTR>(this));
_tabBarDefaultProc = reinterpret_cast<WNDPROC>(::SetWindowLongPtr(_hSelf, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(TabBarPlus_Proc)));
auto& dpiManager = NppParameters::getInstance()._dpiManager;
LOGFONT lf{ NppParameters::getDefaultGUIFont() };
const UINT dpi = DPIManagerV2::getDpiForWindow(_hParent);
LOGFONT lf{ DPIManagerV2::getDefaultGUIFontForDpi(dpi) };
LOGFONT lfVer{ lf };
if (_hFont != nullptr)
{
::DeleteObject(_hFont);
_hFont = nullptr;
}
_hFont = ::CreateFontIndirect(&lf);
lf.lfWeight = FW_HEAVY;
lf.lfHeight = -(dpiManager.pointsToPixels(10));
lf.lfHeight = DPIManagerV2::scaleFont(10, dpi);
_hLargeFont = ::CreateFontIndirect(&lf);
lfVer.lfEscapement = 900;