https://bugs.kde.org/show_bug.cgi?id=517966

            Bug ID: 517966
           Summary: Kirigami.PageRow forward button does not reactivate
                    the partially visible trailing page in 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 190886
  --> https://bugs.kde.org/attachment.cgi?id=190886&action=edit
Reproduction, tested with qml6 6.10.2.

Versions

  - Qt 6.10.2
  - Kirigami 6.24.0

  Steps to Reproduce

  1. Run the attached standalone repro forward_button_repro.qml.
  2. Start from the initial 2-page PageRow.
  3. Click an item on the second page so that a third page is pushed and
remains partially visible.
  4. Click Kirigami Back to move focus away from the trailing page.
  5. Click Kirigami Forward.


  Actual Results

  - The forward button does nothing.
  - The trailing page remains only partially visible / not fully activated.

  Expected Results

  - The forward button should reactivate the trailing page and bring it fully
into focus.
  - This should behave the same way as directly clicking the visible trailing
page.

 Workaround
 I had to vendor the relevant Kirigami page-stack code and change forward
navigation to prefer activating the trailing visible page directly instead of
relying only on goForward() / currentIndex. Workaround code:

qml/stack/private/globaltoolbar/NavigationButtons.qml:

  onClicked: {
      const trailingVisibleItem = root.pageStack.trailingVisibleItem;
      const trailingVisibleIndex = trailingVisibleItem?.KL.ColumnView.index ??
-1;

      if (trailingVisibleIndex > root.pageStack.currentIndex) {
          root.pageStack.currentIndex = trailingVisibleIndex;
      } else {
          root.pageStack.currentIndex = root.page.KL.ColumnView.index;
          root.pageStack.goForward();
      }
  }


  Additional Information

  - Direct pointer interaction with the partially visible trailing page works
correctly.
  - In other words, Kirigami already has a working activation path for that
page, but the forward-button path does not behave equivalently.
  - This suggests the issue is in PageRow / toolbar forward navigation rather
than in the pushed page’s content.
- The attached repro includes an application-side workaround for a separate
Kirigami.PageRow bug already reported as bug 517963
(https://bugs.kde.org/show_bug.cgi?id=517963). That first bug affects initial
activation of a newly pushed third page: after pageStack.push(...), the
trailing page may appear only partially activated or partially brought into
view unless the app forcibly nudges currentIndex/focus. This workaround is
included here only so the initial third-page activation bug does not mask the
forward-navigation bug being reported.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to