diff options
author | Bjørn Lindeijer <bjorn@lindeijer.nl> | 2008-04-28 18:29:04 +0000 |
---|---|---|
committer | Bjørn Lindeijer <bjorn@lindeijer.nl> | 2008-04-28 18:29:04 +0000 |
commit | 5943323aff9db6c1405177478564072e9d2214b3 (patch) | |
tree | 410aa9db803119f4ae1ee09883591f382390a5b1 /src/gui/itemcontainer.cpp | |
parent | a59a96dc0f162a48f8cedcc804e9f89af3b1b9d3 (diff) | |
download | mana-5943323aff9db6c1405177478564072e9d2214b3.tar.gz mana-5943323aff9db6c1405177478564072e9d2214b3.tar.bz2 mana-5943323aff9db6c1405177478564072e9d2214b3.tar.xz mana-5943323aff9db6c1405177478564072e9d2214b3.zip |
Properly fix problems with ItemContainer in InventoryWindow not resizing
properly since upgrade to Guichan 0.8.0.
Diffstat (limited to 'src/gui/itemcontainer.cpp')
-rw-r--r-- | src/gui/itemcontainer.cpp | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/src/gui/itemcontainer.cpp b/src/gui/itemcontainer.cpp index eb9d66ec..eb8b91a7 100644 --- a/src/gui/itemcontainer.cpp +++ b/src/gui/itemcontainer.cpp @@ -38,6 +38,9 @@ #include "../utils/tostring.h" +const int ItemContainer::gridWidth = 36; // item icon width + 4 +const int ItemContainer::gridHeight = 42; // item icon height + 10 + ItemContainer::ItemContainer(Inventory *inventory): mInventory(inventory), mSelectedItem(NULL) @@ -50,6 +53,7 @@ ItemContainer::ItemContainer(Inventory *inventory): mMaxItems = mInventory->getLastUsedSlot() - 1; // Count from 0, usage from 2 addMouseListener(this); + addWidgetListener(this); } ItemContainer::~ItemContainer() @@ -67,15 +71,13 @@ ItemContainer::logic() if (i != mMaxItems) { mMaxItems = i; - setWidth(getWidth()); + recalculateHeight(); } } void ItemContainer::draw(gcn::Graphics *graphics) { - int gridWidth = 36; //(item icon width + 4) - int gridHeight = 42; //(item icon height + 10) int columns = getWidth() / gridWidth; // Have at least 1 column @@ -130,22 +132,22 @@ ItemContainer::draw(gcn::Graphics *graphics) } } -void -ItemContainer::setWidth(int width) +void ItemContainer::widgetResized(const gcn::Event &event) { - gcn::Widget::setWidth(width); + recalculateHeight(); +} - int gridWidth = 36; //item icon width + 4 - int gridHeight = 42; //item icon height + 10 - int columns = getWidth() / gridWidth; +void ItemContainer::recalculateHeight() +{ + int cols = getWidth() / gridWidth; - if (columns < 1) - { - columns = 1; - } + if (cols < 1) + cols = 1; - setHeight(4 + ((mMaxItems / columns) + - (mMaxItems % columns > 0 ? 1 : 0)) * gridHeight); + const int rows = (mMaxItems / cols) + (mMaxItems % cols > 0 ? 1 : 0); + const int height = rows * gridHeight + 8; + if (height != getHeight()) + setHeight(height); } Item* @@ -190,8 +192,6 @@ ItemContainer::mousePressed(gcn::MouseEvent &event) if (button == gcn::MouseEvent::LEFT || button == gcn::MouseEvent::RIGHT) { - int gridWidth = 36; //(item icon width + 4) - int gridHeight = 42; //(item icon height + 10) int columns = getWidth() / gridWidth; int mx = event.getX(); int my = event.getY(); |