+
+ void map_coords_to_ancestor(int &, int &, const Widget &) const;
+
+protected:
+ /** Sets the widget's parent Container. The widget must be unparented when
+ calling this function with a non-null parameter. */
+ void set_parent(Container *);
+public:
+ Container *get_parent() const { return parent; }
+
+ /** Finds the closest ancestor of a specific type. */
+ template<typename T>
+ T *find_ancestor() const
+ {
+ for(Widget *w=parent; w; w=w->get_parent())
+ if(T *tw = dynamic_cast<T *>(w))
+ return tw;
+ return 0;
+ }
+
+ /** Sets the widget style. The name of the resource to be looked up is
+ constructed by concatenating the widget class and the style name with a
+ dash. */
+ void set_style(const std::string &);
+ const Style &get_style() const { return *style; }
+
+protected:
+ /** Gets a style object from the resource collection based on the class and
+ style names of the widget. */
+ void update_style();
+
+public:
+ void set_tooltip(const std::string &);
+ const std::string &get_tooltip() const { return tooltip; }
+
+ void set_visible(bool);