static void
gtkcombo_text_changed_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo )
{
- if (g_isIdle) wxapp_install_idle_handler();
-
if (combo->m_ignoreNextUpdate)
{
combo->m_ignoreNextUpdate = false;
static void
gtkcombo_combo_select_child_callback( GtkList *WXUNUSED(list), GtkWidget *WXUNUSED(widget), wxComboBox *combo )
{
- if (g_isIdle) wxapp_install_idle_handler();
-
if (!combo->m_hasVMT) return;
if (g_blockEventsOnDrag) return;
static void
gtkcombobox_text_changed_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo )
{
- if (g_isIdle) wxapp_install_idle_handler();
-
if (!combo->m_hasVMT) return;
wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, combo->GetId() );
static void
gtkcombobox_changed_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo )
{
- if (g_isIdle) wxapp_install_idle_handler();
-
if (!combo->m_hasVMT) return;
+ if (combo->GetSelection() == -1)
+ return;
+
wxCommandEvent event( wxEVT_COMMAND_COMBOBOX_SELECTED, combo->GetId() );
event.SetInt( combo->GetSelection() );
event.SetString( combo->GetStringSelection() );
combo->GetEventHandler()->ProcessEvent( event );
}
}
+
#endif
//-----------------------------------------------------------------------------
const wxString& name )
{
m_ignoreNextUpdate = false;
- m_needParent = true;
- m_acceptsFocus = true;
m_prevSelection = 0;
if (!PreCreation( parent, pos, size ) ||
g_signal_connect_after (m_widget, "changed",
G_CALLBACK (gtkcombobox_changed_callback), this);
+
}
else
#endif
this);
g_signal_connect_after (entry, "changed",
G_CALLBACK (gtkcombo_text_changed_callback), this);
-
- // This is required for tool bar support
- // Doesn't currently work
-// wxSize setsize = GetSize();
-// gtk_widget_set_size_request( m_widget, setsize.x, setsize.y );
}
- SetBestSize(size); // need this too because this is a wxControlWithItems
-
+ SetInitialSize(size); // need this too because this is a wxControlWithItems
return true;
}
GtkRcStyle *style = CreateWidgetStyle();
if (style)
{
- gtk_widget_modify_style( GTK_WIDGET( list_item ), style );
+ gtk_widget_modify_style(list_item, style);
GtkBin *bin = GTK_BIN( list_item );
- GtkWidget *label = GTK_WIDGET( bin->child );
+ GtkWidget *label = bin->child;
gtk_widget_modify_style( label, style );
gtk_rc_style_unref( style );
}
wxString tmp;
if (!value.IsNull()) tmp = value;
+
+ DisableEvents();
gtk_entry_set_text( entry, wxGTK_CONV( tmp ) );
+ EnableEvents();
InvalidateBestSize();
}
if (value.IsNull()) return;
gint pos = (gint)to;
-#if wxUSE_UNICODE
- wxCharBuffer buffer = wxConvUTF8.cWX2MB( value );
- gtk_editable_insert_text( GTK_EDITABLE(entry), (const char*) buffer, strlen( (const char*) buffer ), &pos );
+#if wxUSE_UNICODE_UTF8
+ const char *utf8 = value.utf8_str();
#else
- gtk_editable_insert_text( GTK_EDITABLE(entry), value.c_str(), value.length(), &pos );
+ wxCharBuffer buffer(value.utf8_str());
+ char char *utf8 = buffer;
#endif
+ gtk_editable_insert_text(GTK_EDITABLE(entry), utf8, strlen(utf8), &pos);
}
void wxComboBox::SetSelection( long from, long to )
return GTK_WIDGET( entry );
}
-bool wxComboBox::IsOwnGtkWindow( GdkWindow *window )
+GdkWindow *wxComboBox::GTKGetWindow(wxArrayGdkWindows& windows) const
{
- GtkEntry *entry = NULL;
#ifdef __WXGTK24__
if (!gtk_check_version(2,4,0))
{
- entry = GTK_ENTRY( GTK_BIN(m_widget)->child );
- return (window == entry->text_area);
+ wxUnusedVar(windows);
+
+ return GTK_ENTRY(GTK_BIN(m_widget)->child)->text_area;
}
else
-#endif
+#endif // GTK+ 2.4
{
- entry = GTK_ENTRY( GTK_COMBO(m_widget)->entry );
- return ( (window == entry->text_area) ||
- (window == GTK_COMBO(m_widget)->button->window ) );
+ windows.push_back(GTK_ENTRY(GTK_COMBO(m_widget)->entry)->text_area);
+ windows.push_back(GTK_COMBO(m_widget)->button->window);
+
+ // indicate that we return multiple windows in the windows array
+ return NULL;
}
}