From 79010714085c06ef8e4132c667e2ed6af36f4945 Mon Sep 17 00:00:00 2001 From: fourtf Date: Mon, 16 Jan 2017 17:20:48 +0100 Subject: [PATCH] added animation to NotebookPageDropPreview --- notebookpage.cpp | 6 ++++-- notebookpagedroppreview.cpp | 18 ++++++++++++++++++ notebookpagedroppreview.h | 6 ++++++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/notebookpage.cpp b/notebookpage.cpp index be903871..ecd7fe87 100644 --- a/notebookpage.cpp +++ b/notebookpage.cpp @@ -175,8 +175,10 @@ NotebookPage::setPreviewRect(QPoint mousePos) { for (DropRegion region : m_dropRegions) { if (region.rect.contains(mousePos)) { - m_preview.move(region.rect.x(), region.rect.y()); - m_preview.resize(region.rect.width(), region.rect.height()); + m_preview.setBounds(region.rect); + // m_preview.move(region.rect.x(), region.rect.y()); + // m_preview.resize(region.rect.width(), + // region.rect.height()); m_preview.show(); m_preview.raise(); diff --git a/notebookpagedroppreview.cpp b/notebookpagedroppreview.cpp index 80e9c9e7..1a0de033 100644 --- a/notebookpagedroppreview.cpp +++ b/notebookpagedroppreview.cpp @@ -4,6 +4,8 @@ NotebookPageDropPreview::NotebookPageDropPreview(QWidget *parent) : QWidget(parent) + , m_positionAnimation(this, "geometry") + , m_desiredGeometry() { setHidden(true); } @@ -16,3 +18,19 @@ NotebookPageDropPreview::paintEvent(QPaintEvent *) painter.fillRect(8, 8, width() - 17, height() - 17, ColorScheme::instance().DropPreviewBackground); } + +void +NotebookPageDropPreview::setBounds(const QRect &rect) +{ + if (rect == m_desiredGeometry) { + return; + } + + m_positionAnimation.stop(); + m_positionAnimation.setDuration(50); + m_positionAnimation.setStartValue(geometry()); + m_positionAnimation.setEndValue(rect); + m_positionAnimation.start(); + + m_desiredGeometry = rect; +} diff --git a/notebookpagedroppreview.h b/notebookpagedroppreview.h index 3446d218..9af71a11 100644 --- a/notebookpagedroppreview.h +++ b/notebookpagedroppreview.h @@ -1,6 +1,7 @@ #ifndef NOTEBOOKPAGEDROPPREVIEW_H #define NOTEBOOKPAGEDROPPREVIEW_H +#include #include class NotebookPageDropPreview : public QWidget @@ -8,8 +9,13 @@ class NotebookPageDropPreview : public QWidget public: NotebookPageDropPreview(QWidget *parent); + void setBounds(const QRect &rect); + protected: void paintEvent(QPaintEvent *); + + QPropertyAnimation m_positionAnimation; + QRect m_desiredGeometry; }; #endif // NOTEBOOKPAGEDROPPREVIEW_H