diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2018-05-16 13:28:29 +0200 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2018-05-16 11:59:47 +0000 |
commit | b2a1c189e0114f310e33150d1900da0ea78c77fa (patch) | |
tree | 65082dcae5a128b534397c5294ae36201ac4ca38 /src/plugins/diffeditor | |
parent | 2dccf95e49aa70fa5281fbafa5d97a65f6e2821e (diff) |
DiffEditor: Keep horizontal scrollbar policy in sync
Task-number: QTCREATORBUG-14330
Change-Id: I4c45089f10a9b59cd1bc5b5368f14e0bb0738f22
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src/plugins/diffeditor')
-rw-r--r-- | src/plugins/diffeditor/sidebysidediffeditorwidget.cpp | 20 | ||||
-rw-r--r-- | src/plugins/diffeditor/sidebysidediffeditorwidget.h | 1 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp b/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp index 9d016400fb..f1e893cd1f 100644 --- a/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp +++ b/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp @@ -179,6 +179,7 @@ SideDiffEditorWidget::SideDiffEditorWidget(QWidget *parent) connect(documentLayout, &TextDocumentLayout::foldChanged, this, &SideDiffEditorWidget::foldChanged); setCodeFoldingSupported(true); + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn); } void SideDiffEditorWidget::saveState() @@ -714,6 +715,13 @@ SideBySideDiffEditorWidget::SideBySideDiffEditorWidget(QWidget *parent) connect(m_rightEditor, &SideDiffEditorWidget::foldChanged, m_leftEditor, &SideDiffEditorWidget::setFolded); + connect(m_leftEditor->horizontalScrollBar(), &QAbstractSlider::rangeChanged, + this, &SideBySideDiffEditorWidget::syncHorizontalScrollBarPolicy); + + connect(m_rightEditor->horizontalScrollBar(), &QAbstractSlider::rangeChanged, + this, &SideBySideDiffEditorWidget::syncHorizontalScrollBarPolicy); + + syncHorizontalScrollBarPolicy(); m_splitter = new MiniSplitter(this); m_splitter->addWidget(m_leftEditor); @@ -1133,6 +1141,18 @@ void SideBySideDiffEditorWidget::rightCursorPositionChanged() rightHSliderChanged(); } +void SideBySideDiffEditorWidget::syncHorizontalScrollBarPolicy() +{ + const bool alwaysOn = m_leftEditor->horizontalScrollBar()->maximum() + || m_rightEditor->horizontalScrollBar()->maximum(); + const Qt::ScrollBarPolicy newPolicy = alwaysOn + ? Qt::ScrollBarAlwaysOn : Qt::ScrollBarAsNeeded; + if (m_leftEditor->horizontalScrollBarPolicy() != newPolicy) + m_leftEditor->setHorizontalScrollBarPolicy(newPolicy); + if (m_rightEditor->horizontalScrollBarPolicy() != newPolicy) + m_rightEditor->setHorizontalScrollBarPolicy(newPolicy); +} + void SideBySideDiffEditorWidget::handlePositionChange(SideDiffEditorWidget *source, SideDiffEditorWidget *dest) { if (m_controller.m_ignoreCurrentIndexChange) diff --git a/src/plugins/diffeditor/sidebysidediffeditorwidget.h b/src/plugins/diffeditor/sidebysidediffeditorwidget.h index c315cec975..ee6f5f0eb7 100644 --- a/src/plugins/diffeditor/sidebysidediffeditorwidget.h +++ b/src/plugins/diffeditor/sidebysidediffeditorwidget.h @@ -95,6 +95,7 @@ private: void rightHSliderChanged(); void leftCursorPositionChanged(); void rightCursorPositionChanged(); + void syncHorizontalScrollBarPolicy(); void handlePositionChange(SideDiffEditorWidget *source, SideDiffEditorWidget *dest); void syncCursor(SideDiffEditorWidget *source, SideDiffEditorWidget *dest); |