From e145fef76f065524ef829a780836af1b94bd0244 Mon Sep 17 00:00:00 2001 From: jerry Date: Tue, 24 Sep 2013 10:33:29 +0000 Subject: [PATCH] moved fake esc and lmb between getDropFileURL and draggingInfoSending, otherwise it would make getDropFileURl return null or fail to fake lmb up on carbon hardware layer, then can not move mouse back from client --- src/lib/platform/COSXScreen.cpp | 20 +++++++------------- src/lib/server/CServer.cpp | 10 +++++----- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/lib/platform/COSXScreen.cpp b/src/lib/platform/COSXScreen.cpp index 5ee275fe..b35f36ab 100644 --- a/src/lib/platform/COSXScreen.cpp +++ b/src/lib/platform/COSXScreen.cpp @@ -920,19 +920,13 @@ COSXScreen::leave() CString fileList(dragInfoCStr); size_t size = fileList.size(); - // fake esc key down and up - fakeKeyDown(kKeyEscape, 8192, 1); - fakeKeyUp(1); - - fakeMouseButton(kButtonLeft, false); - - if (m_isPrimary) { - CServerApp& app = CServerApp::instance(); - CServer* server = app.getServerPtr(); - LOG((CLOG_DEBUG "send dragging file to client")); - server->sendFileToClient(dragInfoCStr); - } - else { + if (!m_isPrimary) { + // fake esc key down and up + fakeKeyDown(kKeyEscape, 8192, 1); + fakeKeyUp(1); + + fakeMouseButton(kButtonLeft, false); + // fake ctrl key up fakeKeyUp(29); CClientApp& app = CClientApp::instance(); diff --git a/src/lib/server/CServer.cpp b/src/lib/server/CServer.cpp index eb50e540..92c47e24 100644 --- a/src/lib/server/CServer.cpp +++ b/src/lib/server/CServer.cpp @@ -1741,11 +1741,6 @@ CServer::onMouseMovePrimary(SInt32 x, SInt32 y) // should we switch or not? if (isSwitchOkay(newScreen, dir, x, y, xc, yc)) { if (m_screen->getDraggingStarted() && m_active != newScreen) { - // fake a escape key down and up then left mouse button up - m_screen->keyDown(kKeyEscape, 8192, 1); - m_screen->keyUp(kKeyEscape, 8192, 1); - m_screen->mouseUp(kButtonLeft); - CString& dragFileList = m_screen->getDraggingFileDir(); size_t size = dragFileList.size() + 1; char* fileList = new char[size]; @@ -1753,6 +1748,11 @@ CServer::onMouseMovePrimary(SInt32 x, SInt32 y) fileList[size - 1] = '\0'; UInt32 fileCount = 1; + // fake a escape key down and up then left mouse button up + m_screen->keyDown(kKeyEscape, 8192, 1); + m_screen->keyUp(kKeyEscape, 8192, 1); + m_screen->mouseUp(kButtonLeft); + LOG((CLOG_DEBUG2 "sending drag information to client")); LOG((CLOG_DEBUG3 "dragging file list: %s", fileList)); LOG((CLOG_DEBUG3 "dragging file list string size: %i", size));