summaryrefslogtreecommitdiff
path: root/src/gui/window.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/window.cpp')
-rw-r--r--src/gui/window.cpp64
1 files changed, 38 insertions, 26 deletions
diff --git a/src/gui/window.cpp b/src/gui/window.cpp
index 0e1ca828..507f9ffb 100644
--- a/src/gui/window.cpp
+++ b/src/gui/window.cpp
@@ -23,13 +23,13 @@
#include "gui.h"
#include <guichan/allegro.hpp>
-WindowContainer::WindowContainer(std::string text) :
+Window::Window(std::string text) :
caption(text),
mousePX(0),
mousePY(0),
snapSize(8),
mouseDown(false),
- titlebarHeight(48)
+ titlebarHeight(24)
{
titlebarColor.r = 32;
titlebarColor.g = 32;
@@ -50,9 +50,14 @@ WindowContainer::WindowContainer(std::string text) :
//register mouse listener
addMouseListener(this);
+
+ // Add chrome
+ chrome = new gcn::Container();
+ chrome->setOpaque(false);
+ gcn::Container::add(chrome);
}
-WindowContainer::~WindowContainer()
+Window::~Window()
{
//delete captionLabel;
@@ -60,17 +65,23 @@ WindowContainer::~WindowContainer()
release_bitmap(dLeft);
release_bitmap(dMid);
release_bitmap(dRight);
+
+ delete chrome;
}
-void WindowContainer::draw(gcn::Graphics* graphics)
+void Window::draw(gcn::Graphics* graphics)
{
+ int x, y;
+ getAbsolutePosition(x, y);
+
//draw container background
//Container::draw(graphics);
if (mOpaque)
{
graphics->setColor(getBaseColor());
- graphics->fillRectangle(gcn::Rectangle(0, 24,
- getDimension().width, getDimension().height));
+ graphics->fillRectangle(gcn::Rectangle(0, titlebarHeight,
+ getDimension().width,
+ getDimension().height - titlebarHeight));
}
@@ -103,33 +114,34 @@ void WindowContainer::draw(gcn::Graphics* graphics)
getDimension().width, titlebarHeight));
}
-
drawChildren(graphics);
}
-//set dimension
-void WindowContainer::setDimension(const gcn::Rectangle &dimension)
+void Window::setDimension(const gcn::Rectangle &dimension)
{
- gcn::Widget::setDimension(gcn::Rectangle(dimension.x, dimension.y,
- dimension.width, dimension.height + titlebarHeight));
+ gcn::Container::setDimension(gcn::Rectangle(
+ dimension.x,
+ dimension.y - titlebarHeight,
+ dimension.width,
+ dimension.height + titlebarHeight));
+ chrome->setDimension(gcn::Rectangle(0, titlebarHeight,
+ dimension.width, dimension.height));
}
-//adding new widget
-void WindowContainer::add(gcn::Widget *w)
+void Window::add(gcn::Widget *w)
{
- w->setPosition(w->getDimension().x, w->getDimension().y + titlebarHeight);
- gcn::Container::add(w);
+ chrome->add(w);
}
-void WindowContainer::add(Widget *w, int x, int y)
+
+void Window::add(Widget *w, int x, int y)
{
- w->setPosition(x, y + titlebarHeight);
- gcn::Container::add(w);
+ chrome->add(w, x, y);
}
-void WindowContainer::mousePress(int mx, int my, int button)
+void Window::mousePress(int mx, int my, int button)
{
- x = this->getDimension().x;
- y = this->getDimension().y;
+ int x = this->getDimension().x;
+ int y = this->getDimension().y;
mouseDown = true;
@@ -137,20 +149,20 @@ void WindowContainer::mousePress(int mx, int my, int button)
mousePY = my;
}
-void WindowContainer::mouseRelease(int mx, int my, int button)
+void Window::mouseRelease(int mx, int my, int button)
{
mouseDown = false;
}
//window move
-void WindowContainer::mouseMotion(int mx, int my)
+void Window::mouseMotion(int mx, int my)
{
if (mouseDown)
{
int winWidth = this->getDimension().width;
int winHeight = this->getDimension().height;
- x = this->getDimension().x;
- y = this->getDimension().y;
+ int x = this->getDimension().x;
+ int y = this->getDimension().y;
x = x - (mousePX - mx);
y = y - (mousePY - my);
@@ -179,7 +191,7 @@ void WindowContainer::mouseMotion(int mx, int my)
}
}
-void WindowContainer::mouseOut()
+void Window::mouseOut()
{
mouseDown = false;
}