]> git.sesse.net Git - kdenlive/blobdiff - src/onmonitoritems/onmonitorcornersitem.cpp
Make it easier to edit rect and corners on the monitor by making the area around...
[kdenlive] / src / onmonitoritems / onmonitorcornersitem.cpp
index f37512b85b581c37c658f2e7ce89c902b70cebb9..754d9eeda14ccb4e90341ed4e0c480c79ff66bf8 100644 (file)
 #include <QPainter>
 #include <QStyleOptionGraphicsItem>
 #include <QCursor>
+#include <QGraphicsView>
 
 OnMonitorCornersItem::OnMonitorCornersItem(QGraphicsItem* parent) :
         QGraphicsPolygonItem(parent),
         m_selectedCorner(-1),
-        m_modified(false)
+        m_modified(false),
+        m_view(NULL)
 {
     setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
 
@@ -48,7 +50,10 @@ OnMonitorCornersItem::cornersActions OnMonitorCornersItem::getMode(QPointF pos,
         return NoAction;
 
     QPainterPath mouseArea;
-    mouseArea.addRect(pos.x() - 6, pos.y() - 6, 12, 12);
+    qreal size = 12;
+    if (getView())
+        size /= m_view->matrix().m11();
+    mouseArea.addRect(pos.x() - size / 2, pos.y() - size / 2, size, size);
     for (int i = 0; i < 4; ++i) {
         if (mouseArea.contains(polygon().at(i))) {
             *corner = i;
@@ -253,4 +258,17 @@ QList <QPointF> OnMonitorCornersItem::sortedClockwise()
     return points;
 }
 
+bool OnMonitorCornersItem::getView()
+{
+    if (m_view)
+        return true;
+
+    if (scene() && scene()->views().count()) {
+        m_view = scene()->views()[0];
+        return true;
+    } else {
+        return false;
+    }
+}
+
 #include "onmonitorcornersitem.moc"