X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c918b2cda24daa062cc5fe4f5dd1dbd4fb6edaa3..4913272f9cdead94a6d1470e51d6fb14946b50e0:/src/gtk/slider.cpp diff --git a/src/gtk/slider.cpp b/src/gtk/slider.cpp index 3eaaba17d7..5cde6b19f6 100644 --- a/src/gtk/slider.cpp +++ b/src/gtk/slider.cpp @@ -12,15 +12,11 @@ #if wxUSE_SLIDER -#ifdef __VMS - //Missing definition in OpenVMS C++ header files. - double round(double __x); -#endif - #include "wx/slider.h" #ifndef WX_PRECOMP #include "wx/utils.h" + #include "wx/math.h" #endif #include "wx/gtk/private.h" @@ -133,8 +129,8 @@ gtk_value_changed(GtkRange* range, wxSlider* win) if (!win->m_hasVMT) return; if (g_blockEventsOnDrag) return; - GtkAdjustment* adj = range->adjustment; - const int pos = int(round(adj->value)); + GtkAdjustment* adj = gtk_range_get_adjustment (range); + const int pos = wxRound(adj->value); const double oldPos = win->m_pos; win->m_pos = adj->value; if (win->m_blockScrollEvent) @@ -183,7 +179,7 @@ gtk_value_changed(GtkRange* range, wxSlider* win) win->m_scrollEventType = GTK_SCROLL_NONE; // If integral position has changed - if (int(round(oldPos)) != pos) + if (wxRound(oldPos) != pos) { wxCHECK_RET(eventType != wxEVT_NULL, _T("Unknown slider scroll event type")); ProcessScrollEvent(win, eventType); @@ -229,7 +225,7 @@ gtk_event_after(GtkRange* range, GdkEvent* event, wxSlider* win) { if (event->type == GDK_BUTTON_RELEASE) { - g_signal_handlers_block_by_func(range, (void*)gtk_event_after, win); + g_signal_handlers_block_by_func(range, (gpointer) gtk_event_after, win); if (win->m_needThumbRelease) { @@ -238,7 +234,7 @@ gtk_event_after(GtkRange* range, GdkEvent* event, wxSlider* win) } // Keep slider at an integral position win->BlockScrollEvent(); - gtk_range_set_value((GtkRange*)win->m_widget, win->GetValue()); + gtk_range_set_value(GTK_RANGE (win->m_widget), win->GetValue()); win->UnblockScrollEvent(); } } @@ -256,7 +252,7 @@ gtk_button_release_event(GtkRange* range, GdkEventButton*, wxSlider* win) if (win->m_isScrolling) { win->m_isScrolling = false; - g_signal_handlers_unblock_by_func(range, (void*)gtk_event_after, win); + g_signal_handlers_unblock_by_func(range, (gpointer) gtk_event_after, win); } return false; } @@ -270,7 +266,7 @@ extern "C" { static gchar* gtk_format_value(GtkScale*, double value, void*) { // Format value as nearest integer - return g_strdup_printf("%d", int(round(value))); + return g_strdup_printf("%d", wxRound(value)); } } @@ -311,9 +307,9 @@ bool wxSlider::Create(wxWindow *parent, wxWindowID id, else m_widget = gtk_hscale_new( (GtkAdjustment *) NULL ); - gtk_scale_set_draw_value((GtkScale*)m_widget, (style & wxSL_LABELS) != 0); + gtk_scale_set_draw_value(GTK_SCALE (m_widget), (style & wxSL_LABELS) != 0); // Keep full precision in position value - gtk_scale_set_digits((GtkScale*)m_widget, -1); + gtk_scale_set_digits(GTK_SCALE (m_widget), -1); if (style & wxSL_INVERSE) gtk_range_set_inverted( GTK_RANGE(m_widget), TRUE ); @@ -340,7 +336,7 @@ bool wxSlider::Create(wxWindow *parent, wxWindowID id, int wxSlider::GetValue() const { - return int(round(m_pos)); + return wxRound(m_pos); } void wxSlider::SetValue( int value ) @@ -348,7 +344,7 @@ void wxSlider::SetValue( int value ) if (GetValue() != value) { BlockScrollEvent(); - gtk_range_set_value((GtkRange*)m_widget, value); + gtk_range_set_value(GTK_RANGE (m_widget), value); UnblockScrollEvent(); } } @@ -356,31 +352,31 @@ void wxSlider::SetValue( int value ) void wxSlider::SetRange( int minValue, int maxValue ) { BlockScrollEvent(); - gtk_range_set_range((GtkRange*)m_widget, minValue, maxValue); - gtk_range_set_increments((GtkRange*)m_widget, 1, (maxValue - minValue + 9) / 10); + gtk_range_set_range(GTK_RANGE (m_widget), minValue, maxValue); + gtk_range_set_increments(GTK_RANGE (m_widget), 1, (maxValue - minValue + 9) / 10); UnblockScrollEvent(); } int wxSlider::GetMin() const { - return int(((GtkRange*)m_widget)->adjustment->lower); + return int(gtk_range_get_adjustment (GTK_RANGE (m_widget))->lower); } int wxSlider::GetMax() const { - return int(((GtkRange*)m_widget)->adjustment->upper); + return int(gtk_range_get_adjustment (GTK_RANGE (m_widget))->upper); } void wxSlider::SetPageSize( int pageSize ) { BlockScrollEvent(); - gtk_range_set_increments((GtkRange*)m_widget, 1, pageSize); + gtk_range_set_increments(GTK_RANGE (m_widget), GetLineSize(), pageSize); UnblockScrollEvent(); } int wxSlider::GetPageSize() const { - return int(((GtkRange*)m_widget)->adjustment->page_increment); + return int(gtk_range_get_adjustment (GTK_RANGE (m_widget))->page_increment); } // GTK does not support changing the size of the slider @@ -393,19 +389,21 @@ int wxSlider::GetThumbLength() const return 0; } -void wxSlider::SetLineSize( int WXUNUSED(lineSize) ) +void wxSlider::SetLineSize( int lineSize ) { + BlockScrollEvent(); + gtk_range_set_increments(GTK_RANGE (m_widget), lineSize, GetPageSize()); + UnblockScrollEvent(); } int wxSlider::GetLineSize() const { - return 0; + return int(gtk_range_get_adjustment (GTK_RANGE (m_widget))->step_increment); } -bool wxSlider::IsOwnGtkWindow( GdkWindow *window ) +GdkWindow *wxSlider::GTKGetWindow(wxArrayGdkWindows& WXUNUSED(windows)) const { - GtkRange *range = GTK_RANGE(m_widget); - return (range->event_window == window); + return GTK_RANGE(m_widget)->event_window; } // static