]> git.sesse.net Git - kdenlive/blobdiff - src/kis_curve_widget.cpp
Remember render settings for project (zone, guides,...):
[kdenlive] / src / kis_curve_widget.cpp
index 6b0656ee191967af9dd0539bc3660c3d83466f73..228373c019df5e286ddd84fb7c2f212e70c34968 100644 (file)
@@ -74,14 +74,14 @@ KisCurveWidget::KisCurveWidget(QWidget *parent, Qt::WFlags f)
 
     d->m_intIn = NULL;
     d->m_intOut = NULL;
-    
+
     d->m_maxPoints = -1;
 
     setMouseTracking(true);
     setAutoFillBackground(false);
     setAttribute(Qt::WA_OpaquePaintEvent);
     setMinimumSize(150, 150);
-    setMaximumSize(250, 250);
+    setMaximumSize(350, 350);
 
     d->setCurveModified();
 
@@ -202,7 +202,7 @@ void KisCurveWidget::keyPressEvent(QKeyEvent *e)
         }
         d->setCurveModified();
     } else if (e->key() == Qt::Key_Escape && d->state() != ST_NORMAL) {
-        d->m_curve.setPoint(d->m_grab_point_index, QPointF(d->m_grabOriginalX, d->m_grabOriginalY) );
+        d->m_curve.setPoint(d->m_grab_point_index, QPointF(d->m_grabOriginalX, d->m_grabOriginalY));
         setCursor(Qt::ArrowCursor);
         d->setState(ST_NORMAL);
 
@@ -270,6 +270,10 @@ void KisCurveWidget::paintEvent(QPaintEvent *)
     if (cfg.antialiasCurves())
         p.setRenderHint(QPainter::Antialiasing);*/
 
+    // Draw default line
+    p.setPen(QPen(Qt::gray, 1, Qt::SolidLine));
+    p.drawLine(QLineF(0, wHeight, wWidth, 0));
+
     // Draw curve.
     double prevY = wHeight - d->m_curve.value(0.) * wHeight;
     double prevX = 0.;
@@ -320,15 +324,23 @@ void KisCurveWidget::mousePressEvent(QMouseEvent * e)
 {
     if (d->m_readOnlyMode) return;
 
-    if (e->button() != Qt::LeftButton)
-        return;
-    
     double x = e->pos().x() / (double)(width() - 1);
     double y = 1.0 - e->pos().y() / (double)(height() - 1);
 
 
 
     int closest_point_index = d->nearestPointInRange(QPointF(x, y), width(), height());
+
+    if (e->button() == Qt::RightButton && closest_point_index > 0 && closest_point_index < d->m_curve.points().count() - 1) {
+        d->m_curve.removePoint(closest_point_index);
+        setCursor(Qt::ArrowCursor);
+        d->setState(ST_NORMAL);
+        if (closest_point_index < d->m_grab_point_index)
+            --d->m_grab_point_index;
+        d->setCurveModified();
+        return;
+    } else if (e->button() != Qt::LeftButton) return;
+
     if (closest_point_index < 0) {
         if (d->m_maxPoints > 0 && d->m_curve.points().count() >= d->m_maxPoints)
             return;