]> 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 359adda8d089d0c98a2803685adfc5e9e77d3991..e4f05dc807276336b2790ab9d5f22dc54708e135 100644 (file)
 #include "wx/dynarray.h"
 #include "wx/listbox.h"
 
+//-----------------------------------------------------------------------------
+// data
+//-----------------------------------------------------------------------------
+
+extern bool   g_blockEventsOnDrag;
+
 //-----------------------------------------------------------------------------
 // wxListBox
 //-----------------------------------------------------------------------------
 
-void gtk_listitem_select_callback( GtkWidget *widget, wxListBox *listbox )
+static void gtk_listitem_select_callback( GtkWidget *widget, wxListBox *listbox )
 {
+  if (!listbox->HasVMT()) return;
+  if (g_blockEventsOnDrag) return;
+  
   wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, listbox->GetId() );
   
   event.SetInt( listbox->GetIndex( widget ) );
@@ -84,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 );