X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftoggle.cpp;h=dd6ce359cad95ef691884b1e67128fcebafb81be;hb=9b29612d1cde85fee9b3f011e86a5cabe5dbcce3;hp=2e3488ac24a465fe890820d2dff877cfdb2bfc7d;hpb=48fd4db84c4d0b43305d85f74de99eb4fef04fd6;p=libs%2Fgltk.git diff --git a/source/toggle.cpp b/source/toggle.cpp index 2e3488a..dd6ce35 100644 --- a/source/toggle.cpp +++ b/source/toggle.cpp @@ -13,36 +13,39 @@ namespace GLtk { Toggle::Toggle(const Resources &r): Widget(r), + pressed(false), value(false) { update_style(); } -void Toggle::button_release(int x, int y, unsigned btn) +void Toggle::set_value(bool v) +{ + value=v; + if(value) + state|=ACTIVE; + else + state&=~ACTIVE; +} + +void Toggle::button_press(int, int, unsigned btn) { if(btn==1) + pressed=true; +} + +void Toggle::button_release(int x, int y, unsigned btn) +{ + if(pressed && btn==1) { if(geom.is_inside_relative(x, y)) { - value=!value; - state=(value ? ACTIVE : HOVER); + set_value(!value); signal_toggled.emit(value); } - else - state=NORMAL; - } -} -void Toggle::pointer_enter() -{ - if(!value) - state=HOVER; -} - -void Toggle::pointer_leave() -{ - if(!value) - state=NORMAL; + pressed=false; + } } void Toggle::render_special(const Part &part) const @@ -64,5 +67,14 @@ Toggle &Toggle::Loader::get_object() const return static_cast(wdg); } +void Toggle::Loader::finish() +{ + Toggle &tgl=static_cast(wdg); + if(tgl.value) + tgl.state|=ACTIVE; + else + tgl.state&=~ACTIVE; +} + } // namespace GLtk } // namespace Msp