static void iTabsComputeNaturalSizeMethod(Ihandle* ih, int *w, int *h, int *expand) { Ihandle* child; int children_expand, children_naturalwidth, children_naturalheight; int decorwidth, decorheight; /* calculate total children natural size (even for hidden children) */ children_expand = 0; children_naturalwidth = 0; children_naturalheight = 0; for (child = ih->firstchild; child; child = child->brother) { /* update child natural size first */ iupBaseComputeNaturalSize(child); children_expand |= child->expand; children_naturalwidth = iupMAX(children_naturalwidth, child->naturalwidth); children_naturalheight = iupMAX(children_naturalheight, child->naturalheight); } iTabsGetDecorSize(ih, &decorwidth, &decorheight); *expand = children_expand; *w = children_naturalwidth + decorwidth; *h = children_naturalheight + decorheight; }
static char* iTabsGetClientSizeAttrib(Ihandle* ih) { int width, height, decorwidth, decorheight; width = ih->currentwidth; height = ih->currentheight; iTabsGetDecorSize(ih, &decorwidth, &decorheight); width -= decorwidth; height -= decorheight; if (width < 0) width = 0; if (height < 0) height = 0; return iupStrReturnIntInt(width, height,'x'); }
static char* iTabsGetClientSizeAttrib(Ihandle* ih) { int width, height, decorwidth, decorheight; char* str = iupStrGetMemory(20); width = ih->currentwidth; height = ih->currentheight; iTabsGetDecorSize(ih, &decorwidth, &decorheight); width -= decorwidth; height -= decorheight; if (width < 0) width = 0; if (height < 0) height = 0; sprintf(str, "%dx%d", width, height); return str; }
static void iTabsSetChildrenCurrentSizeMethod(Ihandle* ih, int shrink) { Ihandle* child; int width, height, decorwidth, decorheight; iTabsGetDecorSize(ih, &decorwidth, &decorheight); width = ih->currentwidth-decorwidth; height = ih->currentheight-decorheight; if (width < 0) width = 0; if (height < 0) height = 0; for (child = ih->firstchild; child; child = child->brother) { iupBaseSetCurrentSize(child, width, height, shrink); } }
static void iTabsComputeNaturalSizeMethod(Ihandle* ih) { iupBaseContainerUpdateExpand(ih); /* always initialize the natural size using the user size */ ih->naturalwidth = ih->userwidth; ih->naturalheight = ih->userheight; if (ih->firstchild) { Ihandle* child; int children_expand, children_naturalwidth, children_naturalheight; int decorwidth, decorheight; /* calculate total children natural size (even for hidden children) */ children_expand = 0; children_naturalwidth = 0; children_naturalheight = 0; for (child = ih->firstchild; child; child = child->brother) { /* update child natural size first */ iupClassObjectComputeNaturalSize(child); children_expand |= child->expand; children_naturalwidth = iupMAX(children_naturalwidth, child->naturalwidth); children_naturalheight = iupMAX(children_naturalheight, child->naturalheight); } iTabsGetDecorSize(ih, &decorwidth, &decorheight); ih->expand &= children_expand; /* compose but only expand where the box can expand */ ih->naturalwidth = iupMAX(ih->naturalwidth, children_naturalwidth + decorwidth); ih->naturalheight = iupMAX(ih->naturalheight, children_naturalheight + decorheight); } }