-
From 16ff3b68c40b4d95c4fe43a60ff6acf49563af11 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Tue, 5 Jul 2016 18:34:13 +0200
Subject: [PATCH 01/30] Add option and capability of filtering directories.
---
src/filemanager/boxes.c | 2 +-
src/filemanager/dir.c | 7 ++++++-
src/setup.c | 3 +++
src/setup.h | 1 +
4 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/src/filemanager/boxes.c b/src/filemanager/boxes.c
index 05d365a..43e30d3 100644
a
|
b
|
configure_box (void) |
519 | 519 | QUICK_CHECKBOX (N_("Cd follows lin&ks"), &mc_global.vfs.cd_symlinks, NULL), |
520 | 520 | QUICK_CHECKBOX (N_("Sa&fe delete"), &safe_delete, NULL), |
521 | 521 | QUICK_CHECKBOX (N_("A&uto save setup"), &auto_save_setup, NULL), |
522 | | QUICK_SEPARATOR (FALSE), |
| 522 | QUICK_CHECKBOX (N_("Filter directories"), &filter_dirs, NULL), |
523 | 523 | QUICK_SEPARATOR (FALSE), |
524 | 524 | QUICK_SEPARATOR (FALSE), |
525 | 525 | QUICK_STOP_GROUPBOX, |
-
diff --git a/src/filemanager/dir.c b/src/filemanager/dir.c
index 1b1557a..ad539d4 100644
a
|
b
|
handle_dirent (struct dirent *dp, const char *fltr, struct stat *buf1, int *link |
150 | 150 | int *stale_link) |
151 | 151 | { |
152 | 152 | vfs_path_t *vpath; |
| 153 | gboolean add_directory; |
153 | 154 | |
154 | 155 | if (DIR_IS_DOT (dp->d_name) || DIR_IS_DOTDOT (dp->d_name)) |
155 | 156 | return FALSE; |
… |
… |
handle_dirent (struct dirent *dp, const char *fltr, struct stat *buf1, int *link |
187 | 188 | |
188 | 189 | vfs_path_free (vpath); |
189 | 190 | |
190 | | return (S_ISDIR (buf1->st_mode) || *link_to_dir != 0 || fltr == NULL |
| 191 | add_directory = false; |
| 192 | if(!filter_dirs) |
| 193 | add_directory = S_ISDIR (buf1->st_mode); |
| 194 | |
| 195 | return (add_directory || *link_to_dir != 0 || fltr == NULL |
191 | 196 | || mc_search (fltr, NULL, dp->d_name, MC_SEARCH_T_GLOB)); |
192 | 197 | } |
193 | 198 | |
-
diff --git a/src/setup.c b/src/setup.c
index 951edb8..cad52b0 100644
a
|
b
|
int use_file_to_check_type = 1; |
169 | 169 | |
170 | 170 | int verbose = 1; |
171 | 171 | |
| 172 | int filter_dirs = 0; |
| 173 | |
172 | 174 | /* |
173 | 175 | * Whether the Midnight Commander tries to provide more |
174 | 176 | * information about copy/move sizes and bytes transferred |
… |
… |
static const struct |
367 | 369 | { "mcview_remember_file_position", &mcview_remember_file_position }, |
368 | 370 | { "auto_fill_mkdir_name", &auto_fill_mkdir_name }, |
369 | 371 | { "copymove_persistent_attr", &setup_copymove_persistent_attr }, |
| 372 | { "filter_dirs", &filter_dirs }, |
370 | 373 | { NULL, NULL } |
371 | 374 | }; |
372 | 375 | |
-
diff --git a/src/setup.h b/src/setup.h
index 58a8865..975b854 100644
a
|
b
|
struct mc_fhl_struct; |
76 | 76 | /* global paremeters */ |
77 | 77 | extern char *global_profile_name; |
78 | 78 | extern int confirm_delete; |
| 79 | extern int filter_dirs; |
79 | 80 | extern int confirm_directory_hotlist_delete; |
80 | 81 | extern int confirm_execute; |
81 | 82 | extern int confirm_exit; |
-
--
2.9.0
From 3d6494b130c026ced06d9442690eb0743a18eced Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Tue, 5 Jul 2016 20:39:51 +0200
Subject: [PATCH 02/30] Add simple quickfilter capabilites.
---
src/filemanager/boxes.c | 3 +-
src/filemanager/panel.c | 90 +++++++++++++++++++++++++++++++++++++++++++++++--
src/filemanager/panel.h | 3 ++
src/setup.c | 4 ++-
src/setup.h | 1 +
5 files changed, 96 insertions(+), 5 deletions(-)
diff --git a/src/filemanager/boxes.c b/src/filemanager/boxes.c
index 43e30d3..ccb7758 100644
a
|
b
|
panel_options_box (void) |
628 | 628 | QUICK_CHECKBOX (N_("Simple s&wap"), &simple_swap, NULL), |
629 | 629 | QUICK_CHECKBOX (N_("A&uto save panels setup"), &panels_options.auto_save_setup, |
630 | 630 | NULL), |
631 | | QUICK_SEPARATOR (FALSE), |
| 631 | QUICK_CHECKBOX (N_("Use Quickfilter"), &panels_options.use_quickfilter, |
| 632 | NULL), |
632 | 633 | QUICK_SEPARATOR (FALSE), |
633 | 634 | QUICK_SEPARATOR (FALSE), |
634 | 635 | QUICK_STOP_GROUPBOX, |
-
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index 19f8327..9b3d6ad 100644
a
|
b
|
adjust_top_file (WPanel * panel) |
1386 | 1386 | |
1387 | 1387 | /* --------------------------------------------------------------------------------------------- */ |
1388 | 1388 | /** add "#enc:encodning" to end of path */ |
1389 | | /* if path end width a previous #enc:, only encoding is changed no additional |
| 1389 | /* if path end width a previous #enc:, only encoding is changed no additional |
1390 | 1390 | * #enc: is appended |
1391 | 1391 | * retun new string |
1392 | 1392 | */ |
… |
… |
stop_search (WPanel * panel) |
2780 | 2780 | } |
2781 | 2781 | |
2782 | 2782 | /* --------------------------------------------------------------------------------------------- */ |
| 2783 | |
| 2784 | static void |
| 2785 | apply_quickpanel_filter (WPanel * p) |
| 2786 | { |
| 2787 | //TODO: add case insensitive capabilities! |
| 2788 | size_t l, fl; |
| 2789 | g_free (p->filter); |
| 2790 | p->filter = 0; |
| 2791 | |
| 2792 | l = strlen(p->quickfilter_buffer); |
| 2793 | fl = l + 2 + 1; // + 2 for *<filter>*, 1 for ending \0 |
| 2794 | p->filter = g_malloc(fl); |
| 2795 | if(p->filter) |
| 2796 | { |
| 2797 | p->filter[0] = '*'; |
| 2798 | memcpy(p->filter + 1, p->quickfilter_buffer, l); |
| 2799 | p->filter[fl - 2] = '*'; |
| 2800 | p->filter[fl - 1] = '\0'; |
| 2801 | } |
| 2802 | |
| 2803 | //Always reread cmd! |
| 2804 | reread_cmd (); |
| 2805 | } |
| 2806 | |
| 2807 | static void |
| 2808 | stop_quickfilter(WPanel * panel) |
| 2809 | { |
| 2810 | panel->quickfiltering = FALSE; |
| 2811 | panel->quickfilter_buffer[0] = '\0'; |
| 2812 | g_free(panel->filter); |
| 2813 | panel->filter = 0; |
| 2814 | reread_cmd (); |
| 2815 | } |
| 2816 | |
| 2817 | static void |
| 2818 | do_quickfilter(WPanel * panel, int key) |
| 2819 | { |
| 2820 | size_t l; |
| 2821 | l = strlen(panel->quickfilter_buffer); |
| 2822 | if(key == KEY_BACKSPACE) |
| 2823 | { |
| 2824 | if (l <= 1) |
| 2825 | { |
| 2826 | stop_quickfilter(panel); |
| 2827 | return; |
| 2828 | } |
| 2829 | panel->quickfilter_buffer[l - 1] = '\0'; |
| 2830 | } |
| 2831 | else |
| 2832 | { |
| 2833 | //TODO: Check if key results in empty panel |
| 2834 | panel->quickfilter_buffer[l] = (char) key; |
| 2835 | panel->quickfilter_buffer[l + 1] = '\0'; |
| 2836 | } |
| 2837 | apply_quickpanel_filter(panel); |
| 2838 | } |
| 2839 | |
| 2840 | static void |
| 2841 | start_quickfilter(WPanel * panel) |
| 2842 | { |
| 2843 | //Check if somebody used the normal filter already. |
| 2844 | if (panel->quickfiltering || !panel->filter) |
| 2845 | panel->quickfiltering = TRUE; |
| 2846 | return; |
| 2847 | } |
| 2848 | |
| 2849 | /* --------------------------------------------------------------------------------------------- */ |
2783 | 2850 | /** Return TRUE if the Enter key has been processed, FALSE otherwise */ |
2784 | 2851 | |
2785 | 2852 | static gboolean |
… |
… |
panel_key (WPanel * panel, int key) |
3615 | 3682 | return MSG_HANDLED; |
3616 | 3683 | } |
3617 | 3684 | |
| 3685 | if(panel->quickfiltering && ((key >= ' ' && key <= 255) || key == KEY_BACKSPACE)) |
| 3686 | { |
| 3687 | do_quickfilter(panel, key); |
| 3688 | return MSG_HANDLED; |
| 3689 | } |
| 3690 | |
3618 | 3691 | for (i = 0; panel_map[i].key != 0; i++) |
3619 | 3692 | if (key == panel_map[i].key) |
3620 | 3693 | return panel_execute_cmd (panel, panel_map[i].command); |
… |
… |
panel_key (WPanel * panel, int key) |
3627 | 3700 | |
3628 | 3701 | if (!command_prompt && ((key >= ' ' && key <= 255) || key == KEY_BACKSPACE)) |
3629 | 3702 | { |
3630 | | start_search (panel); |
3631 | | do_search (panel, key); |
| 3703 | if(!panels_options.use_quickfilter) |
| 3704 | { |
| 3705 | start_search (panel); |
| 3706 | do_search (panel, key); |
| 3707 | } |
| 3708 | else |
| 3709 | { |
| 3710 | start_quickfilter(panel); |
| 3711 | do_quickfilter(panel, key); |
| 3712 | } |
3632 | 3713 | return MSG_HANDLED; |
3633 | 3714 | } |
3634 | 3715 | |
… |
… |
panel_new_with_dir (const char *panel_name, const vfs_path_t * vpath) |
4322 | 4403 | panel->total = 0; |
4323 | 4404 | panel->dirty = 1; |
4324 | 4405 | panel->searching = FALSE; |
| 4406 | panel->quickfiltering = FALSE; |
4325 | 4407 | panel->dirs_marked = 0; |
4326 | 4408 | panel->is_panelized = FALSE; |
4327 | 4409 | panel->format = NULL; |
… |
… |
panel_new_with_dir (const char *panel_name, const vfs_path_t * vpath) |
4340 | 4422 | for (i = 0; i < LIST_TYPES; i++) |
4341 | 4423 | panel->user_status_format[i] = g_strdup (DEFAULT_USER_FORMAT); |
4342 | 4424 | |
| 4425 | panel->quickfilter_buffer[0] = '\0'; |
| 4426 | |
4343 | 4427 | panel->search_buffer[0] = '\0'; |
4344 | 4428 | panel->prev_search_buffer[0] = '\0'; |
4345 | 4429 | panel->frame_size = frame_half; |
-
diff --git a/src/filemanager/panel.h b/src/filemanager/panel.h
index d3f792e..0aa75f8 100644
a
|
b
|
typedef struct |
133 | 133 | int codepage; /* panel codepage */ |
134 | 134 | #endif |
135 | 135 | |
| 136 | gboolean quickfiltering; |
| 137 | char quickfilter_buffer[MC_MAXFILENAMELEN]; |
| 138 | |
136 | 139 | gboolean searching; |
137 | 140 | char search_buffer[MC_MAXFILENAMELEN]; |
138 | 141 | char prev_search_buffer[MC_MAXFILENAMELEN]; |
-
diff --git a/src/setup.c b/src/setup.c
index cad52b0..2dc7622 100644
a
|
b
|
panels_options_t panels_options = { |
145 | 145 | .permission_mode = FALSE, |
146 | 146 | .qsearch_mode = QSEARCH_PANEL_CASE, |
147 | 147 | .torben_fj_mode = FALSE, |
148 | | .select_flags = SELECT_MATCH_CASE | SELECT_SHELL_PATTERNS |
| 148 | .select_flags = SELECT_MATCH_CASE | SELECT_SHELL_PATTERNS, |
| 149 | .use_quickfilter = FALSE |
149 | 150 | }; |
150 | 151 | |
151 | 152 | int easy_patterns = 1; |
… |
… |
static const struct |
410 | 411 | { "filetype_mode", &panels_options.filetype_mode }, |
411 | 412 | { "permission_mode", &panels_options.permission_mode }, |
412 | 413 | { "torben_fj_mode", &panels_options.torben_fj_mode }, |
| 414 | { "use_quickfilter", &panels_options.use_quickfilter }, |
413 | 415 | { NULL, NULL } |
414 | 416 | }; |
415 | 417 | /* *INDENT-ON* */ |
-
diff --git a/src/setup.h b/src/setup.h
index 975b854..1576d4e 100644
a
|
b
|
typedef struct |
55 | 55 | qsearch_mode_t qsearch_mode; /* Quick search mode */ |
56 | 56 | gboolean torben_fj_mode; /* If TRUE, use some usability hacks by Torben */ |
57 | 57 | panel_select_flags_t select_flags; /* Select/unselect file flags */ |
| 58 | gboolean use_quickfilter; |
58 | 59 | } panels_options_t; |
59 | 60 | |
60 | 61 | typedef struct macro_action_t |
-
--
2.9.0
From fcb6860d581744f360c30a5524fb195c7f0677e1 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Tue, 5 Jul 2016 20:41:57 +0200
Subject: [PATCH 03/30] Automatically stop filter once a different command has
been entered.
---
src/filemanager/panel.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index 9b3d6ad..c05fcb6 100644
a
|
b
|
panel_execute_cmd (WPanel * panel, long command) |
3490 | 3490 | if (command != CK_Search) |
3491 | 3491 | stop_search (panel); |
3492 | 3492 | |
| 3493 | if(panel->quickfiltering) |
| 3494 | stop_quickfilter(panel); |
| 3495 | |
3493 | 3496 | switch (command) |
3494 | 3497 | { |
3495 | 3498 | case CK_Up: |
-
--
2.9.0
From 9b389eafb623b06a1e4f227977e0667f0ab1b4c2 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Tue, 5 Jul 2016 20:52:11 +0200
Subject: [PATCH 04/30] Be somehwat more differentiating at choosing when to
stop quickfiltering and when not
---
src/filemanager/panel.c | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index c05fcb6..a951463 100644
a
|
b
|
directory_history_list (WPanel * panel) |
3485 | 3485 | static cb_ret_t |
3486 | 3486 | panel_execute_cmd (WPanel * panel, long command) |
3487 | 3487 | { |
| 3488 | gboolean bstop_quickfilter = FALSE; |
3488 | 3489 | int res = MSG_HANDLED; |
3489 | 3490 | |
3490 | 3491 | if (command != CK_Search) |
3491 | 3492 | stop_search (panel); |
3492 | 3493 | |
3493 | | if(panel->quickfiltering) |
3494 | | stop_quickfilter(panel); |
3495 | | |
3496 | 3494 | switch (command) |
3497 | 3495 | { |
3498 | 3496 | case CK_Up: |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3514 | 3512 | { |
3515 | 3513 | case CK_PanelOtherCd: |
3516 | 3514 | chdir_other_panel (panel); |
| 3515 | bstop_quickfilter = TRUE; |
3517 | 3516 | break; |
3518 | 3517 | case CK_PanelOtherCdLink: |
3519 | 3518 | chdir_to_readlink (panel); |
| 3519 | bstop_quickfilter = TRUE; |
3520 | 3520 | break; |
3521 | 3521 | case CK_CopySingle: |
3522 | 3522 | copy_cmd_local (); |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3526 | 3526 | break; |
3527 | 3527 | case CK_Enter: |
3528 | 3528 | do_enter (panel); |
| 3529 | bstop_quickfilter = TRUE; |
3529 | 3530 | break; |
3530 | 3531 | case CK_ViewRaw: |
3531 | 3532 | view_raw_cmd (); |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3556 | 3557 | break; |
3557 | 3558 | case CK_CdChild: |
3558 | 3559 | goto_child_dir (panel); |
| 3560 | bstop_quickfilter = TRUE; |
3559 | 3561 | break; |
3560 | 3562 | case CK_CdParent: |
3561 | 3563 | goto_parent_dir (panel); |
| 3564 | bstop_quickfilter = TRUE; |
3562 | 3565 | break; |
3563 | 3566 | case CK_History: |
3564 | 3567 | directory_history_list (panel); |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3595 | 3598 | break; |
3596 | 3599 | case CK_CdParentSmart: |
3597 | 3600 | res = force_maybe_cd (); |
| 3601 | bstop_quickfilter = TRUE; |
3598 | 3602 | break; |
3599 | 3603 | case CK_Up: |
3600 | 3604 | move_up (panel); |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3604 | 3608 | break; |
3605 | 3609 | case CK_Left: |
3606 | 3610 | res = move_left (panel); |
| 3611 | bstop_quickfilter = TRUE; |
3607 | 3612 | break; |
3608 | 3613 | case CK_Right: |
3609 | 3614 | res = move_right (panel); |
| 3615 | bstop_quickfilter = TRUE; |
3610 | 3616 | break; |
3611 | 3617 | case CK_Bottom: |
3612 | 3618 | move_end (panel); |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3617 | 3623 | #ifdef HAVE_CHARSET |
3618 | 3624 | case CK_SelectCodepage: |
3619 | 3625 | panel_change_encoding (panel); |
| 3626 | bstop_quickfilter = TRUE; |
3620 | 3627 | break; |
3621 | 3628 | #endif |
3622 | 3629 | case CK_ScrollLeft: |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3627 | 3634 | break; |
3628 | 3635 | case CK_Search: |
3629 | 3636 | start_search (panel); |
| 3637 | bstop_quickfilter = TRUE; |
3630 | 3638 | break; |
3631 | 3639 | case CK_SearchStop: |
3632 | 3640 | break; |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3663 | 3671 | break; |
3664 | 3672 | } |
3665 | 3673 | |
| 3674 | if(bstop_quickfilter) |
| 3675 | { |
| 3676 | stop_quickfilter(panel); |
| 3677 | } |
| 3678 | |
3666 | 3679 | return res; |
3667 | 3680 | } |
3668 | 3681 | |
-
--
2.9.0
From f73ffa164aff0a679daefb84e548380ac2ba93e1 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Tue, 5 Jul 2016 20:56:56 +0200
Subject: [PATCH 05/30] Do pointer checks against NULL, only stop
quickfiltering if we actually were quickfiltering
---
src/filemanager/panel.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index a951463..d2d4326 100644
a
|
b
|
apply_quickpanel_filter (WPanel * p) |
2792 | 2792 | l = strlen(p->quickfilter_buffer); |
2793 | 2793 | fl = l + 2 + 1; // + 2 for *<filter>*, 1 for ending \0 |
2794 | 2794 | p->filter = g_malloc(fl); |
2795 | | if(p->filter) |
| 2795 | if(p->filter != NULL) |
2796 | 2796 | { |
2797 | 2797 | p->filter[0] = '*'; |
2798 | 2798 | memcpy(p->filter + 1, p->quickfilter_buffer, l); |
… |
… |
apply_quickpanel_filter (WPanel * p) |
2807 | 2807 | static void |
2808 | 2808 | stop_quickfilter(WPanel * panel) |
2809 | 2809 | { |
| 2810 | if (!panel->stop_quickfilter) |
| 2811 | { |
| 2812 | return; |
| 2813 | } |
2810 | 2814 | panel->quickfiltering = FALSE; |
2811 | 2815 | panel->quickfilter_buffer[0] = '\0'; |
2812 | 2816 | g_free(panel->filter); |
… |
… |
static void |
2841 | 2845 | start_quickfilter(WPanel * panel) |
2842 | 2846 | { |
2843 | 2847 | //Check if somebody used the normal filter already. |
2844 | | if (panel->quickfiltering || !panel->filter) |
| 2848 | if (panel->quickfiltering || panel->filter == NULL) |
2845 | 2849 | panel->quickfiltering = TRUE; |
2846 | 2850 | return; |
2847 | 2851 | } |
-
--
2.9.0
From 49466fe008847441f9530739e04f45f037014434 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Tue, 5 Jul 2016 21:01:20 +0200
Subject: [PATCH 06/30] Fix compile error due to incorrectly used identifier
---
src/filemanager/panel.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index d2d4326..aa2f218 100644
a
|
b
|
apply_quickpanel_filter (WPanel * p) |
2807 | 2807 | static void |
2808 | 2808 | stop_quickfilter(WPanel * panel) |
2809 | 2809 | { |
2810 | | if (!panel->stop_quickfilter) |
| 2810 | if (!panel->quickfiltering) |
2811 | 2811 | { |
2812 | 2812 | return; |
2813 | 2813 | } |
-
--
2.9.0
From 02f057dc0c6ae2e35ea7c3a485b8a08c82021d99 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Tue, 5 Jul 2016 21:27:19 +0200
Subject: [PATCH 07/30] Start work on allowing case insensitive quickfiltering
---
src/filemanager/boxes.c | 13 +++++++++++++
src/filemanager/panel.c | 5 +----
src/setup.c | 14 +++++++++++++-
src/setup.h | 8 ++++++++
4 files changed, 35 insertions(+), 5 deletions(-)
diff --git a/src/filemanager/boxes.c b/src/filemanager/boxes.c
index ccb7758..7358ce4 100644
a
|
b
|
panel_options_box (void) |
612 | 612 | N_("Use panel sort mo&de") |
613 | 613 | }; |
614 | 614 | |
| 615 | const char *qfilter_options[] = { |
| 616 | N_("Case insensitive"), |
| 617 | N_("Case sensitive") |
| 618 | }; |
| 619 | |
615 | 620 | quick_widget_t quick_widgets[] = { |
616 | 621 | /* *INDENT-OFF* */ |
617 | 622 | QUICK_START_COLUMNS, |
… |
… |
panel_options_box (void) |
632 | 637 | NULL), |
633 | 638 | QUICK_SEPARATOR (FALSE), |
634 | 639 | QUICK_SEPARATOR (FALSE), |
| 640 | QUICK_SEPARATOR (FALSE), |
| 641 | QUICK_SEPARATOR (FALSE), |
| 642 | QUICK_SEPARATOR (FALSE), |
| 643 | QUICK_SEPARATOR (FALSE), |
635 | 644 | QUICK_STOP_GROUPBOX, |
636 | 645 | QUICK_NEXT_COLUMN, |
637 | 646 | QUICK_START_GROUPBOX (N_("Navigation")), |
… |
… |
panel_options_box (void) |
650 | 659 | QUICK_RADIO (QSEARCH_NUM, qsearch_options, (int *) &panels_options.qsearch_mode, |
651 | 660 | NULL), |
652 | 661 | QUICK_STOP_GROUPBOX, |
| 662 | QUICK_START_GROUPBOX (N_("Quick filter")), |
| 663 | QUICK_RADIO (QFILTER_NUM, qfilter_options, (int *) &panels_options.qfilter_mode, |
| 664 | NULL), |
| 665 | QUICK_STOP_GROUPBOX, |
653 | 666 | QUICK_STOP_COLUMNS, |
654 | 667 | QUICK_BUTTONS_OK_CANCEL, |
655 | 668 | QUICK_END |
-
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index aa2f218..d63513e 100644
a
|
b
|
stop_search (WPanel * panel) |
2784 | 2784 | static void |
2785 | 2785 | apply_quickpanel_filter (WPanel * p) |
2786 | 2786 | { |
2787 | | //TODO: add case insensitive capabilities! |
2788 | 2787 | size_t l, fl; |
2789 | 2788 | g_free (p->filter); |
2790 | 2789 | p->filter = 0; |
2791 | 2790 | |
2792 | 2791 | l = strlen(p->quickfilter_buffer); |
2793 | | fl = l + 2 + 1; // + 2 for *<filter>*, 1 for ending \0 |
| 2792 | fl = l + 2 + 1; // + 2 for *<filter>*, 1 for trailing \0 |
2794 | 2793 | p->filter = g_malloc(fl); |
2795 | 2794 | if(p->filter != NULL) |
2796 | 2795 | { |
… |
… |
apply_quickpanel_filter (WPanel * p) |
2800 | 2799 | p->filter[fl - 1] = '\0'; |
2801 | 2800 | } |
2802 | 2801 | |
2803 | | //Always reread cmd! |
2804 | 2802 | reread_cmd (); |
2805 | 2803 | } |
2806 | 2804 | |
… |
… |
do_quickfilter(WPanel * panel, int key) |
2844 | 2842 | static void |
2845 | 2843 | start_quickfilter(WPanel * panel) |
2846 | 2844 | { |
2847 | | //Check if somebody used the normal filter already. |
2848 | 2845 | if (panel->quickfiltering || panel->filter == NULL) |
2849 | 2846 | panel->quickfiltering = TRUE; |
2850 | 2847 | return; |
-
diff --git a/src/setup.c b/src/setup.c
index 2dc7622..7d1fe16 100644
a
|
b
|
panels_options_t panels_options = { |
146 | 146 | .qsearch_mode = QSEARCH_PANEL_CASE, |
147 | 147 | .torben_fj_mode = FALSE, |
148 | 148 | .select_flags = SELECT_MATCH_CASE | SELECT_SHELL_PATTERNS, |
149 | | .use_quickfilter = FALSE |
| 149 | .use_quickfilter = FALSE, |
| 150 | .qfilter_mode = QFILTER_CASE_INSENSITIVE |
150 | 151 | }; |
151 | 152 | |
152 | 153 | int easy_patterns = 1; |
… |
… |
panels_load_options (void) |
860 | 861 | panels_options.select_flags = |
861 | 862 | mc_config_get_int (mc_global.main_config, CONFIG_PANELS_SECTION, "select_flags", |
862 | 863 | (int) panels_options.select_flags); |
| 864 | qmode = mc_config_get_int (mc_global.main_config, CONFIG_PANELS_SECTION, |
| 865 | "quick_filter_mode", (int) panels_options.qsearch_mode); |
| 866 | |
| 867 | if (qmode < 0) |
| 868 | panels_options.qsearch_mode = QFILTER_CASE_INSENSITIVE; |
| 869 | else if (qmode >= QFILTER_NUM) |
| 870 | panels_options.qsearch_mode = QFILTER_CASE_INSENSITIVE; |
| 871 | else |
| 872 | panels_options.qsearch_mode = (qsearch_mode_t) qmode; |
863 | 873 | } |
864 | 874 | } |
865 | 875 | |
… |
… |
panels_save_options (void) |
881 | 891 | "quick_search_mode", (int) panels_options.qsearch_mode); |
882 | 892 | mc_config_set_int (mc_global.main_config, CONFIG_PANELS_SECTION, |
883 | 893 | "select_flags", (int) panels_options.select_flags); |
| 894 | mc_config_set_int (mc_global.main_config, CONFIG_PANELS_SECTION, |
| 895 | "quick_filter_mode", (int) panels_options.qfilter_mode); |
884 | 896 | } |
885 | 897 | |
886 | 898 | /* --------------------------------------------------------------------------------------------- */ |
-
diff --git a/src/setup.h b/src/setup.h
index 1576d4e..c8bc038 100644
a
|
b
|
typedef enum |
29 | 29 | QSEARCH_NUM |
30 | 30 | } qsearch_mode_t; |
31 | 31 | |
| 32 | typedef enum |
| 33 | { |
| 34 | QFILTER_CASE_INSENSITIVE = 0, /* quick filter in case insensitive mode */ |
| 35 | QFILTER_CASE_SENSITIVE = 1, /* quick filter in case sensitive mode */ |
| 36 | QFILTER_NUM |
| 37 | } qfilter_mode_t; |
| 38 | |
32 | 39 | /*** structures declarations (and typedefs of structures)*****************************************/ |
33 | 40 | |
34 | 41 | /* panels ini options; [Panels] section */ |
… |
… |
typedef struct |
56 | 63 | gboolean torben_fj_mode; /* If TRUE, use some usability hacks by Torben */ |
57 | 64 | panel_select_flags_t select_flags; /* Select/unselect file flags */ |
58 | 65 | gboolean use_quickfilter; |
| 66 | qfilter_mode_t qfilter_mode; /* Quick search mode */ |
59 | 67 | } panels_options_t; |
60 | 68 | |
61 | 69 | typedef struct macro_action_t |
-
--
2.9.0
From aaba9c0472100c80bb24626771c0482af9513425 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Wed, 6 Jul 2016 19:04:55 +0200
Subject: [PATCH 08/30] Add a new function to start a case insensitive search.
Have the case sensitive search call parametrized version
---
lib/search.h | 3 +++
lib/search/search.c | 23 ++++++++++++++++++++---
2 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/lib/search.h b/lib/search.h
index 1c246c3..62ce34a 100644
a
|
b
|
gchar **mc_search_get_types_strings_array (size_t * num); |
164 | 164 | gboolean mc_search (const gchar * pattern, const gchar * pattern_charset, const gchar * str, |
165 | 165 | mc_search_type_t type); |
166 | 166 | |
| 167 | gboolean mc_search_case (const gchar * pattern, const gchar * pattern_charset, const gchar * str, |
| 168 | mc_search_type_t type, gboolean case_insensitive); |
| 169 | |
167 | 170 | int mc_search_getstart_result_by_num (mc_search_t *, int); |
168 | 171 | int mc_search_getend_result_by_num (mc_search_t *, int); |
169 | 172 | |
-
diff --git a/lib/search/search.c b/lib/search/search.c
index af33b73..c8224cb 100644
a
|
b
|
mc_search_is_fixed_search_str (mc_search_t * lc_mc_search) |
405 | 405 | } |
406 | 406 | |
407 | 407 | /* --------------------------------------------------------------------------------------------- */ |
408 | | /* Search specified pattern in specified string. |
| 408 | /* Search specified pattern case sensitive in specified string. |
409 | 409 | * |
410 | 410 | * @param pattern string to search |
411 | 411 | * @param pattern_charset charset of #pattern. If NULL then cp_display will be used |
… |
… |
mc_search_is_fixed_search_str (mc_search_t * lc_mc_search) |
414 | 414 | * |
415 | 415 | * @return TRUE if found is successful, FALSE otherwise. |
416 | 416 | */ |
417 | | |
418 | 417 | gboolean |
419 | 418 | mc_search (const gchar * pattern, const gchar * pattern_charset, const gchar * str, |
420 | 419 | mc_search_type_t type) |
421 | 420 | { |
| 421 | return mc_search_case (pattern, pattern_charset, str, type, FALSE); |
| 422 | } |
| 423 | |
| 424 | /* --------------------------------------------------------------------------------------------- */ |
| 425 | /* Search specified pattern in specified string. |
| 426 | * |
| 427 | * @param pattern string to search |
| 428 | * @param pattern_charset charset of #pattern. If NULL then cp_display will be used |
| 429 | * @param str string where search #pattern |
| 430 | * @param search type (normal, regex, hex or glob) |
| 431 | * @param search case insensitive |
| 432 | * |
| 433 | * @return TRUE if found is successful, FALSE otherwise. |
| 434 | */ |
| 435 | gboolean |
| 436 | mc_search_case (const gchar * pattern, const gchar * pattern_charset, const gchar * str, |
| 437 | mc_search_type_t type, gboolean case_insensitive) |
| 438 | { |
422 | 439 | gboolean ret; |
423 | 440 | mc_search_t *search; |
424 | 441 | |
… |
… |
mc_search (const gchar * pattern, const gchar * pattern_charset, const gchar * s |
430 | 447 | return FALSE; |
431 | 448 | |
432 | 449 | search->search_type = type; |
433 | | search->is_case_sensitive = TRUE; |
| 450 | search->is_case_sensitive = !case_insensitive; |
434 | 451 | |
435 | 452 | if (type == MC_SEARCH_T_GLOB) |
436 | 453 | search->is_entire_line = TRUE; |
-
--
2.9.0
From f13adeaf45c1278e581d03ceafb196211493e2f8 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Wed, 6 Jul 2016 19:05:31 +0200
Subject: [PATCH 09/30] Fix qfilter_mode not being restored correctly bug.
---
src/setup.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/src/setup.c b/src/setup.c
index 7d1fe16..f8e2281 100644
a
|
b
|
panels_options_t panels_options = { |
147 | 147 | .torben_fj_mode = FALSE, |
148 | 148 | .select_flags = SELECT_MATCH_CASE | SELECT_SHELL_PATTERNS, |
149 | 149 | .use_quickfilter = FALSE, |
150 | | .qfilter_mode = QFILTER_CASE_INSENSITIVE |
| 150 | .qfilter_mode = QFILTER_CASE_SENSITIVE |
151 | 151 | }; |
152 | 152 | |
153 | 153 | int easy_patterns = 1; |
… |
… |
panels_load_options (void) |
864 | 864 | qmode = mc_config_get_int (mc_global.main_config, CONFIG_PANELS_SECTION, |
865 | 865 | "quick_filter_mode", (int) panels_options.qsearch_mode); |
866 | 866 | |
867 | | if (qmode < 0) |
868 | | panels_options.qsearch_mode = QFILTER_CASE_INSENSITIVE; |
869 | | else if (qmode >= QFILTER_NUM) |
870 | | panels_options.qsearch_mode = QFILTER_CASE_INSENSITIVE; |
| 867 | if (qmode == QSEARCH_CASE_INSENSITIVE) |
| 868 | panels_options.qfilter_mode = QSEARCH_CASE_INSENSITIVE; |
871 | 869 | else |
872 | | panels_options.qsearch_mode = (qsearch_mode_t) qmode; |
| 870 | panels_options.qfilter_mode = QSEARCH_CASE_SENSITIVE; |
873 | 871 | } |
874 | 872 | } |
875 | 873 | |
-
--
2.9.0
From 7bf62a2528af57d17c70255688cbe2143adebfb4 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Wed, 6 Jul 2016 19:06:16 +0200
Subject: [PATCH 10/30] Add capability of applying case insensitive filter
---
src/filemanager/dir.c | 8 ++++--
src/filemanager/panel.c | 66 +++++++++++++++++++++++++++++++++++++++++--------
2 files changed, 62 insertions(+), 12 deletions(-)
diff --git a/src/filemanager/dir.c b/src/filemanager/dir.c
index ad539d4..b436285 100644
a
|
b
|
handle_dirent (struct dirent *dp, const char *fltr, struct stat *buf1, int *link |
150 | 150 | int *stale_link) |
151 | 151 | { |
152 | 152 | vfs_path_t *vpath; |
153 | | gboolean add_directory; |
| 153 | gboolean add_directory, case_insensitive_filter; |
154 | 154 | |
155 | 155 | if (DIR_IS_DOT (dp->d_name) || DIR_IS_DOTDOT (dp->d_name)) |
156 | 156 | return FALSE; |
… |
… |
handle_dirent (struct dirent *dp, const char *fltr, struct stat *buf1, int *link |
191 | 191 | add_directory = false; |
192 | 192 | if(!filter_dirs) |
193 | 193 | add_directory = S_ISDIR (buf1->st_mode); |
| 194 | case_insensitive_filter = FALSE; |
| 195 | if(panels_options.qfilter_mode == QFILTER_CASE_INSENSITIVE) |
| 196 | case_insensitive_filter = TRUE; |
194 | 197 | |
195 | 198 | return (add_directory || *link_to_dir != 0 || fltr == NULL |
196 | | || mc_search (fltr, NULL, dp->d_name, MC_SEARCH_T_GLOB)); |
| 199 | || mc_search_case (fltr, NULL, dp->d_name, MC_SEARCH_T_GLOB, |
| 200 | case_insensitive_filter)); |
197 | 201 | } |
198 | 202 | |
199 | 203 | /* --------------------------------------------------------------------------------------------- */ |
-
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index d63513e..b73efe6 100644
a
|
b
|
stop_search (WPanel * panel) |
2781 | 2781 | |
2782 | 2782 | /* --------------------------------------------------------------------------------------------- */ |
2783 | 2783 | |
2784 | | static void |
| 2784 | static gboolean |
2785 | 2785 | apply_quickpanel_filter (WPanel * p) |
2786 | 2786 | { |
2787 | 2787 | size_t l, fl; |
2788 | | g_free (p->filter); |
2789 | | p->filter = 0; |
| 2788 | int i; |
| 2789 | char* new_filter; |
| 2790 | mc_search_t *search; |
| 2791 | gboolean is_found; |
| 2792 | |
2790 | 2793 | |
2791 | 2794 | l = strlen(p->quickfilter_buffer); |
2792 | 2795 | fl = l + 2 + 1; // + 2 for *<filter>*, 1 for trailing \0 |
2793 | | p->filter = g_malloc(fl); |
2794 | | if(p->filter != NULL) |
| 2796 | new_filter = g_malloc(fl); |
| 2797 | |
| 2798 | //if malloc fails, applying the new filter also fails |
| 2799 | if(new_filter == NULL) |
| 2800 | return FALSE; |
| 2801 | |
| 2802 | new_filter[0] = '*'; |
| 2803 | memcpy(new_filter + 1, p->quickfilter_buffer, l); |
| 2804 | new_filter[fl - 2] = '*'; |
| 2805 | new_filter[fl - 1] = '\0'; |
| 2806 | |
| 2807 | //First check if search would result in empty directory |
| 2808 | search = mc_search_new (new_filter, NULL); |
| 2809 | search->search_type = MC_SEARCH_T_GLOB; |
| 2810 | search->is_entire_line = TRUE; |
| 2811 | |
| 2812 | switch (panels_options.qfilter_mode) |
| 2813 | { |
| 2814 | case QFILTER_CASE_SENSITIVE: |
| 2815 | search->is_case_sensitive = TRUE; |
| 2816 | break; |
| 2817 | case QFILTER_CASE_INSENSITIVE: |
| 2818 | search->is_case_sensitive = FALSE; |
| 2819 | break; |
| 2820 | default: |
| 2821 | search->is_case_sensitive = TRUE; |
| 2822 | break; |
| 2823 | } |
| 2824 | |
| 2825 | is_found = FALSE; |
| 2826 | for (i = 0; i < p->dir.len; ++i) |
| 2827 | { |
| 2828 | if (mc_search_run (search, p->dir.list[i].fname, 0, p->dir.list[i].fnamelen, NULL)) |
| 2829 | { |
| 2830 | is_found = TRUE; |
| 2831 | break; |
| 2832 | } |
| 2833 | } |
| 2834 | |
| 2835 | if(!is_found) |
2795 | 2836 | { |
2796 | | p->filter[0] = '*'; |
2797 | | memcpy(p->filter + 1, p->quickfilter_buffer, l); |
2798 | | p->filter[fl - 2] = '*'; |
2799 | | p->filter[fl - 1] = '\0'; |
| 2837 | g_free(new_filter); |
| 2838 | return FALSE; |
2800 | 2839 | } |
2801 | 2840 | |
| 2841 | g_free (p->filter); |
| 2842 | p->filter = new_filter; |
| 2843 | |
2802 | 2844 | reread_cmd (); |
| 2845 | return TRUE; |
2803 | 2846 | } |
2804 | 2847 | |
2805 | 2848 | static void |
… |
… |
do_quickfilter(WPanel * panel, int key) |
2836 | 2879 | panel->quickfilter_buffer[l] = (char) key; |
2837 | 2880 | panel->quickfilter_buffer[l + 1] = '\0'; |
2838 | 2881 | } |
2839 | | apply_quickpanel_filter(panel); |
| 2882 | if (!apply_quickpanel_filter(panel) && key != KEY_BACKSPACE) |
| 2883 | { |
| 2884 | panel->quickfilter_buffer[l] = '\0'; |
| 2885 | } |
2840 | 2886 | } |
2841 | 2887 | |
2842 | 2888 | static void |
-
--
2.9.0
From 200d41f17420dd71f2942b2b0959016ca079f66f Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Wed, 6 Jul 2016 19:07:13 +0200
Subject: [PATCH 11/30] Rename option so it is more fitting for the implemented
behavior
---
src/filemanager/boxes.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/filemanager/boxes.c b/src/filemanager/boxes.c
index 7358ce4..b9b3c5b 100644
a
|
b
|
panel_options_box (void) |
659 | 659 | QUICK_RADIO (QSEARCH_NUM, qsearch_options, (int *) &panels_options.qsearch_mode, |
660 | 660 | NULL), |
661 | 661 | QUICK_STOP_GROUPBOX, |
662 | | QUICK_START_GROUPBOX (N_("Quick filter")), |
| 662 | QUICK_START_GROUPBOX (N_("Filter case")), |
663 | 663 | QUICK_RADIO (QFILTER_NUM, qfilter_options, (int *) &panels_options.qfilter_mode, |
664 | 664 | NULL), |
665 | 665 | QUICK_STOP_GROUPBOX, |
-
--
2.9.0
From c83995e803feddca6bb76ed568ba9b47b6fe418c Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Wed, 6 Jul 2016 19:19:54 +0200
Subject: [PATCH 12/30] rename qfilter_mode to filter_mode due to different
semantics
---
src/filemanager/boxes.c | 2 +-
src/filemanager/dir.c | 2 +-
src/filemanager/panel.c | 2 +-
src/setup.c | 10 +++++-----
src/setup.h | 4 ++--
5 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/src/filemanager/boxes.c b/src/filemanager/boxes.c
index b9b3c5b..153ec0c 100644
a
|
b
|
panel_options_box (void) |
660 | 660 | NULL), |
661 | 661 | QUICK_STOP_GROUPBOX, |
662 | 662 | QUICK_START_GROUPBOX (N_("Filter case")), |
663 | | QUICK_RADIO (QFILTER_NUM, qfilter_options, (int *) &panels_options.qfilter_mode, |
| 663 | QUICK_RADIO (QFILTER_NUM, qfilter_options, (int *) &panels_options.filter_mode, |
664 | 664 | NULL), |
665 | 665 | QUICK_STOP_GROUPBOX, |
666 | 666 | QUICK_STOP_COLUMNS, |
-
diff --git a/src/filemanager/dir.c b/src/filemanager/dir.c
index b436285..2872f7f 100644
a
|
b
|
handle_dirent (struct dirent *dp, const char *fltr, struct stat *buf1, int *link |
192 | 192 | if(!filter_dirs) |
193 | 193 | add_directory = S_ISDIR (buf1->st_mode); |
194 | 194 | case_insensitive_filter = FALSE; |
195 | | if(panels_options.qfilter_mode == QFILTER_CASE_INSENSITIVE) |
| 195 | if(panels_options.filter_mode == QFILTER_CASE_INSENSITIVE) |
196 | 196 | case_insensitive_filter = TRUE; |
197 | 197 | |
198 | 198 | return (add_directory || *link_to_dir != 0 || fltr == NULL |
-
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index b73efe6..9b1f78b 100644
a
|
b
|
apply_quickpanel_filter (WPanel * p) |
2809 | 2809 | search->search_type = MC_SEARCH_T_GLOB; |
2810 | 2810 | search->is_entire_line = TRUE; |
2811 | 2811 | |
2812 | | switch (panels_options.qfilter_mode) |
| 2812 | switch (panels_options.filter_mode) |
2813 | 2813 | { |
2814 | 2814 | case QFILTER_CASE_SENSITIVE: |
2815 | 2815 | search->is_case_sensitive = TRUE; |
-
diff --git a/src/setup.c b/src/setup.c
index f8e2281..dfbb64f 100644
a
|
b
|
panels_options_t panels_options = { |
147 | 147 | .torben_fj_mode = FALSE, |
148 | 148 | .select_flags = SELECT_MATCH_CASE | SELECT_SHELL_PATTERNS, |
149 | 149 | .use_quickfilter = FALSE, |
150 | | .qfilter_mode = QFILTER_CASE_SENSITIVE |
| 150 | .filter_mode = QFILTER_CASE_SENSITIVE |
151 | 151 | }; |
152 | 152 | |
153 | 153 | int easy_patterns = 1; |
… |
… |
panels_load_options (void) |
864 | 864 | qmode = mc_config_get_int (mc_global.main_config, CONFIG_PANELS_SECTION, |
865 | 865 | "quick_filter_mode", (int) panels_options.qsearch_mode); |
866 | 866 | |
867 | | if (qmode == QSEARCH_CASE_INSENSITIVE) |
868 | | panels_options.qfilter_mode = QSEARCH_CASE_INSENSITIVE; |
| 867 | if (qmode == QFILTER_CASE_INSENSITIVE) |
| 868 | panels_options.filter_mode = QFILTER_CASE_INSENSITIVE; |
869 | 869 | else |
870 | | panels_options.qfilter_mode = QSEARCH_CASE_SENSITIVE; |
| 870 | panels_options.filter_mode = QFILTER_CASE_SENSITIVE; |
871 | 871 | } |
872 | 872 | } |
873 | 873 | |
… |
… |
panels_save_options (void) |
890 | 890 | mc_config_set_int (mc_global.main_config, CONFIG_PANELS_SECTION, |
891 | 891 | "select_flags", (int) panels_options.select_flags); |
892 | 892 | mc_config_set_int (mc_global.main_config, CONFIG_PANELS_SECTION, |
893 | | "quick_filter_mode", (int) panels_options.qfilter_mode); |
| 893 | "quick_filter_mode", (int) panels_options.filter_mode); |
894 | 894 | } |
895 | 895 | |
896 | 896 | /* --------------------------------------------------------------------------------------------- */ |
-
diff --git a/src/setup.h b/src/setup.h
index c8bc038..e8e7a11 100644
a
|
b
|
typedef enum |
34 | 34 | QFILTER_CASE_INSENSITIVE = 0, /* quick filter in case insensitive mode */ |
35 | 35 | QFILTER_CASE_SENSITIVE = 1, /* quick filter in case sensitive mode */ |
36 | 36 | QFILTER_NUM |
37 | | } qfilter_mode_t; |
| 37 | } filter_mode_t; |
38 | 38 | |
39 | 39 | /*** structures declarations (and typedefs of structures)*****************************************/ |
40 | 40 | |
… |
… |
typedef struct |
63 | 63 | gboolean torben_fj_mode; /* If TRUE, use some usability hacks by Torben */ |
64 | 64 | panel_select_flags_t select_flags; /* Select/unselect file flags */ |
65 | 65 | gboolean use_quickfilter; |
66 | | qfilter_mode_t qfilter_mode; /* Quick search mode */ |
| 66 | filter_mode_t filter_mode; /* Quick search mode */ |
67 | 67 | } panels_options_t; |
68 | 68 | |
69 | 69 | typedef struct macro_action_t |
-
--
2.9.0
From 0273aaf89d65891fc157a827db24a55dfe309339 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Wed, 6 Jul 2016 19:20:24 +0200
Subject: [PATCH 13/30] Rename filter_mode save string
---
src/setup.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/setup.c b/src/setup.c
index dfbb64f..5847505 100644
a
|
b
|
panels_load_options (void) |
862 | 862 | mc_config_get_int (mc_global.main_config, CONFIG_PANELS_SECTION, "select_flags", |
863 | 863 | (int) panels_options.select_flags); |
864 | 864 | qmode = mc_config_get_int (mc_global.main_config, CONFIG_PANELS_SECTION, |
865 | | "quick_filter_mode", (int) panels_options.qsearch_mode); |
| 865 | "filter_mode", (int) panels_options.qsearch_mode); |
866 | 866 | |
867 | 867 | if (qmode == QFILTER_CASE_INSENSITIVE) |
868 | 868 | panels_options.filter_mode = QFILTER_CASE_INSENSITIVE; |
… |
… |
panels_save_options (void) |
890 | 890 | mc_config_set_int (mc_global.main_config, CONFIG_PANELS_SECTION, |
891 | 891 | "select_flags", (int) panels_options.select_flags); |
892 | 892 | mc_config_set_int (mc_global.main_config, CONFIG_PANELS_SECTION, |
893 | | "quick_filter_mode", (int) panels_options.filter_mode); |
| 893 | "filter_mode", (int) panels_options.filter_mode); |
894 | 894 | } |
895 | 895 | |
896 | 896 | /* --------------------------------------------------------------------------------------------- */ |
-
--
2.9.0
From 1fa7783f3c8d1efeb0f923075a7d9effa85c9ce4 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Wed, 6 Jul 2016 19:34:21 +0200
Subject: [PATCH 14/30] Applying the filter via the menu overrides the
quickfilter
---
src/filemanager/cmd.c | 1 +
src/filemanager/panel.c | 42 +++++++++++++++++++++++++++---------------
src/filemanager/panel.h | 2 ++
3 files changed, 30 insertions(+), 15 deletions(-)
diff --git a/src/filemanager/cmd.c b/src/filemanager/cmd.c
index 1884589..4608010 100644
a
|
b
|
do_edit (const vfs_path_t * what_vpath) |
171 | 171 | static void |
172 | 172 | set_panel_filter_to (WPanel * p, char *allocated_filter_string) |
173 | 173 | { |
| 174 | stop_quickfilter(p); |
174 | 175 | g_free (p->filter); |
175 | 176 | p->filter = 0; |
176 | 177 | |
-
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index 9b1f78b..6b97aa9 100644
a
|
b
|
stop_search (WPanel * panel) |
2780 | 2780 | } |
2781 | 2781 | |
2782 | 2782 | /* --------------------------------------------------------------------------------------------- */ |
| 2783 | /* Try to apply the quickfilter_buffer to the current directory. |
| 2784 | * Checks that applying the filter will not result in an empty directory. |
| 2785 | * |
| 2786 | * @return TRUE if it could be applied, FALSE otherwise. |
| 2787 | */ |
2783 | 2788 | |
2784 | 2789 | static gboolean |
2785 | 2790 | apply_quickpanel_filter (WPanel * p) |
… |
… |
apply_quickpanel_filter (WPanel * p) |
2845 | 2850 | return TRUE; |
2846 | 2851 | } |
2847 | 2852 | |
2848 | | static void |
2849 | | stop_quickfilter(WPanel * panel) |
2850 | | { |
2851 | | if (!panel->quickfiltering) |
2852 | | { |
2853 | | return; |
2854 | | } |
2855 | | panel->quickfiltering = FALSE; |
2856 | | panel->quickfilter_buffer[0] = '\0'; |
2857 | | g_free(panel->filter); |
2858 | | panel->filter = 0; |
2859 | | reread_cmd (); |
2860 | | } |
| 2853 | /* --------------------------------------------------------------------------------------------- */ |
2861 | 2854 | |
2862 | 2855 | static void |
2863 | 2856 | do_quickfilter(WPanel * panel, int key) |
… |
… |
do_quickfilter(WPanel * panel, int key) |
2885 | 2878 | } |
2886 | 2879 | } |
2887 | 2880 | |
| 2881 | /* --------------------------------------------------------------------------------------------- */ |
| 2882 | |
2888 | 2883 | static void |
2889 | 2884 | start_quickfilter(WPanel * panel) |
2890 | 2885 | { |
… |
… |
panel_key (WPanel * panel, int key) |
3767 | 3762 | { |
3768 | 3763 | start_search (panel); |
3769 | 3764 | do_search (panel, key); |
| 3765 | return MSG_HANDLED; |
3770 | 3766 | } |
3771 | | else |
| 3767 | else if(panel->filter == NULL) |
3772 | 3768 | { |
3773 | 3769 | start_quickfilter(panel); |
3774 | 3770 | do_quickfilter(panel, key); |
| 3771 | return MSG_HANDLED; |
3775 | 3772 | } |
3776 | | return MSG_HANDLED; |
3777 | 3773 | } |
3778 | 3774 | |
3779 | 3775 | return MSG_NOT_HANDLED; |
… |
… |
do_cd (const vfs_path_t * new_dir_vpath, enum cd_enum exact) |
5219 | 5215 | } |
5220 | 5216 | |
5221 | 5217 | /* --------------------------------------------------------------------------------------------- */ |
| 5218 | |
| 5219 | void |
| 5220 | stop_quickfilter(WPanel * panel) |
| 5221 | { |
| 5222 | if (!panel->quickfiltering) |
| 5223 | { |
| 5224 | return; |
| 5225 | } |
| 5226 | panel->quickfiltering = FALSE; |
| 5227 | panel->quickfilter_buffer[0] = '\0'; |
| 5228 | g_free(panel->filter); |
| 5229 | panel->filter = 0; |
| 5230 | reread_cmd (); |
| 5231 | } |
| 5232 | |
| 5233 | /* --------------------------------------------------------------------------------------------- */ |
-
diff --git a/src/filemanager/panel.h b/src/filemanager/panel.h
index 0aa75f8..955cb6b 100644
a
|
b
|
void panel_init (void); |
196 | 196 | void panel_deinit (void); |
197 | 197 | gboolean do_cd (const vfs_path_t * new_dir_vpath, enum cd_enum cd_type); |
198 | 198 | |
| 199 | void stop_quickfilter(WPanel * panel); |
| 200 | |
199 | 201 | /* --------------------------------------------------------------------------------------------- */ |
200 | 202 | /*** inline functions ****************************************************************************/ |
201 | 203 | /* --------------------------------------------------------------------------------------------- */ |
-
--
2.9.0
From 3dd5a28cefb8fc4fb76e8f29c7f7ba98f1e2b068 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Wed, 6 Jul 2016 20:42:22 +0200
Subject: [PATCH 15/30] Add an options for applying filter to .. directory
---
src/filemanager/boxes.c | 2 +-
src/setup.c | 2 ++
src/setup.h | 1 +
3 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/filemanager/boxes.c b/src/filemanager/boxes.c
index 153ec0c..04833df 100644
a
|
b
|
configure_box (void) |
520 | 520 | QUICK_CHECKBOX (N_("Sa&fe delete"), &safe_delete, NULL), |
521 | 521 | QUICK_CHECKBOX (N_("A&uto save setup"), &auto_save_setup, NULL), |
522 | 522 | QUICK_CHECKBOX (N_("Filter directories"), &filter_dirs, NULL), |
523 | | QUICK_SEPARATOR (FALSE), |
| 523 | QUICK_CHECKBOX (N_("Filter .. directory"), &filter_dotdot_dir, NULL), |
524 | 524 | QUICK_SEPARATOR (FALSE), |
525 | 525 | QUICK_STOP_GROUPBOX, |
526 | 526 | QUICK_STOP_COLUMNS, |
-
diff --git a/src/setup.c b/src/setup.c
index 5847505..943aedf 100644
a
|
b
|
int use_file_to_check_type = 1; |
172 | 172 | int verbose = 1; |
173 | 173 | |
174 | 174 | int filter_dirs = 0; |
| 175 | int filter_dotdot_dir = 0; |
175 | 176 | |
176 | 177 | /* |
177 | 178 | * Whether the Midnight Commander tries to provide more |
… |
… |
static const struct |
372 | 373 | { "auto_fill_mkdir_name", &auto_fill_mkdir_name }, |
373 | 374 | { "copymove_persistent_attr", &setup_copymove_persistent_attr }, |
374 | 375 | { "filter_dirs", &filter_dirs }, |
| 376 | { "filter_dotdot_dir", &filter_dotdot_dir }, |
375 | 377 | { NULL, NULL } |
376 | 378 | }; |
377 | 379 | |
-
diff --git a/src/setup.h b/src/setup.h
index e8e7a11..4507ad3 100644
a
|
b
|
struct mc_fhl_struct; |
86 | 86 | extern char *global_profile_name; |
87 | 87 | extern int confirm_delete; |
88 | 88 | extern int filter_dirs; |
| 89 | extern int filter_dotdot_dir; |
89 | 90 | extern int confirm_directory_hotlist_delete; |
90 | 91 | extern int confirm_execute; |
91 | 92 | extern int confirm_exit; |
-
--
2.9.0
From 00e6a7e52835f146f222471d182d9f9badde3301 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Wed, 6 Jul 2016 20:44:20 +0200
Subject: [PATCH 16/30] Allow filtering of .. directory. Couple of bugfixes
resulting from filtering ..
---
src/filemanager/cmd.c | 2 +-
src/filemanager/dir.c | 31 ++++++++++++++++++++++---------
src/filemanager/dir.h | 1 +
src/filemanager/panel.c | 37 ++++++++++++++++---------------------
src/filemanager/panel.h | 2 +-
5 files changed, 41 insertions(+), 32 deletions(-)
diff --git a/src/filemanager/cmd.c b/src/filemanager/cmd.c
index 4608010..4ffdd9d 100644
a
|
b
|
do_edit (const vfs_path_t * what_vpath) |
171 | 171 | static void |
172 | 172 | set_panel_filter_to (WPanel * p, char *allocated_filter_string) |
173 | 173 | { |
174 | | stop_quickfilter(p); |
| 174 | stop_quickfilter(p, FALSE); |
175 | 175 | g_free (p->filter); |
176 | 176 | p->filter = 0; |
177 | 177 | |
-
diff --git a/src/filemanager/dir.c b/src/filemanager/dir.c
index 2872f7f..a3979af 100644
a
|
b
|
handle_dirent (struct dirent *dp, const char *fltr, struct stat *buf1, int *link |
190 | 190 | |
191 | 191 | add_directory = false; |
192 | 192 | if(!filter_dirs) |
193 | | add_directory = S_ISDIR (buf1->st_mode); |
| 193 | add_directory = S_ISDIR (buf1->st_mode) || *link_to_dir != 0; |
194 | 194 | case_insensitive_filter = FALSE; |
195 | 195 | if(panels_options.filter_mode == QFILTER_CASE_INSENSITIVE) |
196 | 196 | case_insensitive_filter = TRUE; |
197 | 197 | |
198 | | return (add_directory || *link_to_dir != 0 || fltr == NULL |
199 | | || mc_search_case (fltr, NULL, dp->d_name, MC_SEARCH_T_GLOB, |
200 | | case_insensitive_filter)); |
| 198 | return (add_directory || fltr == NULL || |
| 199 | mc_search_case (fltr, NULL, dp->d_name, MC_SEARCH_T_GLOB, case_insensitive_filter)); |
201 | 200 | } |
202 | 201 | |
203 | 202 | /* --------------------------------------------------------------------------------------------- */ |
… |
… |
dir_list_clean (dir_list * list) |
555 | 554 | } |
556 | 555 | |
557 | 556 | /* --------------------------------------------------------------------------------------------- */ |
558 | | /** Used to set up a directory list when there is no access to a directory */ |
559 | 557 | |
560 | 558 | gboolean |
561 | 559 | dir_list_init (dir_list * list) |
562 | 560 | { |
| 561 | return dir_list_init_general(list, NULL); |
| 562 | } |
| 563 | |
| 564 | /* --------------------------------------------------------------------------------------------- */ |
| 565 | /** Used to set up a directory list when there is no access to a directory */ |
| 566 | |
| 567 | gboolean |
| 568 | dir_list_init_general (dir_list * list, const char *fltr) |
| 569 | { |
563 | 570 | file_entry_t *fentry; |
564 | 571 | |
565 | 572 | /* Need to grow the *list? */ |
… |
… |
dir_list_init (dir_list * list) |
569 | 576 | return FALSE; |
570 | 577 | } |
571 | 578 | |
| 579 | if(filter_dotdot_dir && fltr && !mc_search(fltr, NULL, "..", MC_SEARCH_T_GLOB)) |
| 580 | { |
| 581 | list->len = 0; |
| 582 | return TRUE; |
| 583 | } |
572 | 584 | fentry = &list->list[0]; |
573 | 585 | memset (fentry, 0, sizeof (*fentry)); |
574 | 586 | fentry->fnamelen = 2; |
… |
… |
dir_list_load (dir_list * list, const vfs_path_t * vpath, GCompareFunc sort, |
641 | 653 | const char *vpath_str; |
642 | 654 | |
643 | 655 | /* ".." (if any) must be the first entry in the list */ |
644 | | if (!dir_list_init (list)) |
| 656 | if (!dir_list_init_general (list, fltr)) |
645 | 657 | return; |
646 | 658 | |
647 | 659 | fentry = &list->list[0]; |
648 | | if (dir_get_dotdot_stat (vpath, &st)) |
| 660 | if (list->len > 0 && dir_get_dotdot_stat (vpath, &st)) |
649 | 661 | fentry->st = st; |
650 | 662 | |
651 | 663 | dirp = mc_opendir (vpath); |
… |
… |
dir_list_reload (dir_list * list, const vfs_path_t * vpath, GCompareFunc sort, |
758 | 770 | else |
759 | 771 | { |
760 | 772 | dir_list_clean (list); |
761 | | if (!dir_list_init (list)) |
| 773 | |
| 774 | if (!dir_list_init_general (list, fltr)) |
762 | 775 | { |
763 | 776 | dir_list_clean (&dir_copy); |
764 | 777 | return; |
765 | 778 | } |
766 | 779 | |
767 | | if (dir_get_dotdot_stat (vpath, &st)) |
| 780 | if (list->len > 0 && dir_get_dotdot_stat (vpath, &st)) |
768 | 781 | { |
769 | 782 | file_entry_t *fentry; |
770 | 783 | |
-
diff --git a/src/filemanager/dir.h b/src/filemanager/dir.h
index a87e92d..8d72257 100644
a
|
b
|
void dir_list_reload (dir_list * list, const vfs_path_t * vpath, GCompareFunc so |
54 | 54 | const dir_sort_options_t * sort_op, const char *fltr); |
55 | 55 | void dir_list_sort (dir_list * list, GCompareFunc sort, const dir_sort_options_t * sort_op); |
56 | 56 | gboolean dir_list_init (dir_list * list); |
| 57 | gboolean dir_list_init_general (dir_list * list, const char *fltr); |
57 | 58 | void dir_list_clean (dir_list * list); |
58 | 59 | gboolean handle_path (const char *path, struct stat *buf1, int *link_to_dir, int *stale_link); |
59 | 60 | |
-
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index 6b97aa9..3bd114c 100644
a
|
b
|
do_quickfilter(WPanel * panel, int key) |
2861 | 2861 | { |
2862 | 2862 | if (l <= 1) |
2863 | 2863 | { |
2864 | | stop_quickfilter(panel); |
| 2864 | stop_quickfilter(panel, TRUE); |
2865 | 2865 | return; |
2866 | 2866 | } |
2867 | 2867 | panel->quickfilter_buffer[l - 1] = '\0'; |
… |
… |
directory_history_list (WPanel * panel) |
3483 | 3483 | gboolean ok = FALSE; |
3484 | 3484 | size_t pos; |
3485 | 3485 | |
3486 | | pos = g_list_position (panel->dir_history_current, panel->dir_history); |
| 3486 | pos = g_list_position (panel->dir_history_current, panel->dir_history); |
3487 | 3487 | |
3488 | 3488 | s = history_show (&panel->dir_history, WIDGET (panel), pos); |
3489 | 3489 | if (s != NULL) |
… |
… |
directory_history_list (WPanel * panel) |
3527 | 3527 | static cb_ret_t |
3528 | 3528 | panel_execute_cmd (WPanel * panel, long command) |
3529 | 3529 | { |
3530 | | gboolean bstop_quickfilter = FALSE; |
3531 | 3530 | int res = MSG_HANDLED; |
3532 | 3531 | |
3533 | 3532 | if (command != CK_Search) |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3553 | 3552 | switch (command) |
3554 | 3553 | { |
3555 | 3554 | case CK_PanelOtherCd: |
| 3555 | stop_quickfilter(panel, FALSE); |
3556 | 3556 | chdir_other_panel (panel); |
3557 | | bstop_quickfilter = TRUE; |
3558 | 3557 | break; |
3559 | 3558 | case CK_PanelOtherCdLink: |
| 3559 | stop_quickfilter(panel, FALSE); |
3560 | 3560 | chdir_to_readlink (panel); |
3561 | | bstop_quickfilter = TRUE; |
3562 | 3561 | break; |
3563 | 3562 | case CK_CopySingle: |
3564 | 3563 | copy_cmd_local (); |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3567 | 3566 | delete_cmd_local (); |
3568 | 3567 | break; |
3569 | 3568 | case CK_Enter: |
| 3569 | stop_quickfilter(panel, FALSE); |
3570 | 3570 | do_enter (panel); |
3571 | | bstop_quickfilter = TRUE; |
3572 | 3571 | break; |
3573 | 3572 | case CK_ViewRaw: |
3574 | 3573 | view_raw_cmd (); |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3598 | 3597 | prev_page (panel); |
3599 | 3598 | break; |
3600 | 3599 | case CK_CdChild: |
| 3600 | stop_quickfilter(panel, FALSE); |
3601 | 3601 | goto_child_dir (panel); |
3602 | | bstop_quickfilter = TRUE; |
3603 | 3602 | break; |
3604 | 3603 | case CK_CdParent: |
| 3604 | stop_quickfilter(panel, FALSE); |
3605 | 3605 | goto_parent_dir (panel); |
3606 | | bstop_quickfilter = TRUE; |
3607 | 3606 | break; |
3608 | 3607 | case CK_History: |
3609 | 3608 | directory_history_list (panel); |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3639 | 3638 | mark_file_right (panel); |
3640 | 3639 | break; |
3641 | 3640 | case CK_CdParentSmart: |
| 3641 | stop_quickfilter(panel, FALSE); |
3642 | 3642 | res = force_maybe_cd (); |
3643 | | bstop_quickfilter = TRUE; |
3644 | 3643 | break; |
3645 | 3644 | case CK_Up: |
3646 | 3645 | move_up (panel); |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3649 | 3648 | move_down (panel); |
3650 | 3649 | break; |
3651 | 3650 | case CK_Left: |
| 3651 | stop_quickfilter(panel, FALSE); |
3652 | 3652 | res = move_left (panel); |
3653 | | bstop_quickfilter = TRUE; |
3654 | 3653 | break; |
3655 | 3654 | case CK_Right: |
| 3655 | stop_quickfilter(panel, FALSE); |
3656 | 3656 | res = move_right (panel); |
3657 | | bstop_quickfilter = TRUE; |
3658 | 3657 | break; |
3659 | 3658 | case CK_Bottom: |
3660 | 3659 | move_end (panel); |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3664 | 3663 | break; |
3665 | 3664 | #ifdef HAVE_CHARSET |
3666 | 3665 | case CK_SelectCodepage: |
| 3666 | stop_quickfilter(panel, FALSE); |
3667 | 3667 | panel_change_encoding (panel); |
3668 | | bstop_quickfilter = TRUE; |
3669 | 3668 | break; |
3670 | 3669 | #endif |
3671 | 3670 | case CK_ScrollLeft: |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3675 | 3674 | panel_content_scroll_right (panel); |
3676 | 3675 | break; |
3677 | 3676 | case CK_Search: |
| 3677 | stop_quickfilter(panel, FALSE); |
3678 | 3678 | start_search (panel); |
3679 | | bstop_quickfilter = TRUE; |
3680 | 3679 | break; |
3681 | 3680 | case CK_SearchStop: |
3682 | 3681 | break; |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3713 | 3712 | break; |
3714 | 3713 | } |
3715 | 3714 | |
3716 | | if(bstop_quickfilter) |
3717 | | { |
3718 | | stop_quickfilter(panel); |
3719 | | } |
3720 | | |
3721 | 3715 | return res; |
3722 | 3716 | } |
3723 | 3717 | |
… |
… |
do_cd (const vfs_path_t * new_dir_vpath, enum cd_enum exact) |
5217 | 5211 | /* --------------------------------------------------------------------------------------------- */ |
5218 | 5212 | |
5219 | 5213 | void |
5220 | | stop_quickfilter(WPanel * panel) |
| 5214 | stop_quickfilter(WPanel * panel, gboolean redraw) |
5221 | 5215 | { |
5222 | 5216 | if (!panel->quickfiltering) |
5223 | 5217 | { |
… |
… |
stop_quickfilter(WPanel * panel) |
5225 | 5219 | } |
5226 | 5220 | panel->quickfiltering = FALSE; |
5227 | 5221 | panel->quickfilter_buffer[0] = '\0'; |
5228 | | g_free(panel->filter); |
| 5222 | g_free (panel->filter); |
5229 | 5223 | panel->filter = 0; |
5230 | | reread_cmd (); |
| 5224 | if(redraw) |
| 5225 | reread_cmd (); |
5231 | 5226 | } |
5232 | 5227 | |
5233 | 5228 | /* --------------------------------------------------------------------------------------------- */ |
-
diff --git a/src/filemanager/panel.h b/src/filemanager/panel.h
index 955cb6b..4a294fe 100644
a
|
b
|
void panel_init (void); |
196 | 196 | void panel_deinit (void); |
197 | 197 | gboolean do_cd (const vfs_path_t * new_dir_vpath, enum cd_enum cd_type); |
198 | 198 | |
199 | | void stop_quickfilter(WPanel * panel); |
| 199 | void stop_quickfilter(WPanel * panel, gboolean redraw); |
200 | 200 | |
201 | 201 | /* --------------------------------------------------------------------------------------------- */ |
202 | 202 | /*** inline functions ****************************************************************************/ |
-
--
2.9.0
From 702c5fbdf55537c91362d94f6f3d0878f470c9e3 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Wed, 6 Jul 2016 21:03:09 +0200
Subject: [PATCH 17/30] Add .. if resulting dirlist would be empty to avoid
problems w.r.t empty panels
---
src/filemanager/dir.c | 24 ++++++++++++++++++------
src/filemanager/dir.h | 2 +-
2 files changed, 19 insertions(+), 7 deletions(-)
diff --git a/src/filemanager/dir.c b/src/filemanager/dir.c
index a3979af..aa588ef 100644
a
|
b
|
dir_list_clean (dir_list * list) |
558 | 558 | gboolean |
559 | 559 | dir_list_init (dir_list * list) |
560 | 560 | { |
561 | | return dir_list_init_general(list, NULL); |
| 561 | return dir_list_init_filtered(list, NULL); |
562 | 562 | } |
563 | 563 | |
564 | 564 | /* --------------------------------------------------------------------------------------------- */ |
565 | 565 | /** Used to set up a directory list when there is no access to a directory */ |
566 | 566 | |
567 | 567 | gboolean |
568 | | dir_list_init_general (dir_list * list, const char *fltr) |
| 568 | dir_list_init_filtered (dir_list * list, const char *fltr) |
569 | 569 | { |
570 | 570 | file_entry_t *fentry; |
571 | 571 | |
… |
… |
dir_list_load (dir_list * list, const vfs_path_t * vpath, GCompareFunc sort, |
653 | 653 | const char *vpath_str; |
654 | 654 | |
655 | 655 | /* ".." (if any) must be the first entry in the list */ |
656 | | if (!dir_list_init_general (list, fltr)) |
| 656 | if (!dir_list_init_filtered (list, fltr)) |
657 | 657 | return; |
658 | 658 | |
659 | 659 | fentry = &list->list[0]; |
… |
… |
dir_list_load (dir_list * list, const vfs_path_t * vpath, GCompareFunc sort, |
685 | 685 | if ((list->len & 31) == 0) |
686 | 686 | rotate_dash (TRUE); |
687 | 687 | } |
688 | | |
| 688 | if (list->len == 0) |
| 689 | { |
| 690 | dir_list_init(list); |
| 691 | if( dir_get_dotdot_stat (vpath, &st)) |
| 692 | fentry->st = st; |
| 693 | } |
689 | 694 | dir_list_sort (list, sort, sort_op); |
690 | 695 | |
691 | 696 | ret: |
… |
… |
dir_list_reload (dir_list * list, const vfs_path_t * vpath, GCompareFunc sort, |
771 | 776 | { |
772 | 777 | dir_list_clean (list); |
773 | 778 | |
774 | | if (!dir_list_init_general (list, fltr)) |
| 779 | if (!dir_list_init_filtered (list, fltr)) |
775 | 780 | { |
776 | 781 | dir_list_clean (&dir_copy); |
777 | 782 | return; |
… |
… |
dir_list_reload (dir_list * list, const vfs_path_t * vpath, GCompareFunc sort, |
780 | 785 | if (list->len > 0 && dir_get_dotdot_stat (vpath, &st)) |
781 | 786 | { |
782 | 787 | file_entry_t *fentry; |
783 | | |
784 | 788 | fentry = &list->list[0]; |
785 | 789 | fentry->st = st; |
786 | 790 | } |
… |
… |
dir_list_reload (dir_list * list, const vfs_path_t * vpath, GCompareFunc sort, |
832 | 836 | tree_store_end_check (); |
833 | 837 | g_hash_table_destroy (marked_files); |
834 | 838 | |
| 839 | if (list->len == 0) |
| 840 | { |
| 841 | file_entry_t *fentry; |
| 842 | dir_list_init(list); |
| 843 | if( dir_get_dotdot_stat (vpath, &st)) |
| 844 | fentry->st = st; |
| 845 | } |
| 846 | |
835 | 847 | dir_list_sort (list, sort, sort_op); |
836 | 848 | |
837 | 849 | dir_list_clean (&dir_copy); |
-
diff --git a/src/filemanager/dir.h b/src/filemanager/dir.h
index 8d72257..50f4eaa 100644
a
|
b
|
void dir_list_reload (dir_list * list, const vfs_path_t * vpath, GCompareFunc so |
54 | 54 | const dir_sort_options_t * sort_op, const char *fltr); |
55 | 55 | void dir_list_sort (dir_list * list, GCompareFunc sort, const dir_sort_options_t * sort_op); |
56 | 56 | gboolean dir_list_init (dir_list * list); |
57 | | gboolean dir_list_init_general (dir_list * list, const char *fltr); |
| 57 | gboolean dir_list_init_filtered (dir_list * list, const char *fltr); |
58 | 58 | void dir_list_clean (dir_list * list); |
59 | 59 | gboolean handle_path (const char *path, struct stat *buf1, int *link_to_dir, int *stale_link); |
60 | 60 | |
-
--
2.9.0
From a740c06153201ed0c418160c01efaecc00e6b358 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Wed, 6 Jul 2016 21:07:29 +0200
Subject: [PATCH 18/30] Apply indent for coding style
---
lib/search.h | 2 +-
lib/search/search.c | 2 +-
src/filemanager/cmd.c | 2 +-
src/filemanager/dir.c | 16 ++++++------
src/filemanager/panel.c | 68 ++++++++++++++++++++++++-------------------------
src/filemanager/panel.h | 2 +-
src/setup.h | 2 +-
7 files changed, 47 insertions(+), 47 deletions(-)
diff --git a/lib/search.h b/lib/search.h
index 62ce34a..17de592 100644
a
|
b
|
gboolean mc_search (const gchar * pattern, const gchar * pattern_charset, const |
165 | 165 | mc_search_type_t type); |
166 | 166 | |
167 | 167 | gboolean mc_search_case (const gchar * pattern, const gchar * pattern_charset, const gchar * str, |
168 | | mc_search_type_t type, gboolean case_insensitive); |
| 168 | mc_search_type_t type, gboolean case_insensitive); |
169 | 169 | |
170 | 170 | int mc_search_getstart_result_by_num (mc_search_t *, int); |
171 | 171 | int mc_search_getend_result_by_num (mc_search_t *, int); |
-
diff --git a/lib/search/search.c b/lib/search/search.c
index c8224cb..a3ef871 100644
a
|
b
|
mc_search (const gchar * pattern, const gchar * pattern_charset, const gchar * s |
434 | 434 | */ |
435 | 435 | gboolean |
436 | 436 | mc_search_case (const gchar * pattern, const gchar * pattern_charset, const gchar * str, |
437 | | mc_search_type_t type, gboolean case_insensitive) |
| 437 | mc_search_type_t type, gboolean case_insensitive) |
438 | 438 | { |
439 | 439 | gboolean ret; |
440 | 440 | mc_search_t *search; |
-
diff --git a/src/filemanager/cmd.c b/src/filemanager/cmd.c
index 4ffdd9d..171d06a 100644
a
|
b
|
do_edit (const vfs_path_t * what_vpath) |
171 | 171 | static void |
172 | 172 | set_panel_filter_to (WPanel * p, char *allocated_filter_string) |
173 | 173 | { |
174 | | stop_quickfilter(p, FALSE); |
| 174 | stop_quickfilter (p, FALSE); |
175 | 175 | g_free (p->filter); |
176 | 176 | p->filter = 0; |
177 | 177 | |
-
diff --git a/src/filemanager/dir.c b/src/filemanager/dir.c
index aa588ef..9e60e44 100644
a
|
b
|
handle_dirent (struct dirent *dp, const char *fltr, struct stat *buf1, int *link |
189 | 189 | vfs_path_free (vpath); |
190 | 190 | |
191 | 191 | add_directory = false; |
192 | | if(!filter_dirs) |
| 192 | if (!filter_dirs) |
193 | 193 | add_directory = S_ISDIR (buf1->st_mode) || *link_to_dir != 0; |
194 | 194 | case_insensitive_filter = FALSE; |
195 | | if(panels_options.filter_mode == QFILTER_CASE_INSENSITIVE) |
| 195 | if (panels_options.filter_mode == QFILTER_CASE_INSENSITIVE) |
196 | 196 | case_insensitive_filter = TRUE; |
197 | 197 | |
198 | 198 | return (add_directory || fltr == NULL || |
… |
… |
dir_list_clean (dir_list * list) |
558 | 558 | gboolean |
559 | 559 | dir_list_init (dir_list * list) |
560 | 560 | { |
561 | | return dir_list_init_filtered(list, NULL); |
| 561 | return dir_list_init_filtered (list, NULL); |
562 | 562 | } |
563 | 563 | |
564 | 564 | /* --------------------------------------------------------------------------------------------- */ |
… |
… |
dir_list_init_filtered (dir_list * list, const char *fltr) |
576 | 576 | return FALSE; |
577 | 577 | } |
578 | 578 | |
579 | | if(filter_dotdot_dir && fltr && !mc_search(fltr, NULL, "..", MC_SEARCH_T_GLOB)) |
| 579 | if (filter_dotdot_dir && fltr && !mc_search (fltr, NULL, "..", MC_SEARCH_T_GLOB)) |
580 | 580 | { |
581 | 581 | list->len = 0; |
582 | 582 | return TRUE; |
… |
… |
dir_list_load (dir_list * list, const vfs_path_t * vpath, GCompareFunc sort, |
687 | 687 | } |
688 | 688 | if (list->len == 0) |
689 | 689 | { |
690 | | dir_list_init(list); |
691 | | if( dir_get_dotdot_stat (vpath, &st)) |
| 690 | dir_list_init (list); |
| 691 | if (dir_get_dotdot_stat (vpath, &st)) |
692 | 692 | fentry->st = st; |
693 | 693 | } |
694 | 694 | dir_list_sort (list, sort, sort_op); |
… |
… |
dir_list_reload (dir_list * list, const vfs_path_t * vpath, GCompareFunc sort, |
839 | 839 | if (list->len == 0) |
840 | 840 | { |
841 | 841 | file_entry_t *fentry; |
842 | | dir_list_init(list); |
843 | | if( dir_get_dotdot_stat (vpath, &st)) |
| 842 | dir_list_init (list); |
| 843 | if (dir_get_dotdot_stat (vpath, &st)) |
844 | 844 | fentry->st = st; |
845 | 845 | } |
846 | 846 | |
-
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index 3bd114c..c9716a7 100644
a
|
b
|
apply_quickpanel_filter (WPanel * p) |
2791 | 2791 | { |
2792 | 2792 | size_t l, fl; |
2793 | 2793 | int i; |
2794 | | char* new_filter; |
| 2794 | char *new_filter; |
2795 | 2795 | mc_search_t *search; |
2796 | 2796 | gboolean is_found; |
2797 | 2797 | |
2798 | 2798 | |
2799 | | l = strlen(p->quickfilter_buffer); |
2800 | | fl = l + 2 + 1; // + 2 for *<filter>*, 1 for trailing \0 |
2801 | | new_filter = g_malloc(fl); |
| 2799 | l = strlen (p->quickfilter_buffer); |
| 2800 | fl = l + 2 + 1; // + 2 for *<filter>*, 1 for trailing \0 |
| 2801 | new_filter = g_malloc (fl); |
2802 | 2802 | |
2803 | 2803 | //if malloc fails, applying the new filter also fails |
2804 | | if(new_filter == NULL) |
| 2804 | if (new_filter == NULL) |
2805 | 2805 | return FALSE; |
2806 | 2806 | |
2807 | 2807 | new_filter[0] = '*'; |
2808 | | memcpy(new_filter + 1, p->quickfilter_buffer, l); |
| 2808 | memcpy (new_filter + 1, p->quickfilter_buffer, l); |
2809 | 2809 | new_filter[fl - 2] = '*'; |
2810 | 2810 | new_filter[fl - 1] = '\0'; |
2811 | 2811 | |
… |
… |
apply_quickpanel_filter (WPanel * p) |
2828 | 2828 | } |
2829 | 2829 | |
2830 | 2830 | is_found = FALSE; |
2831 | | for (i = 0; i < p->dir.len; ++i) |
| 2831 | for (i = 0; i < p->dir.len; ++i) |
2832 | 2832 | { |
2833 | 2833 | if (mc_search_run (search, p->dir.list[i].fname, 0, p->dir.list[i].fnamelen, NULL)) |
2834 | 2834 | { |
… |
… |
apply_quickpanel_filter (WPanel * p) |
2837 | 2837 | } |
2838 | 2838 | } |
2839 | 2839 | |
2840 | | if(!is_found) |
| 2840 | if (!is_found) |
2841 | 2841 | { |
2842 | | g_free(new_filter); |
| 2842 | g_free (new_filter); |
2843 | 2843 | return FALSE; |
2844 | 2844 | } |
2845 | 2845 | |
… |
… |
apply_quickpanel_filter (WPanel * p) |
2853 | 2853 | /* --------------------------------------------------------------------------------------------- */ |
2854 | 2854 | |
2855 | 2855 | static void |
2856 | | do_quickfilter(WPanel * panel, int key) |
| 2856 | do_quickfilter (WPanel * panel, int key) |
2857 | 2857 | { |
2858 | 2858 | size_t l; |
2859 | | l = strlen(panel->quickfilter_buffer); |
2860 | | if(key == KEY_BACKSPACE) |
| 2859 | l = strlen (panel->quickfilter_buffer); |
| 2860 | if (key == KEY_BACKSPACE) |
2861 | 2861 | { |
2862 | 2862 | if (l <= 1) |
2863 | 2863 | { |
2864 | | stop_quickfilter(panel, TRUE); |
| 2864 | stop_quickfilter (panel, TRUE); |
2865 | 2865 | return; |
2866 | 2866 | } |
2867 | 2867 | panel->quickfilter_buffer[l - 1] = '\0'; |
… |
… |
do_quickfilter(WPanel * panel, int key) |
2872 | 2872 | panel->quickfilter_buffer[l] = (char) key; |
2873 | 2873 | panel->quickfilter_buffer[l + 1] = '\0'; |
2874 | 2874 | } |
2875 | | if (!apply_quickpanel_filter(panel) && key != KEY_BACKSPACE) |
| 2875 | if (!apply_quickpanel_filter (panel) && key != KEY_BACKSPACE) |
2876 | 2876 | { |
2877 | 2877 | panel->quickfilter_buffer[l] = '\0'; |
2878 | 2878 | } |
… |
… |
do_quickfilter(WPanel * panel, int key) |
2881 | 2881 | /* --------------------------------------------------------------------------------------------- */ |
2882 | 2882 | |
2883 | 2883 | static void |
2884 | | start_quickfilter(WPanel * panel) |
| 2884 | start_quickfilter (WPanel * panel) |
2885 | 2885 | { |
2886 | 2886 | if (panel->quickfiltering || panel->filter == NULL) |
2887 | 2887 | panel->quickfiltering = TRUE; |
… |
… |
directory_history_list (WPanel * panel) |
3483 | 3483 | gboolean ok = FALSE; |
3484 | 3484 | size_t pos; |
3485 | 3485 | |
3486 | | pos = g_list_position (panel->dir_history_current, panel->dir_history); |
| 3486 | pos = g_list_position (panel->dir_history_current, panel->dir_history); |
3487 | 3487 | |
3488 | 3488 | s = history_show (&panel->dir_history, WIDGET (panel), pos); |
3489 | 3489 | if (s != NULL) |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3552 | 3552 | switch (command) |
3553 | 3553 | { |
3554 | 3554 | case CK_PanelOtherCd: |
3555 | | stop_quickfilter(panel, FALSE); |
| 3555 | stop_quickfilter (panel, FALSE); |
3556 | 3556 | chdir_other_panel (panel); |
3557 | 3557 | break; |
3558 | 3558 | case CK_PanelOtherCdLink: |
3559 | | stop_quickfilter(panel, FALSE); |
| 3559 | stop_quickfilter (panel, FALSE); |
3560 | 3560 | chdir_to_readlink (panel); |
3561 | 3561 | break; |
3562 | 3562 | case CK_CopySingle: |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3566 | 3566 | delete_cmd_local (); |
3567 | 3567 | break; |
3568 | 3568 | case CK_Enter: |
3569 | | stop_quickfilter(panel, FALSE); |
| 3569 | stop_quickfilter (panel, FALSE); |
3570 | 3570 | do_enter (panel); |
3571 | 3571 | break; |
3572 | 3572 | case CK_ViewRaw: |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3597 | 3597 | prev_page (panel); |
3598 | 3598 | break; |
3599 | 3599 | case CK_CdChild: |
3600 | | stop_quickfilter(panel, FALSE); |
| 3600 | stop_quickfilter (panel, FALSE); |
3601 | 3601 | goto_child_dir (panel); |
3602 | 3602 | break; |
3603 | 3603 | case CK_CdParent: |
3604 | | stop_quickfilter(panel, FALSE); |
| 3604 | stop_quickfilter (panel, FALSE); |
3605 | 3605 | goto_parent_dir (panel); |
3606 | 3606 | break; |
3607 | 3607 | case CK_History: |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3638 | 3638 | mark_file_right (panel); |
3639 | 3639 | break; |
3640 | 3640 | case CK_CdParentSmart: |
3641 | | stop_quickfilter(panel, FALSE); |
| 3641 | stop_quickfilter (panel, FALSE); |
3642 | 3642 | res = force_maybe_cd (); |
3643 | 3643 | break; |
3644 | 3644 | case CK_Up: |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3648 | 3648 | move_down (panel); |
3649 | 3649 | break; |
3650 | 3650 | case CK_Left: |
3651 | | stop_quickfilter(panel, FALSE); |
| 3651 | stop_quickfilter (panel, FALSE); |
3652 | 3652 | res = move_left (panel); |
3653 | 3653 | break; |
3654 | 3654 | case CK_Right: |
3655 | | stop_quickfilter(panel, FALSE); |
| 3655 | stop_quickfilter (panel, FALSE); |
3656 | 3656 | res = move_right (panel); |
3657 | 3657 | break; |
3658 | 3658 | case CK_Bottom: |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3663 | 3663 | break; |
3664 | 3664 | #ifdef HAVE_CHARSET |
3665 | 3665 | case CK_SelectCodepage: |
3666 | | stop_quickfilter(panel, FALSE); |
| 3666 | stop_quickfilter (panel, FALSE); |
3667 | 3667 | panel_change_encoding (panel); |
3668 | 3668 | break; |
3669 | 3669 | #endif |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3674 | 3674 | panel_content_scroll_right (panel); |
3675 | 3675 | break; |
3676 | 3676 | case CK_Search: |
3677 | | stop_quickfilter(panel, FALSE); |
| 3677 | stop_quickfilter (panel, FALSE); |
3678 | 3678 | start_search (panel); |
3679 | 3679 | break; |
3680 | 3680 | case CK_SearchStop: |
… |
… |
panel_key (WPanel * panel, int key) |
3734 | 3734 | return MSG_HANDLED; |
3735 | 3735 | } |
3736 | 3736 | |
3737 | | if(panel->quickfiltering && ((key >= ' ' && key <= 255) || key == KEY_BACKSPACE)) |
| 3737 | if (panel->quickfiltering && ((key >= ' ' && key <= 255) || key == KEY_BACKSPACE)) |
3738 | 3738 | { |
3739 | | do_quickfilter(panel, key); |
| 3739 | do_quickfilter (panel, key); |
3740 | 3740 | return MSG_HANDLED; |
3741 | 3741 | } |
3742 | 3742 | |
… |
… |
panel_key (WPanel * panel, int key) |
3752 | 3752 | |
3753 | 3753 | if (!command_prompt && ((key >= ' ' && key <= 255) || key == KEY_BACKSPACE)) |
3754 | 3754 | { |
3755 | | if(!panels_options.use_quickfilter) |
| 3755 | if (!panels_options.use_quickfilter) |
3756 | 3756 | { |
3757 | 3757 | start_search (panel); |
3758 | 3758 | do_search (panel, key); |
3759 | 3759 | return MSG_HANDLED; |
3760 | 3760 | } |
3761 | | else if(panel->filter == NULL) |
| 3761 | else if (panel->filter == NULL) |
3762 | 3762 | { |
3763 | | start_quickfilter(panel); |
3764 | | do_quickfilter(panel, key); |
| 3763 | start_quickfilter (panel); |
| 3764 | do_quickfilter (panel, key); |
3765 | 3765 | return MSG_HANDLED; |
3766 | 3766 | } |
3767 | 3767 | } |
… |
… |
do_cd (const vfs_path_t * new_dir_vpath, enum cd_enum exact) |
5211 | 5211 | /* --------------------------------------------------------------------------------------------- */ |
5212 | 5212 | |
5213 | 5213 | void |
5214 | | stop_quickfilter(WPanel * panel, gboolean redraw) |
| 5214 | stop_quickfilter (WPanel * panel, gboolean redraw) |
5215 | 5215 | { |
5216 | 5216 | if (!panel->quickfiltering) |
5217 | 5217 | { |
… |
… |
stop_quickfilter(WPanel * panel, gboolean redraw) |
5221 | 5221 | panel->quickfilter_buffer[0] = '\0'; |
5222 | 5222 | g_free (panel->filter); |
5223 | 5223 | panel->filter = 0; |
5224 | | if(redraw) |
| 5224 | if (redraw) |
5225 | 5225 | reread_cmd (); |
5226 | 5226 | } |
5227 | 5227 | |
-
diff --git a/src/filemanager/panel.h b/src/filemanager/panel.h
index 4a294fe..ed8cbd1 100644
a
|
b
|
void panel_init (void); |
196 | 196 | void panel_deinit (void); |
197 | 197 | gboolean do_cd (const vfs_path_t * new_dir_vpath, enum cd_enum cd_type); |
198 | 198 | |
199 | | void stop_quickfilter(WPanel * panel, gboolean redraw); |
| 199 | void stop_quickfilter (WPanel * panel, gboolean redraw); |
200 | 200 | |
201 | 201 | /* --------------------------------------------------------------------------------------------- */ |
202 | 202 | /*** inline functions ****************************************************************************/ |
-
diff --git a/src/setup.h b/src/setup.h
index 4507ad3..fb734c6 100644
a
|
b
|
typedef struct |
63 | 63 | gboolean torben_fj_mode; /* If TRUE, use some usability hacks by Torben */ |
64 | 64 | panel_select_flags_t select_flags; /* Select/unselect file flags */ |
65 | 65 | gboolean use_quickfilter; |
66 | | filter_mode_t filter_mode; /* Quick search mode */ |
| 66 | filter_mode_t filter_mode; /* Quick search mode */ |
67 | 67 | } panels_options_t; |
68 | 68 | |
69 | 69 | typedef struct macro_action_t |
-
--
2.9.0
From 54bbe5320d22789f86863ebfbb2922e606277d2e Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Wed, 6 Jul 2016 21:12:47 +0200
Subject: [PATCH 19/30] Remove or replace // comments
---
src/filemanager/dir.c | 3 +++
src/filemanager/panel.c | 5 +----
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/filemanager/dir.c b/src/filemanager/dir.c
index 9e60e44..a5ee95b 100644
a
|
b
|
dir_list_load (dir_list * list, const vfs_path_t * vpath, GCompareFunc sort, |
685 | 685 | if ((list->len & 31) == 0) |
686 | 686 | rotate_dash (TRUE); |
687 | 687 | } |
| 688 | |
| 689 | /* Always add ".." if list would be empty otherwise */ |
688 | 690 | if (list->len == 0) |
689 | 691 | { |
690 | 692 | dir_list_init (list); |
… |
… |
dir_list_reload (dir_list * list, const vfs_path_t * vpath, GCompareFunc sort, |
836 | 838 | tree_store_end_check (); |
837 | 839 | g_hash_table_destroy (marked_files); |
838 | 840 | |
| 841 | /* Always add ".." if list would be empty otherwise */ |
839 | 842 | if (list->len == 0) |
840 | 843 | { |
841 | 844 | file_entry_t *fentry; |
-
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index c9716a7..872e2a4 100644
a
|
b
|
apply_quickpanel_filter (WPanel * p) |
2797 | 2797 | |
2798 | 2798 | |
2799 | 2799 | l = strlen (p->quickfilter_buffer); |
2800 | | fl = l + 2 + 1; // + 2 for *<filter>*, 1 for trailing \0 |
| 2800 | fl = l + 2 + 1; |
2801 | 2801 | new_filter = g_malloc (fl); |
2802 | 2802 | |
2803 | | //if malloc fails, applying the new filter also fails |
2804 | 2803 | if (new_filter == NULL) |
2805 | 2804 | return FALSE; |
2806 | 2805 | |
… |
… |
apply_quickpanel_filter (WPanel * p) |
2809 | 2808 | new_filter[fl - 2] = '*'; |
2810 | 2809 | new_filter[fl - 1] = '\0'; |
2811 | 2810 | |
2812 | | //First check if search would result in empty directory |
2813 | 2811 | search = mc_search_new (new_filter, NULL); |
2814 | 2812 | search->search_type = MC_SEARCH_T_GLOB; |
2815 | 2813 | search->is_entire_line = TRUE; |
… |
… |
do_quickfilter (WPanel * panel, int key) |
2868 | 2866 | } |
2869 | 2867 | else |
2870 | 2868 | { |
2871 | | //TODO: Check if key results in empty panel |
2872 | 2869 | panel->quickfilter_buffer[l] = (char) key; |
2873 | 2870 | panel->quickfilter_buffer[l + 1] = '\0'; |
2874 | 2871 | } |
-
--
2.9.0
From 260092443dfcc98baf0aa4e8f07c503cab00b1b6 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Sun, 10 Jul 2016 11:28:10 +0200
Subject: [PATCH 20/30] Only stop quickfilter for left and right arrow when in
lynx mode and we actually switched directories
---
src/filemanager/panel.c | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index 872e2a4..5fdea55 100644
a
|
b
|
move_selection (WPanel * panel, int lines) |
2205 | 2205 | static cb_ret_t |
2206 | 2206 | move_left (WPanel * panel) |
2207 | 2207 | { |
| 2208 | cb_ret_t lynx_ret; |
2208 | 2209 | if (panel->list_cols > 1) |
2209 | 2210 | { |
2210 | 2211 | move_selection (panel, -panel_lines (panel)); |
2211 | 2212 | return MSG_HANDLED; |
2212 | 2213 | } |
2213 | | |
2214 | | return maybe_cd (TRUE); /* cd .. */ |
| 2214 | lynx_ret = maybe_cd (TRUE); /* cd .. */ |
| 2215 | if(panels_options.navigate_with_arrows && lynx_ret == MSG_HANDLED) |
| 2216 | stop_quickfilter(panel, TRUE); |
| 2217 | return lynx_ret; |
2215 | 2218 | } |
2216 | 2219 | |
2217 | 2220 | /* --------------------------------------------------------------------------------------------- */ |
… |
… |
move_left (WPanel * panel) |
2219 | 2222 | static cb_ret_t |
2220 | 2223 | move_right (WPanel * panel) |
2221 | 2224 | { |
| 2225 | cb_ret_t lynx_ret; |
2222 | 2226 | if (panel->list_cols > 1) |
2223 | 2227 | { |
2224 | 2228 | move_selection (panel, panel_lines (panel)); |
2225 | 2229 | return MSG_HANDLED; |
2226 | 2230 | } |
2227 | | |
2228 | | return maybe_cd (FALSE); /* cd (selection) */ |
| 2231 | lynx_ret = maybe_cd (FALSE); /* cd .. */ |
| 2232 | if(panels_options.navigate_with_arrows && lynx_ret == MSG_HANDLED) |
| 2233 | stop_quickfilter(panel, TRUE); |
| 2234 | return lynx_ret; |
2229 | 2235 | } |
2230 | 2236 | |
2231 | 2237 | /* --------------------------------------------------------------------------------------------- */ |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3645 | 3651 | move_down (panel); |
3646 | 3652 | break; |
3647 | 3653 | case CK_Left: |
3648 | | stop_quickfilter (panel, FALSE); |
3649 | 3654 | res = move_left (panel); |
3650 | 3655 | break; |
3651 | 3656 | case CK_Right: |
3652 | | stop_quickfilter (panel, FALSE); |
3653 | 3657 | res = move_right (panel); |
3654 | 3658 | break; |
3655 | 3659 | case CK_Bottom: |
-
--
2.9.0
From d0322ebe994e2112ba98bced23c5515b099523f1 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Sun, 10 Jul 2016 11:28:36 +0200
Subject: [PATCH 21/30] Fix memory leak by freeing search in quickfilter
---
src/filemanager/panel.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index 5fdea55..1542142 100644
a
|
b
|
apply_quickpanel_filter (WPanel * p) |
2841 | 2841 | } |
2842 | 2842 | } |
2843 | 2843 | |
| 2844 | mc_search_free(search); |
2844 | 2845 | if (!is_found) |
2845 | 2846 | { |
2846 | 2847 | g_free (new_filter); |
-
--
2.9.0
From 24dc60e2c10a0ab290acb4a31d27632f43596a62 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Sun, 10 Jul 2016 11:30:54 +0200
Subject: [PATCH 22/30] Apply indent
---
src/filemanager/panel.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index 1542142..ff7646c 100644
a
|
b
|
move_left (WPanel * panel) |
2211 | 2211 | move_selection (panel, -panel_lines (panel)); |
2212 | 2212 | return MSG_HANDLED; |
2213 | 2213 | } |
2214 | | lynx_ret = maybe_cd (TRUE); /* cd .. */ |
2215 | | if(panels_options.navigate_with_arrows && lynx_ret == MSG_HANDLED) |
2216 | | stop_quickfilter(panel, TRUE); |
| 2214 | lynx_ret = maybe_cd (TRUE); /* cd .. */ |
| 2215 | if (panels_options.navigate_with_arrows && lynx_ret == MSG_HANDLED) |
| 2216 | stop_quickfilter (panel, TRUE); |
2217 | 2217 | return lynx_ret; |
2218 | 2218 | } |
2219 | 2219 | |
… |
… |
move_right (WPanel * panel) |
2228 | 2228 | move_selection (panel, panel_lines (panel)); |
2229 | 2229 | return MSG_HANDLED; |
2230 | 2230 | } |
2231 | | lynx_ret = maybe_cd (FALSE); /* cd .. */ |
2232 | | if(panels_options.navigate_with_arrows && lynx_ret == MSG_HANDLED) |
2233 | | stop_quickfilter(panel, TRUE); |
| 2231 | lynx_ret = maybe_cd (FALSE); /* cd .. */ |
| 2232 | if (panels_options.navigate_with_arrows && lynx_ret == MSG_HANDLED) |
| 2233 | stop_quickfilter (panel, TRUE); |
2234 | 2234 | return lynx_ret; |
2235 | 2235 | } |
2236 | 2236 | |
… |
… |
apply_quickpanel_filter (WPanel * p) |
2841 | 2841 | } |
2842 | 2842 | } |
2843 | 2843 | |
2844 | | mc_search_free(search); |
| 2844 | mc_search_free (search); |
2845 | 2845 | if (!is_found) |
2846 | 2846 | { |
2847 | 2847 | g_free (new_filter); |
-
--
2.9.0
From 7a57074adb03b6f7bbbf7b28dbd6e1ca91cf93c0 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Sun, 10 Jul 2016 12:18:32 +0200
Subject: [PATCH 23/30] Remove stop_quickfilter commands from panel_execute_cmd
and move it to the lowest possible cd method to catch all cases
---
src/filemanager/panel.c | 22 ++++------------------
1 file changed, 4 insertions(+), 18 deletions(-)
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index ff7646c..82d6328 100644
a
|
b
|
move_selection (WPanel * panel, int lines) |
2205 | 2205 | static cb_ret_t |
2206 | 2206 | move_left (WPanel * panel) |
2207 | 2207 | { |
2208 | | cb_ret_t lynx_ret; |
2209 | 2208 | if (panel->list_cols > 1) |
2210 | 2209 | { |
2211 | 2210 | move_selection (panel, -panel_lines (panel)); |
2212 | 2211 | return MSG_HANDLED; |
2213 | 2212 | } |
2214 | | lynx_ret = maybe_cd (TRUE); /* cd .. */ |
2215 | | if (panels_options.navigate_with_arrows && lynx_ret == MSG_HANDLED) |
2216 | | stop_quickfilter (panel, TRUE); |
2217 | | return lynx_ret; |
| 2213 | return maybe_cd (TRUE); /* cd .. */ |
2218 | 2214 | } |
2219 | 2215 | |
2220 | 2216 | /* --------------------------------------------------------------------------------------------- */ |
… |
… |
move_left (WPanel * panel) |
2222 | 2218 | static cb_ret_t |
2223 | 2219 | move_right (WPanel * panel) |
2224 | 2220 | { |
2225 | | cb_ret_t lynx_ret; |
2226 | 2221 | if (panel->list_cols > 1) |
2227 | 2222 | { |
2228 | 2223 | move_selection (panel, panel_lines (panel)); |
2229 | 2224 | return MSG_HANDLED; |
2230 | 2225 | } |
2231 | | lynx_ret = maybe_cd (FALSE); /* cd .. */ |
2232 | | if (panels_options.navigate_with_arrows && lynx_ret == MSG_HANDLED) |
2233 | | stop_quickfilter (panel, TRUE); |
2234 | | return lynx_ret; |
| 2226 | return maybe_cd (FALSE); /* cd .. */ |
2235 | 2227 | } |
2236 | 2228 | |
2237 | 2229 | /* --------------------------------------------------------------------------------------------- */ |
… |
… |
_do_panel_cd (WPanel * panel, const vfs_path_t * new_dir_vpath, enum cd_enum cd_ |
3411 | 3403 | /* Reload current panel */ |
3412 | 3404 | panel_clean_dir (panel); |
3413 | 3405 | |
| 3406 | stop_quickfilter (panel, FALSE); |
| 3407 | |
3414 | 3408 | dir_list_load (&panel->dir, panel->cwd_vpath, panel->sort_field->sort_routine, |
3415 | 3409 | &panel->sort_info, panel->filter); |
3416 | 3410 | try_to_select (panel, get_parent_dir_name (panel->cwd_vpath, olddir_vpath)); |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3556 | 3550 | switch (command) |
3557 | 3551 | { |
3558 | 3552 | case CK_PanelOtherCd: |
3559 | | stop_quickfilter (panel, FALSE); |
3560 | 3553 | chdir_other_panel (panel); |
3561 | 3554 | break; |
3562 | 3555 | case CK_PanelOtherCdLink: |
3563 | | stop_quickfilter (panel, FALSE); |
3564 | 3556 | chdir_to_readlink (panel); |
3565 | 3557 | break; |
3566 | 3558 | case CK_CopySingle: |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3570 | 3562 | delete_cmd_local (); |
3571 | 3563 | break; |
3572 | 3564 | case CK_Enter: |
3573 | | stop_quickfilter (panel, FALSE); |
3574 | 3565 | do_enter (panel); |
3575 | 3566 | break; |
3576 | 3567 | case CK_ViewRaw: |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3601 | 3592 | prev_page (panel); |
3602 | 3593 | break; |
3603 | 3594 | case CK_CdChild: |
3604 | | stop_quickfilter (panel, FALSE); |
3605 | 3595 | goto_child_dir (panel); |
3606 | 3596 | break; |
3607 | 3597 | case CK_CdParent: |
3608 | | stop_quickfilter (panel, FALSE); |
3609 | 3598 | goto_parent_dir (panel); |
3610 | 3599 | break; |
3611 | 3600 | case CK_History: |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3642 | 3631 | mark_file_right (panel); |
3643 | 3632 | break; |
3644 | 3633 | case CK_CdParentSmart: |
3645 | | stop_quickfilter (panel, FALSE); |
3646 | 3634 | res = force_maybe_cd (); |
3647 | 3635 | break; |
3648 | 3636 | case CK_Up: |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3665 | 3653 | break; |
3666 | 3654 | #ifdef HAVE_CHARSET |
3667 | 3655 | case CK_SelectCodepage: |
3668 | | stop_quickfilter (panel, FALSE); |
3669 | 3656 | panel_change_encoding (panel); |
3670 | 3657 | break; |
3671 | 3658 | #endif |
… |
… |
panel_execute_cmd (WPanel * panel, long command) |
3676 | 3663 | panel_content_scroll_right (panel); |
3677 | 3664 | break; |
3678 | 3665 | case CK_Search: |
3679 | | stop_quickfilter (panel, FALSE); |
3680 | 3666 | start_search (panel); |
3681 | 3667 | break; |
3682 | 3668 | case CK_SearchStop: |
-
--
2.9.0
From 2778974289596de134e8b6f864e2014229f371e9 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Sun, 10 Jul 2016 12:20:23 +0200
Subject: [PATCH 24/30] Apply indent guidelines
---
src/filemanager/panel.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index 82d6328..bfe620a 100644
a
|
b
|
move_left (WPanel * panel) |
2210 | 2210 | move_selection (panel, -panel_lines (panel)); |
2211 | 2211 | return MSG_HANDLED; |
2212 | 2212 | } |
2213 | | return maybe_cd (TRUE); /* cd .. */ |
| 2213 | return maybe_cd (TRUE); /* cd .. */ |
2214 | 2214 | } |
2215 | 2215 | |
2216 | 2216 | /* --------------------------------------------------------------------------------------------- */ |
… |
… |
move_right (WPanel * panel) |
2223 | 2223 | move_selection (panel, panel_lines (panel)); |
2224 | 2224 | return MSG_HANDLED; |
2225 | 2225 | } |
2226 | | return maybe_cd (FALSE); /* cd .. */ |
| 2226 | return maybe_cd (FALSE); /* cd .. */ |
2227 | 2227 | } |
2228 | 2228 | |
2229 | 2229 | /* --------------------------------------------------------------------------------------------- */ |
-
--
2.9.0
From 53f8b78d0e1d7f39fb42a3558e41054811783e35 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Sun, 10 Jul 2016 12:28:22 +0200
Subject: [PATCH 25/30] Replae reread_cmd by update_panels calls to improve
quickfilter performance
---
src/filemanager/panel.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index bfe620a..c091ac2 100644
a
|
b
|
apply_quickpanel_filter (WPanel * p) |
2843 | 2843 | g_free (p->filter); |
2844 | 2844 | p->filter = new_filter; |
2845 | 2845 | |
2846 | | reread_cmd (); |
| 2846 | update_panels (UP_OPTIMIZE, UP_KEEPSEL); |
2847 | 2847 | return TRUE; |
2848 | 2848 | } |
2849 | 2849 | |
… |
… |
stop_quickfilter (WPanel * panel, gboolean redraw) |
5210 | 5210 | g_free (panel->filter); |
5211 | 5211 | panel->filter = 0; |
5212 | 5212 | if (redraw) |
5213 | | reread_cmd (); |
| 5213 | update_panels (UP_OPTIMIZE, UP_KEEPSEL); |
5214 | 5214 | } |
5215 | 5215 | |
5216 | 5216 | /* --------------------------------------------------------------------------------------------- */ |
-
--
2.9.0
From 488790b803b865edeb090330237663e613ff5129 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Sun, 10 Jul 2016 12:44:56 +0200
Subject: [PATCH 26/30] Let abort also stop quickfiltering
---
src/filemanager/panel.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index be125bc..b48ef2c 100644
a
|
b
|
panel_key (WPanel * panel, int key) |
3713 | 3713 | if (is_abort_char (key)) |
3714 | 3714 | { |
3715 | 3715 | stop_search (panel); |
| 3716 | stop_quickfilter (panel, TRUE); |
3716 | 3717 | return MSG_HANDLED; |
3717 | 3718 | } |
3718 | 3719 | |
-
--
2.9.0
From ea9c85ad4bcd0d656ff4f82b263dd17f6c4a83bf Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Sun, 10 Jul 2016 14:46:18 +0200
Subject: [PATCH 27/30] Allow *,-,+ and \ as input for quickfiltering
---
src/filemanager/midnight.c | 2 +-
src/filemanager/panel.c | 23 ++++++++++++++++++-----
2 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/src/filemanager/midnight.c b/src/filemanager/midnight.c
index 68d12da..aa93309 100644
a
|
b
|
midnight_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void |
1493 | 1493 | |
1494 | 1494 | if ((!mc_global.tty.alternate_plus_minus |
1495 | 1495 | || !(mc_global.tty.console_flag != '\0' || mc_global.tty.xterm_flag)) && !quote |
1496 | | && !current_panel->searching) |
| 1496 | && !current_panel->searching && !current_panel->quickfiltering) |
1497 | 1497 | { |
1498 | 1498 | if (!only_leading_plus_minus) |
1499 | 1499 | { |
-
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index b48ef2c..c99a90e 100644
a
|
b
|
stop_search (WPanel * panel) |
2787 | 2787 | static gboolean |
2788 | 2788 | apply_quickpanel_filter (WPanel * p) |
2789 | 2789 | { |
2790 | | size_t l, fl; |
| 2790 | size_t l, fl, cp_index; |
2791 | 2791 | int i; |
2792 | 2792 | char *new_filter; |
2793 | 2793 | mc_search_t *search; |
2794 | 2794 | gboolean is_found; |
2795 | 2795 | |
| 2796 | if(p->quickfilter_buffer == NULL) |
| 2797 | return FALSE; |
2796 | 2798 | |
2797 | 2799 | l = strlen (p->quickfilter_buffer); |
| 2800 | if(l == 0) |
| 2801 | return FALSE; |
| 2802 | |
2798 | 2803 | fl = l + 2 + 1; |
2799 | 2804 | new_filter = g_malloc (fl); |
2800 | 2805 | |
2801 | 2806 | if (new_filter == NULL) |
2802 | 2807 | return FALSE; |
2803 | 2808 | |
2804 | | new_filter[0] = '*'; |
2805 | | memcpy (new_filter + 1, p->quickfilter_buffer, l); |
2806 | | new_filter[fl - 2] = '*'; |
2807 | | new_filter[fl - 1] = '\0'; |
| 2809 | /* Copy string. Prefix/Suffix it with '*' to have the word as infix */ |
| 2810 | cp_index = 0; |
| 2811 | if(p->quickfilter_buffer[cp_index] != '*') |
| 2812 | new_filter[cp_index++] = '*'; |
| 2813 | |
| 2814 | memcpy (new_filter + cp_index, p->quickfilter_buffer, l); |
| 2815 | cp_index += l; |
| 2816 | |
| 2817 | if(p->quickfilter_buffer[l - 1] != '*') |
| 2818 | new_filter[cp_index++] = '*'; |
| 2819 | |
| 2820 | new_filter[cp_index] = '\0'; |
2808 | 2821 | |
2809 | 2822 | search = mc_search_new (new_filter, NULL); |
2810 | 2823 | search->search_type = MC_SEARCH_T_GLOB; |
-
--
2.9.0
From 5e385d1109467d7505b3fc1253980243e3e9b3e9 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Sun, 10 Jul 2016 16:05:21 +0200
Subject: [PATCH 28/30] Apply code guidelines. Remove tautological comparison
---
src/filemanager/panel.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index c99a90e..655df34 100644
a
|
b
|
apply_quickpanel_filter (WPanel * p) |
2793 | 2793 | mc_search_t *search; |
2794 | 2794 | gboolean is_found; |
2795 | 2795 | |
2796 | | if(p->quickfilter_buffer == NULL) |
2797 | | return FALSE; |
2798 | | |
2799 | 2796 | l = strlen (p->quickfilter_buffer); |
2800 | | if(l == 0) |
| 2797 | if (l == 0) |
2801 | 2798 | return FALSE; |
2802 | 2799 | |
2803 | 2800 | fl = l + 2 + 1; |
… |
… |
apply_quickpanel_filter (WPanel * p) |
2808 | 2805 | |
2809 | 2806 | /* Copy string. Prefix/Suffix it with '*' to have the word as infix */ |
2810 | 2807 | cp_index = 0; |
2811 | | if(p->quickfilter_buffer[cp_index] != '*') |
| 2808 | if (p->quickfilter_buffer[cp_index] != '*') |
2812 | 2809 | new_filter[cp_index++] = '*'; |
2813 | 2810 | |
2814 | 2811 | memcpy (new_filter + cp_index, p->quickfilter_buffer, l); |
2815 | 2812 | cp_index += l; |
2816 | 2813 | |
2817 | | if(p->quickfilter_buffer[l - 1] != '*') |
| 2814 | if (p->quickfilter_buffer[l - 1] != '*') |
2818 | 2815 | new_filter[cp_index++] = '*'; |
2819 | 2816 | |
2820 | 2817 | new_filter[cp_index] = '\0'; |
-
--
2.9.0
From f108a28981881cc1e5b84265f03bc5c4f24e5823 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Sun, 10 Jul 2016 17:38:18 +0200
Subject: [PATCH 29/30] Add a mini_info for quickfiltering to see the actual
filter string
---
src/filemanager/panel.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index 655df34..71951bc 100644
a
|
b
|
display_mini_info (WPanel * panel) |
998 | 998 | return; |
999 | 999 | } |
1000 | 1000 | |
| 1001 | if (panel->quickfiltering) |
| 1002 | { |
| 1003 | tty_setcolor (INPUT_COLOR); |
| 1004 | tty_print_string ("Filter: "); |
| 1005 | tty_print_string (str_fit_to_term (panel->quickfilter_buffer, w->cols - 3, J_LEFT)); |
| 1006 | return; |
| 1007 | } |
| 1008 | |
1001 | 1009 | /* Status resolves links and show them */ |
1002 | 1010 | set_colors (panel); |
1003 | 1011 | |
-
--
2.9.0
From 8f999e7b97882fff568912f31fd259d22d9e5a07 Mon Sep 17 00:00:00 2001
From: czyba <czyba@embedded.rwth-aachen.de>
Date: Sun, 10 Jul 2016 18:15:36 +0200
Subject: [PATCH 30/30] Check remaining length when setting minipage
---
src/filemanager/panel.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index 71951bc..f6a66d6 100644
a
|
b
|
display_mini_info (WPanel * panel) |
1001 | 1001 | if (panel->quickfiltering) |
1002 | 1002 | { |
1003 | 1003 | tty_setcolor (INPUT_COLOR); |
| 1004 | if (w->cols - 1 < 10) |
| 1005 | { |
| 1006 | tty_print_string (str_fit_to_term ("Filter: ", w->cols - 2, J_LEFT)); |
| 1007 | return; |
| 1008 | } |
1004 | 1009 | tty_print_string ("Filter: "); |
1005 | | tty_print_string (str_fit_to_term (panel->quickfilter_buffer, w->cols - 3, J_LEFT)); |
| 1010 | tty_print_string (str_fit_to_term (panel->quickfilter_buffer, w->cols - 10, J_LEFT)); |
1006 | 1011 | return; |
1007 | 1012 | } |
1008 | 1013 | |