https://bugs.kde.org/show_bug.cgi?id=500978

--- Comment #6 from Vlad Zahorodnii <vlad.zahorod...@kde.org> ---
(In reply to Friedrich W. H. Kossebau from comment #5)
> (In reply to Zamundaaa from comment #3)
> > One thing you can check is that the menu has the proper widget parent 
> 
> This here is about menus part of the main menu bar menus tree. Those
> submenus are QMenus queried from QAction entries in QMenus plugged into
> QMenuBar.  I guess the popup is controlled by QMenu::internalDelayedPopup(),
> and there the menu widget relation internally seems to be trracked by
> "d->activeMenu->d_func()->causedPopup.widget = this;".
> 
> Many, if not all, of the submenus which seem affected by what people had
> observed are provided by KSelectAction. That one creates an internal QMenu
> instance, which it sets to itself via QAction::setMenu(). So there is no
> widget parent to this menu instance by default. And those QMenu instances
> will be accessed from QMenu containers which have those actions as entries,
> as by above referenced QMenu::internalDelayedPopup().
> More precisely, the KSelectAction instances themselves are added to the
> QMainWindow's QMenuBar in one of the QMenu instances as created by KXmlGui's
> logic in Okteta's case. The KSelectionActions are owned by internal QObject
> instances, possibly not reachable from QMainWindow object child tree, so
> only lent into the menu's manifests.
> 
> I connected to the QMenu::aboutToShow signal, and parentWidget is a nullptr
> at the time.
> 
> KWin developers, would you know any data bits to set to help the heuristics
> you mentioned? 
> 
> Given the added observation "happens exactly when one popup should be shown
> while another one is still open" I suspect though perhaps some data lookup
> fails somewhere on the client or server side of the wayland protocols?

On the compositor side, there's nothing that we can do. It's Qt that decides
whether to put a decoration. We have to look into fixing the client side,
unfortunately. For example, by setting proper transient parent hints, or making
sure that the right transient parent can be found. Do you know if this happens
with Qt 6? Is there any chance of making a demo app that can trigger this bug?

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to