diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2022-10-23 08:27:14 +0300 |
---|---|---|
committer | Orgad Shaneh <orgads@gmail.com> | 2022-10-24 07:00:50 +0000 |
commit | bf0d2426b8a9695637577a580eebf3ee1c9f9fff (patch) | |
tree | b3a0cf8d58f9c3a91198b07195d9f0557aeee913 | |
parent | edd16c70476755b7cda2e618395ceb0905cada68 (diff) |
DiffEditor: Persist description widget height
Fixes: QTCREATORBUG-24286
Change-Id: Ie1bf1136bce973b7197b7378b48a85ec776e8f6d
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
-rw-r--r-- | src/plugins/diffeditor/diffeditor.cpp | 16 | ||||
-rw-r--r-- | src/plugins/diffeditor/diffeditor.h | 1 |
2 files changed, 15 insertions, 2 deletions
diff --git a/src/plugins/diffeditor/diffeditor.cpp b/src/plugins/diffeditor/diffeditor.cpp index 92540f6f078..a8286368d88 100644 --- a/src/plugins/diffeditor/diffeditor.cpp +++ b/src/plugins/diffeditor/diffeditor.cpp @@ -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()); diff --git a/src/plugins/diffeditor/diffeditor.h b/src/plugins/diffeditor/diffeditor.h index c4f852c4fc6..b4d636c5106 100644 --- a/src/plugins/diffeditor/diffeditor.h +++ b/src/plugins/diffeditor/diffeditor.h @@ -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; |