mirror of
https://code.blicky.net/yorhel/ncdu.git
synced 2026-01-15 02:08:40 -09:00
Only sort directory when necessary
This commit is contained in:
parent
33cd126197
commit
ddd8a639b7
1 changed files with 15 additions and 5 deletions
|
|
@ -147,8 +147,11 @@ struct dir *browse_sort(struct dir *list) {
|
||||||
p = q;
|
p = q;
|
||||||
}
|
}
|
||||||
tail->next = NULL;
|
tail->next = NULL;
|
||||||
if(nmerges <= 1)
|
if(nmerges <= 1) {
|
||||||
|
if(list->parent)
|
||||||
|
list->parent->sub = list;
|
||||||
return list;
|
return list;
|
||||||
|
}
|
||||||
insize *= 2;
|
insize *= 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -255,10 +258,6 @@ int browse_draw() {
|
||||||
if(!cur)
|
if(!cur)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* TODO: don't sort when it's not necessary */
|
|
||||||
cur = browse_dir = browse_sort(cur);
|
|
||||||
cur->parent->sub = cur;
|
|
||||||
|
|
||||||
/* add reference to parent dir */
|
/* add reference to parent dir */
|
||||||
memset(&ref, 0, sizeof(struct dir));
|
memset(&ref, 0, sizeof(struct dir));
|
||||||
if(cur->parent->parent) {
|
if(cur->parent->parent) {
|
||||||
|
|
@ -337,6 +336,7 @@ void browse_key_sel(int change) {
|
||||||
|
|
||||||
int browse_key(int ch) {
|
int browse_key(int ch) {
|
||||||
char tmp[PATH_MAX];
|
char tmp[PATH_MAX];
|
||||||
|
char sort = 0;
|
||||||
struct dir *n;
|
struct dir *n;
|
||||||
|
|
||||||
switch(ch) {
|
switch(ch) {
|
||||||
|
|
@ -368,6 +368,7 @@ int browse_key(int ch) {
|
||||||
toggle(flags, BF_DESC);
|
toggle(flags, BF_DESC);
|
||||||
else
|
else
|
||||||
flags = (flags & BF_HIDE) + (flags & BF_NDIRF) + BF_NAME;
|
flags = (flags & BF_HIDE) + (flags & BF_NDIRF) + BF_NAME;
|
||||||
|
sort++;
|
||||||
break;
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
hideinfo;
|
hideinfo;
|
||||||
|
|
@ -375,6 +376,7 @@ int browse_key(int ch) {
|
||||||
toggle(flags, BF_DESC);
|
toggle(flags, BF_DESC);
|
||||||
else
|
else
|
||||||
flags = (flags & BF_HIDE) + (flags & BF_NDIRF) + BF_SIZE + BF_DESC;
|
flags = (flags & BF_HIDE) + (flags & BF_NDIRF) + BF_SIZE + BF_DESC;
|
||||||
|
sort++;
|
||||||
break;
|
break;
|
||||||
case 'h':
|
case 'h':
|
||||||
hideinfo;
|
hideinfo;
|
||||||
|
|
@ -384,6 +386,7 @@ int browse_key(int ch) {
|
||||||
case 't':
|
case 't':
|
||||||
hideinfo;
|
hideinfo;
|
||||||
toggle(flags, BF_NDIRF);
|
toggle(flags, BF_NDIRF);
|
||||||
|
sort++;
|
||||||
break;
|
break;
|
||||||
case 'a':
|
case 'a':
|
||||||
hideinfo;
|
hideinfo;
|
||||||
|
|
@ -401,17 +404,20 @@ int browse_key(int ch) {
|
||||||
browse_dir = n->sub;
|
browse_dir = n->sub;
|
||||||
if(n == NULL && browse_dir->parent->parent)
|
if(n == NULL && browse_dir->parent->parent)
|
||||||
browse_dir = browse_dir->parent->parent->sub;
|
browse_dir = browse_dir->parent->parent->sub;
|
||||||
|
sort++;
|
||||||
break;
|
break;
|
||||||
case KEY_LEFT:
|
case KEY_LEFT:
|
||||||
hideinfo;
|
hideinfo;
|
||||||
if(browse_dir->parent->parent != NULL)
|
if(browse_dir->parent->parent != NULL)
|
||||||
browse_dir = browse_dir->parent->parent->sub;
|
browse_dir = browse_dir->parent->parent->sub;
|
||||||
|
sort++;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* refresh */
|
/* refresh */
|
||||||
case 'r':
|
case 'r':
|
||||||
hideinfo;
|
hideinfo;
|
||||||
calc_init(getpath(browse_dir, tmp), browse_dir->parent);
|
calc_init(getpath(browse_dir, tmp), browse_dir->parent);
|
||||||
|
sort++;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* and other stuff */
|
/* and other stuff */
|
||||||
|
|
@ -440,6 +446,9 @@ int browse_key(int ch) {
|
||||||
break;
|
break;
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(sort)
|
||||||
|
browse_dir = browse_sort(browse_dir);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -450,5 +459,6 @@ void browse_init(struct dir *cur) {
|
||||||
browse_dir = cur->sub;
|
browse_dir = cur->sub;
|
||||||
else
|
else
|
||||||
browse_dir = cur;
|
browse_dir = cur;
|
||||||
|
browse_dir = browse_sort(browse_dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue