From 15ceee4b1a35842c80bb683fe7e714604dac3996 Mon Sep 17 00:00:00 2001 From: Kindi Date: Thu, 3 Apr 2025 11:26:56 +0800 Subject: [PATCH] also update companion window and tradewindow --- apps/openmw/mwgui/companionwindow.cpp | 7 +++++++ apps/openmw/mwgui/companionwindow.hpp | 9 ++++++++- apps/openmw/mwgui/container.cpp | 11 ++++++----- apps/openmw/mwgui/tradewindow.cpp | 8 ++++++++ apps/openmw/mwgui/tradewindow.hpp | 9 ++++++++- 5 files changed, 37 insertions(+), 7 deletions(-) diff --git a/apps/openmw/mwgui/companionwindow.cpp b/apps/openmw/mwgui/companionwindow.cpp index 240198eddc..731403f3a3 100644 --- a/apps/openmw/mwgui/companionwindow.cpp +++ b/apps/openmw/mwgui/companionwindow.cpp @@ -134,6 +134,8 @@ namespace MWGui mItemView->resetScrollBars(); setTitle(actor.getClass().getName(actor)); + + mPtr.getClass().getContainerStore(mPtr).setContListener(this); } void CompanionWindow::onFrame(float dt) @@ -202,4 +204,9 @@ namespace MWGui mSortModel = nullptr; } + void CompanionWindow::updateItemView() + { + mItemView->update(); + } + } diff --git a/apps/openmw/mwgui/companionwindow.hpp b/apps/openmw/mwgui/companionwindow.hpp index 97f3a0072e..6f8452997f 100644 --- a/apps/openmw/mwgui/companionwindow.hpp +++ b/apps/openmw/mwgui/companionwindow.hpp @@ -4,6 +4,8 @@ #include "referenceinterface.hpp" #include "windowbase.hpp" +#include "../mwworld/containerstore.hpp" + namespace MWGui { namespace Widgets @@ -17,7 +19,7 @@ namespace MWGui class SortFilterItemModel; class CompanionItemModel; - class CompanionWindow : public WindowBase, public ReferenceInterface + class CompanionWindow : public WindowBase, public ReferenceInterface, public MWWorld::ContainerStoreListener { public: CompanionWindow(DragAndDrop* dragAndDrop, MessageBoxManager* manager); @@ -30,6 +32,11 @@ namespace MWGui void onFrame(float dt) override; void clear() override { resetReference(); } + void updateItemView(); + + void itemAdded(const MWWorld::ConstPtr& item, int count) override { updateItemView(); } + void itemRemoved(const MWWorld::ConstPtr& item, int count) override { updateItemView(); } + std::string_view getWindowIdForLua() const override { return "Companion"; } private: diff --git a/apps/openmw/mwgui/container.cpp b/apps/openmw/mwgui/container.cpp index b0c3197519..bb0f90ddc9 100644 --- a/apps/openmw/mwgui/container.cpp +++ b/apps/openmw/mwgui/container.cpp @@ -160,12 +160,8 @@ namespace MWGui MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mCloseButton); setTitle(container.getClass().getName(container)); - mPtr.getClass().getContainerStore(mPtr).setContListener(this); - } - void ContainerWindow::updateItemView() - { - mItemView->update(); + mPtr.getClass().getContainerStore(mPtr).setContListener(this); } void ContainerWindow::resetReference() @@ -326,4 +322,9 @@ namespace MWGui if (mModel && mModel->usesContainer(ptr)) MWBase::Environment::get().getWindowManager()->removeGuiMode(GM_Container); } + + void ContainerWindow::updateItemView() + { + mItemView->update(); + } } diff --git a/apps/openmw/mwgui/tradewindow.cpp b/apps/openmw/mwgui/tradewindow.cpp index ba752303d2..ad5165c6ae 100644 --- a/apps/openmw/mwgui/tradewindow.cpp +++ b/apps/openmw/mwgui/tradewindow.cpp @@ -201,6 +201,9 @@ namespace MWGui onFilterChanged(mFilterAll); mFilterEdit->setCaption({}); + + for (const auto& source : itemSources) + source.getClass().getContainerStore(source).setContListener(this); } void TradeWindow::onFrame(float dt) @@ -643,4 +646,9 @@ namespace MWGui if (mTradeModel && mTradeModel->usesContainer(ptr)) MWBase::Environment::get().getWindowManager()->removeGuiMode(GM_Barter); } + + void TradeWindow::updateItemView() + { + mItemView->update(); + } } diff --git a/apps/openmw/mwgui/tradewindow.hpp b/apps/openmw/mwgui/tradewindow.hpp index 33c39cb269..8614655c47 100644 --- a/apps/openmw/mwgui/tradewindow.hpp +++ b/apps/openmw/mwgui/tradewindow.hpp @@ -4,6 +4,8 @@ #include "referenceinterface.hpp" #include "windowbase.hpp" +#include "../mwworld/containerstore.hpp" + namespace Gui { class NumericEditBox; @@ -20,7 +22,7 @@ namespace MWGui class SortFilterItemModel; class TradeItemModel; - class TradeWindow : public WindowBase, public ReferenceInterface + class TradeWindow : public WindowBase, public ReferenceInterface, public MWWorld::ContainerStoreListener { public: TradeWindow(); @@ -42,6 +44,11 @@ namespace MWGui void onDeleteCustomData(const MWWorld::Ptr& ptr) override; + void updateItemView(); + + void itemAdded(const MWWorld::ConstPtr& item, int count) override { updateItemView(); } + void itemRemoved(const MWWorld::ConstPtr& item, int count) override { updateItemView(); } + typedef MyGUI::delegates::MultiDelegate<> EventHandle_TradeDone; EventHandle_TradeDone eventTradeDone;