fix(dock_area): skip superseded deferred layout ratio requests

This commit is contained in:
wyzula_j authored and Jan Wyzula committed 2026-10-16 08:48:29 +02:00
1 parent 7ce6bf2a5a
commit 4cfb49ff95
2 files changed
+33 -1

No files matched your search

+19
View File
@@ -433,6 +433,12 @@ class TestBasicDockArea:
def findChildren(self, *_args, **_kwargs):
return []
def setProperty(self, name, value):
self.__dict__[name] = value
def property(self, name):
return self.__dict__.get(name)
splitter = DummySplitter()
basic_dock_area._schedule_splitter_weights(splitter, [1, 2, 1])
@@ -647,6 +653,19 @@ class TestBasicDockArea:
assert left_px > 2 * right_px
assert root.findChildren(basic_dock_module._ResizeWatcher) == []
def test_layout_ratios_superseded_request_does_not_apply(self, collapsed_dock_area, qtbot):
"""An older request still queued when a newer one arrives must not win either."""
outer, area, root = collapsed_dock_area
area.set_layout_ratios(horizontal=[1, 3])
# The area gets its width back between the two queued applies.
QTimer.singleShot(0, outer, lambda: outer.setSizes([400, 400]))
area.set_layout_ratios(horizontal=[3, 1])
qtbot.waitUntil(lambda: root.width() > 0)
qtbot.wait(50)
left_px, right_px = root.sizes()
assert left_px > 2 * right_px
def test_first_dock_title_bar_preference_survives_second_dock(self, basic_dock_area):
first = QWidget(parent=basic_dock_area)
first.setObjectName("first_panel")