https://bugs.kde.org/show_bug.cgi?id=517963
Bug ID: 517963
Summary: Kirigami.PageRow can leave a newly pushed third page
only partially activated/visible on desktop
multi-column layouts
Classification: Frameworks and Libraries
Product: frameworks-kirigami
Version First 6.24.0
Reported In:
Platform: Arch Linux
OS: Linux
Status: REPORTED
Severity: normal
Priority: NOR
Component: general
Assignee: [email protected]
Reporter: [email protected]
CC: [email protected]
Target Milestone: Not decided
Created attachment 190885
--> https://bugs.kde.org/attachment.cgi?id=190885&action=edit
Reproduction, tested with qml6 6.10.2.
Summary
On desktop multi-column layouts, pushing a new trailing page into
`Kirigami.PageRow` does not always fully activate or fully bring that page into
view on the first interaction.
Environment
- Qt 6.10.2 / Kirigami 6.24.0
- Desktop layout
- Reproduced with `Kirigami.ApplicationWindow` + `Kirigami.PageRow`
Observed behavior
Starting from a `PageRow` with two visible pages:
1. Interact with content on the second page.
2. That interaction calls `pageStack.push(...)` to add a third page.
3. The third page appears, but is often only partially visible / not fully
activated.
4. Interacting with that trailing page again usually completes activation and
brings it fully into focus.
Expected behavior
After `pageStack.push(...)` adds the new trailing page, that page should
become fully active and fully brought into view immediately, without requiring
a second interaction.
Why I think this is a Kirigami bug
This appears to be in the `PageRow` / `ColumnView` activation path rather
than in page-specific content:
- the issue occurs after `Kirigami.PageRow.push(...)`
- the pushed page exists and is visible
- a subsequent direct interaction with the partially visible trailing page
succeeds in activating it
- the problem is therefore not that the page is invalid, but that the initial
push/activation path does not reliably finish the transition
Workaround currently needed
In app code, I had to do all of the following after `pageStack.push(...)`:
- temporarily set `pageStack.currentIndex` away from the last page and then
back again
- repeat that in `Qt.callLater(...)`
- call `forceActiveFocus()` on the pushed page
- repeat that in `Qt.callLater(...)`
That workaround makes the first interaction behave correctly, but it appears
to compensate for a `PageRow` activation issue rather than solving it at the
framework level.
Repro
I attached a standalone reproduction.
--
You are receiving this mail because:
You are watching all bug changes.