static int SizeAllocate(void *obj, const AG_SizeAlloc *a) { AG_FileSelector *fs = obj; AG_SizeReq rBtn; AG_SizeAlloc aChld; AG_WidgetSizeReq(fs->button, &rBtn); if (a->w < rBtn.w) { return (-1); } aChld.x = 0; aChld.y = 0; aChld.w = a->w - rBtn.w - 1; aChld.h = a->h; AG_WidgetSizeAlloc(fs->tbox, &aChld); aChld.x = aChld.w + 1; aChld.w = rBtn.w; AG_WidgetSizeAlloc(fs->button, &aChld); return (0); }
static int SizeAllocate(void *obj, const AG_SizeAlloc *a) { AG_UCombo *com = obj; AG_SizeAlloc aButton; aButton.x = 0; aButton.y = 0; aButton.w = a->w; aButton.h = a->h; AG_WidgetSizeAlloc(com->button, &aButton); return (0); }
/* * Update Agar window geometries following a display resize (for * single-window drivers). */ void AG_PostResizeDisplay(AG_DriverSw *dsw) { AG_Window *win; AG_FOREACH_WINDOW(win, dsw) { AG_SizeAlloc a; a.x = WIDGET(win)->x; a.y = WIDGET(win)->y; a.w = WIDGET(win)->w; a.h = WIDGET(win)->h; AG_ObjectLock(win); if (win->flags & AG_WINDOW_MAXIMIZED) { AG_WindowSetGeometryMax(win); } else { if (win->flags & AG_WINDOW_HMAXIMIZE) { a.x = 0; a.w = dsw->w; } else { if (a.x+a.w > dsw->w) { a.x = dsw->w - a.w; if (a.x < 0) { a.x = 0; a.w = dsw->w; } } } if (win->flags & AG_WINDOW_VMAXIMIZE) { a.y = 0; a.h = dsw->h; } else { if (a.y+a.h > dsw->h) { a.y = dsw->h - a.h; if (a.y < 0) { a.y = 0; a.h = dsw->w; } } } AG_WidgetSizeAlloc(win, &a); AG_WindowUpdate(win); } win->dirty = 1; AG_ObjectUnlock(win); }
static int SizeAllocate(void *p, const AG_SizeAlloc *a) { AG_Button *bu = p; AG_SizeAlloc aLbl; if (a->w < 2 || a->h < 2) { return (-1); } if (bu->lbl != NULL) { aLbl.x = bu->lPad; aLbl.y = bu->tPad; aLbl.w = a->w - (bu->lPad+bu->rPad); aLbl.h = a->h - (bu->tPad+bu->bPad); AG_WidgetSizeAlloc(bu->lbl, &aLbl); } return (0); }
static int SizeAllocate(void *obj, const AG_SizeAlloc *a) { AG_FontSelector *fs = obj; AG_SizeAlloc aChld; /* Size horizontal pane */ aChld.x = 0; aChld.y = 0; aChld.w = a->w; aChld.h = a->h - fs->rPreview.h; AG_WidgetSizeAlloc(fs->hPane, &aChld); fs->rPreview.x = 0; fs->rPreview.y = a->h - fs->rPreview.h; fs->rPreview.w = a->w; return (0); }
static int SizeAllocate(void *obj, const AG_SizeAlloc *a) { AG_Textbox *tb = obj; int boxPadW = tb->boxPadX*2; int boxPadH = tb->boxPadY*2; int wBar = 0, hBar = 0, wBarSz = 0, hBarSz = 0; AG_SizeAlloc aLbl, aEd, aSb; AG_SizeReq r; if (a->w < boxPadW*2 || a->h < boxPadH*2) return (-1); if (tb->lbl != NULL) { AG_WidgetSizeReq(tb->lbl, &r); aLbl.x = boxPadW; aLbl.y = boxPadH; aLbl.w = MIN(r.w, a->w); aLbl.h = MIN(r.h, a->h); AG_WidgetSizeAlloc(tb->lbl, &aLbl); } if (tb->flags & AG_TEXTBOX_MULTILINE) { if (tb->hBar != NULL && AG_WidgetVisible(tb->hBar)) { AG_WidgetSizeReq(tb->hBar, &r); hBarSz = MIN(r.h, a->h); aSb.x = 0; aSb.y = a->h - hBarSz; aSb.w = a->w - hBarSz + 1; aSb.h = hBarSz; AG_WidgetSizeAlloc(tb->hBar, &aSb); if (AG_ScrollbarVisible(tb->hBar)) hBar = aSb.h; } if (tb->vBar != NULL && AG_WidgetVisible(tb->vBar)) { AG_WidgetSizeReq(tb->vBar, &r); wBarSz = MIN(r.w, a->w); aSb.x = a->w - wBarSz; aSb.y = 0; aSb.w = wBarSz; aSb.h = a->h - hBarSz + 1; AG_WidgetSizeAlloc(tb->vBar, &aSb); if (AG_ScrollbarVisible(tb->vBar)) wBar = aSb.w; } tb->r.x = 0; tb->r.y = 0; tb->r.w = a->w; tb->r.h = a->h; } else { tb->r.x = (tb->lbl != NULL) ? WIDTH(tb->lbl) : 0; tb->r.y = 0; tb->r.w = a->w - tb->r.x; tb->r.h = a->h; } aEd.x = ((tb->lbl != NULL) ? WIDTH(tb->lbl) : 0) + tb->boxPadX; aEd.y = tb->boxPadY; aEd.w = a->w - boxPadW - aEd.x - wBar; aEd.h = a->h - boxPadH - hBar; AG_WidgetSizeAlloc(tb->ed, &aEd); return (0); }