Git commit 55af0d719fdd118da5fceecb25df5207f397baee by Jean-Baptiste Mardel= le. Committed on 11/12/2016 at 17:56. Pushed by mardelle into branch 'master'. Merge branch '16.12' M +34 -30 src/effectstack/graphicsscenerectmove.cpp M +1 -0 src/effectstack/graphicsscenerectmove.h M +31 -25 src/monitor/glwidget.cpp M +2 -0 src/monitor/glwidget.h M +12 -0 src/monitor/monitor.cpp M +2 -0 src/monitor/monitor.h https://commits.kde.org/kdenlive/55af0d719fdd118da5fceecb25df5207f397baee diff --cc src/effectstack/graphicsscenerectmove.cpp index f08a0363d,c5edb6f4a..d05eb5787 --- a/src/effectstack/graphicsscenerectmove.cpp +++ b/src/effectstack/graphicsscenerectmove.cpp @@@ -597,13 -576,10 +598,12 @@@ void GraphicsSceneRectMove::mouseDouble = void GraphicsSceneRectMove::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) { - if (m_tool =3D=3D TITLE_RECTANGLE && m_selectedItem) setSelectedItem(= m_selectedItem); + if (m_tool =3D=3D TITLE_RECTANGLE && m_selectedItem) { + setSelectedItem(m_selectedItem); + } - QGraphicsScene::mouseReleaseEvent(e); if (m_createdText) { m_selectedItem->setSelected(true); - MyTextItem *newText =3D static_cast(m_selectedItem); + MyTextItem *newText =3D static_cast(m_selectedItem); QTextCursor cur(newText->document()); cur.select(QTextCursor::Document); newText->setTextCursor(cur); @@@ -619,15 -604,28 +628,28 @@@ void GraphicsSceneRectMove::mousePressE m_moveStarted =3D false; m_clickPoint =3D e->scenePos(); m_resizeMode =3D m_possibleAction; - const QList list =3D items(e->scenePos()); - QGraphicsItem *item =3D NULL; + const QList list =3D items(e->scenePos()); + QGraphicsItem *item =3D Q_NULLPTR; - if (e->modifiers() !=3D Qt::ControlModifier) { - clearSelection(); - } - = if (m_tool =3D=3D TITLE_SELECT) { - foreach (QGraphicsItem *g, list) { - //qCDebug(KDENLIVE_LOG) << " - - CHECKING ITEM Z:" << g->zVal= ue() << ", TYPE: " << g->type(); + QList viewlist =3D views(); + if (e->modifiers() & Qt::ControlModifier) { + m_selectedItem =3D NULL; + clearSelection(); + if (!viewlist.isEmpty()) { + viewlist.first()->setDragMode(QGraphicsView::ScrollHandDr= ag); + e->ignore(); + //QGraphicsScene::mousePressEvent(e); + return; + } + } else { + if (!viewlist.isEmpty()) { + viewlist.first()->setRubberBandSelectionMode(Qt::Intersec= tsItemShape); + } + } + QList selected =3D selectedItems(); + bool alreadySelected =3D false; + foreach(QGraphicsItem *g, list) { + //qDebug() << " - - CHECKING ITEM Z:" << g->zValue() << ", TY= PE: " << g->type(); // check is there is a selected item in list if (!(g->flags() & QGraphicsItem::ItemIsSelectable)) { continue; @@@ -638,29 -637,12 +661,12 @@@ break; } } - if (item =3D=3D Q_NULLPTR || m_selectedItem !=3D item) { - if (m_selectedItem && m_selectedItem->type() =3D=3D QGraphics= TextItem::Type) { - // disable text editing - MyTextItem *t =3D static_cast(m_selectedIte= m); - t->textCursor().setPosition(0); - QTextBlock cur =3D t->textCursor().block(); - t->setTextCursor(QTextCursor(cur)); - t->setTextInteractionFlags(Qt::NoTextInteraction); - } - } - if (item =3D=3D Q_NULLPTR || !(item->flags() & QGraphicsItem::It= emIsSelectable)) { - m_selectedItem =3D Q_NULLPTR; - foreach (QGraphicsItem *g, list) { - if (g->zValue() > -1000) { - item =3D g; - break; - } - } - } - if (item !=3D Q_NULLPTR && item->flags() & QGraphicsItem::ItemIsM= ovable) { - if (item =3D=3D NULL || (e->modifiers() !=3D Qt::ShiftModifier &&= !alreadySelected)) { ++ if (item =3D=3D Q_NULLPTR || (e->modifiers() !=3D Qt::ShiftModifi= er && !alreadySelected)) { + clearTextSelection(); + } else if (item && item->flags() & QGraphicsItem::ItemIsMovable) { m_sceneClickPoint =3D e->scenePos(); m_selectedItem =3D item; - //qDebug() << "///////// ITEM TYPE: " << item->type(); + //qCDebug(KDENLIVE_LOG) << "///////// ITEM TYPE: " << item->= type(); if (item->type() =3D=3D QGraphicsTextItem::Type) { MyTextItem *t =3D static_cast(item); if (t->textInteractionFlags() =3D=3D Qt::TextEditorIntera= ction) { @@@ -723,8 -704,7 +729,7 @@@ m_selectedItem->setSelected(true); m_createdText =3D true; } - //qDebug() << "////// MOUSE CLICK, RESIZE MODE: " << m_resizeMode; + //qCDebug(KDENLIVE_LOG) << "////// MOUSE CLICK, RESIZE MODE: " << m_= resizeMode; - = } = void GraphicsSceneRectMove::clearTextSelection() diff --cc src/monitor/glwidget.cpp index 9c5ee73c2,a42e7d189..b00ea6b28 --- a/src/monitor/glwidget.cpp +++ b/src/monitor/glwidget.cpp @@@ -567,14 -569,12 +567,11 @@@ void GLWidget::wheelEvent(QWheelEvent * event->accept(); } = - -void GLWidget::mousePressEvent(QMouseEvent* event) +void GLWidget::mousePressEvent(QMouseEvent *event) { - QQuickView::mousePressEvent(event); - if (event->isAccepted()) { - return; - } - if (rootObject() && rootObject()->objectName() !=3D QLatin1String("ro= ot")) { + if (rootObject() && rootObject()->objectName() !=3D QLatin1String("ro= ot") && !(event->modifiers() & Qt::ControlModifier)) { event->ignore(); + QQuickView::mousePressEvent(event); return; } if (event->button() & Qt::LeftButton) { @@@ -583,35 -591,37 +588,37 @@@ emit showContextMenu(event->globalPos()); event->accept(); } + QQuickView::mousePressEvent(event); } = -void GLWidget::mouseMoveEvent(QMouseEvent* event) +void GLWidget::mouseMoveEvent(QMouseEvent *event) { - QQuickView::mouseMoveEvent(event); - if (event->isAccepted()) { - return; - } - if (rootObject() && rootObject()->objectName() !=3D QLatin1String("ro= ot")) { + if (rootObject() && rootObject()->objectName() !=3D QLatin1String("ro= ot") && !(event->modifiers() & Qt::ControlModifier)) { event->ignore(); + QQuickView::mouseMoveEvent(event); return; } - if (event->isAccepted()) { + /* if (event->modifiers() =3D=3D Qt::ShiftModifier && m_producer) { + emit seekTo(m_producer->get_length() * event->x() / width()); return; - } - /* if (event->modifiers() =3D=3D Qt::ShiftModifier && m_producer) { - emit seekTo(m_producer->get_length() * event->x() / width()); - return; - }*/ + }*/ if (!(event->buttons() & Qt::LeftButton)) { + QQuickView::mouseMoveEvent(event); return; } - if (!m_dragStart.isNull() && (event->pos() - m_dragStart).manhattanL= ength() >=3D QApplication::startDragDistance()) { + if (!m_dragStart.isNull() && (event->pos() - m_dragStart).manhattanLe= ngth() >=3D QApplication::startDragDistance()) { m_dragStart =3D QPoint(); emit startDrag(); } + if (!m_panStart.isNull()) { + emit panView(m_panStart - event->pos()); + m_panStart =3D event->pos(); + event->accept(); + } + QQuickView::mouseMoveEvent(event); } = -void GLWidget::keyPressEvent(QKeyEvent* event) +void GLWidget::keyPressEvent(QKeyEvent *event) { QQuickView::keyPressEvent(event); if (!event->isAccepted()) { @@@ -1143,28 -1129,25 +1150,27 @@@ void GLWidget::onFrameDisplayed(const S update(); } = -void GLWidget::mouseReleaseEvent(QMouseEvent * event) +void GLWidget::mouseReleaseEvent(QMouseEvent *event) { QQuickView::mouseReleaseEvent(event); - if (m_dragStart.isNull() || event->isAccepted()) { - // we are dragging - return; - } - if (rootObject() && rootObject()->objectName() !=3D QLatin1String("ro= ot")) { + if (m_dragStart.isNull() && m_panStart.isNull() && rootObject() && ro= otObject()->objectName() !=3D QLatin1String("root") && !(event->modifiers()= & Qt::ControlModifier)) { + event->ignore(); return; } - m_dragStart =3D QPoint(); - if (event->button() !=3D Qt::RightButton) { + if (m_dragStart.isNull() && m_panStart.isNull() && event->button() & = Qt::LeftButton) { emit monitorPlay(); } + m_dragStart =3D QPoint(); + m_panStart =3D QPoint(); + setCursor(Qt::ArrowCursor); } = -void GLWidget::mouseDoubleClickEvent(QMouseEvent * event) +void GLWidget::mouseDoubleClickEvent(QMouseEvent *event) { QQuickView::mouseDoubleClickEvent(event); - if (event->isAccepted()) return; + if (event->isAccepted()) { + return; + } if (!rootObject() || rootObject()->objectName() !=3D QLatin1String("r= ooteffectscene")) { emit switchFullScreen(); } diff --cc src/monitor/glwidget.h index 3477c44c7,d12500a57..52ecd88be --- a/src/monitor/glwidget.h +++ b/src/monitor/glwidget.h @@@ -155,11 -138,12 +156,12 @@@ private QRect m_rect; QRect m_effectRect; GLuint m_texture[3]; - QOpenGLShaderProgram* m_shader; + QOpenGLShaderProgram *m_shader; + QPoint m_panStart; QPoint m_dragStart; - Mlt::Filter* m_glslManager; - Mlt::Consumer* m_consumer; - Mlt::Producer* m_producer; + Mlt::Filter *m_glslManager; + Mlt::Consumer *m_consumer; + Mlt::Producer *m_producer; QSemaphore m_initSem; QSemaphore m_analyseSem; bool m_isInitialized; diff --cc src/monitor/monitor.cpp index dacf1eeeb,b556dbb35..17041a51d --- a/src/monitor/monitor.cpp +++ b/src/monitor/monitor.cpp @@@ -151,8 -160,9 +151,9 @@@ Monitor::Monitor(Kdenlive::MonitorId id glayout->setContentsMargins(0, 0, 0, 0); // Create QML OpenGL widget m_glMonitor =3D new GLWidget((int) id); - connect(m_glMonitor, SIGNAL(passKeyEvent(QKeyEvent*)), this, SLOT(doK= eyPressEvent(QKeyEvent*))); + connect(m_glMonitor, &GLWidget::passKeyEvent, this, &Monitor::doKeyPr= essEvent); + connect(m_glMonitor, &GLWidget::panView, this, &Monitor::panView); - m_videoWidget =3D QWidget::createWindowContainer(qobject_cast(m_glMonitor)); + m_videoWidget =3D QWidget::createWindowContainer(qobject_cast(m_glMonitor)); m_videoWidget->setAcceptDrops(true); QuickEventEater *leventEater =3D new QuickEventEater(this); m_videoWidget->installEventFilter(leventEater);