X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9e691f46b2ec1b5dbbff2e51131e3c532e688a89..85b7bb3557236aa383490106f5198f9de1ef2e6e:/src/gtk/slider.cpp diff --git a/src/gtk/slider.cpp b/src/gtk/slider.cpp index a5fbd38b54..799f21d2b1 100644 --- a/src/gtk/slider.cpp +++ b/src/gtk/slider.cpp @@ -131,10 +131,7 @@ bool wxSlider::Create(wxWindow *parent, wxWindowID id, m_adjust = gtk_range_get_adjustment( GTK_RANGE(m_widget) ); - gtk_signal_connect( GTK_OBJECT(m_adjust), - "value_changed", - (GtkSignalFunc) gtk_slider_callback, - (gpointer) this ); + GtkEnableEvents(); SetRange( minValue, maxValue ); SetValue( value ); @@ -166,7 +163,11 @@ void wxSlider::SetValue( int value ) m_adjust->value = fpos; + GtkDisableEvents(); + gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "value_changed" ); + + GtkEnableEvents(); } void wxSlider::SetRange( int minValue, int maxValue ) @@ -185,7 +186,11 @@ void wxSlider::SetRange( int minValue, int maxValue ) m_adjust->step_increment = 1.0; m_adjust->page_increment = ceil((fmax-fmin) / 10.0); + GtkDisableEvents(); + gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "changed" ); + + GtkEnableEvents(); } int wxSlider::GetMin() const @@ -206,7 +211,11 @@ void wxSlider::SetPageSize( int pageSize ) m_adjust->page_increment = fpage; + GtkDisableEvents(); + gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "changed" ); + + GtkEnableEvents(); } int wxSlider::GetPageSize() const @@ -222,7 +231,11 @@ void wxSlider::SetThumbLength( int len ) m_adjust->page_size = flen; + GtkDisableEvents(); + gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "changed" ); + + GtkEnableEvents(); } int wxSlider::GetThumbLength() const @@ -242,14 +255,15 @@ int wxSlider::GetLineSize() const bool wxSlider::IsOwnGtkWindow( GdkWindow *window ) { GtkRange *range = GTK_RANGE(m_widget); +#ifdef __WXGTK20__ + return (range->event_window == window); +#else 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 - ); + || (window == range->step_back) ); +#endif } void wxSlider::ApplyWidgetStyle() @@ -258,4 +272,19 @@ void wxSlider::ApplyWidgetStyle() gtk_widget_set_style( m_widget, m_widgetStyle ); } +void wxSlider::GtkDisableEvents() +{ + gtk_signal_disconnect_by_func( GTK_OBJECT(m_adjust), + GTK_SIGNAL_FUNC(gtk_slider_callback), + (gpointer) this ); +} + +void wxSlider::GtkEnableEvents() +{ + gtk_signal_connect( GTK_OBJECT (m_adjust), + "value_changed", + GTK_SIGNAL_FUNC(gtk_slider_callback), + (gpointer) this ); +} + #endif