void KexiRelationsTableFieldList::slotDropped(QDropEvent *ev) { Q3ListViewItem *recever = itemAt(ev->pos() - QPoint(0, contentsY())); if (!recever || !KexiFieldDrag::canDecodeSingle(ev)) { ev->ignore(); return; } QString sourceMimeType; QString srcTable; QString srcField; if (!KexiFieldDrag::decodeSingle(ev, sourceMimeType, srcTable, srcField)) return; if (sourceMimeType != "kexi/table" && sourceMimeType == "kexi/query") return; // kDebug() << "KexiRelationsTableFieldList::slotDropped() srcfield: " << srcField; QString rcvField = recever->text(0); SourceConnection s; s.masterTable = srcTable; s.detailsTable = schema()->name(); s.masterField = srcField; s.detailsField = rcvField; m_scrollArea->addConnection(s); kDebug() << "KexiRelationsTableFieldList::slotDropped() " << srcTable << ":" << srcField << " " << schema()->name() << ":" << rcvField; ev->accept(); }
void FingerList::mousePressEvent(QMouseEvent *e) { int col = e->x() / ICONCHORD; #if QT_VERSION < 300 int row = (e->y() + yOffset()) / ICONCHORD; #else int row = (e->y() + contentsY ()) / ICONCHORD; #endif int n = row * perRow + col; if ((n >= 0) && (n < num)) { curSel = row * perRow + col; #if QT_VERSION < 300 repaint(oldCol * ICONCHORD, oldRow * ICONCHORD - yOffset(), ICONCHORD, ICONCHORD); repaint(col * ICONCHORD, row * ICONCHORD - yOffset(), ICONCHORD, ICONCHORD); #else repaintCell(oldRow, oldCol); repaintCell(row, col); #endif oldCol = col; oldRow = row; emit chordSelected(appl[curSel].f); } }
void HistoryView::messageReceived(ICQMessage *msg) { if (msg->getUin() != m_nUin) return; if (msg->Id >= MSG_PROCESS_ID) return; int x = contentsX(); int y = contentsY(); bool bUnread = false; ICQUser *u = pClient->getUser(m_nUin); if (u){ for (list<unsigned long>::iterator it = u->unreadMsgs.begin(); it != u->unreadMsgs.end(); it++){ if ((*it) == msg->Id){ bUnread = true; break; } } } if (bBack){ QString saveText = text(); setText(""); addMessage(msg, bUnread, false); y += contentsHeight(); setText(text() + saveText); }else{ addMessage(msg, bUnread, false); } setContentsPos(x, y); }
void MsgView::addMessage(ICQMessage *msg, bool bUnread, bool bSet) { if (msg->Id >= MSG_PROCESS_ID) return; int x = contentsX(); int y = contentsY(); QString s(makeMessage(msg, bUnread)); if (bSet) curAnchor = QString::number(msg->getUin()) + "." + QString::number(msg->Id); unsigned long foreColor = 0; unsigned long backColor = 0; if (!pMain->UseOwnColors() && (msg->Type() == ICQ_MSGxMSG)){ ICQMsg *m = static_cast<ICQMsg*>(msg); foreColor = m->ForeColor(); backColor = m->BackColor(); } if (bBack){ setText(s + text(), curAnchor); if (foreColor != backColor) setMsgBgColor(msg->getUin(), msg->Id, backColor, 0); }else{ int n = paragraphs(); if (n > 0) n--; append(s); if (foreColor != backColor) setMsgBgColor(msg->getUin(), msg->Id, backColor, n); } if (bSet){ scrollToBottom(); }else{ setContentsPos(x, y); } }
// this is called from the clicked PatternWidget when in signal mode // void PolicyViewClass::endAddTransition(PatternWidgetClass* patternWidget) { // if addTransition mode is on, finish it and add the signal // if (isAddTransitionMode()) { viewport()->setMouseTracking(false); addTransitionMode = false; bool ok = false; QString message = QInputDialog::getText(tr( "Add Transition" ), tr( "Transition name:" ), QLineEdit::Normal, QString::null, &ok, this ); if ( ok && !message.isEmpty() ) { QString target = patternWidget->getPatternName(); if (document.addTransition(pickedPattern, message, target)) updateContents(contentsX(), contentsY(), contentsWidth(), contentsHeight()); else QMessageBox::warning(this, "Add Transition", "Transition " + message + " allready exists.\n" + "No transition added."); } } }
bool PageView::readDown() { if( atBottom() ) return false; else { // Coordinate of the bottom of the viewport int bottom = contentsY() + visibleHeight(); DocumentWidget* widget = 0; // Find the widget(s) that intersect the bottom of the viewport // TODO: It would be better to use a binary search. for(Q_UINT16 i=0; i<widgetList->size(); i++) { widget = widgetList->at(i); if (childY(widget) < bottom && childY(widget) + widget->height() > bottom) { // Draw scrollguide widget->drawScrollGuide(bottom - childY(widget)); } } int newValue = QMIN( verticalScrollBar()->value() + (int)(height() * 0.9), verticalScrollBar()->maxValue() ); verticalScrollBar()->setValue( newValue ); return true; } }
void CardView::contentsMouseReleaseEvent( QMouseEvent *e ) { Q3ScrollView::contentsMouseReleaseEvent( e ); if ( d->mResizeAnchor && d->mSpan ) { unsetCursor(); // hide rubber bands int newiw = d->mItemWidth - ((d->mResizeAnchor - d->mRubberBandAnchor) / d->mSpan); drawRubberBands( 0 ); // we should move to reflect the new position if we are scrolled. if ( contentsX() ) { int newX = qMax( 0, ( d->mPressed * ( newiw + d->mColspace + d->mSepWidth ) ) - e->x() ); setContentsPos( newX, contentsY() ); } // set new item width setItemWidth( newiw ); // reset anchors d->mResizeAnchor = 0; d->mRubberBandAnchor = 0; return; } // If there are accel keys, we will not emit signals if ( (e->modifiers() & Qt::ShiftModifier) || (e->modifiers() & Qt::ControlModifier) ) return; // Get the item at this position CardViewItem *item = itemAt( e->pos() ); if ( item && KGlobalSettings::singleClick() ) emit executed( item ); }
bool PageView::readUp() { if( atTop() ) return false; else { // Coordinate of the top of the viewport int top = contentsY(); DocumentWidget* widget = 0; // Find the widget(s) that intersect the top of the viewport // TODO: It would be better to use a binary search. for(Q_UINT16 i=0; i<widgetList->size(); i++) { widget = widgetList->at(i); if (childY(widget) < top && childY(widget) + widget->height() > top) { // Draw scrollguide widget->drawScrollGuide(top - childY(widget)); } } int newValue = QMAX( verticalScrollBar()->value() - (int)(height() * 0.9), verticalScrollBar()->minValue() ); verticalScrollBar()->setValue( newValue ); return true; } }
void QVFbView::viewportPaintEvent( QPaintEvent *pe ) { QRect r( pe->rect() ); r.moveBy( contentsX(), contentsY() ); r = QRect(int(r.x()/zm),int(r.y()/zm), int(r.width()/zm)+1,int(r.height()/zm)+1); setDirty(r); drawScreen(); }
void RosegardenScrollView::slotScrollVertSmallSteps(int vpos) { QScrollBar* vbar = verticalScrollBar(); // RG_DEBUG << "RosegardenCanvasView::slotScrollVertSmallSteps - Start: vpos is " << vpos << ", contentsY is " << contentsY() << ", visibleHeight is " << visibleHeight() << endl; // As a special case (or hack), ignore any request made before we've // actually been rendered and sized if (visibleHeight() <= 1) return ; int diff = 0; if (vpos == 0) { // returning to zero vbar->setValue(0); } else if ((diff = int(vpos - (contentsY() + visibleHeight() * 0.90))) > 0) { // moving off up int delta = diff / 6; int diff10 = std::min(diff, (int)m_minDeltaScroll); delta = std::max(delta, diff10); vbar->setValue(vbar->value() + diff); } else if ((diff = int(vpos - (contentsY() + visibleHeight() * 0.10))) < 0) { // moving off down int delta = -diff / 6; int diff10 = std::min( -diff, (int)m_minDeltaScroll); delta = std::max(delta, diff10); vbar->setValue(vbar->value() - delta); } }
void ScrollView::updateContents(const IntRect& updateRect, bool now) { // we need to convert coordinates to scrolled position wxRect contentsRect = updateRect; contentsRect.Offset(-contentsX(), -contentsY()); wxWindow* win = nativeWindow(); if (win) { win->RefreshRect(contentsRect, true); if (now) win->Update(); } }
int KexiRelationsTableFieldList::globalY(const QString &item) { Q3ListViewItem *i = findItem(item, 0); if (!i) return -1; int y = itemRect(i).y() + (itemRect(i).height() / 2); if (contentsY() > itemPos(i)) y = 0; else if (y == 0) y = height(); return mapToGlobal(QPoint(0, y)).y(); }
int Q3ScrollView::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = Q3Frame::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 23) qt_static_metacall(this, _c, _id, _a); _id -= 23; } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty) { void *_v = _a[0]; switch (_id) { case 0: *reinterpret_cast< ResizePolicy*>(_v) = resizePolicy(); break; case 1: *reinterpret_cast< ScrollBarMode*>(_v) = vScrollBarMode(); break; case 2: *reinterpret_cast< ScrollBarMode*>(_v) = hScrollBarMode(); break; case 3: *reinterpret_cast< int*>(_v) = visibleWidth(); break; case 4: *reinterpret_cast< int*>(_v) = visibleHeight(); break; case 5: *reinterpret_cast< int*>(_v) = contentsWidth(); break; case 6: *reinterpret_cast< int*>(_v) = contentsHeight(); break; case 7: *reinterpret_cast< int*>(_v) = contentsX(); break; case 8: *reinterpret_cast< int*>(_v) = contentsY(); break; case 9: *reinterpret_cast< bool*>(_v) = dragAutoScroll(); break; } _id -= 10; } else if (_c == QMetaObject::WriteProperty) { void *_v = _a[0]; switch (_id) { case 0: setResizePolicy(*reinterpret_cast< ResizePolicy*>(_v)); break; case 1: setVScrollBarMode(*reinterpret_cast< ScrollBarMode*>(_v)); break; case 2: setHScrollBarMode(*reinterpret_cast< ScrollBarMode*>(_v)); break; case 9: setDragAutoScroll(*reinterpret_cast< bool*>(_v)); break; } _id -= 10; } else if (_c == QMetaObject::ResetProperty) { _id -= 10; } else if (_c == QMetaObject::QueryPropertyDesignable) { _id -= 10; } else if (_c == QMetaObject::QueryPropertyScriptable) { _id -= 10; } else if (_c == QMetaObject::QueryPropertyStored) { _id -= 10; } else if (_c == QMetaObject::QueryPropertyEditable) { _id -= 10; } else if (_c == QMetaObject::QueryPropertyUser) { _id -= 10; } #endif // QT_NO_PROPERTIES return _id; }
MouseRelatedEvent::MouseRelatedEvent(const AtomicString& eventType, bool canBubble, bool cancelable, PassRefPtr<AbstractView> viewArg, int detail, int screenX, int screenY, int pageX, int pageY, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, bool isSimulated) : UIEventWithKeyState(eventType, canBubble, cancelable, viewArg, detail, ctrlKey, altKey, shiftKey, metaKey) , m_screenX(screenX) , m_screenY(screenY) , m_clientX(pageX - contentsX(view())) , m_clientY(pageY - contentsY(view())) , m_pageX(pageX) , m_pageY(pageY) , m_isSimulated(isSimulated) { initCoordinates(); }
void PageView::moveViewportToWidget(QWidget* widget, int y) { int verticalPos = 0; int verticalPosTop = 0; if (y != 0) { verticalPosTop = childY(widget) + y - visibleHeight()/2; verticalPos = childY(widget) + y; } else { verticalPos = childY(widget) - distanceBetweenWidgets; verticalPosTop = verticalPos; } if (nrCols == 1) { // In single column viewmodes, we change the vertical position only, to make it // easier to work with high zoomlevels where not the whole pagewidth is visible. // TODO: Smarter algorithm also for continuous facing viewmode. int top = (int)(contentsY() + 0.1 * visibleHeight()); int bottom = (int)(contentsY() + 0.9 * visibleHeight()); // Move the viewport if the target is currently not visible, or lies at the edge // of the viewport. If y = 0 always move the top of the targetpage to the top edge // of the viewport. if (verticalPos < top || verticalPos > bottom || y == 0) { setContentsPos(contentsX(), verticalPosTop); } } else { setContentsPos(childX(widget) - distanceBetweenWidgets, verticalPosTop); } }
void FingerList::mousePressEvent(QMouseEvent *e) { int col = columnAt(e->x()); int row = rowAt(e->y() + contentsY()); int n = row * perRow + col; if ((n >= 0) && (n < num)) { curSel = row * perRow + col; repaintCell(oldRow, oldCol); repaintCell(row, col); oldCol = col; oldRow = row; emit chordSelected(appl[curSel].f); } }
void MouseRelatedEvent::initCoordinates(int clientX, int clientY) { // Set up initial values for coordinates. // Correct values can't be computed until we have at target, so receivedTarget // does the "real" computation. m_clientX = clientX; m_clientY = clientY; m_pageX = clientX + contentsX(view()); m_pageY = clientY + contentsY(view()); m_layerX = m_pageX; m_layerY = m_pageY; m_offsetX = m_pageX; m_offsetY = m_pageY; computePageLocation(); }
Touch::Touch(Frame* frame, EventTarget* target, unsigned identifier, int screenX, int screenY, int pageX, int pageY, int radiusX, int radiusY, float rotationAngle, float force) : m_target(target) , m_identifier(identifier) , m_clientX(pageX - contentsX(frame)) , m_clientY(pageY - contentsY(frame)) , m_screenX(screenX) , m_screenY(screenY) , m_pageX(pageX) , m_pageY(pageY) , m_radiusX(radiusX) , m_radiusY(radiusY) , m_rotationAngle(rotationAngle) , m_force(force) { float scaleFactor = frame->pageZoomFactor() * frame->frameScaleFactor(); m_absoluteLocation = LayoutPoint(pageX * scaleFactor, pageY * scaleFactor); }
void ThumbnailList::updateWidgets() { // find all widgets that intersects the viewport and update them QRect viewportRect( contentsX(), contentsY(), visibleWidth(), visibleHeight() ); QValueList<ThumbnailWidget *>::iterator vIt = m_visibleThumbnails.begin(), vEnd = m_visibleThumbnails.end(); for ( ; vIt != vEnd; ++vIt ) { ThumbnailWidget * t = *vIt; QRect widgetRect( childX( t ), childY( t ), t->width(), t->height() ); // update only the exposed area of the widget (saves pixels..) QRect relativeRect = viewportRect.intersect( widgetRect ); if ( !relativeRect.isValid() ) continue; relativeRect.moveBy( -widgetRect.left(), -widgetRect.top() ); t->update( relativeRect ); } }
void RosegardenScrollView::resizeContents(int w, int h) // Code lifted from Q3ScrollView { int ow = m_vwidth; int oh = m_vheight; m_vwidth = w; m_vheight = h; // d->scrollbar_timer.start(0, true); // This was necessary until I fixed the resizeEvent connection //### CJ - Don't think this is necessary - slightly confused as we're resizing the content, not the widget // if (d->children.isEmpty() && d->policy == Default) // setResizePolicy(Manual); if (ow > w) { // Swap int t=w; w=ow; ow=t; } // Refresh area ow..w if (ow < visibleWidth() && w >= 0) { if (ow < 0) ow = 0; if (w > visibleWidth()) w = visibleWidth(); this->viewport()->update(contentsX()+ow, 0, w-ow, visibleHeight()); } if (oh > h) { // Swap int t=h; h=oh; oh=t; } // Refresh area oh..h if (oh < visibleHeight() && h >= 0) { if (oh < 0) oh = 0; if (h > visibleHeight()) h = visibleHeight(); this->viewport()->update(0, contentsY()+oh, visibleWidth(), h-oh); } }
void RosegardenScrollView::slotScrollHoriz(int hpos) { QScrollBar* hbar = getMainHorizontalScrollBar(); int currentContentYPos = contentsY(); /* Lots of performance hitting debug RG_DEBUG << "RosegardenScrollView::slotScrollHoriz: hpos is " << hpos << ", contentsX is " << contentsX() << ", visibleWidth is " << visibleWidth() << endl; */ if (hpos == 0) { // returning to zero // hbar->setValue(0); setContentsPos(0, currentContentYPos); //@@@ // possible replacement: ?? //this->widget()->move( 0, currentContentYPos ) } else if (hpos > (contentsX() + visibleWidth() * 1.6) || hpos < (contentsX() - visibleWidth() * 0.7)) { // miles off one side or the other // hbar->setValue(hpos - int(visibleWidth() * 0.4)); setContentsPos(hpos - int(visibleWidth() * 0.4), currentContentYPos); } else if (hpos > (contentsX() + visibleWidth() * 0.9)) { // moving off the right hand side of the view // hbar->setValue(hbar->value() + int(visibleWidth() * 0.6)); setContentsPos(hbar->value() + int(visibleWidth() * 0.6), currentContentYPos); } else if (hpos < (contentsX() + visibleWidth() * 0.1)) { // moving off the left // hbar->setValue(hbar->value() - int(visibleWidth() * 0.6)); setContentsPos(hbar->value() - int(visibleWidth() * 0.6), currentContentYPos); } }
void UIMachineViewScale::sltHandleNotifyUpdate(int iX, int iY, int iW, int iH) { /* Initialize variables for scale mode: */ QSize scaledSize = frameBuffer()->scaledSize(); double xRatio = (double)scaledSize.width() / frameBuffer()->width(); double yRatio = (double)scaledSize.height() / frameBuffer()->height(); AssertMsg(contentsX() == 0, ("This can't be, else notify Dsen!\n")); AssertMsg(contentsY() == 0, ("This can't be, else notify Dsen!\n")); /* Update corresponding viewport part, * But make sure we update always a bigger rectangle than requested to * catch all rounding errors. (use 1 time the ratio factor and * round down on top/left, but round up for the width/height) */ viewport()->update((int)(iX * xRatio) - ((int)xRatio) - 1, (int)(iY * yRatio) - ((int)yRatio) - 1, (int)(iW * xRatio) + ((int)xRatio + 2) * 2, (int)(iH * yRatio) + ((int)yRatio + 2) * 2); }
void MsgView::colorsChanged() { int x = contentsX(); int y = contentsY(); char FONT_SEND[] = "<##FontSend##>"; char FONT_RECEIVE[] = "<##FontReceive##>"; QString t = text(); QString c; c.sprintf(FONT_FORMAT, oldSendColor); t.replace(QRegExp(c), FONT_SEND); c.sprintf(FONT_FORMAT, oldReceiveColor); t.replace(QRegExp(c), FONT_RECEIVE); c.sprintf(FONT_FORMAT, pMain->ColorSend()); t.replace(QRegExp(FONT_SEND), c); c.sprintf(FONT_FORMAT, pMain->ColorReceive()); t.replace(QRegExp(FONT_RECEIVE), c); setText(t); setContentsPos(x, y); }
void QtFileIconView::newDirectory() { setAutoArrange( FALSE ); selectAll( FALSE ); if ( viewDir.mkdir( QString( "New Folder %1" ).arg( ++newFolderNum ) ) ) { QFileInfo *fi = new QFileInfo( viewDir, QString( "New Folder %1" ).arg( newFolderNum ) ); QtFileIconViewItem *item = new QtFileIconViewItem( this, new QFileInfo( *fi ) ); item->setKey( QString( "000000%1" ).arg( fi->fileName() ) ); delete fi; repaintContents( contentsX(), contentsY(), contentsWidth(), contentsHeight(), FALSE ); ensureItemVisible( item ); item->setSelected( TRUE, TRUE ); setCurrentItem( item ); repaintItem( item ); qApp->processEvents(); item->rename(); } setAutoArrange( TRUE ); }
void ContactListView::paintEmptyArea( QPainter * p, const QRect & rect ) { QBrush b = palette().brush(QPalette::Active, QPalette::Base); // Get the brush, which will have the background pixmap if there is one. if (!b.texture().isNull()) { p->drawTiledPixmap( rect.left(), rect.top(), rect.width(), rect.height(), b.texture(), rect.left() + contentsX(), rect.top() + contentsY() ); } else { // Do a normal paint K3ListView::paintEmptyArea(p, rect); } }
void QVFbView::drawScreen() { QPainter p( viewport() ); p.translate( -contentsX(), -contentsY() ); lock(); QRect r( hdr->update ); hdr->dirty = FALSE; hdr->update = QRect(); // qDebug( "update %d, %d, %dx%d", r.y(), r.x(), r.width(), r.height() ); r = r.intersect( QRect(0, 0, hdr->width, hdr->height ) ); if ( !r.isEmpty() ) { if ( int(zm) != zm ) { r.rLeft() = int(int(r.left()*zm)/zm); r.rTop() = int(int(r.top()*zm)/zm); r.rRight() = int(int(r.right()*zm+zm+0.0000001)/zm+1.9999); r.rBottom() = int(int(r.bottom()*zm+zm+0.0000001)/zm+1.9999); r.rRight() = QMIN(r.right(),hdr->width-1); r.rBottom() = QMIN(r.bottom(),hdr->height-1); } int leading; QImage img( getBuffer( r, leading ) ); QPixmap pm; if ( zm == 1 ) { pm.convertFromImage( img ); } else if ( int(zm) == zm ) { QWMatrix m; m.scale(zm,zm); pm.convertFromImage( img ); pm = pm.xForm(m); } else { pm.convertFromImage( img.smoothScale(int(img.width()*zm),int(img.height()*zm)) ); } unlock(); p.setPen( black ); p.setBrush( white ); p.drawPixmap( int(r.x()*zm), int(r.y()*zm), pm, int(leading*zm), 0, pm.width(), pm.height() ); } else { unlock(); } }
void RosegardenScrollView::updateContents(int x, int y, int w, int h) // Code lifted from Q3ScrollView { if (!isVisible() || !updatesEnabled()) return; // RG_DEBUG << "RosegardenScrollView::updateContents" << endl; QWidget* vp = viewport(); // Translate x -= contentsX(); y -= contentsY(); if (x < 0) { w += x; x = 0; } if (y < 0) { h += y; y = 0; } if (w < 0 || h < 0) return; if (x > visibleWidth() || y > visibleHeight()) return; if (w > visibleWidth()) w = visibleWidth(); if (h > visibleHeight()) h = visibleHeight(); //### CJ - I don't think we used a clipped_viewport on Q3ScrollView //if (d->clipped_viewport) { //// Translate clipper() to viewport() //x -= d->clipped_viewport->x(); //y -= d->clipped_viewport->y(); //} vp->update(x, y, w, h); updateScrollBars(); }
int KexiRelationsTableFieldList::globalY(const QString &item) { QAbstractItemModel *themodel = model(); QModelIndex idx; for (int i = 0; i < themodel->rowCount(); ++i) { idx = themodel->index(i, 0); QVariant data = themodel->data(idx); if (data.toString() == item) { break; } } if (idx.isValid()) { QRect r = this->rectForIndex(idx); int y = r.y() + r.height()/2; //Not sure what this line is supposed to do...is it to check if the item is visible? if (visualRect(idx).y() > viewport()->height()) { y = 0; } else if (y == 0) { y = height(); } return mapToGlobal(QPoint(0, y)).y(); } return -1; #if 0 QModelIndexList list = themodel->match() Q3ListViewItem *i = findItem(item, 0); if (!i) return -1; int y = itemRect(i).y() + (itemRect(i).height() / 2); if (contentsY() > itemPos(i)) y = 0; else if (y == 0) y = height(); return mapToGlobal(QPoint(0, y)).y(); #endif }
bool KexiRelationsTableFieldList::acceptDrag(QDropEvent *ev) const { // kDebug() << "KexiRelationsTableFieldList::acceptDrag()"; Q3ListViewItem *receiver = itemAt(ev->pos() - QPoint(0, contentsY())); if (!receiver || !KexiFieldDrag::canDecodeSingle(ev)) return false; QString sourceMimeType; QString srcTable; QString srcField; if (!KexiFieldDrag::decodeSingle(ev, sourceMimeType, srcTable, srcField)) return false; if (sourceMimeType != "kexi/table" && sourceMimeType == "kexi/query") return false; QString f = receiver->text(0).trimmed(); if (!srcField.trimmed().startsWith("*") && !f.startsWith("*") && ev->source() != (QWidget*)this) return true; return false; }
Touch::Touch(Frame* frame, EventTarget* target, unsigned identifier, int screenX, int screenY, int pageX, int pageY, int radiusX, int radiusY, float rotationAngle, float force) : m_target(target) , m_identifier(identifier) , m_clientX(pageX - contentsX(frame)) , m_clientY(pageY - contentsY(frame)) , m_screenX(screenX) , m_screenY(screenY) , m_pageX(pageX) , m_pageY(pageY) , m_radiusX(radiusX) , m_radiusY(radiusY) , m_rotationAngle(rotationAngle) , m_force(force) { ScriptWrappable::init(this); float scaleFactor = frame->pageZoomFactor(); float x = pageX * scaleFactor; float y = pageY * scaleFactor; m_absoluteLocation = roundedLayoutPoint(FloatPoint(x, y)); }