summaryrefslogtreecommitdiff
path: root/src/gui/widgets
diff options
context:
space:
mode:
authorBjørn Lindeijer <bjorn@lindeijer.nl>2009-04-15 23:32:28 +0200
committerBjørn Lindeijer <bjorn@lindeijer.nl>2009-04-15 23:37:32 +0200
commitfe25bc152de747eb64a1c1f6084f0399faf125e8 (patch)
tree83746ebff16b87ad36c71908667ed1a81489ebe6 /src/gui/widgets
parentddd7f8acbbfbe7cf2787279babdb5c1279c7fd73 (diff)
downloadmana-fe25bc152de747eb64a1c1f6084f0399faf125e8.tar.gz
mana-fe25bc152de747eb64a1c1f6084f0399faf125e8.tar.bz2
mana-fe25bc152de747eb64a1c1f6084f0399faf125e8.tar.xz
mana-fe25bc152de747eb64a1c1f6084f0399faf125e8.zip
Have the DropDown create its ScrollArea and ListBox
And also clean them up again. Fixes some memory leaks and simplifies the code. Also got rid of the basically unused "opaque" setting of DropDown.
Diffstat (limited to 'src/gui/widgets')
-rw-r--r--src/gui/widgets/dropdown.cpp25
-rw-r--r--src/gui/widgets/dropdown.h35
2 files changed, 14 insertions, 46 deletions
diff --git a/src/gui/widgets/dropdown.cpp b/src/gui/widgets/dropdown.cpp
index 8dabc3f9..b5a75093 100644
--- a/src/gui/widgets/dropdown.cpp
+++ b/src/gui/widgets/dropdown.cpp
@@ -41,10 +41,10 @@ Image *DropDown::buttons[2][2];
ImageRect DropDown::skin;
float DropDown::mAlpha = 1.0;
-DropDown::DropDown(gcn::ListModel *listModel, gcn::ScrollArea *scrollArea,
- gcn::ListBox *listBox, bool opacity):
- gcn::DropDown::DropDown(listModel, scrollArea, listBox),
- mOpaque(opacity)
+DropDown::DropDown(gcn::ListModel *listModel):
+ gcn::DropDown::DropDown(listModel,
+ new ScrollArea,
+ new ListBox(listModel))
{
setFrameSize(2);
@@ -108,6 +108,9 @@ DropDown::~DropDown()
for_each(skin.grid, skin.grid + 9, dtor<Image*>());
}
+
+ delete mScrollArea;
+ delete mListBox;
}
void DropDown::draw(gcn::Graphics* graphics)
@@ -134,7 +137,7 @@ void DropDown::draw(gcn::Graphics* graphics)
}
}
- const int alpha = (int)(mAlpha * 255.0f);
+ const int alpha = (int) (mAlpha * 255.0f);
gcn::Color faceColor = getBaseColor();
faceColor.a = alpha;
const gcn::Color* highlightColor = &guiPalette->getColor(Palette::HIGHLIGHT,
@@ -142,18 +145,10 @@ void DropDown::draw(gcn::Graphics* graphics)
gcn::Color shadowColor = faceColor - 0x303030;
shadowColor.a = alpha;
- if (mOpaque)
- {
- graphics->setColor(guiPalette->getColor(Palette::BACKGROUND, alpha));
- graphics->fillRectangle(gcn::Rectangle(0, 0, getWidth(), h));
-
- graphics->setColor(guiPalette->getColor(Palette::TEXT, alpha));
- }
-
- graphics->setFont(getFont());
-
if (mListBox->getListModel() && mListBox->getSelected() >= 0)
{
+ graphics->setFont(getFont());
+ graphics->setColor(guiPalette->getColor(Palette::TEXT, alpha));
graphics->drawText(mListBox->getListModel()->getElementAt(mListBox->getSelected()), 1, 0);
}
diff --git a/src/gui/widgets/dropdown.h b/src/gui/widgets/dropdown.h
index 601d55c8..83d43f63 100644
--- a/src/gui/widgets/dropdown.h
+++ b/src/gui/widgets/dropdown.h
@@ -28,11 +28,9 @@ class Image;
class ImageRect;
/**
- * A drop down box from which you can select different values. It is one of
- * the most complicated Widgets you will find in Guichan. For drawing the
- * DroppedDown box it uses one ScrollArea and one ListBox. It also uses an
- * internal FocusHandler to handle the focus of the internal ScollArea and
- * ListBox. DropDown uses a ListModel to handle the list. To be able to use
+ * A drop down box from which you can select different values.
+ *
+ * A ListModel provides the contents of the drop down. To be able to use
* DropDown you must give DropDown an implemented ListModel which represents
* your list.
*/
@@ -47,37 +45,14 @@ class DropDown : public gcn::DropDown
* @param listBox the listBox to use.
* @see ListModel, ScrollArea, ListBox.
*/
- DropDown(gcn::ListModel *listModel = NULL,
- gcn::ScrollArea *scrollArea = NULL,
- gcn::ListBox *listBox = NULL,
- bool opacity = true);
+ DropDown(gcn::ListModel *listModel = NULL);
- /**
- * Destructor.
- */
~DropDown();
void draw(gcn::Graphics *graphics);
void drawFrame(gcn::Graphics *graphics);
- /**
- * Sets the widget to be opaque, that is sets the widget to display its
- * background.
- *
- * @param opaque True if the widget should be opaque, false otherwise.
- */
- void setOpaque(bool opaque) { mOpaque = opaque; }
-
- /**
- * Checks if the widget is opaque, that is if the widget area displays
- * its background.
- *
- * @return True if the widget is opaque, false otherwise.
- */
- bool isOpaque() const { return mOpaque; }
-
-
protected:
/**
* Draws the button with the little down arrow.
@@ -91,8 +66,6 @@ class DropDown : public gcn::DropDown
static Image *buttons[2][2];
static ImageRect skin;
static float mAlpha;
-
- bool mOpaque;
};
#endif // end DROPDOWN_H