From 59e51a43497d1d2824b6637f10ca04a86211aacf Mon Sep 17 00:00:00 2001 From: Vojtech Bocek Date: Wed, 29 Jan 2014 19:11:15 +0100 Subject: Don't switch between fast and normal scroll during drag in listviews Signed-off-by: Vojtech Bocek Change-Id: I925adda7f417c6e578f501babc8ef2bec638f66b --- gui/fileselector.cpp | 8 ++++++-- gui/listbox.cpp | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/gui/fileselector.cpp b/gui/fileselector.cpp index 0f8d903a3..b7804fd86 100644 --- a/gui/fileselector.cpp +++ b/gui/fileselector.cpp @@ -659,7 +659,7 @@ int GUIFileSelector::GetSelection(int x, int y) int GUIFileSelector::NotifyTouch(TOUCH_STATE state, int x, int y) { - static int lastY = 0, last2Y = 0; + static int lastY = 0, last2Y = 0, fastScroll = 0; int selection = 0; switch (state) @@ -674,6 +674,9 @@ int GUIFileSelector::NotifyTouch(TOUCH_STATE state, int x, int y) mUpdate = 1; startY = lastY = last2Y = y; scrollingSpeed = 0; + + if(mFastScrollRectX != -1 && x >= mRenderX + mRenderW - mFastScrollW) + fastScroll = 1; break; case TOUCH_DRAG: // Check if we dragged out of the selection window @@ -687,7 +690,7 @@ int GUIFileSelector::NotifyTouch(TOUCH_STATE state, int x, int y) } // Fast scroll - if(mFastScrollRectX != -1 && x >= mRenderX + mRenderW - mFastScrollW) + if(fastScroll) { int pct = ((y-mRenderY-mHeaderH)*100)/(mRenderH-mHeaderH); int totalSize = (mShowFolders ? mFolderList.size() : 0) + (mShowFiles ? mFileList.size() : 0); @@ -761,6 +764,7 @@ int GUIFileSelector::NotifyTouch(TOUCH_STATE state, int x, int y) case TOUCH_RELEASE: isHighlighted = false; + fastScroll = 0; if (startSelection >= 0) { // We've selected an item! diff --git a/gui/listbox.cpp b/gui/listbox.cpp index a4976f4e1..670966401 100644 --- a/gui/listbox.cpp +++ b/gui/listbox.cpp @@ -602,7 +602,7 @@ int GUIListBox::GetSelection(int x, int y) int GUIListBox::NotifyTouch(TOUCH_STATE state, int x, int y) { - static int lastY = 0, last2Y = 0; + static int lastY = 0, last2Y = 0, fastScroll = 0; int selection = 0; switch (state) @@ -617,6 +617,9 @@ int GUIListBox::NotifyTouch(TOUCH_STATE state, int x, int y) mUpdate = 1; startY = lastY = last2Y = y; scrollingSpeed = 0; + + if(mFastScrollRectX != -1 && x >= mRenderX + mRenderW - mFastScrollW) + fastScroll = 1; break; case TOUCH_DRAG: @@ -631,7 +634,7 @@ int GUIListBox::NotifyTouch(TOUCH_STATE state, int x, int y) } // Fast scroll - if(mFastScrollRectX != -1 && x >= mRenderX + mRenderW - mFastScrollW) + if(fastScroll) { int pct = ((y-mRenderY-mHeaderH)*100)/(mRenderH-mHeaderH); int totalSize = mList.size(); @@ -705,6 +708,7 @@ int GUIListBox::NotifyTouch(TOUCH_STATE state, int x, int y) case TOUCH_RELEASE: isHighlighted = false; + fastScroll = 0; if (startSelection >= 0) { // We've selected an item! -- cgit v1.2.3