| 3213 |
3213 |
| 3214 return path; |
3214 return path; |
| 3215 } |
3215 } |
| 3216 #endif |
3216 #endif |
| 3217 |
3217 |
| |
3218 static void |
| |
3219 combo_box_changed_cb(GtkComboBox *combo_box, GtkEntry *entry) |
| |
3220 { |
| |
3221 char *text = gtk_combo_box_get_active_text(combo_box); |
| |
3222 gtk_entry_set_text(entry, text ? text : ""); |
| |
3223 g_free(text); |
| |
3224 } |
| |
3225 |
| |
3226 static gboolean |
| |
3227 entry_key_pressed_cb(GtkWidget *entry, GdkEventKey *key, GtkComboBox *combo) |
| |
3228 { |
| |
3229 if (key->keyval == GDK_Down || key->keyval == GDK_Up) { |
| |
3230 gtk_combo_box_popup(combo); |
| |
3231 return TRUE; |
| |
3232 } |
| |
3233 return FALSE; |
| |
3234 } |
| |
3235 |
| |
3236 GtkWidget * |
| |
3237 pidgin_text_combo_box_entry_new(const char *default_item, GList *items) |
| |
3238 { |
| |
3239 GtkComboBox *ret = NULL; |
| |
3240 GtkWidget *the_entry = NULL; |
| |
3241 |
| |
3242 ret = GTK_COMBO_BOX(gtk_combo_box_new_text()); |
| |
3243 the_entry = gtk_entry_new(); |
| |
3244 gtk_container_add(GTK_CONTAINER(ret), the_entry); |
| |
3245 |
| |
3246 if (default_item) |
| |
3247 gtk_entry_set_text(GTK_ENTRY(the_entry), default_item); |
| |
3248 |
| |
3249 for (; items != NULL ; items = items->next) { |
| |
3250 char *text = items->data; |
| |
3251 if (text && *text) |
| |
3252 gtk_combo_box_append_text(ret, text); |
| |
3253 } |
| |
3254 |
| |
3255 g_signal_connect(G_OBJECT(ret), "changed", (GCallback)combo_box_changed_cb, the_entry); |
| |
3256 g_signal_connect_after(G_OBJECT(the_entry), "key-press-event", G_CALLBACK(entry_key_pressed_cb), ret); |
| |
3257 |
| |
3258 return GTK_WIDGET(ret); |
| |
3259 } |
| |
3260 |
| |
3261 const char *pidgin_text_combo_box_entry_get_text(GtkWidget *widget) |
| |
3262 { |
| |
3263 return gtk_entry_get_text(GTK_ENTRY(GTK_BIN((widget))->child)); |
| |
3264 } |
| |
3265 |
| |
3266 void pidgin_text_combo_box_entry_set_text(GtkWidget *widget, const char *text) |
| |
3267 { |
| |
3268 gtk_entry_set_text(GTK_ENTRY(GTK_BIN((widget))->child), (text)); |
| |
3269 } |
| |
3270 |