diff options
author | Caolán McNamara <caolanm@redhat.com> | 2018-05-29 14:23:03 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2018-05-29 17:38:04 +0200 |
commit | 84be319c26ddae9a4022ffc1d01a3f4fa82e3a3e (patch) | |
tree | cffab3b20af2a18ff12dfc47b467346ae4cb8f91 /vcl | |
parent | 48cc955ec233b815449ffe0b340023cf2ab6abb6 (diff) |
remember button pressed to reuse for move
Change-Id: I4a7f5bb8e46e190f33150f666a653bfc04957a0f
Reviewed-on: https://gerrit.libreoffice.org/55010
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/unx/gtk3/gtk3gtkinst.cxx | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index 737bd4a3959c..e956f4a3c93b 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -3661,6 +3661,7 @@ private: ScopedVclPtrInstance<VirtualDevice> m_xDevice; std::vector<unsigned char> m_aBuffer; cairo_surface_t* m_pSurface; + sal_uInt16 m_nLastMouseButton; gulong m_nDrawSignalId; gulong m_nSizeAllocateSignalId; gulong m_nButtonPressSignalId; @@ -3790,17 +3791,16 @@ private: return false; } - sal_uInt16 nButton; switch (pEvent->button) { case 1: - nButton = MOUSE_LEFT; + m_nLastMouseButton = MOUSE_LEFT; break; case 2: - nButton = MOUSE_MIDDLE; + m_nLastMouseButton = MOUSE_MIDDLE; break; case 3: - nButton = MOUSE_RIGHT; + m_nLastMouseButton = MOUSE_RIGHT; break; default: return false; @@ -3808,8 +3808,8 @@ private: Point aPos(pEvent->x, pEvent->y); sal_uInt32 nModCode = GtkSalFrame::GetMouseModCode(pEvent->state); - sal_uInt16 nCode = nButton | (nModCode & (KEY_SHIFT | KEY_MOD1 | KEY_MOD2)); - MouseEvent aMEvt(aPos, nClicks, ImplGetMouseButtonMode(nButton, nModCode), nCode, nCode); + sal_uInt16 nCode = m_nLastMouseButton | (nModCode & (KEY_SHIFT | KEY_MOD1 | KEY_MOD2)); + MouseEvent aMEvt(aPos, nClicks, ImplGetMouseButtonMode(m_nLastMouseButton, nModCode), nCode, nCode); if (nEventType == SalEvent::MouseButtonDown) m_aMousePressHdl.Call(aMEvt); @@ -3828,7 +3828,7 @@ private: { Point aPos(pEvent->x, pEvent->y); sal_uInt32 nModCode = GtkSalFrame::GetMouseModCode(pEvent->state); - sal_uInt16 nCode = (nModCode & (KEY_SHIFT | KEY_MOD1 | KEY_MOD2)); + sal_uInt16 nCode = m_nLastMouseButton | (nModCode & (KEY_SHIFT | KEY_MOD1 | KEY_MOD2)); MouseEvent aMEvt(aPos, 0, ImplGetMouseMoveMode(nModCode), nCode, nCode); m_aMouseMotionHdl.Call(aMEvt); @@ -3868,6 +3868,7 @@ public: , m_pAccessible(nullptr) , m_xDevice(nullptr, Size(1, 1), DeviceFormat::DEFAULT) , m_pSurface(nullptr) + , m_nLastMouseButton(0) , m_nDrawSignalId(g_signal_connect(m_pDrawingArea, "draw", G_CALLBACK(signalDraw), this)) , m_nSizeAllocateSignalId(g_signal_connect(m_pDrawingArea, "size_allocate", G_CALLBACK(signalSizeAllocate), this)) , m_nButtonPressSignalId(g_signal_connect(m_pDrawingArea, "button-press-event", G_CALLBACK(signalButton), this)) |