summaryrefslogtreecommitdiff
path: root/riscos/dialog.c
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2010-10-05 19:14:46 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2010-10-05 19:14:46 +0000
commit6173bb0e6c3bf51cd463f7bc4f725429d9087b2b (patch)
treede3e013699742960b97ee4a5eda240908d0ea8e6 /riscos/dialog.c
parent195c1ea3193f169c6825eca1fc6207e138126e98 (diff)
downloadnetsurf-6173bb0e6c3bf51cd463f7bc4f725429d9087b2b.tar.gz
netsurf-6173bb0e6c3bf51cd463f7bc4f725429d9087b2b.tar.bz2
Merge treeview-redux to trunk
svn path=/trunk/netsurf/; revision=10865
Diffstat (limited to 'riscos/dialog.c')
-rw-r--r--riscos/dialog.c76
1 files changed, 36 insertions, 40 deletions
diff --git a/riscos/dialog.c b/riscos/dialog.c
index f0520eb73..b4195a5b7 100644
--- a/riscos/dialog.c
+++ b/riscos/dialog.c
@@ -39,11 +39,14 @@
#include "riscos/dialog.h"
#include "riscos/global_history.h"
#include "riscos/gui.h"
+#include "riscos/hotlist.h"
#include "riscos/menus.h"
#include "riscos/options.h"
#include "riscos/save.h"
+#include "riscos/sslcert.h"
#include "riscos/theme.h"
#include "riscos/url_complete.h"
+#include "riscos/url_suggest.h"
#include "riscos/wimp.h"
#include "riscos/wimp_event.h"
#include "riscos/wimputils.h"
@@ -106,18 +109,6 @@ void ro_gui_dialog_init(void)
/* 401 login window */
ro_gui_401login_init();
- /* certificate verification window */
- ro_gui_cert_init();
-
- /* hotlist window */
- ro_gui_hotlist_initialise();
-
- /* global history window */
- ro_gui_global_history_initialise();
-
- /* cookies window */
- ro_gui_cookies_initialise();
-
/* theme installation */
dialog_theme_install = ro_gui_dialog_create("theme_inst");
ro_gui_wimp_event_register_cancel(dialog_theme_install,
@@ -150,24 +141,6 @@ void ro_gui_dialog_init(void)
dialog_objinfo = ro_gui_dialog_create("objectinfo");
ro_gui_wimp_event_set_help_prefix(dialog_objinfo, "HelpObjInfo");
- /* hotlist folder editing */
- dialog_folder = ro_gui_dialog_create("new_folder");
- ro_gui_wimp_event_register_text_field(dialog_folder, ICON_FOLDER_NAME);
- ro_gui_wimp_event_register_cancel(dialog_folder, ICON_FOLDER_CANCEL);
- ro_gui_wimp_event_register_ok(dialog_folder, ICON_FOLDER_OK,
- ro_gui_hotlist_dialog_apply);
- ro_gui_wimp_event_set_help_prefix(dialog_folder, "HelpHotFolder");
-
- /* hotlist entry editing */
- dialog_entry = ro_gui_dialog_create("new_entry");
- ro_gui_wimp_event_register_text_field(dialog_entry, ICON_ENTRY_NAME);
- ro_gui_wimp_event_register_menu_gright(dialog_entry, ICON_ENTRY_URL,
- ICON_ENTRY_RECENT, url_suggest_menu);
- ro_gui_wimp_event_register_cancel(dialog_entry, ICON_ENTRY_CANCEL);
- ro_gui_wimp_event_register_ok(dialog_entry, ICON_ENTRY_OK,
- ro_gui_hotlist_dialog_apply);
- ro_gui_wimp_event_set_help_prefix(dialog_entry, "HelpHotEntry");
-
/* save as */
dialog_saveas = ro_gui_saveas_create("saveas");
ro_gui_wimp_event_register_button(dialog_saveas, ICON_SAVE_ICON,
@@ -204,6 +177,22 @@ void ro_gui_dialog_init(void)
ro_gui_wimp_event_register_ok(dialog_zoom, ICON_ZOOM_OK,
ro_gui_dialog_zoom_apply);
ro_gui_wimp_event_set_help_prefix(dialog_zoom, "HelpScaleView");
+
+ /* Treeview initialisation has moved to the end, to allow any
+ * associated dialogues to be set up first.
+ */
+
+ /* certificate verification window */
+ ro_gui_cert_preinitialise();
+
+ /* hotlist window */
+ ro_gui_hotlist_preinitialise();
+
+ /* global history window */
+ ro_gui_global_history_preinitialise();
+
+ /* cookies window */
+ ro_gui_cookies_preinitialise();
}
@@ -638,15 +627,25 @@ void ro_gui_dialog_add_persistent(wimp_w parent, wimp_w w) {
*/
void ro_gui_dialog_close_persistent(wimp_w parent) {
- int i;
-
- /* Check our mappings
- */
+ int i;
+ wimp_w w;
+
+ /* Check our mappings.
+ *
+ * The window handle is copied into w before proceeding, as
+ * ro_gui_dialog_close() will NULL persistent_dialog[i].dialog as
+ * part of the closing process. This would mean that the subsequent
+ * event dispatch would fail. (These events are logged to allow
+ * side effects to be investigated -- this code hasn't worked before).
+ */
for (i = 0; i < MAX_PERSISTENT; i++) {
if (persistent_dialog[i].parent == parent &&
persistent_dialog[i].dialog != NULL) {
- ro_gui_dialog_close(persistent_dialog[i].dialog);
- ro_gui_wimp_event_close_window(persistent_dialog[i].dialog);
+ w = persistent_dialog[i].dialog;
+ ro_gui_dialog_close(w);
+ if (ro_gui_wimp_event_close_window(w))
+ LOG(("Persistent dialog close event: 0x%x",
+ (unsigned) w));
persistent_dialog[i].parent = NULL;
persistent_dialog[i].dialog = NULL;
}
@@ -710,7 +709,6 @@ bool ro_gui_dialog_openurl_apply(wimp_w w) {
res = url_normalize(url, &url2);
if (res == URL_FUNC_OK) {
browser_window_create(url2, 0, 0, true, false);
- global_history_add_recent(url2);
free(url2);
return true;
}
@@ -724,10 +722,8 @@ bool ro_gui_dialog_openurl_apply(wimp_w w) {
void ro_gui_dialog_prepare_open_url(void)
{
- int suggestions;
ro_gui_set_icon_string(dialog_openurl, ICON_OPENURL_URL, "", true);
- global_history_get_recent(&suggestions);
ro_gui_set_icon_shaded_state(dialog_openurl,
- ICON_OPENURL_MENU, (suggestions <= 0));
+ ICON_OPENURL_MENU, !ro_gui_url_suggest_prepare_menu());
ro_gui_wimp_event_memorise(dialog_openurl);
}