]> git.sesse.net Git - kdenlive/blobdiff - src/onmonitoritems/onmonitorcornersitem.cpp
Merge branch 'master' into buildsystem
[kdenlive] / src / onmonitoritems / onmonitorcornersitem.cpp
index f37512b85b581c37c658f2e7ce89c902b70cebb9..f2dfb1311d816303091be61cdd121f99a4e6db2c 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;
@@ -158,7 +163,7 @@ void OnMonitorCornersItem::paint(QPainter* painter, const QStyleOptionGraphicsIt
     if (polygon().count() != 4)
         return;
 
-    double baseSize = 1 / painter->matrix().m11();
+    double baseSize = 1 / painter->worldTransform().m11();
     painter->setRenderHint(QPainter::Antialiasing);
     painter->setBrush(QBrush(isEnabled() ? Qt::yellow : Qt::red));
     double handleSize = 4  * baseSize;
@@ -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"