]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/toggle.cpp
Allow Root widgets to be created with custom input devices
[libs/gltk.git] / source / toggle.cpp
index 6d2a10b16644d6254163b53b26c6f92ead7754ce..789ae37ecfec59fdd5987b9739fa0818dc98f8d9 100644 (file)
@@ -30,12 +30,15 @@ void Toggle::autosize()
                geom.w = max(geom.w, text.get_width()+margin.left+margin.right);
                geom.h = max(geom.h, text.get_height()+margin.top+margin.bottom);
        }
+
+       rebuild();
 }
 
 void Toggle::set_text(const string &t)
 {
        text = t;
        signal_autosize_changed.emit();
+       rebuild();
 }
 
 void Toggle::set_exclusive(bool e)
@@ -59,18 +62,18 @@ void Toggle::set_value(bool v)
        value = v;
        if(value)
        {
-               state |= ACTIVE;
+               set_state(ACTIVE);
                if(exclusive && parent)
                        exclude_siblings();
        }
        else
-               state &= ~ACTIVE;
+               clear_state(ACTIVE);
 }
 
-void Toggle::render_special(const Part &part) const
+void Toggle::rebuild_special(const Part &part, CachedPart &cache)
 {
        if(part.get_name()=="text")
-               text.render(part, geom);
+               text.build(part, geom, cache);
 }
 
 void Toggle::button_press(int, int, unsigned btn)
@@ -115,10 +118,7 @@ Toggle &Toggle::Loader::get_object() const
 void Toggle::Loader::finish()
 {
        Toggle &tgl = get_object();
-       if(tgl.value)
-               tgl.state |= ACTIVE;
-       else
-               tgl.state &= ~ACTIVE;
+       tgl.set_state(ACTIVE, (tgl.value ? ACTIVE : NORMAL));
 }
 
 void Toggle::Loader::text(const string &t)