diff --git a/src/qtgui/guiutils.cpp b/src/qtgui/guiutils.cpp index 05e3ecd8..30246db6 100644 --- a/src/qtgui/guiutils.cpp +++ b/src/qtgui/guiutils.cpp @@ -79,7 +79,7 @@ void rwSettings(bool writing) QSettings settings("Recoll.org", "recoll"); SETTING_RW(prefs.mainwidth, "/Recoll/geometry/width", Int, 0); SETTING_RW(prefs.mainheight, "/Recoll/geometry/height", Int, 0); - SETTING_RW(prefs.maximized, "/Recoll/geometry/maximized", Bool, 0); + SETTING_RW(prefs.showmode, "/Recoll/geometry/showmode", Int, 0); SETTING_RW(prefs.pvwidth, "/Recoll/geometry/pvwidth", Int, 0); SETTING_RW(prefs.pvheight, "/Recoll/geometry/pvheight", Int, 0); SETTING_RW(prefs.toolArea, "/Recoll/geometry/toolArea", Int, 0); diff --git a/src/qtgui/guiutils.h b/src/qtgui/guiutils.h index 12df8ec3..8fe969f5 100644 --- a/src/qtgui/guiutils.h +++ b/src/qtgui/guiutils.h @@ -30,11 +30,9 @@ extern RclDynConf *g_dynconf; #include "advshist.h" extern AdvSearchHist *g_advshistory; -#ifndef NO_NAMESPACES using std::string; using std::list; using std::vector; -#endif /** Holder for preferences (gets saved to user Qt prefs) */ class PrefsPack { @@ -68,7 +66,8 @@ class PrefsPack { QString queryStemLang; int mainwidth; int mainheight; - bool maximized{false}; + enum ShowMode {SHOW_NORMAL, SHOW_MAX, SHOW_FULL}; + int showmode{SHOW_NORMAL}; int pvwidth; // Preview window geom int pvheight; int toolArea; // Area for "tools" toolbar diff --git a/src/qtgui/main.cpp b/src/qtgui/main.cpp index a14c17cf..d8fd166d 100644 --- a/src/qtgui/main.cpp +++ b/src/qtgui/main.cpp @@ -375,10 +375,10 @@ int main(int argc, char **argv) maybeOpenDb(reason); - if (prefs.maximized) { - mainWindow->showMaximized(); - } else { - mainWindow->show(); + switch (prefs.showmode) { + case PrefsPack::SHOW_NORMAL: mainWindow->show(); break; + case PrefsPack::SHOW_MAX: mainWindow->showMaximized(); break; + case PrefsPack::SHOW_FULL: mainWindow->showFullScreen(); break; } QTimer::singleShot(0, mainWindow, SLOT(initDbOpen())); diff --git a/src/qtgui/rclmain_w.cpp b/src/qtgui/rclmain_w.cpp index fe0dff32..9b86a46e 100644 --- a/src/qtgui/rclmain_w.cpp +++ b/src/qtgui/rclmain_w.cpp @@ -643,6 +643,13 @@ void RclMain::showTrayMessage(const QString& text) void RclMain::closeEvent(QCloseEvent *ev) { LOGDEB("RclMain::closeEvent\n"); + if (isFullScreen()) { + prefs.showmode = PrefsPack::SHOW_FULL; + } else if (isMaximized()) { + prefs.showmode = PrefsPack::SHOW_MAX; + } else { + prefs.showmode = PrefsPack::SHOW_NORMAL; + } if (prefs.closeToTray && m_trayicon && m_trayicon->isVisible()) { hide(); ev->ignore(); @@ -654,6 +661,15 @@ void RclMain::closeEvent(QCloseEvent *ev) void RclMain::fileExit() { LOGDEB("RclMain: fileExit\n"); + // Have to do this both in closeEvent (for close to tray) and fileExit + // (^Q, doesnt go through closeEvent) + if (isFullScreen()) { + prefs.showmode = PrefsPack::SHOW_FULL; + } else if (isMaximized()) { + prefs.showmode = PrefsPack::SHOW_MAX; + } else { + prefs.showmode = PrefsPack::SHOW_NORMAL; + } if (m_trayicon) { m_trayicon->setVisible(false); } @@ -662,7 +678,6 @@ void RclMain::fileExit() prefs.mainwidth = width(); prefs.mainheight = height(); } - prefs.maximized = isMaximized(); prefs.toolArea = toolBarArea(m_toolsTB); prefs.resArea = toolBarArea(m_resTB); diff --git a/src/qtgui/systray.cpp b/src/qtgui/systray.cpp index 9ec2fd29..a3e65ad2 100644 --- a/src/qtgui/systray.cpp +++ b/src/qtgui/systray.cpp @@ -41,7 +41,11 @@ void RclTrayIcon::onRestore() { // Hide and show to restore on current desktop m_mainw->hide(); - m_mainw->showNormal(); + switch (prefs.showmode) { + case PrefsPack::SHOW_NORMAL: m_mainw->show(); break; + case PrefsPack::SHOW_MAX: m_mainw->showMaximized(); break; + case PrefsPack::SHOW_FULL: m_mainw->showFullScreen(); break; + } } void RclTrayIcon::onActivated(QSystemTrayIcon::ActivationReason reason)