summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorEugenio Favalli <elvenprogrammer@gmail.com>2006-08-24 09:33:33 +0000
committerEugenio Favalli <elvenprogrammer@gmail.com>2006-08-24 09:33:33 +0000
commitdd79b36895a17b3da131197be66827e6809615f0 (patch)
treebe41cac640f44cf45ce2f58142cf32eff78dc5d8 /src/gui
parent9581f6556ac1646b4d30c676403aba544e4edaec (diff)
downloadmana-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.cpp2
-rw-r--r--src/gui/window.cpp21
-rw-r--r--src/gui/window.h20
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 */