diff options
author | Richard Wilson <rjw@netsurf-browser.org> | 2006-07-03 21:07:02 +0000 |
---|---|---|
committer | Richard Wilson <rjw@netsurf-browser.org> | 2006-07-03 21:07:02 +0000 |
commit | de0c4e2c32c1ecbef75293653adff4e4ceffeffe (patch) | |
tree | 105483179bd2e38a08774cd63baf2137c5d6a0ff /riscos/menus.c | |
parent | 79cd7b86a91e86951d989ec341a839bdb0aa57d9 (diff) | |
download | netsurf-de0c4e2c32c1ecbef75293653adff4e4ceffeffe.tar.gz netsurf-de0c4e2c32c1ecbef75293653adff4e4ceffeffe.tar.bz2 |
Implement up toolbar icon and menu option.
svn path=/trunk/netsurf/; revision=2705
Diffstat (limited to 'riscos/menus.c')
-rw-r--r-- | riscos/menus.c | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/riscos/menus.c b/riscos/menus.c index 83fc09e3b..4e5cfc98a 100644 --- a/riscos/menus.c +++ b/riscos/menus.c @@ -194,7 +194,8 @@ void ro_gui_menu_init(void) { "Navigate", NO_ACTION, 0 }, { "Navigate.Home", BROWSER_NAVIGATE_HOME, 0 }, { "Navigate.Back", BROWSER_NAVIGATE_BACK, 0 }, - { "_Navigate.Forward", BROWSER_NAVIGATE_FORWARD, 0 }, + { "Navigate.Forward", BROWSER_NAVIGATE_FORWARD, 0 }, + { "_Navigate.UpLevel", BROWSER_NAVIGATE_UP, 0 }, { "Navigate.Reload", BROWSER_NAVIGATE_RELOAD_ALL, 0 }, { "Navigate.Stop", BROWSER_NAVIGATE_STOP, 0 }, { "View", NO_ACTION, 0 }, @@ -809,6 +810,7 @@ void ro_gui_prepare_navigate(struct gui_window *gui) { ro_gui_menu_prepare_action(gui->window, BROWSER_NAVIGATE_BACK, false); ro_gui_menu_prepare_action(gui->window, BROWSER_NAVIGATE_FORWARD, false); + ro_gui_menu_prepare_action(gui->window, BROWSER_NAVIGATE_UP, false); ro_gui_menu_prepare_action(gui->window, HOTLIST_SHOW, false); ro_gui_menu_prepare_action(gui->window, BROWSER_SAVE, false); ro_gui_menu_prepare_action(gui->window, BROWSER_PRINT, false); @@ -1370,6 +1372,9 @@ bool ro_gui_menu_handle_action(wimp_w owner, menu_action action, os_error *error; char url[80]; const struct url_data *data; + char *parent; + url_func_result res; + bool compare; ro_gui_menu_get_window_details(owner, &g, &bw, &c, &t, &tree); @@ -1518,6 +1523,17 @@ bool ro_gui_menu_handle_action(wimp_w owner, menu_action action, return false; history_forward(bw, bw->history); return true; + case BROWSER_NAVIGATE_UP: + if ((!bw) || (!c)) + return false; + res = url_parent(c->url, &parent); + if (res == URL_FUNC_OK) { + res = url_compare(c->url, parent, &compare); + if (!compare && (res == URL_FUNC_OK)) + browser_window_go(g->bw, parent, 0, true); + free(parent); + } + return true; case BROWSER_NAVIGATE_RELOAD: case BROWSER_NAVIGATE_RELOAD_ALL: if (!bw) @@ -1734,6 +1750,9 @@ void ro_gui_menu_prepare_action(wimp_w owner, menu_action action, bool result = false; int checksum = 0; os_error *error; + char *parent; + url_func_result res; + bool compare; ro_gui_menu_get_window_details(owner, &g, &bw, &c, &t, &tree); if (current_menu_open) @@ -1930,6 +1949,27 @@ void ro_gui_menu_prepare_action(wimp_w owner, menu_action action, t->toolbar_handle, ICON_TOOLBAR_FORWARD, result); break; + case BROWSER_NAVIGATE_UP: + result = (bw && c); + if (result) { + res = url_parent(c->url, &parent); + if (res == URL_FUNC_OK) { + res = url_compare(c->url, parent, &compare); + result = !compare; + free(parent); + } else { + result = false; + } + } + ro_gui_menu_set_entry_shaded(current_menu, + action, !result); + if ((t) && (!t->editor) && + (t->type == THEME_BROWSER_TOOLBAR)) + ro_gui_set_icon_shaded_state( + t->toolbar_handle, + ICON_TOOLBAR_UP, !result); + result = true; + break; case BROWSER_NAVIGATE_RELOAD: case BROWSER_NAVIGATE_RELOAD_ALL: result = (bw->current_content && !bw->loading_content); |