ui/gtk/container.c

changeset 594
fc854e0ab924
parent 552
131059d41671
child 604
0afad58e3078
equal deleted inserted replaced
593:7061c9cf3b52 594:fc854e0ab924
418 ret = a; 418 ret = a;
419 #endif 419 #endif
420 return ret; 420 return ret;
421 } 421 }
422 422
423 UIWIDGET ui_box_create(UiObject *obj, UiContainerArgs args, UiSubContainerType type) { 423 UIWIDGET ui_box_create(UiObject *obj, UiContainerArgs *args, UiSubContainerType type) {
424 UiObject *current = uic_current_obj(obj); 424 UiObject *current = uic_current_obj(obj);
425 UiContainer *ct = current->container; 425 UiContainer *ct = current->container;
426 UI_APPLY_LAYOUT1(current, args); 426 UI_APPLY_LAYOUT2(current, args);
427 427
428 GtkWidget *box = type == UI_CONTAINER_VBOX ? ui_gtk_vbox_new(args.spacing) : ui_gtk_hbox_new(args.spacing); 428 GtkWidget *box = type == UI_CONTAINER_VBOX ? ui_gtk_vbox_new(args->spacing) : ui_gtk_hbox_new(args->spacing);
429 ui_set_name_and_style(box, args.name, args.style_class); 429 ui_set_name_and_style(box, args->name, args->style_class);
430 GtkWidget *widget = args.margin > 0 ? ui_box_set_margin(box, args.margin) : box; 430 GtkWidget *widget = args->margin > 0 ? ui_box_set_margin(box, args->margin) : box;
431 ct->add(ct, widget, TRUE); 431 ct->add(ct, widget, TRUE);
432 432
433 UiObject *newobj = uic_object_new(obj, box); 433 UiObject *newobj = uic_object_new(obj, box);
434 newobj->container = ui_box_container(obj, box, type); 434 newobj->container = ui_box_container(obj, box, type);
435 uic_obj_add(obj, newobj); 435 uic_obj_add(obj, newobj);
436 436
437 return widget; 437 return widget;
438 } 438 }
439 439
440 UIEXPORT UIWIDGET ui_vbox_create(UiObject *obj, UiContainerArgs args) { 440 UIEXPORT UIWIDGET ui_vbox_create(UiObject *obj, UiContainerArgs *args) {
441 return ui_box_create(obj, args, UI_CONTAINER_VBOX); 441 return ui_box_create(obj, args, UI_CONTAINER_VBOX);
442 } 442 }
443 443
444 UIEXPORT UIWIDGET ui_hbox_create(UiObject *obj, UiContainerArgs args) { 444 UIEXPORT UIWIDGET ui_hbox_create(UiObject *obj, UiContainerArgs *args) {
445 return ui_box_create(obj, args, UI_CONTAINER_HBOX); 445 return ui_box_create(obj, args, UI_CONTAINER_HBOX);
446 } 446 }
447 447
448 GtkWidget* ui_create_grid_widget(int colspacing, int rowspacing) { 448 GtkWidget* ui_create_grid_widget(int colspacing, int rowspacing) {
449 #if GTK_MAJOR_VERSION >= 3 449 #if GTK_MAJOR_VERSION >= 3
456 gtk_table_set_row_spacings(GTK_TABLE(grid), rowspacing); 456 gtk_table_set_row_spacings(GTK_TABLE(grid), rowspacing);
457 #endif 457 #endif
458 return grid; 458 return grid;
459 } 459 }
460 460
461 UIWIDGET ui_grid_create(UiObject *obj, UiContainerArgs args) { 461 UIWIDGET ui_grid_create(UiObject *obj, UiContainerArgs *args) {
462 UiObject* current = uic_current_obj(obj); 462 UiObject* current = uic_current_obj(obj);
463 UI_APPLY_LAYOUT1(current, args); 463 UI_APPLY_LAYOUT2(current, args);
464 GtkWidget *widget; 464 GtkWidget *widget;
465 465
466 GtkWidget *grid = ui_create_grid_widget(args.columnspacing, args.rowspacing); 466 GtkWidget *grid = ui_create_grid_widget(args->columnspacing, args->rowspacing);
467 ui_set_name_and_style(grid, args.name, args.style_class); 467 ui_set_name_and_style(grid, args->name, args->style_class);
468 widget = ui_box_set_margin(grid, args.margin); 468 widget = ui_box_set_margin(grid, args->margin);
469 current->container->add(current->container, widget, TRUE); 469 current->container->add(current->container, widget, TRUE);
470 470
471 UiObject *newobj = uic_object_new(obj, grid); 471 UiObject *newobj = uic_object_new(obj, grid);
472 newobj->container = ui_grid_container(obj, grid, args.def_hexpand, args.def_vexpand, args.def_hfill, args.def_vfill); 472 newobj->container = ui_grid_container(obj, grid, args->def_hexpand, args->def_vexpand, args->def_hfill, args->def_vfill);
473 uic_obj_add(obj, newobj); 473 uic_obj_add(obj, newobj);
474 474
475 return widget; 475 return widget;
476 } 476 }
477 477
478 UIWIDGET ui_frame_create(UiObject *obj, UiFrameArgs args) { 478 UIWIDGET ui_frame_create(UiObject *obj, UiFrameArgs *args) {
479 UiObject* current = uic_current_obj(obj); 479 UiObject* current = uic_current_obj(obj);
480 UI_APPLY_LAYOUT1(current, args); 480 UI_APPLY_LAYOUT2(current, args);
481 481
482 GtkWidget *frame = gtk_frame_new(args.label); 482 GtkWidget *frame = gtk_frame_new(args->label);
483 UiObject *newobj = uic_object_new(obj, frame); 483 UiObject *newobj = uic_object_new(obj, frame);
484 GtkWidget *sub = ui_subcontainer_create(args.subcontainer, newobj, args.spacing, args.columnspacing, args.rowspacing, args.margin); 484 GtkWidget *sub = ui_subcontainer_create(args->subcontainer, newobj, args->spacing, args->columnspacing, args->rowspacing, args->margin);
485 if(sub) { 485 if(sub) {
486 FRAME_SET_CHILD(frame, sub); 486 FRAME_SET_CHILD(frame, sub);
487 } else { 487 } else {
488 newobj->widget = frame; 488 newobj->widget = frame;
489 newobj->container = ui_frame_container(obj, frame); 489 newobj->container = ui_frame_container(obj, frame);
492 uic_obj_add(obj, newobj); 492 uic_obj_add(obj, newobj);
493 493
494 return frame; 494 return frame;
495 } 495 }
496 496
497 UIEXPORT UIWIDGET ui_expander_create(UiObject *obj, UiFrameArgs args) { 497 UIEXPORT UIWIDGET ui_expander_create(UiObject *obj, UiFrameArgs *args) {
498 UiObject* current = uic_current_obj(obj); 498 UiObject* current = uic_current_obj(obj);
499 UI_APPLY_LAYOUT1(current, args); 499 UI_APPLY_LAYOUT2(current, args);
500 500
501 GtkWidget *expander = gtk_expander_new(args.label); 501 GtkWidget *expander = gtk_expander_new(args->label);
502 gtk_expander_set_expanded(GTK_EXPANDER(expander), args.isexpanded); 502 gtk_expander_set_expanded(GTK_EXPANDER(expander), args->isexpanded);
503 UiObject *newobj = uic_object_new(obj, expander); 503 UiObject *newobj = uic_object_new(obj, expander);
504 GtkWidget *sub = ui_subcontainer_create(args.subcontainer, newobj, args.spacing, args.columnspacing, args.rowspacing, args.margin); 504 GtkWidget *sub = ui_subcontainer_create(args->subcontainer, newobj, args->spacing, args->columnspacing, args->rowspacing, args->margin);
505 if(sub) { 505 if(sub) {
506 EXPANDER_SET_CHILD(expander, sub); 506 EXPANDER_SET_CHILD(expander, sub);
507 } else { 507 } else {
508 newobj->widget = expander; 508 newobj->widget = expander;
509 newobj->container = ui_expander_container(obj, expander); 509 newobj->container = ui_expander_container(obj, expander);
513 513
514 return expander; 514 return expander;
515 } 515 }
516 516
517 517
518 UIWIDGET ui_scrolledwindow_create(UiObject* obj, UiFrameArgs args) { 518 UIWIDGET ui_scrolledwindow_create(UiObject* obj, UiFrameArgs *args) {
519 UiObject* current = uic_current_obj(obj); 519 UiObject* current = uic_current_obj(obj);
520 UI_APPLY_LAYOUT1(current, args); 520 UI_APPLY_LAYOUT2(current, args);
521 521
522 GtkWidget *sw = SCROLLEDWINDOW_NEW(); 522 GtkWidget *sw = SCROLLEDWINDOW_NEW();
523 ui_set_name_and_style(sw, args.name, args.style_class); 523 ui_set_name_and_style(sw, args->name, args->style_class);
524 GtkWidget *widget = ui_box_set_margin(sw, args.margin); 524 GtkWidget *widget = ui_box_set_margin(sw, args->margin);
525 current->container->add(current->container, widget, TRUE); 525 current->container->add(current->container, widget, TRUE);
526 526
527 UiObject *newobj = uic_object_new(obj, sw); 527 UiObject *newobj = uic_object_new(obj, sw);
528 GtkWidget *sub = ui_subcontainer_create(args.subcontainer, newobj, args.spacing, args.columnspacing, args.rowspacing, args.margin); 528 GtkWidget *sub = ui_subcontainer_create(args->subcontainer, newobj, args->spacing, args->columnspacing, args->rowspacing, args->margin);
529 if(sub) { 529 if(sub) {
530 SCROLLEDWINDOW_SET_CHILD(sw, sub); 530 SCROLLEDWINDOW_SET_CHILD(sw, sub);
531 } else { 531 } else {
532 newobj->widget = sw; 532 newobj->widget = sw;
533 newobj->container = ui_scrolledwindow_container(obj, sw); 533 newobj->container = ui_scrolledwindow_container(obj, sw);
690 } 690 }
691 691
692 typedef int64_t(*ui_tabview_get_func)(UiInteger*); 692 typedef int64_t(*ui_tabview_get_func)(UiInteger*);
693 typedef void (*ui_tabview_set_func)(UiInteger*, int64_t); 693 typedef void (*ui_tabview_set_func)(UiInteger*, int64_t);
694 694
695 UIWIDGET ui_tabview_create(UiObject* obj, UiTabViewArgs args) { 695 UIWIDGET ui_tabview_create(UiObject* obj, UiTabViewArgs *args) {
696 UiGtkTabView *data = malloc(sizeof(UiGtkTabView)); 696 UiGtkTabView *data = malloc(sizeof(UiGtkTabView));
697 data->margin = args.margin; 697 data->margin = args->margin;
698 data->spacing = args.spacing; 698 data->spacing = args->spacing;
699 data->columnspacing = args.columnspacing; 699 data->columnspacing = args->columnspacing;
700 data->rowspacing = args.rowspacing; 700 data->rowspacing = args->rowspacing;
701 701
702 ui_tabview_get_func getfunc = NULL; 702 ui_tabview_get_func getfunc = NULL;
703 ui_tabview_set_func setfunc = NULL; 703 ui_tabview_set_func setfunc = NULL;
704 704
705 GtkWidget *widget = NULL; 705 GtkWidget *widget = NULL;
706 GtkWidget *data_widget = NULL; 706 GtkWidget *data_widget = NULL;
707 switch(args.tabview) { 707 switch(args->tabview) {
708 case UI_TABVIEW_DOC: { 708 case UI_TABVIEW_DOC: {
709 // TODO 709 // TODO
710 break; 710 break;
711 } 711 }
712 case UI_TABVIEW_NAVIGATION_SIDE: { 712 case UI_TABVIEW_NAVIGATION_SIDE: {
738 data->select_tab = ui_notebook_tab_select; 738 data->select_tab = ui_notebook_tab_select;
739 data->remove_tab = ui_notebook_tab_remove; 739 data->remove_tab = ui_notebook_tab_remove;
740 data->add_tab = ui_notebook_tab_add; 740 data->add_tab = ui_notebook_tab_add;
741 getfunc = ui_notebook_get; 741 getfunc = ui_notebook_get;
742 setfunc = ui_notebook_set; 742 setfunc = ui_notebook_set;
743 if(args.tabview == UI_TABVIEW_INVISIBLE) { 743 if(args->tabview == UI_TABVIEW_INVISIBLE) {
744 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(widget), FALSE); 744 gtk_notebook_set_show_tabs(GTK_NOTEBOOK(widget), FALSE);
745 gtk_notebook_set_show_border(GTK_NOTEBOOK(widget), FALSE); 745 gtk_notebook_set_show_border(GTK_NOTEBOOK(widget), FALSE);
746 } 746 }
747 break; 747 break;
748 } 748 }
749 } 749 }
750 750
751 UiObject* current = uic_current_obj(obj); 751 UiObject* current = uic_current_obj(obj);
752 if(args.value || args.varname) { 752 if(args->value || args->varname) {
753 UiVar *var = uic_widget_var(obj->ctx, current->ctx, args.value, args.varname, UI_VAR_INTEGER); 753 UiVar *var = uic_widget_var(obj->ctx, current->ctx, args->value, args->varname, UI_VAR_INTEGER);
754 UiInteger *i = var->value; 754 UiInteger *i = var->value;
755 i->get = getfunc; 755 i->get = getfunc;
756 i->set = setfunc; 756 i->set = setfunc;
757 i->obj = data_widget; 757 i->obj = data_widget;
758 } 758 }
759 759
760 g_object_set_data(G_OBJECT(widget), "ui_tabview", data); 760 g_object_set_data(G_OBJECT(widget), "ui_tabview", data);
761 data->widget = data_widget; 761 data->widget = data_widget;
762 data->subcontainer = args.subcontainer; 762 data->subcontainer = args->subcontainer;
763 763
764 UI_APPLY_LAYOUT1(current, args); 764 UI_APPLY_LAYOUT2(current, args);
765 current->container->add(current->container, widget, TRUE); 765 current->container->add(current->container, widget, TRUE);
766 766
767 UiObject *newobj = uic_object_new(obj, widget); 767 UiObject *newobj = uic_object_new(obj, widget);
768 newobj->container = ui_tabview_container(obj, widget); 768 newobj->container = ui_tabview_container(obj, widget);
769 uic_obj_add(obj, newobj); 769 uic_obj_add(obj, newobj);
870 870
871 void ui_headerbar_end_create(UiObject *obj) { 871 void ui_headerbar_end_create(UiObject *obj) {
872 hb_set_part(obj, 1); 872 hb_set_part(obj, 1);
873 } 873 }
874 874
875 UIWIDGET ui_headerbar_fallback_create(UiObject *obj, UiHeaderbarArgs args) { 875 UIWIDGET ui_headerbar_fallback_create(UiObject *obj, UiHeaderbarArgs *args) {
876 UiObject *current = uic_current_obj(obj); 876 UiObject *current = uic_current_obj(obj);
877 UiContainer *ct = current->container; 877 UiContainer *ct = current->container;
878 UI_APPLY_LAYOUT1(current, args); 878 UI_APPLY_LAYOUT2(current, args);
879 879
880 GtkWidget *box = ui_gtk_hbox_new(args.alt_spacing); 880 GtkWidget *box = ui_gtk_hbox_new(args->alt_spacing);
881 ui_set_name_and_style(box, args.name, args.style_class); 881 ui_set_name_and_style(box, args->name, args->style_class);
882 ct->add(ct, box, FALSE); 882 ct->add(ct, box, FALSE);
883 883
884 UiObject *newobj = uic_object_new(obj, box); 884 UiObject *newobj = uic_object_new(obj, box);
885 newobj->container = ui_headerbar_fallback_container(obj, box); 885 newobj->container = ui_headerbar_fallback_container(obj, box);
886 uic_obj_add(obj, newobj); 886 uic_obj_add(obj, newobj);
915 BOX_ADD(ct->widget, widget); 915 BOX_ADD(ct->widget, widget);
916 } 916 }
917 917
918 #if GTK_CHECK_VERSION(3, 10, 0) 918 #if GTK_CHECK_VERSION(3, 10, 0)
919 919
920 UIWIDGET ui_headerbar_create(UiObject *obj, UiHeaderbarArgs args) { 920 UIWIDGET ui_headerbar_create(UiObject *obj, UiHeaderbarArgs *args) {
921 GtkWidget *headerbar = g_object_get_data(G_OBJECT(obj->widget), "ui_headerbar"); 921 GtkWidget *headerbar = g_object_get_data(G_OBJECT(obj->widget), "ui_headerbar");
922 if(!headerbar) { 922 if(!headerbar) {
923 return ui_headerbar_fallback_create(obj, args); 923 return ui_headerbar_fallback_create(obj, args);
924 } 924 }
925 925
956 } 956 }
957 } 957 }
958 958
959 #else 959 #else
960 960
961 UIWIDGET ui_headerbar_create(UiObject *obj, UiHeaderbarArgs args) { 961 UIWIDGET ui_headerbar_create(UiObject *obj, UiHeaderbarArgs *args) {
962 return ui_headerbar_fallback_create(obj, args); 962 return ui_headerbar_fallback_create(obj, args);
963 } 963 }
964 964
965 #endif 965 #endif
966 966
967 /* -------------------- Sidebar -------------------- */ 967 /* -------------------- Sidebar -------------------- */
968 968
969 #ifdef UI_LIBADWAITA 969 #ifdef UI_LIBADWAITA
970 UIWIDGET ui_sidebar_create(UiObject *obj, UiSidebarArgs args) { 970 UIWIDGET ui_sidebar_create(UiObject *obj, UiSidebarArgs *args) {
971 GtkWidget *sidebar_toolbar_view = g_object_get_data(G_OBJECT(obj->widget), "ui_sidebar"); 971 GtkWidget *sidebar_toolbar_view = g_object_get_data(G_OBJECT(obj->widget), "ui_sidebar");
972 if(!sidebar_toolbar_view) { 972 if(!sidebar_toolbar_view) {
973 fprintf(stderr, "Error: window is not configured for sidebar\n"); 973 fprintf(stderr, "Error: window is not configured for sidebar\n");
974 return NULL; 974 return NULL;
975 } 975 }
976 976
977 GtkWidget *box = ui_gtk_vbox_new(args.spacing); 977 GtkWidget *box = ui_gtk_vbox_new(args->spacing);
978 ui_box_set_margin(box, args.margin); 978 ui_box_set_margin(box, args->margin);
979 adw_toolbar_view_set_content(ADW_TOOLBAR_VIEW(sidebar_toolbar_view), box); 979 adw_toolbar_view_set_content(ADW_TOOLBAR_VIEW(sidebar_toolbar_view), box);
980 980
981 UiObject *newobj = uic_object_new(obj, box); 981 UiObject *newobj = uic_object_new(obj, box);
982 newobj->container = ui_box_container(obj, box, UI_CONTAINER_VBOX); 982 newobj->container = ui_box_container(obj, box, UI_CONTAINER_VBOX);
983 uic_obj_add(obj, newobj); 983 uic_obj_add(obj, newobj);
984 984
985 return box; 985 return box;
986 } 986 }
987 #else 987 #else
988 UIWIDGET ui_sidebar_create(UiObject *obj, UiSidebarArgs args) { 988 UIWIDGET ui_sidebar_create(UiObject *obj, UiSidebarArgs *args) {
989 GtkWidget *sidebar_vbox = g_object_get_data(G_OBJECT(obj->widget), "ui_sidebar"); 989 GtkWidget *sidebar_vbox = g_object_get_data(G_OBJECT(obj->widget), "ui_sidebar");
990 990
991 GtkWidget *box = ui_gtk_vbox_new(args.spacing); 991 GtkWidget *box = ui_gtk_vbox_new(args->spacing);
992 ui_box_set_margin(box, args.margin); 992 ui_box_set_margin(box, args->margin);
993 BOX_ADD_EXPAND(sidebar_vbox, box); 993 BOX_ADD_EXPAND(sidebar_vbox, box);
994 994
995 UiObject *newobj = uic_object_new(obj, box); 995 UiObject *newobj = uic_object_new(obj, box);
996 newobj->container = ui_box_container(obj, box, UI_CONTAINER_VBOX); 996 newobj->container = ui_box_container(obj, box, UI_CONTAINER_VBOX);
997 uic_obj_add(obj, newobj); 997 uic_obj_add(obj, newobj);
1017 return NULL; 1017 return NULL;
1018 } 1018 }
1019 1019
1020 1020
1021 1021
1022 static UIWIDGET splitpane_create(UiObject *obj, UiOrientation orientation, UiSplitPaneArgs args) { 1022 static UIWIDGET splitpane_create(UiObject *obj, UiOrientation orientation, UiSplitPaneArgs *args) {
1023 UiObject* current = uic_current_obj(obj); 1023 UiObject* current = uic_current_obj(obj);
1024 1024
1025 GtkWidget *pane0 = create_paned(orientation); 1025 GtkWidget *pane0 = create_paned(orientation);
1026 1026
1027 UI_APPLY_LAYOUT1(current, args); 1027 UI_APPLY_LAYOUT2(current, args);
1028 current->container->add(current->container, pane0, TRUE); 1028 current->container->add(current->container, pane0, TRUE);
1029 1029
1030 int max = args.max_panes == 0 ? 2 : args.max_panes; 1030 int max = args->max_panes == 0 ? 2 : args->max_panes;
1031 1031
1032 UiObject *newobj = uic_object_new(obj, pane0); 1032 UiObject *newobj = uic_object_new(obj, pane0);
1033 newobj->container = ui_splitpane_container(obj, pane0, orientation, max, args.initial_position); 1033 newobj->container = ui_splitpane_container(obj, pane0, orientation, max, args->initial_position);
1034 uic_obj_add(obj, newobj); 1034 uic_obj_add(obj, newobj);
1035 1035
1036 g_object_set_data(G_OBJECT(pane0), "ui_splitpane", newobj->container); 1036 g_object_set_data(G_OBJECT(pane0), "ui_splitpane", newobj->container);
1037 1037
1038 return pane0; 1038 return pane0;
1039 } 1039 }
1040 1040
1041 UIWIDGET ui_hsplitpane_create(UiObject *obj, UiSplitPaneArgs args) { 1041 UIWIDGET ui_hsplitpane_create(UiObject *obj, UiSplitPaneArgs *args) {
1042 return splitpane_create(obj, UI_HORIZONTAL, args); 1042 return splitpane_create(obj, UI_HORIZONTAL, args);
1043 } 1043 }
1044 1044
1045 UIWIDGET ui_vsplitpane_create(UiObject *obj, UiSplitPaneArgs args) { 1045 UIWIDGET ui_vsplitpane_create(UiObject *obj, UiSplitPaneArgs *args) {
1046 return splitpane_create(obj, UI_VERTICAL, args); 1046 return splitpane_create(obj, UI_VERTICAL, args);
1047 } 1047 }
1048 1048
1049 UiContainer* ui_splitpane_container(UiObject *obj, GtkWidget *pane, UiOrientation orientation, int max, int init) { 1049 UiContainer* ui_splitpane_container(UiObject *obj, GtkWidget *pane, UiOrientation orientation, int max, int init) {
1050 UiSplitPaneContainer *ct = ui_calloc(obj->ctx, 1, sizeof(UiSplitPaneContainer)); 1050 UiSplitPaneContainer *ct = ui_calloc(obj->ctx, 1, sizeof(UiSplitPaneContainer));
1185 container->remove_items = FALSE; 1185 container->remove_items = FALSE;
1186 cxMapFree(container->current_items); 1186 cxMapFree(container->current_items);
1187 free(container); 1187 free(container);
1188 } 1188 }
1189 1189
1190 UIWIDGET ui_itemlist_create(UiObject *obj, UiItemListContainerArgs args) { 1190 UIWIDGET ui_itemlist_create(UiObject *obj, UiItemListContainerArgs *args) {
1191 UiObject *current = uic_current_obj(obj); 1191 UiObject *current = uic_current_obj(obj);
1192 UiContainer *ct = current->container; 1192 UiContainer *ct = current->container;
1193 UI_APPLY_LAYOUT1(current, args); 1193 UI_APPLY_LAYOUT2(current, args);
1194 1194
1195 GtkWidget *box = args.container == UI_CONTAINER_VBOX ? ui_gtk_vbox_new(args.spacing) : ui_gtk_hbox_new(args.spacing); 1195 GtkWidget *box = args->container == UI_CONTAINER_VBOX ? ui_gtk_vbox_new(args->spacing) : ui_gtk_hbox_new(args->spacing);
1196 ui_set_name_and_style(box, args.name, args.style_class); 1196 ui_set_name_and_style(box, args->name, args->style_class);
1197 GtkWidget *widget = args.margin > 0 ? ui_box_set_margin(box, args.margin) : box; 1197 GtkWidget *widget = args->margin > 0 ? ui_box_set_margin(box, args->margin) : box;
1198 ct->add(ct, widget, TRUE); 1198 ct->add(ct, widget, TRUE);
1199 1199
1200 UiGtkItemListContainer *container = malloc(sizeof(UiGtkItemListContainer)); 1200 UiGtkItemListContainer *container = malloc(sizeof(UiGtkItemListContainer));
1201 container->parent = obj; 1201 container->parent = obj;
1202 container->widget = box; 1202 container->widget = box;
1203 container->container = ui_box_container(current, box, args.container); 1203 container->container = ui_box_container(current, box, args->container);
1204 container->create_ui = args.create_ui; 1204 container->create_ui = args->create_ui;
1205 container->userdata = args.userdata; 1205 container->userdata = args->userdata;
1206 container->subcontainer = args.subcontainer; 1206 container->subcontainer = args->subcontainer;
1207 container->current_items = cxHashMapCreateSimple(CX_STORE_POINTERS); 1207 container->current_items = cxHashMapCreateSimple(CX_STORE_POINTERS);
1208 container->current_items->collection.advanced_destructor = remove_item; 1208 container->current_items->collection.advanced_destructor = remove_item;
1209 container->current_items->collection.destructor_data = container; 1209 container->current_items->collection.destructor_data = container;
1210 container->margin = args.sub_margin; 1210 container->margin = args->sub_margin;
1211 container->spacing = args.sub_spacing; 1211 container->spacing = args->sub_spacing;
1212 container->columnspacing = args.sub_columnspacing; 1212 container->columnspacing = args->sub_columnspacing;
1213 container->rowspacing = args.sub_rowspacing; 1213 container->rowspacing = args->sub_rowspacing;
1214 container->remove_items = TRUE; 1214 container->remove_items = TRUE;
1215 1215
1216 UiVar* var = uic_widget_var(obj->ctx, current->ctx, args.value, args.varname, UI_VAR_LIST); 1216 UiVar* var = uic_widget_var(obj->ctx, current->ctx, args->value, args->varname, UI_VAR_LIST);
1217 if(var) { 1217 if(var) {
1218 UiList *list = var->value; 1218 UiList *list = var->value;
1219 list->obj = container; 1219 list->obj = container;
1220 list->update = update_itemlist; 1220 list->update = update_itemlist;
1221 update_itemlist(list, 0); 1221 update_itemlist(list, 0);

mercurial