[system/dolphin] src/views: ZoomWidgetAction: Focus last button on BacktabFocusReason
Kai Uwe Broulik <[email protected]> Wed, 5 Aug 2026 08:31:46 +0000 (UTC)
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git commit c2242415d9536d2bea6bffcc528d73e566ecbeb6 by Kai Uwe Broulik.
Committed on 05/08/2026 at 08:26.
Pushed by broulik into branch 'master'.
ZoomWidgetAction: Focus last button on BacktabFocusReason
This way when approaching the menu entry from below using arrow up,
the *last* action in the zoom widget will be focused as expected.
Instead of using focusProxy, adjust focus manually.
M +12 -1 src/views/zoomwidgetaction.cpp
https://invent.kde.org/system/dolphin/-/commit/c2242415d9536d2bea6bffcc528d73e566ecbeb6
diff --git a/src/views/zoomwidgetaction.cpp b/src/views/zoomwidgetaction.cpp
index 431ac4f62f..62be8799e5 100644
--- a/src/views/zoomwidgetaction.cpp
+++ b/src/views/zoomwidgetaction.cpp
@@ -51,6 +51,18 @@ protected:
painter.drawControl(QStyle::CE_MenuItem, option);
}
+
+ void focusInEvent(QFocusEvent *event) override
+ {
+ const auto buttons = findChildren<QToolButton *>();
+ Q_ASSERT(!buttons.isEmpty());
+
+ if (event->reason() == Qt::BacktabFocusReason) {
+ buttons.last()->setFocus(event->reason());
+ } else {
+ buttons.first()->setFocus(event->reason());
+ }
+ }
};
ZoomWidgetAction::ZoomWidgetAction(QAction *zoomInAction, QAction *zoomResetAction, QAction *zoomOutAction, QObject *parent)
@@ -128,7 +140,6 @@ QWidget *ZoomWidgetAction::createWidget(QWidget *parent)
zoomOutButton->setDefaultAction(m_zoomOutAction);
zoomOutButton->installEventFilter(this);
zoomWidgetLayout->addWidget(zoomOutButton);
- zoomWidget->setFocusProxy(zoomOutButton);
QIcon zoomOutIcon;
QPixmap zoomOutPixmapNormal = m_zoomOutAction->icon().pixmap(zoomOutButton->iconSize(), QIcon::Normal);