From 3bde9ef0375b3fa7075ca32582c55c9921f8d154 Mon Sep 17 00:00:00 2001
From: Alberto Nidasio <nidasioalberto@gmail.com>
Date: Thu, 29 Aug 2024 14:25:12 +0200
Subject: [PATCH] [OutgoingMessagesViewer] Fixed problem with disappearing
 messages after resizing to 0

---
 .../OutgoingMessagesViewerModule.cpp          | 19 ++++++++-----------
 .../OutgoingMessagesViewerModule.h            |  2 ++
 2 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/src/shared/Modules/OutgoingMessagesViewer/OutgoingMessagesViewerModule.cpp b/src/shared/Modules/OutgoingMessagesViewer/OutgoingMessagesViewerModule.cpp
index b6f231d9..82798be7 100644
--- a/src/shared/Modules/OutgoingMessagesViewer/OutgoingMessagesViewerModule.cpp
+++ b/src/shared/Modules/OutgoingMessagesViewer/OutgoingMessagesViewerModule.cpp
@@ -126,6 +126,11 @@ void OutgoingMessagesViewerModule::setupUi()
     // Disable items selection
     table->setSelectionMode(QAbstractItemView::NoSelection);
 
+    // Set a fixed row height
+    QHeaderView* verticalHeader = table->verticalHeader();
+    verticalHeader->setSectionResizeMode(QHeaderView::Fixed);
+    verticalHeader->setDefaultSectionSize(rowHeight);
+
     setLayout(outerLayout);
 }
 
@@ -166,34 +171,26 @@ void OutgoingMessagesViewerModule::customContextMenuActionSetup()
 
 void OutgoingMessagesViewerModule::resizeEvent(QResizeEvent* event)
 {
-    if (table->rowCount() == 0)
-    {
-        return;
-    }
-
     int totalHeight   = table->viewport()->height();
-    int contentHeight = table->rowCount() * table->rowHeight(0);
+    int contentHeight = table->rowCount() * rowHeight;
 
     if (contentHeight <= totalHeight)
     {
         // Calculate how many rows can fit in the available space
-        int rowsToAdd = (totalHeight - contentHeight) / table->rowHeight(0);
+        int rowsToAdd = (totalHeight - contentHeight) / rowHeight;
 
         // Calculate how many messages are available and not shown
         int rowsAvailable = messages.count() - table->rowCount();
 
         // Add rows to fill the available space
         for (int i = 0; i < std::min(rowsToAdd, rowsAvailable); i++)
-        {
             addMessageToTable(messages.at(table->rowCount()),
                               table->rowCount());
-        }
     }
     else
     {
         // Calculate how many rows need to be removed
-        int rowsToRemove =
-            (contentHeight - totalHeight) / table->rowHeight(0) + 1;
+        int rowsToRemove = (contentHeight - totalHeight) / rowHeight + 1;
 
         // Remove rows that don't fit
         int newRowCount = table->rowCount() - rowsToRemove;
diff --git a/src/shared/Modules/OutgoingMessagesViewer/OutgoingMessagesViewerModule.h b/src/shared/Modules/OutgoingMessagesViewer/OutgoingMessagesViewerModule.h
index 7235f109..a3da97f9 100644
--- a/src/shared/Modules/OutgoingMessagesViewer/OutgoingMessagesViewerModule.h
+++ b/src/shared/Modules/OutgoingMessagesViewer/OutgoingMessagesViewerModule.h
@@ -63,4 +63,6 @@ private:
 
     int maxListSize = 20;
     int timerPeriod = 1000;  // [ms]
+
+    const int rowHeight = 30;  // [px]
 };
-- 
GitLab