summaryrefslogtreecommitdiff
path: root/riscos/dialog.c
diff options
context:
space:
mode:
Diffstat (limited to 'riscos/dialog.c')
-rw-r--r--riscos/dialog.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/riscos/dialog.c b/riscos/dialog.c
index 706ee5701..fdd71ba77 100644
--- a/riscos/dialog.c
+++ b/riscos/dialog.c
@@ -42,7 +42,7 @@
/* The maximum number of persistent dialogues
*/
-#define MAX_PERSISTENT 16
+#define MAX_PERSISTENT 64
wimp_w dialog_info, dialog_saveas,
@@ -355,11 +355,17 @@ void ro_gui_dialog_close(wimp_w close)
for (i = 0; i < MAX_PERSISTENT; i++) {
if (persistent_dialog[i].dialog == close) {
/* We are => invalidate record */
+ persistent_dialog[i].parent = NULL;
persistent_dialog[i].dialog = NULL;
break;
}
}
+ /* Close any child windows */
+ for (i = 0; i < MAX_PERSISTENT; i++)
+ if (persistent_dialog[i].parent == close)
+ ro_gui_dialog_close(persistent_dialog[i].dialog);
+
/* Give the caret back to the parent window. This code relies on
the fact that only tree windows and browser windows open
persistent dialogues, as the caret gets placed to no icon.