diff options
author | Eugenio Favalli <elvenprogrammer@gmail.com> | 2005-08-16 10:11:33 +0000 |
---|---|---|
committer | Eugenio Favalli <elvenprogrammer@gmail.com> | 2005-08-16 10:11:33 +0000 |
commit | f6fabeacc35b67ca0a44bf50cf6ca7d2378c289d (patch) | |
tree | 636fa896306452cd0ccbe9febdb855d29ddaf74f /src | |
parent | 9e6c0ca8f20f5ba4cbfafe19938d0bb34d6ee031 (diff) | |
download | mana-f6fabeacc35b67ca0a44bf50cf6ca7d2378c289d.tar.gz mana-f6fabeacc35b67ca0a44bf50cf6ca7d2378c289d.tar.bz2 mana-f6fabeacc35b67ca0a44bf50cf6ca7d2378c289d.tar.xz mana-f6fabeacc35b67ca0a44bf50cf6ca7d2378c289d.zip |
Added a resize grip to resizable window, fixed some compiling errors.
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/status.cpp | 2 | ||||
-rw-r--r-- | src/gui/window.cpp | 33 | ||||
-rw-r--r-- | src/gui/window.h | 9 | ||||
-rw-r--r-- | src/gui/windowcontainer.h | 2 |
4 files changed, 37 insertions, 9 deletions
diff --git a/src/gui/status.cpp b/src/gui/status.cpp index 3c12fd42..eb20dcd5 100644 --- a/src/gui/status.cpp +++ b/src/gui/status.cpp @@ -131,6 +131,8 @@ StatusWindow::StatusWindow(): add(inventoryButton); add(setupButton); add(equipmentButton); + + setResizable(true); } StatusWindow::~StatusWindow() diff --git a/src/gui/window.cpp b/src/gui/window.cpp index 07b85ea5..67bd224f 100644 --- a/src/gui/window.cpp +++ b/src/gui/window.cpp @@ -21,10 +21,9 @@ * $Id$ */ -#include "window.h" - #include <guichan/exception.hpp> +#include "window.h" #include "windowcontainer.h" #include "../configuration.h" @@ -39,6 +38,7 @@ WindowContainer *Window::windowContainer = NULL; int Window::instances = 0; ImageRect Window::border; +Image *Window::resizeGrip; Window::Window(const std::string& caption, bool modal, Window *parent): gcn::Window(caption), @@ -69,6 +69,7 @@ Window::Window(const std::string& caption, bool modal, Window *parent): border.grid[6] = dBorders->getSubImage(0, 15, 4, 4); border.grid[7] = dBorders->getSubImage(4, 15, 3, 4); border.grid[8] = dBorders->getSubImage(7, 15, 4, 4); + resizeGrip = resman->getImage("graphics/gui/resize.png"); dBorders->decRef(); } @@ -138,6 +139,17 @@ void Window::draw(gcn::Graphics* graphics) dynamic_cast<Graphics*>(graphics)->drawImageRect(x, y, getWidth(), getHeight(), border); + // Draw grip + if (resizable) + { + dynamic_cast<Graphics*>(graphics)->drawImage(Window::resizeGrip, + x + getWidth() - 18, + y + getHeight() - 15); + } + + + + // Draw title if (title) { graphics->setFont(getFont()); @@ -236,7 +248,7 @@ void Window::mousePress(int x, int y, int button) // If the mouse is not inside the content, the press must have been on the // border, and is a candidate for a resize. if (getResizable() && button == 1 && - !getContentDimension().isPointInRect(x, y) && + getGripDimension().isPointInRect(x, y) && !(mMouseDrag && y > (int)getPadding())) { mMouseResize = true; @@ -244,10 +256,10 @@ void Window::mousePress(int x, int y, int button) mMouseYOffset = y; // Determine which borders are being dragged - mLeftBorderDrag = (x < 10); - mTopBorderDrag = (y < 10); - mRightBorderDrag = (x >= getWidth() - 10); - mBottomBorderDrag = (y >= getHeight() - 10); + mLeftBorderDrag = false;//(x < 10); + mTopBorderDrag = false;//(y < 10);*/ + mRightBorderDrag = true;//(x >= getWidth() - 10); + mBottomBorderDrag = true;//(y >= getHeight() - 10); } } @@ -410,3 +422,10 @@ void Window::optionChanged(const std::string &name) } } } + +gcn::Rectangle Window::getGripDimension () { + int x, y; + getAbsolutePosition(x, y); + return gcn::Rectangle(getWidth() - 18, getHeight() - 15, getWidth(), + getHeight()); +} diff --git a/src/gui/window.h b/src/gui/window.h index 731b7e9d..e9567762 100644 --- a/src/gui/window.h +++ b/src/gui/window.h @@ -25,10 +25,13 @@ #define _TMW_WINDOW_H__ #include <guichan/widgets/window.hpp> +#include <guichan/rectangle.hpp> #include "../configlistener.h" #include "../guichanfwd.h" +#include "../resources/image.h" + class ImageRect; class WindowContainer; @@ -154,6 +157,11 @@ class Window : public gcn::Window, public ConfigListener * Called when an config option changes. */ void optionChanged(const std::string &name); + + /** + * The position of the resize grip + */ + gcn::Rectangle getGripDimension(); protected: gcn::Container *chrome; /**< Contained container */ @@ -179,6 +187,7 @@ class Window : public gcn::Window, public ConfigListener static int instances; /**< Number of Window instances */ static ImageRect border; /**< The window border and background */ + static Image *resizeGrip; /**< The grip to resize window */ }; #endif diff --git a/src/gui/windowcontainer.h b/src/gui/windowcontainer.h index f41a4a33..533e42e4 100644 --- a/src/gui/windowcontainer.h +++ b/src/gui/windowcontainer.h @@ -26,8 +26,6 @@ #include <guichan/widgets/container.hpp> -class Window; - /** * A window container. This container makes draggable windows possible. * |