X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmonitorscene.cpp;h=e6be3de10188933da55b54a6b60c13e3dd682076;hb=56aee6aedeeed3efd10ada8fe3c229eddc01ef05;hp=08d6ee5ba87d8e6183cf7e636962a5021514c209;hpb=aca39cbba2ef55a7bc7f1b2f9ce9a32460dd883b;p=kdenlive diff --git a/src/monitorscene.cpp b/src/monitorscene.cpp index 08d6ee5b..e6be3de1 100644 --- a/src/monitorscene.cpp +++ b/src/monitorscene.cpp @@ -27,6 +27,7 @@ #include #include #include +#include MonitorScene::MonitorScene(Render *renderer, QObject* parent) : @@ -64,9 +65,20 @@ MonitorScene::MonitorScene(Render *renderer, QObject* parent) : connect(m_renderer, SIGNAL(frameUpdated(QImage)), this, SLOT(slotSetBackgroundImage(QImage))); } +void MonitorScene::centerView() +{ + if (m_view) m_view->centerOn(m_frameBorder); +} + +void MonitorScene::cleanup() +{ + // Reset scene rect + setSceneRect(m_frameBorder->boundingRect()); +} + void MonitorScene::setUp() { - if (views().count() > 0) { + if (!views().isEmpty()) { m_view = views().at(0); m_view->setViewportUpdateMode(QGraphicsView::FullViewportUpdate); } else { @@ -142,11 +154,22 @@ void MonitorScene::slotZoomIn(int by) void MonitorScene::mousePressEvent(QGraphicsSceneMouseEvent* event) { + QList selected = selectedItems(); + QGraphicsScene::mousePressEvent(event); + if (selected.count() < selectedItems().count()) { + // mouse click on item not in selection group + // -> select only this item + foreach (QGraphicsItem *item, selected) { + if (item) + item->setSelected(false); + } + } + if (event->isAccepted() && selectedItems().count() > 1) { // multiple items selected + mouse pressed on an item - QList selected = selectedItems(); + selected = selectedItems(); foreach (QGraphicsItem *item, selected) { if (qgraphicsitem_cast(item)) { // works with rotoscoping only for now @@ -222,7 +245,7 @@ void MonitorScene::mouseReleaseEvent(QGraphicsSceneMouseEvent* event) } void MonitorScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event) { - Q_UNUSED(event); + Q_UNUSED(event) if (!m_enabled) emit addKeyframe(); @@ -231,12 +254,23 @@ void MonitorScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event) void MonitorScene::wheelEvent(QGraphicsSceneWheelEvent* event) { if (event->modifiers() == Qt::ControlModifier) { - if (event->delta() > 0) + if (event->delta() > 0) { + m_view->setTransformationAnchor(QGraphicsView::AnchorUnderMouse); slotZoomIn(5); - else + m_view->setTransformationAnchor(QGraphicsView::AnchorViewCenter); + } else { slotZoomOut(5); + } } else { - QGraphicsScene::wheelEvent(event); + QAbstractSlider::SliderAction action; + if (event->delta() > 0) + action = QAbstractSlider::SliderSingleStepSub; + else + action = QAbstractSlider::SliderSingleStepAdd; + if (event->orientation() == Qt::Horizontal) + m_view->horizontalScrollBar()->triggerAction(action); + else + m_view->verticalScrollBar()->triggerAction(action); } event->accept();