aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/diffeditor
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@qt.io>2018-05-16 13:28:29 +0200
committerJarek Kobus <jaroslaw.kobus@qt.io>2018-05-16 11:59:47 +0000
commitb2a1c189e0114f310e33150d1900da0ea78c77fa (patch)
tree65082dcae5a128b534397c5294ae36201ac4ca38 /src/plugins/diffeditor
parent2dccf95e49aa70fa5281fbafa5d97a65f6e2821e (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.cpp20
-rw-r--r--src/plugins/diffeditor/sidebysidediffeditorwidget.h1
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);