summaryrefslogtreecommitdiff
path: root/riscos/dialog.c
diff options
context:
space:
mode:
authorRichard Wilson <rjw@netsurf-browser.org>2005-05-10 22:49:41 +0000
committerRichard Wilson <rjw@netsurf-browser.org>2005-05-10 22:49:41 +0000
commit759ff816db2f64b83fa260b6523f9871feb05d7d (patch)
tree45b01b542c92e217680fc42f184df23e933bbbb3 /riscos/dialog.c
parent7fda82f77834d867d8b803366f4572fefe126e05 (diff)
downloadnetsurf-759ff816db2f64b83fa260b6523f9871feb05d7d.tar.gz
netsurf-759ff816db2f64b83fa260b6523f9871feb05d7d.tar.bz2
[project @ 2005-05-10 22:49:41 by rjw]
Implement RETURN for search and open url dialogs. Add recent URL menu to open url dialog. svn path=/import/netsurf/; revision=1716
Diffstat (limited to 'riscos/dialog.c')
-rw-r--r--riscos/dialog.c74
1 files changed, 72 insertions, 2 deletions
diff --git a/riscos/dialog.c b/riscos/dialog.c
index 599355ebf..53316e71f 100644
--- a/riscos/dialog.c
+++ b/riscos/dialog.c
@@ -424,12 +424,23 @@ bool ro_gui_dialog_keypress(wimp_key *key)
return true;
} else if (key->w == dialog_saveas)
ro_gui_save_ok(key->w);
+ else if (key->w == dialog_openurl) {
+ pointer.w = key->w;
+ pointer.i = ICON_OPENURL_OPEN;
+ pointer.buttons = wimp_CLICK_SELECT;
+ ro_gui_dialog_click_open_url(&pointer);
+ } else if (key->w == dialog_search) {
+ pointer.w = key->w;
+ pointer.i = ICON_SEARCH_FIND;
+ pointer.buttons = wimp_CLICK_SELECT;
+ ro_gui_search_click(&pointer);
+ }
}
#ifdef WITH_AUTH
if (key->w == dialog_401li)
return ro_gui_401login_keypress(key);
#endif
-
+
return false;
}
@@ -1251,9 +1262,64 @@ void ro_gui_dialog_prepare_zoom(struct gui_window *g)
void ro_gui_dialog_click_open_url(wimp_pointer *pointer)
{
+ wimp_window_state open;
url_func_result res;
const char *url;
char *url2;
+ bool reopen_window = false;
+ wimp_caret caret;
+ os_error *error;
+
+ if (pointer->i == ICON_OPENURL_MENU) {
+ /* we can't have two open menus, so we close the iconbar menu
+ * and detach our window from it */
+ if (current_menu == iconbar_menu) {
+ reopen_window = true;
+ open.w = dialog_openurl;
+ error = xwimp_get_window_state(&open);
+ if (error) {
+ LOG(("xwimp_get_window_state: 0x%x: %s",
+ error->errnum, error->errmess));
+ warn_user("WimpError", error->errmess);
+ return;
+ }
+ error = xwimp_get_caret_position(&caret);
+ if (error) {
+ LOG(("xwimp_get_caret_position: 0x%x: %s",
+ error->errnum, error->errmess));
+ warn_user("WimpError", error->errmess);
+ return;
+ }
+
+ ro_gui_menu_closed();
+ gui_poll(true);
+ ro_gui_wimp_update_window_furniture(dialog_openurl,
+ wimp_WINDOW_BACK_ICON,
+ wimp_WINDOW_BACK_ICON);
+ error = xwimp_open_window((wimp_open *) &open);
+ if (error) {
+ LOG(("xwimp_open_window: 0x%x: %s",
+ error->errnum, error->errmess));
+ warn_user("WimpError", error->errmess);
+ return;
+ }
+ if (caret.w == dialog_openurl) {
+ error = xwimp_set_caret_position(dialog_openurl,
+ ICON_OPENURL_URL,
+ caret.pos.x, caret.pos.y,
+ -1, caret.index);
+ if (error) {
+ LOG(("xwimp_set_caret_position: 0x%x: %s",
+ error->errnum, error->errmess));
+ warn_user("WimpError", error->errmess);
+ }
+ }
+ }
+ ro_gui_popup_menu(url_suggest_menu,
+ dialog_openurl,
+ ICON_OPENURL_MENU);
+ return;
+ }
if ((pointer->i != ICON_OPENURL_OPEN) &&
(pointer->i != ICON_OPENURL_CANCEL))
@@ -1288,7 +1354,11 @@ void ro_gui_dialog_click_open_url(wimp_pointer *pointer)
void ro_gui_dialog_prepare_open_url(void)
{
- ro_gui_set_icon_string(dialog_openurl, ICON_OPENURL_URL, "www.");
+ int suggestions;
+ ro_gui_set_icon_string(dialog_openurl, ICON_OPENURL_URL, "");
+ global_history_get_recent(&suggestions);
+ ro_gui_set_icon_shaded_state(dialog_openurl,
+ ICON_OPENURL_MENU, (suggestions <= 0));
}