diff --git a/include/wx/generic/treectlg.h b/include/wx/generic/treectlg.h index 22469cf547..8475561619 100644 --- a/include/wx/generic/treectlg.h +++ b/include/wx/generic/treectlg.h @@ -357,6 +357,8 @@ protected: virtual wxSize DoGetBestSize() const override; private: + void OnDPIChanged(wxDPIChangedEvent& event); + void OnSysColourChanged(wxSysColourChangedEvent& WXUNUSED(event)) { InitVisualAttributes(); diff --git a/src/generic/treectlg.cpp b/src/generic/treectlg.cpp index 62dfa103bc..02f21c659c 100644 --- a/src/generic/treectlg.cpp +++ b/src/generic/treectlg.cpp @@ -947,6 +947,7 @@ wxBEGIN_EVENT_TABLE(wxGenericTreeCtrl, wxTreeCtrlBase) EVT_KILL_FOCUS (wxGenericTreeCtrl::OnKillFocus) EVT_TREE_ITEM_GETTOOLTIP(wxID_ANY, wxGenericTreeCtrl::OnGetToolTip) EVT_SYS_COLOUR_CHANGED(wxGenericTreeCtrl::OnSysColourChanged) + EVT_DPI_CHANGED(wxGenericTreeCtrl::OnDPIChanged) wxEND_EVENT_TABLE() // ----------------------------------------------------------------------------- @@ -4208,4 +4209,16 @@ wxSize wxGenericTreeCtrl::DoGetBestSize() const return size; } +void wxGenericTreeCtrl::OnDPIChanged(wxDPIChangedEvent& event) +{ + // For the platforms using DPI-dependent pixels we need to adjust various + // metrics after the DPI change. +#ifndef wxHAS_DPI_INDEPENDENT_PIXELS + m_indent = event.ScaleX(m_indent); + m_spacing = event.ScaleX(m_spacing); +#endif // !wxHAS_DPI_INDEPENDENT_PIXELS + + event.Skip(); +} + #endif // wxUSE_TREECTRL