diff options
author | Mahmoud Badri <mahmoud.badri@qt.io> | 2019-03-15 11:14:33 +0200 |
---|---|---|
committer | Mahmoud Badri <mahmoud.badri@qt.io> | 2019-03-15 10:08:24 +0000 |
commit | c1ed66019370abcf59dfb122410edb069393bdaa (patch) | |
tree | 739a8e6393a8ba866f54066ab723f43e548b1e0b | |
parent | 23e5839cd7b351c48618b213fd0f48f08166c25c (diff) |
Fix a 'select master slide' crash related to variants
Change-Id: I248f49df0993f61a1ffe8e38e27264dd8d5554cb
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
-rw-r--r-- | src/Authoring/Studio/Palettes/Slide/SlideView.cpp | 13 | ||||
-rw-r--r-- | src/Authoring/Studio/Palettes/Slide/SlideView.h | 20 |
2 files changed, 15 insertions, 18 deletions
diff --git a/src/Authoring/Studio/Palettes/Slide/SlideView.cpp b/src/Authoring/Studio/Palettes/Slide/SlideView.cpp index ba8dd5d5..5a966a47 100644 --- a/src/Authoring/Studio/Palettes/Slide/SlideView.cpp +++ b/src/Authoring/Studio/Palettes/Slide/SlideView.cpp @@ -67,7 +67,8 @@ SlideView::SlideView(QWidget *parent) : QQuickWidget(parent) m_variantRefreshTimer.setInterval(0); connect(&m_variantRefreshTimer, &QTimer::timeout, [this]() { m_SlidesModel->refreshVariants(); - m_MasterSlideModel->refreshVariants(m_SlidesModel->variantsModel()); + m_MasterSlideModel->refreshVariants(m_SlidesModel->variantsModel(), + m_SlidesModel->variantsModelKeys()); }); } @@ -549,27 +550,27 @@ void SlideView::rebuildSlideList(const qt3dsdm::Qt3DSDMSlideHandle &inActiveSlid } } -CDoc *SlideView::GetDoc() +CDoc *SlideView::GetDoc() const { return g_StudioApp.GetCore()->GetDoc(); } -CClientDataModelBridge *SlideView::GetBridge() +CClientDataModelBridge *SlideView::GetBridge() const { return GetDoc()->GetStudioSystem()->GetClientDataModelBridge(); } -qt3dsdm::ISlideSystem *SlideView::GetSlideSystem() +qt3dsdm::ISlideSystem *SlideView::GetSlideSystem() const { return GetDoc()->GetStudioSystem()->GetSlideSystem(); } -long SlideView::GetSlideIndex(const qt3dsdm::Qt3DSDMSlideHandle &inSlideHandle) +long SlideView::GetSlideIndex(const qt3dsdm::Qt3DSDMSlideHandle &inSlideHandle) const { return GetSlideSystem()->GetSlideIndex(inSlideHandle); } -bool SlideView::isMaster(const qt3dsdm::Qt3DSDMSlideHandle &inSlideHandle) +bool SlideView::isMaster(const qt3dsdm::Qt3DSDMSlideHandle &inSlideHandle) const { return (0 == GetSlideIndex(inSlideHandle)); } diff --git a/src/Authoring/Studio/Palettes/Slide/SlideView.h b/src/Authoring/Studio/Palettes/Slide/SlideView.h index aa0a880f..4a15e3a1 100644 --- a/src/Authoring/Studio/Palettes/Slide/SlideView.h +++ b/src/Authoring/Studio/Palettes/Slide/SlideView.h @@ -32,16 +32,13 @@ #include <QtQuickWidgets/qquickwidget.h> #include <QtCore/qtimer.h> -#include "DispatchListeners.h" #include "SlideModel.h" -#include "DataInputSelectView.h" -#include "Qt3DSDMHandles.h" #include "Qt3DSDMSignals.h" #include "DispatchListeners.h" -#include "Dispatch.h" class CClientDataModelBridge; class CDoc; +class DataInputSelectView; QT_FORWARD_DECLARE_CLASS(QLabel); @@ -54,6 +51,7 @@ class SlideView : public QQuickWidget, public IDataModelListener { Q_OBJECT + Q_PROPERTY(QAbstractItemModel *currentModel READ currentModel NOTIFY currentModelChanged FINAL) Q_PROPERTY(bool showMasterSlide READ showMasterSlide WRITE setShowMasterSlide NOTIFY showMasterSlideChanged FINAL) Q_PROPERTY(bool controlled MEMBER m_controlled NOTIFY controlledChanged) @@ -121,11 +119,11 @@ private: void initialize(); void clearSlideList(); void setActiveSlide(const qt3dsdm::Qt3DSDMSlideHandle &inActiveSlideHandle); - inline CDoc *GetDoc(); - inline CClientDataModelBridge *GetBridge(); - inline qt3dsdm::ISlideSystem *GetSlideSystem(); - long GetSlideIndex(const qt3dsdm::Qt3DSDMSlideHandle &inSlideHandle); - bool isMaster(const qt3dsdm::Qt3DSDMSlideHandle &inSlideHandle); + inline CDoc *GetDoc() const; + inline CClientDataModelBridge *GetBridge() const; + inline qt3dsdm::ISlideSystem *GetSlideSystem() const; + long GetSlideIndex(const qt3dsdm::Qt3DSDMSlideHandle &inSlideHandle) const; + bool isMaster(const qt3dsdm::Qt3DSDMSlideHandle &inSlideHandle) const; void rebuildSlideList(const qt3dsdm::Qt3DSDMSlideHandle &inActiveSlideHandle); void onAssetCreated(qt3dsdm::Qt3DSDMInstanceHandle inInstance); void onAssetDeleted(qt3dsdm::Qt3DSDMInstanceHandle inInstance); @@ -137,13 +135,11 @@ private: SlideModel *m_CurrentModel = nullptr; DataInputSelectView *m_dataInputSelector = nullptr; QLabel *m_variantsToolTip = nullptr; - QColor m_BaseColor = QColor::fromRgb(75, 75, 75); std::vector<std::shared_ptr<qt3dsdm::ISignalConnection>> m_Connections; - typedef QHash<int, int> TIntIntMap; // We need to remember which slide we were on when we entered the master slide. // Then, when the users leave the master slide we can go back to roughly the same // state. - TIntIntMap m_MasterSlideReturnPointers; + QHash<int, int> m_MasterSlideReturnPointers; // the object containing the slides to be inspected. qt3dsdm::Qt3DSDMInstanceHandle m_ActiveRoot = 0; |