X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ef7a25a73ef4215454d6d8e3bad63bdf5b4339a0..9f4de6b2cf06f53a98b28f53640f3b9ec8cf4182:/src/gtk/slider.cpp?ds=sidebyside diff --git a/src/gtk/slider.cpp b/src/gtk/slider.cpp index 58aa39db81..a5fbd38b54 100644 --- a/src/gtk/slider.cpp +++ b/src/gtk/slider.cpp @@ -1,10 +1,10 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: slider.cpp +// Name: gtk/slider.cpp // Purpose: // Author: Robert Roebling // Id: $Id$ // Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -19,8 +19,7 @@ #include -#include -#include +#include "wx/gtk/private.h" //----------------------------------------------------------------------------- // idle system @@ -33,7 +32,7 @@ extern bool g_isIdle; // data //----------------------------------------------------------------------------- -extern bool g_blockEventsOnDrag; +extern bool g_blockEventsOnDrag; static const float sensitivity = 0.02; @@ -41,7 +40,9 @@ static const float sensitivity = 0.02; // "value_changed" //----------------------------------------------------------------------------- -static void gtk_slider_callback( GtkAdjustment *adjust, wxSlider *win ) +static void gtk_slider_callback( GtkAdjustment *adjust, + SCROLLBAR_CBACK_ARG + wxSlider *win ) { if (g_isIdle) wxapp_install_idle_handler(); @@ -53,19 +54,13 @@ static void gtk_slider_callback( GtkAdjustment *adjust, wxSlider *win ) win->m_oldPos = adjust->value; - GtkRange *range = GTK_RANGE( win->m_widget ); + wxEventType command = GtkScrollTypeToWx(GET_SCROLL_TYPE(win->m_widget)); - wxEventType command = wxEVT_SCROLL_THUMBTRACK; - if (range->scroll_type == GTK_SCROLL_STEP_BACKWARD) command = wxEVT_SCROLL_LINEUP; - else if (range->scroll_type == GTK_SCROLL_STEP_FORWARD) command = wxEVT_SCROLL_LINEDOWN; - else if (range->scroll_type == GTK_SCROLL_PAGE_BACKWARD) command = wxEVT_SCROLL_PAGEUP; - else if (range->scroll_type == GTK_SCROLL_PAGE_FORWARD) command = wxEVT_SCROLL_PAGEDOWN; + double dvalue = adjust->value; + int value = (int)(dvalue < 0 ? dvalue - 0.5 : dvalue + 0.5); - int value = (int)ceil(adjust->value); - - int orient = wxHORIZONTAL; - if ( (win->GetWindowStyleFlag() & wxSB_VERTICAL) == wxSB_VERTICAL) - orient = wxVERTICAL; + int orient = win->GetWindowStyleFlag() & wxSL_VERTICAL ? wxVERTICAL + : wxHORIZONTAL; wxScrollEvent event( command, win->GetId(), value, orient ); event.SetEventObject( win ); @@ -160,7 +155,7 @@ int wxSlider::GetValue() const // we want to round to the nearest integer, i.e. 0.9 is rounded to 1 and // -0.9 is rounded to -1 double val = m_adjust->value; - return (int)(val >= 0 ? val - 0.5 : val + 0.5); + return (int)(val < 0 ? val - 0.5 : val + 0.5); } void wxSlider::SetValue( int value ) @@ -244,49 +239,17 @@ int wxSlider::GetLineSize() const return 0; } -void wxSlider::SetTick( int WXUNUSED(tickPos) ) -{ -} - -void wxSlider::SetTickFreq( int WXUNUSED(n), int WXUNUSED(pos) ) -{ -} - -int wxSlider::GetTickFreq() const -{ - return 0; -} - -void wxSlider::ClearTicks() -{ -} - -void wxSlider::SetSelection( int WXUNUSED(minPos), int WXUNUSED(maxPos) ) -{ -} - -int wxSlider::GetSelEnd() const -{ - return 0; -} - -int wxSlider::GetSelStart() const -{ - return 0; -} - -void wxSlider::ClearSel() -{ -} - bool wxSlider::IsOwnGtkWindow( GdkWindow *window ) { GtkRange *range = GTK_RANGE(m_widget); - return ( (window == GTK_WIDGET(range)->window) || - (window == range->trough) || - (window == range->slider) || - (window == range->step_forw) || - (window == range->step_back) ); + return ( (window == GTK_WIDGET(range)->window) +#ifndef __WXGTK20__ + || (window == range->trough) + || (window == range->slider) + || (window == range->step_forw) + || (window == range->step_back) +#endif // GTK+ 1.x + ); } void wxSlider::ApplyWidgetStyle()