diff options
author | Richard Wilson <rjw@netsurf-browser.org> | 2005-05-10 22:49:41 +0000 |
---|---|---|
committer | Richard Wilson <rjw@netsurf-browser.org> | 2005-05-10 22:49:41 +0000 |
commit | 759ff816db2f64b83fa260b6523f9871feb05d7d (patch) | |
tree | 45b01b542c92e217680fc42f184df23e933bbbb3 | |
parent | 7fda82f77834d867d8b803366f4572fefe126e05 (diff) | |
download | netsurf-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
-rwxr-xr-x | !NetSurf/Resources/de/Templates,fec | bin | 12248 -> 12300 bytes | |||
-rw-r--r-- | !NetSurf/Resources/en/Templates,fec | bin | 12192 -> 12244 bytes | |||
-rw-r--r-- | !NetSurf/Resources/fr/Templates,fec | bin | 12540 -> 12592 bytes | |||
-rw-r--r-- | riscos/dialog.c | 74 | ||||
-rw-r--r-- | riscos/gui.h | 1 | ||||
-rw-r--r-- | riscos/menus.c | 15 |
6 files changed, 84 insertions, 6 deletions
diff --git a/!NetSurf/Resources/de/Templates,fec b/!NetSurf/Resources/de/Templates,fec Binary files differindex c8c2aa9b2..3325a4245 100755 --- a/!NetSurf/Resources/de/Templates,fec +++ b/!NetSurf/Resources/de/Templates,fec diff --git a/!NetSurf/Resources/en/Templates,fec b/!NetSurf/Resources/en/Templates,fec Binary files differindex dd04ea82a..839affc53 100644 --- a/!NetSurf/Resources/en/Templates,fec +++ b/!NetSurf/Resources/en/Templates,fec diff --git a/!NetSurf/Resources/fr/Templates,fec b/!NetSurf/Resources/fr/Templates,fec Binary files differindex 0f2922149..ef6f20713 100644 --- a/!NetSurf/Resources/fr/Templates,fec +++ b/!NetSurf/Resources/fr/Templates,fec 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)); } diff --git a/riscos/gui.h b/riscos/gui.h index a24b7653a..cfa96c62f 100644 --- a/riscos/gui.h +++ b/riscos/gui.h @@ -421,5 +421,6 @@ void ro_gui_theme_install_click(wimp_pointer *pointer); #define ICON_OPENURL_URL 1 #define ICON_OPENURL_CANCEL 2 #define ICON_OPENURL_OPEN 3 +#define ICON_OPENURL_MENU 4 #endif diff --git a/riscos/menus.c b/riscos/menus.c index f27db2b70..e5f719e16 100644 --- a/riscos/menus.c +++ b/riscos/menus.c @@ -570,11 +570,18 @@ void ro_gui_menu_selection(wimp_selection *selection) { /* perform non-automated actions */ if (current_menu == url_suggest_menu) { g = ro_gui_toolbar_lookup(current_menu_window); - assert(g); - browser_window_go(g->bw, - url_suggest_menu->entries[selection->items[0]]. + if (g) + browser_window_go(g->bw, + url_suggest_menu->entries[selection->items[0]]. data.indirected_text.text, 0); - global_history_add_recent(url_suggest_menu-> + else + ro_gui_set_icon_string(dialog_openurl, ICON_OPENURL_URL, + url_suggest_menu->entries[selection->items[0]]. + data.indirected_text.text); +/* browser_window_create( + url_suggest_menu->entries[selection->items[0]]. + data.indirected_text.text, 0, 0); +*/ global_history_add_recent(url_suggest_menu-> entries[selection->items[0]]. data.indirected_text.text); } else if (current_menu == proxy_auth_menu) { |