From 83667d4d39f6df8f0f1a501bf78d7b9a97d9d89e Mon Sep 17 00:00:00 2001 From: Garth Corral Date: Thu, 30 Oct 2014 09:39:02 -0700 Subject: [PATCH] - Add wxWidgets patch to support Cocoa's NSEventTypeMagnify from the Magic Trackpad. This was originally submitted by Jared Boone in http://trac.wxwidgets.org/ticket/14322 and has been updaetd to apply cleanly to wxWidgets-3.0 (and less cleanly to 3.0.1 an 3.0.2). The ticket is marked as accepted but not scheduled, so no idea if it will ever make it in. --- ...wxwidgets-3.0.0_macosx_magnify_event.patch | 115 ++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 patches/wxwidgets-3.0.0_macosx_magnify_event.patch diff --git a/patches/wxwidgets-3.0.0_macosx_magnify_event.patch b/patches/wxwidgets-3.0.0_macosx_magnify_event.patch new file mode 100644 index 0000000000..563c2d7033 --- /dev/null +++ b/patches/wxwidgets-3.0.0_macosx_magnify_event.patch @@ -0,0 +1,115 @@ +Index: include/wx/event.h +=================================================================== +--- include/wx/event.h (revision 78078) ++++ include/wx/event.h (working copy) +@@ -716,6 +716,7 @@ + wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_CORE, wxEVT_AUX2_DOWN, wxMouseEvent); + wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_CORE, wxEVT_AUX2_UP, wxMouseEvent); + wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_CORE, wxEVT_AUX2_DCLICK, wxMouseEvent); ++wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_CORE, wxEVT_MAGNIFY, wxMouseEvent); + + // Character input event type + wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_CORE, wxEVT_CHAR, wxKeyEvent); +@@ -1751,6 +1752,8 @@ + bool Aux1DClick() const { return (m_eventType == wxEVT_AUX1_DCLICK); } + bool Aux2DClick() const { return (m_eventType == wxEVT_AUX2_DCLICK); } + ++ bool Magnify() const { return (m_eventType == wxEVT_MAGNIFY); } ++ + // True if a button is down and the mouse is moving + bool Dragging() const + { +@@ -1805,6 +1808,8 @@ + // Is the system set to do page scrolling? + bool IsPageScroll() const { return ((unsigned int)m_linesPerAction == UINT_MAX); } + ++ float GetMagnification() const { return m_magnification; } ++ + virtual wxEvent *Clone() const { return new wxMouseEvent(*this); } + virtual wxEventCategory GetEventCategory() const { return wxEVT_CATEGORY_USER_INPUT; } + +@@ -1824,6 +1829,8 @@ + int m_linesPerAction; + int m_columnsPerAction; + ++ float m_magnification; ++ + protected: + void Assign(const wxMouseEvent& evt); + +@@ -4218,6 +4225,7 @@ + #define EVT_MOUSE_AUX2_DOWN(func) wx__DECLARE_EVT0(wxEVT_AUX2_DOWN, wxMouseEventHandler(func)) + #define EVT_MOUSE_AUX2_UP(func) wx__DECLARE_EVT0(wxEVT_AUX2_UP, wxMouseEventHandler(func)) + #define EVT_MOUSE_AUX2_DCLICK(func) wx__DECLARE_EVT0(wxEVT_AUX2_DCLICK, wxMouseEventHandler(func)) ++#define EVT_MAGNIFY(func) wx__DECLARE_EVT0(wxEVT_MAGNIFY, wxMouseEventHandler(func)) + + // All mouse events + #define EVT_MOUSE_EVENTS(func) \ +@@ -4239,7 +4247,8 @@ + EVT_MOTION(func) \ + EVT_LEAVE_WINDOW(func) \ + EVT_ENTER_WINDOW(func) \ +- EVT_MOUSEWHEEL(func) ++ EVT_MOUSEWHEEL(func) \ ++ EVT_MAGNIFY(func) + + // Scrolling from wxWindow (sent to wxScrolledWindow) + #define EVT_SCROLLWIN_TOP(func) wx__DECLARE_EVT0(wxEVT_SCROLLWIN_TOP, wxScrollWinEventHandler(func)) +Index: src/common/event.cpp +=================================================================== +--- src/common/event.cpp (revision 78078) ++++ src/common/event.cpp (working copy) +@@ -207,6 +207,7 @@ + wxDEFINE_EVENT( wxEVT_AUX2_DOWN, wxMouseEvent ); + wxDEFINE_EVENT( wxEVT_AUX2_UP, wxMouseEvent ); + wxDEFINE_EVENT( wxEVT_AUX2_DCLICK, wxMouseEvent ); ++wxDEFINE_EVENT( wxEVT_MAGNIFY, wxMouseEvent ); + + // Character input event type + wxDEFINE_EVENT( wxEVT_CHAR, wxKeyEvent ); +@@ -568,6 +569,8 @@ + m_wheelDelta = 0; + m_linesPerAction = 0; + m_columnsPerAction = 0; ++ ++ m_magnification = 0.0f; + } + + void wxMouseEvent::Assign(const wxMouseEvent& event) +@@ -592,6 +595,8 @@ + m_linesPerAction = event.m_linesPerAction; + m_columnsPerAction = event.m_columnsPerAction; + m_wheelAxis = event.m_wheelAxis; ++ ++ m_magnification = event.m_magnification; + } + + // return true if was a button dclick event +Index: src/osx/cocoa/window.mm +=================================================================== +--- src/osx/cocoa/window.mm (revision 78078) ++++ src/osx/cocoa/window.mm (working copy) +@@ -728,6 +728,12 @@ + case NSMouseMoved : + wxevent.SetEventType( wxEVT_MOTION ) ; + break; ++ ++ case NSEventTypeMagnify: ++ wxevent.SetEventType( wxEVT_MAGNIFY ); ++ wxevent.m_magnification = [nsEvent magnification]; ++ break; ++ + default : + break ; + } +@@ -1749,6 +1755,10 @@ + wxOSX_CLASS_ADD_METHOD(c, @selector(mouseEntered:), (IMP) wxOSX_mouseEvent, "v@:@" ) + wxOSX_CLASS_ADD_METHOD(c, @selector(mouseExited:), (IMP) wxOSX_mouseEvent, "v@:@" ) + ++#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 ++ wxOSX_CLASS_ADD_METHOD(c, @selector(magnifyWithEvent:), (IMP)wxOSX_mouseEvent, "v@:@") ++#endif ++ + wxOSX_CLASS_ADD_METHOD(c, @selector(cursorUpdate:), (IMP) wxOSX_cursorUpdate, "v@:@" ) + + wxOSX_CLASS_ADD_METHOD(c, @selector(keyDown:), (IMP) wxOSX_keyEvent, "v@:@" )