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;
}
}
return static_cast<Toggle &>(wdg);
}
+void Toggle::Loader::finish()
+{
+ Toggle &tgl=static_cast<Toggle &>(wdg);
+ tgl.state=(tgl.value ? ACTIVE : NORMAL);
+}
+
} // namespace GLtk
} // namespace Msp