X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2a23d36334c0e84151490766f3ddaf5e53d95ae7..4cb1706ae52c02214a4540c6c4b6882bed5af416:/src/gtk/scrolbar.cpp?ds=sidebyside diff --git a/src/gtk/scrolbar.cpp b/src/gtk/scrolbar.cpp index 1b40fc530b..a165b0c8d2 100644 --- a/src/gtk/scrolbar.cpp +++ b/src/gtk/scrolbar.cpp @@ -63,7 +63,8 @@ static void gtk_scrollbar_callback( GtkAdjustment *adjust, wxScrollBar *win ) 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; - int value = (int)ceil(adjust->value); + double dvalue = adjust->value; + int value = (int)(dvalue < 0 ? dvalue - 0.5 : dvalue + 0.5); int orient = win->HasFlag(wxSB_VERTICAL) ? wxVERTICAL : wxHORIZONTAL; @@ -109,12 +110,11 @@ static gint gtk_scrollbar_button_release_callback( GtkRange *WXUNUSED(widget), if (win->m_isScrolling) { - wxEventType command = wxEVT_SCROLL_THUMBTRACK; + wxEventType command = wxEVT_SCROLL_THUMBRELEASE; int value = (int)ceil(win->m_adjust->value); int dir = win->HasFlag(wxSB_VERTICAL) ? wxVERTICAL : wxHORIZONTAL; wxScrollEvent event( command, value, dir ); - event.SetScrolling( FALSE ); event.SetEventObject( win ); win->GetEventHandler()->ProcessEvent( event ); } @@ -130,7 +130,7 @@ static gint gtk_scrollbar_button_release_callback( GtkRange *WXUNUSED(widget), IMPLEMENT_DYNAMIC_CLASS(wxScrollBar,wxControl) -wxScrollBar::~wxScrollBar(void) +wxScrollBar::~wxScrollBar() { } @@ -145,7 +145,7 @@ bool wxScrollBar::Create(wxWindow *parent, wxWindowID id, !CreateBase( parent, id, pos, size, style, validator, name )) { wxFAIL_MSG( wxT("wxScrollBar creation failed") ); - return FALSE; + return FALSE; } m_oldPos = 0.0; @@ -183,9 +183,10 @@ bool wxScrollBar::Create(wxWindow *parent, wxWindowID id, return TRUE; } -int wxScrollBar::GetThumbPosition(void) const +int wxScrollBar::GetThumbPosition() const { - return (int)(m_adjust->value+0.5); + double val = m_adjust->value; + return (int)(val < 0 ? val - 0.5 : val + 0.5); } int wxScrollBar::GetThumbSize() const @@ -253,7 +254,7 @@ void wxScrollBar::SetScrollbar( int position, int thumbSize, int range, int page } /* Backward compatibility */ -int wxScrollBar::GetValue(void) const +int wxScrollBar::GetValue() const { return GetThumbPosition(); }