Skip to content

Commit

Permalink
Add wxEVT_MAGNIFY mouse event.
Browse files Browse the repository at this point in the history
Currently this is implemented for wxOSX only.

Closes #14322.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78274 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
  • Loading branch information
vadz committed Dec 16, 2014
1 parent 2de13dd commit ea47af0
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 1 deletion.
1 change: 1 addition & 0 deletions docs/changes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ All (GUI):

- Allow requesting modern (3.x+) OpenGL version in wxGLCanvas (Fabio Arnold).
- Allow customizing window shown by wxBusyInfo.
- Add wxEVT_MAGNIFY mouse event (Joost Nieuwenhuijse).
- Make results of wxDC::DrawEllipticArc() consistent across all platforms.
- XRC handler for wxAuiToolBar added (Kinaou Hervé, David Hart).
- Add wxCursor::GetHotSpot().
Expand Down
9 changes: 8 additions & 1 deletion include/wx/event.h
Original file line number Diff line number Diff line change
Expand Up @@ -681,6 +681,7 @@ wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_CORE, wxEVT_AUX1_DCLICK, wxMouseEvent);
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);
Expand Down Expand Up @@ -1733,6 +1734,8 @@ class WXDLLIMPEXP_CORE wxMouseEvent : public wxEvent,
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
{
Expand Down Expand Up @@ -1787,6 +1790,7 @@ class WXDLLIMPEXP_CORE wxMouseEvent : public wxEvent,
// 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 wxOVERRIDE { return new wxMouseEvent(*this); }
virtual wxEventCategory GetEventCategory() const wxOVERRIDE { return wxEVT_CATEGORY_USER_INPUT; }

Expand All @@ -1805,6 +1809,7 @@ class WXDLLIMPEXP_CORE wxMouseEvent : public wxEvent,
int m_wheelDelta;
int m_linesPerAction;
int m_columnsPerAction;
float m_magnification;

protected:
void Assign(const wxMouseEvent& evt);
Expand Down Expand Up @@ -4198,6 +4203,7 @@ typedef void (wxEvtHandler::*wxClipboardTextEventFunction)(wxClipboardTextEvent&
#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) \
Expand All @@ -4219,7 +4225,8 @@ typedef void (wxEvtHandler::*wxClipboardTextEventFunction)(wxClipboardTextEvent&
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))
Expand Down
29 changes: 29 additions & 0 deletions interface/wx/event.h
Original file line number Diff line number Diff line change
Expand Up @@ -2634,6 +2634,8 @@ enum wxMouseWheelAxis
Process a @c wxEVT_MOUSEWHEEL event.
@event{EVT_MOUSE_EVENTS(func)}
Process all mouse events.
@event{EVT_MAGNIFY(func)}
Process a @c wxEVT_MAGNIFY event (new since wxWidgets 3.1.0).
@endEventTable
@library{wxcore}
Expand Down Expand Up @@ -2667,6 +2669,7 @@ class wxMouseEvent : public wxEvent,
@li @c wxEVT_AUX2_DCLICK
@li @c wxEVT_MOTION
@li @c wxEVT_MOUSEWHEEL
@li @c wxEVT_MAGNIFY
*/
wxMouseEvent(wxEventType mouseEventType = wxEVT_NULL);

Expand Down Expand Up @@ -2792,6 +2795,21 @@ class wxMouseEvent : public wxEvent,
*/
wxPoint GetLogicalPosition(const wxDC& dc) const;

/**
For magnify (pinch to zoom) events: returns the change in magnification.
A value of 0 means no change, a positive value means we should enlarge
(or zoom in), a negative value means we should shrink (or zoom out).
This method is only valid to call for @c wxEVT_MAGNIFY events which are
currently only generated under OS X.
@see Magnify()
@since 3.1.0
*/
float GetMagnification() const;

/**
Get wheel delta, normally 120.
Expand Down Expand Up @@ -2858,6 +2876,17 @@ class wxMouseEvent : public wxEvent,
*/
bool LeftUp() const;

/**
Returns @true if the event is a magnify (i.e.\ pinch to zoom) event.
Such events are currently generated only under OS X.
@see GetMagnification()
@since 3.1.0
*/
bool Magnify() const;

/**
Returns @true if the Meta key was down at the time of the event.
*/
Expand Down
4 changes: 4 additions & 0 deletions src/common/event.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,7 @@ wxDEFINE_EVENT( wxEVT_AUX1_DCLICK, wxMouseEvent );
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 );
Expand Down Expand Up @@ -565,6 +566,7 @@ wxMouseEvent::wxMouseEvent(wxEventType commandType)
m_wheelDelta = 0;
m_linesPerAction = 0;
m_columnsPerAction = 0;
m_magnification = 0.0f;
}

void wxMouseEvent::Assign(const wxMouseEvent& event)
Expand All @@ -589,6 +591,8 @@ void wxMouseEvent::Assign(const wxMouseEvent& event)
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
Expand Down
10 changes: 10 additions & 0 deletions src/osx/cocoa/window.mm
Original file line number Diff line number Diff line change
Expand Up @@ -749,6 +749,12 @@ - (CGFloat)scrollingDeltaY;
case NSMouseMoved :
wxevent.SetEventType( wxEVT_MOTION ) ;
break;

case NSEventTypeMagnify:
wxevent.SetEventType( wxEVT_MAGNIFY );
wxevent.m_magnification = [nsEvent magnification];
break;

default :
break ;
}
Expand Down Expand Up @@ -1739,6 +1745,10 @@ void wxOSXCocoaClassAddWXMethods(Class c)
wxOSX_CLASS_ADD_METHOD(c, @selector(scrollWheel:), (IMP) wxOSX_mouseEvent, "v@:@" )
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@:@" )

Expand Down

0 comments on commit ea47af0

Please sign in to comment.