vcl/qt5/QtFrame.cxx | 1 +
1 file changed, 1 insertion(+)
New commits:
commit 5d2b2b9f381bbfb19ffd393f361c1fdd4a898550
Author: Michael Weghorn <[email protected]>
AuthorDate: Thu Jan 30 11:58:28 2025 +0100
Commit: Michael Weghorn <[email protected]>
CommitDate: Thu Jan 30 15:55:54 2025 +0100
qt: Return from QtFrame::SetPosSize after running it in main thread
If QtFrame::SetPosSize is called from a thread other
than the main thread, it gets executed in the main
thread via QtInstance::RunInMainThread.
Once that's done, return, and don't try to run
the rest of the method once again in the original thread.
This was missed in
commit 5ef991ffc226424a673662b6e478db124825022a
Author: Michael Weghorn <[email protected]>
Date: Fri Aug 30 17:20:41 2024 +0200
tdf#162696 qt: Always run QtFrame::SetPosSize in main thread
and resulted in a deadlock when opening the sample doc
attachment 198264 from tdf#164460 with the qt6 VCL plugin
and running the macro, using a current qtbase git dev build.
With this and the 2 previous commits
Change-Id: I0ee7aa62893da92b886acfd3d47be0bdb10d6007
Author: Michael Weghorn <[email protected]>
Date: Thu Jan 30 11:38:52 2025 +0100
qt: Ensure more methods are run in main thread
and
Change-Id: I787bb74644dcf29ccbd6c7a59fe5ca9fc7a50061
commit 9cfc139a5a9ec499741cfc95669f6469a17e5329
Date: Thu Jan 30 11:47:53 2025 +0100
qt: Ensure QMenu gets destroyed in main thread
in place, the macro now gets executed and the
form shows as expected without triggering asserts
or deadlocks.
Change-Id: I503e03133eb09e1bbea5e7549fbbcdd3c3379d1d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180939
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <[email protected]>
diff --git a/vcl/qt5/QtFrame.cxx b/vcl/qt5/QtFrame.cxx
index ff87fec1a642..791901dcbc29 100644
--- a/vcl/qt5/QtFrame.cxx
+++ b/vcl/qt5/QtFrame.cxx
@@ -509,6 +509,7 @@ void QtFrame::SetPosSize(tools::Long nX, tools::Long nY,
tools::Long nWidth, too
if (!rQtInstance.IsMainThread())
{
rQtInstance.RunInMainThread([&] { SetPosSize(nX, nY, nWidth, nHeight,
nFlags); });
+ return;
}
if (!isWindow() || isChild(true, false))