From 07d827c907fa73f1b27788e86504b3936fd60045 Mon Sep 17 00:00:00 2001 From: scrawl Date: Mon, 8 Sep 2014 15:22:33 +0200 Subject: [PATCH] Ignore invalid input in numeric EditBox (Fixes #1885) --- apps/openmw/mwgui/tradewindow.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwgui/tradewindow.cpp b/apps/openmw/mwgui/tradewindow.cpp index ccfe6b1eb..8126a4ee8 100644 --- a/apps/openmw/mwgui/tradewindow.cpp +++ b/apps/openmw/mwgui/tradewindow.cpp @@ -436,6 +436,10 @@ namespace MWGui } catch (std::bad_cast&) { + if (_sender->getCaption().empty()) + mTotalBalance->setCaption("0"); + else + mTotalBalance->setCaption(boost::lexical_cast(std::abs(mCurrentBalance))); } } @@ -460,16 +464,19 @@ namespace MWGui mPlayerGold->setCaptionWithReplacing("#{sYourGold} " + boost::lexical_cast(playerGold)); + std::string balanceCaption; if (mCurrentBalance > 0) { mTotalBalanceLabel->setCaptionWithReplacing("#{sTotalSold}"); - mTotalBalance->setCaption(boost::lexical_cast(mCurrentBalance)); + balanceCaption = boost::lexical_cast(mCurrentBalance); } else { mTotalBalanceLabel->setCaptionWithReplacing("#{sTotalCost}"); - mTotalBalance->setCaption(boost::lexical_cast(-mCurrentBalance)); + balanceCaption = boost::lexical_cast(-mCurrentBalance); } + if (balanceCaption != mTotalBalance->getCaption().asUTF8()) // Don't reset text cursor if text doesn't need to be changed + mTotalBalance->setCaption(balanceCaption); mMerchantGold->setCaptionWithReplacing("#{sSellerGold} " + boost::lexical_cast(getMerchantGold())); }