Commit Graph

44 Commits

Author SHA1 Message Date
Sergio Martins
be4a71685a Fix a fuzzer test
When restoring a layout it can happen that the widget has
different size constraints when being restored, so this warning
was benign. There's a chekcSanity() later, so that's what's matters
2020-06-20 14:00:33 +01:00
Sergio Martins
b7cb6afa49 Item: Also position the opposite position, not just the length
Fixes fuzzer test 20.json
2020-05-13 19:39:30 +01:00
Sergio Martins
68acdaeb9a Fix Items not being connected to their parent after a restore
Missing connectToParent() calls.
2020-05-13 12:24:46 +01:00
Sergio Martins
4dea453e7c fuzzer: Trim failling test 2020-05-11 00:25:09 +01:00
Sergio Martins
ca52d6f760 fuzzer: Add a failing test 2020-05-11 00:05:00 +01:00
Sergio Martins
97c1ca30fd Layouting engine rewrite
The layouting was becoming too complex to maintain and to introduce
new features. Was even buggy, the fuzzer was constantly finding
bugs, which took hours to workaround.

Problem with the old layout engine is that there was a catch 22, between
Items driving the separators, and separators driving the anchors.

The new layout is much simpler, both in implementation and conceptually.
There's simply a recursive hierarchy of Item elements. An Item can either
have a QWidget to show, or be a ItemContainer, which contains Item children,
and so forth. Each ItemContainer is either vertical or horizontal. That's enough
to represent the "nested multi-splitter" concept which KDDW uses.

After each item insertion/deletion/resize, the separators are regenerated. They
are essentially dumb now.

TODO:
- Separators are drawn, but are not interactive yet
- There's 5 tests failing
- LayoutSaver scalling functionality
2020-05-04 00:02:03 +01:00
Sergio Martins
52e53c4fd9 fuzzer: Trim the failing test 2020-01-29 15:04:51 +00:00
Sergio Martins
07f9e9a0df Fix fuzzer testcase failing/2.json
And renamed it to 17.json, as we already have an unrelated 2.json.

The removed check isn't needed, as we'll check again when we
finish restoring the placeholder. It was also a false-positive
warning sometimes because boundPositionForAnchor() would fail
since the "anchors following" wasnt initialized yet, as we do
a clearAnchorsFollowing while restoring the placeholder
2020-01-27 18:47:37 +00:00
Sergio Martins
195c8121c0 fuzzer: Simplify names for 2.json 2020-01-27 15:17:30 +00:00
Sergio Martins
2b1518b1c2 Fuzzer: Add a new failing testcase 2020-01-27 15:10:55 +00:00
Sergio Martins
ca98d376b7 fuzzer: Move 14.json from failing to ok
It passes now
2020-01-24 20:05:43 +00:00
Sergio Martins
16b564a005 Add a test which is failing on macOS 2020-01-24 20:02:26 +00:00
Sergio Martins
162bf0e828 Don't move anchors that are following others
Move the real ones instead. Fixes some bugs found with the fuzzer.
2020-01-24 16:19:42 +00:00
Sergio Martins
068eb7cc25 fuzzer: trim 15.json a bit
smaller and still repro
2020-01-24 11:52:51 +00:00
Sergio Martins
e2d47001db fuzzer: Move failing tests to a failing directory
So we can run the correct ones with *.json
2020-01-24 11:37:45 +00:00
Sergio Martins
8447cefc14 fuzzer: trim testcase 16
Now has the minimum to reproduce
2020-01-22 10:56:11 +00:00
Sergio Martins
141cbc55f4 add a failing testcase 2020-01-21 22:05:32 +00:00
Sergio Martins
873978a99e Add some failing testcases 2020-01-21 22:05:03 +00:00
Sergio Martins
6a9b02ea63 Fix ensureMinSize_recursive
It doesn't make sense to only grow one side, as sometimes the item
must grow in both sizes, as the right side might now have enough
to acomodate its needs.

This also allows us to not use Anchor::ensureBounded(), as separators
being within their bounds doesn't imply min sizes being respected, while
the inverse is true

fuzzer testcase 10.json now passes
2019-10-20 16:57:52 +01:00
Sergio Martins
38dc89818f fuzzer: Move 10.json to failing/
So we can test the good ones easier, just fuzzer *json
2019-10-18 17:24:48 +01:00
Sergio Martins
a4b064945b fuzzer: Add a failing test 2019-10-18 00:01:33 +01:00
Sergio Martins
bc1b511d86 fuzzer: Add a failing test 2019-10-17 18:45:03 +01:00
Sergio Martins
9d0a69c1a6 Relax warning about AnchorGroup being small
When adjusting the vertical separators we should only check if
the group has enough width. It's height is adjusted in ensureAnchorsBounded().
(And vice-versa)

Found via fuzzer's test-case 9.json. Passes now.
2019-10-17 18:12:51 +01:00
Sergio Martins
bb7f5e51c6 Relax warning in Anchor::setPosition()
Can happen with normal separators too.
They'll be fixed ensureAnchorsBounded() anyway.
2019-10-17 17:50:59 +01:00
Sergio Martins
ea2a1ed0fd fuzzer: simplify 8.json 2019-10-16 14:09:33 +01:00
Sergio Martins
8bdbe029ff fuzzer: Add failing unit-tests 2019-10-16 14:04:16 +01:00
Sergio Martins
c57815a828 fuzzer: trim 2.json 2019-10-15 19:34:14 +01:00
Sergio Martins
8fec6a871e fuzzer: minor simplification for 6.json 2019-10-15 17:13:34 +01:00
Sergio Martins
982e9828e8 fuzzer: regeneratete 6.json, fixes comments 2019-10-15 17:05:41 +01:00
Sergio Martins
68dba4c993 fuzzer: Add failing test-case
Another "Constraints not honoured"
2019-10-15 17:04:28 +01:00
Sergio Martins
d0c7c9eb99 Fix Item and Frame geometry getting out of sync 2019-10-15 16:37:08 +01:00
Sergio Martins
c8d436d752 fuzzer: trim 4.json further
this is the minimal to reproduce now.
2019-10-15 13:04:23 +01:00
Sergio Martins
5bed380e21 fuzzer: trim testcase 4.json 2019-10-15 12:59:33 +01:00
Sergio Martins
fe4627280e fuzzer: Trim 3.json 2019-10-15 12:07:44 +01:00
Sergio Martins
60de4fd6a0 fuzzer: Generate the descriptions before running the operations
Because we want to print the state before running stuff, not how
the dockwidgets end up
2019-10-15 11:59:30 +01:00
Sergio Martins
6dad6a6cb0 fuzzer: Add failing tests 2019-10-15 11:51:07 +01:00
Sergio Martins
3901119989 fuzzer: Simplify test by making dock4 visible 2019-10-14 22:48:56 +01:00
Sergio Martins
ad4c77e15a fuzzer: Add -f option to force dumping json
When loading from json we don't dump. But it's useful to regenerate
the old json in case the format was upadted with more fields.
2019-10-14 22:46:12 +01:00
Sergio Martins
d4306b458e fuzzer: Add a comment field to the json
So it's easier to read the json
2019-10-14 22:09:15 +01:00
Sergio Martins
9000e90124 fuzzer: Simplify 1.json even more
Removed unneeded DockWidgets
2019-10-14 21:57:28 +01:00
Sergio Martins
c63e4a3d38 fuzzer: Also write the MainWindow name to json
Same reason as previous commit
2019-10-14 21:55:08 +01:00
Sergio Martins
9738fbddc6 fuzzer: Write the DockWidgets name to the json too
This way it's easier to read the json and remove unneeded dock widgets
while trimming the test-case
2019-10-14 21:49:36 +01:00
Sergio Martins
6957f40cdf fuzzer: trim 1.json to the minimum to reproduce 2019-10-14 21:22:21 +01:00
Sergio Martins
6a3084abb6 fuzzer: Add failing testcase
Gives:
MultiSplitterLayout::checkSanity: Widget KDDockWidgets::Item(0x55e8038d8f90)
with rect QRect(0,0 1953x407) Intersects anchor KDDockWidgets::Anchor(0x55e803a17ba0)
with rect QRect(1209,406 5x562)
2019-10-13 23:52:27 +01:00