pidgin/prefs/pidginprefs.c

changeset 41382
b45e9fceeae9
parent 41381
acedeb1e8804
child 41383
686ea9361312
equal deleted inserted replaced
41381:acedeb1e8804 41382:b45e9fceeae9
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

mercurial