29#include <guichan/font.hpp>
30#include <guichan/graphics.hpp>
31#include <guichan/key.hpp>
32#include <guichan/listmodel.hpp>
46 const int height = getRowHeight();
54 graphics->fillRectangle(gcn::Rectangle(0, height * mSelected,
59 for (
int i = 0, y = 0; i < mListModel->getNumberOfElements();
73 const gcn::Key key = keyEvent.getKey();
77 distributeActionEvent();
80 else if (key.getValue() ==
Key::UP)
82 if (getSelected() > 0)
83 setSelected(mSelected - 1);
84 else if (getSelected() == 0 && mWrappingEnabled)
85 setSelected(getListModel()->getNumberOfElements() - 1);
90 if (getSelected() < (getListModel()->getNumberOfElements() - 1))
91 setSelected(mSelected + 1);
92 else if (getSelected() == (getListModel()->getNumberOfElements() - 1) &&
102 else if (key.getValue() ==
Key::END)
104 setSelected(getListModel()->getNumberOfElements() - 1);
111 if (mouseEvent.getButton() != gcn::MouseEvent::LEFT)
114 int y = std::max(0, mouseEvent.getY());
115 if (y / (
int)getRowHeight() < getListModel()->getNumberOfElements())
117 setSelected(y / getRowHeight());
118 distributeActionEvent();
138 if (event.getButton() != gcn::MouseEvent::LEFT)
142 int y = std::max(0, event.getY());
143 if (y / (
int)getRowHeight() < getListModel()->getNumberOfElements())
144 setSelected(y / getRowHeight());
void drawText(const std::string &text, int x, int y, gcn::Graphics::Alignment alignment, const gcn::Color &color, gcn::Font *font, bool outline=false, bool shadow=false, const std::optional< gcn::Color > &outlineColor={}, const std::optional< gcn::Color > &shadowColor={})
void setColor(const gcn::Color &color) override
Theme * getTheme() const
The global GUI theme.
A list box, meant to be used inside a scroll area.
ListBox(gcn::ListModel *listModel)
void mouseDragged(gcn::MouseEvent &event) override
void draw(gcn::Graphics *graphics) override
Draws the list box.
void keyPressed(gcn::KeyEvent &keyEvent) override
void mouseWheelMovedUp(gcn::MouseEvent &mouseEvent) override
void mouseWheelMovedDown(gcn::MouseEvent &mouseEvent) override
void mousePressed(gcn::MouseEvent &mouseEvent) override
int getGuiAlpha() const
Get the current GUI alpha value.
static const gcn::Color & getThemeColor(int type)
Gets the color associated with the type in the default palette (0).