| 33 #include "../common/container.h" |
33 #include "../common/container.h" |
| 34 #include "../motif/container.h" |
34 #include "../motif/container.h" |
| 35 |
35 |
| 36 |
36 |
| 37 static W32WidgetClass grid_layout_widget_class = { |
37 static W32WidgetClass grid_layout_widget_class = { |
| 38 .eventproc = NULL, |
38 .eventproc = ui_grid_widget_event, |
| 39 .enable = NULL, |
39 .enable = NULL, |
| 40 .show = w32_widget_default_show, |
40 .show = w32_widget_default_show, |
| 41 .get_preferred_size = ui_grid_layout_get_preferred_size, |
41 .get_preferred_size = ui_grid_layout_get_preferred_size, |
| 42 .destroy = w32_widget_default_destroy |
42 .destroy = w32_widget_default_destroy |
| 43 }; |
43 }; |
| 58 layout2.margin_top = layout2.margin; |
58 layout2.margin_top = layout2.margin; |
| 59 layout2.margin_bottom = layout2.margin; |
59 layout2.margin_bottom = layout2.margin; |
| 60 } |
60 } |
| 61 ctn->add(ctn, widget, &layout2); |
61 ctn->add(ctn, widget, &layout2); |
| 62 ctn->container.newline = FALSE; |
62 ctn->container.newline = FALSE; |
| |
63 } |
| |
64 |
| |
65 void ui_grid_widget_event(W32Widget *widget, HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { |
| |
66 HDC hdc = (HDC)wParam; |
| |
67 UiGridWidget *grid = (UiGridWidget*)widget; |
| |
68 RECT rc; |
| |
69 GetClientRect(hwnd, &rc); |
| |
70 FillRect(hdc, &rc, grid->brush); |
| 63 } |
71 } |
| 64 |
72 |
| 65 W32Size ui_grid_layout_get_preferred_size(W32Widget *widget) { |
73 W32Size ui_grid_layout_get_preferred_size(W32Widget *widget) { |
| 66 UiGridLayout *grid = widget->layoutmanager; |
74 UiGridLayout *grid = widget->layoutmanager; |
| 67 W32Size size; |
75 W32Size size; |
| 132 HWND hwnd = CreateWindowEx( |
140 HWND hwnd = CreateWindowEx( |
| 133 0, |
141 0, |
| 134 TEXT("STATIC"), |
142 TEXT("STATIC"), |
| 135 NULL, |
143 NULL, |
| 136 WS_CHILD | WS_VISIBLE, |
144 WS_CHILD | WS_VISIBLE, |
| 137 0, 0, 100, 100, |
145 0, 0, 300, 300, |
| 138 parent, |
146 parent, |
| 139 NULL, |
147 NULL, |
| 140 hInstance, |
148 hInstance, |
| 141 NULL); |
149 NULL); |
| 142 SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)ui_default_eventproc); |
150 SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)ui_default_eventproc); |
| 143 |
151 |
| 144 W32Widget *widget = w32_widget_new(&grid_layout_widget_class, hwnd); |
152 UiGridWidget *widget = w32_widget_create(&grid_layout_widget_class, hwnd, sizeof(UiGridWidget)); |
| 145 ui_container_add(container, widget, &layout); |
153 ui_container_add(container, (W32Widget*)widget, &layout); |
| 146 |
154 |
| 147 UiContainerX *gridContainer = ui_grid_container_create(obj, hwnd, args->columnspacing, args->rowspacing, INSETS_ZERO); |
155 UiContainerX *gridContainer = ui_grid_container_create(obj, hwnd, args->columnspacing, args->rowspacing, INSETS_ZERO); |
| 148 uic_object_push_container(obj, gridContainer); |
156 uic_object_push_container(obj, gridContainer); |
| 149 |
157 |
| 150 UiGridLayoutContainer *grid = (UiGridLayoutContainer*)gridContainer; |
158 UiGridLayoutContainer *grid = (UiGridLayoutContainer*)gridContainer; |
| 151 widget->layout = (W32LayoutFunc)ui_grid_layout; |
159 widget->widget.layout = (W32LayoutFunc)ui_grid_layout; |
| 152 widget->layoutmanager = grid->layout; |
160 widget->widget.layoutmanager = grid->layout; |
| |
161 widget->brush = GetSysColorBrush(COLOR_BTNFACE); |
| 153 grid->layout->preferred_width = 200; |
162 grid->layout->preferred_width = 200; |
| 154 grid->layout->preferred_height = 200; |
163 grid->layout->preferred_height = 200; |
| 155 |
164 |
| 156 return widget; |
165 return (W32Widget*)widget; |
| 157 } |
166 } |
| 158 |
167 |
| 159 UiContainerX* ui_grid_container_create(UiObject *obj, HWND hwnd, short columnspacing, short rowspacing, GridEdgeInsets padding) { |
168 UiContainerX* ui_grid_container_create(UiObject *obj, HWND hwnd, short columnspacing, short rowspacing, GridEdgeInsets padding) { |
| 160 UiGridLayoutContainer *container = cxZalloc(obj->ctx->allocator, sizeof(UiGridLayoutContainer)); |
169 UiGridLayoutContainer *container = cxZalloc(obj->ctx->allocator, sizeof(UiGridLayoutContainer)); |
| 161 container->container.hwnd = hwnd; |
170 container->container.hwnd = hwnd; |