From 9f43e32022ac261c6475fc68832cbe9ba9645362 Mon Sep 17 00:00:00 2001 From: Jared Adams <jaxad0127@gmail.com> Date: Mon, 20 Apr 2009 17:12:58 -0600 Subject: Fix up window visibility saving/restoring --- src/game.cpp | 29 ----------------------------- src/gui/buddywindow.cpp | 2 +- src/gui/chat.cpp | 2 ++ src/gui/debugwindow.cpp | 1 + src/gui/emotewindow.cpp | 1 + src/gui/equipmentwindow.cpp | 1 + src/gui/guildwindow.cpp | 1 + src/gui/inventorywindow.cpp | 1 + src/gui/magic.cpp | 1 + src/gui/menuwindow.cpp | 2 ++ src/gui/minimap.cpp | 2 ++ src/gui/ministatus.cpp | 2 ++ src/gui/partywindow.cpp | 2 +- src/gui/shortcutwindow.cpp | 4 +++- src/gui/shortcutwindow.h | 3 ++- src/gui/skilldialog.cpp | 1 + src/gui/status.cpp | 1 + src/gui/statuswindow.cpp | 1 + src/gui/widgets/popup.h | 1 + src/gui/widgets/window.cpp | 8 +++++--- src/gui/widgets/window.h | 22 ++++++++++++++++++++++ 21 files changed, 52 insertions(+), 36 deletions(-) diff --git a/src/game.cpp b/src/game.cpp index 6d724c9e..47d3b99c 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -247,35 +247,6 @@ static void createGuiWindows() localChatTab = new ChatTab(_("General")); - // Set initial window visibility - chatWindow->setVisible((bool) config.getValue( - chatWindow->getWindowName() + "Visible", true)); - miniStatusWindow->setVisible((bool) config.getValue( - miniStatusWindow->getPopupName() + "Visible", true)); - buyDialog->setVisible(false); - sellDialog->setVisible(false); - minimap->setVisible((bool) config.getValue( - minimap->getWindowName() + "Visible", true)); - tradeWindow->setVisible(false); - menuWindow->setVisible((bool) config.getValue( - menuWindow->getPopupName() + "Visible", true)); - itemShortcutWindow->setVisible((bool) config.getValue( - itemShortcutWindow->getWindowName() + "Visible", true)); - emoteShortcutWindow->setVisible((bool) config.getValue( - emoteShortcutWindow->getWindowName() + "Visible", true)); - minimap->setVisible((bool) config.getValue( - minimap->getWindowName() + "Visible", true)); -#ifdef EATHENA_SUPPORT - buySellDialog->setVisible(false); -#endif - npcTextDialog->setVisible(false); - npcIntegerDialog->setVisible(false); - npcListDialog->setVisible(false); - npcStringDialog->setVisible(false); -#ifdef EATHENA_SUPPORT - storageWindow->setVisible(false); -#endif - if (config.getValue("logToChat", 0)) { logger->setChatWindow(chatWindow); diff --git a/src/gui/buddywindow.cpp b/src/gui/buddywindow.cpp index 8af4dd6e..06273b99 100644 --- a/src/gui/buddywindow.cpp +++ b/src/gui/buddywindow.cpp @@ -34,11 +34,11 @@ extern ChatWindow *chatWindow; BuddyWindow::BuddyWindow(): Window(_("Buddy")) { - setVisible(false); setWindowName("BuddyWindow"); setCaption(_("Buddy List")); setResizable(true); setCloseButton(true); + setSaveVisible(true); setMinWidth(110); setMinHeight(200); setDefaultSize(124, 41, 288, 330); diff --git a/src/gui/chat.cpp b/src/gui/chat.cpp index 54b388db..9930fe06 100644 --- a/src/gui/chat.cpp +++ b/src/gui/chat.cpp @@ -76,6 +76,8 @@ ChatWindow::ChatWindow(): setWindowName("Chat"); setResizable(true); + setDefaultVisible(true); + setSaveVisible(true); setDefaultSize(600, 123, ImageRect::LOWER_LEFT); setMinWidth(150); setMinHeight(90); diff --git a/src/gui/debugwindow.cpp b/src/gui/debugwindow.cpp index db062059..f3dbe5e2 100644 --- a/src/gui/debugwindow.cpp +++ b/src/gui/debugwindow.cpp @@ -40,6 +40,7 @@ DebugWindow::DebugWindow(): setResizable(true); setCloseButton(true); + setSaveVisible(true); setDefaultSize(400, 100, ImageRect::CENTER); mFPSLabel = new Label("0 FPS"); diff --git a/src/gui/emotewindow.cpp b/src/gui/emotewindow.cpp index 1d7c0102..69282f8f 100644 --- a/src/gui/emotewindow.cpp +++ b/src/gui/emotewindow.cpp @@ -39,6 +39,7 @@ EmoteWindow::EmoteWindow(): setWindowName("Emote"); setResizable(true); setCloseButton(true); + setSaveVisible(true); setMinWidth(80); setMinHeight(130); setDefaultSize(322, 200, ImageRect::CENTER); diff --git a/src/gui/equipmentwindow.cpp b/src/gui/equipmentwindow.cpp index 2ba55792..42a00926 100644 --- a/src/gui/equipmentwindow.cpp +++ b/src/gui/equipmentwindow.cpp @@ -80,6 +80,7 @@ EquipmentWindow::EquipmentWindow(): setWindowName("Equipment"); setCloseButton(true); + setSaveVisible(true); setDefaultSize(180, 300, ImageRect::CENTER); loadWindowState(); diff --git a/src/gui/guildwindow.cpp b/src/gui/guildwindow.cpp index 020edf44..a6bcb690 100644 --- a/src/gui/guildwindow.cpp +++ b/src/gui/guildwindow.cpp @@ -54,6 +54,7 @@ GuildWindow::GuildWindow(): setCaption(_("Guild")); setResizable(false); setCloseButton(true); + setSaveVisible(true); setMinWidth(200); setMinHeight(280); setDefaultSize(124, 41, 288, 330); diff --git a/src/gui/inventorywindow.cpp b/src/gui/inventorywindow.cpp index 50b0bd78..ae62aa80 100644 --- a/src/gui/inventorywindow.cpp +++ b/src/gui/inventorywindow.cpp @@ -56,6 +56,7 @@ InventoryWindow::InventoryWindow(int invSize): setWindowName("Inventory"); setResizable(true); setCloseButton(true); + setSaveVisible(true); setDefaultSize(387, 307, ImageRect::CENTER); setMinWidth(316); diff --git a/src/gui/magic.cpp b/src/gui/magic.cpp index c0b0519f..0906566b 100644 --- a/src/gui/magic.cpp +++ b/src/gui/magic.cpp @@ -33,6 +33,7 @@ MagicDialog::MagicDialog(): { setWindowName("Magic"); setCloseButton(true); + setSaveVisible(true); setDefaultSize(255, 30, 175, 225); gcn::Button *spellButton1 = new Button(_("Cast Test Spell 1"), "spell_1", this); diff --git a/src/gui/menuwindow.cpp b/src/gui/menuwindow.cpp index 6ad57d61..c21dbc90 100644 --- a/src/gui/menuwindow.cpp +++ b/src/gui/menuwindow.cpp @@ -90,6 +90,8 @@ MenuWindow::MenuWindow(): setPosition(graphics->getWidth() - x - 3, 3); setContentSize(x - 3, h); + + setVisible((bool) config.getValue(getPopupName() + "Visible", true)); } void MenuWindow::draw(gcn::Graphics *graphics) diff --git a/src/gui/minimap.cpp b/src/gui/minimap.cpp index 3762043c..5781b3fe 100644 --- a/src/gui/minimap.cpp +++ b/src/gui/minimap.cpp @@ -44,6 +44,8 @@ Minimap::Minimap(): mShow = config.getValue(getWindowName() + "Show", true); setDefaultSize(5, 25, 100, 100); setResizable(true); + setDefaultVisible(true); + setSaveVisible(true); setStickyButton(true); setSticky(false); diff --git a/src/gui/ministatus.cpp b/src/gui/ministatus.cpp index 9f74ad6e..b49ca051 100644 --- a/src/gui/ministatus.cpp +++ b/src/gui/ministatus.cpp @@ -61,6 +61,8 @@ MiniStatusWindow::MiniStatusWindow(): setContentSize(mHpBar->getX() + mHpBar->getWidth(), mHpBar->getY() + mHpBar->getHeight()); #endif + + setVisible((bool) config.getValue(getPopupName() + "Visible", true)); } void MiniStatusWindow::setIcon(int index, AnimatedSprite *sprite) diff --git a/src/gui/partywindow.cpp b/src/gui/partywindow.cpp index d9ba5a63..07f66a2f 100644 --- a/src/gui/partywindow.cpp +++ b/src/gui/partywindow.cpp @@ -35,7 +35,7 @@ PartyWindow::PartyWindow() : Window(_("Party")) setWindowName("Party"); setVisible(false); setResizable(false); - setCaption(_("Party")); + setSaveVisible(true); setCloseButton(true); setMinWidth(110); setMinHeight(200); diff --git a/src/gui/shortcutwindow.cpp b/src/gui/shortcutwindow.cpp index 783661f6..18a6829d 100644 --- a/src/gui/shortcutwindow.cpp +++ b/src/gui/shortcutwindow.cpp @@ -33,13 +33,15 @@ static const int SCROLL_PADDING = 0; int ShortcutWindow::mInstances = 0; ShortcutWindow::ShortcutWindow(const std::string &title, - ShortcutContainer *content) + ShortcutContainer *content, bool defaultVisible) { setWindowName(title); // no title presented, title bar is padding so window can be moved. gcn::Window::setTitleBarHeight(gcn::Window::getPadding()); setShowTitle(false); setResizable(true); + setDefaultVisible(defaultVisible); + setSaveVisible(true); mItems = content; diff --git a/src/gui/shortcutwindow.h b/src/gui/shortcutwindow.h index c069811d..826243a5 100644 --- a/src/gui/shortcutwindow.h +++ b/src/gui/shortcutwindow.h @@ -38,7 +38,8 @@ class ShortcutWindow : public Window /** * Constructor. */ - ShortcutWindow(const std::string &title, ShortcutContainer *content); + ShortcutWindow(const std::string &title, ShortcutContainer *content, + bool defaultVisible = true); /** * Destructor. diff --git a/src/gui/skilldialog.cpp b/src/gui/skilldialog.cpp index c3ff1ded..48931bf7 100644 --- a/src/gui/skilldialog.cpp +++ b/src/gui/skilldialog.cpp @@ -100,6 +100,7 @@ SkillDialog::SkillDialog(): { setWindowName("Skills"); setCloseButton(true); + setSaveVisible(true); setDefaultSize(windowContainer->getWidth() - 280, 30, 275, 425); TabbedArea *panel = new TabbedArea; diff --git a/src/gui/status.cpp b/src/gui/status.cpp index df6bc017..e91e6bd5 100644 --- a/src/gui/status.cpp +++ b/src/gui/status.cpp @@ -46,6 +46,7 @@ StatusWindow::StatusWindow(LocalPlayer *player): { setWindowName("Status"); setCloseButton(true); + setSaveVisible(true); setDefaultSize(400, 345, ImageRect::CENTER); // ---------------------- diff --git a/src/gui/statuswindow.cpp b/src/gui/statuswindow.cpp index c25420e9..2399efb4 100644 --- a/src/gui/statuswindow.cpp +++ b/src/gui/statuswindow.cpp @@ -38,6 +38,7 @@ StatusWindow::StatusWindow(LocalPlayer *player): setWindowName("Status"); setResizable(true); setCloseButton(true); + setSaveVisible(true); setDefaultSize((windowContainer->getWidth() - 365) / 2, (windowContainer->getHeight() - 255) / 2, 365, 275); loadWindowState(); diff --git a/src/gui/widgets/popup.h b/src/gui/widgets/popup.h index 1e7f103e..895484b0 100644 --- a/src/gui/widgets/popup.h +++ b/src/gui/widgets/popup.h @@ -25,6 +25,7 @@ #include "gui/widgets/container.h" +#include "configuration.h" #include "guichanfwd.h" class Skin; diff --git a/src/gui/widgets/window.cpp b/src/gui/widgets/window.cpp index fbd328d0..7de09994 100644 --- a/src/gui/widgets/window.cpp +++ b/src/gui/widgets/window.cpp @@ -50,6 +50,8 @@ Window::Window(const std::string &caption, bool modal, Window *parent, mShowTitle(true), mModal(modal), mCloseButton(false), + mDefaultVisible(false), + mSaveVisible(false), mStickyButton(false), mSticky(false), mMinWinWidth(100), @@ -492,8 +494,8 @@ void Window::loadWindowState() setPosition((int) config.getValue(name + "WinX", mDefaultX), (int) config.getValue(name + "WinY", mDefaultY)); - if (mCloseButton) - setVisible((bool) config.getValue(name + "Visible", false)); + if (mSaveVisible) + setVisible((bool) config.getValue(name + "Visible", mDefaultVisible)); if (mStickyButton) setSticky((bool) config.getValue(name + "Sticky", isSticky())); @@ -534,7 +536,7 @@ void Window::saveWindowState() config.setValue(mWindowName + "WinX", getX()); config.setValue(mWindowName + "WinY", getY()); - if (mCloseButton) + if (mSaveVisible) config.setValue(mWindowName + "Visible", isVisible()); if (mStickyButton) diff --git a/src/gui/widgets/window.h b/src/gui/widgets/window.h index 510b0f04..aa9872d3 100644 --- a/src/gui/widgets/window.h +++ b/src/gui/widgets/window.h @@ -172,6 +172,26 @@ class Window : public gcn::Window, gcn::WidgetListener */ void setVisible(bool visible, bool forceSticky); + /** + * Returns whether the window will save it's visibility. + */ + bool isDefaultVisible() const { return mDefaultVisible; } + + /** + * Returns whether the window will save it's visibility. + */ + void setDefaultVisible(bool save) { mDefaultVisible = save; } + + /** + * Returns whether the window will save it's visibility. + */ + bool willSaveVisible() const { return mSaveVisible; } + + /** + * Returns whether the window will save it's visibility. + */ + void setSaveVisible(bool save) { mSaveVisible = save; } + /** * Returns the parent window. * @@ -335,6 +355,8 @@ class Window : public gcn::Window, gcn::WidgetListener bool mShowTitle; /**< Window has a title bar */ bool mModal; /**< Window is modal */ bool mCloseButton; /**< Window has a close button */ + bool mDefaultVisible; /**< Window's default visibility */ + bool mSaveVisible; /**< Window will save visibility */ bool mStickyButton; /**< Window has a sticky button */ bool mSticky; /**< Window resists hiding*/ int mMinWinWidth; /**< Minimum window width */ -- cgit v1.2.3-70-g09d2