diff --git a/src/gui/src/ServerConfig.cpp b/src/gui/src/ServerConfig.cpp index 2425b23d71..652118d32a 100644 --- a/src/gui/src/ServerConfig.cpp +++ b/src/gui/src/ServerConfig.cpp @@ -412,6 +412,23 @@ bool ServerConfig::isFull() const return isFull; } +bool ServerConfig::isScreenExists(const QString& screenName) const +{ + bool isExists = false; + + for (const auto& screen : screens()) + { + if (!screen.isNull() && + screen.name() == screenName) + { + isExists = true; + break; + } + } + + return isExists; +} + void ServerConfig::setConfigFile(const QString& configFile) { m_pAppConfig->setConfigFile(configFile); diff --git a/src/gui/src/ServerConfig.h b/src/gui/src/ServerConfig.h index e6294ad85d..ea8614a5a9 100644 --- a/src/gui/src/ServerConfig.h +++ b/src/gui/src/ServerConfig.h @@ -85,6 +85,7 @@ class ServerConfig : public BaseConfig, public GUI::Config::ConfigBase const QString& getConfigFile() const; bool getUseExternalConfig() const; bool isFull() const; + bool isScreenExists(const QString& screenName) const; protected: QSettings& settings(); diff --git a/src/gui/src/ServerConnection.cpp b/src/gui/src/ServerConnection.cpp index 30ad1d361f..878c6c9f7d 100644 --- a/src/gui/src/ServerConnection.cpp +++ b/src/gui/src/ServerConnection.cpp @@ -59,10 +59,10 @@ bool ServerConnection::checkMainWindow() void ServerConnection::addClient(const QString& clientName) { - if (!m_parent.serverConfig().isFull() && checkMainWindow()) + if (!m_parent.serverConfig().isFull() && + !m_parent.serverConfig().isScreenExists(clientName) && + checkMainWindow()) { - m_parent.stopSynergy(); - QMessageBox message(&m_parent); message.addButton(QObject::tr("Ignore"), QMessageBox::RejectRole); message.addButton(QObject::tr("Accept and configure"), QMessageBox::AcceptRole); @@ -76,8 +76,6 @@ void ServerConnection::addClient(const QString& clientName) { m_ignoredClients.append(clientName); } - - m_parent.startSynergy(); } } @@ -88,4 +86,6 @@ void ServerConnection::configureClient(const QString& clientName) ServerConfigDialog dlg(&m_parent, config); dlg.exec(); + + m_parent.restartSynergy(); }