MacHandleControlClick extended by mouseStillDown state for supporting things like THUMBRELEASE
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@20998 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -117,7 +117,7 @@ void wxButton::Command (wxCommandEvent & event)
|
||||
ProcessCommand (event);
|
||||
}
|
||||
|
||||
void wxButton::MacHandleControlClick( WXWidget WXUNUSED(control) , wxInt16 controlpart )
|
||||
void wxButton::MacHandleControlClick( WXWidget WXUNUSED(control) , wxInt16 controlpart , bool WXUNUSED(mouseStillDown) )
|
||||
{
|
||||
if ( controlpart != kControlNoPart )
|
||||
{
|
||||
|
@@ -117,7 +117,7 @@ void wxButton::Command (wxCommandEvent & event)
|
||||
ProcessCommand (event);
|
||||
}
|
||||
|
||||
void wxButton::MacHandleControlClick( WXWidget WXUNUSED(control) , wxInt16 controlpart )
|
||||
void wxButton::MacHandleControlClick( WXWidget WXUNUSED(control) , wxInt16 controlpart , bool WXUNUSED(mouseStillDown) )
|
||||
{
|
||||
if ( controlpart != kControlNoPart )
|
||||
{
|
||||
|
@@ -61,7 +61,7 @@ void wxCheckBox::Command (wxCommandEvent & event)
|
||||
ProcessCommand (event);
|
||||
}
|
||||
|
||||
void wxCheckBox::MacHandleControlClick( WXWidget WXUNUSED(control), wxInt16 WXUNUSED(controlpart) )
|
||||
void wxCheckBox::MacHandleControlClick( WXWidget WXUNUSED(control), wxInt16 WXUNUSED(controlpart) , bool WXUNUSED(mouseStillDown) )
|
||||
{
|
||||
SetValue( !GetValue() ) ;
|
||||
wxCommandEvent event(wxEVT_COMMAND_CHECKBOX_CLICKED, m_windowId );
|
||||
|
@@ -207,7 +207,7 @@ wxClientData* wxChoice::DoGetItemClientObject( int n ) const
|
||||
return (wxClientData *)DoGetItemClientData(n);
|
||||
}
|
||||
|
||||
void wxChoice::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
|
||||
void wxChoice::MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool WXUNUSED(mouseStillDown))
|
||||
{
|
||||
wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, m_windowId );
|
||||
int n = GetSelection();
|
||||
|
@@ -78,7 +78,7 @@ pascal void wxMacLiveScrollbarActionProc( ControlHandle control , ControlPartCod
|
||||
wxControl* wx = (wxControl*) GetControlReference( control ) ;
|
||||
if ( wx )
|
||||
{
|
||||
wx->MacHandleControlClick( control , partCode ) ;
|
||||
wx->MacHandleControlClick( control , partCode , true /* stillDown */ ) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -365,6 +365,10 @@ void wxControl::MacPostControlCreate()
|
||||
{
|
||||
ControlFontStyleRec controlstyle ;
|
||||
controlstyle.flags = kControlUseFontMask ;
|
||||
|
||||
if (IsKindOf( CLASSINFO( wxButton ) ) )
|
||||
controlstyle.font = kControlFontSmallSystemFont ; // eventually kControlFontBigSystemFont ;
|
||||
else
|
||||
controlstyle.font = kControlFontSmallSystemFont ;
|
||||
|
||||
::SetControlFontStyle( (ControlHandle) m_macControl , &controlstyle ) ;
|
||||
@@ -871,11 +875,9 @@ void wxControl::OnMouseEvent( wxMouseEvent &event )
|
||||
{
|
||||
controlpart = ::HandleControlClick( control , localwhere , modifiers , (ControlActionUPP) -1 ) ;
|
||||
wxTheApp->s_lastMouseDown = 0 ;
|
||||
if ( control && controlpart != kControlNoPart &&
|
||||
! IsKindOf( CLASSINFO( wxScrollBar ) )
|
||||
) // otherwise we will get the event twice for scrollbar
|
||||
if ( control && controlpart != kControlNoPart )
|
||||
{
|
||||
MacHandleControlClick( control , controlpart ) ;
|
||||
MacHandleControlClick( control , controlpart , false /* mouse not down anymore */ ) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -895,7 +897,7 @@ bool wxControl::MacCanFocus() const
|
||||
return false ;
|
||||
}
|
||||
|
||||
void wxControl::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
|
||||
void wxControl::MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool WXUNUSED( mouseStillDown ) )
|
||||
{
|
||||
wxASSERT_MSG( (ControlHandle) m_macControl != NULL , wxT("No valid mac control") ) ;
|
||||
}
|
||||
|
@@ -823,7 +823,7 @@ void wxListBox::OnSize( const wxSizeEvent &event)
|
||||
LCellSize( pt , (ListHandle)m_macList ) ;
|
||||
}
|
||||
|
||||
void wxListBox::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
|
||||
void wxListBox::MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool WXUNUSED(mouseStillDown))
|
||||
{
|
||||
Boolean wasDoubleClick = false ;
|
||||
long result ;
|
||||
|
@@ -634,7 +634,7 @@ void wxNotebook::OnMouse( wxMouseEvent &event )
|
||||
}
|
||||
|
||||
|
||||
void wxNotebook::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
|
||||
void wxNotebook::MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool WXUNUSED( mouseStillDown ) )
|
||||
{
|
||||
#if 0
|
||||
wxNotebookEvent event(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, m_windowId , ::GetControl32BitValue((ControlHandle)m_macControl) - 1, m_nSelection);
|
||||
|
@@ -97,7 +97,7 @@ void wxRadioButton::Command (wxCommandEvent & event)
|
||||
ProcessCommand (event);
|
||||
}
|
||||
|
||||
void wxRadioButton::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
|
||||
void wxRadioButton::MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool WXUNUSED(mouseStillDown))
|
||||
{
|
||||
if ( GetValue() )
|
||||
return ;
|
||||
|
@@ -105,7 +105,7 @@ void wxScrollBar::Command(wxCommandEvent& event)
|
||||
ProcessCommand(event);
|
||||
}
|
||||
|
||||
void wxScrollBar::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
|
||||
void wxScrollBar::MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool mouseStillDown )
|
||||
{
|
||||
if ( (ControlHandle) m_macControl == NULL )
|
||||
return ;
|
||||
@@ -117,6 +117,10 @@ void wxScrollBar::MacHandleControlClick( WXWidget control , wxInt16 controlpart
|
||||
wxEventType scrollEvent = wxEVT_NULL;
|
||||
int nScrollInc;
|
||||
|
||||
// all events have already been reported during mouse down, except for THUMBRELEASE
|
||||
if ( !mouseStillDown && controlpart !=kControlIndicatorPart )
|
||||
return ;
|
||||
|
||||
switch( controlpart )
|
||||
{
|
||||
case kControlUpButtonPart :
|
||||
@@ -137,7 +141,10 @@ void wxScrollBar::MacHandleControlClick( WXWidget control , wxInt16 controlpart
|
||||
break ;
|
||||
case kControlIndicatorPart :
|
||||
nScrollInc = 0 ;
|
||||
if ( mouseStillDown )
|
||||
scrollEvent = wxEVT_SCROLL_THUMBTRACK;
|
||||
else
|
||||
scrollEvent = wxEVT_SCROLL_THUMBRELEASE;
|
||||
break ;
|
||||
default :
|
||||
wxFAIL_MSG(wxT("illegal scrollbar selector"));
|
||||
|
@@ -238,7 +238,7 @@ void wxSlider::Command (wxCommandEvent & event)
|
||||
ProcessCommand (event);
|
||||
}
|
||||
|
||||
void wxSlider::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
|
||||
void wxSlider::MacHandleControlClick( WXWidget control , wxInt16 controlpart, bool WXUNUSED(mouseStillDown) )
|
||||
{
|
||||
SInt16 value = ::GetControl32BitValue( (ControlHandle) m_macControl ) ;
|
||||
|
||||
|
@@ -147,7 +147,7 @@ void wxSpinButton::MacHandleValueChanged( int inc )
|
||||
}
|
||||
}
|
||||
|
||||
void wxSpinButton::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
|
||||
void wxSpinButton::MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool WXUNUSED(mouseStillDown))
|
||||
{
|
||||
if ( (ControlHandle) m_macControl == NULL )
|
||||
return ;
|
||||
|
@@ -390,7 +390,7 @@ wxSize wxToolBar::GetToolSize() const
|
||||
return wxSize(m_defaultWidth + 4, m_defaultHeight + 4);
|
||||
}
|
||||
|
||||
void wxToolBar::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
|
||||
void wxToolBar::MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool WXUNUSED( mouseStillDown ) )
|
||||
{
|
||||
wxToolBarToolsList::Node *node;
|
||||
for ( node = m_tools.GetFirst(); node; node = node->GetNext() )
|
||||
@@ -602,15 +602,11 @@ void wxToolBar::OnMouse( wxMouseEvent &event )
|
||||
if ( control && ::IsControlActive( control ) )
|
||||
{
|
||||
{
|
||||
if ( controlpart == kControlIndicatorPart && !UMAHasAppearance() )
|
||||
controlpart = ::HandleControlClick( control , localwhere , modifiers , (ControlActionUPP) NULL ) ;
|
||||
else
|
||||
controlpart = ::HandleControlClick( control , localwhere , modifiers , (ControlActionUPP) -1 ) ;
|
||||
wxTheApp->s_lastMouseDown = 0 ;
|
||||
if ( controlpart && ! ( ( UMAHasAppearance() || (controlpart != kControlIndicatorPart) )
|
||||
&& (IsKindOf( CLASSINFO( wxScrollBar ) ) ) ) ) // otherwise we will get the event twice
|
||||
if ( control && controlpart != kControlNoPart ) // otherwise we will get the event twice
|
||||
{
|
||||
MacHandleControlClick( control , controlpart ) ;
|
||||
MacHandleControlClick( control , controlpart , false /* not down anymore */ ) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -61,7 +61,7 @@ void wxCheckBox::Command (wxCommandEvent & event)
|
||||
ProcessCommand (event);
|
||||
}
|
||||
|
||||
void wxCheckBox::MacHandleControlClick( WXWidget WXUNUSED(control), wxInt16 WXUNUSED(controlpart) )
|
||||
void wxCheckBox::MacHandleControlClick( WXWidget WXUNUSED(control), wxInt16 WXUNUSED(controlpart) , bool WXUNUSED(mouseStillDown) )
|
||||
{
|
||||
SetValue( !GetValue() ) ;
|
||||
wxCommandEvent event(wxEVT_COMMAND_CHECKBOX_CLICKED, m_windowId );
|
||||
|
@@ -207,7 +207,7 @@ wxClientData* wxChoice::DoGetItemClientObject( int n ) const
|
||||
return (wxClientData *)DoGetItemClientData(n);
|
||||
}
|
||||
|
||||
void wxChoice::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
|
||||
void wxChoice::MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool WXUNUSED(mouseStillDown))
|
||||
{
|
||||
wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, m_windowId );
|
||||
int n = GetSelection();
|
||||
|
@@ -78,7 +78,7 @@ pascal void wxMacLiveScrollbarActionProc( ControlHandle control , ControlPartCod
|
||||
wxControl* wx = (wxControl*) GetControlReference( control ) ;
|
||||
if ( wx )
|
||||
{
|
||||
wx->MacHandleControlClick( control , partCode ) ;
|
||||
wx->MacHandleControlClick( control , partCode , true /* stillDown */ ) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -365,6 +365,10 @@ void wxControl::MacPostControlCreate()
|
||||
{
|
||||
ControlFontStyleRec controlstyle ;
|
||||
controlstyle.flags = kControlUseFontMask ;
|
||||
|
||||
if (IsKindOf( CLASSINFO( wxButton ) ) )
|
||||
controlstyle.font = kControlFontSmallSystemFont ; // eventually kControlFontBigSystemFont ;
|
||||
else
|
||||
controlstyle.font = kControlFontSmallSystemFont ;
|
||||
|
||||
::SetControlFontStyle( (ControlHandle) m_macControl , &controlstyle ) ;
|
||||
@@ -871,11 +875,9 @@ void wxControl::OnMouseEvent( wxMouseEvent &event )
|
||||
{
|
||||
controlpart = ::HandleControlClick( control , localwhere , modifiers , (ControlActionUPP) -1 ) ;
|
||||
wxTheApp->s_lastMouseDown = 0 ;
|
||||
if ( control && controlpart != kControlNoPart &&
|
||||
! IsKindOf( CLASSINFO( wxScrollBar ) )
|
||||
) // otherwise we will get the event twice for scrollbar
|
||||
if ( control && controlpart != kControlNoPart )
|
||||
{
|
||||
MacHandleControlClick( control , controlpart ) ;
|
||||
MacHandleControlClick( control , controlpart , false /* mouse not down anymore */ ) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -895,7 +897,7 @@ bool wxControl::MacCanFocus() const
|
||||
return false ;
|
||||
}
|
||||
|
||||
void wxControl::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
|
||||
void wxControl::MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool WXUNUSED( mouseStillDown ) )
|
||||
{
|
||||
wxASSERT_MSG( (ControlHandle) m_macControl != NULL , wxT("No valid mac control") ) ;
|
||||
}
|
||||
|
@@ -823,7 +823,7 @@ void wxListBox::OnSize( const wxSizeEvent &event)
|
||||
LCellSize( pt , (ListHandle)m_macList ) ;
|
||||
}
|
||||
|
||||
void wxListBox::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
|
||||
void wxListBox::MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool WXUNUSED(mouseStillDown))
|
||||
{
|
||||
Boolean wasDoubleClick = false ;
|
||||
long result ;
|
||||
|
@@ -634,7 +634,7 @@ void wxNotebook::OnMouse( wxMouseEvent &event )
|
||||
}
|
||||
|
||||
|
||||
void wxNotebook::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
|
||||
void wxNotebook::MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool WXUNUSED( mouseStillDown ) )
|
||||
{
|
||||
#if 0
|
||||
wxNotebookEvent event(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, m_windowId , ::GetControl32BitValue((ControlHandle)m_macControl) - 1, m_nSelection);
|
||||
|
@@ -97,7 +97,7 @@ void wxRadioButton::Command (wxCommandEvent & event)
|
||||
ProcessCommand (event);
|
||||
}
|
||||
|
||||
void wxRadioButton::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
|
||||
void wxRadioButton::MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool WXUNUSED(mouseStillDown))
|
||||
{
|
||||
if ( GetValue() )
|
||||
return ;
|
||||
|
@@ -105,7 +105,7 @@ void wxScrollBar::Command(wxCommandEvent& event)
|
||||
ProcessCommand(event);
|
||||
}
|
||||
|
||||
void wxScrollBar::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
|
||||
void wxScrollBar::MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool mouseStillDown )
|
||||
{
|
||||
if ( (ControlHandle) m_macControl == NULL )
|
||||
return ;
|
||||
@@ -117,6 +117,10 @@ void wxScrollBar::MacHandleControlClick( WXWidget control , wxInt16 controlpart
|
||||
wxEventType scrollEvent = wxEVT_NULL;
|
||||
int nScrollInc;
|
||||
|
||||
// all events have already been reported during mouse down, except for THUMBRELEASE
|
||||
if ( !mouseStillDown && controlpart !=kControlIndicatorPart )
|
||||
return ;
|
||||
|
||||
switch( controlpart )
|
||||
{
|
||||
case kControlUpButtonPart :
|
||||
@@ -137,7 +141,10 @@ void wxScrollBar::MacHandleControlClick( WXWidget control , wxInt16 controlpart
|
||||
break ;
|
||||
case kControlIndicatorPart :
|
||||
nScrollInc = 0 ;
|
||||
if ( mouseStillDown )
|
||||
scrollEvent = wxEVT_SCROLL_THUMBTRACK;
|
||||
else
|
||||
scrollEvent = wxEVT_SCROLL_THUMBRELEASE;
|
||||
break ;
|
||||
default :
|
||||
wxFAIL_MSG(wxT("illegal scrollbar selector"));
|
||||
|
@@ -238,7 +238,7 @@ void wxSlider::Command (wxCommandEvent & event)
|
||||
ProcessCommand (event);
|
||||
}
|
||||
|
||||
void wxSlider::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
|
||||
void wxSlider::MacHandleControlClick( WXWidget control , wxInt16 controlpart, bool WXUNUSED(mouseStillDown) )
|
||||
{
|
||||
SInt16 value = ::GetControl32BitValue( (ControlHandle) m_macControl ) ;
|
||||
|
||||
|
@@ -147,7 +147,7 @@ void wxSpinButton::MacHandleValueChanged( int inc )
|
||||
}
|
||||
}
|
||||
|
||||
void wxSpinButton::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
|
||||
void wxSpinButton::MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool WXUNUSED(mouseStillDown))
|
||||
{
|
||||
if ( (ControlHandle) m_macControl == NULL )
|
||||
return ;
|
||||
|
@@ -390,7 +390,7 @@ wxSize wxToolBar::GetToolSize() const
|
||||
return wxSize(m_defaultWidth + 4, m_defaultHeight + 4);
|
||||
}
|
||||
|
||||
void wxToolBar::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
|
||||
void wxToolBar::MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool WXUNUSED( mouseStillDown ) )
|
||||
{
|
||||
wxToolBarToolsList::Node *node;
|
||||
for ( node = m_tools.GetFirst(); node; node = node->GetNext() )
|
||||
@@ -602,15 +602,11 @@ void wxToolBar::OnMouse( wxMouseEvent &event )
|
||||
if ( control && ::IsControlActive( control ) )
|
||||
{
|
||||
{
|
||||
if ( controlpart == kControlIndicatorPart && !UMAHasAppearance() )
|
||||
controlpart = ::HandleControlClick( control , localwhere , modifiers , (ControlActionUPP) NULL ) ;
|
||||
else
|
||||
controlpart = ::HandleControlClick( control , localwhere , modifiers , (ControlActionUPP) -1 ) ;
|
||||
wxTheApp->s_lastMouseDown = 0 ;
|
||||
if ( controlpart && ! ( ( UMAHasAppearance() || (controlpart != kControlIndicatorPart) )
|
||||
&& (IsKindOf( CLASSINFO( wxScrollBar ) ) ) ) ) // otherwise we will get the event twice
|
||||
if ( control && controlpart != kControlNoPart ) // otherwise we will get the event twice
|
||||
{
|
||||
MacHandleControlClick( control , controlpart ) ;
|
||||
MacHandleControlClick( control , controlpart , false /* not down anymore */ ) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user