- win->SetScrolling(FALSE);
-// g_blockEventsOnScroll = FALSE;
-
- gtk_signal_emit_by_name( GTK_OBJECT(win->m_adjust), "value_changed" );
-
- return FALSE;
+ win->m_mouseButtonDown = false;
+ // If thumb tracking
+ if (win->m_isScrolling)
+ {
+ win->m_isScrolling = false;
+ const int value = win->GetThumbPosition();
+ const int orient = win->HasFlag(wxSB_VERTICAL) ? wxVERTICAL : wxHORIZONTAL;
+
+ wxScrollEvent event(wxEVT_SCROLL_THUMBRELEASE, win->GetId(), value, orient);
+ event.SetEventObject(win);
+ // To allow setting scroll position from event handler, sending event must
+ // be deferred until after the GtkRange handler for this signal has run
+ win->GetEventHandler()->AddPendingEvent(event);
+
+ wxScrollEvent event2(wxEVT_SCROLL_CHANGED, win->GetId(), value, orient);
+ event2.SetEventObject(win);
+ win->GetEventHandler()->AddPendingEvent(event2);
+ }
+
+ return false;
+}