diff --git a/src/board/UBBoardView.cpp b/src/board/UBBoardView.cpp index daa8895b..4953c018 100644 --- a/src/board/UBBoardView.cpp +++ b/src/board/UBBoardView.cpp @@ -417,7 +417,7 @@ bool UBBoardView::itemShouldReceiveMousePressEvent(QGraphicsItem *item) return true; if (item == scene()->backgroundObject()) - return true; + return false; if (itemIsLocked(item)) return false; @@ -577,6 +577,19 @@ void UBBoardView::handleItemMousePress(QMouseEvent *event) { mLastPressedMousePos = mapToScene(event->pos()); + + if (movingItem && QGraphicsSvgItem::Type != movingItem->type() + && UBGraphicsDelegateFrame::Type != movingItem->type()) + { + foreach(QGraphicsItem *item, scene()->selectedItems()) + { + if (item != movingItem) + { + item->setSelected(false); + } + } + } + if (itemShouldReceiveMousePressEvent(movingItem)) QGraphicsView::mousePressEvent (event); else @@ -704,7 +717,9 @@ void UBBoardView::mousePressEvent (QMouseEvent *event) mMouseDownPos = event->pos (); - emit clickOnBoard(); + movingItem = scene()->itemAt(this->mapToScene(event->posF().toPoint())); + if (!movingItem) + emit clickOnBoard(); if (event->button () == Qt::LeftButton && isInteractive ()) { @@ -732,8 +747,6 @@ void UBBoardView::mousePressEvent (QMouseEvent *event) } else if (currentTool == UBStylusTool::Selector || currentTool == UBStylusTool::Play) { - movingItem = scene()->itemAt(this->mapToScene(event->posF().toPoint())); - connect(&mLongPressTimer, SIGNAL(timeout()), this, SLOT(longPressEvent())); if (!movingItem && !mController->cacheIsVisible()) mLongPressTimer.start(); @@ -998,6 +1011,7 @@ UBBoardView::mouseReleaseEvent (QMouseEvent *event) UBDrawingController::drawingController ()->setStylusTool (UBStylusTool::Selector); textItem->setSelected (true); + textItem->setFocus(); } else { diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index 07ea3d97..738409ab 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -1593,12 +1593,14 @@ UBGraphicsTextItem* UBGraphicsScene::textForObjectName(const QString& pString, c if(!textItem){ textItem = addTextWithFont(pString,QPointF(0,0) ,72,UBSettings::settings()->fontFamily(),true,false); textItem->setObjectName(objectName); + QSizeF size = textItem->size(); + textItem->setPos(QPointF(-size.width()/2.0,-size.height()/2.0)); } textItem->setPlainText(pString); textItem->adjustSize(); - QSizeF size = textItem->size(); - textItem->setPos(QPointF(-size.width()/2.0,-size.height()/2.0)); + textItem->clearFocus(); + textItem->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard); return textItem; }