aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2012-04-09 18:37:33 +0200
committerAlexander Sulfrian <alexander@sulfrian.net>2013-01-13 22:40:52 +0100
commit4fd33b18760b97aad2c542efd3ff7d16f2e9f373 (patch)
tree1cde426c288e6a6a944cc61cbbd248f6328d8d40
parent09eacc82176c37fdc12c903061ffa3ff960ac4cf (diff)
downloadusdx-4fd33b18760b97aad2c542efd3ff7d16f2e9f373.tar.gz
usdx-4fd33b18760b97aad2c542efd3ff7d16f2e9f373.tar.xz
usdx-4fd33b18760b97aad2c542efd3ff7d16f2e9f373.zip
menu/contianer: element position should be relative to the container position
container should provide each of the containing elements' draw functions with its own position as base (store before drawing the first element and restore it after each drawing)
-rw-r--r--src/menu/container.cpp6
-rw-r--r--src/menu/drawable_control.cpp2
2 files changed, 6 insertions, 2 deletions
diff --git a/src/menu/container.cpp b/src/menu/container.cpp
index 3cf8d770..bf742dff 100644
--- a/src/menu/container.cpp
+++ b/src/menu/container.cpp
@@ -24,6 +24,8 @@
* $Id$
*/
+#include <GL/gl.h>
+
#include "container.hpp"
#include "frame.hpp"
@@ -60,9 +62,13 @@ namespace usdx
frame->repaint();
}
+ GLfloat matrix[16];
+ glGetFloatv(GL_MODELVIEW_MATRIX, matrix);
+
for (std::list<DrawableControl*>::iterator it =
controls.begin(); it != controls.end(); it++) {
(*it)->repaint();
+ glLoadMatrixf(matrix);
}
}
diff --git a/src/menu/drawable_control.cpp b/src/menu/drawable_control.cpp
index 10da2bfc..4d1f8355 100644
--- a/src/menu/drawable_control.cpp
+++ b/src/menu/drawable_control.cpp
@@ -68,8 +68,6 @@ namespace usdx
void DrawableControl::repaint(void)
{
- glLoadIdentity();
-
{
// position
boost::mutex::scoped_lock lock(position_mutex);