From 7473b8e8ccb4d2dadee1339f7af17229a6d118ee Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Thu, 12 Oct 2017 08:32:55 +0000
Subject: [PATCH] Terminology update (GET -> COPY, PUT -> PASTE). Added Cut and
 Paste-Insert support to stdio version of UIFC.

---
 src/uifc/uifc.h   |  6 +++---
 src/uifc/uifc32.c | 22 ++++++++++-----------
 src/uifc/uifcx.c  | 49 ++++++++++++++++++++++++++++++++---------------
 3 files changed, 48 insertions(+), 29 deletions(-)

diff --git a/src/uifc/uifc.h b/src/uifc/uifc.h
index c6f5560b0c..6fd213f853 100644
--- a/src/uifc/uifc.h
+++ b/src/uifc/uifc.h
@@ -206,11 +206,11 @@
 								/* And ungets the mouse event.				*/
 #define K_PASSWORD	(1L<<16)	/* Does not display text while editing		*/
 
-						/* Bottom line elements */
+							/* Bottom line elements */
 #define BL_INS      (1<<0)  /* INS key */
 #define BL_DEL      (1<<1)  /* DEL key */
-#define BL_GET      (1<<2)  /* Get key */
-#define BL_PUT      (1<<3)  /* Put key */
+#define BL_COPY     (1<<2)  /* Copy operation */
+#define BL_PASTE    (1<<3)  /* Paste operation */
 #define BL_EDIT     (1<<4)  /* Edit key */
 #define BL_HELP     (1<<5)  /* Help key */
 
diff --git a/src/uifc/uifc32.c b/src/uifc/uifc32.c
index b095b97084..090b2d7fb0 100644
--- a/src/uifc/uifc32.c
+++ b/src/uifc/uifc32.c
@@ -695,12 +695,12 @@ int ulist(int mode, int left, int top, int width, int *cur, int *bar
 	if(api->helpbuf!=NULL || api->helpixbfile[0]!=0) bline|=BL_HELP;
 	if(mode&WIN_INS) bline|=BL_INS;
 	if(mode&WIN_DEL) bline|=BL_DEL;
-	if(mode&WIN_GET) bline|=BL_GET;
-	if(mode&WIN_PUT) bline|=BL_PUT;
+	if(mode&WIN_COPY) bline|=BL_COPY;
+	if(mode&WIN_PASTE) bline|=BL_PASTE;
 	if(mode&WIN_EDIT) bline|=BL_EDIT;
 	if (api->bottomline != NULL) {
 		if ((mode&(WIN_XTR | WIN_PASTEXTR)) == WIN_XTR && (*cur) == opts - 1)
-			api->bottomline(bline & ~BL_PUT);
+			api->bottomline(bline & ~BL_PASTE);
 		else
 			api->bottomline(bline);
 	}
@@ -1593,19 +1593,19 @@ int ulist(int mode, int left, int top, int width, int *cur, int *bar
 						break;
 					case CIO_KEY_F(5):		/* F5 - Copy */
 					case CIO_KEY_CTRL_IC:	/* Ctrl-Insert */
-						if(mode&WIN_GET && !(mode&WIN_XTR && (*cur)==opts-1))
+						if(mode&WIN_COPY && !(mode&WIN_XTR && (*cur)==opts-1))
 							return((*cur)|MSK_GET);
 						break;
 					case CIO_KEY_SHIFT_DC:	/* Shift-Del: Cut */
-						if(mode&WIN_GET && !(mode&WIN_XTR && (*cur) == opts - 1))
+						if(mode&WIN_COPY && !(mode&WIN_XTR && (*cur) == opts - 1))
 							return((*cur) | MSK_CUT);
 						break;
 					case CIO_KEY_SHIFT_IC:	/* Shift-Insert: Paste-Insert */
-						if(mode&WIN_PUT)
+						if(mode&WIN_PASTE)
 							return((*cur) | MSK_PASTE_INSERT);
 						break;
 					case CIO_KEY_F(6):		/* F6 - Paste-Over */
-						if(mode&WIN_PUT && (mode&WIN_PASTEXTR || !(mode&WIN_XTR && (*cur)==opts-1)))
+						if(mode&WIN_PASTE && (mode&WIN_PASTEXTR || !(mode&WIN_XTR && (*cur)==opts-1)))
 							return((*cur)|MSK_PASTE_OVER);
 						break;
 					case CIO_KEY_IC:	/* insert */
@@ -1825,9 +1825,9 @@ int ulist(int mode, int left, int top, int width, int *cur, int *bar
 				}
 			}
 			/* Update the status bar to reflect the Put/Paste option applicability */
-			if (bline&BL_PUT && api->bottomline != NULL) {
+			if (bline&BL_PASTE && api->bottomline != NULL) {
 				if ((mode&(WIN_XTR | WIN_PASTEXTR)) == WIN_XTR && (*cur) == opts - 1)
-					api->bottomline(bline & ~BL_PUT);
+					api->bottomline(bline & ~BL_PASTE);
 				else
 					api->bottomline(bline);
 			}
@@ -2428,13 +2428,13 @@ void bottomline(int line)
 		uprintf(i,api->scrn_len+1,BLACK|(api->cclr<<4),"Edit Item  ");
 		i+=11; 
 	}
-	if(line&BL_GET) {
+	if(line&BL_COPY) {
 		uprintf(i,api->scrn_len+1,api->bclr|(api->cclr<<4),"F5 ");
 		i+=3;
 		uprintf(i,api->scrn_len+1,BLACK|(api->cclr<<4),"Copy Item  ");
 		i+=11; 
 	}
-	if(line&BL_PUT) {
+	if(line&BL_PASTE) {
 		uprintf(i,api->scrn_len+1,api->bclr|(api->cclr<<4),"F6 ");
 		i+=3;
 		uprintf(i,api->scrn_len+1,BLACK|(api->cclr<<4),"Paste  ");
diff --git a/src/uifc/uifcx.c b/src/uifc/uifcx.c
index 0d34a25b92..9852221aca 100644
--- a/src/uifc/uifcx.c
+++ b/src/uifc/uifcx.c
@@ -254,10 +254,10 @@ int ulist(int mode, int left, int top, int width, int *cur, int *bar
                 }
             }
             str[0]=0;
-            if(mode&WIN_GET)
-                strcat(str,", Copy");
-            if(mode&WIN_PUT)
-                strcat(str,", Paste");
+            if(mode&WIN_COPY)
+                strcat(str,", Copy, X-Cut");
+            if(mode&WIN_PASTE)
+                strcat(str,", Paste, Insert");
             if(mode&WIN_INS)
                 strcat(str,", Add");
             if(mode&WIN_DEL)
@@ -313,31 +313,50 @@ int ulist(int mode, int left, int top, int width, int *cur, int *bar
                 if(opts==1)
                     return(MSK_DEL);
                 return(which("Delete",opts)|MSK_DEL);
-            case 'C':   /* Copy/Get */
-				if(!(mode&WIN_GET))
+            case 'C':   /* Copy */
+				if(!(mode&WIN_COPY))
 					break;
 				if(!opts)
     				break;
                 if(i>0 && i<=opts)
-        			return((i-1)|MSK_GET);
+        			return((i-1)|MSK_COPY);
                 if(opts==1)
-                    return(MSK_GET);
-                return(which("Copy",opts)|MSK_GET);
-            case 'P':   /* Paste/Put */
-				if(!(mode&WIN_PUT))
+                    return(MSK_COPY);
+                return(which("Copy",opts)|MSK_COPY);
+            case 'X':   /* Cut */
+				if(!(mode&WIN_COPY))
 					break;
 				if(!opts)
     				break;
                 if(i>0 && i<=opts)
-        			return((i-1)|MSK_PUT);
+        			return((i-1)|MSK_CUT);
                 if(opts==1)
-                    return(MSK_PUT);
-                return(which("Paste",opts)|MSK_PUT);
+                    return(MSK_CUT);
+                return(which("Cut",opts)|MSK_CUT);
+            case 'P':   /* Paste-Over */
+				if(!(mode&WIN_PASTE))
+					break;
+				if(!opts)
+    				break;
+                if(i>0 && i<=opts)
+        			return((i-1)|MSK_PASTE_OVER);
+                if(opts==1)
+                    return(MSK_PASTE_OVER);
+                return(which("Paste over",opts)|MSK_PASTE_OVER);
+            case 'I':   /* Paste-Insert */
+				if(!(mode&WIN_PASTE))
+					break;
+				if(!opts)
+    				break;
+                if(i>0 && i<=opts+1)
+        			return((i-1)|MSK_PASTE_INSERT);
+                if(opts==1)
+                    return(MSK_PASTE_INSERT);
+                return(which("Insert pasted item before",opts+1)|MSK_PASTE_INSERT);
         }
     }
 }
 
-
 /*************************************************************************/
 /* This function is a windowed input string input routine.               */
 /*************************************************************************/
-- 
GitLab