diff --git a/ui/platform/linux/ui_utility_linux.h b/ui/platform/linux/ui_utility_linux.h index c2f49dc..73bfff9 100644 --- a/ui/platform/linux/ui_utility_linux.h +++ b/ui/platform/linux/ui_utility_linux.h @@ -12,7 +12,7 @@ class QPaintEvent; namespace Ui { namespace Platform { -inline void StartTranslucentPaint(QPainter &p, QPaintEvent *e) { +inline void StartTranslucentPaint(QPainter &p, gsl::span rects) { } inline void InitOnTopPanel(not_null panel) { diff --git a/ui/platform/mac/ui_utility_mac.mm b/ui/platform/mac/ui_utility_mac.mm index 9166f01..3cac656 100644 --- a/ui/platform/mac/ui_utility_mac.mm +++ b/ui/platform/mac/ui_utility_mac.mm @@ -67,12 +67,12 @@ void ReInitOnTopPanel(not_null panel) { [platformPanel setCollectionBehavior:newBehavior]; } -void StartTranslucentPaint(QPainter &p, QPaintEvent *e) { -#ifdef OS_MAC_OLD +void StartTranslucentPaint(QPainter &p, gsl::span rects) { p.setCompositionMode(QPainter::CompositionMode_Source); - p.fillRect(e->rect(), Qt::transparent); + for (const auto &r : rects) { + p.fillRect(r, Qt::transparent); + } p.setCompositionMode(QPainter::CompositionMode_SourceOver); -#endif // OS_MAC_OLD } void ShowOverAll(not_null widget, bool canFocus) { diff --git a/ui/platform/ui_platform_utility.h b/ui/platform/ui_platform_utility.h index dec7e12..4398ed7 100644 --- a/ui/platform/ui_platform_utility.h +++ b/ui/platform/ui_platform_utility.h @@ -16,7 +16,7 @@ namespace Platform { [[nodiscard]] bool IsApplicationActive(); [[nodiscard]] bool TranslucentWindowsSupported(QPoint globalPosition); -void StartTranslucentPaint(QPainter &p, QPaintEvent *e); +void StartTranslucentPaint(QPainter &p, gsl::span rects); void InitOnTopPanel(not_null panel); void DeInitOnTopPanel(not_null panel); diff --git a/ui/platform/win/ui_utility_win.cpp b/ui/platform/win/ui_utility_win.cpp index b9ddcbd..9187e50 100644 --- a/ui/platform/win/ui_utility_win.cpp +++ b/ui/platform/win/ui_utility_win.cpp @@ -30,6 +30,8 @@ void UpdateOverlayed(not_null widget) { } void IgnoreAllActivation(not_null widget) { + widget->createWinId(); + const auto handle = reinterpret_cast(widget->winId()); Assert(handle != nullptr); diff --git a/ui/platform/win/ui_utility_win.h b/ui/platform/win/ui_utility_win.h index 091ba4a..dcd82b2 100644 --- a/ui/platform/win/ui_utility_win.h +++ b/ui/platform/win/ui_utility_win.h @@ -27,7 +27,7 @@ inline void DeInitOnTopPanel(not_null panel) { inline void ReInitOnTopPanel(not_null panel) { } -inline void StartTranslucentPaint(QPainter &p, QPaintEvent *e) { +inline void StartTranslucentPaint(QPainter &p, gsl::span rects) { } inline void ShowOverAll(not_null widget, bool canFocus) { diff --git a/ui/widgets/popup_menu.cpp b/ui/widgets/popup_menu.cpp index 64ef28b..dc472f2 100644 --- a/ui/widgets/popup_menu.cpp +++ b/ui/widgets/popup_menu.cpp @@ -121,10 +121,6 @@ const std::vector> &PopupMenu::actions() const { void PopupMenu::paintEvent(QPaintEvent *e) { QPainter p(this); - if (_useTransparency) { - Platform::StartTranslucentPaint(p, e); - } - if (_a_show.animating()) { if (auto opacity = _a_opacity.value(_hiding ? 0. : 1.)) { _showAnimation->paintFrame(p, 0, 0, width(), _a_show.value(1.), opacity); diff --git a/ui/widgets/tooltip.cpp b/ui/widgets/tooltip.cpp index 5841e8a..04d0b95 100644 --- a/ui/widgets/tooltip.cpp +++ b/ui/widgets/tooltip.cpp @@ -132,8 +132,6 @@ void Tooltip::paintEvent(QPaintEvent *e) { Painter p(this); if (_useTransparency) { - Platform::StartTranslucentPaint(p, e); - p.setPen(_st->textBorder); p.setBrush(_st->textBg); PainterHighQualityEnabler hq(p);