]> git.saurik.com Git - wxWidgets.git/commitdiff
don't leave evtType uninitialized in gtk_slider_callback() (thanks coverity checker)
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 7 Mar 2006 18:13:11 +0000 (18:13 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 7 Mar 2006 18:13:11 +0000 (18:13 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37860 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/gtk/slider.cpp

index 42de0259367c19ac8779e41bd4ba7303884ed6a5..0f590126f366f68a921554a92c6bdce5139c68fb 100644 (file)
@@ -52,25 +52,34 @@ static inline int AdjustValueToInt(double x)
 static void
 ProcessScrollEvent(wxSlider *win, wxEventType evtType, double dvalue)
 {
-    int orient = win->GetWindowStyleFlag() & wxSL_VERTICAL ? wxVERTICAL
-                                                           : wxHORIZONTAL;
+    const int orient = win->HasFlag(wxSL_VERTICAL) ? wxVERTICAL
+                                                   : wxHORIZONTAL;
 
-    int value = (int)(dvalue < 0 ? dvalue - 0.5 : dvalue + 0.5);
-    wxScrollEvent event( evtType, win->GetId(), value, orient );
-    event.SetEventObject( win );
-    win->GetEventHandler()->ProcessEvent( event );
+    const int value = (int)(dvalue < 0 ? dvalue - 0.5 : dvalue + 0.5);
+
+    // if we have any "special" event (i.e. the value changed by a line or a
+    // page), send this specific event first
+    if ( evtType != wxEVT_NULL )
+    {
+        wxScrollEvent event( evtType, win->GetId(), value, orient );
+        event.SetEventObject( win );
+        win->GetEventHandler()->ProcessEvent( event );
+    }
 
+    // but, in any case, except if we're dragging the slider (and so the change
+    // is not definitive), send a generic "changed" event
     if ( evtType != wxEVT_SCROLL_THUMBTRACK )
     {
-        wxScrollEvent event2(wxEVT_SCROLL_CHANGED, win->GetId(), value, orient);
-        event2.SetEventObject( win );
-        win->GetEventHandler()->ProcessEvent( event2 );
+        wxScrollEvent event(wxEVT_SCROLL_CHANGED, win->GetId(), value, orient);
+        event.SetEventObject( win );
+        win->GetEventHandler()->ProcessEvent( event );
     }
 
-    wxCommandEvent cevent( wxEVT_COMMAND_SLIDER_UPDATED, win->GetId() );
-    cevent.SetEventObject( win );
-    cevent.SetInt( value );
-    win->GetEventHandler()->ProcessEvent( cevent );
+    // and also generate a command event for compatibility
+    wxCommandEvent event( wxEVT_COMMAND_SLIDER_UPDATED, win->GetId() );
+    event.SetEventObject( win );
+    event.SetInt( value );
+    win->GetEventHandler()->ProcessEvent( event );
 }
 
 //-----------------------------------------------------------------------------
@@ -107,6 +116,8 @@ static void gtk_slider_callback( GtkAdjustment *adjust,
         evtType = wxEVT_SCROLL_TOP;
     else if ( AreSameAdjustValues(adjust->value, adjust->upper) )
         evtType = wxEVT_SCROLL_BOTTOM;
+    else
+        evtType = wxEVT_NULL; // wxEVT_SCROLL_CHANGED will still be generated
 
     ProcessScrollEvent(win, evtType, dvalue);