aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2022-10-23 08:27:14 +0300
committerOrgad Shaneh <orgads@gmail.com>2022-10-24 07:00:50 +0000
commitbf0d2426b8a9695637577a580eebf3ee1c9f9fff (patch)
treeb3a0cf8d58f9c3a91198b07195d9f0557aeee913
parentedd16c70476755b7cda2e618395ceb0905cada68 (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.cpp16
-rw-r--r--src/plugins/diffeditor/diffeditor.h1
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;