Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
cardonator committed Mar 6, 2017
2 parents 20d910e + ec56ac4 commit a8391c1
Show file tree
Hide file tree
Showing 15 changed files with 174 additions and 104 deletions.
7 changes: 1 addition & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
# Version number for Synergy
set(VERSION_MAJOR 1)
set(VERSION_MINOR 8)
set(VERSION_REV 7)
set(VERSION_REV 8)
set(VERSION_STAGE stable)
set(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REV}")

Expand Down Expand Up @@ -74,11 +74,6 @@ endif()

# Depending on the platform, pass in the required defines.
if (UNIX)

# warnings as errors:
# we have a problem with people checking in code with warnings.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wno-unused-local-typedef")

if (NOT APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
endif()
Expand Down
15 changes: 15 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
v1.8.8
==========
Bug #5196 - Some keys on Korean and Japanese keyboards have the same keycode
Bug #5578 - Pressing Hangul key results in alt+'a'
Bug #5785 - Can't switch screens when cursor is in a corner
Bug #3992 - macOS: Dragging is broken in Unity 3D
Bug #5075 - macOS: Build fails on macOS 10.9 due to unknown compiler flag
Bug #5809 - macOS: No version number is shown in the App Info dialog
Bug #3197 - Linux: switchDoubleTap option is not working
Bug #4477 - Linux: Mouse buttons higher than id 10 result in crash
Bug #5832 - Linux: Screen size misdetected on multi-monitor display
Enhancement #4504 - Improved Korean language description
Enhancement #5525 - Added support for precise screen positioning in config file
Enhancement #4290 - Windows: Removed annoying alt+print screen functionality

v1.8.7-stable
=============
Bug #5784 - Edition changes when reopening GUI
Expand Down
4 changes: 2 additions & 2 deletions src/gui/res/lang/Languages.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@
<language ietfCode="ar" name="العربية" />
<language ietfCode="pes-IR" name="فارسی" />
<language ietfCode="ur" name="اردو" />
<language ietfCode="mr" name="मराठी" />
<language ietfCode="mr" name="मराठी" />
<language ietfCode="si" name="Sඉන්හල" />
<language ietfCode="th-TH" name="ภาษาไทย" />
<language ietfCode="zh-CN" name="中文 (简体)" />
<language ietfCode="zh-TW" name="中文 (繁體)" />
<language ietfCode="ja-JP" name="日本語" />
<language ietfCode="ko" name="한국의" />
<language ietfCode="ko" name="한국어" />
</languages>
44 changes: 26 additions & 18 deletions src/gui/res/mac/Info.plist
Original file line number Diff line number Diff line change
@@ -1,20 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>CFBundleIconFile</key>
<string>Synergy.icns</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleExecutable</key>
<string>Synergy</string>
<key>CFBundleIdentifier</key>
<string>synergy</string>
</dict>
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleDisplayName</key>
<string>Synergy</string>
<key>CFBundleExecutable</key>
<string>Synergy</string>
<key>CFBundleIconFile</key>
<string>Synergy.icns</string>
<key>CFBundleIdentifier</key>
<string>synergy</string>
<!-- TODO: Fix this in v2.0 //-->
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Synergy</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.8.8</string>
<key>CFBundleVersion</key>
<string>1.8.8</string>
<key>NSHumanReadableCopyright</key>
<string>© 2012-2016, Symless Ltd</string>
</dict>
</plist>
4 changes: 2 additions & 2 deletions src/gui/src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,8 @@ int waitForTray()
if (++trayAttempts > TRAY_RETRY_COUNT)
{
QMessageBox::critical(NULL, "Synergy",
QObject::tr("System tray is unavailable, quitting."));
return false;
QObject::tr("System tray is unavailable, don't close your window."));
return true;
}

QThreadImpl::msleep(TRAY_RETRY_WAIT);
Expand Down
36 changes: 24 additions & 12 deletions src/lib/platform/MSWindowsKeyState.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,11 @@ const KeyID MSWindowsKeyState::s_virtualKey[] =
/* 0x012 */ { kKeyAlt_L }, // VK_MENU
/* 0x013 */ { kKeyPause }, // VK_PAUSE
/* 0x014 */ { kKeyCapsLock }, // VK_CAPITAL
/* 0x015 */ { kKeyHangulKana }, // VK_HANGUL, VK_KANA
/* 0x015 */ { kKeyKana }, // VK_HANGUL, VK_KANA
/* 0x016 */ { kKeyNone }, // undefined
/* 0x017 */ { kKeyNone }, // VK_JUNJA
/* 0x018 */ { kKeyNone }, // VK_FINAL
/* 0x019 */ { kKeyHanjaKanzi }, // VK_KANJI
/* 0x019 */ { kKeyKanzi }, // VK_HANJA, VK_KANJI
/* 0x01a */ { kKeyNone }, // undefined
/* 0x01b */ { kKeyEscape }, // VK_ESCAPE
/* 0x01c */ { kKeyHenkan }, // VK_CONVERT
Expand Down Expand Up @@ -318,11 +318,11 @@ const KeyID MSWindowsKeyState::s_virtualKey[] =
/* 0x112 */ { kKeyAlt_R }, // VK_MENU
/* 0x113 */ { kKeyNone }, // VK_PAUSE
/* 0x114 */ { kKeyNone }, // VK_CAPITAL
/* 0x115 */ { kKeyNone }, // VK_KANA
/* 0x116 */ { kKeyNone }, // VK_HANGUL
/* 0x115 */ { kKeyHangul }, // VK_HANGUL
/* 0x116 */ { kKeyNone }, // undefined
/* 0x117 */ { kKeyNone }, // VK_JUNJA
/* 0x118 */ { kKeyNone }, // VK_FINAL
/* 0x119 */ { kKeyNone }, // VK_KANJI
/* 0x119 */ { kKeyHanja }, // VK_HANJA
/* 0x11a */ { kKeyNone }, // undefined
/* 0x11b */ { kKeyNone }, // VK_ESCAPE
/* 0x11c */ { kKeyNone }, // VK_CONVERT
Expand Down Expand Up @@ -728,6 +728,10 @@ MSWindowsKeyState::mapKeyFromEvent(WPARAM charAndVirtKey,
// that so we clear it.
active &= ~s_controlAlt;
}
if (id == kKeyHangul) {
// If shift-space is used to change input mode, clear shift modifier.
active &= ~KeyModifierShift;
}
*maskOut = active;
}

Expand Down Expand Up @@ -1071,13 +1075,8 @@ MSWindowsKeyState::getKeyMap(synergy::KeyMap& keyMap)
}
}

// add alt+printscreen
if (m_buttonToVK[0x54u] == 0) {
m_buttonToVK[0x54u] = VK_SNAPSHOT;
}

// set virtual key to button table
if (GetKeyboardLayout(0) == m_groups[g]) {
if (activeLayout == m_groups[g]) {
for (KeyButton i = 0; i < 512; ++i) {
if (m_buttonToVK[i] != 0) {
if (m_virtualKeyToButton[m_buttonToVK[i]] == 0) {
Expand Down Expand Up @@ -1339,8 +1338,20 @@ MSWindowsKeyState::setWindowGroup(SInt32 group)
}

KeyID
MSWindowsKeyState::getKeyID(UINT virtualKey, KeyButton button)
MSWindowsKeyState::getKeyID(UINT virtualKey, KeyButton button) const
{
// Some virtual keycodes have same values.
// VK_HANGUL == VK_KANA, VK_HANJA == NK_KANJI
// which are used to change the input mode of IME.
// But they have different X11 keysym. So we should distinguish them.
if ((LOWORD(m_keyLayout) & 0xffffu) == 0x0412u) { // 0x0412 : Korean Locale ID
if (virtualKey == VK_HANGUL || virtualKey == VK_HANJA) {
// If shift-space is used to change the input mode,
// the extented bit is not set. So add it to get right key id.
button |= 0x100u;
}
}

if ((button & 0x100u) != 0) {
virtualKey += 0x100u;
}
Expand Down Expand Up @@ -1392,3 +1403,4 @@ MSWindowsKeyState::addKeyEntry(synergy::KeyMap& keyMap, synergy::KeyMap::KeyItem
m_keyToVKMap[item.m_id] = static_cast<UINT>(item.m_client);
}
}

2 changes: 1 addition & 1 deletion src/lib/platform/MSWindowsKeyState.h
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ class MSWindowsKeyState : public KeyState {
(button should include the extended key bit), or kKeyNone if there is
no such key.
*/
static KeyID getKeyID(UINT virtualKey, KeyButton button);
KeyID getKeyID(UINT virtualKey, KeyButton button) const;

//! Map button to virtual key
/*!
Expand Down
18 changes: 17 additions & 1 deletion src/lib/platform/OSXScreen.mm
Original file line number Diff line number Diff line change
Expand Up @@ -496,7 +496,23 @@
// Fix for sticky keys
CGEventFlags modifiers = m_keyState->getModifierStateAsOSXFlags();
CGEventSetFlags(event, modifiers);


// Set movement deltas to fix issues with certain 3D programs
SInt64 deltaX = pos.x;
deltaX -= m_xCursor;

SInt64 deltaY = pos.y;
deltaY -= m_yCursor;

CGEventSetIntegerValueField(event, kCGMouseEventDeltaX, deltaX);
CGEventSetIntegerValueField(event, kCGMouseEventDeltaY, deltaY);

double deltaFX = deltaX;
double deltaFY = deltaY;

CGEventSetDoubleValueField(event, kCGMouseEventDeltaX, deltaFX);
CGEventSetDoubleValueField(event, kCGMouseEventDeltaY, deltaFY);

CGEventPost(kCGHIDEventTap, event);

CFRelease(event);
Expand Down
29 changes: 5 additions & 24 deletions src/lib/platform/XWindowsScreen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -160,15 +160,12 @@ XWindowsScreen::XWindowsScreen(

// primary/secondary screen only initialization
if (m_isPrimary) {
// start watching for events on other windows
selectEvents(m_root);
#ifdef HAVE_XI2
m_xi2detected = detectXI2();

if (m_xi2detected) {
#ifdef HAVE_XI2
selectXIRawMotion();
#endif
} else
#endif
{
// start watching for events on other windows
selectEvents(m_root);
Expand Down Expand Up @@ -745,7 +742,7 @@ XWindowsScreen::registerHotKey(KeyID key, KeyModifierMask mask)
LOG((CLOG_WARN "failed to register hotkey %s (id=%04x mask=%04x)", synergy::KeyMap::formatKey(key, mask).c_str(), key, mask));
return 0;
}

LOG((CLOG_DEBUG "registered hotkey %s (id=%04x mask=%04x) as id=%d", synergy::KeyMap::formatKey(key, mask).c_str(), key, mask, id));
return id;
}
Expand Down Expand Up @@ -827,7 +824,7 @@ void
XWindowsScreen::fakeMouseButton(ButtonID button, bool press)
{
const unsigned int xButton = mapButtonToX(button);
if (xButton != 0) {
if (xButton > 0 && xButton < 11) {
XTestFakeButtonEvent(m_display, xButton,
press ? True : False, CurrentTime);
XFlush(m_display);
Expand Down Expand Up @@ -977,22 +974,6 @@ XWindowsScreen::saveShape()
m_w = WidthOfScreen(DefaultScreenOfDisplay(m_display));
m_h = HeightOfScreen(DefaultScreenOfDisplay(m_display));

#if HAVE_X11_EXTENSIONS_XRANDR_H
if (m_xrandr){
int numSizes;
XRRScreenSize* xrrs;
Rotation rotation;
xrrs = XRRSizes(m_display, DefaultScreen(m_display), &numSizes);
XRRRotations(m_display, DefaultScreen(m_display), &rotation);
if (xrrs != NULL) {
if (rotation & (RR_Rotate_90|RR_Rotate_270) ){
m_w = xrrs->height;
m_h = xrrs->width;
}
}
}
#endif

// get center of default screen
m_xCenter = m_x + (m_w >> 1);
m_yCenter = m_y + (m_h >> 1);
Expand Down Expand Up @@ -1300,7 +1281,7 @@ XWindowsScreen::handleSystemEvent(const Event& event, void*)
// handle the event ourself
switch (xevent->type) {
case CreateNotify:
if (m_isPrimary) {
if (m_isPrimary && !m_xi2detected) {
// select events on new window
selectEvents(xevent->xcreatewindow.window);
}
Expand Down
4 changes: 2 additions & 2 deletions src/lib/server/Config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2096,11 +2096,11 @@ ConfigReadContext::parseInterval(const ArgList& args) const
}

char* end;
long startValue = strtol(args[0].c_str(), &end, 10);
double startValue = strtod(args[0].c_str(), &end);
if (end[0] != '\0') {
throw XConfigRead(*this, "invalid interval \"%{1}\"", concatArgs(args));
}
long endValue = strtol(args[1].c_str(), &end, 10);
double endValue = strtod(args[1].c_str(), &end);
if (end[0] != '\0') {
throw XConfigRead(*this, "invalid interval \"%{1}\"", concatArgs(args));
}
Expand Down
Loading

0 comments on commit a8391c1

Please sign in to comment.