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

WM_TRANSIENT_FOR is not kept in sync



    • Linux/X11


      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.


        For Gerrit Dashboard: QTBUG-105395
        # Subject Branch Project Status CR V



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



              Gerrit Reviews

                There is 1 open Gerrit change