mirror of
https://github.com/xiaoyifang/goldendict-ng.git
synced 2024-11-23 20:14:05 +00:00
fix: macOS -> replace the tray icon with a dock menu
This commit is contained in:
parent
720f66c781
commit
1e3b22ebd0
|
@ -199,7 +199,6 @@ Preferences::Preferences():
|
|||
hideMenubar( false ),
|
||||
enableTrayIcon( true ),
|
||||
startToTray( false ),
|
||||
closeToTray( true ),
|
||||
autoStart( false ),
|
||||
doubleClickTranslates( true ),
|
||||
selectWordBySingleClick( false ),
|
||||
|
@ -906,7 +905,9 @@ Class load()
|
|||
|
||||
c.preferences.enableTrayIcon = ( preferences.namedItem( "enableTrayIcon" ).toElement().text() == "1" );
|
||||
c.preferences.startToTray = ( preferences.namedItem( "startToTray" ).toElement().text() == "1" );
|
||||
#ifndef Q_OS_MACOS // // macOS uses the dock menu instead of the tray icon
|
||||
c.preferences.closeToTray = ( preferences.namedItem( "closeToTray" ).toElement().text() == "1" );
|
||||
#endif
|
||||
c.preferences.autoStart = ( preferences.namedItem( "autoStart" ).toElement().text() == "1" );
|
||||
c.preferences.alwaysOnTop = ( preferences.namedItem( "alwaysOnTop" ).toElement().text() == "1" );
|
||||
c.preferences.searchInDock = ( preferences.namedItem( "searchInDock" ).toElement().text() == "1" );
|
||||
|
|
|
@ -343,7 +343,12 @@ struct Preferences
|
|||
bool hideMenubar;
|
||||
bool enableTrayIcon;
|
||||
bool startToTray;
|
||||
bool closeToTray;
|
||||
#ifdef Q_OS_MACOS // macOS uses the dock menu instead of the tray icon
|
||||
bool closeToTray = false;
|
||||
#else
|
||||
bool closeToTray = true;
|
||||
#endif
|
||||
|
||||
bool autoStart;
|
||||
bool doubleClickTranslates;
|
||||
bool selectWordBySingleClick;
|
||||
|
|
|
@ -402,13 +402,17 @@ MainWindow::MainWindow( Config::Class & cfg_ ):
|
|||
connect( wordsZoomBase, &QAction::triggered, this, &MainWindow::doWordsZoomBase );
|
||||
|
||||
// tray icon
|
||||
#ifndef Q_OS_MACOS // macOS uses the dock menu instead of the tray icon
|
||||
connect( trayIconMenu.addAction( tr( "Show &Main Window" ) ), &QAction::triggered, this, [ this ] {
|
||||
this->toggleMainWindow( true );
|
||||
} );
|
||||
#endif
|
||||
trayIconMenu.addAction( enableScanningAction );
|
||||
|
||||
#ifndef Q_OS_MACOS // macOS uses the dock menu instead of the tray icon
|
||||
trayIconMenu.addSeparator();
|
||||
connect( trayIconMenu.addAction( tr( "&Quit" ) ), &QAction::triggered, this, &MainWindow::quitApp );
|
||||
#endif
|
||||
|
||||
addGlobalAction( &escAction, [ this ]() {
|
||||
handleEsc();
|
||||
|
@ -1420,6 +1424,10 @@ void MainWindow::updateAppearances( QString const & addonStyle,
|
|||
|
||||
void MainWindow::trayIconUpdateOrInit()
|
||||
{
|
||||
#ifdef Q_OS_MACOS
|
||||
trayIconMenu.setAsDockMenu();
|
||||
#else
|
||||
|
||||
if ( !cfg.preferences.enableTrayIcon ) {
|
||||
if ( trayIcon ) {
|
||||
delete trayIcon;
|
||||
|
@ -1443,6 +1451,7 @@ void MainWindow::trayIconUpdateOrInit()
|
|||
// The 'Close to tray' action is associated with the tray icon, so we hide
|
||||
// or show it here.
|
||||
ui.actionCloseToTray->setVisible( cfg.preferences.enableTrayIcon );
|
||||
#endif
|
||||
}
|
||||
|
||||
void MainWindow::wheelEvent( QWheelEvent * ev )
|
||||
|
|
|
@ -174,6 +174,11 @@ Preferences::Preferences( QWidget * parent, Config::Class & cfg_ ):
|
|||
ui.hideSingleTab->setChecked( p.hideSingleTab );
|
||||
ui.mruTabOrder->setChecked( p.mruTabOrder );
|
||||
ui.enableTrayIcon->setChecked( p.enableTrayIcon );
|
||||
|
||||
#ifdef Q_OS_MACOS // macOS uses the dock menu instead of the tray icon
|
||||
ui.enableTrayIcon->hide();
|
||||
#endif
|
||||
|
||||
ui.startToTray->setChecked( p.startToTray );
|
||||
ui.closeToTray->setChecked( p.closeToTray );
|
||||
ui.cbAutostart->setChecked( p.autoStart );
|
||||
|
|
Loading…
Reference in a new issue