X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftoggle.cpp;h=1495344219f89013e790636e4d621f21e8399013;hb=95210598ff214bbc8d05657aeffc4ce7801f211a;hp=2e3488ac24a465fe890820d2dff877cfdb2bfc7d;hpb=48fd4db84c4d0b43305d85f74de99eb4fef04fd6;p=libs%2Fgltk.git diff --git a/source/toggle.cpp b/source/toggle.cpp index 2e3488a..1495344 100644 --- a/source/toggle.cpp +++ b/source/toggle.cpp @@ -13,23 +13,37 @@ 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; + state=(value ? ACTIVE : HOVER); +} + +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; + + pressed=false; } } @@ -64,5 +78,11 @@ Toggle &Toggle::Loader::get_object() const return static_cast(wdg); } +void Toggle::Loader::finish() +{ + Toggle &tgl=static_cast(wdg); + tgl.state=(tgl.value ? ACTIVE : NORMAL); +} + } // namespace GLtk } // namespace Msp