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