static void GListCheckSB(GDList *gl) { if ( gl->vsb==NULL ) { GGadgetData gd; memset(&gd,'\0',sizeof(gd)); gd.pos.y = gl->g.r.y; gd.pos.height = gl->g.r.height; gd.pos.width = GDrawPointsToPixels(gl->g.base,_GScrollBar_Width); gd.pos.x = gl->g.r.x+gl->g.r.width - gd.pos.width; gd.flags = gg_visible|gg_enabled|gg_pos_in_pixels|gg_sb_vert|gg_pos_use0; gd.handle_controlevent = glist_scroll; gl->vsb = (GScrollBar *) GScrollBarCreate(gl->g.base,&gd,gl); gl->vsb->g.contained = true; gd.pos.width += GDrawPointsToPixels(gl->g.base,1); gl->g.r.width -= gd.pos.width; gl->g.inner.width -= gd.pos.width; } if ( gl->always_show_sb || GListLinesInWindow(gl,0)<gl->ltot ) { if ( gl->vsb->g.state == gs_invisible ) { int wid = gl->vsb->g.r.width + GDrawPointsToPixels(gl->g.base,1); gl->vsb->g.state = gs_enabled; gl->g.r.width -= wid; gl->g.inner.width -= wid; } GScrollBarSetBounds(&gl->vsb->g,0,gl->ltot,GListLinesInWindow(gl,0)); GScrollBarSetPos(&gl->vsb->g,gl->loff); } else { if ( gl->vsb->g.state != gs_invisible ) { int wid = gl->vsb->g.r.width + GDrawPointsToPixels(gl->g.base,1); gl->vsb->g.state = gs_invisible; gl->g.r.width += wid; gl->g.inner.width += wid; } } }
static void GRowColCheckSB(GRowCol *grc) { if ( GRowColLinesInWindow(grc,0)<grc->ltot ) { if ( grc->vsb==NULL ) { GGadgetData gd; memset(&gd,'\0',sizeof(gd)); gd.pos.y = grc->g.r.y; gd.pos.height = grc->g.r.height; gd.pos.width = GDrawPointsToPixels(grc->g.base,_GScrollBar_Width); gd.pos.x = grc->g.r.x+grc->g.r.width - gd.pos.width; gd.flags = gg_visible|gg_enabled|gg_pos_in_pixels|gg_sb_vert|gg_pos_use0; gd.handle_controlevent = growcol_scroll; grc->vsb = (GScrollBar *) GScrollBarCreate(grc->g.base,&gd,grc); grc->vsb->g.contained = true; gd.pos.width += GDrawPointsToPixels(grc->g.base,1); grc->g.r.width -= gd.pos.width; grc->g.inner.width -= gd.pos.width; } GScrollBarSetBounds(&grc->vsb->g,0,grc->ltot-1,GRowColLinesInWindow(grc,0)); GScrollBarSetPos(&grc->vsb->g,grc->loff); } else { if ( grc->vsb!=NULL ) { int wid = grc->vsb->g.r.width + GDrawPointsToPixels(grc->g.base,1); (grc->vsb->g.funcs->destroy)(&grc->vsb->g); grc->vsb = NULL; grc->g.r.width += wid; grc->g.inner.width += wid; } } }
static void CreateErrorWindow(void) { GWindowAttrs wattrs; FontRequest rq; GRect pos,size; int as, ds, ld; GWindow gw; GGadgetData gd; extern int _GScrollBar_Width; GDrawGetSize(GDrawGetRoot(NULL),&size); memset(&wattrs,0,sizeof(wattrs)); wattrs.mask = wam_events|wam_cursor|wam_utf8_wtitle|wam_isdlg|wam_positioned; wattrs.event_masks = ~(1<<et_charup); wattrs.is_dlg = true; wattrs.cursor = ct_pointer; wattrs.positioned = true; wattrs.utf8_window_title = _("Warnings"); pos.width = GDrawPointsToPixels(NULL,GGadgetScale(400)); pos.height = GDrawPointsToPixels(NULL,GGadgetScale(100)); pos.x = size.width - pos.width - 10; pos.y = size.height - pos.height - 30; errdata.gw = gw = GDrawCreateTopWindow(NULL,&pos,warnings_e_h,&errdata,&wattrs); memset(&rq,0,sizeof(rq)); rq.utf8_family_name = SANS_UI_FAMILIES; rq.point_size = 10; rq.weight = 400; errdata.font = GDrawInstanciateFont(NULL,&rq); errdata.font = GResourceFindFont("Warnings.Font",errdata.font); GDrawWindowFontMetrics(errdata.gw,errdata.font,&as,&ds,&ld); errdata.as = as; errdata.fh = as+ds; memset(&gd,0,sizeof(gd)); gd.pos.y = 0; gd.pos.height = pos.height; gd.pos.width = GDrawPointsToPixels(gw,_GScrollBar_Width); gd.pos.x = pos.width-gd.pos.width; gd.flags = gg_visible|gg_enabled|gg_pos_in_pixels|gg_sb_vert; errdata.vsb = GScrollBarCreate(gw,&gd,&errdata); pos.width -= gd.pos.width; pos.x = pos.y = 0; wattrs.mask = wam_events|wam_cursor; errdata.v = GWidgetCreateSubWindow(gw,&pos,warningsv_e_h,&errdata,&wattrs); GDrawSetVisible(errdata.v,true); errdata.linecnt = pos.height/errdata.fh; errdata.start_l = errdata.end_l = -1; }