summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2018-07-04 15:28:24 +0300
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2018-07-04 13:08:00 +0000
commit6ae1a53376e933edf9e7778e6f71e660d1396682 (patch)
treed831350fa799769e06755abbc55e096d0fe9095b
parent34256277da7f9b48b0818846c1a1417bd8e72814 (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>
-rw-r--r--src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp13
-rw-r--r--src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/TreeHeaderView.cpp6
-rw-r--r--src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/TreeHeaderView.h6
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