gint m_tag;
};
-extern "C" gint wxlistbox_idle_callback( gpointer gdata )
+extern "C" {
+static gint wxlistbox_idle_callback( gpointer gdata )
{
wxlistbox_idle_struct* data = (wxlistbox_idle_struct*) gdata;
gdk_threads_enter();
return TRUE;
}
+}
//-----------------------------------------------------------------------------
// "focus_in_event"
//-----------------------------------------------------------------------------
+extern "C" {
static gint gtk_listitem_focus_in_callback( GtkWidget *widget,
GdkEvent *WXUNUSED(event),
wxWindow *win )
return FALSE;
}
+}
//-----------------------------------------------------------------------------
// "focus_out_event"
//-----------------------------------------------------------------------------
+extern "C" {
static gint gtk_listitem_focus_out_callback( GtkWidget *widget, GdkEventFocus *gdk_event, wxWindowGTK *win )
{
if (g_isIdle)
return FALSE;
}
+}
//-----------------------------------------------------------------------------
// "button_release_event"
this can lead to race conditions so that we emit the dclick event
after the GDK_BUTTON_RELEASE event after the GDK_2BUTTON_PRESS event */
+extern "C" {
static gint
gtk_listbox_button_release_callback( GtkWidget * WXUNUSED(widget),
GdkEventButton * WXUNUSED(gdk_event),
return FALSE;
}
+}
//-----------------------------------------------------------------------------
// "button_press_event"
//-----------------------------------------------------------------------------
+extern "C" {
static gint
gtk_listbox_button_press_callback( GtkWidget *widget,
GdkEventButton *gdk_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);
return FALSE;
}
+}
//-----------------------------------------------------------------------------
// "key_press_event"
//-----------------------------------------------------------------------------
+extern "C" {
static gint
gtk_listbox_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxListBox *listbox )
{
return FALSE;
}
+}
//-----------------------------------------------------------------------------
// "select" and "deselect"
//-----------------------------------------------------------------------------
-static void gtk_listitem_select_cb( GtkWidget *widget, wxListBox *listbox, bool is_selection );
-
-static void gtk_listitem_select_callback( GtkWidget *widget, wxListBox *listbox )
-{
- gtk_listitem_select_cb( widget, listbox, TRUE );
-}
-
-static void gtk_listitem_deselect_callback( GtkWidget *widget, wxListBox *listbox )
-{
- gtk_listitem_select_cb( widget, listbox, FALSE );
-}
-
static void gtk_listitem_select_cb( GtkWidget *widget,
wxListBox *listbox,
bool is_selection )
listbox->GetEventHandler()->ProcessEvent( event );
}
+extern "C" {
+static void gtk_listitem_select_callback( GtkWidget *widget, wxListBox *listbox )
+{
+ gtk_listitem_select_cb( widget, listbox, TRUE );
+}
+}
+
+extern "C" {
+static void gtk_listitem_deselect_callback( GtkWidget *widget, wxListBox *listbox )
+{
+ gtk_listitem_select_cb( widget, listbox, FALSE );
+}
+}
+
//-----------------------------------------------------------------------------
// wxListBox
//-----------------------------------------------------------------------------
+extern "C" {
static gint
gtk_listbox_realized_callback( GtkWidget *m_widget, wxListBox *win )
{
return false;
}
+}
//-----------------------------------------------------------------------------
// wxListBox
{
// 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 );