Fix #996: select all on 'A' with empty selection

This commit is contained in:
Arun Prakash Jana 2021-05-11 11:55:39 +05:30
parent e4c3f7d739
commit 466d138cc7
No known key found for this signature in database
GPG key ID: A75979F35C080412

View file

@ -1476,28 +1476,27 @@ static void invertselbuf(char *path, bool toggle)
{ {
selbufpos = lastappendpos; selbufpos = lastappendpos;
if (!nselected) { if (toggle || nselected) {
writesel(NULL, 0); size_t len = appendslash(path);
return;
}
size_t len = appendslash(path); for (int i = 0; i < ndents; ++i) {
if (toggle) { /* Toggle selection status */
pdents[i].flags ^= FILE_SELECTED;
pdents[i].flags & FILE_SELECTED ? ++nselected : --nselected;
}
for (int i = 0; i < ndents; ++i) { if (pdents[i].flags & FILE_SELECTED)
if (toggle) { /* Toggle selection status */ appendfpath(path,
pdents[i].flags ^= FILE_SELECTED; len + xstrsncpy(path + len, pdents[i].name, PATH_MAX - len));
pdents[i].flags & FILE_SELECTED ? ++nselected : --nselected;
} }
if (pdents[i].flags & FILE_SELECTED) if (len > 1)
appendfpath(path, len + xstrsncpy(path + len, pdents[i].name, PATH_MAX - len)); --len;
} path[len] = '\0';
if (len > 1) nselected ? writesel(pselbuf, selbufpos - 1) : writesel(NULL, 0);
--len; } else
path[len] = '\0'; writesel(NULL, 0);
writesel(pselbuf, selbufpos - 1); /* Truncate NULL from end */
} }
static void addtoselbuf(char *path, int startid, int endid) static void addtoselbuf(char *path, int startid, int endid)