summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2013-06-03 18:27:38 +0300
committerAndrei Karas <akaras@inbox.ru>2013-06-03 18:27:38 +0300
commit7004d2a474babb208c9f987c0e5c3b774b088513 (patch)
tree2e6209f0b94421cb233d8688574760671b1bbc16
parent9df0183f9a45d92a6be9e3ef9c7641b903134ba3 (diff)
downloadplus-7004d2a474babb208c9f987c0e5c3b774b088513.tar.gz
plus-7004d2a474babb208c9f987c0e5c3b774b088513.tar.bz2
plus-7004d2a474babb208c9f987c0e5c3b774b088513.tar.xz
plus-7004d2a474babb208c9f987c0e5c3b774b088513.zip
improve extendedlistbox
-rw-r--r--src/gui/widgets/extendedlistbox.cpp26
-rw-r--r--src/gui/widgets/extendedlistbox.h2
2 files changed, 19 insertions, 9 deletions
diff --git a/src/gui/widgets/extendedlistbox.cpp b/src/gui/widgets/extendedlistbox.cpp
index 603827130..accb52ddc 100644
--- a/src/gui/widgets/extendedlistbox.cpp
+++ b/src/gui/widgets/extendedlistbox.cpp
@@ -39,7 +39,7 @@
ExtendedListBox::ExtendedListBox(const Widget2 *const widget,
gcn::ListModel *const listModel,
const std::string &skin,
- int rowHeight) :
+ const int rowHeight) :
ListBox(widget, listModel, skin),
mRowHeight(rowHeight),
mImagePadding(mSkin ? mSkin->getOption("imagePadding") : 0),
@@ -74,7 +74,8 @@ void ExtendedListBox::draw(gcn::Graphics *graphics)
gcn::Font *const font = getFont();
const int height = getRowHeight();
- int textPos = (height - font->getHeight()) / 2 + mPadding;
+ const int pad2 = 2 + mPadding;
+ int textPos = (height - font->getHeight()) / pad2;
if (textPos < 0)
textPos = 0;
@@ -85,13 +86,24 @@ void ExtendedListBox::draw(gcn::Graphics *graphics)
graphics->setColor(mHighlightColor);
graphics->fillRectangle(gcn::Rectangle(mPadding,
height * mSelected + mPadding,
- getWidth() - 2 * mPadding, height));
+ getWidth() - pad2, height));
}
- // Draw the list elements
+ const int sz = mListModel->getNumberOfElements();
+ for (int i = 0, y = 0; i < sz; ++i, y += height)
+ {
+ if (i != mSelected)
+ {
+ const Image *const image = model->getImageAt(i);
+ if (image)
+ {
+ g->drawImage(image, mImagePadding, y + (height
+ - image->getHeight()) / 2 + mPadding);
+ }
+ }
+ }
g->setColorAll(mForegroundColor, mForegroundColor2);
- for (int i = 0, y = 0; i < mListModel->getNumberOfElements();
- ++i, y += height)
+ for (int i = 0, y = 0; i < sz; ++i, y += height)
{
if (i != mSelected)
{
@@ -103,8 +115,6 @@ void ExtendedListBox::draw(gcn::Graphics *graphics)
}
else
{
- g->drawImage(image, mImagePadding, y + (height
- - image->getHeight()) / 2 + mPadding);
font->drawString(graphics, mListModel->getElementAt(i),
image->getWidth() + mImagePadding + mSpacing, y + textPos);
}
diff --git a/src/gui/widgets/extendedlistbox.h b/src/gui/widgets/extendedlistbox.h
index 1ac942a54..9d3394dd4 100644
--- a/src/gui/widgets/extendedlistbox.h
+++ b/src/gui/widgets/extendedlistbox.h
@@ -32,7 +32,7 @@ class ExtendedListBox final : public ListBox
ExtendedListBox(const Widget2 *const widget,
gcn::ListModel *const listModel,
const std::string &skin,
- int rowHeight = 13);
+ const int rowHeight = 13);
A_DELETE_COPY(ExtendedListBox)