Hi,
the try_to_select function in screen.c does not behave as expected in
the following situation:
1. "find files" in a directory with subdirectories
2. "panelize"
3. select a file from a subdirectory that is also present in
the main directory. Press <F4>. Press <F10>.
4. mc now selects the file from the main directory instead of
keeping the selection on the file that has just been edited.
The appended patch fixes it. I have no idea why the code needs to strip
the subdirectory and the suffix, but it basically comes from revision
1.1, so it is undocumented. :(
Roland
Index: screen.c
===================================================================
RCS file: /cvsroot/mc/mc/src/screen.c,v
retrieving revision 1.219
diff -u -p -r1.219 screen.c
--- screen.c 11 Nov 2005 03:32:40 -0000 1.219
+++ screen.c 3 Feb 2006 14:16:32 -0000
@@ -873,22 +873,16 @@ static inline void
do_try_to_select (WPanel *panel, const char *name)
{
int i;
- char *subdir;
if (!name) {
do_select(panel, 0);
return;
}
- /* We only want the last component of the directory,
- * and from this only the name without suffix. */
- subdir = vfs_strip_suffix_from_filename (x_basename(name));
-
/* Search that subdirectory, if found select it */
for (i = 0; i < panel->count; i++){
- if (strcmp (subdir, panel->dir.list [i].fname) == 0) {
+ if (strcmp (name, panel->dir.list[i].fname) == 0) {
do_select (panel, i);
- g_free (subdir);
return;
}
}
@@ -896,7 +890,6 @@ do_try_to_select (WPanel *panel, const c
/* Try to select a file near the file that is missing */
if (panel->selected >= panel->count)
do_select (panel, panel->count-1);
- g_free (subdir);
}
void
_______________________________________________
Mc-devel mailing list
http://mail.gnome.org/mailman/listinfo/mc-devel