diff --git a/src/ui/mainwindow.cc b/src/ui/mainwindow.cc index 5f22c249..65ca9bf3 100644 --- a/src/ui/mainwindow.cc +++ b/src/ui/mainwindow.cc @@ -165,6 +165,7 @@ MainWindow::MainWindow( Config::Class & cfg_ ): audioPlayerFactory( cfg.preferences ), wordFinder( this ), wordListSelChanged( false ), + wasMaximized( false ), headwordsDlg( nullptr ), ftsIndexing( dictionaries ), ftsDlg( nullptr ), @@ -871,6 +872,8 @@ MainWindow::MainWindow( Config::Class & cfg_ ): mainStatusBar->showMessage( tr( "Accessibility API is not enabled" ), 10000, QPixmap( ":/icons/error.svg" ) ); #endif + wasMaximized = isMaximized(); + history.setSaveInterval( cfg.preferences.historyStoreInterval ); #ifndef Q_OS_MACOS ui.centralWidget->grabGesture( Gestures::GDPinchGestureType ); @@ -2494,6 +2497,11 @@ bool MainWindow::eventFilter( QObject * obj, QEvent * ev ) } } + if ( obj == this && ev->type() == QEvent::WindowStateChange ) { + auto stev = dynamic_cast< QWindowStateChangeEvent * >( ev ); + wasMaximized = ( stev->oldState() == Qt::WindowMaximized && isMinimized() ); + } + if ( ev->type() == QEvent::MouseButtonPress ) { auto event = dynamic_cast< QMouseEvent * >( ev ); @@ -2751,6 +2759,15 @@ void MainWindow::toggleMainWindow( bool onlyShow ) raise(); shown = true; } + else if ( isMinimized() ) { + if ( wasMaximized ) + showMaximized(); + else + showNormal(); + activateWindow(); + raise(); + shown = true; + } else if ( !isActiveWindow() ) { activateWindow(); if ( cfg.preferences.raiseWindowOnSearch ) { diff --git a/src/ui/mainwindow.hh b/src/ui/mainwindow.hh index a9cab3d6..66d4a636 100644 --- a/src/ui/mainwindow.hh +++ b/src/ui/mainwindow.hh @@ -158,6 +158,8 @@ private: bool wordListSelChanged; + bool wasMaximized; // Window state before minimization + QPrinter & getPrinter(); // Creates a printer if it's not there and returns it DictHeadwords * headwordsDlg;