https://bugs.documentfoundation.org/show_bug.cgi?id=152979

Michael Weghorn <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEEDINFO
     Ever confirmed|0                           |1

--- Comment #12 from Michael Weghorn <[email protected]> ---
(In reply to Rafael Lima from comment #11)
> Here's the updated backtrace. I installed the debug symbols and used gdb
> following the steps provided.

Thanks. Unfortunately, it's not really clear for me from the backtrace where
the problem is. The more relevant backtrace might be how the Qt code that emits
the warning is reached.

Anyway, I have on idea where the problem *might* be caused.


This here looks like it may be related:
https://code.qt.io/cgit/qt/qtbase.git/commit/?id=3714e51436eebb64873c58dc36cf89ef8f139f09

And we had a similar workaround before, added in 


    commit e770bacc85a0eec96de77068d61b03f374b3cdec
    Date:   Sun Jun 2 21:01:33 2019 +0000

        Qt5 workaround modal change after show bug

but then dropped again in


    commit 2dc6bdd1d5789ace0500cad90f5d2eb930888bb9
    Date:   Wed Jun 5 17:39:45 2019 +0000

        tdf#125692 SalObject always holds a SystemChildWindow

Does it still hang if you make `QtFrame::SetModal` do nothing?

diff --git a/vcl/qt5/QtFrame.cxx b/vcl/qt5/QtFrame.cxx
index 5517584b72d7..5092f55c6eb3 100644
--- a/vcl/qt5/QtFrame.cxx
+++ b/vcl/qt5/QtFrame.cxx
@@ -609,6 +609,9 @@ SalFrame* QtFrame::GetParent() const { return m_pParent; }

 void QtFrame::SetModal(bool bModal)
 {
+    if (true)
+        return;
+
     if (!isWindow() || asChild()->isModal() == bModal)
         return;


And if that makes the problem go away: Does the freeze also disappear if you
undo that change and add a sleep instead, like this:

diff --git a/vcl/qt5/QtFrame.cxx b/vcl/qt5/QtFrame.cxx
index 5517584b72d7..12af2103e965 100644
--- a/vcl/qt5/QtFrame.cxx
+++ b/vcl/qt5/QtFrame.cxx
@@ -621,7 +621,10 @@ void QtFrame::SetModal(bool bModal)

         // modality change is only effective if the window is hidden
         if (bWasVisible)
+        {
+            QThread::msleep(500);
             pChild->hide();
+        }

         pChild->setWindowModality(bModal ? Qt::WindowModal : Qt::NonModal);

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to