]> git.saurik.com Git - wxWidgets.git/commitdiff
send wxEVT_SCROLL_CHANGED when using mouse wheel as well
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 31 May 2005 15:33:43 +0000 (15:33 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 31 May 2005 15:33:43 +0000 (15:33 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34458 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
docs/latex/wx/scrolevt.inc
include/wx/msw/slider95.h
src/msw/slider95.cpp

index c0942dc4303b1efe29b6af63d0f176b63f3d969e..bb52f0cc4a82fd4e3177aaae9e44e730af2b6315 100644 (file)
@@ -39,6 +39,7 @@ wxMSW:
 - Winelib compilation now works.
 - When converting a wxIcon to a bitmap check if the icon has an alpha
   channel and set the bitmap to use it.
+- wxSlider now also sends wxEVT_SCROLL_CHANGED when using mouse wheel
 
 wxGTK:
 
index 69ccf6af40c4adbc5a548217333993055abdc805..a8849ebc86c0d130da9c69980c8c843c7491c2e1 100644 (file)
@@ -46,10 +46,7 @@ change the thumb position, and when clicking next to the thumb (In all these
 cases the {\tt EVT\_SCROLL\_THUMBRELEASE} event does not happen).
 
 In short, the {\tt EVT\_SCROLL\_CHANGED} event is triggered when scrolling/
-moving has finished. The only exception (unfortunately) is that changing the
-thumb position using the mousewheel does give a {\tt EVT\_SCROLL\_THUMBRELEASE}
-event but NOT an {\tt EVT\_SCROLL\_CHANGED} event.
-
-Please see the widgets sample ("Slider" page) to see the difference
-between {\tt EVT\_SCROLL\_THUMBRELEASE} and {\tt EVT\_SCROLL\_CHANGED} in action.
+moving has finished independently of the way it had started. Please see the
+widgets sample ("Slider" page) to see the difference between {\tt
+EVT\_SCROLL\_THUMBRELEASE} and {\tt EVT\_SCROLL\_CHANGED} in action.
 
index 68033d6c793e4e8143a18bf6d80d4cc6a3cd8d80..fbe92a43df7605c6fad10edba6b931135ca6ae54 100644 (file)
@@ -130,6 +130,9 @@ protected:
     int           m_lineSize;
     int           m_tickFreq;
 
+    // flag needed to detect whether we're getting THUMBRELEASE event because
+    // of dragging the thumb or scrolling the mouse wheel
+    bool m_isDragging;
 
     DECLARE_DYNAMIC_CLASS_NO_COPY(wxSlider)
 };
index b53b0d871b95edfd0e64164a0a2686805986026f..da83a733f62b37fa46d53cdf45c7f90678b53b87 100644 (file)
@@ -149,6 +149,8 @@ void wxSlider::Init()
     m_rangeMax = 0;
     m_rangeMin = 0;
     m_tickFreq = 0;
+
+    m_isDragging = false;
 }
 
 bool
@@ -328,10 +330,25 @@ bool wxSlider::MSWOnScroll(int WXUNUSED(orientation),
 
         case SB_THUMBTRACK:
             scrollEvent = wxEVT_SCROLL_THUMBTRACK;
+            m_isDragging = true;
             break;
 
         case SB_THUMBPOSITION:
-            scrollEvent = wxEVT_SCROLL_THUMBRELEASE;
+            if ( m_isDragging )
+            {
+                scrollEvent = wxEVT_SCROLL_THUMBRELEASE;
+                m_isDragging = false;
+            }
+            else
+            {
+                // this seems to only happen when the mouse wheel is used: in
+                // this case, as it might be unexpected to get THUMBRELEASE
+                // without preceding THUMBTRACKs, we don't generate it at all
+                // but generate CHANGED event because the control itself does
+                // not send us SB_ENDSCROLL for whatever reason when mouse
+                // wheel is used
+                scrollEvent = wxEVT_SCROLL_CHANGED;
+            }
             break;
 
         case SB_ENDSCROLL: