Предлагаю для обсуждения заплатку, которая смещает окно запроса «Каталог не пуст» чуть ниже, чтоб оно не закрывало количество файлов, которые содержит каталог. Достиг этого путём введения нового флага для окон диалога D_LOWER (имя лучше не подобрал). При наличии данного флага окно опускается чуть ниже (смещение подобрано под конкретную ситуацию). Хотел вообще-то, чтоб запрос выводился на фоне суммарного размера файлов каталога (окошко появляется и исчезает перед запросом), но не смог. Прошу ногами не бить :-) Просто недавно лишь чудом смог восстановить кучу случайно удалённых архивов, и поэтому теперь удаление — очень чувствительная тема.
PS: в MC давно есть фича восстановления файлов с ext2 разделов. Как она в нынешнем MC? Раньше не очень. Я файлы восстанавливал с помощью ext3grep. Прога очень трудная для использования и в бета-состоянии.
diff -urN mc-4.8.12.old/lib/widget/wtools.c mc-4.8.12/lib/widget/wtools.c
--- mc-4.8.12.old/lib/widget/wtools.c 2014-06-16 17:59:52.000000000 +0400
+++ mc-4.8.12/lib/widget/wtools.c 2014-06-16 17:59:18.000000000 +0400
@@ -277,6 +277,9 @@
int i;
int result = -1;
int cols, lines;
+ int lxx = 0;
+ int lyy = 0;
+
const int *query_colors = (flags & D_ERROR) != 0 ? alarm_colors : dialog_colors;
dlg_flags_t dlg_flags = (flags & D_CENTER) != 0 ? (DLG_CENTER | DLG_TRYUP) : DLG_NONE;
@@ -301,9 +304,16 @@
cols = 6 + max (win_len, max (str_term_width1 (header), cols));
lines += 4 + (count > 0 ? 2 : 0);
+ if (flags & D_LOWER)
+ {
+ lxx = (COLS - cols) / 2;
+ lyy = (LINES - lines + 8) / 2;
+ dlg_flags = DLG_NONE;
+ }
+
/* prepare dialog */
query_dlg =
- dlg_create (TRUE, 0, 0, lines, cols, query_colors, query_default_callback, NULL,
+ dlg_create (TRUE, lyy, lxx, lines, cols, query_colors, query_default_callback, NULL,
"[QueryBox]", header, dlg_flags);
if (count > 0)
@@ -335,7 +345,7 @@
va_end (ap);
/* do resize before running and selecting any widget */
- send_message (query_dlg, NULL, MSG_RESIZE, 0, NULL);
+ if ((flags & D_LOWER) == 0) send_message (query_dlg, NULL, MSG_RESIZE, 0, NULL);
if (defbutton != NULL)
dlg_select_widget (defbutton);
diff -urN mc-4.8.12.old/lib/widget/wtools.h mc-4.8.12/lib/widget/wtools.h
--- mc-4.8.12.old/lib/widget/wtools.h 2014-06-16 17:56:33.000000000 +0400
+++ mc-4.8.12/lib/widget/wtools.h 2014-06-16 17:58:10.000000000 +0400
@@ -20,7 +20,8 @@
{
D_NORMAL = 0,
D_ERROR = (1 << 0),
- D_CENTER = (1 << 1)
+ D_CENTER = (1 << 1),
+ D_LOWER = (1 << 2)
} /* dialog options */ ;
/*** structures declarations (and typedefs of structures)*****************************************/
diff -urN mc-4.8.12.old/src/filemanager/file.c mc-4.8.12/src/filemanager/file.c
--- mc-4.8.12.old/src/filemanager/file.c 2014-06-16 17:56:33.000000000 +0400
+++ mc-4.8.12/src/filemanager/file.c 2014-06-16 18:02:22.000000000 +0400
@@ -679,7 +679,7 @@
query_set_sel (1);
ctx->recursive_result =
- (FileCopyMode) query_dialog (op_names[OP_DELETE], text, D_ERROR, 5,
+ (FileCopyMode) query_dialog (op_names[OP_DELETE], text, D_ERROR | D_LOWER, 5,
_("&Yes"), _("&No"), _("A&ll"), _("Non&e"), _("&Abort"));
g_free (text);