]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/toggle.cpp
Unify the behavior of value change signals
[libs/gltk.git] / source / toggle.cpp
index fe6518dda722b57fc6ffda3c2481d4e42ae63047..cb80880787e75162f3f03cc27cbe89444f17cf71 100644 (file)
@@ -48,6 +48,8 @@ void Toggle::exclude_siblings()
 
 void Toggle::set_value(bool v)
 {
+       bool old_value = value;
+
        value = v;
        if(value)
        {
@@ -57,6 +59,9 @@ void Toggle::set_value(bool v)
        }
        else
                clear_state(ACTIVE);
+
+       if(value!=old_value)
+               signal_toggled.emit(value);
 }
 
 void Toggle::rebuild_special(const Part &part)
@@ -76,10 +81,7 @@ void Toggle::button_release(int x, int y, unsigned btn)
        if(pressed && btn==1)
        {
                if(geom.is_inside_relative(x, y) && (!value || !exclusive))
-               {
                        set_value(!value);
-                       signal_toggled.emit(value);
-               }
 
                pressed = false;
        }