https://bugs.kde.org/show_bug.cgi?id=525245
Bug ID: 525245
Summary: Fullscreen toolbar auto-hides while its own session
dropdown is open, stranding the popup over the remote
screen
Classification: Applications
Product: krdc
Version First 25.12.3
Reported In:
Platform: Other
OS: Linux
Status: REPORTED
Severity: normal
Priority: NOR
Component: general
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
Steps to Reproduce
------------------
1. Connect to any host and switch to fullscreen.
2. Click the session selector combobox on the floating fullscreen toolbar.
3. Leave the dropdown open and move the pointer off the toolbar.
Actual Results
--------------
After a moment the toolbar slides off-screen, leaving its own dropdown list
floating
over the remote desktop with nothing attached to it.
Expected Results
----------------
The toolbar stays put while its dropdown is open, and auto-hides normally once
the
dropdown is dismissed.
Additional Information
----------------------
Opening the dropdown moves the pointer to a separate top-level window, so the
toolbar
receives a leaveEvent, which arms autoHideTimer (autoHideTimeout = 500 ms, or
initialAutoHideTimeout = 2000 ms). FloatingToolBar::hide() then only guards
with
underMouse(), which is false because the popup has the pointer, so the bar
hides and
strands the dropdown.
Worth recording for whoever fixes this: the obvious guard does NOT work.
if (QWidget *popup = QApplication::activePopupWidget()) { ... }
QApplication::activePopupWidget() returns nullptr for the combobox dropdown on
the
Wayland platform plugin. I confirmed this with tracing: across 25 hide() calls
with
the dropdown open, activePopup was nullptr every time, so the guard never
fired.
VERIFIED FIX - scan the top-level widgets for a visible window parented into
the bar,
which does not depend on Qt::Popup semantics:
const auto topLevels = QApplication::topLevelWidgets();
for (QWidget *w : topLevels) {
if (w != this && w->isVisible() && w->parentWidget() &&
isAncestorOf(w->parentWidget())) {
if (!d->sticky) {
d->autoHideTimer->start(autoHideTimeout);
}
return;
}
}
Re-arming rather than simply returning means the bar still hides once the
dropdown
closes. Tested in a locally patched 25.12.3 build on Plasma 6.7.4 / Qt 6.11.2
under a
Wayland session: the toolbar stays while the dropdown is open and hides
normally
afterwards.
This also affects 26.08.0 - floatingtoolbar.cpp is byte-identical between the
two
releases in every relevant region.
Environment: krdc 25.12.3, Qt 6.11.2, KF6 6.29.0, Plasma 6.7.4, Fedora 44,
Wayland.
--
You are receiving this mail because:
You are watching all bug changes.