Fix only the last file path is copied to selection buffer

This commit is contained in:
Arun Prakash Jana 2019-12-06 22:24:35 +05:30
parent 9b384799b7
commit 3b2b6f2b46
No known key found for this signature in database
GPG Key ID: A75979F35C080412
1 changed files with 7 additions and 1 deletions

View File

@ -306,7 +306,7 @@ static int ndents, cur, curscroll, total_dents = ENTRY_INCR;
static int xlines, xcols; static int xlines, xcols;
static int nselected; static int nselected;
static uint idle; static uint idle;
static uint idletimeout, selbufpos, selbuflen; static uint idletimeout, selbufpos, lastappendpos, selbuflen;
static char *bmstr; static char *bmstr;
static char *pluginstr; static char *pluginstr;
static char *opener; static char *opener;
@ -1007,6 +1007,8 @@ static void startselection(void)
writesel(NULL, 0); writesel(NULL, 0);
selbufpos = 0; selbufpos = 0;
} }
lastappendpos = 0;
} }
} }
@ -4834,9 +4836,11 @@ nochange:
/* Write the path to selection file to avoid flush */ /* Write the path to selection file to avoid flush */
if (!(dents[cur].flags & FILE_SELECTED)) { if (!(dents[cur].flags & FILE_SELECTED)) {
utmp = selbufpos; utmp = selbufpos;
selbufpos = lastappendpos;
appendfpath(newpath, mkpath(path, dents[cur].name, newpath)); appendfpath(newpath, mkpath(path, dents[cur].name, newpath));
writesel(pselbuf, selbufpos - 1); /* Truncate NULL from end */ writesel(pselbuf, selbufpos - 1); /* Truncate NULL from end */
spawn(copier, NULL, NULL, NULL, F_NOTRACE); spawn(copier, NULL, NULL, NULL, F_NOTRACE);
lastappendpos = selbufpos;
selbufpos = utmp; selbufpos = utmp;
} }
@ -4901,6 +4905,7 @@ nochange:
/* Remember current selection buffer position */ /* Remember current selection buffer position */
utmp = selbufpos; utmp = selbufpos;
selbufpos = lastappendpos;
for (r = selstartid; r <= selendid; ++r) for (r = selstartid; r <= selendid; ++r)
if (!(dents[r].flags & FILE_SELECTED)) { if (!(dents[r].flags & FILE_SELECTED)) {
@ -4915,6 +4920,7 @@ nochange:
writesel(pselbuf, selbufpos - 1); /* Truncate NULL from end */ writesel(pselbuf, selbufpos - 1); /* Truncate NULL from end */
spawn(copier, NULL, NULL, NULL, F_NOTRACE); spawn(copier, NULL, NULL, NULL, F_NOTRACE);
/* Restore current selection buffer position */ /* Restore current selection buffer position */
lastappendpos = selbufpos;
selbufpos = utmp; selbufpos = utmp;
} }
continue; continue;