X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fslider.cpp;h=ead5664a303fae8e88ac26c9e0967629a5b02ceb;hb=3f301f9b6f73e886bdbb61565edb2c02667039d0;hp=0b1d8b066ee2e992644d9cc0254dc672a6ac8db5;hpb=8f6f543758fb1b2b17ae2db519198d420eb9982d;p=libs%2Fgltk.git diff --git a/source/slider.cpp b/source/slider.cpp index 0b1d8b0..ead5664 100644 --- a/source/slider.cpp +++ b/source/slider.cpp @@ -15,7 +15,9 @@ Slider::Slider(const Resources &r): min(0), max(1), value(0), - step(0.1) + step(0.1), + dragging(false), + drag_area_size(0) { } void Slider::set_value(double v) @@ -49,6 +51,26 @@ void Slider::set_step(double s) set_value(value); } +void Slider::start_drag(int p) +{ + dragging=true; + drag_start_pos=p; + drag_start_value=value; + state|=ACTIVE; +} + +void Slider::drag(int p) +{ + if(max>min) + set_value(drag_start_value+(p-drag_start_pos)*(max-min)/drag_area_size); +} + +void Slider::end_drag() +{ + dragging=false; + state&=~ACTIVE; +} + Slider::Loader::Loader(Slider &s): Widget::Loader(s)