+ if ((gdk_event->keyval != GDK_Up) &&
+ (gdk_event->keyval != GDK_Down) &&
+ (gdk_event->keyval != GDK_Left) &&
+ (gdk_event->keyval != GDK_Right))
+ {
+ return FALSE;
+ }
+
+ wxNode *node = rb->m_boxes.Find( (wxObject*) widget );
+ if (!node)
+ {
+ return FALSE;
+ }
+
+ gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "key_press_event" );
+
+ if ((gdk_event->keyval == GDK_Up) ||
+ (gdk_event->keyval == GDK_Left))
+ {
+ if (node == rb->m_boxes.First())
+ node = rb->m_boxes.Last();
+ else
+ node = node->Previous();
+ }
+ else
+ {
+ if (node == rb->m_boxes.Last())
+ node = rb->m_boxes.First();
+ else
+ node = node->Next();
+ }
+
+ GtkWidget *button = (GtkWidget*) node->Data();
+
+ gtk_widget_grab_focus( button );
+
+ return TRUE;
+}
+
+static gint gtk_radiobutton_focus_in( GtkWidget *widget,
+ GdkEvent *WXUNUSED(event),
+ wxRadioBox *win )