summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorBjørn Lindeijer <bjorn@lindeijer.nl>2007-10-22 22:56:46 +0000
committerBjørn Lindeijer <bjorn@lindeijer.nl>2007-10-22 22:56:46 +0000
commitc9f618b5c50f759cf172d8e37063ef56e05812cf (patch)
treeec9730e9c09025873b09e0582349d0c2816d01f4 /src/gui
parentaa870fe2d34c1cc93a4cc2b6c9a09ed136176b0d (diff)
downloadmana-client-c9f618b5c50f759cf172d8e37063ef56e05812cf.tar.gz
mana-client-c9f618b5c50f759cf172d8e37063ef56e05812cf.tar.bz2
mana-client-c9f618b5c50f759cf172d8e37063ef56e05812cf.tar.xz
mana-client-c9f618b5c50f759cf172d8e37063ef56e05812cf.zip
Merged changesets 3631, 3645 and 3648 from trunk to 0.0 branch.
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/playerbox.cpp6
-rw-r--r--src/gui/window.cpp73
-rw-r--r--src/gui/window.h6
3 files changed, 46 insertions, 39 deletions
diff --git a/src/gui/playerbox.cpp b/src/gui/playerbox.cpp
index 95366bee..e3f5b540 100644
--- a/src/gui/playerbox.cpp
+++ b/src/gui/playerbox.cpp
@@ -80,7 +80,11 @@ PlayerBox::draw(gcn::Graphics *graphics)
if (mPlayer)
{
// Draw character
- mPlayer->draw(static_cast<Graphics*>(graphics), 40, 42);
+ int x, y, bs;
+ bs = getBorderSize();
+ x = getWidth() / 2 - 16 + bs;
+ y = getHeight() / 2 + bs;
+ mPlayer->draw(static_cast<Graphics*>(graphics), x, y);
}
}
diff --git a/src/gui/window.cpp b/src/gui/window.cpp
index 650016cb..8317684a 100644
--- a/src/gui/window.cpp
+++ b/src/gui/window.cpp
@@ -64,7 +64,6 @@ Window::Window(const std::string& caption, bool modal, Window *parent):
mWindowName("window"),
mShowTitle(true),
mModal(modal),
- mResizable(false),
mCloseButton(false),
mSticky(false),
mMinWinWidth(100),
@@ -134,7 +133,7 @@ Window::~Window()
config.setValue(name + "WinX", getX());
config.setValue(name + "WinY", getY());
- if (mResizable)
+ if (mGrip)
{
config.setValue(name + "WinWidth", getWidth());
config.setValue(name + "WinHeight", getHeight());
@@ -208,64 +207,64 @@ void Window::setContentHeight(int height)
void Window::setContentSize(int width, int height)
{
- setContentWidth(width);
- setContentHeight(height);
+ mChrome->setSize(width, height);
+ setSize(width + 2 * getPadding(),
+ height + getPadding() + getTitleBarHeight());
}
-void Window::setWidth(int width)
+void Window::setSize(int width, int height)
{
- gcn::Window::setWidth(width);
+ if (width == mDimension.width && height == mDimension.height) return;
+
+ // No call to ancestor! Infinite loop otherwise.
+ mDimension.width = width;
+ mDimension.height = height;
if (mGrip)
{
- mGrip->setX(getWidth() - mGrip->getWidth() - getChildrenArea().x);
+ gcn::Rectangle const &area = getChildrenArea();
+ mGrip->setPosition(width - mGrip->getWidth() - area.x,
+ height - mGrip->getHeight() - area.y);
}
fireWindowEvent(WindowEvent(this, WindowEvent::WINDOW_RESIZED));
}
-void Window::setHeight(int height)
+void Window::setWidth(int width)
{
- gcn::Window::setHeight(height);
-
- if (mGrip)
- {
- mGrip->setY(getHeight() - mGrip->getHeight() - getChildrenArea().y);
- }
+ setSize(width, mDimension.height);
+}
- fireWindowEvent(WindowEvent(this, WindowEvent::WINDOW_RESIZED));
+void Window::setHeight(int height)
+{
+ setSize(mDimension.width, height);
}
-void Window::setDimension(const gcn::Rectangle &dimension)
+void Window::setPosition(int x, int y)
{
- gcn::Window::setDimension(dimension);
+ if (x == mDimension.x && y == mDimension.y) return;
- if (mGrip)
- {
- mGrip->setX(getWidth() - mGrip->getWidth() - getChildrenArea().x);
- mGrip->setY(getHeight() - mGrip->getHeight() - getChildrenArea().y);
- }
+ // No call to ancestor!
+ mDimension.x = x;
+ mDimension.y = y;
- fireWindowEvent(WindowEvent(this, WindowEvent::WINDOW_RESIZED));
fireWindowEvent(WindowEvent(this, WindowEvent::WINDOW_MOVED));
}
-void Window::setPosition(int x, int y)
+void Window::setDimension(const gcn::Rectangle &dimension)
{
- gcn::Window::setPosition(x, y);
- fireWindowEvent(WindowEvent(this, WindowEvent::WINDOW_MOVED));
+ setPosition(dimension.x, dimension.y);
+ setSize(dimension.width, dimension.height);
}
void Window::setX(int x)
{
- gcn::Window::setX(x);
- fireWindowEvent(WindowEvent(this, WindowEvent::WINDOW_MOVED));
+ setPosition(x, mDimension.y);
}
void Window::setY(int y)
{
- gcn::Window::setY(y);
- fireWindowEvent(WindowEvent(this, WindowEvent::WINDOW_MOVED));
+ setPosition(mDimension.x, y);
}
void Window::setLocationRelativeTo(gcn::Widget *widget)
@@ -302,9 +301,9 @@ void Window::setMaxHeight(unsigned int height)
void Window::setResizable(bool r)
{
- mResizable = r;
+ if ((bool)mGrip == r) return;
- if (mResizable)
+ if (r)
{
mGrip = new ResizeGrip();
mGrip->setX(getWidth() - mGrip->getWidth() - getChildrenArea().x);
@@ -325,7 +324,7 @@ void Window::setCloseButton(bool flag)
bool Window::isResizable()
{
- return mResizable;
+ return mGrip;
}
void Window::setSticky(bool sticky)
@@ -397,7 +396,7 @@ void Window::mousePressed(gcn::MouseEvent &event)
void Window::mouseReleased(gcn::MouseEvent &event)
{
- if (mResizable && mouseResize)
+ if (mGrip && mouseResize)
{
mouseResize = 0;
gui->setCursorType(Gui::CURSOR_POINTER);
@@ -409,7 +408,7 @@ void Window::mouseReleased(gcn::MouseEvent &event)
void Window::mouseExited(gcn::MouseEvent &event)
{
- if (mResizable && !mouseResize)
+ if (mGrip && !mouseResize)
{
gui->setCursorType(Gui::CURSOR_POINTER);
}
@@ -530,7 +529,7 @@ Window::loadWindowState()
setPosition((int) config.getValue(name + "WinX", getX()),
(int) config.getValue(name + "WinY", getY()));
- if (mResizable)
+ if (mGrip)
{
setSize((int) config.getValue(name + "WinWidth", getWidth()),
(int) config.getValue(name + "WinHeight", getHeight()));
@@ -563,7 +562,7 @@ int Window::getResizeHandles(gcn::MouseEvent &event)
int resizeHandles = 0;
const int y = event.getY();
- if (mResizable && y > (int) mTitleBarHeight)
+ if (mGrip && y > (int) mTitleBarHeight)
{
const int x = event.getX();
diff --git a/src/gui/window.h b/src/gui/window.h
index 583601ab..8e3fdef9 100644
--- a/src/gui/window.h
+++ b/src/gui/window.h
@@ -102,6 +102,11 @@ class Window : public gcn::Window
void setContentSize(int width, int height);
/**
+ * Sets the size of this window.
+ */
+ void setSize(int width, int height);
+
+ /**
* Sets the width of this window.
*/
void setWidth(int width);
@@ -310,7 +315,6 @@ class Window : public gcn::Window
std::string mWindowName; /**< Name of the window */
bool mShowTitle; /**< Window has a title bar */
bool mModal; /**< Window is modal */
- bool mResizable; /**< Window can be resized */
bool mCloseButton; /**< Window has a close button */
bool mSticky; /**< Window resists minimization */
int mMinWinWidth; /**< Minimum window width */