From 46c48053f41b517dd99be71b216819c6d3603f80 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 7 Mar 2006 18:13:11 +0000 Subject: [PATCH] don't leave evtType uninitialized in gtk_slider_callback() (thanks coverity checker) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37860 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/slider.cpp | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/src/gtk/slider.cpp b/src/gtk/slider.cpp index 42de025936..0f590126f3 100644 --- a/src/gtk/slider.cpp +++ b/src/gtk/slider.cpp @@ -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); -- 2.45.2