--- a/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swttablelistbox.cpp Tue May 25 12:34:19 2010 +0300
+++ b/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swttablelistbox.cpp Wed Jun 09 09:34:07 2010 +0300
@@ -668,8 +668,34 @@
// Deliver event to scrollbar
if (iVScrollBarGrabsPointerEvents && vsb)
{
- vsb->HandlePointerEventL(aPointerEvent);
+ if (!iFlickScrollingOngoing
+ && aPointerEvent.iType == TPointerEvent::EButton1Down)
+ {
+ // Scrollbar was tapped after scrolling stopped
+ // by itself, so no need to redirect events
+ iScrollbarPointerEventToListbox = EFalse;
+ }
+
+ if (iScrollbarPointerEventToListbox)
+ {
+ // Stops kinetic scrolling when scrollbar is tapped
+ CEikTextListBox::HandlePointerEventL(aPointerEvent);
+ // Continue delivering events until button up appears to prevent
+ // some unexpected behavior in both scrollbar and listbox
+ switch (aPointerEvent.iType)
+ {
+ case TPointerEvent::EButton1Up:
+ iScrollbarPointerEventToListbox = EFalse;
+ break;
+ }
+ }
+ else
+ {
+ // Handles scrollbar behavior
+ vsb->HandlePointerEventL(aPointerEvent);
+ }
}
+
if (iHScrollBarGrabsPointerEvents && hsb)
{
hsb->HandlePointerEventL(aPointerEvent);
@@ -869,6 +895,8 @@
return;
}
+ UpdateFlickScrollingState(aEventType);
+
switch (aEventType)
{
// On 5.0, drawing trough Java gives simply a better fps.
@@ -1130,7 +1158,9 @@
CSwtTableListBox::CSwtTableListBox(MSwtDisplay& aDisplay, CSwtTable &aTable)
: iDisplay(aDisplay),
- iTable(aTable)
+ iTable(aTable),
+ iFlickScrollingOngoing(EFalse)
+
{
}
@@ -1190,3 +1220,22 @@
{
return iTable.ClientRect().Width();
}
+
+// ---------------------------------------------------------------------------
+// CSwtTableListBox::UpdateFlickScrollingState
+// Updates flick scrolling status based on received listbox event.
+// ---------------------------------------------------------------------------
+//
+void CSwtTableListBox::UpdateFlickScrollingState(TListBoxEvent aEventType)
+{
+ switch (aEventType)
+ {
+ case EEventFlickStarted:
+ iFlickScrollingOngoing = ETrue;
+ iScrollbarPointerEventToListbox = ETrue;
+ break;
+ case EEventFlickStopped:
+ iFlickScrollingOngoing = EFalse;
+ break;
+ }
+}