5035e5c42aaae212c7f0d5bf9455349143af4d31
jrobinso
  Sun Sep 21 22:00:59 2025 -0700
Show message to user if clicking 'Add IGV Tracks' with an open file picker

diff --git src/hg/js/igvFileHelper.js src/hg/js/igvFileHelper.js
index 658d8b1c95d..16ed87d132b 100644
--- src/hg/js/igvFileHelper.js
+++ src/hg/js/igvFileHelper.js
@@ -347,37 +347,37 @@
         }
     }
 
 
     window.addEventListener("DOMContentLoaded", async () => {
 
         // The "Add IGV track" button handler.  The button opens the file picker window, unless
         // it is already open in which case it brings that window to the front.  Tracks are added
         // from the filePicker page by selecting track files.
         document.getElementById('hgtIgv').addEventListener('click', async function (e) {
             e.preventDefault(); // our
             if (filePicker && !filePicker.closed) {
                 showDialog("To add tracks please use the IGV File Manager window.");
                 filePicker.focus();
                 return;
-            }
-
-            else {
+            } else {
                 // A file picker may be open from a previous session. First ping it to see if it is still there,
                 // if it responds the user should be alerted, if needed,  from a failed track load.
                 const responded = await pingFilePicker();
-                if (!responded) {
+                if (responded) {
+                    showDialog("To add tracks please use the existing IGV File Manager window.");
+                } else {
                     filePicker = openFilePicker();
                 }
             }
         });
 
         initializeDialog();
 
     });
 
     // Initialize a jQuery UI dialog used for user messages.
     function initializeDialog() {
 
         // Inject a hidden dive for an alert dialog.  We use this to report errors.
         const alertDialog = document.createElement('div');
         alertDialog.id = 'igvAlertDialog';
@@ -675,34 +675,34 @@
                 const newStart = igvBrowser.referenceFrameList[0].start;
                 igv.ucscTrackpan(newStart);
             }
         );
 
         // Notify UCSC browser that igv.js track panning has ended.
         igvBrowser.on('trackdragend', () => {
                 isDragging = false;
                 igv.ucscTrackpanEnd();
             }
         );
 
         // Repaint name panels as needed
         igvBrowser.on('trackheightchange', () => {
             updateTrackNames();
-        })
+        });
         igvBrowser.on('tracknamechange', () => {
             updateTrackNames();
-        })
+        });
 
         // Start the session auto-save timer.  This will periodically save the igv session to local storage.
         // When / if we can reliably capture IGV state changes we can eliminate this and just save on state change.
         startSessionAutoSave();
 
         window.igvBrowser = igvBrowser;  // Make available to hgTracks.js code
 
         return igvBrowser;
     }
 
     // Respond to messages from the filePicker window.
     channel.onmessage = async function (event) {
         const msg = event.data;
         if (!msg || !msg.type) return;