[sdk/kdiff3/1.13] src: Protect against early start resize signals from Qt.

Michael Reeves <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git commit 656a1d066cd5f5bb48035dfa67cd578882ee20a7 by Michael Reeves.
Committed on 16/07/2026 at 00:53.
Pushed by mreeves into branch '1.13'.

Protect against early start resize signals from Qt.

M  +1    -0    src/SourceData.cpp
M  +14   -9    src/difftextwindow.cpp

https://invent.kde.org/sdk/kdiff3/-/commit/656a1d066cd5f5bb48035dfa67cd578882ee20a7

diff --git a/src/SourceData.cpp b/src/SourceData.cpp
index c48cdbef..b98a7e81 100644
--- a/src/SourceData.cpp
+++ b/src/SourceData.cpp
@@ -175,6 +175,7 @@ const std::shared_ptr<LineDataVector>& SourceData::getLineDataForDisplay() const
 
 LineType SourceData::lineCount() const
 {
+    assert(m_normalData.m_pBuf != nullptr);
     return SafeInt<LineType>(m_normalData.lineCount());
 }
 
diff --git a/src/difftextwindow.cpp b/src/difftextwindow.cpp
index 18990894..afe0f458 100644
--- a/src/difftextwindow.cpp
+++ b/src/difftextwindow.cpp
@@ -296,6 +296,7 @@ const Diff3LineVector* DiffTextWindow::getDiff3LineVector() const
 
 qint32 DiffTextWindow::getLineNumberWidth() const
 {
+    assert(d->mSourceData != nullptr);
     return std::floor(std::log10(std::max(d->mSourceData->lineCount(), 1))) + 1;
 }
 
@@ -1393,16 +1394,20 @@ QString DiffTextWindowData::getLineString(const LineType line) const
 
 void DiffTextWindow::resizeEvent(QResizeEvent* e)
 {
-    QSize newSize = e->size();
-    QFontMetrics fm = fontMetrics();
-    LineType visibleLines = newSize.height() / fm.lineSpacing() - 2;
-    //TODO: Fix after line number area is converted to a QWidget.
-    qint32 visibleColumns = newSize.width() / fm.horizontalAdvance(u'0') - d->leftInfoWidth();
+    //Qt sends resize events before init under certain conditions. No good way to avoid this so just tell Qt to handle it.
+    if(d->mSourceData != nullptr)
+    {
+        QSize newSize = e->size();
+        QFontMetrics fm = fontMetrics();
+        LineType visibleLines = newSize.height() / fm.lineSpacing() - 2;
+        //TODO: Fix after line number area is converted to a QWidget.
+        qint32 visibleColumns = newSize.width() / fm.horizontalAdvance(u'0') - d->leftInfoWidth();
 
-    if(e->size().height() != e->oldSize().height())
-        Q_EMIT resizeHeightChangedSignal(visibleLines);
-    if(e->size().width() != e->oldSize().width())
-        Q_EMIT resizeWidthChangedSignal(visibleColumns);
+        if(e->size().height() != e->oldSize().height())
+            Q_EMIT resizeHeightChangedSignal(visibleLines);
+        if(e->size().width() != e->oldSize().width())
+            Q_EMIT resizeWidthChangedSignal(visibleColumns);
+    }
     QWidget::resizeEvent(e);
 }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.