diff options
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/itempopup.cpp | 41 | ||||
-rw-r--r-- | src/gui/itempopup.h | 2 |
2 files changed, 37 insertions, 6 deletions
diff --git a/src/gui/itempopup.cpp b/src/gui/itempopup.cpp index d7f67ff0c..1a8dcc35d 100644 --- a/src/gui/itempopup.cpp +++ b/src/gui/itempopup.cpp @@ -23,6 +23,7 @@ #include "gui/itempopup.h" +#include "client.h" #include "graphics.h" #include "item.h" #include "units.h" @@ -46,7 +47,9 @@ ItemPopup::ItemPopup(): Popup("ItemPopup"), - mIcon(0) + mIcon(0), + mLastName(""), + mLastColor(1) { // Item Name mItemName = new gcn::Label; @@ -100,8 +103,18 @@ void ItemPopup::setItem(const Item *item, bool showImage) setItem(ii, item->getColor(), showImage); if (item->getRefine() > 0) { - mItemName->setCaption(strprintf("%s (+%d), %d", ii.getName().c_str(), - item->getRefine(), ii.getId())); + mLastName = item->getId(); + mLastColor = item->getColor(); + if (serverVersion > 0) + { + mItemName->setCaption(strprintf("%s (+%d), %d", ii.getName( + item->getColor()).c_str(), item->getRefine(), ii.getId())); + } + else + { + mItemName->setCaption(strprintf("%s (+%d), %d", + ii.getName().c_str(), item->getRefine(), ii.getId())); + } mItemName->adjustSize(); int minWidth = mItemName->getWidth() + 8; if (getWidth() < minWidth) @@ -112,7 +125,7 @@ void ItemPopup::setItem(const Item *item, bool showImage) void ItemPopup::setItem(const ItemInfo &item, unsigned char color, bool showImage) { - if (!mIcon || item.getName() == mItemName->getCaption()) + if (!mIcon || (item.getName() == mLastName && color == mLastColor)) return; int space = 0; @@ -147,12 +160,26 @@ void ItemPopup::setItem(const ItemInfo &item, unsigned char color, mItemType = item.getType(); - mItemName->setCaption(item.getName() + _(", ") + toString(item.getId())); + mLastName = item.getName(); + mLastColor = color; + + if (serverVersion > 0) + { + mItemName->setCaption(item.getName(color) + _(", ") + + toString(item.getId())); + mItemDesc->setTextWrapped(item.getDescription(color), 196); + } + else + { + mItemName->setCaption(item.getName() + _(", ") + + toString(item.getId())); + mItemDesc->setTextWrapped(item.getDescription(), 196); + } + mItemName->adjustSize(); mItemName->setForegroundColor(getColor(mItemType)); mItemName->setPosition(getPadding() + space, getPadding()); - mItemDesc->setTextWrapped(item.getDescription(), 196); mItemEffect->setTextWrapped(item.getEffect(), 196); mItemWeight->setTextWrapped(strprintf(_("Weight: %s"), Units::formatWeight(item.getWeight()).c_str()), @@ -240,4 +267,6 @@ void ItemPopup::mouseMoved(gcn::MouseEvent &event) // When the mouse moved on top of the popup, hide it setVisible(false); + mLastName = ""; + mLastColor = 1; }
\ No newline at end of file diff --git a/src/gui/itempopup.h b/src/gui/itempopup.h index aeda26a0d..70664e022 100644 --- a/src/gui/itempopup.h +++ b/src/gui/itempopup.h @@ -66,6 +66,8 @@ class ItemPopup : public Popup TextBox *mItemWeight; ItemType mItemType; Icon *mIcon; + std::string mLastName; + unsigned char mLastColor; static gcn::Color getColor(ItemType type); }; |