Merge pull request #6978 from symless/SYNERGY-799-Update-Synergy-UI.-Settings-window
SYNERGY-799 Update Synergy UI. Settings window
This commit is contained in:
commit
f767aa3a53
11 changed files with 842 additions and 563 deletions
|
|
@ -16,6 +16,7 @@ Enhancements:
|
||||||
- #6969 Update synergy UI. Validation for aliases.
|
- #6969 Update synergy UI. Validation for aliases.
|
||||||
- #6973 Update synergy UI. Main window
|
- #6973 Update synergy UI. Main window
|
||||||
- #6977 Update synergy UI. Configure server
|
- #6977 Update synergy UI. Configure server
|
||||||
|
- #6978 Update synergy UI. Settings window
|
||||||
- #6962 | #6965 Add macOS 10.13 builder
|
- #6962 | #6965 Add macOS 10.13 builder
|
||||||
===========
|
===========
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,5 +20,6 @@
|
||||||
<file>icons/64x64/synergy-light-disconnected.png</file>
|
<file>icons/64x64/synergy-light-disconnected.png</file>
|
||||||
<file>icons/64x64/synergy-light-connected.png</file>
|
<file>icons/64x64/synergy-light-connected.png</file>
|
||||||
<file>image/welcome.png</file>
|
<file>image/welcome.png</file>
|
||||||
|
<file>icons/64x64/folder.png</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
|
|
||||||
BIN
src/gui/res/icons/64x64/folder.png
Normal file
BIN
src/gui/res/icons/64x64/folder.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 919 B |
|
|
@ -237,7 +237,7 @@ void AppConfig::loadSettings()
|
||||||
m_UseExternalConfig = loadSetting(kUseExternalConfig, false).toBool();
|
m_UseExternalConfig = loadSetting(kUseExternalConfig, false).toBool();
|
||||||
m_ConfigFile = loadSetting(kConfigFile, QDir::homePath() + "/" + synergyConfigName).toString();
|
m_ConfigFile = loadSetting(kConfigFile, QDir::homePath() + "/" + synergyConfigName).toString();
|
||||||
m_UseInternalConfig = loadSetting(kUseInternalConfig, false).toBool();
|
m_UseInternalConfig = loadSetting(kUseInternalConfig, false).toBool();
|
||||||
m_ClientGroupChecked = loadSetting(kGroupClientCheck, true).toBool();
|
m_ClientGroupChecked = loadSetting(kGroupClientCheck, false).toBool();
|
||||||
m_ServerHostname = loadSetting(kServerHostname).toString();
|
m_ServerHostname = loadSetting(kServerHostname).toString();
|
||||||
|
|
||||||
//only change the serial key if the settings being loaded contains a key
|
//only change the serial key if the settings being loaded contains a key
|
||||||
|
|
|
||||||
|
|
@ -298,10 +298,8 @@ void MainWindow::createMenuBar()
|
||||||
|
|
||||||
void MainWindow::loadSettings()
|
void MainWindow::loadSettings()
|
||||||
{
|
{
|
||||||
on_m_pRadioGroupServer_clicked(appConfig().getServerGroupChecked());
|
enableServer(appConfig().getServerGroupChecked());
|
||||||
on_m_pRadioGroupClient_clicked(appConfig().getClientGroupChecked());
|
enableClient(appConfig().getClientGroupChecked());
|
||||||
m_pRadioGroupServer->setChecked(appConfig().getServerGroupChecked());
|
|
||||||
m_pRadioGroupClient->setChecked(appConfig().getClientGroupChecked());
|
|
||||||
|
|
||||||
m_pLineEditHostname->setText(appConfig().getServerHostname());
|
m_pLineEditHostname->setText(appConfig().getServerHostname());
|
||||||
}
|
}
|
||||||
|
|
@ -1043,38 +1041,34 @@ void MainWindow::setVisible(bool visible)
|
||||||
|
|
||||||
QString MainWindow::getIPAddresses()
|
QString MainWindow::getIPAddresses()
|
||||||
{
|
{
|
||||||
QList<QHostAddress> addresses = QNetworkInterface::allAddresses();
|
QStringList result;
|
||||||
|
|
||||||
bool hinted = false;
|
bool hinted = false;
|
||||||
QString result;
|
const auto localnet = QHostAddress::parseSubnet("192.168.0.0/16");
|
||||||
for (int i = 0; i < addresses.size(); i++) {
|
const QList<QHostAddress> addresses = QNetworkInterface::allAddresses();
|
||||||
if (addresses[i].protocol() == QAbstractSocket::IPv4Protocol &&
|
|
||||||
addresses[i] != QHostAddress(QHostAddress::LocalHost)) {
|
|
||||||
|
|
||||||
QString address = addresses[i].toString();
|
for (const auto& address : addresses) {
|
||||||
QString format = "%1, ";
|
if (address.protocol() == QAbstractSocket::IPv4Protocol &&
|
||||||
|
address != QHostAddress(QHostAddress::LocalHost) &&
|
||||||
|
!address.isLinkLocal()) {
|
||||||
|
|
||||||
// usually 192.168.x.x is a useful ip for the user, so indicate
|
// usually 192.168.x.x is a useful ip for the user, so indicate
|
||||||
// this by making it bold.
|
// this by making it bold.
|
||||||
if (!hinted && address.startsWith("192.168")) {
|
if (!hinted && address.isInSubnet(localnet)) {
|
||||||
|
QString format = "<b>%1</b>";
|
||||||
|
result.append(format.arg(address.toString()));
|
||||||
hinted = true;
|
hinted = true;
|
||||||
format = "<b>%1</b>, ";
|
|
||||||
}
|
}
|
||||||
//Prevent self assigned IPs being displayed
|
else {
|
||||||
if (!address.startsWith("169.254")) {
|
result.append(address.toString());
|
||||||
result += format.arg(address);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result == "") {
|
if (result.isEmpty()) {
|
||||||
return tr("Unknown");
|
result.append(tr("Unknown"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove trailing comma.
|
return result.join(", ");
|
||||||
result.chop(2);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::changeEvent(QEvent* event)
|
void MainWindow::changeEvent(QEvent* event)
|
||||||
|
|
@ -1365,18 +1359,38 @@ void MainWindow::updateScreenName()
|
||||||
serverConfig().updateServerName();
|
serverConfig().updateServerName();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_m_pRadioGroupServer_clicked(bool on)
|
void MainWindow::enableServer(bool enable)
|
||||||
{
|
{
|
||||||
m_pRadioGroupServer->setChecked(true);
|
m_pRadioGroupServer->setChecked(enable);
|
||||||
if (on)
|
|
||||||
|
if (enable)
|
||||||
{
|
{
|
||||||
//show server controls
|
|
||||||
m_pButtonConfigureServer->show();
|
m_pButtonConfigureServer->show();
|
||||||
m_pLabelServerState->show();
|
m_pLabelServerState->show();
|
||||||
updateLocalFingerprint();
|
updateLocalFingerprint();
|
||||||
|
m_pButtonToggleStart->setEnabled(enable);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_pLabelFingerprint->hide();
|
||||||
|
m_pButtonConfigureServer->hide();
|
||||||
|
m_pLabelServerState->hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//hide client controls
|
void MainWindow::enableClient(bool enable)
|
||||||
m_pRadioGroupClient->setChecked(false);
|
{
|
||||||
|
m_pRadioGroupClient->setChecked(enable);
|
||||||
|
|
||||||
|
if (enable)
|
||||||
|
{
|
||||||
|
m_pLabelServerName->show();
|
||||||
|
m_pLineEditHostname->show();
|
||||||
|
m_pButtonConnect->show();
|
||||||
|
m_pButtonToggleStart->setEnabled(enable);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
m_pLabelClientState->hide();
|
m_pLabelClientState->hide();
|
||||||
m_pLabelServerName->hide();
|
m_pLabelServerName->hide();
|
||||||
m_pLineEditHostname->hide();
|
m_pLineEditHostname->hide();
|
||||||
|
|
@ -1384,25 +1398,21 @@ void MainWindow::on_m_pRadioGroupServer_clicked(bool on)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_m_pRadioGroupClient_clicked(bool on)
|
|
||||||
{
|
|
||||||
m_pRadioGroupClient->setChecked(true);
|
|
||||||
if (on)
|
|
||||||
{
|
|
||||||
//show client controls
|
|
||||||
m_pLabelServerName->show();
|
|
||||||
m_pLineEditHostname->show();
|
|
||||||
m_pButtonConnect->show();
|
|
||||||
|
|
||||||
//hide server controls
|
void MainWindow::on_m_pRadioGroupServer_clicked(bool)
|
||||||
m_pRadioGroupServer->setChecked(false);
|
{
|
||||||
m_pLabelFingerprint->hide();
|
enableServer(true);
|
||||||
m_pButtonConfigureServer->hide();
|
enableClient(false);
|
||||||
m_pLabelServerState->hide();
|
}
|
||||||
}
|
|
||||||
|
void MainWindow::on_m_pRadioGroupClient_clicked(bool)
|
||||||
|
{
|
||||||
|
enableClient(true);
|
||||||
|
enableServer(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_m_pButtonConnect_clicked()
|
void MainWindow::on_m_pButtonConnect_clicked()
|
||||||
{
|
{
|
||||||
restartSynergy();
|
restartSynergy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -143,8 +143,8 @@ public slots:
|
||||||
protected slots:
|
protected slots:
|
||||||
void updateLocalFingerprint();
|
void updateLocalFingerprint();
|
||||||
void updateScreenName();
|
void updateScreenName();
|
||||||
void on_m_pRadioGroupServer_clicked(bool on);
|
void on_m_pRadioGroupServer_clicked(bool);
|
||||||
void on_m_pRadioGroupClient_clicked(bool on);
|
void on_m_pRadioGroupClient_clicked(bool);
|
||||||
void on_m_pButtonConfigureServer_clicked();
|
void on_m_pButtonConfigureServer_clicked();
|
||||||
bool on_m_pActionSave_triggered();
|
bool on_m_pActionSave_triggered();
|
||||||
void on_m_pActionAbout_triggered();
|
void on_m_pActionAbout_triggered();
|
||||||
|
|
@ -187,6 +187,8 @@ public slots:
|
||||||
void stopDesktop();
|
void stopDesktop();
|
||||||
void changeEvent(QEvent* event);
|
void changeEvent(QEvent* event);
|
||||||
void retranslateMenuBar();
|
void retranslateMenuBar();
|
||||||
|
void enableServer(bool enable);
|
||||||
|
void enableClient(bool enable);
|
||||||
|
|
||||||
#if defined(Q_OS_WIN)
|
#if defined(Q_OS_WIN)
|
||||||
bool isServiceRunning(QString name);
|
bool isServiceRunning(QString name);
|
||||||
|
|
|
||||||
|
|
@ -866,6 +866,9 @@
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="m_pButtonToggleStart">
|
<widget class="QPushButton" name="m_pButtonToggleStart">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Start</string>
|
<string>&Start</string>
|
||||||
</property>
|
</property>
|
||||||
|
|
|
||||||
|
|
@ -1028,7 +1028,7 @@
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||||
<property name="leftMargin">
|
<property name="leftMargin">
|
||||||
<number>95</number>
|
<number>40</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="topMargin">
|
<property name="topMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
|
|
@ -1071,6 +1071,22 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_6">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Fixed</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>10</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLineEdit" name="m_pEditConfigFile">
|
<widget class="QLineEdit" name="m_pEditConfigFile">
|
||||||
<property name="enabled">
|
<property name="enabled">
|
||||||
|
|
@ -1103,12 +1119,31 @@
|
||||||
</property>
|
</property>
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>40</width>
|
<width>0</width>
|
||||||
<height>0</height>
|
<height>0</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="cursor">
|
||||||
|
<cursorShape>PointingHandCursor</cursorShape>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">margin: 0px; padding: 0px;</string>
|
||||||
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Browse...</string>
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../res/Synergy.qrc">
|
||||||
|
<normaloff>:/res/icons/64x64/folder.png</normaloff>:/res/icons/64x64/folder.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>13</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="flat">
|
||||||
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,8 @@ SettingsDialog::SettingsDialog(QWidget* parent, AppConfig& config) :
|
||||||
connect(m_pSpinBoxPort, SIGNAL(valueChanged(int)), this, SLOT(onChange()));
|
connect(m_pSpinBoxPort, SIGNAL(valueChanged(int)), this, SLOT(onChange()));
|
||||||
connect(m_pLineEditScreenName, SIGNAL(textEdited(QString)), this, SLOT(onChange()));
|
connect(m_pLineEditScreenName, SIGNAL(textEdited(QString)), this, SLOT(onChange()));
|
||||||
connect(m_pComboElevate, SIGNAL(currentIndexChanged(int)), this, SLOT(onChange()));
|
connect(m_pComboElevate, SIGNAL(currentIndexChanged(int)), this, SLOT(onChange()));
|
||||||
|
|
||||||
|
resize(400, 620);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsDialog::accept()
|
void SettingsDialog::accept()
|
||||||
|
|
@ -174,17 +176,14 @@ void SettingsDialog::loadFromConfig() {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
m_pCheckBoxEnableCrypto->setChecked(m_appConfig.getCryptoEnabled());
|
m_pCheckBoxEnableCrypto->setChecked(m_appConfig.getCryptoEnabled());
|
||||||
m_pGroupBoxTLS->setVisible(m_appConfig.getCryptoEnabled());
|
|
||||||
|
|
||||||
#ifdef SYNERGY_ENTERPRISE
|
#ifdef SYNERGY_ENTERPRISE
|
||||||
|
|
||||||
m_pCheckBoxEnableCrypto->setEnabled(true);
|
m_pCheckBoxEnableCrypto->setEnabled(true);
|
||||||
m_pLabelProUpgrade->hide();
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
m_pCheckBoxEnableCrypto->setEnabled(m_appConfig.isCryptoAvailable());
|
m_pCheckBoxEnableCrypto->setEnabled(m_appConfig.isCryptoAvailable());
|
||||||
m_pLabelProUpgrade->setVisible(!m_appConfig.isCryptoAvailable());
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -209,6 +208,7 @@ void SettingsDialog::on_m_pCheckBoxLogToFile_stateChanged(int i)
|
||||||
{
|
{
|
||||||
bool checked = i == 2;
|
bool checked = i == 2;
|
||||||
|
|
||||||
|
m_pLabelLogPath->setEnabled(checked);
|
||||||
m_pLineEditLogFilename->setEnabled(checked);
|
m_pLineEditLogFilename->setEnabled(checked);
|
||||||
m_pButtonBrowseLog->setEnabled(checked);
|
m_pButtonBrowseLog->setEnabled(checked);
|
||||||
buttonBox->button(QDialogButtonBox::Save)->setEnabled(isModified());
|
buttonBox->button(QDialogButtonBox::Save)->setEnabled(isModified());
|
||||||
|
|
@ -236,13 +236,14 @@ void SettingsDialog::on_m_pComboLanguage_currentIndexChanged(int index)
|
||||||
|
|
||||||
void SettingsDialog::on_m_pCheckBoxEnableCrypto_toggled(bool checked)
|
void SettingsDialog::on_m_pCheckBoxEnableCrypto_toggled(bool checked)
|
||||||
{
|
{
|
||||||
|
m_pLabelKeyLength->setEnabled(checked);
|
||||||
|
m_pComboBoxKeyLength->setEnabled(checked);
|
||||||
|
m_pLabelCertificate->setEnabled(checked);
|
||||||
|
m_pLineEditCertificatePath->setEnabled(checked);
|
||||||
|
m_pPushButtonBrowseCert->setEnabled(checked);
|
||||||
|
m_pPushButtonRegenCert->setEnabled(checked);
|
||||||
|
|
||||||
buttonBox->button(QDialogButtonBox::Save)->setEnabled(isModified());
|
buttonBox->button(QDialogButtonBox::Save)->setEnabled(isModified());
|
||||||
if (checked) {
|
|
||||||
verticalSpacer_4->changeSize(10, 10, QSizePolicy::Minimum);
|
|
||||||
} else {
|
|
||||||
verticalSpacer_4->changeSize(10, 0, QSizePolicy::Ignored);
|
|
||||||
}
|
|
||||||
adjustSize();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsDialog::on_m_pLabelInstallBonjour_linkActivated(const QString&)
|
void SettingsDialog::on_m_pLabelInstallBonjour_linkActivated(const QString&)
|
||||||
|
|
@ -288,10 +289,9 @@ void SettingsDialog::updateRegenButton() {
|
||||||
// Disable the Regenerate cert button if the key length is different to saved
|
// Disable the Regenerate cert button if the key length is different to saved
|
||||||
auto keyChanged = appConfig().getTLSKeyLength() != m_pComboBoxKeyLength->currentText();
|
auto keyChanged = appConfig().getTLSKeyLength() != m_pComboBoxKeyLength->currentText();
|
||||||
auto pathChanged = appConfig().getTLSCertPath() != m_pLineEditCertificatePath->text();
|
auto pathChanged = appConfig().getTLSCertPath() != m_pLineEditCertificatePath->text();
|
||||||
auto cryptoChanged = appConfig().getCryptoEnabled() != m_pCheckBoxEnableCrypto->isChecked();
|
|
||||||
//NOR the above bools, if any have changed regen should be disabled as it will be done on save
|
//NOR the above bools, if any have changed regen should be disabled as it will be done on save
|
||||||
auto nor = !(keyChanged || pathChanged || cryptoChanged);
|
auto nor = !(keyChanged || pathChanged);
|
||||||
m_pPushButtonRegenCert->setEnabled(nor);
|
m_pPushButtonRegenCert->setEnabled(nor && m_pCheckBoxEnableCrypto->isChecked());
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsDialog::on_m_pPushButtonRegenCert_clicked() {
|
void SettingsDialog::on_m_pPushButtonRegenCert_clicked() {
|
||||||
|
|
@ -346,18 +346,29 @@ void SettingsDialog::enableControls(bool enable) {
|
||||||
m_labelAdminRightsMessage->setVisible(!enable);
|
m_labelAdminRightsMessage->setVisible(!enable);
|
||||||
|
|
||||||
if (enable) {
|
if (enable) {
|
||||||
|
m_pLabelLogPath->setEnabled(m_pCheckBoxLogToFile->isChecked());
|
||||||
m_pLineEditLogFilename->setEnabled(m_pCheckBoxLogToFile->isChecked());
|
m_pLineEditLogFilename->setEnabled(m_pCheckBoxLogToFile->isChecked());
|
||||||
m_pButtonBrowseLog->setEnabled(m_pCheckBoxLogToFile->isChecked());
|
m_pButtonBrowseLog->setEnabled(m_pCheckBoxLogToFile->isChecked());
|
||||||
m_pCheckBoxEnableCrypto->setEnabled(m_appConfig.isCryptoAvailable());
|
m_pCheckBoxEnableCrypto->setEnabled(m_appConfig.isCryptoAvailable());
|
||||||
|
m_pLabelKeyLength->setEnabled(m_pCheckBoxEnableCrypto->isChecked());
|
||||||
|
m_pComboBoxKeyLength->setEnabled(m_pCheckBoxEnableCrypto->isChecked());
|
||||||
|
m_pLabelCertificate->setEnabled(m_pCheckBoxEnableCrypto->isChecked());
|
||||||
|
m_pLineEditCertificatePath->setEnabled(m_pCheckBoxEnableCrypto->isChecked());
|
||||||
|
m_pPushButtonBrowseCert->setEnabled(m_pCheckBoxEnableCrypto->isChecked());
|
||||||
updateRegenButton();
|
updateRegenButton();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
m_pLabelLogPath->setEnabled(enable);
|
||||||
m_pLineEditLogFilename->setEnabled(enable);
|
m_pLineEditLogFilename->setEnabled(enable);
|
||||||
m_pButtonBrowseLog->setEnabled(enable);
|
m_pButtonBrowseLog->setEnabled(enable);
|
||||||
m_pCheckBoxEnableCrypto->setEnabled(enable);
|
m_pCheckBoxEnableCrypto->setEnabled(enable);
|
||||||
|
m_pLabelKeyLength->setEnabled(enable);
|
||||||
|
m_pComboBoxKeyLength->setEnabled(enable);
|
||||||
|
m_pLabelCertificate->setEnabled(enable);
|
||||||
|
m_pLineEditCertificatePath->setEnabled(enable);
|
||||||
|
m_pPushButtonBrowseCert->setEnabled(enable);
|
||||||
m_pPushButtonRegenCert->setEnabled(enable);
|
m_pPushButtonRegenCert->setEnabled(enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsDialog::onChange()
|
void SettingsDialog::onChange()
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -36,9 +36,8 @@ bool ScreenDuplicationsValidator::validate(const QString& input) const
|
||||||
{
|
{
|
||||||
for (const auto& screen : (*m_pScreenList))
|
for (const auto& screen : (*m_pScreenList))
|
||||||
{
|
{
|
||||||
if (!screen.isNull() &&
|
if (!screen.isNull() && !screen.isServer() &&
|
||||||
input != m_defaultName &&
|
input != m_defaultName && input == screen.name())
|
||||||
input == screen.name())
|
|
||||||
{
|
{
|
||||||
result = false;
|
result = false;
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue