From f54a1cc56c1cd274410626f439e5396f05767568 Mon Sep 17 00:00:00 2001
From: Aayush <suranaaayush98@gmail.com>
Date: Mon, 19 Aug 2019 23:24:52 +0530
Subject: [PATCH] updated input handling in ascii->pd

---
 pd/nw/pd_canvas.js |  2 +-
 pd/nw/pdgui.js     | 19 +++++++++++++++++++
 pd/src/m_glob.c    |  8 ++++++++
 3 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/pd/nw/pd_canvas.js b/pd/nw/pd_canvas.js
index 015280a6a..667037883 100644
--- a/pd/nw/pd_canvas.js
+++ b/pd/nw/pd_canvas.js
@@ -800,7 +800,7 @@ var canvas_events = (function() {
         ascii_art: function() {
             set_edit_menu_modals(false);
             canvas_events.none();
-            document.addEventListener("keyup", events.check_ascii_art_state, false);
+            document.getElementById("ascii_art_text_area").addEventListener("input", events.check_ascii_art_state);
             state = "ascii_art";
         },
         register: function(n) {
diff --git a/pd/nw/pdgui.js b/pd/nw/pdgui.js
index 41f9ca713..3039a3b9c 100644
--- a/pd/nw/pdgui.js
+++ b/pd/nw/pdgui.js
@@ -1167,6 +1167,25 @@ function menu_quit() {
 
 exports.menu_quit = menu_quit;
 
+function ascii_entry_callback(textarea_state)
+{
+    var ascii_art = w.document.getElementById("ascii_art"),
+        ascii_art_text_area = w.document.getElementById("ascii_art_text_area");
+
+    if (textarea_state == 1) {
+        alert("hi");
+        ascii_art.style.setProperty("display", "inline");
+        ascii_art_text_area.focus();
+        ascii_art_text_area.select();
+        w.canvas_events.ascii_art();
+    } else {
+        ascii_art_text_area.value = "write your ascii art here";
+        ascii_art.style.setProperty("display", "none");
+        w.canvas_events[canvas_events.get_previous_state()]();
+    }
+
+}
+
 var nw_app_quit;
 
 function app_quit() {
diff --git a/pd/src/m_glob.c b/pd/src/m_glob.c
index b3ed14c9f..6fe7253eb 100644
--- a/pd/src/m_glob.c
+++ b/pd/src/m_glob.c
@@ -101,6 +101,12 @@ static void glob_gui_properties(t_pd *dummy)
         sys_autopatch_yoffset);
 }
 
+//To enter or show ascii_art
+extern void glob_ascii_entry(int textarea_state)
+{
+    gui_vmess("ascii_entry_callback", textarea_state);
+}
+
 // ths one lives inside g_editor so that it can access the clipboard
 extern void glob_clipboard_text(t_pd *dummy, float f);
 
@@ -193,6 +199,8 @@ void glob_init(void)
         gensym("add-recent-file"), A_SYMBOL, 0);
     class_addmethod(glob_pdobject, (t_method)glob_clear_recent_files,
         gensym("clear-recent-files"), 0);
+    class_addmethod(glob_pdobject, (t_method)glob_ascii_entry,
+        gensym("toggle-ascii-entry"), 0);
 #ifdef UNIX
     class_addmethod(glob_pdobject, (t_method)glob_watchdog,
         gensym("watchdog"), 0);
-- 
GitLab