| 224 tree_model = gtk_combo_box_get_model(combo_box); |
224 tree_model = gtk_combo_box_get_model(combo_box); |
| 225 if (!gtk_combo_box_get_active_iter(combo_box, &iter)) { |
225 if (!gtk_combo_box_get_active_iter(combo_box, &iter)) { |
| 226 return; |
226 return; |
| 227 } |
227 } |
| 228 |
228 |
| 229 g_object_set_data(G_OBJECT(combo_box), "previously_active", |
|
| 230 g_object_get_data(G_OBJECT(combo_box), "current_active")); |
|
| 231 g_object_set_data(G_OBJECT(combo_box), "current_active", |
|
| 232 GINT_TO_POINTER(gtk_combo_box_get_active(combo_box))); |
|
| 233 |
|
| 234 type = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(combo_box), "type")); |
229 type = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(combo_box), "type")); |
| 235 key = g_object_get_data(G_OBJECT(combo_box), "key"); |
230 key = g_object_get_data(G_OBJECT(combo_box), "key"); |
| 236 if (type == PURPLE_PREF_INT) { |
231 if (type == PURPLE_PREF_INT) { |
| 237 gint value; |
232 gint value; |
| 238 gtk_tree_model_get(tree_model, &iter, PREF_DROPDOWN_VALUE, &value, -1); |
233 gtk_tree_model_get(tree_model, &iter, PREF_DROPDOWN_VALUE, &value, -1); |
| 259 GtkWidget *label = NULL; |
254 GtkWidget *label = NULL; |
| 260 GtkListStore *store = NULL; |
255 GtkListStore *store = NULL; |
| 261 GtkTreeIter iter; |
256 GtkTreeIter iter; |
| 262 GtkTreeIter active; |
257 GtkTreeIter active; |
| 263 GtkCellRenderer *renderer; |
258 GtkCellRenderer *renderer; |
| 264 gpointer current_active; |
|
| 265 |
259 |
| 266 g_return_val_if_fail(menuitems != NULL, NULL); |
260 g_return_val_if_fail(menuitems != NULL, NULL); |
| 267 |
261 |
| 268 if (initial.type == PURPLE_PREF_INT) { |
262 if (initial.type == PURPLE_PREF_INT) { |
| 269 store = gtk_list_store_new(PREF_DROPDOWN_COUNT, G_TYPE_STRING, G_TYPE_INT); |
263 store = gtk_list_store_new(PREF_DROPDOWN_COUNT, G_TYPE_STRING, G_TYPE_INT); |
| 331 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(dropdown), renderer, |
325 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(dropdown), renderer, |
| 332 "text", 0, |
326 "text", 0, |
| 333 NULL); |
327 NULL); |
| 334 |
328 |
| 335 gtk_combo_box_set_active_iter(GTK_COMBO_BOX(dropdown), &active); |
329 gtk_combo_box_set_active_iter(GTK_COMBO_BOX(dropdown), &active); |
| 336 current_active = GINT_TO_POINTER(gtk_combo_box_get_active(GTK_COMBO_BOX( |
|
| 337 dropdown))); |
|
| 338 g_object_set_data(G_OBJECT(dropdown), "current_active", current_active); |
|
| 339 g_object_set_data(G_OBJECT(dropdown), "previously_active", current_active); |
|
| 340 |
330 |
| 341 g_signal_connect(dropdown, "changed", G_CALLBACK(dropdown_set), NULL); |
331 g_signal_connect(dropdown, "changed", G_CALLBACK(dropdown_set), NULL); |
| 342 |
332 |
| 343 pidgin_add_widget_to_vbox(GTK_BOX(box), title, NULL, dropdown, FALSE, &label); |
333 pidgin_add_widget_to_vbox(GTK_BOX(box), title, NULL, dropdown, FALSE, &label); |
| 344 |
334 |
| 417 GtkTreeModel *tree_model; |
407 GtkTreeModel *tree_model; |
| 418 |
408 |
| 419 tree_model = gtk_combo_box_get_model(combo_box); |
409 tree_model = gtk_combo_box_get_model(combo_box); |
| 420 if (!gtk_combo_box_get_active_iter(combo_box, &iter)) |
410 if (!gtk_combo_box_get_active_iter(combo_box, &iter)) |
| 421 return; |
411 return; |
| 422 |
|
| 423 combo->previously_active = combo->current_active; |
|
| 424 combo->current_active = gtk_combo_box_get_active(combo_box); |
|
| 425 |
412 |
| 426 if (combo->type == PURPLE_PREF_INT) { |
413 if (combo->type == PURPLE_PREF_INT) { |
| 427 gtk_tree_model_get(tree_model, &iter, PREF_DROPDOWN_VALUE, |
414 gtk_tree_model_get(tree_model, &iter, PREF_DROPDOWN_VALUE, |
| 428 &combo->value.integer, -1); |
415 &combo->value.integer, -1); |
| 429 purple_prefs_set_int(combo->key, combo->value.integer); |
416 purple_prefs_set_int(combo->key, combo->value.integer); |
| 507 |
494 |
| 508 menuitems = g_list_next(menuitems); |
495 menuitems = g_list_next(menuitems); |
| 509 } |
496 } |
| 510 |
497 |
| 511 gtk_combo_box_set_active_iter(GTK_COMBO_BOX(combo->combo), &active); |
498 gtk_combo_box_set_active_iter(GTK_COMBO_BOX(combo->combo), &active); |
| 512 combo->current_active = gtk_combo_box_get_active( |
|
| 513 GTK_COMBO_BOX(combo->combo)); |
|
| 514 combo->previously_active = combo->current_active; |
|
| 515 |
499 |
| 516 g_signal_connect(G_OBJECT(combo->combo), "changed", |
500 g_signal_connect(G_OBJECT(combo->combo), "changed", |
| 517 G_CALLBACK(bind_dropdown_set), combo); |
501 G_CALLBACK(bind_dropdown_set), combo); |
| 518 } |
502 } |
| 519 |
503 |
| 573 } |
557 } |
| 574 } |
558 } |
| 575 } while (gtk_tree_model_iter_next(store, &iter)); |
559 } while (gtk_tree_model_iter_next(store, &iter)); |
| 576 |
560 |
| 577 gtk_combo_box_set_active_iter(GTK_COMBO_BOX(combo->combo), &active); |
561 gtk_combo_box_set_active_iter(GTK_COMBO_BOX(combo->combo), &active); |
| 578 |
|
| 579 combo->current_active = gtk_combo_box_get_active( |
|
| 580 GTK_COMBO_BOX(combo->combo)); |
|
| 581 combo->previously_active = combo->current_active; |
|
| 582 |
562 |
| 583 g_signal_connect(G_OBJECT(combo->combo), "changed", |
563 g_signal_connect(G_OBJECT(combo->combo), "changed", |
| 584 G_CALLBACK(bind_dropdown_set), combo); |
564 G_CALLBACK(bind_dropdown_set), combo); |
| 585 } |
565 } |
| 586 |
566 |