diff options
author | Angelo Castellani <udp.castellani@gmail.com> | 2011-05-21 15:06:36 -0400 |
---|---|---|
committer | Stefan Dombrowski <stefan@uni-bonn.de> | 2011-05-23 00:08:18 +0200 |
commit | c6a081ba610c5f5f298bc80c2ef28facb41dffae (patch) | |
tree | ee74a1e145d7caf4debcaf31e789cfcc566eddea /src/gui/widgets/listbox.cpp | |
parent | 144c8e85b20602a1f9dd341cc29b726adfac7690 (diff) | |
download | mana-c6a081ba610c5f5f298bc80c2ef28facb41dffae.tar.gz mana-c6a081ba610c5f5f298bc80c2ef28facb41dffae.tar.bz2 mana-c6a081ba610c5f5f298bc80c2ef28facb41dffae.tar.xz mana-c6a081ba610c5f5f298bc80c2ef28facb41dffae.zip |
Fixed listbox selection issue
Clicking below the last item of a listbox would select the last item.
Made it do nothing instead.
Diffstat (limited to 'src/gui/widgets/listbox.cpp')
-rw-r--r-- | src/gui/widgets/listbox.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/gui/widgets/listbox.cpp b/src/gui/widgets/listbox.cpp index d79d8d0c..570983ca 100644 --- a/src/gui/widgets/listbox.cpp +++ b/src/gui/widgets/listbox.cpp @@ -120,6 +120,18 @@ void ListBox::keyPressed(gcn::KeyEvent& keyEvent) // Don't do anything on scrollwheel. ScrollArea will deal with that. +void ListBox::mousePressed(gcn::MouseEvent &mouseEvent) +{ + if (mouseEvent.getButton() != gcn::MouseEvent::LEFT) + return; + + int y = std::max(0, mouseEvent.getY()); + if (y / (int)getRowHeight() < getListModel()->getNumberOfElements()) + setSelected(y / getRowHeight()); + else + setSelected(-1); +} + void ListBox::mouseWheelMovedUp(gcn::MouseEvent &mouseEvent) { } @@ -135,5 +147,6 @@ void ListBox::mouseDragged(gcn::MouseEvent &event) // Make list selection update on drag, but guard against negative y int y = std::max(0, event.getY()); - setSelected(y / getRowHeight()); + if (y / (int)getRowHeight() < getListModel()->getNumberOfElements()) + setSelected(y / getRowHeight()); } |