{
_ListViewItemStatus itemStatus;
memset(&itemStatus, 0, sizeof(_ListViewItemStatus));
-
- _TouchManager* pTouchManager = _TouchManager::GetInstance();
bool needChangeEventTarget = false;
- int touchedGroupIndex = -1;
- int touchedItemIndex = -1;
-
- // find touched item.
- GetItemIndexFromPosition(GetCurrentTouchPosition(), touchedGroupIndex, touchedItemIndex);
- if (pListViewItem->IsItemSelected() && (touchedGroupIndex == groupIndex) && (touchedItemIndex == itemIndex)
- && (pTouchManager->GetTouchStatus(0) != TOUCH_RELEASED))
+ if (pListViewItem->IsItemSelected())
{
needChangeEventTarget = true;
}
// change touch event target
pTarget->SetChangingEventTarget(true);
- pTouchManager->SetChangedTouchableTarget(pTarget);
+ _TouchManager::GetInstance()->SetChangedTouchableTarget(pTarget);
}
}
}
{
_ListViewItemStatus itemStatus;
memset(&itemStatus, 0, sizeof(_ListViewItemStatus));
-
- _TouchManager* pTouchManager = _TouchManager::GetInstance();
bool needChangeEventTarget = false;
- if (pListViewItem->IsItemSelected() && (GetItemIndexFromPosition(GetCurrentTouchPosition()) == index)
- && (pTouchManager->GetTouchStatus(0) != TOUCH_RELEASED))
+ if (pListViewItem->IsItemSelected())
{
needChangeEventTarget = true;
}
// change touch event target
pTarget->SetChangingEventTarget(true);
- pTouchManager->SetChangedTouchableTarget(pTarget);
+ _TouchManager::GetInstance()->SetChangedTouchableTarget(pTarget);
}
}
else
: _TableViewItem(itemHeight)
, __needAlignContextItem(false)
, __touchPressed(false)
+ , __touchEnabled(false)
, __selectedElementId(-1)
, __descriptionTextShowState(false)
, __pDescriptionText(null)
// This function was made to modify of ListView::RefreshList().
// This function could adversely affect touch event handling. So, you should be used with caution.
- if (currentStatus.annexStyle == GetItemStyle())
- {
- SetPressedControl(currentStatus.pressedControl);
- }
- else
- {
- SetPressedControl(TABLE_VIEW_ITEM_PRESSED_ITEM);
- }
-
+ SetPressedControl((currentStatus.annexStyle == GetItemStyle()) ? currentStatus.pressedControl : TABLE_VIEW_ITEM_PRESSED_ITEM);
SetSelectionState(currentStatus.itemSelected);
SetLastTouchPressedPosition(currentStatus.currentTouchPosition);
+ if (!currentStatus.itemSelected)
+ {
+ SetItemDrawingStatus(LISTVIEW_ITEM_STATUS_NORMAL);
+ }
+
__prevTouchPos = currentStatus.currentTouchPosition;
+ __touchEnabled = currentStatus.touchEnabled;
__selectionEabled = currentStatus.elementSelectionEnabled;
__selectedElementId = currentStatus.selectedElementId;
- __touchPressed = true;
+ __touchPressed = (currentStatus.itemSelected || currentStatus.elementSelectionEnabled);
if (__selectionEabled)
{
currentStatus.annexStyle = GetItemStyle();
currentStatus.pressedControl = GetPressedControl();
currentStatus.itemSelected = GetSelectionState();
- currentStatus.currentTouchPosition = GetLastTouchPressedPositionF();
+ currentStatus.currentTouchPosition = __prevTouchPos;
// for _ListViewItem
+ currentStatus.touchEnabled = __touchEnabled;
currentStatus.elementSelectionEnabled = __selectionEabled;
currentStatus.selectedElementId = __selectedElementId;
}
bool
_ListViewItem::IsItemSelected(void)
{
- return __touchPressed;
+ return __touchEnabled;
}
int
}
__touchPressed = true;
+ __touchEnabled = true;
SetLastStateChangedInfo();
bool
_ListViewItem::OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo)
{
+ FloatPoint pos = touchinfo.GetCurrentPosition();
+ __prevTouchPos.SetPosition(pos.x, pos.y);
+
if ((&source != this) && (source.GetParent() != this))
{
return false;
}
__selectedElementId = -1;
+ __selectionEabled = false;
__touchPressed = false;
+ __touchEnabled = false;
return false;
}
bool
_ListViewItem::OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo)
{
+ FloatPoint pos = touchinfo.GetCurrentPosition();
+ __prevTouchPos.SetPosition(pos.x, pos.y);
+
if (__touchPressed)
{
ClearLastStateChangedInfo();
ResetTextSlide();
__selectedElementId = -1;
+ __selectionEabled = false;
__touchPressed = false;
_TableViewItem::OnTouchMoved(source, touchinfo);
bool
_ListViewItem::OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo)
{
+ FloatPoint pos = touchinfo.GetCurrentPosition();
+ __prevTouchPos.SetPosition(pos.x, pos.y);
+
ResetTextSlide();
- if (__selectionEabled)
- {
- __selectionEabled = false;
- }
+ __selectedElementId = -1;
+ __selectionEabled = false;
+ __touchPressed = false;
+ __touchEnabled = false;
_TableViewItem::OnTouchCanceled(source, touchinfo);