summaryrefslogtreecommitdiff
path: root/src
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
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')
-rw-r--r--src/game.cpp29
-rw-r--r--src/gui/chat.cpp2
-rw-r--r--src/gui/window.cpp21
-rw-r--r--src/gui/window.h20
4 files changed, 70 insertions, 2 deletions
diff --git a/src/game.cpp b/src/game.cpp
index 819e863e..ed8ad827 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -202,6 +202,10 @@ void createGuiWindows(Network *network)
minimap->getHeight() + 30);*/
// Set initial window visibility
+ chatWindow->setSticky(true);
+ miniStatusWindow->setSticky(true);
+ menuWindow->setSticky(true);
+
chatWindow->setVisible(true);
miniStatusWindow->setVisible(true);
statusWindow->setVisible(false);
@@ -461,7 +465,30 @@ void Game::handleInput()
}
break;
- // Picking up items on the floor
+ // Attempt to hide all windows
+ case SDLK_h:
+ chatWindow->setVisible(false);
+ miniStatusWindow->setVisible(false);
+ statusWindow->setVisible(false);
+ menuWindow->setVisible(false);
+ buyDialog->setVisible(false);
+ sellDialog->setVisible(false);
+ buySellDialog->setVisible(false);
+ inventoryWindow->setVisible(false);
+ npcTextDialog->setVisible(false);
+ npcListDialog->setVisible(false);
+ skillDialog->setVisible(false);
+ //newSkillWindow->setVisible(false);
+ setupWindow->setVisible(false);
+ equipmentWindow->setVisible(false);
+ chargeDialog->setVisible(false);
+ tradeWindow->setVisible(false);
+ //buddyWindow->setVisible(false);
+ helpWindow->setVisible(false);
+ debugWindow->setVisible(false);
+ break;
+
+ // Picking up items on the floor
case SDLK_g:
case SDLK_z:
if (!chatWindow->isFocused())
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 */