static GScrollBar *_GScrollBarCreate(GScrollBar *gsb, struct gwindow *base, GGadgetData *gd,void *data, GBox *def) { if ( !gscrollbar_inited ) GScrollBarInit(); gsb->g.funcs = &gscrollbar_funcs; gd->flags |= gg_pos_use0; _GGadget_Create(&gsb->g,base,gd,data,def); gsb->g.takes_input = true; if ( gd->flags & gg_sb_vert ) gsb->g.vert = true; gsb->thumbbox = &thumb_box; GScrollBarFit(gsb); if ( gd->u.sbinit!=NULL ) GScrollBarSetMustShow(&gsb->g, gd->u.sbinit->sb_min, gd->u.sbinit->sb_max, gd->u.sbinit->sb_pagesize, gd->u.sbinit->sb_pos); if ( gd->flags & gg_group_end ) _GGadgetCloseGroup(&gsb->g); return( gsb ); }
GGadget *GLineCreate(struct gwindow *base, GGadgetData *gd,void *data) { GGadget *g = calloc(1,sizeof(GLine)); if ( !ggroup_inited ) _GGroup_Init(); g->funcs = &gline_funcs; _GGadget_Create(g,base,gd,data,&_GGroup_LineBox); if ( gd->flags & gg_line_vert ) g->vert = true; GLineFit(g); _GGadget_FinalPosition(g,base,gd); return( g ); }
GGadget *GGroupCreate(struct gwindow *base, GGadgetData *gd,void *data) { GGadget *g = calloc(1,sizeof(GGroup)); if ( !ggroup_inited ) _GGroup_Init(); g->funcs = &ggroup_funcs; _GGadget_Create(g,base,gd,data,&group_box); if ( (gd->flags&gg_group_prevlabel) && g->prev!=NULL ) g->prevlabel = true; if ( g->prevlabel && gd->pos.x==0 ) g->r.x = g->prev->r.x - GDrawPointsToPixels(base,_GGadget_Skip); GGroupFit(g); _GGadget_FinalPosition(g,base,gd); return( g ); }