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
	
	 Ilya Fedin
						Ilya Fedin