[Client] Settings: add top-right cogwheel shortcut (#7485)

* [Client] Settings: add top-right cogwheel shortcut

Add a subtle flat settings button to the tab bar corner that opens the
settings dialog via the existing menu action slot. Icon and tooltip
follow the menu action in retranslateUi.

* [Client] Settings: flat black-cogwheel corner entry per review

---------

Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
BruebachL 2026-10-18 22:48:51 +02:00 • committed by GitHub
parent 860625be4d
commit 4974cac59a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 20 additions and 0 deletions

View file

@ -82,10 +82,12 @@
#include <QPixmapCache>
#include <QPushButton>
#include <QSharedPointer>
#include <QSize>
#include <QStatusBar>
#include <QStringLiteral>
#include <QSystemTrayIcon>
#include <QTimer>
#include <QToolButton>
#include <QWidget>
#include <QtConcurrentRun>
#include <QtGlobal>
@ -355,6 +357,9 @@ void MainWindow::retranslateUi()
aForgotPassword->setText(tr("&Restore password..."));
aSettings->setText(tr("&Settings..."));
aSettings->setIcon(themePixmap(QStringLiteral("icons/settings")));
settingsButton->setToolTip(tr("Settings"));
settingsButton->setAccessibleName(tr("Settings"));
settingsButton->setIcon(themePixmap(QStringLiteral("icons/cogwheel")));
aExit->setText(tr("&Exit"));
#if defined(__APPLE__) /* For OSX */
@ -559,6 +564,19 @@ MainWindow::MainWindow(QWidget *parent)
setCentralWidget(tabSupervisor);
// Unobtrusive settings entry in the tab bar corner: flat icon-only button that blends into the tab
// bar until hovered, mirroring the menu action for discoverability
settingsButton = new QToolButton(tabSupervisor);
settingsButton->setAutoRaise(true);
settingsButton->setToolButtonStyle(Qt::ToolButtonIconOnly);
settingsButton->setIconSize(QSize(16, 16));
settingsButton->setCursor(Qt::PointingHandCursor);
settingsButton->setFocusPolicy(Qt::NoFocus);
settingsButton->setStyleSheet(
QStringLiteral("QToolButton { border: none; background: transparent; padding: 4px; }"));
connect(settingsButton, &QToolButton::clicked, this, &MainWindow::actSettings);
tabSupervisor->setCornerWidget(settingsButton, Qt::TopRightCorner);
retranslateUi();
if (!restoreGeometry(SettingsCache::instance().layouts().getMainWindowGeometry())) {

View file

@ -46,6 +46,7 @@
#include <qtmetamacros.h>
class QAction;
class QToolButton;
class QWidget;
struct LocalGameOptions;
@ -178,6 +179,7 @@ private:
QList<QMenu *> tabMenus;
QMenu *cockatriceMenu, *dbMenu, *tabsMenu, *helpMenu, *trayIconMenu;
QAction *aAbout, *aSettings, *aShow, *aExit;
QToolButton *settingsButton = nullptr;
QAction *aConnect, *aDisconnect, *aRegister, *aForgotPassword, *aSinglePlayer, *aWatchReplay, *aFullScreen;
QAction *aManageSets, *aEditTokens, *aOpenCustomFolder, *aOpenCustomsetsFolder, *aAddCustomSet,
*aReloadCardDatabase;