forked from qt-creator/qt-creator
DiffEditor: Persist description widget height
Fixes: QTCREATORBUG-24286 Change-Id: Ie1bf1136bce973b7197b7378b48a85ec776e8f6d Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
committed by
Orgad Shaneh
parent
edd16c7047
commit
bf0d2426b8
@@ -40,6 +40,7 @@
|
||||
|
||||
static const char settingsGroupC[] = "DiffEditor";
|
||||
static const char descriptionVisibleKeyC[] = "DescriptionVisible";
|
||||
static const char descriptionHeightKeyC[] = "DescriptionHeight";
|
||||
static const char horizontalScrollBarSynchronizationKeyC[] = "HorizontalScrollBarSynchronization";
|
||||
static const char contextLineCountKeyC[] = "ContextLineNumbers";
|
||||
static const char ignoreWhitespaceKeyC[] = "IgnoreWhitespace";
|
||||
@@ -134,13 +135,23 @@ DiffEditor::DiffEditor()
|
||||
// Widget:
|
||||
QSplitter *splitter = new MiniSplitter(Qt::Vertical);
|
||||
|
||||
connect(splitter, &QSplitter::splitterMoved, this, [this, splitter](int pos) {
|
||||
if (!m_showDescription)
|
||||
return;
|
||||
const int lineSpacing = splitter->widget(0)->fontMetrics().lineSpacing();
|
||||
const int descHeight = (pos + lineSpacing - 1) / lineSpacing; // round up
|
||||
if (m_descriptionHeight == descHeight)
|
||||
return;
|
||||
m_descriptionHeight = descHeight;
|
||||
saveSetting(descriptionHeightKeyC, descHeight);
|
||||
});
|
||||
m_descriptionWidget = new DescriptionEditorWidget(splitter);
|
||||
m_descriptionWidget->setReadOnly(true);
|
||||
connect(m_descriptionWidget, &DescriptionEditorWidget::requestResize, this, [splitter] {
|
||||
connect(m_descriptionWidget, &DescriptionEditorWidget::requestResize, this, [this, splitter] {
|
||||
if (splitter->count() == 0)
|
||||
return;
|
||||
QList<int> sizes = splitter->sizes();
|
||||
const int descHeight = splitter->widget(0)->fontMetrics().lineSpacing() * 8;
|
||||
const int descHeight = splitter->widget(0)->fontMetrics().lineSpacing() * m_descriptionHeight;
|
||||
const int diff = descHeight - sizes[0];
|
||||
if (diff > 0) {
|
||||
sizes[0] += diff;
|
||||
@@ -522,6 +533,7 @@ IDiffView *DiffEditor::loadSettings()
|
||||
// Read current settings:
|
||||
s->beginGroup(settingsGroupC);
|
||||
m_showDescription = s->value(descriptionVisibleKeyC, true).toBool();
|
||||
m_descriptionHeight = s->value(descriptionHeightKeyC, 8).toInt();
|
||||
m_sync = s->value(horizontalScrollBarSynchronizationKeyC, true).toBool();
|
||||
m_document->setIgnoreWhitespace(s->value(ignoreWhitespaceKeyC, false).toBool());
|
||||
m_document->setContextLineCount(s->value(contextLineCountKeyC, 3).toInt());
|
||||
|
@@ -88,6 +88,7 @@ private:
|
||||
QPair<QString, QString> m_currentFileChunk;
|
||||
int m_currentViewIndex = -1;
|
||||
int m_currentDiffFileIndex = -1;
|
||||
int m_descriptionHeight = 8;
|
||||
Utils::Guard m_ignoreChanges;
|
||||
bool m_sync = false;
|
||||
bool m_showDescription = true;
|
||||
|
Reference in New Issue
Block a user