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:
Stefan Csomor
2003-06-07 20:58:38 +00:00
parent e71a0aa95f
commit 4b26b60fac
22 changed files with 60 additions and 50 deletions

View File

@@ -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 )
{

View File

@@ -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 )
{

View File

@@ -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 );

View File

@@ -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();

View File

@@ -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") ) ;
}

View File

@@ -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 ;

View File

@@ -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);

View File

@@ -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 ;

View File

@@ -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"));

View File

@@ -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 ) ;

View File

@@ -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 ;

View File

@@ -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 */ ) ;
}
}
}

View File

@@ -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 );

View File

@@ -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();

View File

@@ -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") ) ;
}

View File

@@ -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 ;

View File

@@ -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);

View File

@@ -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 ;

View File

@@ -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"));

View File

@@ -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 ) ;

View File

@@ -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 ;

View File

@@ -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 */ ) ;
}
}
}