From fd3f35d4750a61793fcb987c56b037af51023fc3 Mon Sep 17 00:00:00 2001
From: Jonathan Wilkes <jon.w.wilkes@gmail.com>
Date: Fri, 9 Oct 2015 16:48:13 -0400
Subject: [PATCH] fixed regression with the search bar messing up the event
 bindings

---
 pd/nw/pd_canvas.js | 11 ++++++++++-
 pd/nw/pdgui.js     |  8 +++++++-
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/pd/nw/pd_canvas.js b/pd/nw/pd_canvas.js
index 5d08b63a3..568576022 100644
--- a/pd/nw/pd_canvas.js
+++ b/pd/nw/pd_canvas.js
@@ -65,6 +65,7 @@ pdgui.gui_post("flub!");
 var canvas_events = (function() {
     var name,
         state,
+        previous_state = 'none', /* last state, excluding explicit 'none' */
         match_words_state = false,
         last_search_term = '',
         svg_view = document.getElementById('patchsvg').viewBox.baseVal,
@@ -373,6 +374,9 @@ var canvas_events = (function() {
     return {
         none: function() {
             var name;
+            if (state !== 'none') {
+                previous_state = state;
+            }
             state = 'none';
             for (var prop in events) {
                 if (events.hasOwnProperty(prop)) {
@@ -383,7 +387,6 @@ var canvas_events = (function() {
             }
         },
         normal: function() {
-            //pdgui.gui_post("resetting to normal...");
             this.none();
 
             document.addEventListener("mousemove", events.mousemove, false);
@@ -423,6 +426,7 @@ var canvas_events = (function() {
         search: function() {
             this.none();
             document.addEventListener("keydown", events.find_keydown, false);
+            state = 'search';
         },
         register: function(n) {
             name = n;
@@ -430,6 +434,9 @@ var canvas_events = (function() {
         get_state: function() {
             return state;
         },
+        get_previous_state: function() {
+            return previous_state;
+        },
         set_obj: function() {
             utils.set_obj();
         },
@@ -838,6 +845,8 @@ function nw_create_patch_window_menus(name) {
                 canvas_events.search();
             } else {
                 find_bar.style.setProperty('display', 'none');
+// this is wrong and causes bug... we need to set back to whatever state
+// we used to be in... probably need a last_state var
                 canvas_events.none();
             }
         },
diff --git a/pd/nw/pdgui.js b/pd/nw/pdgui.js
index 53c9bed96..aa747a4e3 100644
--- a/pd/nw/pdgui.js
+++ b/pd/nw/pdgui.js
@@ -2963,7 +2963,13 @@ function gui_textarea(cid, tag, type, x, y, max_char_width, text,
         if (p !== null) {
             p.parentNode.removeChild(p);
         }
-        patchwin[cid].window.canvas_events.normal();
+// this is wrong and causes bug... we need it to go back to previous state
+        if (patchwin[cid].window.canvas_events.get_previous_state() === 
+               'search') {
+            patchwin[cid].window.canvas_events.search();
+        } else { 
+            patchwin[cid].window.canvas_events.normal();
+        }
     }
 }
 
-- 
GitLab