void UBGraphicsMediaItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { if (Delegate()) { Delegate()->mousePressEvent(event); if (parentItem() && UBGraphicsGroupContainerItem::Type == parentItem()->type()) { UBGraphicsGroupContainerItem *group = qgraphicsitem_cast<UBGraphicsGroupContainerItem*>(parentItem()); if (group) { QGraphicsItem *curItem = group->getCurrentItem(); if (curItem && this != curItem) { group->deselectCurrentItem(); } group->setCurrentItem(this); this->setSelected(true); Delegate()->positionHandles(); } } } if (parentItem() && parentItem()->type() == UBGraphicsGroupContainerItem::Type) { mShouldMove = false; if (!Delegate()->mousePressEvent(event)) { event->accept(); } } else { mShouldMove = (event->buttons() & Qt::LeftButton); mMousePressPos = event->scenePos(); mMouseMovePos = mMousePressPos; event->accept(); setSelected(true); } }
void UBGraphicsTextItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { setTextInteractionFlags(Qt::TextEditorInteraction); // scene()->itemAt(pos) returns 0 if pos is not over text, but over text item, but mouse press comes. // It is a cludge... if (UBStylusTool::Play == UBDrawingController::drawingController()->stylusTool()) { QGraphicsTextItem::mousePressEvent(event); event->accept(); clearFocus(); return; } if (Delegate()) { Delegate()->mousePressEvent(event); if (Delegate() && parentItem() && UBGraphicsGroupContainerItem::Type == parentItem()->type()) { UBGraphicsGroupContainerItem *group = qgraphicsitem_cast<UBGraphicsGroupContainerItem*>(parentItem()); if (group) { QGraphicsItem *curItem = group->getCurrentItem(); if (curItem && this != curItem) { group->deselectCurrentItem(); } group->setCurrentItem(this); this->setSelected(true); Delegate()->positionHandles(); } } else { Delegate()->getToolBarItem()->show(); } } if (!data(UBGraphicsItemData::ItemEditable).toBool()) return; int elapsed = mLastMousePressTime.msecsTo(QTime::currentTime()); if (elapsed < UBApplication::app()->doubleClickInterval()) { mMultiClickState++; if (mMultiClickState > 3) mMultiClickState = 1; } else { mMultiClickState = 1; } mLastMousePressTime = QTime::currentTime(); if (mMultiClickState == 1) { QGraphicsTextItem::mousePressEvent(event); setFocus(); } else if (mMultiClickState == 2) { QTextCursor tc= textCursor(); tc.select(QTextCursor::WordUnderCursor); setTextCursor(tc); } else if (mMultiClickState == 3) { QTextCursor tc= textCursor(); tc.select(QTextCursor::Document); setTextCursor(tc); } else { mMultiClickState = 0; } }