From 0fd15f62a472caec0025dd42424024a70f85f5bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fauconnier?= Date: Thu, 12 Oct 2017 14:36:07 +0200 Subject: [PATCH] workaround to adress badly attached thumbnail views (no more time to investigate on it...) + prevent overwriting scenes --- src/board/UBBoardController.cpp | 14 ++++++++++++-- src/document/UBDocumentContainer.cpp | 2 +- src/document/UBDocumentContainer.h | 1 + src/gui/UBBoardThumbnailsView.cpp | 17 +++++++++++++++-- src/gui/UBBoardThumbnailsView.h | 1 + 5 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index 1a5cc5a9..db428252 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -1536,11 +1536,11 @@ void UBBoardController::setActiveDocumentScene(UBDocumentProxy* pDocumentProxy, ClearUndoStack(); + persistCurrentScene(); //previous scene + mActiveScene = targetScene; mActiveSceneIndex = index; - persistCurrentScene(); - setDocument(pDocumentProxy, forceReload); updateSystemScaleFactor(); @@ -1556,6 +1556,8 @@ void UBBoardController::setActiveDocumentScene(UBDocumentProxy* pDocumentProxy, adjustDisplayViews(); + persistCurrentScene(); //new scene + UBSettings::settings()->setDarkBackground(mActiveScene->isDarkBackground()); UBSettings::settings()->setPageBackground(mActiveScene->pageBackground()); @@ -1567,10 +1569,18 @@ void UBBoardController::setActiveDocumentScene(UBDocumentProxy* pDocumentProxy, updateBackgroundActionsState(mActiveScene->isDarkBackground(), mActiveScene->pageBackground()); if(documentChange) + { UBGraphicsTextItem::lastUsedTextColor = QColor(); + emit initThumbnailRequired(this); + } if (sceneChange) + { emit activeSceneChanged(); + //should not be necessary, but if not called, sometimes, some views are not "connected" the first time the document is loaded + //this is a workaround to adress unexpectedly badly attached thumbnail views (no more time to investigate on it...) + emit reloadThumbnailRequired(this, mActiveSceneIndex); + } } diff --git a/src/document/UBDocumentContainer.cpp b/src/document/UBDocumentContainer.cpp index f6551cc0..3584edbb 100644 --- a/src/document/UBDocumentContainer.cpp +++ b/src/document/UBDocumentContainer.cpp @@ -92,7 +92,7 @@ void UBDocumentContainer::deletePages(QList& pageIndexes) offset++; } - + emit documentThumbnailsUpdated(this); } void UBDocumentContainer::addPage(int index) diff --git a/src/document/UBDocumentContainer.h b/src/document/UBDocumentContainer.h index a15d455f..49262cd6 100644 --- a/src/document/UBDocumentContainer.h +++ b/src/document/UBDocumentContainer.h @@ -80,6 +80,7 @@ class UBDocumentContainer : public QObject void addThumbnailRequired(UBDocumentContainer* source, int index); void removeThumbnailRequired(int index); void moveThumbnailRequired(int from, int to); + void reloadThumbnailRequired(UBDocumentContainer* source, int index); void documentThumbnailsUpdated(UBDocumentContainer* source); }; diff --git a/src/gui/UBBoardThumbnailsView.cpp b/src/gui/UBBoardThumbnailsView.cpp index 8840e45f..06e8093b 100644 --- a/src/gui/UBBoardThumbnailsView.cpp +++ b/src/gui/UBBoardThumbnailsView.cpp @@ -78,6 +78,7 @@ UBBoardThumbnailsView::UBBoardThumbnailsView(QWidget *parent, const char *name) connect(UBApplication::boardController, SIGNAL(addThumbnailRequired(UBDocumentContainer*, int)), this, SLOT(addThumbnail(UBDocumentContainer*, int)), Qt::UniqueConnection); connect(UBApplication::boardController, SIGNAL(moveThumbnailRequired(int, int)), this, SLOT(moveThumbnail(int, int)), Qt::UniqueConnection); connect(this, SIGNAL(moveThumbnailRequired(int, int)), this, SLOT(moveThumbnail(int, int)), Qt::UniqueConnection); + connect(UBApplication::boardController, SIGNAL(reloadThumbnailRequired(UBDocumentContainer*, int)), this, SLOT(reloadThumbnail(UBDocumentContainer*, int)), Qt::UniqueConnection); connect(UBApplication::boardController, SIGNAL(removeThumbnailRequired(int)), this, SLOT(removeThumbnail(int)), Qt::UniqueConnection); connect(&mLongPressTimer, SIGNAL(timeout()), this, SLOT(longPressTimeout()), Qt::UniqueConnection); @@ -94,6 +95,13 @@ void UBBoardThumbnailsView::moveThumbnail(int from, int to) updateThumbnailsPos(); } +void UBBoardThumbnailsView::reloadThumbnail(UBDocumentContainer* source, int index) +{ + removeThumbnail(index); + + addThumbnail(source, index); +} + void UBBoardThumbnailsView::removeThumbnail(int i) { UBDraggableThumbnailView* item = mThumbnails.at(i); @@ -127,7 +135,12 @@ void UBBoardThumbnailsView::addThumbnail(UBDocumentContainer* source, int i) void UBBoardThumbnailsView::clearThumbnails() { - qDeleteAll(mThumbnails); + for(int i = 0; i < mThumbnails.size(); i++) + { + scene()->removeItem(mThumbnails.at(i)->pageNumber()); + scene()->removeItem(mThumbnails.at(i)); + mThumbnails.at(i)->deleteLater(); + } mThumbnails.clear(); } @@ -211,7 +224,7 @@ void UBBoardThumbnailsView::mousePressAndHoldEvent(QPoint pos) drag->setHotSpot(QPoint(pixmap.width()/2, pixmap.height()/2)); drag->exec(); - } + } } void UBBoardThumbnailsView::mouseReleaseEvent(QMouseEvent *event) diff --git a/src/gui/UBBoardThumbnailsView.h b/src/gui/UBBoardThumbnailsView.h index 77a3b0ba..3820e4d5 100644 --- a/src/gui/UBBoardThumbnailsView.h +++ b/src/gui/UBBoardThumbnailsView.h @@ -50,6 +50,7 @@ public slots: void clearThumbnails(); void initThumbnails(UBDocumentContainer* source); void addThumbnail(UBDocumentContainer* source, int i); + void reloadThumbnail(UBDocumentContainer* source, int i); void moveThumbnail(int from, int to); void removeThumbnail(int i);