From 4d75150143b8c881b8f315591aba4805bf638eb3 Mon Sep 17 00:00:00 2001 From: Nick Bolton Date: Fri, 21 Mar 2014 09:22:18 +0000 Subject: [PATCH] fixed: Bug #3968 - GUI auto-hides on initial first install (with no config) --- src/gui/src/AppConfig.cpp | 2 ++ src/gui/src/AppConfig.h | 3 +++ src/gui/src/MainWindow.cpp | 21 +++++++++++++++++++-- src/gui/src/MainWindow.h | 2 +- src/gui/src/SetupWizard.cpp | 4 ++-- src/gui/src/main.cpp | 2 +- 6 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/gui/src/AppConfig.cpp b/src/gui/src/AppConfig.cpp index b666bb41..95e5484d 100644 --- a/src/gui/src/AppConfig.cpp +++ b/src/gui/src/AppConfig.cpp @@ -112,6 +112,7 @@ void AppConfig::loadSettings() m_Language = settings().value("language", QLocale::system().name()).toString(); m_PremiumEmail = settings().value("premiumEmail", "").toString(); m_PremiumToken = settings().value("premiumToken", "").toString(); + m_StartedBefore = settings().value("startedBefore", false).toBool(); } void AppConfig::saveSettings() @@ -128,6 +129,7 @@ void AppConfig::saveSettings() settings().setValue("language", m_Language); settings().setValue("premiumEmail", m_PremiumEmail); settings().setValue("premiumToken", m_PremiumToken); + settings().setValue("startedBefore", m_StartedBefore); } void AppConfig::setCryptoPass(const QString &s) diff --git a/src/gui/src/AppConfig.h b/src/gui/src/AppConfig.h index 0c0abb3f..51c1128d 100644 --- a/src/gui/src/AppConfig.h +++ b/src/gui/src/AppConfig.h @@ -68,6 +68,7 @@ class AppConfig const QString& language() const { return m_Language; } const QString& premiumEmail() const { return m_PremiumEmail; } const QString& premiumToken() const { return m_PremiumToken; } + bool startedBefore() const { return m_StartedBefore; } QString synergysName() const { return m_SynergysName; } QString synergycName() const { return m_SynergycName; } @@ -91,6 +92,7 @@ class AppConfig void setLanguage(const QString language) { m_Language = language; } void setPremiumEmail(const QString premiumEmail) { m_PremiumEmail = premiumEmail; } void setPremiumToken(const QString premiumToken) { m_PremiumToken = premiumToken; } + void setStartedBefore(bool b) { m_StartedBefore = b; } void loadSettings(); void saveSettings(); @@ -112,6 +114,7 @@ class AppConfig QString m_Language; QString m_PremiumEmail; QString m_PremiumToken; + bool m_StartedBefore; static const char m_SynergysName[]; static const char m_SynergycName[]; diff --git a/src/gui/src/MainWindow.cpp b/src/gui/src/MainWindow.cpp index 8f3d3ffa..7a169d7a 100644 --- a/src/gui/src/MainWindow.cpp +++ b/src/gui/src/MainWindow.cpp @@ -119,7 +119,7 @@ MainWindow::~MainWindow() saveSettings(); } -void MainWindow::start() +void MainWindow::open() { updatePremiumInfo(); @@ -129,7 +129,10 @@ void MainWindow::start() m_VersionChecker.checkLatest(); - if (appConfig().processMode() == Desktop) { + // only start if user has previously started. this stops the gui from + // auto hiding before the user has configured synergy (which of course + // confuses first time users, who think synergy has crashed). + if (appConfig().startedBefore() && appConfig().processMode() == Desktop) { startSynergy(); } } @@ -463,6 +466,20 @@ void MainWindow::startSynergy() QString command(app + " " + args.join(" ")); m_IpcClient.sendCommand(command, m_ElevateProcess); } + else { + + if (!appConfig().startedBefore()) { + QMessageBox::information( + this, "Synergy", + tr("Synergy has been minimized to the notification " + "area. This happens automatically when Synergy " + "starts.")); + } + } + + appConfig().setStartedBefore(true); + appConfig().saveSettings(); + } bool MainWindow::clientArgs(QStringList& args, QString& app) diff --git a/src/gui/src/MainWindow.h b/src/gui/src/MainWindow.h index e350ddce..5ff697fe 100644 --- a/src/gui/src/MainWindow.h +++ b/src/gui/src/MainWindow.h @@ -88,7 +88,7 @@ class MainWindow : public QMainWindow, public Ui::MainWindowBase QString configFilename(); QString address(); QString appPath(const QString& name); - void start(); + void open(); void clearLog(); VersionChecker& versionChecker() { return m_VersionChecker; } diff --git a/src/gui/src/SetupWizard.cpp b/src/gui/src/SetupWizard.cpp index 56cbabc0..004d6c65 100644 --- a/src/gui/src/SetupWizard.cpp +++ b/src/gui/src/SetupWizard.cpp @@ -205,7 +205,7 @@ void SetupWizard::accept() if (m_StartMain) { - m_MainWindow.start(); + m_MainWindow.open(); } QWizard::accept(); @@ -217,7 +217,7 @@ void SetupWizard::reject() if (m_StartMain) { - m_MainWindow.start(); + m_MainWindow.open(); } QWizard::reject(); diff --git a/src/gui/src/main.cpp b/src/gui/src/main.cpp index 45394623..ac891865 100644 --- a/src/gui/src/main.cpp +++ b/src/gui/src/main.cpp @@ -94,7 +94,7 @@ int main(int argc, char* argv[]) } else { - mainWindow.start(); + mainWindow.open(); } return app.exec();