From 4a4f5b6b4c02445618c83ed6936b3c1387a4c74f Mon Sep 17 00:00:00 2001 From: Joachim Wuttke <j.wuttke@fz-juelich.de> Date: Fri, 9 Feb 2024 22:23:55 +0100 Subject: [PATCH] corr --- GUI/Model/Files/DatafilesQModel.cpp | 2 ++ GUI/View/Data/DatafilesSelector.cpp | 24 ++++++++++++++---------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/GUI/Model/Files/DatafilesQModel.cpp b/GUI/Model/Files/DatafilesQModel.cpp index a50ef471713..73d4e3218bf 100644 --- a/GUI/Model/Files/DatafilesQModel.cpp +++ b/GUI/Model/Files/DatafilesQModel.cpp @@ -69,6 +69,8 @@ QVariant DatafilesQModel::data(const QModelIndex& index, int role) const DatafileItem* DatafilesQModel::itemForIndex(const QModelIndex& index) const { + if (!index.isValid() || index.row() >= (int)m_model->size() || index.row() < 0) + return nullptr; return m_model->dfileItemAt(index.row()); } diff --git a/GUI/View/Data/DatafilesSelector.cpp b/GUI/View/Data/DatafilesSelector.cpp index 05623253ad0..e39e12d20d9 100644 --- a/GUI/View/Data/DatafilesSelector.cpp +++ b/GUI/View/Data/DatafilesSelector.cpp @@ -163,7 +163,18 @@ QSize DatafilesSelector::minimumSizeHint() const DatafileItem* DatafilesSelector::currentDatafileItem() { - return m_qmodel->itemForIndex(currentDatafileIndex()); + const QModelIndex i = m_qview->selectionModel()->currentIndex(); + if (!m_qview->selectionModel()->isSelected(i)) + return nullptr; + return m_qmodel->itemForIndex(i); +} + +QModelIndex DatafilesSelector::currentDatafileIndex() const +{ + const QModelIndex i = m_qview->selectionModel()->currentIndex(); + if (!m_qview->selectionModel()->isSelected(i)) + return {}; + return i; } void DatafilesSelector::setCurrentDatafileItem(const DatafileItem* item) @@ -181,13 +192,6 @@ void DatafilesSelector::restoreSelection() m_data_frames->setStackedItem(currentDatafileItem()->dataItem()); } -QModelIndex DatafilesSelector::currentDatafileIndex() const -{ - if (!m_qview->selectionModel()->isSelected(m_qview->selectionModel()->currentIndex())) - return {}; - return m_qview->selectionModel()->currentIndex(); -} - QList<QAction*> DatafilesSelector::getOverlayActions(const QModelIndex& index, bool asHover) { if (m_qmodel->isHeadline(index)) @@ -197,7 +201,7 @@ QList<QAction*> DatafilesSelector::getOverlayActions(const QModelIndex& index, b if (!asHover) return {}; - auto* item = m_qmodel->itemForIndex(index); + const DatafileItem* item = m_qmodel->itemForIndex(index); if (item == nullptr) return {}; @@ -228,7 +232,7 @@ void DatafilesSelector::onSelectionChanged() void DatafilesSelector::onContextMenuRequest(const QPoint& point) { - auto* dfile_item = m_qmodel->itemForIndex(m_qview->indexAt(point)); + DatafileItem* dfile_item = m_qmodel->itemForIndex(m_qview->indexAt(point)); updateActionEnabling(dfile_item); QMenu menu; -- GitLab