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