//grabMouse();
m_zoom = 1.0;
setBackgroundBrush(QBrush(Qt::transparent));
+ m_fontSize = 0;
}
void GraphicsSceneRectMove::setSelectedItem(QGraphicsItem *item)
void GraphicsSceneRectMove::keyPressEvent(QKeyEvent * keyEvent)
{
- if (m_selectedItem == NULL) {
+ if (m_selectedItem == NULL || !(m_selectedItem->flags() & QGraphicsItem::ItemIsMovable)) {
QGraphicsScene::keyPressEvent(keyEvent);
return;
}
break;
}
}
- if (item == NULL) {
+ if (item == NULL || !(item->flags() & QGraphicsItem::ItemIsSelectable)) {
if (m_selectedItem && m_selectedItem->type() == 8) {
// disable text editing
QGraphicsTextItem *t = static_cast<QGraphicsTextItem *>(m_selectedItem);
}
}
}
- if (item != NULL) {
+ if (item != NULL && item->flags() & QGraphicsItem::ItemIsMovable) {
m_sceneClickPoint = e->scenePos();
m_selectedItem = item;
kDebug() << "///////// ITEM TYPE: " << item->type();
emit newText((QGraphicsTextItem *) m_selectedItem);
m_selectedItem->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
((QGraphicsTextItem *)m_selectedItem)->setTextInteractionFlags(Qt::TextEditorInteraction);
- m_selectedItem->setPos(e->scenePos());
+ m_selectedItem->setPos(e->scenePos() - QPointF(0, (int)(m_fontSize/2)));
QGraphicsScene::mousePressEvent(e);
}
}
if (m_selectedItem->type() == 3 && m_resizeMode != NoResize) {
QGraphicsRectItem *gi = (QGraphicsRectItem*)m_selectedItem;
+ // Resize using aspect ratio
+ if (!m_selectedItem->data(0).isNull()) {
+ // we want to keep aspect ratio
+ double hRatio = (double) newrect.width() / m_selectedItem->data(0).toInt();
+ double vRatio = (double) newrect.height() / m_selectedItem->data(1).toInt();
+ if (hRatio < vRatio) newrect.setHeight(m_selectedItem->data(1).toInt() * hRatio);
+ else newrect.setWidth(m_selectedItem->data(0).toInt() * vRatio);
+ }
+
gi->setRect(newrect);
}
/*else {
}
QGraphicsScene::mouseMoveEvent(e);
} else if (m_tool == TITLE_RECTANGLE && e->buttons() & Qt::LeftButton) {
- if (m_selectedItem == NULL && (m_clickPoint - e->screenPos()).manhattanLength() >= QApplication::startDragDistance()) {
+ if (m_selectedItem == NULL) {
// create new rect item
- m_selectedItem = addRect(0, 0, e->scenePos().x() - m_sceneClickPoint.x(), e->scenePos().y() - m_sceneClickPoint.y());
+ QRectF r(0, 0, e->scenePos().x() - m_sceneClickPoint.x(), e->scenePos().y() - m_sceneClickPoint.y());
+ r = r.normalized();
+ m_selectedItem = addRect(QRectF(0, 0, r.width(), r.height()));
emit newRect((QGraphicsRectItem *) m_selectedItem);
m_selectedItem->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
m_selectedItem->setPos(m_sceneClickPoint);
void GraphicsSceneRectMove::wheelEvent(QGraphicsSceneWheelEvent * wheelEvent)
{
- QList<QGraphicsView*> viewlist = views();
- //kDebug() << wheelEvent->delta() << " " << zoom;
- if (viewlist.size() > 0) {
- if (wheelEvent->delta() < 0) emit sceneZoom(true);
- else emit sceneZoom(false);
- }
+ if (wheelEvent->modifiers() == Qt::ControlModifier) {
+ QList<QGraphicsView*> viewlist = views();
+ //kDebug() << wheelEvent->delta() << " " << zoom;
+ if (viewlist.size() > 0) {
+ if (wheelEvent->delta() > 0) emit sceneZoom(true);
+ else emit sceneZoom(false);
+ }
+ } else wheelEvent->setAccepted(false);
}
void GraphicsSceneRectMove::setScale(double s)
else if (angle > 112.5 && angle <= 157.5)
setCursor(Qt::SizeBDiagCursor);
}
+
+void GraphicsSceneRectMove::slotUpdateFontSize(int s)
+{
+ m_fontSize = s;
+}
+
+#include "graphicsscenerectmove.moc"