diff options
author | Alexander Sulfrian <alexander@sulfrian.net> | 2012-04-09 18:33:45 +0200 |
---|---|---|
committer | Alexander Sulfrian <alexander@sulfrian.net> | 2013-01-13 22:40:52 +0100 |
commit | 09eacc82176c37fdc12c903061ffa3ff960ac4cf (patch) | |
tree | 91b8c9eab484a838504cebc4c0a9eda4d7fe4b01 /src/menu/container.hpp | |
parent | de10bbae4602917aae0ed648824f75c3f674eb4a (diff) | |
download | usdx-09eacc82176c37fdc12c903061ffa3ff960ac4cf.tar.gz usdx-09eacc82176c37fdc12c903061ffa3ff960ac4cf.tar.xz usdx-09eacc82176c37fdc12c903061ffa3ff960ac4cf.zip |
menu/container: calculate window coordinates
the container have to keep the current window coordinates of its left,
bottom corner, therefor they have to be recalculated on every
size/position change (need virtual functions in DrawableControl)
Diffstat (limited to 'src/menu/container.hpp')
-rw-r--r-- | src/menu/container.hpp | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/src/menu/container.hpp b/src/menu/container.hpp index 147a0d92..0fa4803e 100644 --- a/src/menu/container.hpp +++ b/src/menu/container.hpp @@ -45,11 +45,18 @@ namespace usdx Frame* frame; std::list<DrawableControl*> controls; + /** + * Left bottom corner of the container in window coordinats. This is + * used for calculating the window coordinates of the containing + * controls for clipping, that only works with window coordinates. + */ + Point<int> window_coords; + void recalculate_window_coords(void); + protected: Container(Container*, const ContainerHelper&); virtual void draw(void); - Point<int> window_coords; public: Container(Container*); @@ -62,6 +69,34 @@ namespace usdx virtual void removeFrame(void); const Point<int>& get_window_coords(void) const; + + /** + * Overwritten here to be able to recalculate the window coordinates. + * + * @see window_coords + */ + virtual void set_position(const Point<int>& position); + + /** + * Overwritten here to be able to recalculate the window coordinates. + * + * @see window_coords + */ + virtual void set_position(int left, int top); + + /** + * Overwritten here to be able to recalculate the window coordinates. + * + * @see window_coords + */ + virtual void set_size(const Dimension<int>& size); + + /** + * Overwritten here to be able to recalculate the window coordinates. + * + * @see window_coords + */ + virtual void set_size(int width, int height); }; }; |