Revert "Workaround Wayland popup menu bug."
This reverts commit 8db6dcf125.
This commit is contained in:
parent
a22254860f
commit
ea4c67408e
5 changed files with 0 additions and 62 deletions
|
|
@ -8,7 +8,6 @@
|
|||
|
||||
#include "base/platform/base_platform_info.h"
|
||||
#include "base/platform/linux/base_linux_library.h"
|
||||
#include "base/call_delayed.h"
|
||||
|
||||
#ifndef DESKTOP_APP_DISABLE_X11_INTEGRATION
|
||||
#include "base/platform/linux/base_linux_xcb_utilities.h"
|
||||
|
|
@ -45,10 +44,6 @@ namespace Platform {
|
|||
namespace {
|
||||
|
||||
static const auto kXCBFrameExtentsAtomName = u"_GTK_FRAME_EXTENTS"_q;
|
||||
constexpr auto kDelayDeactivateEventTimeout = crl::time(400);
|
||||
|
||||
bool PendingDeactivateEvent/* = false*/;
|
||||
int ChildPopupsHiddenOnWayland/* = 0*/;
|
||||
|
||||
#ifndef DESKTOP_APP_DISABLE_X11_INTEGRATION
|
||||
std::optional<bool> XCBWindowMapped(xcb_window_t window) {
|
||||
|
|
@ -611,33 +606,5 @@ void ShowWindowMenu(not_null<QWidget*> widget, const QPoint &point) {
|
|||
#endif // !DESKTOP_APP_DISABLE_X11_INTEGRATION
|
||||
}
|
||||
|
||||
void RegisterChildPopupHiding() {
|
||||
if (!::Platform::IsWayland()) {
|
||||
return;
|
||||
}
|
||||
++ChildPopupsHiddenOnWayland;
|
||||
base::call_delayed(kDelayDeactivateEventTimeout, [] {
|
||||
if (!--ChildPopupsHiddenOnWayland) {
|
||||
if (base::take(PendingDeactivateEvent)) {
|
||||
// We didn't receive ApplicationActivate event in time.
|
||||
QEvent appDeactivate(QEvent::ApplicationDeactivate);
|
||||
QCoreApplication::sendEvent(qApp, &appDeactivate);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
bool SkipApplicationDeactivateEvent() {
|
||||
if (!ChildPopupsHiddenOnWayland) {
|
||||
return false;
|
||||
}
|
||||
PendingDeactivateEvent = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
void GotApplicationActivateEvent() {
|
||||
PendingDeactivateEvent = false;
|
||||
}
|
||||
|
||||
} // namespace Platform
|
||||
} // namespace Ui
|
||||
|
|
|
|||
|
|
@ -147,15 +147,5 @@ std::optional<bool> IsOverlapped(
|
|||
return false;
|
||||
}
|
||||
|
||||
void RegisterChildPopupHiding() {
|
||||
}
|
||||
|
||||
bool SkipApplicationDeactivateEvent() {
|
||||
return false;
|
||||
}
|
||||
|
||||
void GotApplicationActivateEvent() {
|
||||
}
|
||||
|
||||
} // namespace Platform
|
||||
} // namespace Ui
|
||||
|
|
|
|||
|
|
@ -45,12 +45,6 @@ void ShowWindowMenu(not_null<QWidget*> widget, const QPoint &point);
|
|||
|
||||
void FixPopupMenuNativeEmojiPopup(not_null<PopupMenu*> menu);
|
||||
|
||||
// Workaround for a Qt/Wayland bug that hides the parent popup when
|
||||
// the child popup gets hidden, by sending Deactivate / Activate events.
|
||||
void RegisterChildPopupHiding();
|
||||
[[nodiscard]] bool SkipApplicationDeactivateEvent();
|
||||
void GotApplicationActivateEvent();
|
||||
|
||||
} // namespace Ui::Platform
|
||||
|
||||
// Platform dependent implementations.
|
||||
|
|
|
|||
|
|
@ -189,14 +189,4 @@ void FixPopupMenuNativeEmojiPopup(not_null<PopupMenu*> menu) {
|
|||
menu->lifetime().make_state<Filter>(menu));
|
||||
}
|
||||
|
||||
void RegisterChildPopupHiding() {
|
||||
}
|
||||
|
||||
bool SkipApplicationDeactivateEvent() {
|
||||
return false;
|
||||
}
|
||||
|
||||
void GotApplicationActivateEvent() {
|
||||
}
|
||||
|
||||
} // namespace Ui::Platform
|
||||
|
|
|
|||
|
|
@ -673,9 +673,6 @@ bool PopupMenu::eventFilter(QObject *o, QEvent *e) {
|
|||
}
|
||||
|
||||
void PopupMenu::hideMenu(bool fast) {
|
||||
if (fast && _parent) {
|
||||
Platform::RegisterChildPopupHiding();
|
||||
}
|
||||
if (isHidden() || (_hiding && !fast)) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue