From: Arun Prakash Jana <engineerarun@gmail.com>
Date: Thu, 12 Dec 2019 19:06:30 +0000 (+0530)
Subject: Sync file paths correctly for clipboard copy
X-Git-Tag: v2.9~173
X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=5a46b8fb25b0f4f073920ca2b82ad96828475a99;p=nnn.git

Sync file paths correctly for clipboard copy
---

diff --git a/src/nnn.c b/src/nnn.c
index 2ad8f274..6fdae5a3 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -4864,26 +4864,34 @@ nochange:
 			if (rangesel)
 				rangesel = FALSE;
 
-			/* Write the path to selection file to avoid flush */
-			if (!(dents[cur].flags & FILE_SELECTED)) {
+			/* Toggle selection status */
+			dents[cur].flags ^= FILE_SELECTED;
+
+			if (dents[cur].flags & FILE_SELECTED) {
+				++nselected;
 				utmp = selbufpos;
 				selbufpos = lastappendpos;
 				appendfpath(newpath, mkpath(path, dents[cur].name, newpath));
 				writesel(pselbuf, selbufpos - 1); /* Truncate NULL from end */
-				if (cfg.x11)
-					plugscript(utils[UTIL_CBCP], newpath, F_NOWAIT | F_NOTRACE);
 				lastappendpos = selbufpos;
 				selbufpos = utmp;
+			} else {
+				--nselected;
+				if (nselected) {
+					utmp = selbufpos;
+					updateselbuf(path, newpath);
+					writesel(pselbuf, selbufpos - 1); /* Truncate NULL from end */
+					lastappendpos = selbufpos;
+					selbufpos = utmp;
+				} else
+					writesel(NULL, 0);
 			}
 
-			/* Toggle selection status */
-			dents[cur].flags ^= FILE_SELECTED;
-			(dents[cur].flags & FILE_SELECTED) ? ++nselected : --nselected;
+			if (cfg.x11)
+				plugscript(utils[UTIL_CBCP], newpath, F_NOWAIT | F_NOTRACE);
 
-			if (!nselected) {
-				writesel(NULL, 0);
+			if (!nselected)
 				unlink(g_selpath);
-			}
 
 			/* move cursor to the next entry if this is not the last entry */
 			if (!cfg.picker && cur != ndents - 1)