From 4aeceabb5d4f00e2555234951a2f5db24b008265 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 9 Apr 2013 18:17:50 +0300 Subject: Improve perfomance in windows and popups visibility checks. --- src/gui/chatwindow.cpp | 4 ++-- src/gui/debugwindow.cpp | 2 +- src/gui/didyouknowwindow.cpp | 2 +- src/gui/helpwindow.cpp | 4 ++-- src/gui/inventorywindow.cpp | 18 +++++++++--------- src/gui/minimap.cpp | 4 ++-- src/gui/ministatuswindow.cpp | 2 +- src/gui/popupmenu.cpp | 4 ++-- src/gui/tradewindow.cpp | 2 +- src/gui/viewport.cpp | 8 ++++---- src/gui/whoisonline.cpp | 2 +- src/gui/widgets/dropshortcutcontainer.cpp | 3 ++- src/gui/widgets/itemlinkhandler.cpp | 2 +- src/gui/widgets/itemshortcutcontainer.cpp | 4 ++-- src/gui/widgets/popup.h | 3 +++ src/gui/widgets/window.cpp | 4 ++-- src/gui/widgets/window.h | 3 +++ 17 files changed, 39 insertions(+), 32 deletions(-) (limited to 'src/gui') diff --git a/src/gui/chatwindow.cpp b/src/gui/chatwindow.cpp index 88c9936fe..c375b6748 100644 --- a/src/gui/chatwindow.cpp +++ b/src/gui/chatwindow.cpp @@ -575,7 +575,7 @@ void ChatWindow::action(const gcn::ActionEvent &event) bool ChatWindow::requestChatFocus() { // Make sure chatWindow is visible - if (!isVisible()) + if (!isWindowVisible()) { setVisible(true); @@ -721,7 +721,7 @@ void ChatWindow::doPresent() const void ChatWindow::scroll(const int amount) const { - if (!isVisible()) + if (!isWindowVisible()) return; ChatTab *const tab = getFocused(); diff --git a/src/gui/debugwindow.cpp b/src/gui/debugwindow.cpp index 781068c6c..726167a49 100644 --- a/src/gui/debugwindow.cpp +++ b/src/gui/debugwindow.cpp @@ -91,7 +91,7 @@ DebugWindow::~DebugWindow() void DebugWindow::slowLogic() { BLOCK_START("DebugWindow::slowLogic") - if (!isVisible() || !mTabs) + if (!isWindowVisible() || !mTabs) { BLOCK_END("DebugWindow::slowLogic") return; diff --git a/src/gui/didyouknowwindow.cpp b/src/gui/didyouknowwindow.cpp index 9928cb8fb..58a07dff4 100644 --- a/src/gui/didyouknowwindow.cpp +++ b/src/gui/didyouknowwindow.cpp @@ -165,6 +165,6 @@ void DidYouKnowWindow::setVisible(bool visible) { Window::setVisible(visible); - if (visible || isVisible()) + if (visible || isWindowVisible()) loadData(); } diff --git a/src/gui/helpwindow.cpp b/src/gui/helpwindow.cpp index eeda8c907..3c091ce65 100644 --- a/src/gui/helpwindow.cpp +++ b/src/gui/helpwindow.cpp @@ -88,8 +88,8 @@ void HelpWindow::action(const gcn::ActionEvent &event) { if (didYouKnowWindow) { - didYouKnowWindow->setVisible(!didYouKnowWindow->isVisible()); - if (didYouKnowWindow->isVisible()) + didYouKnowWindow->setVisible(!didYouKnowWindow->isWindowVisible()); + if (didYouKnowWindow->isWindowVisible()) didYouKnowWindow->requestMoveToTop(); } } diff --git a/src/gui/inventorywindow.cpp b/src/gui/inventorywindow.cpp index 22fea71c7..dfbe8b8b8 100644 --- a/src/gui/inventorywindow.cpp +++ b/src/gui/inventorywindow.cpp @@ -262,8 +262,8 @@ void InventoryWindow::action(const gcn::ActionEvent &event) { if (outfitWindow) { - outfitWindow->setVisible(!outfitWindow->isVisible()); - if (outfitWindow->isVisible()) + outfitWindow->setVisible(!outfitWindow->isWindowVisible()); + if (outfitWindow->isWindowVisible()) outfitWindow->requestMoveToTop(); } } @@ -271,8 +271,8 @@ void InventoryWindow::action(const gcn::ActionEvent &event) { if (shopWindow) { - shopWindow->setVisible(!shopWindow->isVisible()); - if (shopWindow->isVisible()) + shopWindow->setVisible(!shopWindow->isWindowVisible()); + if (shopWindow->isWindowVisible()) shopWindow->requestMoveToTop(); } } @@ -280,8 +280,8 @@ void InventoryWindow::action(const gcn::ActionEvent &event) { if (equipmentWindow) { - equipmentWindow->setVisible(!equipmentWindow->isVisible()); - if (equipmentWindow->isVisible()) + equipmentWindow->setVisible(!equipmentWindow->isWindowVisible()); + if (equipmentWindow->isWindowVisible()) equipmentWindow->requestMoveToTop(); } } @@ -291,7 +291,7 @@ void InventoryWindow::action(const gcn::ActionEvent &event) } else if (eventId == "store") { - if (!inventoryWindow || !inventoryWindow->isVisible()) + if (!inventoryWindow || !inventoryWindow->isWindowVisible()) return; Item *const item = inventoryWindow->getSelectedItem(); @@ -413,7 +413,7 @@ void InventoryWindow::mouseClicked(gcn::MouseEvent &event) const bool mod = (isStorageActive() && inputManager.isActionActive( static_cast(Input::KEY_MOD))); - const bool mod2 = (tradeWindow && tradeWindow->isVisible() + const bool mod2 = (tradeWindow && tradeWindow->isWindowVisible() && inputManager.isActionActive(static_cast(Input::KEY_MOD))); if (!mod && !mod2 && event.getButton() == gcn::MouseEvent::RIGHT) @@ -497,7 +497,7 @@ void InventoryWindow::mouseClicked(gcn::MouseEvent &event) ItemAmountWindow::showWindow(ItemAmountWindow::StoreAdd, inventoryWindow, item); } - else if (tradeWindow && tradeWindow->isVisible()) + else if (tradeWindow && tradeWindow->isWindowVisible()) { ItemAmountWindow::showWindow(ItemAmountWindow::TradeAdd, tradeWindow, item); diff --git a/src/gui/minimap.cpp b/src/gui/minimap.cpp index 8394af227..d9ec8c52b 100644 --- a/src/gui/minimap.cpp +++ b/src/gui/minimap.cpp @@ -223,8 +223,8 @@ void Minimap::setMap(const Map *const map) void Minimap::toggle() { - setVisible(!isVisible(), isSticky()); - mShow = isVisible(); + setVisible(!isWindowVisible(), isSticky()); + mShow = isWindowVisible(); } void Minimap::draw(gcn::Graphics *graphics) diff --git a/src/gui/ministatuswindow.cpp b/src/gui/ministatuswindow.cpp index f1421af3e..f9c1a28ea 100644 --- a/src/gui/ministatuswindow.cpp +++ b/src/gui/ministatuswindow.cpp @@ -252,7 +252,7 @@ void MiniStatusWindow::processEvent(Channels channel A_UNUSED, void MiniStatusWindow::updateStatus() { StatusWindow::updateStatusBar(mStatusBar); - if (mStatusPopup && mStatusPopup->isVisible()) + if (mStatusPopup && mStatusPopup->isPopupVisible()) mStatusPopup->update(); } diff --git a/src/gui/popupmenu.cpp b/src/gui/popupmenu.cpp index 264cda9d5..b6e4598ac 100644 --- a/src/gui/popupmenu.cpp +++ b/src/gui/popupmenu.cpp @@ -1521,7 +1521,7 @@ void PopupMenu::handleLink(const std::string &link, { if (being == player_node) { - if (equipmentWindow && !equipmentWindow->isVisible()) + if (equipmentWindow && !equipmentWindow->isWindowVisible()) equipmentWindow->setVisible(true); } else @@ -1679,7 +1679,7 @@ void PopupMenu::showPopup(Window *const parent, const int x, const int y, if (isInventory) { - if (tradeWindow && tradeWindow->isVisible()) + if (tradeWindow && tradeWindow->isWindowVisible()) { mBrowserBox->addRow("addtrade", _("Add to trade")); if (cnt > 1) diff --git a/src/gui/tradewindow.cpp b/src/gui/tradewindow.cpp index c5dcfd21f..48dbf1d27 100644 --- a/src/gui/tradewindow.cpp +++ b/src/gui/tradewindow.cpp @@ -325,7 +325,7 @@ void TradeWindow::action(const gcn::ActionEvent &event) if (mStatus != PREPARING) return; - if (!inventoryWindow->isVisible()) + if (!inventoryWindow->isWindowVisible()) { inventoryWindow->setVisible(true); return; diff --git a/src/gui/viewport.cpp b/src/gui/viewport.cpp index e7e0a2766..c8b0a0c8b 100644 --- a/src/gui/viewport.cpp +++ b/src/gui/viewport.cpp @@ -468,7 +468,7 @@ void Viewport::mousePressed(gcn::MouseEvent &event) } // If a popup is active, just remove it - if (mPopupMenu->isVisible()) + if (mPopupMenu->isPopupVisible()) { mPlayerFollowMouse = false; mPopupMenu->setVisible(false); @@ -895,7 +895,7 @@ void Viewport::mouseMoved(gcn::MouseEvent &event A_UNUSED) } else { - if (mTextPopup->isVisible()) + if (mTextPopup->isPopupVisible()) mTextPopup->setVisible(false); } gui->setCursorType(Cursor::CURSOR_UP); @@ -903,7 +903,7 @@ void Viewport::mouseMoved(gcn::MouseEvent &event A_UNUSED) } } } - if (mTextPopup->isVisible()) + if (mTextPopup->isPopupVisible()) mTextPopup->setVisible(false); if (mHoverBeing) @@ -998,7 +998,7 @@ void Viewport::moveCamera(const int dx, const int dy) bool Viewport::isPopupMenuVisible() const { - return mPopupMenu ? mPopupMenu->isVisible() : false; + return mPopupMenu ? mPopupMenu->isPopupVisible() : false; } void Viewport::moveCameraToActor(const int actorId, const int x, const int y) diff --git a/src/gui/whoisonline.cpp b/src/gui/whoisonline.cpp index 6a5ae8f70..b280ae4f8 100644 --- a/src/gui/whoisonline.cpp +++ b/src/gui/whoisonline.cpp @@ -607,7 +607,7 @@ void WhoIsOnline::slowLogic() mUpdateTimer = cur_time; double timeDiff = difftime(cur_time, mUpdateTimer); - int timeLimit = isVisible() ? 20 : 120; + int timeLimit = isWindowVisible() ? 20 : 120; if (mUpdateOnlineList && timeDiff >= timeLimit && mDownloadStatus != UPDATE_LIST) diff --git a/src/gui/widgets/dropshortcutcontainer.cpp b/src/gui/widgets/dropshortcutcontainer.cpp index 9fb20b041..bc6b3d878 100644 --- a/src/gui/widgets/dropshortcutcontainer.cpp +++ b/src/gui/widgets/dropshortcutcontainer.cpp @@ -222,7 +222,8 @@ void DropShortcutContainer::mousePressed(gcn::MouseEvent &event) if (event.getButton() == gcn::MouseEvent::LEFT) { // Stores the selected item if theirs one. - if (dropShortcut->isItemSelected() && inventoryWindow->isVisible()) + if (dropShortcut->isItemSelected() + && inventoryWindow->isWindowVisible()) { dropShortcut->setItem(index); dropShortcut->setItemSelected(-1); diff --git a/src/gui/widgets/itemlinkhandler.cpp b/src/gui/widgets/itemlinkhandler.cpp index e708eb507..e2999c8ad 100644 --- a/src/gui/widgets/itemlinkhandler.cpp +++ b/src/gui/widgets/itemlinkhandler.cpp @@ -117,7 +117,7 @@ void ItemLinkHandler::handleLink(const std::string &link, //+++ need add color to links? mItemPopup->setItem(itemInfo, 1, true); - if (mItemPopup->isVisible()) + if (mItemPopup->isPopupVisible()) { mItemPopup->setVisible(false); } diff --git a/src/gui/widgets/itemshortcutcontainer.cpp b/src/gui/widgets/itemshortcutcontainer.cpp index 12bc52f74..560374271 100644 --- a/src/gui/widgets/itemshortcutcontainer.cpp +++ b/src/gui/widgets/itemshortcutcontainer.cpp @@ -306,8 +306,8 @@ void ItemShortcutContainer::mousePressed(gcn::MouseEvent &event) { // Stores the selected item if theirs one. if (selShortcut->isItemSelected() && inventoryWindow && - (inventoryWindow->isVisible() || selShortcut->getSelectedItem() - >= SPELL_MIN_ID)) + (inventoryWindow->isWindowVisible() + || selShortcut->getSelectedItem() >= SPELL_MIN_ID)) { selShortcut->setItem(index); selShortcut->setItemSelected(-1); diff --git a/src/gui/widgets/popup.h b/src/gui/widgets/popup.h index 23bce3d5f..57772f642 100644 --- a/src/gui/widgets/popup.h +++ b/src/gui/widgets/popup.h @@ -168,6 +168,9 @@ class Popup : public Container, public gcn::MouseListener, void widgetMoved(const gcn::Event &event) override; + bool isPopupVisible() const + { return mVisible; } + protected: int mPadding; /**< Holds the padding of the popup. */ Skin *mSkin; /**< Skin in use by this popup */ diff --git a/src/gui/widgets/window.cpp b/src/gui/widgets/window.cpp index 63c5b6629..7d80464d9 100644 --- a/src/gui/widgets/window.cpp +++ b/src/gui/widgets/window.cpp @@ -558,7 +558,7 @@ void Window::setVisible(bool visible) void Window::setVisible(bool visible, bool forceSticky) { - if (visible == isVisible()) + if (visible == isWindowVisible()) return; // Nothing to do // Check if the window is off screen... @@ -886,7 +886,7 @@ void Window::saveWindowState() config.setValue(mWindowName + "WinY", mDimension.y); if (mSaveVisible) - config.setValue(mWindowName + "Visible", isVisible()); + config.setValue(mWindowName + "Visible", isWindowVisible()); if (mStickyButton) config.setValue(mWindowName + "Sticky", isSticky()); diff --git a/src/gui/widgets/window.h b/src/gui/widgets/window.h index 02f58d2a8..bf9bd935f 100644 --- a/src/gui/widgets/window.h +++ b/src/gui/widgets/window.h @@ -414,6 +414,9 @@ class Window : public gcn::Window, void enableVisibleSound(bool b) { mPlayVisibleSound = b; } + bool isWindowVisible() const A_WARN_UNUSED + { return mVisible; } + protected: bool canMove() const A_WARN_UNUSED; -- cgit v1.2.3-60-g2f50