diff options
Diffstat (limited to 'riscos')
-rw-r--r-- | riscos/window.c | 96 |
1 files changed, 36 insertions, 60 deletions
diff --git a/riscos/window.c b/riscos/window.c index aa157352d..34c70fb01 100644 --- a/riscos/window.c +++ b/riscos/window.c @@ -177,8 +177,6 @@ static struct form_control *gui_form_select_control; static wimp_menu *ro_gui_browser_window_menu = NULL; /** Menu of options for form select controls. */ static wimp_menu *gui_form_select_menu = NULL; -/** Page under menu, or 0 if no page. */ -static hlcache_handle *current_menu_page = 0; /** Object under menu, or 0 if no object. */ static hlcache_handle *current_menu_object = 0; /** URL of link under menu, or 0 if no link. */ @@ -2131,12 +2129,14 @@ bool ro_gui_window_menu_prepare(wimp_w w, wimp_i i, wimp_menu *menu, struct browser_window *bw; struct toolbar *toolbar; struct contextual_content cont; + hlcache_handle *h = NULL; bool export_sprite, export_draw; os_coord pos; g = (struct gui_window *) ro_gui_wimp_event_get_user_data(w); toolbar = g->toolbar; bw = g->bw; + h = g->bw->current_content; /* If this is the form select menu, handle it now and then exit. * Otherwise, carry on to the main browser window menu. @@ -2165,7 +2165,6 @@ bool ro_gui_window_menu_prepare(wimp_w w, wimp_i i, wimp_menu *menu, browser_window_get_contextual_content(bw, pos.x, pos.y, &cont); - current_menu_page = cont.main; current_menu_object = cont.object; current_menu_url = cont.link_url; } @@ -2199,48 +2198,32 @@ bool ro_gui_window_menu_prepare(wimp_w w, wimp_i i, wimp_menu *menu, /* Page Submenu */ - ro_gui_menu_set_entry_shaded(menu, BROWSER_PAGE, - current_menu_page == NULL || - (content_get_type(current_menu_page) != CONTENT_HTML && - content_get_type(current_menu_page) != - CONTENT_TEXTPLAIN)); + ro_gui_menu_set_entry_shaded(menu, BROWSER_PAGE, h == NULL || + (content_get_type(h) != CONTENT_HTML && + content_get_type(h) != CONTENT_TEXTPLAIN)); - ro_gui_menu_set_entry_shaded(menu, BROWSER_PAGE_INFO, - current_menu_page == NULL); + ro_gui_menu_set_entry_shaded(menu, BROWSER_PAGE_INFO, h == NULL); - ro_gui_menu_set_entry_shaded(menu, BROWSER_PRINT, - current_menu_page == NULL); + ro_gui_menu_set_entry_shaded(menu, BROWSER_PRINT, h == NULL); - ro_gui_menu_set_entry_shaded(menu, BROWSER_NEW_WINDOW, - current_menu_page == NULL); + ro_gui_menu_set_entry_shaded(menu, BROWSER_NEW_WINDOW, h == NULL); ro_gui_menu_set_entry_shaded(menu, BROWSER_FIND_TEXT, - current_menu_page == NULL || - (content_get_type(current_menu_page) != CONTENT_HTML && - content_get_type(current_menu_page) != - CONTENT_TEXTPLAIN)); - - - ro_gui_menu_set_entry_shaded(menu, BROWSER_VIEW_SOURCE, - current_menu_page == NULL); - - ro_gui_menu_set_entry_shaded(menu, BROWSER_SAVE_URL_URI, - current_menu_page == NULL); - ro_gui_menu_set_entry_shaded(menu, BROWSER_SAVE_URL_URL, - current_menu_page == NULL); - ro_gui_menu_set_entry_shaded(menu, BROWSER_SAVE_URL_TEXT, - current_menu_page == NULL); - - ro_gui_menu_set_entry_shaded(menu, BROWSER_SAVE, - current_menu_page == NULL); - ro_gui_menu_set_entry_shaded(menu, BROWSER_SAVE_COMPLETE, - current_menu_page == NULL); - ro_gui_menu_set_entry_shaded(menu, BROWSER_EXPORT_DRAW, - current_menu_page == NULL); - ro_gui_menu_set_entry_shaded(menu, BROWSER_EXPORT_PDF, - current_menu_page == NULL); - ro_gui_menu_set_entry_shaded(menu, BROWSER_EXPORT_TEXT, - current_menu_page == NULL); + h == NULL || (content_get_type(h) != CONTENT_HTML && + content_get_type(h) != CONTENT_TEXTPLAIN)); + + + ro_gui_menu_set_entry_shaded(menu, BROWSER_VIEW_SOURCE, h == NULL); + + ro_gui_menu_set_entry_shaded(menu, BROWSER_SAVE_URL_URI, h == NULL); + ro_gui_menu_set_entry_shaded(menu, BROWSER_SAVE_URL_URL, h == NULL); + ro_gui_menu_set_entry_shaded(menu, BROWSER_SAVE_URL_TEXT, h == NULL); + + ro_gui_menu_set_entry_shaded(menu, BROWSER_SAVE, h == NULL); + ro_gui_menu_set_entry_shaded(menu, BROWSER_SAVE_COMPLETE, h == NULL); + ro_gui_menu_set_entry_shaded(menu, BROWSER_EXPORT_DRAW, h == NULL); + ro_gui_menu_set_entry_shaded(menu, BROWSER_EXPORT_PDF, h == NULL); + ro_gui_menu_set_entry_shaded(menu, BROWSER_EXPORT_TEXT, h == NULL); ro_gui_menu_set_entry_shaded(menu, BROWSER_LINK_SAVE_URI, !current_menu_url); @@ -2284,30 +2267,27 @@ bool ro_gui_window_menu_prepare(wimp_w w, wimp_i i, wimp_menu *menu, ro_gui_window_content_export_types(current_menu_object, &export_draw, &export_sprite); else - ro_gui_window_content_export_types(current_menu_page, + ro_gui_window_content_export_types(h, &export_draw, &export_sprite); ro_gui_menu_set_entry_shaded(menu, BROWSER_OBJECT_EXPORT, - (current_menu_page == NULL && - current_menu_object == NULL) - || !(export_sprite || export_draw)); + (h == NULL && current_menu_object == NULL) + || !(export_sprite || export_draw)); ro_gui_menu_set_entry_shaded(menu, BROWSER_OBJECT_EXPORT_SPRITE, - (current_menu_page == NULL && - current_menu_object == NULL) || !export_sprite); + (h == NULL && current_menu_object == NULL) + || !export_sprite); ro_gui_menu_set_entry_shaded(menu, BROWSER_OBJECT_EXPORT_DRAW, - (current_menu_page == NULL && - current_menu_object == NULL) || !export_draw); + (h == NULL && current_menu_object == NULL) + || !export_draw); /* Selection Submenu */ ro_gui_menu_set_entry_shaded(menu, BROWSER_SELECTION, - current_menu_page == NULL || - (content_get_type(current_menu_page) != CONTENT_HTML && - content_get_type(current_menu_page) != - CONTENT_TEXTPLAIN)); + h == NULL || (content_get_type(h) != CONTENT_HTML && + content_get_type(h) != CONTENT_TEXTPLAIN)); /* make menu available if there's anything that /could/ * be selected */ @@ -2322,8 +2302,7 @@ bool ro_gui_window_menu_prepare(wimp_w w, wimp_i i, wimp_menu *menu, selection_read_only(browser_window_get_selection(bw))); ro_gui_menu_set_entry_shaded(menu, BROWSER_SELECTION_PASTE, - current_menu_page == NULL || - bw->paste_callback == NULL); + h == NULL || bw->paste_callback == NULL); ro_gui_menu_set_entry_shaded(menu, BROWSER_SELECTION_CLEAR, !browser_window_has_selection(bw)); @@ -2367,8 +2346,7 @@ bool ro_gui_window_menu_prepare(wimp_w w, wimp_i i, wimp_menu *menu, ro_gui_menu_set_entry_ticked(menu, BROWSER_BUFFER_ALL, g != NULL && g->option.buffer_everything); - ro_gui_menu_set_entry_shaded(menu, BROWSER_SCALE_VIEW, - current_menu_page == NULL); + ro_gui_menu_set_entry_shaded(menu, BROWSER_SCALE_VIEW, h == NULL); ro_gui_menu_set_entry_shaded(menu, BROWSER_WINDOW_STAGGER, option_window_screen_width == 0); @@ -2385,13 +2363,11 @@ bool ro_gui_window_menu_prepare(wimp_w w, wimp_i i, wimp_menu *menu, /* Utilities Submenu */ - ro_gui_menu_set_entry_shaded(menu, HOTLIST_ADD_URL, - current_menu_page == NULL); + ro_gui_menu_set_entry_shaded(menu, HOTLIST_ADD_URL, h == NULL); ro_gui_menu_set_entry_shaded(menu, HISTORY_SHOW_LOCAL, (bw == NULL || (bw->history == NULL) || - !(current_menu_page != NULL || - history_back_available(bw->history) || + !(h != NULL || history_back_available(bw->history) || history_forward_available(bw->history)))); |