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 settingsGroupC[] = "DiffEditor";
|
||||||
static const char descriptionVisibleKeyC[] = "DescriptionVisible";
|
static const char descriptionVisibleKeyC[] = "DescriptionVisible";
|
||||||
|
static const char descriptionHeightKeyC[] = "DescriptionHeight";
|
||||||
static const char horizontalScrollBarSynchronizationKeyC[] = "HorizontalScrollBarSynchronization";
|
static const char horizontalScrollBarSynchronizationKeyC[] = "HorizontalScrollBarSynchronization";
|
||||||
static const char contextLineCountKeyC[] = "ContextLineNumbers";
|
static const char contextLineCountKeyC[] = "ContextLineNumbers";
|
||||||
static const char ignoreWhitespaceKeyC[] = "IgnoreWhitespace";
|
static const char ignoreWhitespaceKeyC[] = "IgnoreWhitespace";
|
||||||
@@ -134,13 +135,23 @@ DiffEditor::DiffEditor()
|
|||||||
// Widget:
|
// Widget:
|
||||||
QSplitter *splitter = new MiniSplitter(Qt::Vertical);
|
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 = new DescriptionEditorWidget(splitter);
|
||||||
m_descriptionWidget->setReadOnly(true);
|
m_descriptionWidget->setReadOnly(true);
|
||||||
connect(m_descriptionWidget, &DescriptionEditorWidget::requestResize, this, [splitter] {
|
connect(m_descriptionWidget, &DescriptionEditorWidget::requestResize, this, [this, splitter] {
|
||||||
if (splitter->count() == 0)
|
if (splitter->count() == 0)
|
||||||
return;
|
return;
|
||||||
QList<int> sizes = splitter->sizes();
|
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];
|
const int diff = descHeight - sizes[0];
|
||||||
if (diff > 0) {
|
if (diff > 0) {
|
||||||
sizes[0] += diff;
|
sizes[0] += diff;
|
||||||
@@ -522,6 +533,7 @@ IDiffView *DiffEditor::loadSettings()
|
|||||||
// Read current settings:
|
// Read current settings:
|
||||||
s->beginGroup(settingsGroupC);
|
s->beginGroup(settingsGroupC);
|
||||||
m_showDescription = s->value(descriptionVisibleKeyC, true).toBool();
|
m_showDescription = s->value(descriptionVisibleKeyC, true).toBool();
|
||||||
|
m_descriptionHeight = s->value(descriptionHeightKeyC, 8).toInt();
|
||||||
m_sync = s->value(horizontalScrollBarSynchronizationKeyC, true).toBool();
|
m_sync = s->value(horizontalScrollBarSynchronizationKeyC, true).toBool();
|
||||||
m_document->setIgnoreWhitespace(s->value(ignoreWhitespaceKeyC, false).toBool());
|
m_document->setIgnoreWhitespace(s->value(ignoreWhitespaceKeyC, false).toBool());
|
||||||
m_document->setContextLineCount(s->value(contextLineCountKeyC, 3).toInt());
|
m_document->setContextLineCount(s->value(contextLineCountKeyC, 3).toInt());
|
||||||
|
@@ -88,6 +88,7 @@ private:
|
|||||||
QPair<QString, QString> m_currentFileChunk;
|
QPair<QString, QString> m_currentFileChunk;
|
||||||
int m_currentViewIndex = -1;
|
int m_currentViewIndex = -1;
|
||||||
int m_currentDiffFileIndex = -1;
|
int m_currentDiffFileIndex = -1;
|
||||||
|
int m_descriptionHeight = 8;
|
||||||
Utils::Guard m_ignoreChanges;
|
Utils::Guard m_ignoreChanges;
|
||||||
bool m_sync = false;
|
bool m_sync = false;
|
||||||
bool m_showDescription = true;
|
bool m_showDescription = true;
|
||||||
|
Reference in New Issue
Block a user