]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/combobox.cpp
Empty notebooks show up again. I'm afraid this
[wxWidgets.git] / src / gtk / combobox.cpp
index cb5a74135aea13b0d37f14fc84018c6b6a00b854..bec8f16668b3415f3526a426c94c44f5bbb6a88a 100644 (file)
@@ -12,6 +12,7 @@
 #endif
 
 #include "wx/combobox.h"
 #endif
 
 #include "wx/combobox.h"
+#include "wx/settings.h"
 
 #include <wx/intl.h>
 
 
 #include <wx/intl.h>
 
@@ -40,7 +41,7 @@ gtk_combo_clicked_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo )
 {
     if (g_isIdle) wxapp_install_idle_handler();
 
 {
     if (g_isIdle) wxapp_install_idle_handler();
 
-    if (!combo->HasVMT()) return;
+    if (!combo->m_hasVMT) return;
 
     if (g_blockEventsOnDrag) return;
 
 
     if (g_blockEventsOnDrag) return;
 
@@ -69,6 +70,8 @@ gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo )
 {
     if (g_isIdle) wxapp_install_idle_handler();
     
 {
     if (g_isIdle) wxapp_install_idle_handler();
     
+    if (!combo->m_hasVMT) return;
+
     wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, combo->GetId() );
     event.SetString( combo->GetValue() );
     event.SetEventObject( combo );
     wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, combo->GetId() );
     event.SetString( combo->GetValue() );
     event.SetEventObject( combo );
@@ -116,6 +119,10 @@ bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value,
 
     for (int i = 0; i < n; i++)
     {
 
     for (int i = 0; i < n; i++)
     {
+        /* don't send first event, which GTK sends aways when
+          inserting the first item */
+        m_alreadySent = TRUE;
+    
         GtkWidget *list_item = gtk_list_item_new_with_label( choices[i].mbc_str() );
 
         m_clientDataList.Append( (wxObject*)NULL );
         GtkWidget *list_item = gtk_list_item_new_with_label( choices[i].mbc_str() );
 
         m_clientDataList.Append( (wxObject*)NULL );
@@ -123,15 +130,13 @@ bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value,
 
         gtk_container_add( GTK_CONTAINER(list), list_item );
 
 
         gtk_container_add( GTK_CONTAINER(list), list_item );
 
-        gtk_widget_show( list_item );
-
         gtk_signal_connect( GTK_OBJECT(list_item), "select",
         gtk_signal_connect( GTK_OBJECT(list_item), "select",
-        GTK_SIGNAL_FUNC(gtk_combo_clicked_callback), (gpointer)this );
-    }
+           GTK_SIGNAL_FUNC(gtk_combo_clicked_callback), (gpointer)this );
 
 
-    m_parent->AddChild( this );
+        gtk_widget_show( list_item );
+    }
 
 
-    (m_parent->m_insertCallback)( m_parent, this );
+    m_parent->DoAddChild( this );
 
     PostCreation();
 
 
     PostCreation();
 
@@ -145,7 +150,7 @@ bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value,
     gtk_signal_connect( GTK_OBJECT(GTK_COMBO(m_widget)->entry), "changed",
       GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
 
     gtk_signal_connect( GTK_OBJECT(GTK_COMBO(m_widget)->entry), "changed",
       GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
 
-    SetBackgroundColour( parent->GetBackgroundColour() );
+    SetBackgroundColour( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_WINDOW ) );
     SetForegroundColour( parent->GetForegroundColour() );
     SetFont( parent->GetFont() );
 
     SetForegroundColour( parent->GetForegroundColour() );
     SetFont( parent->GetFont() );
 
@@ -321,7 +326,7 @@ int wxComboBox::FindString( const wxString &item )
     {
         GtkBin *bin = GTK_BIN( child->data );
         GtkLabel *label = GTK_LABEL( bin->child );
     {
         GtkBin *bin = GTK_BIN( child->data );
         GtkLabel *label = GTK_LABEL( bin->child );
-        if (item == label->label)
+        if (item == wxString(label->label,*wxConvCurrent))
             return count;
         count++;
         child = child->next;
             return count;
         count++;
         child = child->next;
@@ -366,7 +371,7 @@ wxString wxComboBox::GetString( int n ) const
     {
         GtkBin *bin = GTK_BIN( child->data );
         GtkLabel *label = GTK_LABEL( bin->child );
     {
         GtkBin *bin = GTK_BIN( child->data );
         GtkLabel *label = GTK_LABEL( bin->child );
-        str = label->label;
+        str = wxString(label->label,*wxConvCurrent);
     }
     else
     {
     }
     else
     {
@@ -386,7 +391,7 @@ wxString wxComboBox::GetStringSelection() const
     if (selection)
     {
         GtkBin *bin = GTK_BIN( selection->data );
     if (selection)
     {
         GtkBin *bin = GTK_BIN( selection->data );
-        wxString tmp = GTK_LABEL( bin->child )->label;
+        wxString tmp = wxString(GTK_LABEL( bin->child )->label,*wxConvCurrent);
         return tmp;
     }
 
         return tmp;
     }
 
@@ -427,7 +432,7 @@ void wxComboBox::SetStringSelection( const wxString &string )
 wxString wxComboBox::GetValue() const
 {
     GtkWidget *entry = GTK_COMBO(m_widget)->entry;
 wxString wxComboBox::GetValue() const
 {
     GtkWidget *entry = GTK_COMBO(m_widget)->entry;
-    wxString tmp = gtk_entry_get_text( GTK_ENTRY(entry) );
+    wxString tmp = wxString(gtk_entry_get_text( GTK_ENTRY(entry) ),*wxConvCurrent);
     return tmp;
 }
 
     return tmp;
 }
 
@@ -577,7 +582,9 @@ void wxComboBox::OnChar( wxKeyEvent &event )
 
 void wxComboBox::OnSize( wxSizeEvent &event )
 {
 
 void wxComboBox::OnSize( wxSizeEvent &event )
 {
-    wxControl::OnSize( event );
+    event.Skip();
+    
+    return;
 
     int w = 21;
     gtk_widget_set_usize( GTK_COMBO(m_widget)->entry, m_width-w-1, m_height );
 
     int w = 21;
     gtk_widget_set_usize( GTK_COMBO(m_widget)->entry, m_width-w-1, m_height );
@@ -590,7 +597,7 @@ void wxComboBox::ApplyWidgetStyle()
 {
     SetWidgetStyle();
 
 {
     SetWidgetStyle();
 
-    gtk_widget_set_style( GTK_COMBO(m_widget)->button, m_widgetStyle );
+//    gtk_widget_set_style( GTK_COMBO(m_widget)->button, m_widgetStyle );
     gtk_widget_set_style( GTK_COMBO(m_widget)->entry, m_widgetStyle );
     gtk_widget_set_style( GTK_COMBO(m_widget)->list, m_widgetStyle );
 
     gtk_widget_set_style( GTK_COMBO(m_widget)->entry, m_widgetStyle );
     gtk_widget_set_style( GTK_COMBO(m_widget)->list, m_widgetStyle );