ui/motif/container.c

changeset 482
5bc95a6228b0
parent 480
7dfd5e546b99
child 484
07055fcc5e2c
equal deleted inserted replaced
481:bead55b1e6ca 482:5bc95a6228b0
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;

mercurial