n = -1;
}
- event.m_commandInt = n;
+ event.SetInt(n);
listbox->GetEventHandler()->ProcessEvent( event );
}
#endif // wxUSE_CHECKLISTBOX
+ if ((gdk_event->state == 0) &&
+ (((listbox->GetWindowStyleFlag() & wxLB_MULTIPLE) != 0) ||
+ ((listbox->GetWindowStyleFlag() & wxLB_EXTENDED) != 0)) )
+ {
+ listbox->m_blockEvent = TRUE;
+
+ int i;
+ for (i = 0; i < (int)listbox->GetCount(); i++)
+ if (i != sel)
+ gtk_list_unselect_item( GTK_LIST(listbox->m_list), i );
+
+ listbox->m_blockEvent = FALSE;
+
+ return false;
+ }
+
/* emit wxEVT_COMMAND_LISTBOX_DOUBLECLICKED later */
g_hasDoubleClicked = (gdk_event->type == GDK_2BUTTON_PRESS);
{
n = -1;
}
- new_event.m_commandInt = n;
+ new_event.SetInt(n);
listbox->GetEventHandler()->ProcessEvent( new_event );
}
}
n = -1;
}
- event.m_commandInt = n;
+ event.SetInt(n);
// No longer required with new code in wxLB_SINGLE
// listbox->GetEventHandler()->AddPendingEvent( event );
// wxListBox
//-----------------------------------------------------------------------------
+static gint
+gtk_listbox_realized_callback( GtkWidget *m_widget, wxListBox *win )
+{
+ if (g_isIdle)
+ wxapp_install_idle_handler();
+
+ GList *child = win->m_list->children;
+ for (child = win->m_list->children; child != NULL; child = child->next)
+ gtk_widget_show( GTK_WIDGET(child->data) );
+
+ return false;
+}
+
+//-----------------------------------------------------------------------------
+// wxListBox
+//-----------------------------------------------------------------------------
+
IMPLEMENT_DYNAMIC_CLASS(wxListBox,wxControl)
// ----------------------------------------------------------------------------
{
// if style was 0 set single mode
m_windowStyle |= wxLB_SINGLE;
- mode = GTK_SELECTION_MULTIPLE;
+ mode = GTK_SELECTION_SINGLE;
}
gtk_list_set_selection_mode( GTK_LIST(m_list), mode );
gtk_widget_show( GTK_WIDGET(m_list) );
+ gtk_signal_connect( GTK_OBJECT(m_list), "realize",
+ GTK_SIGNAL_FUNC(gtk_listbox_realized_callback), (gpointer) this );
+
if ( style & wxLB_SORT )
{
// this will change DoAppend() behaviour
gtk_signal_connect( GTK_OBJECT(list_item), "focus_out_event",
GTK_SIGNAL_FUNC(gtk_listitem_focus_out_callback), (gpointer)this );
-
ConnectWidget( list_item );
- gtk_widget_show( list_item );
-
if (GTK_WIDGET_REALIZED(m_widget))
{
+ gtk_widget_show( list_item );
+
gtk_widget_realize( list_item );
gtk_widget_realize( GTK_BIN(list_item)->child );
return (GTK_WIDGET(target->data)->state == GTK_STATE_SELECTED) ;
}
-void wxListBox::SetSelection( int n, bool select )
+void wxListBox::DoSetSelection( int n, bool select )
{
wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );