summaryrefslogtreecommitdiff
path: root/src/ui/widget.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/widget.c')
-rw-r--r--src/ui/widget.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/ui/widget.c b/src/ui/widget.c
index 05bb62cc..d218d7ee 100644
--- a/src/ui/widget.c
+++ b/src/ui/widget.c
@@ -119,11 +119,11 @@ const iString *id_Widget(const iWidget *d) {
119 return &d->id; 119 return &d->id;
120} 120}
121 121
122int flags_Widget(const iWidget *d) { 122int64_t flags_Widget(const iWidget *d) {
123 return d->flags; 123 return d->flags;
124} 124}
125 125
126void setFlags_Widget(iWidget *d, int flags, iBool set) { 126void setFlags_Widget(iWidget *d, int64_t flags, iBool set) {
127 iChangeFlags(d->flags, flags, set); 127 iChangeFlags(d->flags, flags, set);
128 if (flags & keepOnTop_WidgetFlag) { 128 if (flags & keepOnTop_WidgetFlag) {
129 if (set) { 129 if (set) {
@@ -228,6 +228,13 @@ static size_t numArrangedChildren_Widget_(const iWidget *d) {
228 return count; 228 return count;
229} 229}
230 230
231static void centerHorizontal_Widget_(iWidget *d) {
232 d->rect.pos.x = ((d->parent ? width_Rect(innerRect_Widget_(d->parent))
233 : rootSize_Window(get_Window()).x) -
234 width_Rect(d->rect)) /
235 2;
236}
237
231void arrange_Widget(iWidget *d) { 238void arrange_Widget(iWidget *d) {
232 if (isCollapsed_Widget_(d)) { 239 if (isCollapsed_Widget_(d)) {
233 setFlags_Widget(d, wasCollapsed_WidgetFlag, iTrue); 240 setFlags_Widget(d, wasCollapsed_WidgetFlag, iTrue);
@@ -236,6 +243,9 @@ void arrange_Widget(iWidget *d) {
236 if (d->flags & moveToParentRightEdge_WidgetFlag) { 243 if (d->flags & moveToParentRightEdge_WidgetFlag) {
237 d->rect.pos.x = width_Rect(innerRect_Widget_(d->parent)) - width_Rect(d->rect); 244 d->rect.pos.x = width_Rect(innerRect_Widget_(d->parent)) - width_Rect(d->rect);
238 } 245 }
246 if (d->flags & centerHorizontal_WidgetFlag) {
247 centerHorizontal_Widget_(d);
248 }
239 if (d->flags & resizeToParentWidth_WidgetFlag) { 249 if (d->flags & resizeToParentWidth_WidgetFlag) {
240 setWidth_Widget_(d, width_Rect(innerRect_Widget_(d->parent))); 250 setWidth_Widget_(d, width_Rect(innerRect_Widget_(d->parent)));
241 } 251 }
@@ -351,6 +361,9 @@ void arrange_Widget(iWidget *d) {
351 if (child->flags & fixedPosition_WidgetFlag) { 361 if (child->flags & fixedPosition_WidgetFlag) {
352 continue; 362 continue;
353 } 363 }
364 if (child->flags & centerHorizontal_WidgetFlag) {
365 continue;
366 }
354 if (d->flags & (arrangeHorizontal_WidgetFlag | arrangeVertical_WidgetFlag)) { 367 if (d->flags & (arrangeHorizontal_WidgetFlag | arrangeVertical_WidgetFlag)) {
355 if (child->flags & moveToParentRightEdge_WidgetFlag) { 368 if (child->flags & moveToParentRightEdge_WidgetFlag) {
356 continue; /* Not part of the sequential arrangement .*/ 369 continue; /* Not part of the sequential arrangement .*/
@@ -401,6 +414,9 @@ void arrange_Widget(iWidget *d) {
401 } 414 }
402 } 415 }
403 } 416 }
417 if (d->flags & centerHorizontal_WidgetFlag) {
418 centerHorizontal_Widget_(d);
419 }
404 } 420 }
405} 421}
406 422
@@ -616,7 +632,7 @@ iAny *addChildPos_Widget(iWidget *d, iAnyObject *child, enum iWidgetAddPos addPo
616 return child; 632 return child;
617} 633}
618 634
619iAny *addChildFlags_Widget(iWidget *d, iAnyObject *child, int childFlags) { 635iAny *addChildFlags_Widget(iWidget *d, iAnyObject *child, int64_t childFlags) {
620 setFlags_Widget(child, childFlags, iTrue); 636 setFlags_Widget(child, childFlags, iTrue);
621 return addChild_Widget(d, child); 637 return addChild_Widget(d, child);
622} 638}