diff options
Diffstat (limited to '')
-rw-r--r-- | src/menu/container.cpp | 9 | ||||
-rw-r--r-- | src/menu/container.hpp | 4 | ||||
-rw-r--r-- | src/menu/drawable_control.cpp | 5 |
3 files changed, 15 insertions, 3 deletions
diff --git a/src/menu/container.cpp b/src/menu/container.cpp index 795d57ab..ce73c1c2 100644 --- a/src/menu/container.cpp +++ b/src/menu/container.cpp @@ -33,13 +33,13 @@ namespace usdx log4cpp::Category::getInstance("usdx.menu.container"); Container::Container(Container* owner) - : DrawableControl(owner), frame(NULL) + : DrawableControl(owner), frame(NULL), window_coords(0, 0) { set_clipping_required(true); } Container::Container(Container* owner, const ContainerHelper& add) - : DrawableControl(owner, add), frame(NULL) + : DrawableControl(owner, add), frame(NULL), window_coords(0, 0) { set_clipping_required(true); } @@ -86,4 +86,9 @@ namespace usdx { frame = NULL; } + + const Point<int>& Container::get_window_coords(void) const + { + return window_coords; + } }; diff --git a/src/menu/container.hpp b/src/menu/container.hpp index 9b30b117..147a0d92 100644 --- a/src/menu/container.hpp +++ b/src/menu/container.hpp @@ -31,6 +31,7 @@ #include <log4cpp/Category.hh> #include "drawable_control.hpp" +#include "utils/point.hpp" namespace usdx { @@ -48,6 +49,7 @@ namespace usdx Container(Container*, const ContainerHelper&); virtual void draw(void); + Point<int> window_coords; public: Container(Container*); @@ -58,6 +60,8 @@ namespace usdx virtual void setFrame(Frame*); virtual void removeFrame(void); + + const Point<int>& get_window_coords(void) const; }; }; diff --git a/src/menu/drawable_control.cpp b/src/menu/drawable_control.cpp index 00b6fa78..10da2bfc 100644 --- a/src/menu/drawable_control.cpp +++ b/src/menu/drawable_control.cpp @@ -81,8 +81,11 @@ namespace usdx clipping_lock.unlock(); boost::mutex::scoped_lock lock(size_mutex); - ClippingHelper clipping(Rectangle<int>(position, size)); + Point<int> offset(0, 0); + if (parent) + offset = parent->get_window_coords(); + ClippingHelper clipping(Rectangle<int>(offset + position, size)); Drawable::repaint(); } else { |