JSValue jsTouchScreenX(ExecState* exec, JSValue slotBase, const Identifier&) { JSTouch* castedThis = static_cast<JSTouch*>(asObject(slotBase)); UNUSED_PARAM(exec); Touch* imp = static_cast<Touch*>(castedThis->impl()); JSValue result = jsNumber(imp->screenX()); return result; }
void PluginView::handleTouchEvent(TouchEvent* event) { if (!m_private) return; if (!m_private->m_isFocused) focusPluginElement(); NPTouchEvent npTouchEvent; if (event->isDoubleTap()) npTouchEvent.type = TOUCH_EVENT_DOUBLETAP; else if (event->isTouchHold()) npTouchEvent.type = TOUCH_EVENT_TOUCHHOLD; else if (event->type() == eventNames().touchcancelEvent) npTouchEvent.type = TOUCH_EVENT_CANCEL; else return; TouchList* touchList; // The touches list is empty if in a touch end event. // Since DoubleTap is ususally a TouchEnd Use changedTouches instead. if (npTouchEvent.type == TOUCH_EVENT_DOUBLETAP) touchList = event->changedTouches(); else touchList = event->touches(); npTouchEvent.points = 0; npTouchEvent.size = touchList->length(); OwnArrayPtr<NPTouchPoint> touchPoints; if (touchList->length()) { touchPoints = adoptArrayPtr(new NPTouchPoint[touchList->length()]); npTouchEvent.points = touchPoints.get(); for (unsigned i = 0; i < touchList->length(); i++) { Touch* touchItem = touchList->item(i); touchPoints[i].touchId = touchItem->identifier(); touchPoints[i].clientX = touchItem->pageX() - frameRect().x(); touchPoints[i].clientY = touchItem->pageY() - frameRect().y(); touchPoints[i].screenX = touchItem->screenX(); touchPoints[i].screenY = touchItem->screenY(); touchPoints[i].pageX = touchItem->pageX(); touchPoints[i].pageY = touchItem->pageY(); } } NPEvent npEvent; npEvent.type = NP_TouchEvent; npEvent.data = &npTouchEvent; if (dispatchNPEvent(npEvent)) event->setDefaultHandled(); }