From ceee7eb110df884155af024f3b2b7eebb8dd3378 Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <bruederli@kolabsys.com>
Date: Thu, 18 Dec 2014 07:13:07 -0500
Subject: [PATCH] Prevent folder selection changes if app is busy (#1490158)

---
 program/js/treelist.js |    5 +++++
 program/js/app.js      |    1 +
 2 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/program/js/app.js b/program/js/app.js
index e920789..3d714b9 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -574,6 +574,7 @@
       this.treelist
         .addEventListener('collapse', function(node) { ref.folder_collapsed(node) })
         .addEventListener('expand', function(node) { ref.folder_collapsed(node) })
+        .addEventListener('beforeselect', function(node) { return !ref.busy; })
         .addEventListener('select', function(node) { ref.triggerEvent('selectfolder', { folder:node.id, prefix:'rcmli' }) });
     }
 
diff --git a/program/js/treelist.js b/program/js/treelist.js
index 08e0e68..6f7bfbe 100644
--- a/program/js/treelist.js
+++ b/program/js/treelist.js
@@ -248,6 +248,11 @@
    */
   function select(id)
   {
+    // allow subscribes to prevent selection change
+    if (me.triggerEvent('beforeselect', indexbyid[id]) === false) {
+      return;
+    }
+
     if (selection) {
       id2dom(selection, true).removeClass('selected').removeAttr('aria-selected');
       if (search_active)

--
Gitblit v1.9.1