+ if (wxIsKindOf(win, wxSpinCtrl))
+ {
+ wxSpinEvent event(wxEVT_COMMAND_SPINCTRL_UPDATED, win->GetId());
+ event.SetEventObject( win );
+ event.SetPosition((int)(win->m_value + 0.5)); // FIXME should be SetValue
+ event.SetString(GTK_ENTRY(spinbutton)->text);
+ win->HandleWindowEvent( event );
+ }
+ else // wxIsKindOf(win, wxSpinCtrlDouble)
+ {
+ wxSpinDoubleEvent event( wxEVT_COMMAND_SPINCTRLDOUBLE_UPDATED, win->GetId());
+ event.SetEventObject( win );
+ event.SetValue(win->m_value);
+ event.SetString(GTK_ENTRY(spinbutton)->text);
+ win->HandleWindowEvent( event );
+ }
+}
+}
+
+//-----------------------------------------------------------------------------
+// "changed"
+//-----------------------------------------------------------------------------
+
+extern "C" {
+static void
+gtk_changed(GtkSpinButton* spinbutton, wxSpinCtrl* win)
+{
+ if (!win->m_hasVMT)
+ return;
+
+ wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, win->GetId() );