From 5a46b8fb25b0f4f073920ca2b82ad96828475a99 Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Fri, 13 Dec 2019 00:36:30 +0530 Subject: [PATCH] Sync file paths correctly for clipboard copy --- src/nnn.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) 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)