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