pidgin/gtkrequest.c

branch
cpw.qulogic.gtk3
changeset 32394
f883709bdba4
parent 32378
bdfcbacbeb2b
child 32414
8c5d1edf9da2
equal deleted inserted replaced
32393:69f260ac8ea8 32394:f883709bdba4
103 tips = gtk_tooltips_new(); 103 tips = gtk_tooltips_new();
104 gtk_tooltips_set_tip(tips, image, purple_account_get_username(account), NULL); 104 gtk_tooltips_set_tip(tips, image, purple_account_get_username(account), NULL);
105 #endif 105 #endif
106 106
107 if (GTK_IS_DIALOG(cont)) { 107 if (GTK_IS_DIALOG(cont)) {
108 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(cont)->action_area), image, FALSE, TRUE, 0); 108 gtk_box_pack_start(GTK_BOX(gtk_dialog_get_action_area(GTK_DIALOG(cont))),
109 gtk_box_reorder_child(GTK_BOX(GTK_DIALOG(cont)->action_area), image, 0); 109 image, FALSE, TRUE, 0);
110 gtk_box_reorder_child(GTK_BOX(gtk_dialog_get_action_area(GTK_DIALOG(cont))),
111 image, 0);
110 } else if (GTK_IS_HBOX(cont)) { 112 } else if (GTK_IS_HBOX(cont)) {
111 gtk_misc_set_alignment(GTK_MISC(image), 0, 0); 113 gtk_misc_set_alignment(GTK_MISC(image), 0, 0);
112 gtk_box_pack_end(GTK_BOX(cont), image, FALSE, TRUE, 0); 114 gtk_box_pack_end(GTK_BOX(cont), image, FALSE, TRUE, 0);
113 } 115 }
114 gtk_widget_show(image); 116 gtk_widget_show(image);
261 static void 263 static void
262 multifield_ok_cb(GtkWidget *button, PidginRequestData *data) 264 multifield_ok_cb(GtkWidget *button, PidginRequestData *data)
263 { 265 {
264 generic_response_start(data); 266 generic_response_start(data);
265 267
266 if (!GTK_WIDGET_HAS_FOCUS(button)) 268 if (!gtk_widget_has_focus(button))
267 gtk_widget_grab_focus(button); 269 gtk_widget_grab_focus(button);
268 270
269 if (data->cbs[0] != NULL) 271 if (data->cbs[0] != NULL)
270 ((PurpleRequestFieldsCb)data->cbs[0])(data->user_data, 272 ((PurpleRequestFieldsCb)data->cbs[0])(data->user_data,
271 data->u.multifield.fields); 273 data->u.multifield.fields);
357 g_signal_connect(G_OBJECT(dialog), "response", 359 g_signal_connect(G_OBJECT(dialog), "response",
358 G_CALLBACK(input_response_cb), data); 360 G_CALLBACK(input_response_cb), data);
359 361
360 /* Setup the dialog */ 362 /* Setup the dialog */
361 gtk_container_set_border_width(GTK_CONTAINER(dialog), PIDGIN_HIG_BORDER/2); 363 gtk_container_set_border_width(GTK_CONTAINER(dialog), PIDGIN_HIG_BORDER/2);
362 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER/2); 364 gtk_container_set_border_width(GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),
365 PIDGIN_HIG_BORDER / 2);
363 if (!multiline) 366 if (!multiline)
364 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE); 367 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
368 /* TODO: not sure how to do this with GTK+ 3
365 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE); 369 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
370 */
366 gtk_dialog_set_default_response(GTK_DIALOG(dialog), 0); 371 gtk_dialog_set_default_response(GTK_DIALOG(dialog), 0);
367 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER); 372 gtk_box_set_spacing(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),
373 PIDGIN_HIG_BORDER);
368 374
369 /* Setup the main horizontal box */ 375 /* Setup the main horizontal box */
370 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER); 376 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
371 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox); 377 gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),
378 hbox);
372 379
373 /* Dialog icon. */ 380 /* Dialog icon. */
374 img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION, 381 img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
375 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE)); 382 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
376 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); 383 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
534 g_signal_connect(G_OBJECT(dialog), "response", 541 g_signal_connect(G_OBJECT(dialog), "response",
535 G_CALLBACK(choice_response_cb), data); 542 G_CALLBACK(choice_response_cb), data);
536 543
537 /* Setup the dialog */ 544 /* Setup the dialog */
538 gtk_container_set_border_width(GTK_CONTAINER(dialog), PIDGIN_HIG_BORDER/2); 545 gtk_container_set_border_width(GTK_CONTAINER(dialog), PIDGIN_HIG_BORDER/2);
539 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER/2); 546 gtk_container_set_border_width(GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),
547 PIDGIN_HIG_BORDER / 2);
540 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE); 548 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
541 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE); 549 /* TODO: don't know if this is possible with GTK+ 3
542 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER); 550 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
551 */
552 gtk_box_set_spacing(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),
553 PIDGIN_HIG_BORDER);
543 554
544 /* Setup the main horizontal box */ 555 /* Setup the main horizontal box */
545 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER); 556 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
546 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox); 557 gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),
558 hbox);
547 559
548 /* Dialog icon. */ 560 /* Dialog icon. */
549 img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION, 561 img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
550 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE)); 562 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
551 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); 563 gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
656 g_signal_connect(G_OBJECT(dialog), "response", 668 g_signal_connect(G_OBJECT(dialog), "response",
657 G_CALLBACK(action_response_cb), data); 669 G_CALLBACK(action_response_cb), data);
658 670
659 /* Setup the dialog */ 671 /* Setup the dialog */
660 gtk_container_set_border_width(GTK_CONTAINER(dialog), PIDGIN_HIG_BORDER/2); 672 gtk_container_set_border_width(GTK_CONTAINER(dialog), PIDGIN_HIG_BORDER/2);
661 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER/2); 673 gtk_container_set_border_width(GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),
674 PIDGIN_HIG_BORDER / 2);
662 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE); 675 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
663 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE); 676 /* TODO: this is probably not supported by GTK+ 3
664 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), PIDGIN_HIG_BORDER); 677 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
678 */
679 gtk_box_set_spacing(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),
680 PIDGIN_HIG_BORDER);
665 681
666 /* Setup the main horizontal box */ 682 /* Setup the main horizontal box */
667 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER); 683 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
668 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox); 684 gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),
685 hbox);
669 686
670 /* Dialog icon. */ 687 /* Dialog icon. */
671 if (icon_data) { 688 if (icon_data) {
672 GdkPixbufLoader *loader = gdk_pixbuf_loader_new(); 689 GdkPixbufLoader *loader = gdk_pixbuf_loader_new();
673 GdkPixbuf *pixbuf = NULL; 690 GdkPixbuf *pixbuf = NULL;
734 751
735 g_free(label_text); 752 g_free(label_text);
736 753
737 754
738 if (default_action == PURPLE_DEFAULT_ACTION_NONE) { 755 if (default_action == PURPLE_DEFAULT_ACTION_NONE) {
739 GTK_WIDGET_SET_FLAGS(img, GTK_CAN_DEFAULT); 756 gtk_widget_set_can_default(img, TRUE);
740 GTK_WIDGET_SET_FLAGS(img, GTK_CAN_FOCUS); 757 gtk_widget_set_can_focus(img, TRUE);
741 gtk_widget_grab_focus(img); 758 gtk_widget_grab_focus(img);
742 gtk_widget_grab_default(img); 759 gtk_widget_grab_default(img);
743 } else 760 } else
744 /* 761 /*
745 * Need to invert the default_action number because the 762 * Need to invert the default_action number because the
980 int num_labels = g_list_length(labels); 997 int num_labels = g_list_length(labels);
981 GList *l; 998 GList *l;
982 999
983 if (num_labels > 5) 1000 if (num_labels > 5)
984 { 1001 {
985 widget = gtk_combo_box_new_text(); 1002 widget = gtk_combo_box_text_new();
986 1003
987 for (l = labels; l != NULL; l = l->next) 1004 for (l = labels; l != NULL; l = l->next)
988 { 1005 {
989 const char *text = l->data; 1006 const char *text = l->data;
990 gtk_combo_box_append_text(GTK_COMBO_BOX(widget), text); 1007 gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widget), text);
991 } 1008 }
992 1009
993 gtk_combo_box_set_active(GTK_COMBO_BOX(widget), 1010 gtk_combo_box_set_active(GTK_COMBO_BOX(widget),
994 purple_request_field_choice_get_default_value(field)); 1011 purple_request_field_choice_get_default_value(field));
995 1012
1262 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); 1279 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
1263 gtk_widget_show(img); 1280 gtk_widget_show(img);
1264 1281
1265 /* Cancel button */ 1282 /* Cancel button */
1266 button = pidgin_dialog_add_button(GTK_DIALOG(win), text_to_stock(cancel_text), G_CALLBACK(multifield_cancel_cb), data); 1283 button = pidgin_dialog_add_button(GTK_DIALOG(win), text_to_stock(cancel_text), G_CALLBACK(multifield_cancel_cb), data);
1267 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); 1284 gtk_widget_set_can_default(button, TRUE);
1268 1285
1269 /* OK button */ 1286 /* OK button */
1270 button = pidgin_dialog_add_button(GTK_DIALOG(win), text_to_stock(ok_text), G_CALLBACK(multifield_ok_cb), data); 1287 button = pidgin_dialog_add_button(GTK_DIALOG(win), text_to_stock(ok_text), G_CALLBACK(multifield_ok_cb), data);
1271 data->ok_button = button; 1288 data->ok_button = button;
1272 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); 1289 gtk_widget_set_can_default(button, TRUE);
1273 gtk_window_set_default(GTK_WINDOW(win), button); 1290 gtk_window_set_default(GTK_WINDOW(win), button);
1274 1291
1275 pidgin_widget_decorate_account(hbox, account); 1292 pidgin_widget_decorate_account(hbox, account);
1276 1293
1277 /* Setup the vbox */ 1294 /* Setup the vbox */

mercurial