Panelize and sort - some fixes
Pavel Roskin
proski at gnu.org
Wed Nov 14 20:44:48 UTC 2001
Hello!
I have fixed sorting of the entries in the panelize mode (both after "find
file" and "external panelize"). Now you don't have to reselect "Sort
Order" in the menu to "actualize" the desired order - the entries will be
sorted from the beginning.
I also have fixed a bug that caused incorrect sorting on panels without
"..", which happens in the panelize mode. The first entry was excluded
from sort, regardless of whether it's ".." or not. Now it's sorted
together with other entries.
* dir.c (do_sort): Correctly handle the case when there is no
".." entry (i.e. panelized mode).
* panelize.c (do_external_panelize): Re-sort the panel according
to the current settings.
* find.c (do_find): Re-sort the panel according to the current
settings when doing panelizing.
---------------------------------
--- dir.c
+++ dir.c
@@ -316,10 +316,12 @@ void
do_sort (dir_list *list, sortfn *sort, int top, int reverse_f, int case_sensitive_f)
{
int i;
+ int dot_dot_found = 0;
file_entry tmp_fe;
for (i = 0; i < top + 1; i++) { /* put ".." first in list */
if (!strcmp (list->list [i].fname, "..")) {
+ dot_dot_found = 1;
if (i > 0) { /* swap [i] and [0] */
memcpy (&tmp_fe, &(list->list [0]), sizeof (file_entry));
memcpy (&(list->list [0]), &(list->list [i]), sizeof (file_entry));
@@ -331,7 +333,8 @@ do_sort (dir_list *list, sortfn *sort, i
reverse = reverse_f ? -1 : 1;
case_sensitive = case_sensitive_f;
- qsort (&(list->list) [1], top, sizeof (file_entry), sort);
+ qsort (&(list->list) [dot_dot_found],
+ top + 1 - dot_dot_found, sizeof (file_entry), sort);
}
void
--- find.c
+++ find.c
@@ -993,6 +993,7 @@ do_find (void)
if (v == B_PANELIZE){
if (dir_and_file_set){
try_to_select (cpanel, NULL);
+ panel_re_sort (cpanel);
paint_panel (cpanel);
}
break;
--- panelize.c
+++ panelize.c
@@ -448,5 +448,6 @@ void do_external_panelize (char *command
message (0, _("External panelize"), _("Pipe close failed"));
close_error_pipe (0, 0);
try_to_select (cpanel, NULL);
+ panel_re_sort (cpanel);
paint_panel (cpanel);
}
---------------------------------
--
Regards,
Pavel Roskin
More information about the mc-devel
mailing list