From bd0ced234dda49e7090d1471efc8b157af79ad1b Mon Sep 17 00:00:00 2001 From: Anatoly Mihalchenko Date: Thu, 13 Oct 2011 12:52:43 +0300 Subject: [PATCH 1/2] SANKORE-139 fix mouse scroll for active wight on scene --- src/board/UBBoardView.cpp | 3 ++- src/domain/UBGraphicsItemDelegate.cpp | 13 +++++++++++++ src/domain/UBGraphicsItemDelegate.h | 1 + src/domain/UBGraphicsProxyWidget.cpp | 7 ++++++- src/domain/UBGraphicsProxyWidget.h | 2 ++ 5 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/board/UBBoardView.cpp b/src/board/UBBoardView.cpp index b8411b0a..8e9139bc 100644 --- a/src/board/UBBoardView.cpp +++ b/src/board/UBBoardView.cpp @@ -641,7 +641,8 @@ UBBoardView::wheelEvent (QWheelEvent *event) // Too many wheelEvent are sent, how should we handle them to "smoothly" zoom ? // something like zoom( pow(zoomFactor, event->delta() / 120) ) } - event->accept (); +// event->accept (); + QGraphicsView::wheelEvent(event); } void diff --git a/src/domain/UBGraphicsItemDelegate.cpp b/src/domain/UBGraphicsItemDelegate.cpp index 612527f2..5f2d24ad 100644 --- a/src/domain/UBGraphicsItemDelegate.cpp +++ b/src/domain/UBGraphicsItemDelegate.cpp @@ -191,6 +191,19 @@ bool UBGraphicsItemDelegate::mouseMoveEvent(QGraphicsSceneMouseEvent *event) return false; } +bool UBGraphicsItemDelegate::weelEvent(QGraphicsSceneWheelEvent *event) +{ + if( mDelegated->isSelected() ) + { + event->accept(); + return true; + } + else + { + event->ignore(); + return false; + } +} bool UBGraphicsItemDelegate::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { diff --git a/src/domain/UBGraphicsItemDelegate.h b/src/domain/UBGraphicsItemDelegate.h index 04f4574f..fcab9f8d 100644 --- a/src/domain/UBGraphicsItemDelegate.h +++ b/src/domain/UBGraphicsItemDelegate.h @@ -102,6 +102,7 @@ class UBGraphicsItemDelegate : public QObject virtual bool mousePressEvent(QGraphicsSceneMouseEvent *event); virtual bool mouseMoveEvent(QGraphicsSceneMouseEvent *event); virtual bool mouseReleaseEvent(QGraphicsSceneMouseEvent *event); + virtual bool weelEvent(QGraphicsSceneWheelEvent *event); virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value); diff --git a/src/domain/UBGraphicsProxyWidget.cpp b/src/domain/UBGraphicsProxyWidget.cpp index 8b8e3d9b..f3b3cc10 100644 --- a/src/domain/UBGraphicsProxyWidget.cpp +++ b/src/domain/UBGraphicsProxyWidget.cpp @@ -99,10 +99,15 @@ void UBGraphicsProxyWidget::mouseMoveEvent(QGraphicsSceneMouseEvent *event) void UBGraphicsProxyWidget::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { mDelegate->mouseReleaseEvent(event); - QGraphicsProxyWidget::mouseReleaseEvent(event); } +void UBGraphicsProxyWidget::wheelEvent(QGraphicsSceneWheelEvent *event) +{ + if( mDelegate->weelEvent(event) ) + QGraphicsProxyWidget::wheelEvent(event); +} + void UBGraphicsProxyWidget::setDelegate(UBGraphicsItemDelegate* pDelegate) { diff --git a/src/domain/UBGraphicsProxyWidget.h b/src/domain/UBGraphicsProxyWidget.h index 13de05fb..a7dc5de7 100644 --- a/src/domain/UBGraphicsProxyWidget.h +++ b/src/domain/UBGraphicsProxyWidget.h @@ -48,6 +48,8 @@ class UBGraphicsProxyWidget: public QGraphicsProxyWidget, public UBItem, public virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); + virtual void wheelEvent(QGraphicsSceneWheelEvent *event); + virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value); From 3d0a2bb954efb84f83c84640c47dc41203410d9d Mon Sep 17 00:00:00 2001 From: Anatoly Mihalchenko Date: Thu, 13 Oct 2011 12:59:06 +0300 Subject: [PATCH 2/2] SANKORE-139 minor comment update --- src/board/UBBoardView.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/board/UBBoardView.cpp b/src/board/UBBoardView.cpp index 8e9139bc..372eba7e 100644 --- a/src/board/UBBoardView.cpp +++ b/src/board/UBBoardView.cpp @@ -640,6 +640,9 @@ UBBoardView::wheelEvent (QWheelEvent *event) { // Too many wheelEvent are sent, how should we handle them to "smoothly" zoom ? // something like zoom( pow(zoomFactor, event->delta() / 120) ) + // use DateTime man, store last event time, and if if less than 300ms than this is one big scroll + // and move scroll with one const speed. + // so, you no will related with scroll event count } // event->accept (); QGraphicsView::wheelEvent(event);