]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/widget.cpp
Make the DISABLED state actually do something
[libs/gltk.git] / source / widget.cpp
index 13c5174df43e33cc6db256bbbe47ec45d3de7c4a..59105b949b3e09d027b6c9a78ed34e228f764aa2 100644 (file)
@@ -75,6 +75,21 @@ void Widget::set_geometry(const Geometry &g)
        }
 }
 
+void Widget::map_coords_to_ancestor(int &x, int &y, const Widget &ancestor) const
+{
+       for(const Widget *w=this; w; w=w->get_parent())
+       {
+               if(w==&ancestor)
+                       return;
+
+               const Geometry &wgeom = w->get_geometry();
+               x += wgeom.x;
+               y += wgeom.y;
+       }
+
+       throw hierarchy_error("not an ancestor");
+}
+
 void Widget::set_parent(Container *p)
 {
        if(parent && p)
@@ -157,6 +172,11 @@ void Widget::set_focus()
        signal_request_focus.emit();
 }
 
+void Widget::set_enabled(bool e)
+{
+       set_state(DISABLED, (e ? NORMAL : DISABLED));
+}
+
 void Widget::set_state(State mask, State bits)
 {
        state = (state&~mask)|bits;