From 14d494fd993a8530e41f65d548dd91e4a86c91b9 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Wed, 28 Sep 2011 05:00:25 -0400
Subject: [PATCH] - Fix misleading display when chaning editor type (#1488104), fix handling of custom commands result

---
 program/js/app.js |   22 ++++++++++++++--------
 1 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/program/js/app.js b/program/js/app.js
index a209256..22599eb 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -439,6 +439,8 @@
   // execute a specific command on the web client
   this.command = function(command, props, obj)
   {
+    var ret;
+
     if (obj && obj.blur)
       obj.blur();
 
@@ -462,24 +464,26 @@
 
     // process external commands
     if (typeof this.command_handlers[command] === 'function') {
-      var ret = this.command_handlers[command](props, obj);
+      ret = this.command_handlers[command](props, obj);
       return ret !== undefined ? ret : (obj ? false : true);
     }
     else if (typeof this.command_handlers[command] === 'string') {
-      var ret = window[this.command_handlers[command]](props, obj);
+      ret = window[this.command_handlers[command]](props, obj);
       return ret !== undefined ? ret : (obj ? false : true);
     }
 
     // trigger plugin hooks
     this.triggerEvent('actionbefore', {props:props, action:command});
-    var ret = this.triggerEvent('before'+command, props);
+    ret = this.triggerEvent('before'+command, props);
     if (ret !== undefined) {
-      // abort if one the handlers returned false
+      // abort if one of the handlers returned false
       if (ret === false)
         return false;
       else
         props = ret;
     }
+
+    ret = undefined;
 
     // process internal command
     switch (command) {
@@ -1045,15 +1049,17 @@
       // unified command call (command name == function name)
       default:
         var func = command.replace(/-/g, '_');
-        if (this[func] && typeof this[func] === 'function')
-          this[func](props);
+        if (this[func] && typeof this[func] === 'function') {
+          ret = this[func](props);
+        }
         break;
     }
 
-    this.triggerEvent('after'+command, props);
+    if (this.triggerEvent('after'+command, props) === false)
+      ret = false;
     this.triggerEvent('actionafter', {props:props, action:command});
 
-    return obj ? false : true;
+    return ret === false ? false : obj ? false : true;
   };
 
   // set command(s) enabled or disabled

--
Gitblit v1.9.1