summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-04-03 20:41:04 +0300
committerAndrei Karas <akaras@inbox.ru>2014-04-03 20:41:04 +0300
commit855947baec01a77f18c8c3cee8c0af000131b71e (patch)
tree323a8589bcefdc6f400065a68dce297f7cda2467
parent2947d6af4334a736eab6ea1ad8147239311ea027 (diff)
downloadmanaverse-855947baec01a77f18c8c3cee8c0af000131b71e.tar.gz
manaverse-855947baec01a77f18c8c3cee8c0af000131b71e.tar.bz2
manaverse-855947baec01a77f18c8c3cee8c0af000131b71e.tar.xz
manaverse-855947baec01a77f18c8c3cee8c0af000131b71e.zip
Fix close dropdowns on item selection.
-rw-r--r--src/gui/widgets/listbox.cpp2
-rw-r--r--src/gui/widgets/popuplist.cpp2
-rw-r--r--src/gui/widgets/scrollarea.cpp5
-rw-r--r--src/gui/widgets/widget.cpp3
-rw-r--r--src/gui/widgets/widget.h10
5 files changed, 17 insertions, 5 deletions
diff --git a/src/gui/widgets/listbox.cpp b/src/gui/widgets/listbox.cpp
index c41e32854..341204505 100644
--- a/src/gui/widgets/listbox.cpp
+++ b/src/gui/widgets/listbox.cpp
@@ -275,7 +275,7 @@ void ListBox::mouseWheelMovedDown(MouseEvent &event A_UNUSED)
void ListBox::mousePressed(MouseEvent &event)
{
mPressedIndex = getSelectionByMouse(event.getY());
- if (mPressedIndex != -1)
+ if (mMouseConsume && mPressedIndex != -1)
event.consume();
}
diff --git a/src/gui/widgets/popuplist.cpp b/src/gui/widgets/popuplist.cpp
index fa0616fd2..c203f59c6 100644
--- a/src/gui/widgets/popuplist.cpp
+++ b/src/gui/widgets/popuplist.cpp
@@ -43,6 +43,8 @@ PopupList::PopupList(DropDown *const widget,
mModal(modal)
{
mListBox->postInit();
+ mListBox->setMouseConsume(false);
+ mScrollArea->setMouseConsume(false);
mAllowLogic = false;
setFocusable(true);
diff --git a/src/gui/widgets/scrollarea.cpp b/src/gui/widgets/scrollarea.cpp
index 2efa144c9..95a9cd399 100644
--- a/src/gui/widgets/scrollarea.cpp
+++ b/src/gui/widgets/scrollarea.cpp
@@ -866,7 +866,7 @@ void ScrollArea::mouseReleased(MouseEvent& event)
}
mClickX = 0;
mClickY = 0;
- if (dx || dy)
+ if (mMouseConsume && (dx || dy))
event.consume();
}
}
@@ -876,7 +876,8 @@ void ScrollArea::mouseReleased(MouseEvent& event)
mRightButtonPressed = false;
mIsHorizontalMarkerDragged = false;
mIsVerticalMarkerDragged = false;
- event.consume();
+ if (mMouseConsume)
+ event.consume();
mRedraw = true;
}
diff --git a/src/gui/widgets/widget.cpp b/src/gui/widgets/widget.cpp
index aa3e6254b..c61881673 100644
--- a/src/gui/widgets/widget.cpp
+++ b/src/gui/widgets/widget.cpp
@@ -107,7 +107,8 @@ Widget::Widget(const Widget2 *const widget) :
mTabIn(true),
mTabOut(true),
mEnabled(true),
- mAllowLogic(true)
+ mAllowLogic(true),
+ mMouseConsume(true)
{
mWidgets.push_back(this);
mWidgetsSet.insert(this);
diff --git a/src/gui/widgets/widget.h b/src/gui/widgets/widget.h
index 236c7b6ee..86b203666 100644
--- a/src/gui/widgets/widget.h
+++ b/src/gui/widgets/widget.h
@@ -1009,9 +1009,15 @@ class Widget : public Widget2
*/
virtual void showPart(const Rect &rectangle);
- bool isAllowLogic() const
+ bool isAllowLogic() const A_WARN_UNUSED
{ return mAllowLogic; }
+ void setMouseConsume(const bool b)
+ { mMouseConsume = b; }
+
+ bool isMouseConsume() const A_WARN_UNUSED
+ { return mMouseConsume; }
+
protected:
/**
* Distributes an action event to all action listeners
@@ -1222,6 +1228,8 @@ class Widget : public Widget2
bool mAllowLogic;
+ bool mMouseConsume;
+
/**
* Holds the global font used by the widget.
*/