From bce01f90bcdc3dd9d574d4bf40897c4d576dc9aa Mon Sep 17 00:00:00 2001 From: Adrian Lees Date: Sat, 31 Jan 2009 03:43:06 +0000 Subject: RFix immediate menu-related problems; changes to follow svn path=/trunk/netsurf/; revision=6318 --- riscos/menus.c | 2 +- riscos/save.c | 43 +++++++++++++++++++++++++++++++++++++++++++ riscos/save.h | 2 ++ riscos/window.c | 3 ++- 4 files changed, 48 insertions(+), 2 deletions(-) (limited to 'riscos') diff --git a/riscos/menus.c b/riscos/menus.c index abfd1fdfc..3e1f25f0b 100644 --- a/riscos/menus.c +++ b/riscos/menus.c @@ -215,7 +215,7 @@ void ro_gui_menu_init(void) { "Object.Object.SaveURL.URI", BROWSER_OBJECT_SAVE_URL_URI, dialog_saveas }, { "Object.Object.SaveURL.URL", BROWSER_OBJECT_SAVE_URL_URL, dialog_saveas }, { "Object.Object.SaveURL.LinkText", BROWSER_OBJECT_SAVE_URL_TEXT, dialog_saveas }, - { "_Object.Object.ObjReload", BROWSER_OBJECT_RELOAD, 0 }, + { "Object.Object.ObjReload", BROWSER_OBJECT_RELOAD, 0 }, { "Object.Link", BROWSER_OBJECT_LINK, 0 }, { "Object.Link.LinkSave", BROWSER_LINK_SAVE, 0 }, { "Object.Link.LinkSave.URI", BROWSER_LINK_SAVE_URI, dialog_saveas }, diff --git a/riscos/save.c b/riscos/save.c index 47a1463c7..900d6b651 100644 --- a/riscos/save.c +++ b/riscos/save.c @@ -413,6 +413,49 @@ void gui_drag_save_selection(struct selection *s, struct gui_window *g) } +/** + * Initiates drag saving of a link/URL file + * + * \param save_type format in which URL should be saved + * \param url url to be saved + * \param title title to be included in URI format, if any + * \param g gui window to save from + * \ + */ + +void ro_gui_drag_save_link(gui_save_type save_type, const char *url, + const char *title, struct gui_window *g) +{ + wimp_pointer pointer; + char icon_buf[20]; + os_error *error; + + /* Close the save window because otherwise we need two contexts + */ + xwimp_create_menu(wimp_CLOSE_MENU, 0, 0); + ro_gui_dialog_close(dialog_saveas); + + gui_save_url = url; + gui_save_title = title; + gui_save_sourcew = g->window; + saving_from_dialog = false; + + error = xwimp_get_pointer_info(&pointer); + if (error) { + LOG(("xwimp_get_pointer_info: 0x%x: %s", + error->errnum, error->errmess)); + warn_user("WimpError", error->errmess); + return; + } + + ro_gui_save_set_state(NULL, save_type, url, save_leafname, icon_buf); + + gui_current_drag_type = GUI_DRAG_SAVE; + + ro_gui_drag_icon(pointer.pos.x, pointer.pos.y, icon_buf); +} + + /** * Start drag of icon under the pointer. */ diff --git a/riscos/save.h b/riscos/save.h index ae98c18a3..e67291945 100644 --- a/riscos/save.h +++ b/riscos/save.h @@ -32,6 +32,8 @@ void ro_gui_saveas_quit(void); void ro_gui_save_prepare(gui_save_type save_type, struct content *c, struct selection *s, const char *url, const char *title); void ro_gui_save_start_drag(wimp_pointer *pointer); +void ro_gui_drag_save_link(gui_save_type save_type, const char *url, + const char *title, struct gui_window *g); void ro_gui_drag_icon(int x, int y, const char *sprite); void ro_gui_drag_box_cancel(void); void ro_gui_save_drag_end(wimp_dragged *drag); diff --git a/riscos/window.c b/riscos/window.c index a9d39ffd3..c1b18cf0f 100644 --- a/riscos/window.c +++ b/riscos/window.c @@ -2216,6 +2216,7 @@ bool ro_gui_toolbar_click(wimp_pointer *pointer) case ICON_TOOLBAR_URL: if (pointer->buttons & (wimp_DRAG_SELECT | wimp_DRAG_ADJUST)) { if (g->bw->current_content) { + struct content *c = g->bw->current_content; gui_save_type save_type; if (ro_gui_shift_pressed()) @@ -2223,7 +2224,7 @@ bool ro_gui_toolbar_click(wimp_pointer *pointer) else save_type = GUI_SAVE_LINK_TEXT; - gui_drag_save_object(save_type, g->bw->current_content, g); + ro_gui_drag_save_link(save_type, c->url, c->title, g); } } else -- cgit v1.2.3