]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/listbox.cpp
Eliminated some warnings under Windows; wxGetHomeDir problem in wxFile;
[wxWidgets.git] / src / gtk1 / listbox.cpp
index fa5a38a225c8c6dfeb86e32faa1d8d832cde5e21..4732b2814d36a9d46f85eb764f805b2af9382788 100644 (file)
@@ -85,7 +85,7 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id,
   
   m_list = GTK_LIST( gtk_list_new() );
   
-  GtkSelectionMode mode = GTK_SELECTION_SINGLE;
+  GtkSelectionMode mode = GTK_SELECTION_BROWSE;
   if (style & wxLB_MULTIPLE)
     mode = GTK_SELECTION_MULTIPLE;
   else if (style & wxLB_EXTENDED)
@@ -96,6 +96,11 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id,
   gtk_container_add (GTK_CONTAINER(m_widget), GTK_WIDGET(m_list) );
   gtk_widget_show( GTK_WIDGET(m_list) );
   
+  wxSize newSize = size;
+  if (newSize.x == -1) newSize.x = 100;
+  if (newSize.y == -1) newSize.y = 110;
+  SetSize( newSize.x, newSize.y );
+  
   for (int i = 0; i < n; i++)
   {
     GtkWidget *list_item;
@@ -222,19 +227,14 @@ char *wxListBox::GetClientData( int n ) const
 
 int wxListBox::GetSelection(void) const
 {
-  GList *selection = m_list->selection;
-  if (selection)
+  GList *child = m_list->children;
+  int count = 0;
+  while (child)
   {
-    GList *child = m_list->children;
-    int count = 0;
-    while (child)
-    {
-      if (child->data == selection->data) return count;
-      count++;
-      child = child->next;
-    }
+    if (GTK_WIDGET(child->data)->state == GTK_STATE_SELECTED) return count;
+    count++;
+    child = child->next;
   }
-  wxFAIL_MSG("wrong listbox index");
   return -1;
 }
 
@@ -426,4 +426,19 @@ void wxListBox::SetFont( const wxFont &font )
   }
 }
 
+bool wxListBox::IsOwnGtkWindow( GdkWindow *window )
+{
+  if (wxWindow::IsOwnGtkWindow( window )) return TRUE;
+  
+  GList *child = m_list->children;
+  while (child)
+  {
+    GtkBin *bin = (GtkBin*) child->data;
+    if (bin->child->window == window) return TRUE;
+    child = child->next;
+  }
+  
+  return FALSE;
+}
+