DiffEditor: Keep horizontal scrollbar policy in sync

Task-number: QTCREATORBUG-14330
Change-Id: I4c45089f10a9b59cd1bc5b5368f14e0bb0738f22
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
Jarek Kobus
2018-05-16 13:28:29 +02:00
parent 2dccf95e49
commit b2a1c189e0
2 changed files with 21 additions and 0 deletions

View File

@@ -179,6 +179,7 @@ SideDiffEditorWidget::SideDiffEditorWidget(QWidget *parent)
connect(documentLayout, &TextDocumentLayout::foldChanged, connect(documentLayout, &TextDocumentLayout::foldChanged,
this, &SideDiffEditorWidget::foldChanged); this, &SideDiffEditorWidget::foldChanged);
setCodeFoldingSupported(true); setCodeFoldingSupported(true);
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
} }
void SideDiffEditorWidget::saveState() void SideDiffEditorWidget::saveState()
@@ -714,6 +715,13 @@ SideBySideDiffEditorWidget::SideBySideDiffEditorWidget(QWidget *parent)
connect(m_rightEditor, &SideDiffEditorWidget::foldChanged, connect(m_rightEditor, &SideDiffEditorWidget::foldChanged,
m_leftEditor, &SideDiffEditorWidget::setFolded); 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 = new MiniSplitter(this);
m_splitter->addWidget(m_leftEditor); m_splitter->addWidget(m_leftEditor);
@@ -1133,6 +1141,18 @@ void SideBySideDiffEditorWidget::rightCursorPositionChanged()
rightHSliderChanged(); 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) void SideBySideDiffEditorWidget::handlePositionChange(SideDiffEditorWidget *source, SideDiffEditorWidget *dest)
{ {
if (m_controller.m_ignoreCurrentIndexChange) if (m_controller.m_ignoreCurrentIndexChange)

View File

@@ -95,6 +95,7 @@ private:
void rightHSliderChanged(); void rightHSliderChanged();
void leftCursorPositionChanged(); void leftCursorPositionChanged();
void rightCursorPositionChanged(); void rightCursorPositionChanged();
void syncHorizontalScrollBarPolicy();
void handlePositionChange(SideDiffEditorWidget *source, SideDiffEditorWidget *dest); void handlePositionChange(SideDiffEditorWidget *source, SideDiffEditorWidget *dest);
void syncCursor(SideDiffEditorWidget *source, SideDiffEditorWidget *dest); void syncCursor(SideDiffEditorWidget *source, SideDiffEditorWidget *dest);