141 XtSetArg(xargs[n], gridColumnSpacing, args.columnspacing); n++; |
141 XtSetArg(xargs[n], gridColumnSpacing, args.columnspacing); n++; |
142 XtSetArg(xargs[n], gridRowSpacing, args.rowspacing); n++; |
142 XtSetArg(xargs[n], gridRowSpacing, args.rowspacing); n++; |
143 Widget grid = XtCreateManagedWidget(args.name ? args.name : "gridcontainer", gridClass, parent, xargs, n); |
143 Widget grid = XtCreateManagedWidget(args.name ? args.name : "gridcontainer", gridClass, parent, xargs, n); |
144 ctn->add(ctn, grid); |
144 ctn->add(ctn, grid); |
145 |
145 |
146 UiContainerX *container = ui_grid_container(obj, grid); |
146 UiContainerX *container = ui_grid_container(obj, grid, args.def_hexpand, args.def_vexpand, args.def_hfill, args.def_vfill); |
147 uic_object_push_container(obj, container); |
147 uic_object_push_container(obj, container); |
148 |
148 |
149 return grid; |
149 return grid; |
150 } |
150 } |
151 |
151 |
152 UiContainerX* ui_grid_container(UiObject *obj, Widget grid) { |
152 UiContainerX* ui_grid_container( |
|
153 UiObject *obj, |
|
154 Widget grid, |
|
155 UiBool def_hexpand, |
|
156 UiBool def_vexpand, |
|
157 UiBool def_hfill, |
|
158 UiBool def_vfill) |
|
159 { |
153 UiGridContainer *ctn = ui_malloc(obj->ctx, sizeof(UiGridContainer)); |
160 UiGridContainer *ctn = ui_malloc(obj->ctx, sizeof(UiGridContainer)); |
154 memset(ctn, 0, sizeof(UiBoxContainer)); |
161 memset(ctn, 0, sizeof(UiBoxContainer)); |
155 ctn->container.prepare = ui_grid_container_prepare; |
162 ctn->container.prepare = ui_grid_container_prepare; |
156 ctn->container.add = ui_grid_container_add; |
163 ctn->container.add = ui_grid_container_add; |
157 ctn->container.widget = grid; |
164 ctn->container.widget = grid; |
158 ctn->x = 0; |
165 ctn->x = 0; |
159 ctn->y = 0; |
166 ctn->y = 0; |
|
167 ctn->def_hexpand = def_hexpand; |
|
168 ctn->def_vexpand = def_vexpand; |
|
169 ctn->def_hfill = def_hfill; |
|
170 ctn->def_vfill = def_vfill; |
160 return (UiContainerX*)ctn; |
171 return (UiContainerX*)ctn; |
161 } |
172 } |
162 |
173 |
163 Widget ui_grid_container_prepare(UiContainerPrivate *ctn, Arg *args, int *n) { |
174 Widget ui_grid_container_prepare(UiContainerPrivate *ctn, Arg *args, int *n) { |
164 UiGridContainer *grid = (UiGridContainer*)ctn; |
175 UiGridContainer *grid = (UiGridContainer*)ctn; |
175 } |
186 } |
176 if(ctn->layout.rowspan > 0) { |
187 if(ctn->layout.rowspan > 0) { |
177 XtSetArg(args[a], gridRowspan, ctn->layout.rowspan); a++; |
188 XtSetArg(args[a], gridRowspan, ctn->layout.rowspan); a++; |
178 } |
189 } |
179 |
190 |
180 if(grid->container.layout.fill == UI_ON) { |
191 int hexpand = FALSE; |
181 grid->container.layout.hfill = TRUE; |
192 int vexpand = FALSE; |
182 grid->container.layout.vfill = TRUE; |
193 int hfill = FALSE; |
183 grid->container.layout.hexpand = TRUE; |
194 int vfill = FALSE; |
184 grid->container.layout.vexpand = TRUE; |
195 if(!ctn->layout.override_defaults) { |
185 } |
196 if(grid->def_hexpand) { |
186 |
197 hexpand = TRUE; |
187 if(grid->container.layout.hfill) { |
198 hfill = TRUE; |
|
199 } else if(grid->def_hfill) { |
|
200 hfill = TRUE; |
|
201 } |
|
202 if(grid->def_vexpand) { |
|
203 vexpand = TRUE; |
|
204 vfill = TRUE; |
|
205 } else if(grid->def_vfill) { |
|
206 vfill = TRUE; |
|
207 } |
|
208 } |
|
209 |
|
210 if(ctn->layout.hexpand) { |
|
211 hexpand = TRUE; |
|
212 hfill = TRUE; |
|
213 } else if(ctn->layout.hfill) { |
|
214 hfill = TRUE; |
|
215 } |
|
216 if(ctn->layout.vexpand) { |
|
217 vexpand = TRUE; |
|
218 vfill = TRUE; |
|
219 } else if(ctn->layout.vfill) { |
|
220 vfill = TRUE; |
|
221 } |
|
222 if(ctn->layout.fill == UI_ON) { |
|
223 hexpand = TRUE; |
|
224 vexpand = TRUE; |
|
225 hfill = TRUE; |
|
226 vfill = TRUE; |
|
227 } |
|
228 |
|
229 if(hfill) { |
188 XtSetArg(args[a], gridHFill, TRUE); a++; |
230 XtSetArg(args[a], gridHFill, TRUE); a++; |
189 } |
231 } |
190 if(grid->container.layout.vfill) { |
232 if(vfill) { |
191 XtSetArg(args[a], gridVFill, TRUE); a++; |
233 XtSetArg(args[a], gridVFill, TRUE); a++; |
192 } |
234 } |
193 if(grid->container.layout.hexpand) { |
235 if(hexpand) { |
194 XtSetArg(args[a], gridHExpand, TRUE); a++; |
236 XtSetArg(args[a], gridHExpand, TRUE); a++; |
195 } |
237 } |
196 if(grid->container.layout.vexpand) { |
238 if(vexpand) { |
197 XtSetArg(args[a], gridVExpand, TRUE); a++; |
239 XtSetArg(args[a], gridVExpand, TRUE); a++; |
198 } |
240 } |
199 |
241 |
200 *n = a; |
242 *n = a; |
201 return ctn->widget; |
243 return ctn->widget; |