From a8bb796f8c39cbca62ec93d262e006cbcd2671b4 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 21 Jul 2020 17:13:41 +0200 Subject: [PATCH] Add OSXMakeDPIFromScaleFactor() helper No real changes, just avoid repeating wxRound(scaleFactor*72) in several places and do it in this single function instead. --- include/wx/osx/window.h | 3 +++ src/osx/cocoa/nonownedwnd.mm | 4 ++-- src/osx/window_osx.cpp | 10 +++++++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/include/wx/osx/window.h b/include/wx/osx/window.h index 479307975e..76ec9bdb1c 100644 --- a/include/wx/osx/window.h +++ b/include/wx/osx/window.h @@ -294,6 +294,9 @@ public: // internal response to size events virtual void MacOnInternalSize() {} + // Return the DPI corresponding to the given scale factor. + static wxSize OSXMakeDPIFromScaleFactor(double scaleFactor); + protected: // For controls like radio buttons which are genuinely composite wxList m_subControls; diff --git a/src/osx/cocoa/nonownedwnd.mm b/src/osx/cocoa/nonownedwnd.mm index a0ad84b8d4..f118433a03 100644 --- a/src/osx/cocoa/nonownedwnd.mm +++ b/src/osx/cocoa/nonownedwnd.mm @@ -629,8 +629,8 @@ extern int wxOSXGetIdFromSelector(SEL action ); doubleValue]; if (newBackingScaleFactor != oldBackingScaleFactor) { - wxSize oldDPI((int)(oldBackingScaleFactor*72.0),(int)(oldBackingScaleFactor*72.0)); - wxSize newDPI((int)(newBackingScaleFactor*72.0),(int)(newBackingScaleFactor*72.0)); + const wxSize oldDPI = wxWindow::OSXMakeDPIFromScaleFactor(oldBackingScaleFactor); + const wxSize newDPI = wxWindow::OSXMakeDPIFromScaleFactor(newBackingScaleFactor); wxDPIChangedEvent event(oldDPI, newDPI); event.SetEventObject(wxpeer); diff --git a/src/osx/window_osx.cpp b/src/osx/window_osx.cpp index 61bf54cbea..4e5db615b2 100644 --- a/src/osx/window_osx.cpp +++ b/src/osx/window_osx.cpp @@ -2620,6 +2620,14 @@ bool wxWindowMac::OSXHandleKeyEvent( wxKeyEvent& event ) return handled ; } +/* static */ +wxSize wxWindowMac::OSXMakeDPIFromScaleFactor(double scaleFactor) +{ + const int dpi = wxRound(scaleFactor*72.0); + + return wxSize(dpi, dpi); +} + wxSize wxWindowMac::GetDPI() const { double scaleFactor; @@ -2628,7 +2636,7 @@ wxSize wxWindowMac::GetDPI() const else scaleFactor = wxOSXGetMainScreenContentScaleFactor(); - return wxSize(wxRound(scaleFactor*72.0),wxRound(scaleFactor*72.0)); + return OSXMakeDPIFromScaleFactor(scaleFactor); } //