Fixing progressbar bug

This commit is contained in:
Joel Bodenmann 2014-04-26 03:07:21 +02:00
parent 237658f052
commit f7ef75928b

View file

@ -206,6 +206,12 @@ void gwinProgressbarStart(GHandle gh, delaytime_t delay) {
gtimerInit(&(gsw->gt));
gtimerStart(&(gsw->gt), _progressbarCallback, gh, FALSE, gsw->delay);
// if this is not made, the progressbar will not start when the it's already visible
if (gsw->w.g.flags & GWIN_FLG_VISIBLE) {
gwinSetVisible(gh, FALSE);
gwinSetVisible(gh, TRUE);
}
#undef gsw
}
@ -226,18 +232,28 @@ void gwinProgressbarStop(GHandle gh) {
void gwinProgressbarDraw_Std(GWidgetObject *gw, void *param) {
#define gsw ((GProgressbarObject *)gw)
const GColorSet * pcol;
(void) param;
if (gw->g.vmt != (gwinVMT *)&progressbarVMT)
return;
// disable the auto-update timer if any
#if GFX_USE_GTIMER
if (gtimerIsActive(&(gsw->gt)) && !(gw->g.flags & GWIN_FLG_ENABLED)) {
gtimerStop(&(gsw->gt));
}
#endif
// get the colors right
if ((gw->g.flags & GWIN_FLG_ENABLED))
pcol = &gw->pstyle->pressed;
else
pcol = &gw->pstyle->disabled;
if (gw->g.width < gw->g.height) { // Vertical progressbar
// Vertical progressbar
if (gw->g.width < gw->g.height) {
if (gsw->dpos != gw->g.height-1)
gdispGFillArea(gw->g.display, gw->g.x, gw->g.y+gsw->dpos, gw->g.width, gw->g.height - gsw->dpos, pcol->progress); // Active Area
if (gsw->dpos != 0)