diff --git a/ui/emoji_config.cpp b/ui/emoji_config.cpp index 1321614..98a3d07 100644 --- a/ui/emoji_config.cpp +++ b/ui/emoji_config.cpp @@ -294,6 +294,10 @@ QImage LoadFromFile(int id, int size, int index) { || false) { return QImage(); } + + // This should remove a non necessary detach on Retina screens later. + result.setDevicePixelRatio(style::DevicePixelRatio()); + crl::async([=, signature = std::move(signature)] { // This should not happen (invalid signature), // so we delay this check and fix only the next launch. diff --git a/ui/platform/win/ui_window_win.cpp b/ui/platform/win/ui_window_win.cpp index b1dbd1c..934edd6 100644 --- a/ui/platform/win/ui_window_win.cpp +++ b/ui/platform/win/ui_window_win.cpp @@ -9,6 +9,7 @@ #include "ui/inactive_press.h" #include "ui/platform/win/ui_window_title_win.h" #include "base/platform/base_platform_info.h" +#include "base/platform/win/base_windows_safe_library.h" #include "styles/palette.h" #include @@ -32,6 +33,23 @@ bool IsCompositionEnabled() { return success && result; } +HRESULT WinApiSetWindowTheme( + HWND hWnd, + LPCWSTR pszSubAppName, + LPCWSTR pszSubIdList) { + static const auto method = [&] { + using f_SetWindowTheme = HRESULT(FAR STDAPICALLTYPE*)( + HWND hWnd, + LPCWSTR pszSubAppName, + LPCWSTR pszSubIdList); + auto result = f_SetWindowTheme(); + const auto loaded = base::Platform::SafeLoadLibrary(u"uxtheme.dll"_q); + base::Platform::LoadMethod(loaded, "SetWindowTheme", result); + return result; + }(); + return method ? method(hWnd, pszSubAppName, pszSubIdList) : HRESULT(); +} + } // namespace class WindowHelper::NativeFilter final : public QAbstractNativeEventFilter { @@ -137,7 +155,7 @@ void WindowHelper::init() { updateMargins(); if (!::Platform::IsWindows8OrGreater()) { - SetWindowTheme(_handle, L" ", L" "); + WinApiSetWindowTheme(_handle, L" ", L" "); QApplication::setStyle(QStyleFactory::create("Windows")); }