changeset 27639:57b9cf9d8796

simplify loop over tabs in file_editor::find_tab_widget * file-editor-tab.h (file_editor_tab::file_name): New function. * file-editor (file_editor::find_tab_widget): Loop over simple list of tabs directly instead a map from filenames to tab info.
author John W. Eaton <jwe@octave.org>
date Mon, 04 Nov 2019 23:50:16 -0500
parents fd009322dd9f
children a10b3e56d678
files libgui/src/m-editor/file-editor-tab.h libgui/src/m-editor/file-editor.cc
diffstat 2 files changed, 18 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/m-editor/file-editor-tab.h	Mon Nov 04 17:05:09 2019 -0500
+++ b/libgui/src/m-editor/file-editor-tab.h	Mon Nov 04 23:50:16 2019 -0500
@@ -65,6 +65,8 @@
 
     void update_breakpoints ();
 
+    QString file_name (void) const { return m_file_name; }
+
   signals:
 
     void tab_ready_to_close (void);
--- a/libgui/src/m-editor/file-editor.cc	Mon Nov 04 17:05:09 2019 -0500
+++ b/libgui/src/m-editor/file-editor.cc	Mon Nov 04 23:50:16 2019 -0500
@@ -2606,26 +2606,25 @@
   // Check whether this file is already open in the editor.
   QWidget * file_editor::find_tab_widget (const QString& file)
   {
-    // Have all file editor tabs signal what their filenames are.
-    m_editor_tab_map.clear ();
-    emit fetab_file_name_query (nullptr);
-
-    // Check all tabs for the given file name
-    QWidget *retval = nullptr;
-
-    for (auto p = m_editor_tab_map.cbegin ();
-         p != m_editor_tab_map.cend (); p++)
+    std::string std_file = file.toStdString ();
+
+    std::list<file_editor_tab *> fe_tab_lst = m_tab_widget->tab_list ();
+
+    for (auto fe_tab : fe_tab_lst)
       {
-        QString tab_file = p->first;
-        if (same_file (file.toStdString (), tab_file.toStdString ())
-            || file == tab_file)     // needed as same_file ("","") is false.
-          {
-            retval = p->second.fet_ID;
-            break;
-          }
+        QString tab_file = fe_tab->file_name ();
+
+        // We check file == tab_file because
+        //
+        //   same_file ("", "")
+        //
+        // is false
+
+        if (same_file (std_file, tab_file.toStdString ()) || file == tab_file)
+          return fe_tab;
       }
 
-    return retval;
+    return nullptr;
   }
 
   QAction * file_editor::add_action (QMenu *menu, const QString& text,