From f420e302d7992e10cae8924701c3a3a85c0aa8b9 Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 2 Sep 2022 16:55:12 +0400 Subject: [PATCH] Support external menu content without enabled compositing. --- ui/widgets/popup_menu.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/ui/widgets/popup_menu.cpp b/ui/widgets/popup_menu.cpp index bffff75..8cae306 100644 --- a/ui/widgets/popup_menu.cpp +++ b/ui/widgets/popup_menu.cpp @@ -254,7 +254,14 @@ void PopupMenu::init() { hide(); setAttribute(Qt::WA_NoSystemBackground, true); - setAttribute(Qt::WA_TranslucentBackground, true); + + _useTransparency = Platform::TranslucentWindowsSupported(); + if (_useTransparency) { + setAttribute(Qt::WA_TranslucentBackground, true); + } else { + setAttribute(Qt::WA_TranslucentBackground, false); + setAttribute(Qt::WA_OpaquePaintEvent, true); + } } not_null PopupMenu::ensureSubmenu( @@ -297,12 +304,15 @@ void PopupMenu::checkSubmenuShow() { void PopupMenu::validateCompositingSupport() { const auto line = st::lineWidth; - _useTransparency = Platform::TranslucentWindowsSupported(); + const auto &additional = _additionalMenuPadding; if (!_useTransparency) { - _padding = QMargins(line, line, line, line); + _padding = QMargins( + std::max(line, additional.left()), + std::max(line, additional.top()), + std::max(line, additional.right()), + std::max(line, additional.bottom())); _extents = QMargins(); } else { - const auto &additional = _additionalMenuPadding; _padding = QMargins( std::max(_st.shadow.extend.left(), additional.left()), std::max(_st.shadow.extend.top(), additional.top()),