Compare commits

..
2 Commits
Author SHA1 Message Date
javier e0ce893d06 fix: responsive widths + email selection fix
- MailListView: setMinimumSectionSize(50) + setStretchLastSection(false) to allow header shrinking
- MainMainWindow: reduce folder tree min width 220->160, reader min width 350->280
- Allow splitter children to not be collapsible but shrink freely
- Fix onRowSelected slot signature to match currentRowChanged signal
2026-08-26 12:04:37 +02:00
javier 8767d66b2a fix: onRowSelected signal signature to match currentRowChanged
- Changed from (const QModelIndex&) to (const QModelIndex&, const QModelIndex&)
- Required for QItemSelectionModel::currentRowChanged signal connection
2026-08-26 12:01:01 +02:00
3 changed files with 15 additions and 6 deletions
+8 -3
View File
@@ -255,6 +255,10 @@ void MailListView::setupUI()
m_treeView->header()->setSectionResizeMode(EmailTreeModel::ColSender, QHeaderView::Stretch); m_treeView->header()->setSectionResizeMode(EmailTreeModel::ColSender, QHeaderView::Stretch);
m_treeView->header()->setSectionResizeMode(EmailTreeModel::ColDate, QHeaderView::ResizeToContents); m_treeView->header()->setSectionResizeMode(EmailTreeModel::ColDate, QHeaderView::ResizeToContents);
// Allow shrinking by setting minimum section sizes
m_treeView->header()->setMinimumSectionSize(50);
m_treeView->header()->setStretchLastSection(false);
connect(m_treeView->selectionModel(), &QItemSelectionModel::selectionChanged, connect(m_treeView->selectionModel(), &QItemSelectionModel::selectionChanged,
this, &MailListView::onSelectionChanged); this, &MailListView::onSelectionChanged);
// Single-click selection in tree view -> emit emailSelected for reader pane // Single-click selection in tree view -> emit emailSelected for reader pane
@@ -572,10 +576,11 @@ void MailListView::onRowsInserted(const QModelIndex &parent, int first, int last
} }
} }
void MailListView::onRowSelected(const QModelIndex &index) void MailListView::onRowSelected(const QModelIndex &current, const QModelIndex &previous)
{ {
if (!index.isValid()) return; Q_UNUSED(previous);
QModelIndex proxyIdx = m_proxyModel->mapToSource(index); if (!current.isValid()) return;
QModelIndex proxyIdx = m_proxyModel->mapToSource(current);
if (proxyIdx.isValid() && proxyIdx.data(EmailTreeModel::MailIdRole).isValid()) { if (proxyIdx.isValid() && proxyIdx.data(EmailTreeModel::MailIdRole).isValid()) {
int mailId = proxyIdx.data(EmailTreeModel::MailIdRole).toInt(); int mailId = proxyIdx.data(EmailTreeModel::MailIdRole).toInt();
emit emailSelected(mailId); emit emailSelected(mailId);
+1 -1
View File
@@ -54,7 +54,7 @@ public slots:
void setFolderType(const QString& folderType); // "inbox", "sent", "drafts", etc. void setFolderType(const QString& folderType); // "inbox", "sent", "drafts", etc.
private slots: private slots:
void onRowSelected(const QModelIndex &index); void onRowSelected(const QModelIndex &current, const QModelIndex &previous);
void onSearchTextChanged(const QString &text); void onSearchTextChanged(const QString &text);
void onFilterChanged(); void onFilterChanged();
void onGroupByChanged(int index); void onGroupByChanged(int index);
+6 -2
View File
@@ -224,7 +224,7 @@ void MainMainWindow::setupMailPage()
m_folderTree = new QTreeView(); m_folderTree = new QTreeView();
m_folderTree->setHeaderHidden(true); m_folderTree->setHeaderHidden(true);
m_folderTree->setIndentation(20); m_folderTree->setIndentation(20);
m_folderTree->setMinimumWidth(220); m_folderTree->setMinimumWidth(160); // Reduced from 220
m_folderTree->setMaximumWidth(350); m_folderTree->setMaximumWidth(350);
m_folderTree->setFrameShape(QFrame::NoFrame); m_folderTree->setFrameShape(QFrame::NoFrame);
m_folderTree->setExpandsOnDoubleClick(true); m_folderTree->setExpandsOnDoubleClick(true);
@@ -291,7 +291,7 @@ void MainMainWindow::setupMailPage()
// Reader view // Reader view
m_emailViewer = new ReaderView(); m_emailViewer = new ReaderView();
m_emailViewer->setMinimumWidth(350); m_emailViewer->setMinimumWidth(280); // Reduced from 350
connect(m_emailViewer, &ReaderView::replyRequested, this, &MainMainWindow::onReaderReplyRequested); connect(m_emailViewer, &ReaderView::replyRequested, this, &MainMainWindow::onReaderReplyRequested);
connect(m_emailViewer, &ReaderView::forwardRequested, this, &MainMainWindow::onReaderForwardRequested); connect(m_emailViewer, &ReaderView::forwardRequested, this, &MainMainWindow::onReaderForwardRequested);
connect(m_emailViewer, &ReaderView::deleteRequested, this, &MainMainWindow::onReaderDeleteRequested); connect(m_emailViewer, &ReaderView::deleteRequested, this, &MainMainWindow::onReaderDeleteRequested);
@@ -321,6 +321,10 @@ void MainMainWindow::setupMailPage()
// Default sizes: left pane (folders+categories) 300, list 380, viewer flex // Default sizes: left pane (folders+categories) 300, list 380, viewer flex
m_folderSplitter->setSizes({300, 380, 600}); m_folderSplitter->setSizes({300, 380, 600});
// Allow each pane to shrink further
m_folderSplitter->setHandleWidth(1);
m_folderSplitter->setChildrenCollapsible(false);
mailLayout->addWidget(m_folderSplitter); mailLayout->addWidget(m_folderSplitter);
} }