Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-105395

WM_TRANSIENT_FOR is not kept in sync



    • Linux/X11
    • f2c5b846e (dev), eb7df2d77 (6.6), 98ee3222b (tqtc/lts-6.5), e5247218d (tqtc/lts-6.2), 2c2b74f1b (tqtc/lts-5.15)


      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".

      1. To reproduce the issue, please run the attached example project.
      2.  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.
      1. Run the command line utility "xprop" and click on the "Preview" window.
        Note the ID which is reported for "WM_TRANSIENT_FOR"
      2. 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.


        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.



              liaqi Liang Qi
              tuomas.vaarala Tuomas Vaarala
              2 Vote for this issue
              8 Start watching this issue