]> git.saurik.com Git - wxWidgets.git/commitdiff
MacHandleControlClick extended by mouseStillDown state for supporting things like...
authorStefan Csomor <csomor@advancedconcepts.ch>
Sat, 7 Jun 2003 20:58:38 +0000 (20:58 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Sat, 7 Jun 2003 20:58:38 +0000 (20:58 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@20998 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

22 files changed:
src/mac/button.cpp
src/mac/carbon/button.cpp
src/mac/carbon/checkbox.cpp
src/mac/carbon/choice.cpp
src/mac/carbon/control.cpp
src/mac/carbon/listbox.cpp
src/mac/carbon/notebmac.cpp
src/mac/carbon/radiobut.cpp
src/mac/carbon/scrolbar.cpp
src/mac/carbon/slider.cpp
src/mac/carbon/spinbutt.cpp
src/mac/carbon/toolbar.cpp
src/mac/checkbox.cpp
src/mac/choice.cpp
src/mac/control.cpp
src/mac/listbox.cpp
src/mac/notebmac.cpp
src/mac/radiobut.cpp
src/mac/scrolbar.cpp
src/mac/slider.cpp
src/mac/spinbutt.cpp
src/mac/toolbar.cpp

index 49c0586734ea223ef79add37d767e5caf26ab028..aaf91f644e701b99b9ed2075f72b261e9d39aab8 100644 (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 )
     {
index 49c0586734ea223ef79add37d767e5caf26ab028..aaf91f644e701b99b9ed2075f72b261e9d39aab8 100644 (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 )
     {
index f1bc26ccc6c2d7bcb7ae97e19a1c7d9a4624c545..cb43f117af17dbcd87106c4d951267b402719da2 100644 (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 );
index 83e91dbfaba6811749ab51e7931428d210cc28c8..86d75eb0da14405232ad9e54bc81eb293ff67f50 100644 (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();
index f0dc6ee7a4ebb3c7a08cac8c81aecb31a6c63f6e..35cefcfa7249b0f465a96c5f82aa2cbf38145d88 100644 (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,7 +365,11 @@ void wxControl::MacPostControlCreate()
     {
         ControlFontStyleRec     controlstyle ;
         controlstyle.flags = kControlUseFontMask ;
-        controlstyle.font = kControlFontSmallSystemFont ;
+        
+        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") ) ;
 }
index 0cc15e774f43ae8f9520207ca96ce844837638b1..9daaf275e82b77581269dbbd28b1698d24d3a1b7 100644 (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 ;
index e620bc017b797019fb4206aab2bff938df6ef6e7..4e8a87a9b451e9ed9f10b30790346a052667f954 100644 (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);
index 46014e45765ca13a3c14446ed58a56ccff26f18c..45c734c58bba56613eec24593fcde2815c84a058 100644 (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 ;
index ad843c3fd955bfced9f470e5d6199a018235305e..eef2a84c54ba8d7c7e22defdbbce4e5dbe0d16af 100644 (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 ;
-        scrollEvent = wxEVT_SCROLL_THUMBTRACK;
+        if ( mouseStillDown )
+            scrollEvent = wxEVT_SCROLL_THUMBTRACK;
+        else
+            scrollEvent = wxEVT_SCROLL_THUMBRELEASE;
         break ;
     default :
         wxFAIL_MSG(wxT("illegal scrollbar selector"));
index 87d4e586098060c40ae7ebbee9c37ce375554be6..94c90786e5d2ee98359b61e433f4987cf28b12d4 100644 (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 ) ;
     
index 0f4faca5784170109e30e0efccc211e515a43ff0..57a2a4a0d7ac3ada445b31773d88030803a888ea 100644 (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 ;
index 55a05b287be90918857c925837d216a2780b9fc1..5820490844cc6987eda4b1c057293692324fd56d 100644 (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 ) ;
+                    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 */ ) ;
                     }
                 }
             }
index f1bc26ccc6c2d7bcb7ae97e19a1c7d9a4624c545..cb43f117af17dbcd87106c4d951267b402719da2 100644 (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 );
index 83e91dbfaba6811749ab51e7931428d210cc28c8..86d75eb0da14405232ad9e54bc81eb293ff67f50 100644 (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();
index f0dc6ee7a4ebb3c7a08cac8c81aecb31a6c63f6e..35cefcfa7249b0f465a96c5f82aa2cbf38145d88 100644 (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,7 +365,11 @@ void wxControl::MacPostControlCreate()
     {
         ControlFontStyleRec     controlstyle ;
         controlstyle.flags = kControlUseFontMask ;
-        controlstyle.font = kControlFontSmallSystemFont ;
+        
+        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") ) ;
 }
index 0cc15e774f43ae8f9520207ca96ce844837638b1..9daaf275e82b77581269dbbd28b1698d24d3a1b7 100644 (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 ;
index e620bc017b797019fb4206aab2bff938df6ef6e7..4e8a87a9b451e9ed9f10b30790346a052667f954 100644 (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);
index 46014e45765ca13a3c14446ed58a56ccff26f18c..45c734c58bba56613eec24593fcde2815c84a058 100644 (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 ;
index ad843c3fd955bfced9f470e5d6199a018235305e..eef2a84c54ba8d7c7e22defdbbce4e5dbe0d16af 100644 (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 ;
-        scrollEvent = wxEVT_SCROLL_THUMBTRACK;
+        if ( mouseStillDown )
+            scrollEvent = wxEVT_SCROLL_THUMBTRACK;
+        else
+            scrollEvent = wxEVT_SCROLL_THUMBRELEASE;
         break ;
     default :
         wxFAIL_MSG(wxT("illegal scrollbar selector"));
index 87d4e586098060c40ae7ebbee9c37ce375554be6..94c90786e5d2ee98359b61e433f4987cf28b12d4 100644 (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 ) ;
     
index 0f4faca5784170109e30e0efccc211e515a43ff0..57a2a4a0d7ac3ada445b31773d88030803a888ea 100644 (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 ;
index 55a05b287be90918857c925837d216a2780b9fc1..5820490844cc6987eda4b1c057293692324fd56d 100644 (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 ) ;
+                    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 */ ) ;
                     }
                 }
             }