diff --git a/lib/widget/dialog-switch.c b/lib/widget/dialog-switch.c
index 0305ed1..9fe37ad 100644
a
|
b
|
dialog_switch_remove (WDialog * h) |
166 | 166 | mc_dialogs = g_list_delete_link (mc_dialogs, this); |
167 | 167 | |
168 | 168 | /* adjust current dialog */ |
169 | | if (top_dlg != NULL) |
170 | | mc_current = g_list_find (mc_dialogs, DIALOG (top_dlg->data)); |
171 | | else |
172 | | mc_current = mc_dialogs; |
173 | 169 | |
| 170 | mc_current = g_list_last (mc_dialogs); |
174 | 171 | /* resume forced the current screen */ |
175 | 172 | if (mc_current != NULL) |
176 | 173 | DIALOG (mc_current->data)->state = DLG_ACTIVE; |
diff --git a/lib/widget/dialog.c b/lib/widget/dialog.c
index 424e4c9..cdf81a6 100644
a
|
b
|
dlg_execute_cmd (WDialog * h, unsigned long command) |
310 | 310 | break; |
311 | 311 | |
312 | 312 | case CK_ScreenList: |
313 | | if (!h->modal) |
| 313 | if (!h->modal || (h->flags & DLG_ALLOW_SL)) |
314 | 314 | dialog_switch_list (); |
315 | 315 | else |
316 | 316 | ret = MSG_NOT_HANDLED; |
317 | 317 | break; |
318 | 318 | case CK_ScreenNext: |
319 | | if (!h->modal) |
| 319 | if (!h->modal || (h->flags & DLG_ALLOW_SL)) |
320 | 320 | dialog_switch_next (); |
321 | 321 | else |
322 | 322 | ret = MSG_NOT_HANDLED; |
323 | 323 | break; |
324 | 324 | case CK_ScreenPrev: |
325 | | if (!h->modal) |
| 325 | if (!h->modal || (h->flags & DLG_ALLOW_SL)) |
326 | 326 | dialog_switch_prev (); |
327 | 327 | else |
328 | 328 | ret = MSG_NOT_HANDLED; |
… |
… |
dlg_stop (WDialog * h) |
1180 | 1180 | void |
1181 | 1181 | dlg_init (WDialog * h) |
1182 | 1182 | { |
1183 | | if (top_dlg != NULL && DIALOG (top_dlg->data)->modal) |
1184 | | h->modal = TRUE; |
1185 | | |
1186 | 1183 | /* add dialog to the stack */ |
1187 | 1184 | top_dlg = g_list_prepend (top_dlg, h); |
1188 | 1185 | |
diff --git a/lib/widget/dialog.h b/lib/widget/dialog.h
index 1135857..bea125b 100644
a
|
b
|
typedef enum |
36 | 36 | DLG_CENTER = (1 << 0), /* Center the dialog */ |
37 | 37 | DLG_TRYUP = (1 << 1), /* Try to move two lines up the dialog */ |
38 | 38 | DLG_COMPACT = (1 << 2), /* Suppress spaces around the frame */ |
39 | | DLG_WANT_TAB = (1 << 3) /* Should the tab key be sent to the dialog? */ |
| 39 | DLG_WANT_TAB = (1 << 3), /* Should the tab key be sent to the dialog? */ |
| 40 | DLG_ALLOW_SL = (1 << 4) /* ScreenList available */ |
40 | 41 | } dlg_flags_t; |
41 | 42 | |
42 | 43 | /* Dialog state */ |
diff --git a/src/filemanager/find.c b/src/filemanager/find.c
index a8766ad..ff44ce1 100644
a
|
b
|
find_parameters (char **start_dir, ssize_t * start_dir_len, |
606 | 606 | |
607 | 607 | find_dlg = |
608 | 608 | dlg_create (TRUE, 0, 0, lines, cols, dialog_colors, find_parm_callback, NULL, "[Find File]", |
609 | | _("Find File"), DLG_CENTER); |
| 609 | _("Find File"), DLG_CENTER|DLG_ALLOW_SL); |
610 | 610 | |
611 | 611 | x1 = 3; |
612 | 612 | x2 = cols / 2 + 1; |
… |
… |
setup_gui (void) |
1609 | 1609 | |
1610 | 1610 | find_dlg = |
1611 | 1611 | dlg_create (TRUE, 0, 0, lines, cols, dialog_colors, find_callback, NULL, "[Find File]", |
1612 | | _("Find File"), DLG_CENTER); |
| 1612 | _("Find File"), DLG_CENTER|DLG_ALLOW_SL); |
1613 | 1613 | |
1614 | 1614 | find_calc_button_locations (find_dlg, TRUE); |
1615 | 1615 | |