Details
-
Bug
-
Resolution: Fixed
-
P2: Important
-
5.15.10, 6.3.1
-
-
f2c5b846e (dev), eb7df2d77 (6.6), 98ee3222b (tqtc/lts-6.5), e5247218d (tqtc/lts-6.2), 2c2b74f1b (tqtc/lts-5.15)
Description
If QWidget has child-widgets like QDialogs or floating QDockWidgets,
those secondary Widgets refer to their parent on X Window-Level via X-property "WM_TRANSIENT_FOR". If the parent switches the winId, the new value is currently not written to the secondary's X-property. The secondary continues to refer to a stale window ID, unless it receives a subsequent replacement of its X11 window as well.
This stale window ID produces a mess for Window Managers, which in general make functional use of the ID which is stored in "WM_TRANSIENT_FOR".
- To reproduce the issue, please run the attached example project.
- Â Switch to "Type Dialog" and check "Window stays on top"
- This switches BOTH the preview and the control window to "stays on top". The consequence of this change for the control window is to receive another window.
- Run the command line utility "xprop" and click on the "Preview" window.
Note the ID which is reported for "WM_TRANSIENT_FOR" - Run the command line utility "xwininfo" and click on the "Window Flags" window.
Note the ID which is reported. It differs from the WM_TRANSIENT_FOR value, but should be the same.
If you repeat the test without checking "window stays on top", then both IDs are identical.
Attachments
Issue Links
- relates to
-
QTBUG-106033 Setting Qt::WindowStaysOnTopHint/Qt::WindowStaysOnBottomHint breaks winId
- Open
For Gerrit Dashboard: QTBUG-105395 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
459514,10 | xcb: update WM_TRANSIENT_FOR on transientParent native window recreation | dev | qt/qtbase | Status: MERGED | +2 | 0 |
519006,2 | xcb: update WM_TRANSIENT_FOR on transientParent native window recreation | 6.6 | qt/qtbase | Status: MERGED | +2 | 0 |
519129,3 | xcb: update WM_TRANSIENT_FOR on transientParent native window recreation | tqtc/lts-6.5 | qt/tqtc-qtbase | Status: MERGED | +2 | 0 |
519477,2 | xcb: update WM_TRANSIENT_FOR on transientParent native window recreation | tqtc/lts-6.2 | qt/tqtc-qtbase | Status: MERGED | +2 | 0 |
519592,4 | xcb: update WM_TRANSIENT_FOR on transientParent native window recreation | tqtc/lts-5.15 | qt/tqtc-qtbase | Status: MERGED | +2 | 0 |