859 // re-log and update parent position |
862 // re-log and update parent position |
860 TPoint parPos; |
863 TPoint parPos; |
861 ReLogCurrentWindow(pointerEvent.iPosition,parPos,aForceInGroup); |
864 ReLogCurrentWindow(pointerEvent.iPosition,parPos,aForceInGroup); |
862 pointerEvent.iParentPosition=parPos; |
865 pointerEvent.iParentPosition=parPos; |
863 |
866 |
|
867 |
|
868 #ifdef LOG_WSERV_EVENTS |
|
869 RDebug::Printf("{EVNT}TWsPointer::ProcessEvent Event send to this window %U", reinterpret_cast<TUint32>(iCurrentWindow)); |
|
870 RDebug::Printf("{EVNT}TWsPointer::ProcessEvent EventType %d and Event State %d ", eventType, iState); |
|
871 #endif |
864 // update state |
872 // update state |
865 switch(eventType) |
873 switch(eventType) |
866 { |
874 { |
867 case TPointerEvent::EButton1Down: |
875 case TPointerEvent::EButton1Down: |
868 if (iGrabWindow==NULL && iCurrentWindow->HasPointerGrab()) |
876 if (iGrabWindow==NULL && iCurrentWindow->HasPointerGrab()) |
1010 */ |
1018 */ |
1011 void TWsPointer::ProcessOutOfRangeEvent(TWsEvent& aEvent,const CWsWindowGroup* aForceInGroup, TBool aNatural) |
1019 void TWsPointer::ProcessOutOfRangeEvent(TWsEvent& aEvent,const CWsWindowGroup* aForceInGroup, TBool aNatural) |
1012 { |
1020 { |
1013 if (iState != EPointerStateOutOfRange) |
1021 if (iState != EPointerStateOutOfRange) |
1014 { |
1022 { |
|
1023 #ifdef LOG_WSERV_EVENTS |
|
1024 RDebug::Printf("{EVNT}TWsPointer::ProcessOutOfRangeEvent Pointer Number = %d, iState =%d ", iNumber, iState); |
|
1025 #endif |
|
1026 |
1015 // OutOfRange event generated by driver doesn't contain correct coordinates, |
1027 // OutOfRange event generated by driver doesn't contain correct coordinates, |
1016 // we update them from last state in order to deliver event to the proper window. |
1028 // we update them from last state in order to deliver event to the proper window. |
1017 SendEnterExitEvent(EEventPointerExit); |
1029 SendEnterExitEvent(EEventPointerExit); |
1018 |
1030 |
1019 iState = EPointerStateOutOfRange; |
1031 iState = EPointerStateOutOfRange; |
1397 { |
1409 { |
1398 iPreviousPrimaryPointer = iPrimaryPointer; |
1410 iPreviousPrimaryPointer = iPrimaryPointer; |
1399 |
1411 |
1400 TRawEvent::TType type=aRawEvent.Type(); |
1412 TRawEvent::TType type=aRawEvent.Type(); |
1401 TInt pointerNumber = aRawEvent.PointerNumber(); |
1413 TInt pointerNumber = aRawEvent.PointerNumber(); |
1402 |
1414 |
|
1415 #ifdef LOG_WSERV_EVENTS |
|
1416 RDebug::Printf("{EVNT}TWsPointer::UpdatePrimaryPointer Current Primary pointer = %d",iPrimaryPointer); |
|
1417 RDebug::Printf("{EVNT}TWsPointer::UpdatePrimaryPointer Pointer Number= %d State = %x XY(%d,%d)",iPointers[0].iNumber,iPointers[0].iState,iPointers[0].iPos.iX,iPointers[0].iPos.iY); |
|
1418 RDebug::Printf("{EVNT}TWsPointer::UpdatePrimaryPointer Pointer Number= %d State = %x XY(%d,%d)",iPointers[1].iNumber,iPointers[1].iState,iPointers[1].iPos.iX,iPointers[1].iPos.iY); |
|
1419 #endif |
|
1420 |
1403 // If primary pointer is out of range, then the first pointer that will |
1421 // If primary pointer is out of range, then the first pointer that will |
1404 // start being detected (come back in range) will become primary. |
1422 // start being detected (come back in range) will become primary. |
1405 if (iPointers[iPrimaryPointer].iState == EPointerStateOutOfRange) |
1423 if (iPointers[iPrimaryPointer].iState == EPointerStateOutOfRange) |
1406 { |
1424 { |
1407 if (type != TRawEvent::EPointer3DOutOfRange && iPointers[pointerNumber].iState == EPointerStateOutOfRange) |
1425 if (type != TRawEvent::EPointer3DOutOfRange && iPointers[pointerNumber].iState == EPointerStateOutOfRange) |
1408 { |
1426 { |
1409 iPrimaryPointer = pointerNumber; |
1427 iPrimaryPointer = pointerNumber; |
|
1428 #ifdef LOG_WSERV_EVENTS |
|
1429 RDebug::Printf("{EVNT}TWsPointer::UpdatePrimaryPointer New Primary pointer(case OutRange) = %d",iPrimaryPointer); |
|
1430 #endif |
1410 } |
1431 } |
1411 return; |
1432 return; |
1412 } |
1433 } |
1413 |
1434 |
1414 // if non-primary pointer sends EButton1Down event, and actual primary pointer |
1435 // if non-primary pointer sends EButton1Down event, and actual primary pointer |
1415 // is not down, then the pointer which has sent EButton1Down becomes primary. |
1436 // is not down, then the pointer which has sent EButton1Down becomes primary. |
1416 if (type == TRawEvent::EButton1Down && |
1437 if (type == TRawEvent::EButton1Down && |
1417 iPointers[iPrimaryPointer].iState != EPointerStateDown) |
1438 iPointers[iPrimaryPointer].iState != EPointerStateDown) |
1418 { |
1439 { |
1419 iPrimaryPointer = pointerNumber; |
1440 iPrimaryPointer = pointerNumber; |
|
1441 #ifdef LOG_WSERV_EVENTS |
|
1442 RDebug::Printf("{EVNT}TWsPointer::UpdatePrimaryPointer New Primary pointer(case ButtonDown) = %d",iPrimaryPointer); |
|
1443 #endif |
1420 return; |
1444 return; |
1421 } |
1445 } |
1422 } |
1446 } |
1423 |
1447 |
1424 /** Sets Z coordinate threshold values for TPointerEvent::EEnterCloseProximity |
1448 /** Sets Z coordinate threshold values for TPointerEvent::EEnterCloseProximity |