if ( cEvent.GetKind() == kEventMouseDown )
lastButton = button ;
+
+ if ( button == 0 )
+ lastButton = 0 ;
else if ( lastButton )
button = lastButton ;
break ;
}
}
- // determinate the correct click button
- if ( button == kEventMouseButtonSecondary )
- {
- if (cEvent.GetKind() == kEventMouseDown )
- wxevent.SetEventType( clickCount > 1 ? wxEVT_RIGHT_DCLICK : wxEVT_RIGHT_DOWN ) ;
- else if ( cEvent.GetKind() == kEventMouseUp )
- wxevent.SetEventType(wxEVT_RIGHT_UP ) ;
- }
- else if ( button == kEventMouseButtonTertiary )
- {
- if (cEvent.GetKind() == kEventMouseDown )
- wxevent.SetEventType(clickCount > 1 ? wxEVT_MIDDLE_DCLICK : wxEVT_MIDDLE_DOWN ) ;
- else if ( cEvent.GetKind() == kEventMouseUp )
- wxevent.SetEventType(wxEVT_MIDDLE_UP ) ;
- }
- else
+ // translate into wx types
+ switch ( cEvent.GetKind() )
{
- if (cEvent.GetKind() == kEventMouseDown )
- wxevent.SetEventType(clickCount > 1 ? wxEVT_LEFT_DCLICK : wxEVT_LEFT_DOWN ) ;
- else if ( cEvent.GetKind() == kEventMouseUp )
- wxevent.SetEventType(wxEVT_LEFT_UP ) ;
- else if ( cEvent.GetKind() == kEventMouseWheelMoved )
- {
+ case kEventMouseDown :
+ switch( button )
+ {
+ case kEventMouseButtonPrimary :
+ wxevent.SetEventType(clickCount > 1 ? wxEVT_LEFT_DCLICK : wxEVT_LEFT_DOWN ) ;
+ break ;
+ case kEventMouseButtonSecondary :
+ wxevent.SetEventType( clickCount > 1 ? wxEVT_RIGHT_DCLICK : wxEVT_RIGHT_DOWN ) ;
+ break ;
+ case kEventMouseButtonTertiary :
+ wxevent.SetEventType(clickCount > 1 ? wxEVT_MIDDLE_DCLICK : wxEVT_MIDDLE_DOWN ) ;
+ break ;
+ }
+ break ;
+ case kEventMouseUp :
+ switch( button )
+ {
+ case kEventMouseButtonPrimary :
+ wxevent.SetEventType( wxEVT_LEFT_UP ) ;
+ break ;
+ case kEventMouseButtonSecondary :
+ wxevent.SetEventType( wxEVT_RIGHT_UP ) ;
+ break ;
+ case kEventMouseButtonTertiary :
+ wxevent.SetEventType( wxEVT_MIDDLE_UP ) ;
+ break ;
+ }
+ break ;
+ case kEventMouseWheelMoved :
+ {
wxevent.SetEventType(wxEVT_MOUSEWHEEL ) ;
// EventMouseWheelAxis axis = cEvent.GetParameter<EventMouseWheelAxis>(kEventParamMouseWheelAxis, typeMouseWheelAxis) ;
wxevent.m_wheelRotation = delta;
wxevent.m_wheelDelta = 1;
wxevent.m_linesPerAction = 1;
- }
- else
+ break ;
+ }
+ default :
wxevent.SetEventType(wxEVT_MOTION ) ;
- }
- if ( cEvent.GetKind() == kEventMouseUp )
- lastButton = 0 ;
+ break ;
+ }
}
ControlRef wxMacFindSubControl( Point location , ControlRef superControl , ControlPartCode *outPart )
// There is a bug in 10.2.X for ::GetRootControl returning the window view instead of
// the content view, so we have to retrieve it explicitely
HIViewFindByID( HIViewGetRoot( (WindowRef) m_macWindow ) , kHIViewWindowContentID ,
- *m_peer ) ;
+ m_peer->GetControlRefAddr() ) ;
+ if ( !m_peer->Ok() )
+ {
+ // compatibility mode fallback
+ GetRootControl( (WindowRef) m_macWindow , m_peer->GetControlRefAddr() ) ;
+ }
#else
- ::CreateRootControl( (WindowRef)m_macWindow , *m_peer ) ;
+ ::CreateRootControl( (WindowRef)m_macWindow , m_peer->GetControlRefAddr() ) ;
#endif
// the root control level handleer
- MacInstallEventHandler() ;
+ MacInstallEventHandler( (WXWidget) m_peer->GetControlRef() ) ;
// the frame window event handler
InstallStandardEventHandler( GetWindowEventTarget(MAC_WXHWND(m_macWindow)) ) ;