]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/listbox.cpp
compilation problem under Windows fixed (Karsten, you should use a cast when
[wxWidgets.git] / src / gtk / listbox.cpp
index f880a3291ef6f17e1fcfdfa9ec91f079e476f6a2..e4f05dc807276336b2790ab9d5f22dc54708e135 100644 (file)
 #include "wx/dynarray.h"
 #include "wx/listbox.h"
 
+//-----------------------------------------------------------------------------
+// data
+//-----------------------------------------------------------------------------
+
+extern bool   g_blockEventsOnDrag;
+
 //-----------------------------------------------------------------------------
 // wxListBox
 //-----------------------------------------------------------------------------
 
-void gtk_listitem_select_callback( GtkWidget *widget, gpointer data )
+static void gtk_listitem_select_callback( GtkWidget *widget, wxListBox *listbox )
 {
-  wxListBox *listbox = (wxListBox*)data;
-
+  if (!listbox->HasVMT()) return;
+  if (g_blockEventsOnDrag) return;
+  
   wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, listbox->GetId() );
   
   event.SetInt( listbox->GetIndex( widget ) );
@@ -32,10 +39,9 @@ void gtk_listitem_select_callback( GtkWidget *widget, gpointer data )
   GtkLabel *label = GTK_LABEL( bin->child );
   wxString tmp( label->label );
   event.SetString( WXSTRINGCAST(tmp) );
-  
   event.SetEventObject( listbox );
   
-  listbox->ProcessEvent( event );
+  listbox->GetEventHandler()->ProcessEvent( event );
 };
 
 //-----------------------------------------------------------------------------
@@ -87,11 +93,11 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id,
     GtkWidget *list_item;
     list_item = gtk_list_item_new_with_label( choices[i] ); 
   
+    gtk_container_add( GTK_CONTAINER(m_list), list_item );
+    
     gtk_signal_connect( GTK_OBJECT(list_item), "select", 
       GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this );
   
-    gtk_container_add( GTK_CONTAINER(m_list), list_item );
-    
     m_clientData.Append( (wxObject*)NULL );
     
     gtk_widget_show( list_item );