diff options
author | Eugenio Favalli <elvenprogrammer@gmail.com> | 2006-08-24 09:33:33 +0000 |
---|---|---|
committer | Eugenio Favalli <elvenprogrammer@gmail.com> | 2006-08-24 09:33:33 +0000 |
commit | dd79b36895a17b3da131197be66827e6809615f0 (patch) | |
tree | be41cac640f44cf45ce2f58142cf32eff78dc5d8 /src/gui | |
parent | 9581f6556ac1646b4d30c676403aba544e4edaec (diff) | |
download | mana-dd79b36895a17b3da131197be66827e6809615f0.tar.gz mana-dd79b36895a17b3da131197be66827e6809615f0.tar.bz2 mana-dd79b36895a17b3da131197be66827e6809615f0.tar.xz mana-dd79b36895a17b3da131197be66827e6809615f0.zip |
Added support for sticky windows as discussed with doener. Patch by AHarrison
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/chat.cpp | 2 | ||||
-rw-r--r-- | src/gui/window.cpp | 21 | ||||
-rw-r--r-- | src/gui/window.h | 20 |
3 files changed, 42 insertions, 1 deletions
diff --git a/src/gui/chat.cpp b/src/gui/chat.cpp index 77c44332..f188b90e 100644 --- a/src/gui/chat.cpp +++ b/src/gui/chat.cpp @@ -400,7 +400,7 @@ ChatWindow::setInputText(std::string input_str) void ChatWindow::setVisible(bool isVisible) { - Widget::setVisible(isVisible); + Window::setVisible(isVisible); /* * For whatever reason, if setVisible is called, the mTmpVisible effect diff --git a/src/gui/window.cpp b/src/gui/window.cpp index 9edecfca..fe23c775 100644 --- a/src/gui/window.cpp +++ b/src/gui/window.cpp @@ -63,6 +63,7 @@ Window::Window(const std::string& caption, bool modal, Window *parent): mModal(modal), mResizable(false), mMouseResize(false), + mSticky(false), mMinWinWidth(100), mMinWinHeight(28), mMaxWinWidth(INT_MAX), @@ -243,6 +244,26 @@ bool Window::isResizable() return mResizable; } +void Window::setSticky(bool sticky) +{ + mSticky = sticky; +} + +bool Window::isSticky() { + return mSticky; +} + +void Window::setVisible(bool visible) { + if(isSticky()) + { + gcn::Window::setVisible(true); + } + else + { + gcn::Window::setVisible(visible); + } +} + void Window::scheduleDelete() { windowContainer->scheduleDelete(this); diff --git a/src/gui/window.h b/src/gui/window.h index 42ce444c..51c876e3 100644 --- a/src/gui/window.h +++ b/src/gui/window.h @@ -134,6 +134,25 @@ class Window : public gcn::Window void setMaxHeight(unsigned int height); /** + * Sets whether the window is sticky. + * A sticky window will not have its visibility set to false + * on a general setVisible(false) call. + */ + void setSticky(bool sticky); + + /** + * Returns whether the window is sticky. + */ + bool isSticky(); + + /** + * Overloads window setVisible by guichan to allow sticky window + * Handling + */ + + void setVisible(bool visible); + + /** * Returns the parent window. * * @return The parent window or <code>NULL</code> if there is none. @@ -204,6 +223,7 @@ class Window : public gcn::Window bool mModal; /**< Window is modal */ bool mResizable; /**< Window can be resized */ bool mMouseResize; /**< Window is being resized */ + bool mSticky; /**< Window resists minimzation */ int mMinWinWidth; /**< Minimum window width */ int mMinWinHeight; /**< Minimum window height */ int mMaxWinWidth; /**< Maximum window width */ |