forked from qt-creator/qt-creator
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:
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user