refactor: remove server dead corners. instead set per screen

This commit is contained in:
sithlord48 2026-06-19 17:04:57 -04:00 committed by Chris Rizzitello
parent 95ffe1ba03
commit a54d4d6754
16 changed files with 253 additions and 597 deletions

View file

@ -275,12 +275,6 @@ screens\9\switchCornerArray\4\switchCorner=false
screens\9\switchCornerArray\size=4 screens\9\switchCornerArray\size=4
screens\9\switchCornerSize=0 screens\9\switchCornerSize=0
screens\size=15 screens\size=15
switchCornerArray\1\switchCorner=false
switchCornerArray\2\switchCorner=false
switchCornerArray\3\switchCorner=false
switchCornerArray\4\switchCorner=false
switchCornerArray\size=4
switchCornerSize=0
``` ```
@ -331,8 +325,8 @@ A computer can have the following options:
|halfDuplexScrollLock| `true` or `false`| This computer has a ''Scroll Lock'' key that doesn't report a press and a release event when the user presses it but instead reports a press event when it's turned on and a release event when it's turned off. If ''Scroll Lock'' acts strangely on all computers then you may need to set this option to true on the server. If it acts strangely on one computer then that computer may need the option set to true.| |halfDuplexScrollLock| `true` or `false`| This computer has a ''Scroll Lock'' key that doesn't report a press and a release event when the user presses it but instead reports a press event when it's turned on and a release event when it's turned off. If ''Scroll Lock'' acts strangely on all computers then you may need to set this option to true on the server. If it acts strangely on one computer then that computer may need the option set to true.|
|xtestIsXineramaUnaware| `true` or `false`| This option works around a bug in the XTest extension when used in combination with Xinerama. It affects X11 clients only. Not all versions of the XTest extension are aware of the Xinerama extension. As a result, they do not move the mouse correctly when using multiple Xinerama screens. This option is currently ''true'' by default. If you know your XTest extension is Xinerama aware then set this option to ''false''.| |xtestIsXineramaUnaware| `true` or `false`| This option works around a bug in the XTest extension when used in combination with Xinerama. It affects X11 clients only. Not all versions of the XTest extension are aware of the Xinerama extension. As a result, they do not move the mouse correctly when using multiple Xinerama screens. This option is currently ''true'' by default. If you know your XTest extension is Xinerama aware then set this option to ''false''.|
|preserveFocus| `true` or `false` | When true don't drop focus when switching computers |preserveFocus| `true` or `false` | When true don't drop focus when switching computers
|switchCorners| corners |See <a href="#switch-corners">switchCorners</a> below.| |switchCorners | none top-left top-right bottom-left bottom-right left right top bottom all | Deskflow won't switch computers when the mouse reaches the edge of the computer if it's in a listed corner. The size of all corners is given by the `switchCornerSize` option. The first name in the list is one of the above names and defines the initial set of corners. Subsequent names are prefixed with + or - to add the corner to or remove the corner from the set, respectively. For example: `all -left +top-left` starts will all corners, removes the left corners (top and bottom) then adds the top-left back in, resulting in the top-left, bottom-left and bottom-right corners.|
|switchCornerSize | integer | see switchCornerSize below.| |switchCornerSize | integer (N) | Sets the size of all corners in pixels. The cursor must be within `N` pixels of the corner to be considered to be in the corner.|
|shift | shift ctrl alt meta super none | Map the server's shift modifer to different key on a client computer| |shift | shift ctrl alt meta super none | Map the server's shift modifer to different key on a client computer|
|ctrl | shift ctrl alt meta super none | Map the server's ctrl modifer to different key on a client computer| |ctrl | shift ctrl alt meta super none | Map the server's ctrl modifer to different key on a client computer|
|alt | shift ctrl alt meta super none | Map the server's alt modifer to different key on a client computer| |alt | shift ctrl alt meta super none | Map the server's alt modifer to different key on a client computer|
@ -399,8 +393,6 @@ end
| Options | Value Values| Description| | Options | Value Values| Description|
|:--------|:-----------:|:-----------| |:--------|:-----------:|:-----------|
|switchCorners | none top-left top-right bottom-left bottom-right left right top bottom all | Deskflow won't switch computers when the mouse reaches the edge of the computer if it's in a listed corner. The size of all corners is given by the `switchCornerSize` option. The first name in the list is one of the above names and defines the initial set of corners. Subsequent names are prefixed with + or - to add the corner to or remove the corner from the set, respectively. For example: `all -left +top-left` starts will all corners, removes the left corners (top and bottom) then adds the top-left back in, resulting in the top-left, bottom-left and bottom-right corners.|
|switchCornerSize | integer (N) | Sets the size of all corners in pixels. The cursor must be within `N` pixels of the corner to be considered to be in the corner.|
|screenSaverSync| `true` or `false`| ''Note: Removed in v1.14.1'' If set to ''false'' then Deskflow won't synchronize screen savers. Client screen savers will start according to their individual configurations. The server screen saver won't start if there is input, even if that input is directed toward a client computer.| |screenSaverSync| `true` or `false`| ''Note: Removed in v1.14.1'' If set to ''false'' then Deskflow won't synchronize screen savers. Client screen savers will start according to their individual configurations. The server screen saver won't start if there is input, even if that input is directed toward a client computer.|
|keystroke(key) | actions | Binds the ''key'' combination key to the given ''actions''. ''key'' is an optional list of modifiers (''shift'', ''control'', ''alt'', ''meta'' or ''super'') optionally followed by a character or a key name, all separated by + (plus signs). You must have either modifiers or a character/key name or both. See below for `valid key names` and `actions`. Keyboard hot keys are handled while the cursor any computer. Separate actions can be assigned to press and release.| |keystroke(key) | actions | Binds the ''key'' combination key to the given ''actions''. ''key'' is an optional list of modifiers (''shift'', ''control'', ''alt'', ''meta'' or ''super'') optionally followed by a character or a key name, all separated by + (plus signs). You must have either modifiers or a character/key name or both. See below for `valid key names` and `actions`. Keyboard hot keys are handled while the cursor any computer. Separate actions can be assigned to press and release.|
|mousebutton(button) | actions| Binds the modifier and mouse button combination ''button'' to the given ''actions''. ''button'' is an optional list of modifiers (''shift'', ''control'', ''alt'', ''meta'' or ''super'') followed by a button number. The primary button (the left button for right handed users) is button 1, the middle button is 2, etc. Actions can be found below. Mouse button actions are not handled while the cursor is on the server. You cannot use these to perform an action while on the server. Separate actions can be assigned to press and release.| |mousebutton(button) | actions| Binds the modifier and mouse button combination ''button'' to the given ''actions''. ''button'' is an optional list of modifiers (''shift'', ''control'', ''alt'', ''meta'' or ''super'') followed by a button number. The primary button (the left button for right handed users) is button 1, the middle button is 2, etc. Actions can be found below. Mouse button actions are not handled while the cursor is on the server. You cannot use these to perform an action while on the server. Separate actions can be assigned to press and release.|

View file

@ -333,7 +333,8 @@ private:
, QStringLiteral("internalConfig/protocol") , QStringLiteral("internalConfig/protocol")
, QStringLiteral("internalConfig/numColumns") , QStringLiteral("internalConfig/numColumns")
, QStringLiteral("internalConfig/numRows") , QStringLiteral("internalConfig/numRows")
, QStringLiteral("interlanConfig/relativeMouseMoves") , QStringLiteral("internalConfig/relativeMouseMoves")
, QStringLiteral("internalConfig/switchCorner")
, QStringLiteral("internalConfig/switchDelay") , QStringLiteral("internalConfig/switchDelay")
, QStringLiteral("internalConfig/switchDoubleTap") , QStringLiteral("internalConfig/switchDoubleTap")
, QStringLiteral("internalConfig/win32KeepForeground") , QStringLiteral("internalConfig/win32KeepForeground")

View file

@ -52,10 +52,8 @@ bool ServerConfig::save(const QString &fileName) const
bool ServerConfig::operator==(const ServerConfig &sc) const bool ServerConfig::operator==(const ServerConfig &sc) const
{ {
return m_Screens == sc.m_Screens && // return m_Screens == sc.m_Screens && //
m_SwitchCornerSize == sc.m_SwitchCornerSize && // m_Hotkeys == sc.m_Hotkeys; //
m_SwitchCorners == sc.m_SwitchCorners && //
m_Hotkeys == sc.m_Hotkeys; //
} }
void ServerConfig::save(QFile &file) const void ServerConfig::save(QFile &file) const
@ -66,14 +64,9 @@ void ServerConfig::save(QFile &file) const
void ServerConfig::setupScreens() void ServerConfig::setupScreens()
{ {
switchCorners().clear();
screens().clear(); screens().clear();
hotkeys().clear(); hotkeys().clear();
// m_NumSwitchCorners is used as a fixed size array. See Screen::init()
for (int i = 0; i < static_cast<int>(NumSwitchCorners); i++)
switchCorners() << false;
// There must always be screen objects for each cell in the screens QList. // There must always be screen objects for each cell in the screens QList.
// Unused screens are identified by having an empty name. // Unused screens are identified by having an empty name.
for (int i = 0; i < m_columns * m_rows; i++) for (int i = 0; i < m_columns * m_rows; i++)
@ -87,9 +80,6 @@ void ServerConfig::commit()
settings().beginGroup("internalConfig"); settings().beginGroup("internalConfig");
settings().remove(""); settings().remove("");
settings().setValue("switchCornerSize", switchCornerSize());
writeSettings(settings(), switchCorners(), "switchCorner");
settings().beginWriteArray("screens"); settings().beginWriteArray("screens");
for (int i = 0; i < screens().size(); i++) { for (int i = 0; i < screens().size(); i++) {
settings().setArrayIndex(i); settings().setArrayIndex(i);
@ -125,9 +115,6 @@ void ServerConfig::recall()
// ourselves // ourselves
setupScreens(); setupScreens();
setSwitchCornerSize(settings().value("switchCornerSize").toInt());
readSettings(settings(), switchCorners(), "switchCorner", false, static_cast<int>(NumSwitchCorners));
int numScreens = settings().beginReadArray("screens"); int numScreens = settings().beginReadArray("screens");
Q_ASSERT(numScreens <= screens().size()); Q_ASSERT(numScreens <= screens().size());
for (int i = 0; i < numScreens; i++) { for (int i = 0; i < numScreens; i++) {
@ -206,15 +193,6 @@ QTextStream &operator<<(QTextStream &outStream, const ServerConfig &config)
outStream << "end" << Qt::endl << Qt::endl; outStream << "end" << Qt::endl << Qt::endl;
outStream << "section: options" << Qt::endl; outStream << "section: options" << Qt::endl;
outStream << "\t"
<< "switchCorners = none ";
for (int i = 0; i < config.switchCorners().size(); i++)
if (config.switchCorners()[i])
outStream << "+" << ServerConfig::switchCornerName(i) << " ";
outStream << Qt::endl;
outStream << "\t"
<< "switchCornerSize = " << config.switchCornerSize() << Qt::endl;
for (const Hotkey &hotkey : config.hotkeys()) for (const Hotkey &hotkey : config.hotkeys())
outStream << hotkey; outStream << hotkey;

View file

@ -40,18 +40,6 @@ public:
// //
// New methods // New methods
// //
bool switchCorner(int c) const
{
return m_SwitchCorners[c];
}
int switchCornerSize() const
{
return m_SwitchCornerSize;
}
const QList<bool> &switchCorners() const
{
return m_SwitchCorners;
}
const HotkeyList &hotkeys() const const HotkeyList &hotkeys() const
{ {
return m_Hotkeys; return m_Hotkeys;
@ -85,20 +73,8 @@ private:
{ {
m_Screens.append(screen); m_Screens.append(screen);
} }
void setSwitchCorner(int c, bool on)
{
m_SwitchCorners[c] = on;
}
void setSwitchCornerSize(int val)
{
m_SwitchCornerSize = val;
}
void setConfigFile(const QString &configFile) const; void setConfigFile(const QString &configFile) const;
void setUseExternalConfig(bool useExternalConfig) const; void setUseExternalConfig(bool useExternalConfig) const;
QList<bool> &switchCorners()
{
return m_SwitchCorners;
}
HotkeyList &hotkeys() HotkeyList &hotkeys()
{ {
return m_Hotkeys; return m_Hotkeys;
@ -108,8 +84,6 @@ private:
bool fixNoServer(const QString &name, int &index); bool fixNoServer(const QString &name, int &index);
private: private:
int m_SwitchCornerSize = 0;
QList<bool> m_SwitchCorners;
HotkeyList m_Hotkeys; HotkeyList m_Hotkeys;
ScreenList m_Screens; ScreenList m_Screens;

View file

@ -270,36 +270,6 @@ void ServerConfigDialog::toggleProtocol()
onChange(); onChange();
} }
void ServerConfigDialog::setSwitchCornerSize(int size)
{
serverConfig().setSwitchCornerSize(size);
onChange();
}
void ServerConfigDialog::toggleCornerBottomLeft(bool enable)
{
serverConfig().setSwitchCorner(static_cast<int>(BottomLeft), enable);
onChange();
}
void ServerConfigDialog::toggleCornerTopLeft(bool enable)
{
serverConfig().setSwitchCorner(static_cast<int>(TopLeft), enable);
onChange();
}
void ServerConfigDialog::toggleCornerBottomRight(bool enable)
{
serverConfig().setSwitchCorner(static_cast<int>(BottomRight), enable);
onChange();
}
void ServerConfigDialog::toggleCornerTopRight(bool enable)
{
serverConfig().setSwitchCorner(static_cast<int>(TopRight), enable);
onChange();
}
void ServerConfigDialog::listActionsSelectionChanged(const QItemSelection &selected, const QItemSelection &) void ServerConfigDialog::listActionsSelectionChanged(const QItemSelection &selected, const QItemSelection &)
{ {
bool enabled = !selected.isEmpty(); bool enabled = !selected.isEmpty();
@ -377,7 +347,6 @@ void ServerConfigDialog::toggleExternalConfig(bool checked)
ui->widgetExternalConfigControls->setEnabled(checked); ui->widgetExternalConfigControls->setEnabled(checked);
ui->tabWidget->setTabEnabled(0, !checked); ui->tabWidget->setTabEnabled(0, !checked);
ui->tabWidget->setTabEnabled(1, !checked); ui->tabWidget->setTabEnabled(1, !checked);
ui->groupCorners->setEnabled(!checked);
serverConfig().setUseExternalConfig(checked); serverConfig().setUseExternalConfig(checked);
onChange(); onChange();
} }
@ -441,12 +410,6 @@ void ServerConfigDialog::loadFromConfig()
ui->widgetExternalConfigControls->setEnabled(ui->groupExternalConfig->isChecked()); ui->widgetExternalConfigControls->setEnabled(ui->groupExternalConfig->isChecked());
toggleExternalConfig(ui->groupExternalConfig->isChecked()); toggleExternalConfig(ui->groupExternalConfig->isChecked());
ui->cbCornerTopLeft->setChecked(serverConfig().switchCorner(static_cast<int>(TopLeft)));
ui->cbCornerTopRight->setChecked(serverConfig().switchCorner(static_cast<int>(TopRight)));
ui->cbCornerBottomLeft->setChecked(serverConfig().switchCorner(static_cast<int>(BottomLeft)));
ui->cbCornerBottomRight->setChecked(serverConfig().switchCorner(static_cast<int>(BottomRight)));
ui->sbSwitchCornerSize->setValue(serverConfig().switchCornerSize());
m_defaultLockToComputerState = Settings::value(Settings::Server::DefaultLockToComputerState).toBool(); m_defaultLockToComputerState = Settings::value(Settings::Server::DefaultLockToComputerState).toBool();
ui->cbDefaultLockToComputerState->setChecked(m_defaultLockToComputerState); ui->cbDefaultLockToComputerState->setChecked(m_defaultLockToComputerState);
@ -518,18 +481,11 @@ void ServerConfigDialog::initConnections() const
connect(ui->cbEnableClipboard, &QCheckBox::toggled, this, &ServerConfigDialog::toggleClipboard); connect(ui->cbEnableClipboard, &QCheckBox::toggled, this, &ServerConfigDialog::toggleClipboard);
connect(ui->btnBrowseConfigFile, &QPushButton::clicked, this, &ServerConfigDialog::browseConfigFile); connect(ui->btnBrowseConfigFile, &QPushButton::clicked, this, &ServerConfigDialog::browseConfigFile);
connect(ui->groupExternalConfig, &QGroupBox::toggled, this, &ServerConfigDialog::toggleExternalConfig); connect(ui->groupExternalConfig, &QGroupBox::toggled, this, &ServerConfigDialog::toggleExternalConfig);
connect(
ui->sbSwitchCornerSize, QOverload<int>::of(&QSpinBox::valueChanged), this,
&ServerConfigDialog::setSwitchCornerSize
);
connect( connect(
ui->sbClipboardSizeLimit, QOverload<int>::of(&QSpinBox::valueChanged), this, ui->sbClipboardSizeLimit, QOverload<int>::of(&QSpinBox::valueChanged), this,
&ServerConfigDialog::setClipboardLimit &ServerConfigDialog::setClipboardLimit
); );
connect(ui->cbCornerTopLeft, &QCheckBox::toggled, this, &ServerConfigDialog::toggleCornerTopLeft);
connect(ui->cbCornerTopRight, &QCheckBox::toggled, this, &ServerConfigDialog::toggleCornerTopRight);
connect(ui->cbCornerBottomLeft, &QCheckBox::toggled, this, &ServerConfigDialog::toggleCornerBottomLeft);
connect(ui->cbCornerBottomRight, &QCheckBox::toggled, this, &ServerConfigDialog::toggleCornerBottomRight);
connect( connect(
ui->cbDefaultLockToComputerState, &QCheckBox::toggled, this, &ServerConfigDialog::toggleDefaultLockToComputerState ui->cbDefaultLockToComputerState, &QCheckBox::toggled, this, &ServerConfigDialog::toggleDefaultLockToComputerState
); );

View file

@ -73,12 +73,6 @@ protected:
void toggleRelativeMouseMoves(bool enabled); void toggleRelativeMouseMoves(bool enabled);
void toggleProtocol(); void toggleProtocol();
void setSwitchCornerSize(int size);
void toggleCornerBottomLeft(bool enable);
void toggleCornerTopLeft(bool enable);
void toggleCornerBottomRight(bool enable);
void toggleCornerTopRight(bool enable);
void toggleExternalConfig(bool enable = false); void toggleExternalConfig(bool enable = false);
bool browseConfigFile(); bool browseConfigFile();

View file

@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>814</width> <width>724</width>
<height>588</height> <height>586</height>
</rect> </rect>
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
@ -307,116 +307,20 @@
<attribute name="title"> <attribute name="title">
<string>Advanced</string> <string>Advanced</string>
</attribute> </attribute>
<layout class="QGridLayout" name="m_pGridCorners"> <layout class="QVBoxLayout" name="verticalLayout_2">
<item row="0" column="1"> <property name="leftMargin">
<widget class="QGroupBox" name="groupCorners"> <number>15</number>
<property name="font"> </property>
<font> <property name="topMargin">
<kerning>true</kerning> <number>15</number>
</font> </property>
</property> <property name="rightMargin">
<property name="title"> <number>15</number>
<string>&amp;Dead corners (for this computer)</string> </property>
</property> <property name="bottomMargin">
<property name="checked"> <number>15</number>
<bool>false</bool> </property>
</property> <item>
<layout class="QVBoxLayout" name="verticalLayout_6">
<property name="topMargin">
<number>6</number>
</property>
<item>
<layout class="QGridLayout" name="m_pLayoutCorners">
<item row="1" column="0">
<widget class="QCheckBox" name="cbCornerBottomLeft">
<property name="text">
<string>&amp;Bottom-left</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="cbCornerTopLeft">
<property name="text">
<string>To&amp;p-left</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QCheckBox" name="cbCornerBottomRight">
<property name="text">
<string>Bottom-ri&amp;ght</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QCheckBox" name="cbCornerTopRight">
<property name="text">
<string>Top-rig&amp;ht</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="m_pLayoutCornerSize">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Cor&amp;ner size</string>
</property>
<property name="buddy">
<cstring>sbSwitchCornerSize</cstring>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_7">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSpinBox" name="sbSwitchCornerSize">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix">
<string>px</string>
</property>
<property name="maximum">
<number>30000</number>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer_7">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item row="0" column="0">
<widget class="QGroupBox" name="groupMisc"> <widget class="QGroupBox" name="groupMisc">
<property name="font"> <property name="font">
<font> <font>
@ -427,6 +331,18 @@
<string>&amp;Misc</string> <string>&amp;Misc</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_4"> <layout class="QVBoxLayout" name="verticalLayout_4">
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<item> <item>
<widget class="QCheckBox" name="cbDisableLockToComputer"> <widget class="QCheckBox" name="cbDisableLockToComputer">
<property name="text"> <property name="text">
@ -521,30 +437,216 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Policy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>50</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout> </layout>
</item> </item>
<item>
<spacer name="verticalSpacer_6">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
<item row="1" column="0"> <item>
<widget class="QGroupBox" name="groupSwitch">
<property name="font">
<font>
<kerning>true</kerning>
</font>
</property>
<property name="title">
<string>&amp;Switching</string>
</property>
<layout class="QVBoxLayout">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<item>
<layout class="QHBoxLayout" name="_5">
<item>
<widget class="QCheckBox" name="cbSwitchDelay">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>Switch &amp;after waiting</string>
</property>
</widget>
</item>
<item>
<spacer name="spacerSwitchWait">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSpinBox" name="sbSwitchDelay">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix">
<string>ms</string>
</property>
<property name="minimum">
<number>10</number>
</property>
<property name="maximum">
<number>10000</number>
</property>
<property name="singleStep">
<number>10</number>
</property>
<property name="value">
<number>250</number>
</property>
</widget>
</item>
<item>
<spacer name="spacerSwitchWait_2">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Policy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>50</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="_6">
<item>
<widget class="QCheckBox" name="cbSwitchDoubleTap">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>Switch on double &amp;tap within</string>
</property>
</widget>
</item>
<item>
<spacer name="spacerDoubleTap">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSpinBox" name="sbSwitchDoubleTap">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix">
<string>ms</string>
</property>
<property name="minimum">
<number>10</number>
</property>
<property name="maximum">
<number>10000</number>
</property>
<property name="singleStep">
<number>10</number>
</property>
<property name="value">
<number>250</number>
</property>
</widget>
</item>
<item>
<spacer name="spacerDoubleTap_2">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Policy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>50</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupNetwork"> <widget class="QGroupBox" name="groupNetwork">
<property name="title"> <property name="title">
<string>&amp;Network</string> <string>&amp;Network</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_5"> <layout class="QVBoxLayout" name="verticalLayout_5">
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<item> <item>
<widget class="QWidget" name="widgetHeartbeat" native="true"> <widget class="QWidget" name="widgetHeartbeat" native="true">
<layout class="QHBoxLayout" name="groupHeartbeat"> <layout class="QHBoxLayout" name="groupHeartbeat">
@ -608,6 +710,22 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<spacer name="spacerNetwork_2">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Policy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>50</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
@ -623,19 +741,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<spacer name="horizontalSpacer_8">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item> <item>
<widget class="QRadioButton" name="rbProtocolSynergy"> <widget class="QRadioButton" name="rbProtocolSynergy">
<property name="text"> <property name="text">
@ -655,181 +760,9 @@
</item> </item>
</layout> </layout>
</item> </item>
<item>
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
<item row="1" column="1">
<widget class="QGroupBox" name="groupSwitch">
<property name="font">
<font>
<kerning>true</kerning>
</font>
</property>
<property name="title">
<string>&amp;Switching</string>
</property>
<layout class="QVBoxLayout">
<property name="spacing">
<number>6</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<item>
<layout class="QHBoxLayout" name="_5">
<item>
<widget class="QCheckBox" name="cbSwitchDelay">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>Switch &amp;after waiting</string>
</property>
</widget>
</item>
<item>
<spacer name="spacerSwitchWait">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSpinBox" name="sbSwitchDelay">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix">
<string>ms</string>
</property>
<property name="minimum">
<number>10</number>
</property>
<property name="maximum">
<number>10000</number>
</property>
<property name="singleStep">
<number>10</number>
</property>
<property name="value">
<number>250</number>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="_6">
<item>
<widget class="QCheckBox" name="cbSwitchDoubleTap">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>Switch on double &amp;tap within</string>
</property>
</widget>
</item>
<item>
<spacer name="spacerDoubleTap">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSpinBox" name="sbSwitchDoubleTap">
<property name="enabled">
<bool>false</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="suffix">
<string>ms</string>
</property>
<property name="minimum">
<number>10</number>
</property>
<property name="maximum">
<number>10000</number>
</property>
<property name="singleStep">
<number>10</number>
</property>
<property name="value">
<number>250</number>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer_5">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item row="2" column="0">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="tabConfigFile"> <widget class="QWidget" name="tabConfigFile">
@ -1077,7 +1010,6 @@ Enabling this setting will disable the server config GUI.</string>
<tabstop>cbHeartbeat</tabstop> <tabstop>cbHeartbeat</tabstop>
<tabstop>sbHeartbeat</tabstop> <tabstop>sbHeartbeat</tabstop>
<tabstop>cbRelativeMouseMoves</tabstop> <tabstop>cbRelativeMouseMoves</tabstop>
<tabstop>sbSwitchCornerSize</tabstop>
<tabstop>tabWidget</tabstop> <tabstop>tabWidget</tabstop>
</tabstops> </tabstops>
<resources/> <resources/>

View file

@ -665,10 +665,6 @@ void Config::readSectionOptions(ConfigReadContext &s)
} catch (SocketAddressException &e) { } catch (SocketAddressException &e) {
throw ServerConfigReadException(s, std::string("invalid address argument ") + e.what()); throw ServerConfigReadException(s, std::string("invalid address argument ") + e.what());
} }
} else if (name == "switchCorners") {
addOption("", kOptionScreenSwitchCorners, s.parseCorners(value));
} else if (name == "switchCornerSize") {
addOption("", kOptionScreenSwitchCornerSize, s.parseInt(value));
} else if (name == "switchNeedsShift") { } else if (name == "switchNeedsShift") {
addOption("", kOptionScreenSwitchNeedsShift, s.parseBoolean(value)); addOption("", kOptionScreenSwitchNeedsShift, s.parseBoolean(value));
} else if (name == "switchNeedsControl") { } else if (name == "switchNeedsControl") {

View file

@ -478,6 +478,8 @@ private:
inline static const QStringList m_oldNames = { inline static const QStringList m_oldNames = {
QStringLiteral("clipboardSharing"), QStringLiteral("clipboardSharing"),
QStringLiteral("clipboardSharingSize"), QStringLiteral("clipboardSharingSize"),
QStringLiteral("switchCornerSize"),
QStringLiteral("switchCorners"),
QStringLiteral("protocol"), QStringLiteral("protocol"),
QStringLiteral("heartbeat"), QStringLiteral("heartbeat"),
QStringLiteral("switchDelay"), QStringLiteral("switchDelay"),

View file

@ -825,7 +825,6 @@ bool Server::isSwitchOkay(
if (i != options->end()) { if (i != options->end()) {
size = i->second; size = i->second;
} }
// see if we're in a locked corner // see if we're in a locked corner
if ((getCorner(m_active, xActive, yActive, size) & corners) != 0) { if ((getCorner(m_active, xActive, yActive, size) & corners) != 0) {
// yep, no switching // yep, no switching

View file

@ -992,34 +992,6 @@ Además, verifique que puede %1 el archivo de configuración del servidor: %2</t
<source>Advanced</source> <source>Advanced</source>
<translation type="unfinished">Avanzado</translation> <translation type="unfinished">Avanzado</translation>
</message> </message>
<message>
<source>&amp;Dead corners (for this computer)</source>
<translation type="unfinished">Esquinas &amp;muertas (para esta computadora)</translation>
</message>
<message>
<source>&amp;Bottom-left</source>
<translation type="unfinished">A&amp;bajo a la izquierda</translation>
</message>
<message>
<source>To&amp;p-left</source>
<translation type="unfinished">Arriba y abajo a la iz&amp;quierda</translation>
</message>
<message>
<source>Bottom-ri&amp;ght</source>
<translation type="unfinished">Aba&amp;jo a la derecha</translation>
</message>
<message>
<source>Top-rig&amp;ht</source>
<translation type="unfinished">Derecha superio&amp;r</translation>
</message>
<message>
<source>Cor&amp;ner size</source>
<translation type="unfinished">Tamaño de la esqui&amp;na</translation>
</message>
<message>
<source>px</source>
<translation type="unfinished">px</translation>
</message>
<message> <message>
<source>&amp;Misc</source> <source>&amp;Misc</source>
<translation type="unfinished">&amp;Misc</translation> <translation type="unfinished">&amp;Misc</translation>

View file

@ -992,34 +992,6 @@ Inoltre, verifica di poter %1 il file di configurazione del server: %2</translat
<source>Advanced</source> <source>Advanced</source>
<translation>Avanzate</translation> <translation>Avanzate</translation>
</message> </message>
<message>
<source>&amp;Dead corners (for this computer)</source>
<translation>&amp;Angoli morti (per questo computer)</translation>
</message>
<message>
<source>&amp;Bottom-left</source>
<translation>&amp;In basso a sinistra</translation>
</message>
<message>
<source>To&amp;p-left</source>
<translation>In a&amp;lto a sinistra</translation>
</message>
<message>
<source>Bottom-ri&amp;ght</source>
<translation>In basso a de&amp;stra</translation>
</message>
<message>
<source>Top-rig&amp;ht</source>
<translation>In alto a de&amp;stra</translation>
</message>
<message>
<source>Cor&amp;ner size</source>
<translation>Di&amp;mensioni angolo</translation>
</message>
<message>
<source>px</source>
<translation>px</translation>
</message>
<message> <message>
<source>&amp;Misc</source> <source>&amp;Misc</source>
<translation>&amp;Varie</translation> <translation>&amp;Varie</translation>

View file

@ -994,34 +994,6 @@ Additionally, check you are able to %1 the server config file: %2</source>
<source>Advanced</source> <source>Advanced</source>
<translation>詳細設定</translation> <translation>詳細設定</translation>
</message> </message>
<message>
<source>&amp;Dead corners (for this computer)</source>
<translation>無効領域(&amp;D) (このコンピューター)</translation>
</message>
<message>
<source>&amp;Bottom-left</source>
<translation>左下(&amp;B)</translation>
</message>
<message>
<source>To&amp;p-left</source>
<translation>左上(&amp;P)</translation>
</message>
<message>
<source>Bottom-ri&amp;ght</source>
<translation>右下(&amp;G)</translation>
</message>
<message>
<source>Top-rig&amp;ht</source>
<translation>右上(&amp;H)</translation>
</message>
<message>
<source>Cor&amp;ner size</source>
<translation>大きさ(&amp;N)</translation>
</message>
<message>
<source>px</source>
<translation>ピクセル</translation>
</message>
<message> <message>
<source>&amp;Misc</source> <source>&amp;Misc</source>
<translation>その他(&amp;M)</translation> <translation>その他(&amp;M)</translation>

View file

@ -992,34 +992,6 @@ Additionally, check you are able to %1 the server config file: %2</source>
<source>Advanced</source> <source>Advanced</source>
<translation>고급</translation> <translation>고급</translation>
</message> </message>
<message>
<source>&amp;Dead corners (for this computer)</source>
<translation>화면 걸림 방지(&amp;D) (이 컴퓨터)</translation>
</message>
<message>
<source>&amp;Bottom-left</source>
<translation>왼쪽 아래(&amp;B)</translation>
</message>
<message>
<source>To&amp;p-left</source>
<translation>왼쪽 위(&amp;P)</translation>
</message>
<message>
<source>Bottom-ri&amp;ght</source>
<translation>오른쪽 아래(&amp;G)</translation>
</message>
<message>
<source>Top-rig&amp;ht</source>
<translation>오른쪽 위(&amp;H)</translation>
</message>
<message>
<source>Cor&amp;ner size</source>
<translation>모서리 크기(&amp;N)</translation>
</message>
<message>
<source>px</source>
<translation>픽셀</translation>
</message>
<message> <message>
<source>&amp;Misc</source> <source>&amp;Misc</source>
<translation>기타(&amp;M)</translation> <translation>기타(&amp;M)</translation>

View file

@ -992,34 +992,6 @@ Additionally, check you are able to %1 the server config file: %2</source>
<source>Advanced</source> <source>Advanced</source>
<translation>Расширенные</translation> <translation>Расширенные</translation>
</message> </message>
<message>
<source>&amp;Dead corners (for this computer)</source>
<translation>&amp;Мертвые зоны (для этого компьютера)</translation>
</message>
<message>
<source>&amp;Bottom-left</source>
<translation>&amp;Снизу слева</translation>
</message>
<message>
<source>To&amp;p-left</source>
<translation>Свер&amp;ху слева</translation>
</message>
<message>
<source>Bottom-ri&amp;ght</source>
<translation>Снизу с&amp;права</translation>
</message>
<message>
<source>Top-rig&amp;ht</source>
<translation>Сверху спр&amp;ава</translation>
</message>
<message>
<source>Cor&amp;ner size</source>
<translation>Разме&amp;р угла</translation>
</message>
<message>
<source>px</source>
<translation>пикс</translation>
</message>
<message> <message>
<source>&amp;Misc</source> <source>&amp;Misc</source>
<translation>&amp;Разное</translation> <translation>&amp;Разное</translation>

View file

@ -994,34 +994,6 @@ Additionally, check you are able to %1 the server config file: %2</source>
<source>Advanced</source> <source>Advanced</source>
<translation>高级</translation> <translation>高级</translation>
</message> </message>
<message>
<source>&amp;Dead corners (for this computer)</source>
<translation>屏幕死角 (针对此计算机)(&amp;D)</translation>
</message>
<message>
<source>&amp;Bottom-left</source>
<translation>左下(&amp;B)</translation>
</message>
<message>
<source>To&amp;p-left</source>
<translation>左上(&amp;P)</translation>
</message>
<message>
<source>Bottom-ri&amp;ght</source>
<translation>右下(&amp;G)</translation>
</message>
<message>
<source>Top-rig&amp;ht</source>
<translation>右上(&amp;H)</translation>
</message>
<message>
<source>Cor&amp;ner size</source>
<translation>角落大小(&amp;N)</translation>
</message>
<message>
<source>px</source>
<translation>像素</translation>
</message>
<message> <message>
<source>&amp;Misc</source> <source>&amp;Misc</source>
<translation>杂项(&amp;M)</translation> <translation>杂项(&amp;M)</translation>