diff options
author | Jeff Garzik <jgarzik@src.gnome.org> | 1999-01-21 00:37:48 +0000 |
---|---|---|
committer | Jeff Garzik <jgarzik@src.gnome.org> | 1999-01-21 00:37:48 +0000 |
commit | 6e3e247b9a1cdc7fec2197dceda35752f38c8003 (patch) | |
tree | 68c8ba7e932c79152d43cb4580fde846eaa102b1 /gtk/gtkcombo.c | |
parent | df21a7064f0c5130d84e035f820eae197024992b (diff) | |
download | gtk+-6e3e247b9a1cdc7fec2197dceda35752f38c8003.tar.gz |
. Free 'nprefix', closing a memory leak. Spaced out the code a bit to make
.
* gtk/gtkcombo.c (gtk_combo_entry_key_press):
Free 'nprefix', closing a memory leak.
Spaced out the code a bit to make it more readable.
* gtk/gtkhbox.[ch] (gtk_hbox_new),
gtk/gtkvbox.[ch] (gtk_vbox_new):
Change 'homogenous' arg from gint to gboolean.
* gtk/gtktogglebutton.[ch]:
New function gtk_toggle_button_get_active().
Diffstat (limited to 'gtk/gtkcombo.c')
-rw-r--r-- | gtk/gtkcombo.c | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/gtk/gtkcombo.c b/gtk/gtkcombo.c index 8d29d206f7..6857279e95 100644 --- a/gtk/gtkcombo.c +++ b/gtk/gtkcombo.c @@ -125,27 +125,37 @@ gtk_combo_entry_key_press (GtkEntry * entry, GdkEventKey * event, GtkCombo * com gchar* nprefix = NULL; gint pos; - if ( !GTK_LIST(combo->list)->children ) + if ( !GTK_LIST (combo->list)->children ) return FALSE; gtk_signal_emit_stop_by_name (GTK_OBJECT (entry), "key_press_event"); - cmpl = g_completion_new((GCompletionFunc)gtk_combo_func); - g_completion_add_items(cmpl, GTK_LIST(combo->list)->children); - pos = GTK_EDITABLE(entry)->current_pos; - prefix = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, pos); + + cmpl = g_completion_new ((GCompletionFunc)gtk_combo_func); + g_completion_add_items (cmpl, GTK_LIST (combo->list)->children); + + pos = GTK_EDITABLE (entry)->current_pos; + prefix = gtk_editable_get_chars (GTK_EDITABLE (entry), 0, pos); + g_completion_complete(cmpl, prefix, &nprefix); - if (nprefix && strlen(nprefix) > strlen(prefix)) + + if (nprefix && strlen (nprefix) > strlen (prefix)) { - gtk_editable_insert_text(GTK_EDITABLE(entry), nprefix+pos, - strlen(nprefix)-strlen(prefix), &pos); - GTK_EDITABLE(entry)->current_pos = pos; + gtk_editable_insert_text (GTK_EDITABLE (entry), nprefix + pos, + strlen (nprefix) - strlen (prefix), &pos); + GTK_EDITABLE (entry)->current_pos = pos; } - g_free(prefix); - g_completion_free(cmpl); + + if (nprefix) + g_free (nprefix); + g_free (prefix); + g_completion_free (cmpl); + return TRUE; } + if (!combo->use_arrows || !GTK_LIST (combo->list)->children) return FALSE; + li = g_list_find (GTK_LIST (combo->list)->children, gtk_combo_find (combo)); if ((event->keyval == GDK_Up) |