Added speed-up for font-loading (a bit simplistic),

Moving between items in a radiobox works again,
  Tried to remove remaining gap in a wxStaticBox that
    has no text-label.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4642 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
1999-11-21 11:32:06 +00:00
parent 7eef8db20d
commit 2e0e025ecd
6 changed files with 164 additions and 4 deletions

View File

@@ -62,6 +62,57 @@ static void gtk_radiobutton_clicked_callback( GtkWidget *WXUNUSED(widget), wxRad
rb->GetEventHandler()->ProcessEvent(event);
}
//-----------------------------------------------------------------------------
// "key_press_event"
//-----------------------------------------------------------------------------
static gint gtk_radiobox_keypress_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxRadioBox *rb )
{
if (g_isIdle)
wxapp_install_idle_handler();
if (!rb->m_hasVMT) return FALSE;
if (g_blockEventsOnDrag) return FALSE;
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;
}
//-----------------------------------------------------------------------------
// wxRadioBox
//-----------------------------------------------------------------------------
@@ -111,6 +162,9 @@ bool wxRadioBox::Create( wxWindow *parent, wxWindowID id, const wxString& title,
m_radio = GTK_RADIO_BUTTON( gtk_radio_button_new_with_label( radio_button_group, label.mbc_str() ) );
gtk_signal_connect( GTK_OBJECT(m_radio), "key_press_event",
GTK_SIGNAL_FUNC(gtk_radiobox_keypress_callback), (gpointer)this );
m_boxes.Append( (wxObject*) m_radio );
ConnectWidget( GTK_WIDGET(m_radio) );