ui/gtk/window.c

changeset 58
0d25f15e2625
parent 56
294d5515583a
equal deleted inserted replaced
57:d5a7dbc945ef 58:0d25f15e2625
608 608
609 #endif 609 #endif
610 610
611 #if GTK_CHECK_VERSION(4, 0, 0) 611 #if GTK_CHECK_VERSION(4, 0, 0)
612 #define HEADERBAR_SHOW_CLOSEBUTTON(headerbar, set) gtk_header_bar_set_show_title_buttons(GTK_HEADER_BAR(headerbar), set) 612 #define HEADERBAR_SHOW_CLOSEBUTTON(headerbar, set) gtk_header_bar_set_show_title_buttons(GTK_HEADER_BAR(headerbar), set)
613 #define DEFAULT_BUTTON(window, button) gtk_window_set_default_widget(GTK_WINDOW(window), button)
613 #else 614 #else
614 #define HEADERBAR_SHOW_CLOSEBUTTON(headerbar, set) gtk_header_bar_set_show_close_button(GTK_HEADER_BAR(headerbar), set) 615 #define HEADERBAR_SHOW_CLOSEBUTTON(headerbar, set) gtk_header_bar_set_show_close_button(GTK_HEADER_BAR(headerbar), set)
616 #define DEFAULT_BUTTON(window, button) gtk_window_set_default(GTK_WINDOW(window), button)
615 #endif 617 #endif
616 618
617 619
618 620
619 UiObject* ui_dialog_window_create(UiObject *parent, UiDialogWindowArgs args) { 621 UiObject* ui_dialog_window_create(UiObject *parent, UiDialogWindowArgs args) {
670 if(args.show_closebutton == UI_OFF) { 672 if(args.show_closebutton == UI_OFF) {
671 HEADERBAR_SHOW_CLOSEBUTTON(headerbar, FALSE); 673 HEADERBAR_SHOW_CLOSEBUTTON(headerbar, FALSE);
672 } 674 }
673 675
674 if(args.lbutton1) { 676 if(args.lbutton1) {
675 GtkWidget *button = ui_create_button(obj, args.lbutton1, NULL, args.onclick, args.onclickdata, 1); 677 GtkWidget *button = ui_create_button(obj, args.lbutton1, NULL, args.onclick, args.onclickdata, 1, args.default_button == 1);
676 gtk_header_bar_pack_start(GTK_HEADER_BAR(headerbar), button); 678 gtk_header_bar_pack_start(GTK_HEADER_BAR(headerbar), button);
677 if(args.default_button == 1) { 679 if(args.default_button == 1) {
678 WIDGET_ADD_CSS_CLASS(button, "suggested-action"); 680 WIDGET_ADD_CSS_CLASS(button, "suggested-action");
681 DEFAULT_BUTTON(dialog, button);
679 } 682 }
680 } 683 }
681 if(args.lbutton2) { 684 if(args.lbutton2) {
682 GtkWidget *button = ui_create_button(obj, args.lbutton2, NULL, args.onclick, args.onclickdata, 2); 685 GtkWidget *button = ui_create_button(obj, args.lbutton2, NULL, args.onclick, args.onclickdata, 2, args.default_button == 2);
683 gtk_header_bar_pack_start(GTK_HEADER_BAR(headerbar), button); 686 gtk_header_bar_pack_start(GTK_HEADER_BAR(headerbar), button);
684 if(args.default_button == 2) { 687 if(args.default_button == 2) {
685 WIDGET_ADD_CSS_CLASS(button, "suggested-action"); 688 WIDGET_ADD_CSS_CLASS(button, "suggested-action");
689 DEFAULT_BUTTON(dialog, button);
686 } 690 }
687 } 691 }
688 692
689 if(args.rbutton4) { 693 if(args.rbutton4) {
690 GtkWidget *button = ui_create_button(obj, args.rbutton4, NULL, args.onclick, args.onclickdata, 4); 694 GtkWidget *button = ui_create_button(obj, args.rbutton4, NULL, args.onclick, args.onclickdata, 4, args.default_button == 4);
691 gtk_header_bar_pack_end(GTK_HEADER_BAR(headerbar), button); 695 gtk_header_bar_pack_end(GTK_HEADER_BAR(headerbar), button);
692 if(args.default_button == 4) { 696 if(args.default_button == 4) {
693 WIDGET_ADD_CSS_CLASS(button, "suggested-action"); 697 WIDGET_ADD_CSS_CLASS(button, "suggested-action");
698 DEFAULT_BUTTON(dialog, button);
694 } 699 }
695 } 700 }
696 if(args.rbutton3) { 701 if(args.rbutton3) {
697 GtkWidget *button = ui_create_button(obj, args.rbutton3, NULL, args.onclick, args.onclickdata, 3); 702 GtkWidget *button = ui_create_button(obj, args.rbutton3, NULL, args.onclick, args.onclickdata, 3, args.default_button == 3);
698 gtk_header_bar_pack_end(GTK_HEADER_BAR(headerbar), button); 703 gtk_header_bar_pack_end(GTK_HEADER_BAR(headerbar), button);
699 if(args.default_button == 3) { 704 if(args.default_button == 3) {
700 WIDGET_ADD_CSS_CLASS(button, "suggested-action"); 705 WIDGET_ADD_CSS_CLASS(button, "suggested-action");
706 DEFAULT_BUTTON(dialog, button);
701 } 707 }
702 } 708 }
703 WINDOW_SET_CONTENT(obj->widget, content_vbox); 709 WINDOW_SET_CONTENT(obj->widget, content_vbox);
704 return obj; 710 return obj;
705 } 711 }
712 GtkWidget *grid = ui_create_grid_widget(10, 10); 718 GtkWidget *grid = ui_create_grid_widget(10, 10);
713 GtkWidget *widget = ui_box_set_margin(grid, 16); 719 GtkWidget *widget = ui_box_set_margin(grid, 16);
714 gtk_grid_set_column_homogeneous(GTK_GRID(grid), TRUE); 720 gtk_grid_set_column_homogeneous(GTK_GRID(grid), TRUE);
715 721
716 if(args.lbutton1) { 722 if(args.lbutton1) {
717 GtkWidget *button = ui_create_button(obj, args.lbutton1, NULL, args.onclick, args.onclickdata, 1); 723 GtkWidget *button = ui_create_button(obj, args.lbutton1, NULL, args.onclick, args.onclickdata, 1, args.default_button == 1);
718 gtk_grid_attach(GTK_GRID(grid), button, 0, 0, 1, 1); 724 gtk_grid_attach(GTK_GRID(grid), button, 0, 0, 1, 1);
725 if(args.default_button == 1) {
726 WIDGET_ADD_CSS_CLASS(button, "suggested-action");
727 DEFAULT_BUTTON(dialog, button);
728 }
719 } 729 }
720 if(args.lbutton2) { 730 if(args.lbutton2) {
721 GtkWidget *button = ui_create_button(obj, args.lbutton2, NULL, args.onclick, args.onclickdata, 2); 731 GtkWidget *button = ui_create_button(obj, args.lbutton2, NULL, args.onclick, args.onclickdata, 2, args.default_button == 2);
722 gtk_grid_attach(GTK_GRID(grid), button, 1, 0, 1, 1); 732 gtk_grid_attach(GTK_GRID(grid), button, 1, 0, 1, 1);
733 if(args.default_button == 2) {
734 WIDGET_ADD_CSS_CLASS(button, "suggested-action");
735 DEFAULT_BUTTON(dialog, button);
736 }
723 } 737 }
724 GtkWidget *space = gtk_label_new(NULL); 738 GtkWidget *space = gtk_label_new(NULL);
725 gtk_widget_set_hexpand(space, TRUE); 739 gtk_widget_set_hexpand(space, TRUE);
726 gtk_grid_attach(GTK_GRID(grid), space, 2, 0, 1, 1); 740 gtk_grid_attach(GTK_GRID(grid), space, 2, 0, 1, 1);
727 if(args.rbutton3) { 741 if(args.rbutton3) {
728 GtkWidget *button = ui_create_button(obj, args.rbutton3, NULL, args.onclick, args.onclickdata, 3); 742 GtkWidget *button = ui_create_button(obj, args.rbutton3, NULL, args.onclick, args.onclickdata, 3, args.default_button == 3);
729 gtk_grid_attach(GTK_GRID(grid), button, 3, 0, 1, 1); 743 gtk_grid_attach(GTK_GRID(grid), button, 3, 0, 1, 1);
730 } 744 if(args.default_button == 3) {
731 if(args.rbutton3) { 745 WIDGET_ADD_CSS_CLASS(button, "suggested-action");
732 GtkWidget *button = ui_create_button(obj, args.rbutton4, NULL, args.onclick, args.onclickdata, 4); 746 DEFAULT_BUTTON(dialog, button);
747 }
748 }
749 if(args.rbutton4) {
750 GtkWidget *button = ui_create_button(obj, args.rbutton4, NULL, args.onclick, args.onclickdata, 4, args.default_button == 4);
733 gtk_grid_attach(GTK_GRID(grid), button, 4, 0, 1, 1); 751 gtk_grid_attach(GTK_GRID(grid), button, 4, 0, 1, 1);
752 if(args.default_button == 4) {
753 WIDGET_ADD_CSS_CLASS(button, "suggested-action");
754 DEFAULT_BUTTON(dialog, button);
755 }
734 } 756 }
735 757
736 BOX_ADD_EXPAND(vbox, content_vbox); 758 BOX_ADD_EXPAND(vbox, content_vbox);
737 BOX_ADD_NO_EXPAND(vbox, separator); 759 BOX_ADD_NO_EXPAND(vbox, separator);
738 BOX_ADD_NO_EXPAND(vbox, widget); 760 BOX_ADD_NO_EXPAND(vbox, widget);

mercurial