Esempio n. 1
0
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);
}
Esempio n. 2
0
File: ucombo.c Progetto: adsr/agar
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);
}
Esempio n. 3
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);
	}
Esempio n. 4
0
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);
}
Esempio n. 5
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);
}
Esempio n. 6
0
File: textbox.c Progetto: adsr/agar
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);
}