diff --git a/src/gwin/gwin_progressbar.c b/src/gwin/gwin_progressbar.c index ef28e8dc..d5b8721a 100644 --- a/src/gwin/gwin_progressbar.c +++ b/src/gwin/gwin_progressbar.c @@ -79,13 +79,12 @@ GHandle gwinGProgressbarCreate(GDisplay *g, GProgressbarObject *gs, const GWidge gs->pos = 0; #if GWIN_PROGRESSBAR_AUTO - gs->delay = 0; gtimerInit(&gs->gt); #endif ResetDisplayPos(gs); gwinSetVisible((GHandle)gs, pInit->g.show); - + return (GHandle)gs; } @@ -183,39 +182,37 @@ void gwinProgressbarDecrement(GHandle gh) { static void _progressbarCallback(void *param) { #define gsw ((GProgressbarObject *)gh) GHandle gh = (GHandle)param; - + if (gh->vmt != (gwinVMT *)&progressbarVMT) return; - + gwinProgressbarIncrement(gh); - - if (gsw->pos < gsw->max) - gtimerStart(&(gsw->gt), _progressbarCallback, gh, FALSE, gsw->delay); - - #undef gsw - } - - void gwinProgressbarStart(GHandle gh, delaytime_t delay) { - #define gsw ((GProgressbarObject *)gh) - - if (gh->vmt != (gwinVMT *)&progressbarVMT) - return; - - gsw->delay = delay; - - gtimerStart(&(gsw->gt), _progressbarCallback, gh, FALSE, gsw->delay); - + + if (gsw->pos >= gsw->max) + gtimerStop(&gsw->gt); + #undef gsw } - - void gwinProgressbarStop(GHandle gh) { + + void gwinProgressbarStart(GHandle gh, delaytime_t delay) { #define gsw ((GProgressbarObject *)gh) - + if (gh->vmt != (gwinVMT *)&progressbarVMT) return; - - gtimerStop(&(gsw->gt)); - + + gtimerStart(&gsw->gt, _progressbarCallback, gh, TRUE, delay); + + #undef gsw + } + + void gwinProgressbarStop(GHandle gh) { + #define gsw ((GProgressbarObject *)gh) + + if (gh->vmt != (gwinVMT *)&progressbarVMT) + return; + + gtimerStop(&gsw->gt); + #undef gsw } #endif /* GWIN_PROGRESSBAR_AUTO */ @@ -226,7 +223,7 @@ void gwinProgressbarDecrement(GHandle gh) { void gwinProgressbarDraw_Std(GWidgetObject *gw, void *param) { #define gsw ((GProgressbarObject *)gw) - + const GColorSet * pcol; (void) param; diff --git a/src/gwin/gwin_progressbar.h b/src/gwin/gwin_progressbar.h index 49c11a98..dae9d40a 100644 --- a/src/gwin/gwin_progressbar.h +++ b/src/gwin/gwin_progressbar.h @@ -33,7 +33,6 @@ typedef struct GProgressbarObject { int pos; #if GWIN_PROGRESSBAR_AUTO GTimer gt; - delaytime_t delay; #endif } GProgressbarObject; @@ -59,7 +58,7 @@ extern "C" { * @note A progressbar does not take any GINPUT inputs. * * @api - */ + */ GHandle gwinGProgressbarCreate(GDisplay *g, GProgressbarObject *gb, const GWidgetInit *pInit); #define gwinProgressbarCreate(w, pInit) gwinGProgressbarCreate(GDISP, w, pInit) @@ -165,14 +164,14 @@ void gwinProgressbarDecrement(GHandle gh); * @api */ void gwinProgressbarStart(GHandle gh, delaytime_t delay); - + /** * @brief Stop the timer which is started by @p gwinProgressbarStart() * * @param[in] gh The window handle (must be a progressbar window) * * @api - */ + */ void gwinProgressbarStop(GHandle gh); #endif /* GWIN_PROGRESSBAR_AUTO */