This repository has been archived by the owner. It is now read-only.
Permalink
...
Comparing changes
Open a pull request
7
contributors
Unified
Split
Showing
with
860 additions
and 906 deletions.
- +2 −2 CMakeLists.txt
- +19 −0 ChangeLog
- +1 −1 ext/toolchain/commands1.py
- +58 −37 src/gui/res/SetupWizardBase.ui
- BIN src/gui/res/mac/Synergy.icns
- +6 −1 src/gui/src/ActivationNotifier.cpp
- +2 −1 src/gui/src/AppConfig.h
- +1 −0 src/gui/src/CommandProcess.h
- +12 −3 src/gui/src/MainWindow.cpp
- +1 −0 src/gui/src/MainWindow.h
- +4 −1 src/gui/src/SettingsDialog.cpp
- +10 −11 src/gui/src/SetupWizard.cpp
- +18 −7 src/lib/base/Log.cpp
- +0 −2 src/lib/base/Log.h
- +28 −27 src/lib/client/Client.cpp
- +0 −2 src/lib/client/ServerProxy.cpp
- +2 −2 src/lib/platform/CMakeLists.txt
- +189 −0 src/lib/platform/IOSXKeyResource.cpp
- +36 −0 src/lib/platform/IOSXKeyResource.h
- +8 −560 src/lib/platform/OSXKeyState.cpp
- +3 −53 src/lib/platform/OSXKeyState.h
- +21 −89 src/lib/platform/OSXScreen.cpp
- +4 −14 src/lib/platform/OSXScreen.h
- +296 −0 src/lib/platform/OSXUchrKeyResource.cpp
- +55 −0 src/lib/platform/OSXUchrKeyResource.h
- +4 −1 src/lib/platform/XWindowsScreen.cpp
- +2 −0 src/lib/platform/XWindowsUtil.cpp
- +0 −2 src/lib/server/ClientProxy1_6.cpp
- +14 −7 src/lib/server/Server.cpp
- +2 −1 src/lib/synergy/App.h
- +8 −8 src/lib/synergy/FileChunk.cpp
- +1 −5 src/lib/synergy/ProtocolUtil.cpp
- +1 −1 src/lib/synergy/ServerApp.cpp
- +32 −9 src/lib/synergy/StreamChunker.cpp
- +3 −1 src/lib/synergy/StreamChunker.h
- +1 −1 src/lib/synergy/ToolApp.cpp
- +3 −0 src/lib/synergy/mouse_types.h
- +4 −55 src/lib/synwinhk/synwinhk.cpp
- +9 −2 src/setup/win32/Product.wxs
View
4
CMakeLists.txt
| @@ -17,8 +17,8 @@ | ||
| # Version number for Synergy | ||
| set(VERSION_MAJOR 1) | ||
| set(VERSION_MINOR 8) | ||
| -set(VERSION_REV 1) | ||
| -set(VERSION_STAGE beta) | ||
| +set(VERSION_REV 2) | ||
| +set(VERSION_STAGE stable) | ||
| set(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REV}") | ||
| cmake_minimum_required(VERSION 2.6) | ||
View
19
ChangeLog
| @@ -1,3 +1,22 @@ | ||
| +v1.8.2-stable | ||
| +============= | ||
| +Bug #3044 - Unable to drag-select in MS Office | ||
| +Bug #4768 - Copy paste causes 'server is dead' error on switching | ||
| +Bug #4792 - Server logging crashes when switching with clipboard data | ||
| +Bug #2975 - Middle click does not close Chrome tab on Mac client | ||
| +Bug #5087 - Linux client fails to start due to invalid cursor size | ||
| +Bug #5471 - Serial key textbox on activation screen overflows on Mac | ||
| +Bug #4836 - Stop button resets to Start when settings dialog canceled | ||
| +Enhancement #5277 - Auto restart service when synwinhk.dll fails on Windows | ||
| +Enhancement #4913 - Future-proof GUI login by using newer auth URL | ||
| +Enhancement #4922 - Add --enable-crypto argument to help text | ||
| +Enhancement #5299 - High resolution App icon on Mac | ||
| +Enhancement #4894 - Improve grammar in connection notification dialog | ||
| + | ||
| +v1.8.1-stable | ||
| +============= | ||
| +Bug #5461 - GUI crash during activation on Mac | ||
| + | ||
| v1.8.0-beta | ||
| ============= | ||
| Enhancement #4696 - Include 'ns' plugin in installers (instead of wizard download) | ||
View
2
ext/toolchain/commands1.py
| @@ -1957,7 +1957,7 @@ def dist(self): | ||
| type = None | ||
| if len(self.args) > 0: | ||
| type = self.args[0] | ||
| - | ||
| + | ||
| self.ic.dist(type, self.vcRedistDir, self.qtDir) | ||
| def distftp(self): | ||
View
95
src/gui/res/SetupWizardBase.ui
| @@ -125,10 +125,42 @@ | ||
| <string>Activate</string> | ||
| </property> | ||
| <layout class="QVBoxLayout" name="verticalLayout"> | ||
| + <item> | ||
| + <widget class="QLabel" name="label_9"> | ||
| + <property name="text"> | ||
| + <string>Enable your <a href="http://symless.com/pricing?source=gui">Synergy Pro</a> and Synergy Basic features.</string> | ||
| + </property> | ||
| + <property name="openExternalLinks"> | ||
| + <bool>true</bool> | ||
| + </property> | ||
| + </widget> | ||
| + </item> | ||
| + <item> | ||
| + <spacer name="verticalSpacer_4"> | ||
| + <property name="orientation"> | ||
| + <enum>Qt::Vertical</enum> | ||
| + </property> | ||
| + <property name="sizeType"> | ||
| + <enum>QSizePolicy::Fixed</enum> | ||
| + </property> | ||
| + <property name="sizeHint" stdset="0"> | ||
| + <size> | ||
| + <width>20</width> | ||
| + <height>10</height> | ||
| + </size> | ||
| + </property> | ||
| + </spacer> | ||
| + </item> | ||
| <item> | ||
| <widget class="QRadioButton" name="m_pRadioButtonActivate"> | ||
| + <property name="font"> | ||
| + <font> | ||
| + <weight>75</weight> | ||
| + <bold>true</bold> | ||
| + </font> | ||
| + </property> | ||
| <property name="text"> | ||
| - <string>Log in</string> | ||
| + <string>&Account login</string> | ||
| </property> | ||
| <property name="checked"> | ||
| <bool>true</bool> | ||
| @@ -164,7 +196,7 @@ | ||
| <property name="minimumSize"> | ||
| <size> | ||
| <width>200</width> | ||
| - <height>0</height> | ||
| + <height>20</height> | ||
| </size> | ||
| </property> | ||
| <property name="echoMode"> | ||
| @@ -190,7 +222,7 @@ | ||
| <property name="minimumSize"> | ||
| <size> | ||
| <width>200</width> | ||
| - <height>0</height> | ||
| + <height>20</height> | ||
| </size> | ||
| </property> | ||
| <property name="echoMode"> | ||
| @@ -201,7 +233,7 @@ | ||
| <item row="2" column="1"> | ||
| <widget class="QLabel" name="label_2"> | ||
| <property name="text"> | ||
| - <string><a href="https://synergy-project.org/account/reset/">Forgot password</a></string> | ||
| + <string><a href="https://synergy-project.org/account/reset/?source=gui">Forgot password</a></string> | ||
| </property> | ||
| <property name="openExternalLinks"> | ||
| <bool>true</bool> | ||
| @@ -228,43 +260,19 @@ | ||
| </item> | ||
| <item> | ||
| <widget class="QRadioButton" name="m_pRadioButtonSubscription"> | ||
| + <property name="font"> | ||
| + <font> | ||
| + <weight>75</weight> | ||
| + <bold>true</bold> | ||
| + </font> | ||
| + </property> | ||
| <property name="text"> | ||
| - <string>Subscription</string> | ||
| + <string>&Serial key</string> | ||
| </property> | ||
| </widget> | ||
| </item> | ||
| <item> | ||
| - <layout class="QFormLayout" name="formLayout_2"> | ||
| - <property name="horizontalSpacing"> | ||
| - <number>20</number> | ||
| - </property> | ||
| - <property name="verticalSpacing"> | ||
| - <number>10</number> | ||
| - </property> | ||
| - <item row="0" column="0"> | ||
| - <widget class="QLabel" name="label_6"> | ||
| - <property name="text"> | ||
| - <string>Serial Key:</string> | ||
| - </property> | ||
| - </widget> | ||
| - </item> | ||
| - <item row="0" column="1"> | ||
| - <widget class="QLineEdit" name="m_pLineEditSerialKey"> | ||
| - <property name="sizePolicy"> | ||
| - <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> | ||
| - <horstretch>0</horstretch> | ||
| - <verstretch>0</verstretch> | ||
| - </sizepolicy> | ||
| - </property> | ||
| - <property name="minimumSize"> | ||
| - <size> | ||
| - <width>400</width> | ||
| - <height>0</height> | ||
| - </size> | ||
| - </property> | ||
| - </widget> | ||
| - </item> | ||
| - </layout> | ||
| + <widget class="QTextEdit" name="m_pTextEditSerialKey"/> | ||
| </item> | ||
| <item> | ||
| <spacer name="verticalSpacer_5"> | ||
| @@ -285,7 +293,20 @@ | ||
| <item> | ||
| <widget class="QRadioButton" name="m_pRadioButtonSkip"> | ||
| <property name="text"> | ||
| - <string>&Skip activation</string> | ||
| + <string>S&kip activation</string> | ||
| + </property> | ||
| + </widget> | ||
| + </item> | ||
| + <item> | ||
| + <widget class="QLabel" name="label_8"> | ||
| + <property name="styleSheet"> | ||
| + <string notr="true">color: rgb(100, 100, 100);</string> | ||
| + </property> | ||
| + <property name="text"> | ||
| + <string>You will see UNREGISTERED in the window title (not recommended).</string> | ||
| + </property> | ||
| + <property name="wordWrap"> | ||
| + <bool>true</bool> | ||
| </property> | ||
| </widget> | ||
| </item> | ||
View
BIN
src/gui/res/mac/Synergy.icns
Binary file not shown.
View
7
src/gui/src/ActivationNotifier.cpp
| @@ -32,5 +32,10 @@ void ActivationNotifier::setIdentity(QString identity) | ||
| void ActivationNotifier::notify() | ||
| { | ||
| CoreInterface coreInterface; | ||
| - coreInterface.notifyActivation(m_Identity); | ||
| + try { | ||
| + coreInterface.notifyActivation(m_Identity); | ||
| + } | ||
| + catch (...) { | ||
| + // catch all exceptions and fails silently | ||
| + } | ||
| } | ||
View
3
src/gui/src/AppConfig.h
| @@ -34,8 +34,9 @@ | ||
| // 4: ssl plugin 'ns' v1.0 | ||
| // 5: ssl plugin 'ns' v1.1 | ||
| // 6: ssl plugin 'ns' v1.2 | ||
| +// 7: serial key activation | ||
| // | ||
| -const int kWizardVersion = 6; | ||
| +const int kWizardVersion = 7; | ||
| class QSettings; | ||
| class SettingsDialog; | ||
View
1
src/gui/src/CommandProcess.h
| @@ -18,6 +18,7 @@ | ||
| #ifndef COMMANDTHREAD_H | ||
| #define COMMANDTHREAD_H | ||
| +#include <QObject> | ||
| #include <QStringList> | ||
| class CommandProcess : public QObject | ||
View
15
src/gui/src/MainWindow.cpp
| @@ -415,8 +415,8 @@ void MainWindow::checkConnected(const QString& line) | ||
| if (!appConfig().startedBefore() && isVisible()) { | ||
| QMessageBox::information( | ||
| this, "Synergy", | ||
| - tr("Synergy is now connected, You can close the " | ||
| - "config window. Synergy will remain connected in " | ||
| + tr("Synergy is now connected. You can close the " | ||
| + "config window and Synergy will remain connected in " | ||
| "the background.")); | ||
| appConfig().setStartedBefore(true); | ||
| @@ -491,6 +491,15 @@ void MainWindow::restartSynergy() | ||
| startSynergy(); | ||
| } | ||
| +void MainWindow::proofreadInfo() | ||
| +{ | ||
| + setEdition(m_AppConfig.edition()); | ||
| + | ||
| + int oldState = m_SynergyState; | ||
| + m_SynergyState = synergyDisconnected; | ||
| + setSynergyState((qSynergyState)oldState); | ||
| +} | ||
| + | ||
| void MainWindow::clearLog() | ||
| { | ||
| m_pLogOutput->clear(); | ||
| @@ -958,7 +967,7 @@ void MainWindow::changeEvent(QEvent* event) | ||
| retranslateUi(this); | ||
| retranslateMenuBar(); | ||
| - setEdition(m_AppConfig.edition()); | ||
| + proofreadInfo(); | ||
| break; | ||
| } | ||
View
1
src/gui/src/MainWindow.h
| @@ -178,6 +178,7 @@ class MainWindow : public QMainWindow, public Ui::MainWindowBase | ||
| bool autoHide(); | ||
| QString getTimeStamp(); | ||
| void restartSynergy(); | ||
| + void proofreadInfo(); | ||
| private: | ||
| QSettings& m_Settings; | ||
View
5
src/gui/src/SettingsDialog.cpp
| @@ -89,7 +89,10 @@ void SettingsDialog::accept() | ||
| void SettingsDialog::reject() | ||
| { | ||
| - QSynergyApplication::getInstance()->switchTranslator(appConfig().language()); | ||
| + if (appConfig().language() != m_pComboLanguage->itemData(m_pComboLanguage->currentIndex()).toString()) { | ||
| + QSynergyApplication::getInstance()->switchTranslator(appConfig().language()); | ||
| + } | ||
| + | ||
| QDialog::reject(); | ||
| } | ||
View
21
src/gui/src/SetupWizard.cpp
| @@ -62,9 +62,9 @@ SetupWizard::SetupWizard(MainWindow& mainWindow, bool startMain) : | ||
| AppConfig& appConfig = m_MainWindow.appConfig(); | ||
| m_pLineEditEmail->setText(appConfig.activateEmail()); | ||
| - m_pLineEditSerialKey->setText(appConfig.serialKey()); | ||
| + m_pTextEditSerialKey->setText(appConfig.serialKey()); | ||
| - m_pLineEditSerialKey->setEnabled(false); | ||
| + m_pTextEditSerialKey->setEnabled(false); | ||
| } | ||
| @@ -120,15 +120,15 @@ bool SetupWizard::validateCurrentPage() | ||
| } | ||
| } | ||
| else if (m_pRadioButtonSubscription->isChecked()) { | ||
| - if (m_pLineEditSerialKey->text().isEmpty()) { | ||
| + if (m_pTextEditSerialKey->toPlainText().isEmpty()) { | ||
| message.setText(tr("Please enter your subscription serial key.")); | ||
| message.exec(); | ||
| return false; | ||
| } | ||
| else { | ||
| // create subscription file in profile directory | ||
| SubscriptionManager subscriptionManager(this, m_MainWindow.appConfig(), m_Edition); | ||
| - if (!subscriptionManager.activateSerial(m_pLineEditSerialKey->text())) { | ||
| + if (!subscriptionManager.activateSerial(m_pTextEditSerialKey->toPlainText())) { | ||
| return false; | ||
| } | ||
| @@ -206,9 +206,9 @@ void SetupWizard::accept() | ||
| if (m_pRadioButtonSubscription->isChecked()) | ||
| { | ||
| - appConfig.setSerialKey(m_pLineEditSerialKey->text()); | ||
| + appConfig.setSerialKey(m_pTextEditSerialKey->toPlainText()); | ||
| - notifyActivation("serial:" + m_pLineEditSerialKey->text()); | ||
| + notifyActivation("serial:" + m_pTextEditSerialKey->toPlainText()); | ||
| } | ||
| if (m_pRadioButtonSkip->isChecked()) | ||
| @@ -243,8 +243,7 @@ void SetupWizard::reject() | ||
| } | ||
| // treat cancel as skip | ||
| - CoreInterface coreInterface; | ||
| - coreInterface.notifyActivation("skip:unknown"); | ||
| + notifyActivation("skip:unknown"); | ||
| QWizard::reject(); | ||
| } | ||
| @@ -275,7 +274,7 @@ void SetupWizard::on_m_pRadioButtonSkip_toggled(bool checked) | ||
| if (checked) { | ||
| m_pLineEditEmail->setEnabled(false); | ||
| m_pLineEditPassword->setEnabled(false); | ||
| - m_pLineEditSerialKey->setEnabled(false); | ||
| + m_pTextEditSerialKey->setEnabled(false); | ||
| } | ||
| } | ||
| @@ -284,7 +283,7 @@ void SetupWizard::on_m_pRadioButtonActivate_toggled(bool checked) | ||
| if (checked) { | ||
| m_pLineEditEmail->setEnabled(true); | ||
| m_pLineEditPassword->setEnabled(true); | ||
| - m_pLineEditSerialKey->setEnabled(false); | ||
| + m_pTextEditSerialKey->setEnabled(false); | ||
| } | ||
| } | ||
| @@ -293,6 +292,6 @@ void SetupWizard::on_m_pRadioButtonSubscription_toggled(bool checked) | ||
| if (checked) { | ||
| m_pLineEditEmail->setEnabled(false); | ||
| m_pLineEditPassword->setEnabled(false); | ||
| - m_pLineEditSerialKey->setEnabled(true); | ||
| + m_pTextEditSerialKey->setEnabled(true); | ||
| } | ||
| } | ||
View
25
src/lib/base/Log.cpp
| @@ -172,22 +172,33 @@ Log::print(const char* file, int line, const char* fmt, ...) | ||
| // do not prefix time and file for kPRINT (CLOG_PRINT) | ||
| if (priority != kPRINT) { | ||
| - char message[kLogMessageLength]; | ||
| - | ||
| struct tm *tm; | ||
| - char tmp[220]; | ||
| + char timestamp[50]; | ||
| time_t t; | ||
| time(&t); | ||
| tm = localtime(&t); | ||
| - sprintf(tmp, "%04i-%02i-%02iT%02i:%02i:%02i", tm->tm_year + 1900, tm->tm_mon+1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec); | ||
| + sprintf(timestamp, "%04i-%02i-%02iT%02i:%02i:%02i", tm->tm_year + 1900, tm->tm_mon+1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec); | ||
| -#ifndef NDEBUG | ||
| - sprintf(message, "[%s] %s: %s\n\t%s,%d", tmp, g_priority[priority], buffer, file, line); | ||
| + // square brackets, spaces, comma and null terminator take about 10 | ||
| + int size = 10; | ||
| + size += strlen(timestamp); | ||
| + size += strlen(g_priority[priority]); | ||
| + size += strlen(buffer); | ||
| +#ifndef NDEBUG | ||
| + size += strlen(file); | ||
| + // assume there is no file contains over 100k lines of code | ||
| + size += 6; | ||
| +#endif | ||
| + char* message = new char[size]; | ||
| + | ||
| +#ifndef NDEBUG | ||
| + sprintf(message, "[%s] %s: %s\n\t%s,%d", timestamp, g_priority[priority], buffer, file, line); | ||
| #else | ||
| - sprintf(message, "[%s] %s: %s", tmp, g_priority[priority], buffer); | ||
| + sprintf(message, "[%s] %s: %s", timestamp, g_priority[priority], buffer); | ||
| #endif | ||
| output(priority, message); | ||
| + delete[] message; | ||
| } else { | ||
| output(priority, buffer); | ||
| } | ||
Oops, something went wrong.