From e4883337848c708cc344eb94bac005b500d73e01 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 12 Oct 2012 00:02:00 +0300 Subject: Disallow double click in lists into two differnt selected items at same time. --- src/gui/widgets/listbox.cpp | 29 ++++++++++++++++++++--------- src/gui/widgets/listbox.h | 1 + 2 files changed, 21 insertions(+), 9 deletions(-) (limited to 'src/gui') diff --git a/src/gui/widgets/listbox.cpp b/src/gui/widgets/listbox.cpp index 499d7b07c..259e49972 100644 --- a/src/gui/widgets/listbox.cpp +++ b/src/gui/widgets/listbox.cpp @@ -44,7 +44,8 @@ float ListBox::mAlpha = 1.0; ListBox::ListBox(gcn::ListModel *const listModel): gcn::ListBox(listModel), mHighlightColor(Theme::getThemeColor(Theme::HIGHLIGHT)), - mDistributeMousePressed(true) + mDistributeMousePressed(true), + mOldSelected(-1) { mForegroundColor = Theme::getThemeColor(Theme::LISTBOX); } @@ -151,15 +152,25 @@ void ListBox::mousePressed(gcn::MouseEvent &event) } else { - if (event.getClickCount() == 2) + switch (event.getClickCount()) { - if (gui) - gui->resetClickCount(); - gcn::ListBox::mousePressed(event); - } - else - { - mouseDragged(event); + case 1: + mouseDragged(event); + mOldSelected = mSelected; + break; + case 2: + if (gui) + gui->resetClickCount(); + if (mOldSelected == mSelected) + gcn::ListBox::mousePressed(event); + else + mouseDragged(event); + mOldSelected = mSelected; + break; + default: + mouseDragged(event); + mOldSelected = mSelected; + break; } } } diff --git a/src/gui/widgets/listbox.h b/src/gui/widgets/listbox.h index f484c8ad0..4a061bd73 100644 --- a/src/gui/widgets/listbox.h +++ b/src/gui/widgets/listbox.h @@ -78,6 +78,7 @@ class ListBox : public gcn::ListBox protected: gcn::Color mHighlightColor; bool mDistributeMousePressed; + int mOldSelected; static float mAlpha; }; -- cgit v1.2.3-60-g2f50