+ if ((win->GetEventHandler()->ProcessEvent( event )) &&
+ !event.IsAllowed() )
+ {
+ /* program has vetoed */
+ win->m_adjust->value = win->m_oldPos;
+
+ g_signal_handlers_disconnect_by_func (win->m_adjust,
+ (gpointer) gtk_spinbutt_callback,
+ win);
+
+ g_signal_emit_by_name (win->m_adjust, "value_changed");
+
+ g_signal_connect (win->m_adjust, "value_changed",
+ G_CALLBACK (gtk_spinbutt_callback), win);
+ return;
+ }
+
+ win->m_oldPos = win->m_adjust->value;
+
+ /* always send a thumbtrack event */
+ if (command != wxEVT_SCROLL_THUMBTRACK)
+ {
+ command = wxEVT_SCROLL_THUMBTRACK;
+ wxSpinEvent event2( command, win->GetId());
+ event2.SetPosition( value );
+ event2.SetEventObject( win );
+ win->GetEventHandler()->ProcessEvent( event2 );
+ }
+}