diff --git a/aegisub/src/osx_utils.mm b/aegisub/src/osx_utils.mm index b52160270..59c9a2598 100644 --- a/aegisub/src/osx_utils.mm +++ b/aegisub/src/osx_utils.mm @@ -61,3 +61,8 @@ void SetPlaceholderText(wxWindow *window, wxString const& placeholder) { cell.placeholderString = wxCFStringRef(placeholder).AsNSString(); } } + +double GetScaleFactor(wxWindow *window) { + NSWindow *nsWindow = [window->GetHandle() window]; + return [nsWindow respondsToSelector:@selector(backingScaleFactor)] ? nsWindow.backingScaleFactor : 1.0; +} diff --git a/aegisub/src/toolbar.cpp b/aegisub/src/toolbar.cpp index 0c99623ef..89e849ac5 100644 --- a/aegisub/src/toolbar.cpp +++ b/aegisub/src/toolbar.cpp @@ -26,6 +26,7 @@ #include "include/aegisub/hotkey.h" #include "libresrc/libresrc.h" #include "options.h" +#include "utils.h" #include #include @@ -186,7 +187,7 @@ namespace { , icon_size(OPT_GET("App/Toolbar Icon Size")->GetInt()) , icon_size_slot(OPT_SUB("App/Toolbar Icon Size", &Toolbar::OnIconSizeChange, this)) #else - , icon_size(32) + , icon_size(32 * GetScaleFactor(parent)) #endif , hotkeys_changed_slot(hotkey::inst->AddHotkeyChangeListener(&Toolbar::RegenerateToolbar, this)) { diff --git a/aegisub/src/utils.cpp b/aegisub/src/utils.cpp index 2037ccf84..d0b53e59f 100644 --- a/aegisub/src/utils.cpp +++ b/aegisub/src/utils.cpp @@ -271,6 +271,7 @@ size_t MaxLineLength(std::string const& text, bool ignore_whitespace) { #ifndef __WXOSX_COCOA__ void AddFullScreenButton(wxWindow *) { } void SetFloatOnParent(wxWindow *) { } +double GetScaleFactor(wxWindow *) { return 1; } #endif wxString FontFace(std::string opt_prefix) { diff --git a/aegisub/src/utils.h b/aegisub/src/utils.h index 9c4d4ff60..6c577c04c 100644 --- a/aegisub/src/utils.h +++ b/aegisub/src/utils.h @@ -49,6 +49,7 @@ class wxMouseEvent; class wxWindow; +namespace cmd { class Command; } wxString PrettySize(int bytes); @@ -77,6 +78,8 @@ void SetFloatOnParent(wxWindow *window); void SetPlaceholderText(wxWindow *window, wxString const& placeholder); +double GetScaleFactor(wxWindow *window); + /// Forward a mouse wheel event to the window under the mouse if needed /// @param source The initial target of the wheel event /// @param evt The event