diff options
Diffstat (limited to 'src/gui/widgets')
-rw-r--r-- | src/gui/widgets/dropdown.cpp | 25 | ||||
-rw-r--r-- | src/gui/widgets/dropdown.h | 35 |
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 |