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

External WM_DESTROY received for QWidgetWindow

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P2: Important
    • None
    • 5.9.3
    • None

    Description

      Docking a QDockWidget can accidentally delete an another, unrelated QDockWidget.

       

      Steps to reproduce:

      1. Create an app with four docking windows and allow group-docking

      2. Float A, B, C and then D

       

      +---------+    +---+   +---+   +---+   +---+       
      |         |    | A |   | B |   | C |   | D |       
      |  [APP]  |    +---+   +---+   +---+   +---+       
      |         |    |   |   |   |   |   |   |   |       
      |         |    |   |   |   |   |   |   |   |       
      +---------+    +---+   +---+   +---+   +---+

       

      3. Dock B into A, then drag B out:

       

      +-------+         +-------+   +---+                    
      | B     |         | A  [x]|   | B |                    
      +-------+   -->   +-------+   +---+                    
      |       |         |       |   |   |                    
      |       |         |       |   |   |                    
      |-------|         +-------+   +---+                    
      | A | B |                                              
      +-------+   

                              

      4. Dock D into C, then drag C out:

      +-------+         +-------+   +---+                    
      | D     |         | D  [x]|   | C |                    
      +-------+   -->   +-------+   +---+                    
      |       |         |       |   |   |                    
      |       |         |       |   |   |                    
      |-------|         +-------+   +---+                    
      | C | D |                                              
      +-------+

       

      5. Dock C into B, then drag C out:

      +-------+         +-------+   +---+                    
      | C     |         | B  [x]|   | C |                    
      +-------+   -->   +-------+   +---+                    
      |       |         |       |   |   |                    
      |       |         |       |   |   |                    
      |-------|         +-------+   +---+                    
      | B | C |                                              
      +-------+ 

       

      6. Dock A and then D into B:

      +-----------+                                          
      | D         |                                          
      +-----------+                                          
      |           |                                          
      |           |                                          
      |-----------|                                          
      | B | A | D |                                          
      +-----------+

       

      7. Dock the BAD docking group back into the application

      8. Notice that C is gone and the console error:

       

      External WM_DESTROY received for QWidgetWindow(0x1c73a168, name="dockWidget_3Window") , parent: QWindow(0x0) , transient parent: QWidgetWindow(0x963b8c0, name="MainWindowWindow")

      flush: GetDC failed (Invalid window handle.)

       

      Attachments

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

        Activity

          People

            richard Richard Moe Gustavsen
            qtmc Mark
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes