From 0ed063eb4110266e178c0bb879ee3f9debcd9d58 Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Tue, 25 Jan 2005 23:36:31 +0000
Subject: [PATCH] Allow copying from scrollback. Fix getch()-related bug...
 probobly doing anything with the mouse while viewing the scrollback would
 have hung SyncTERM.

---
 src/syncterm/menu.c | 8 +++++++-
 src/syncterm/term.h | 1 +
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/syncterm/menu.c b/src/syncterm/menu.c
index 9cefc78cb8..1ea087ea63 100644
--- a/src/syncterm/menu.c
+++ b/src/syncterm/menu.c
@@ -34,10 +34,16 @@ void viewscroll(void)
 		puttext(term.x-1,term.y-1,term.x+term.width-2,term.y+term.height-2,scrollback+(term.width*2*top));
 		key=getch();
 		switch(key) {
+			case 0xff:
 			case 0:
-				switch(getch()<<8) {
+				switch(key|getch()<<8) {
 					case CIO_KEY_MOUSE:
 						getmouse(&mevent);
+						switch(mevent.event) {
+							case CIOLIB_BUTTON_1_DRAG_START:
+								mousedrag(scrollback);
+								break;
+						}
 						break;
 					case CIO_KEY_UP:
 						top--;
diff --git a/src/syncterm/term.h b/src/syncterm/term.h
index ce607467c5..df2480e209 100644
--- a/src/syncterm/term.h
+++ b/src/syncterm/term.h
@@ -12,5 +12,6 @@ extern struct terminal term;
 extern int backlines;
 
 void doterm(void);
+void mousedrag(unsigned char *scrollback);
 
 #endif
-- 
GitLab