comparison pidgin/gtksavedstatuses.c @ 31816:917c597beb97

Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073. committer: John Bailey <rekkanoryo@rekkanoryo.org>
author Gabriel Schulhof <nix@go-nix.ca>
date Sat, 08 Jan 2011 03:45:42 +0000
parents 551253814063
children
comparison
equal deleted inserted replaced
31815:d169a587901f 31816:917c597beb97
436 } 436 }
437 437
438 static GtkWidget * 438 static GtkWidget *
439 create_saved_status_list(StatusWindow *dialog) 439 create_saved_status_list(StatusWindow *dialog)
440 { 440 {
441 GtkWidget *sw;
442 GtkWidget *treeview; 441 GtkWidget *treeview;
443 GtkTreeSelection *sel; 442 GtkTreeSelection *sel;
444 GtkTreeViewColumn *column; 443 GtkTreeViewColumn *column;
445 GtkCellRenderer *renderer; 444 GtkCellRenderer *renderer;
446
447 /* Create the scrolled window */
448 sw = gtk_scrolled_window_new(0, 0);
449 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
450 GTK_POLICY_AUTOMATIC,
451 GTK_POLICY_ALWAYS);
452 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
453 GTK_SHADOW_IN);
454 445
455 /* Create the list model */ 446 /* Create the list model */
456 dialog->model = gtk_list_store_new(STATUS_WINDOW_NUM_COLUMNS, 447 dialog->model = gtk_list_store_new(STATUS_WINDOW_NUM_COLUMNS,
457 G_TYPE_STRING, 448 G_TYPE_STRING,
458 G_TYPE_STRING, 449 G_TYPE_STRING,
469 460
470 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); 461 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
471 gtk_tree_selection_set_mode(sel, GTK_SELECTION_MULTIPLE); 462 gtk_tree_selection_set_mode(sel, GTK_SELECTION_MULTIPLE);
472 g_signal_connect(G_OBJECT(sel), "changed", 463 g_signal_connect(G_OBJECT(sel), "changed",
473 G_CALLBACK(status_selected_cb), dialog); 464 G_CALLBACK(status_selected_cb), dialog);
474
475 gtk_container_add(GTK_CONTAINER(sw), treeview);
476 465
477 /* Add columns */ 466 /* Add columns */
478 column = gtk_tree_view_column_new(); 467 column = gtk_tree_view_column_new();
479 gtk_tree_view_column_set_title(column, _("Title")); 468 gtk_tree_view_column_set_title(column, _("Title"));
480 gtk_tree_view_column_set_resizable(column, TRUE); 469 gtk_tree_view_column_set_resizable(column, TRUE);
525 GTK_SORT_ASCENDING); 514 GTK_SORT_ASCENDING);
526 515
527 /* Populate list */ 516 /* Populate list */
528 populate_saved_status_list(dialog); 517 populate_saved_status_list(dialog);
529 518
530 gtk_widget_show_all(sw); 519 gtk_widget_show_all(treeview);
531 520
532 return sw; 521 return pidgin_make_scrollable(treeview, GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS, GTK_SHADOW_IN, -1, -1);
533 } 522 }
534 523
535 static gboolean 524 static gboolean
536 configure_cb(GtkWidget *widget, GdkEventConfigure *event, StatusWindow *dialog) 525 configure_cb(GtkWidget *widget, GdkEventConfigure *event, StatusWindow *dialog)
537 { 526 {
1090 GtkWidget *expander; 1079 GtkWidget *expander;
1091 GtkWidget *dropdown; 1080 GtkWidget *dropdown;
1092 GtkWidget *entry; 1081 GtkWidget *entry;
1093 GtkWidget *frame; 1082 GtkWidget *frame;
1094 GtkWidget *hbox; 1083 GtkWidget *hbox;
1095 GtkWidget *sw;
1096 GtkWidget *text; 1084 GtkWidget *text;
1097 GtkWidget *toolbar; 1085 GtkWidget *toolbar;
1098 GtkWidget *vbox; 1086 GtkWidget *vbox;
1099 GtkWidget *win; 1087 GtkWidget *win;
1100 GList *focus_chain = NULL; 1088 GList *focus_chain = NULL;
1178 gtk_box_pack_start(GTK_BOX(vbox), expander, FALSE, FALSE, 0); 1166 gtk_box_pack_start(GTK_BOX(vbox), expander, FALSE, FALSE, 0);
1179 1167
1180 /* Setup the box that the expander will cover */ 1168 /* Setup the box that the expander will cover */
1181 dbox = gtk_vbox_new(FALSE, PIDGIN_HIG_CAT_SPACE); 1169 dbox = gtk_vbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
1182 gtk_container_add(GTK_CONTAINER(expander), dbox); 1170 gtk_container_add(GTK_CONTAINER(expander), dbox);
1183
1184 /* Different status message treeview */
1185 sw = gtk_scrolled_window_new(NULL, NULL);
1186 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
1187 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
1188 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
1189 GTK_SHADOW_IN);
1190 gtk_box_pack_start(GTK_BOX(dbox), sw, TRUE, TRUE, 0);
1191 1171
1192 /* Create the list model */ 1172 /* Create the list model */
1193 dialog->model = gtk_list_store_new(STATUS_EDITOR_NUM_COLUMNS, 1173 dialog->model = gtk_list_store_new(STATUS_EDITOR_NUM_COLUMNS,
1194 G_TYPE_POINTER, 1174 G_TYPE_POINTER,
1195 G_TYPE_POINTER, 1175 G_TYPE_POINTER,
1203 1183
1204 /* Create the treeview */ 1184 /* Create the treeview */
1205 dialog->treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(dialog->model)); 1185 dialog->treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(dialog->model));
1206 gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(dialog->treeview), TRUE); 1186 gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(dialog->treeview), TRUE);
1207 gtk_widget_set_size_request(dialog->treeview, -1, 150); 1187 gtk_widget_set_size_request(dialog->treeview, -1, 150);
1208 gtk_container_add(GTK_CONTAINER(sw), dialog->treeview); 1188 gtk_box_pack_start(GTK_BOX(dbox),
1189 pidgin_make_scrollable(dialog->treeview, GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS, GTK_SHADOW_IN, -1, -1),
1190 TRUE, TRUE, 0);
1209 1191
1210 /* Add columns */ 1192 /* Add columns */
1211 status_editor_add_columns(dialog); 1193 status_editor_add_columns(dialog);
1212 1194
1213 /* Populate list */ 1195 /* Populate list */