diff options
author | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2018-07-04 15:28:24 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2018-07-04 13:08:00 +0000 |
commit | 6ae1a53376e933edf9e7778e6f71e660d1396682 (patch) | |
tree | d831350fa799769e06755abbc55e096d0fe9095b | |
parent | 34256277da7f9b48b0818846c1a1417bd8e72814 (diff) |
Fix filter button positioning on timeline tree header
A couple of scrolling events occur in response to showing of the
timeline widget that need to be properly handled to get the filter
icons positioned correctly. Delay disabling of tree header scrolling
until presentation is shown.
Task-number: QT3DS-1980
Change-Id: Ie4fa0d4ce805d14ef0a5c62ad0f444b64ecf4267
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Jere Tuliniemi <jere.tuliniemi@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
3 files changed, 17 insertions, 8 deletions
diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp index 165631f6..6e61900f 100644 --- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp +++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp @@ -93,6 +93,8 @@ TimelineWidget::TimelineWidget(const QSize &preferredSize, QWidget *parent) , m_graphicsScene(new TimelineGraphicsScene(this)) , m_preferredSize(preferredSize) { + int treeWidth = CStudioPreferences::GetTimelineSplitterLocation(); + // Mahmoud_TODO: CTimelineTranslationManager should be eventually removed or cleaned. Already // most of its functionality is implemented in this class m_translationManager = new CTimelineTranslationManager(); @@ -108,13 +110,13 @@ TimelineWidget::TimelineWidget(const QSize &preferredSize, QWidget *parent) m_viewTreeHeader->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); m_viewTreeHeader->viewport()->installEventFilter(new Eventfilter(this)); m_viewTreeHeader->viewport()->setFocusPolicy(Qt::NoFocus); - m_viewTreeHeader->setFixedWidth(TimelineConstants::TREE_DEFAULT_W); + m_viewTreeHeader->setFixedWidth(treeWidth); m_viewTreeContent->setScene(m_graphicsScene); m_viewTreeContent->setAlignment(Qt::AlignLeft | Qt::AlignTop); m_viewTreeContent->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); m_viewTreeContent->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - m_viewTreeContent->setFixedWidth(TimelineConstants::TREE_DEFAULT_W); + m_viewTreeContent->setFixedWidth(treeWidth); m_viewTimelineHeader->setScene(m_graphicsScene); m_viewTimelineHeader->setFixedHeight(TimelineConstants::ROW_H); @@ -132,6 +134,8 @@ TimelineWidget::TimelineWidget(const QSize &preferredSize, QWidget *parent) m_viewTimelineContent->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); m_viewTimelineContent->setViewportUpdateMode(QGraphicsView::FullViewportUpdate); + setTreeWidth(treeWidth); + auto *layoutTree = new QVBoxLayout; layoutTree->setContentsMargins(QMargins(0, 0, 0, 0)); layoutTree->addWidget(m_viewTreeHeader); @@ -288,8 +292,6 @@ TimelineWidget::TimelineWidget(const QSize &preferredSize, QWidget *parent) m_asyncUpdateTimer.setInterval(0); m_asyncUpdateTimer.setSingleShot(true); connect(&m_asyncUpdateTimer, &QTimer::timeout, this, &TimelineWidget::onAsyncUpdate); - - setTreeWidth(CStudioPreferences::GetTimelineSplitterLocation()); } Q3DStudio::CString TimelineWidget::getPlaybackMode() @@ -323,6 +325,9 @@ QSize TimelineWidget::sizeHint() const void TimelineWidget::OnNewPresentation() { + // Disable scrolling of treeview now that all show related initial singnaling is behind us + m_viewTreeHeader->disableScrolling(); + // Register callbacks auto studioSystem = g_StudioApp.GetCore()->GetDoc()->GetStudioSystem(); qt3dsdm::IStudioFullSystemSignalProvider *theSignalProvider diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/TreeHeaderView.cpp b/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/TreeHeaderView.cpp index 241fe903..df784418 100644 --- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/TreeHeaderView.cpp +++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/TreeHeaderView.cpp @@ -35,12 +35,12 @@ TreeHeaderView::TreeHeaderView(QWidget *parent) void TreeHeaderView::scrollContentsBy(int dx, int dy) { - // Overridden to ignore scrolling + // Overridden to ignore scrolling after initial show related scrolling has been finished // // Longer explanation: When RowTreeLabelItem (QGraphicsTextItem) gets focus // for text editing, it forces views to scroll themselves so that editable // text item is always visible. But we don't want tree header view to move. // See QGraphicsTextItemPrivate::textControl() and _q_ensureVisible() - Q_UNUSED(dx); - Q_UNUSED(dy); + if (m_allowScrolling) + QGraphicsView::scrollContentsBy(dx, dy); } diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/TreeHeaderView.h b/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/TreeHeaderView.h index 62664ea6..7b648660 100644 --- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/TreeHeaderView.h +++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/TreeHeaderView.h @@ -37,9 +37,13 @@ class TreeHeaderView : public QGraphicsView public: TreeHeaderView(QWidget *parent = nullptr); + void disableScrolling() { m_allowScrolling = false; } + protected: - void scrollContentsBy(int dx, int dy) override; + void scrollContentsBy(int dx, int dy) override; +private: + bool m_allowScrolling = true; }; #endif // TREEHEADERVIEW_H |