From 6890f816edee2beef447d6b05f4b6fe65c2aaa52 Mon Sep 17 00:00:00 2001 From: Adrian Lees Date: Tue, 5 Jun 2007 05:14:54 +0000 Subject: Fix interaction between failed drag save and pointer tracking (including page drag scrolling) svn path=/trunk/netsurf/; revision=3311 --- riscos/save.c | 23 +++++++++++++++-------- riscos/window.c | 1 + 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/riscos/save.c b/riscos/save.c index aca013a41..f3d6a3836 100644 --- a/riscos/save.c +++ b/riscos/save.c @@ -64,6 +64,7 @@ typedef enum { LINK_ACORN, LINK_ANT, LINK_TEXT } link_format; static bool ro_gui_save_complete(struct content *c, char *path); static bool ro_gui_save_content(struct content *c, char *path); +static void ro_gui_save_bounced(wimp_message *message); static void ro_gui_save_object_native(struct content *c, char *path); static bool ro_gui_save_link(struct content *c, link_format format, char *path); static void ro_gui_save_set_state(struct content *c, gui_save_type save_type, @@ -518,8 +519,8 @@ void ro_gui_save_drag_end(wimp_dragged *drag) message.size = 44 + ((strlen(message.data.data_xfer.file_name) + 4) & (~3u)); - wimp_send_message_to_window(wimp_USER_MESSAGE, &message, - pointer.w, pointer.i); + ro_message_send_message_to_window(wimp_USER_MESSAGE_RECORDED, &message, + pointer.w, pointer.i, ro_gui_save_bounced, NULL); free(local_name); } @@ -540,12 +541,8 @@ void ro_gui_send_datasave(gui_save_type save_type, wimp_full_message_data_xfer * xwimp_create_menu(wimp_CLOSE_MENU, 0, 0); ro_gui_dialog_close(dialog_saveas); - error = xwimp_send_message(wimp_USER_MESSAGE, (wimp_message*)message, to); - if (error) { - LOG(("xwimp_send_message: 0x%x: %s", error->errnum, error->errmess)); - warn_user("WimpError", error->errmess); - } - else { + if (ro_message_send_message(wimp_USER_MESSAGE_RECORDED, (wimp_message*)message, + to, ro_gui_save_bounced)) { gui_save_current_type = save_type; gui_save_sourcew = (wimp_w)-1; saving_from_dialog = false; @@ -554,6 +551,16 @@ void ro_gui_send_datasave(gui_save_type save_type, wimp_full_message_data_xfer * } +/** + * Handle lack of Message_DataSaveAck for drags, saveas dialogs and clipboard code + */ + +void ro_gui_save_bounced(wimp_message *message) +{ + gui_current_drag_type = GUI_DRAG_NONE; +} + + /** * Handle Message_DataSaveAck for a drag from the save dialog or browser window. */ diff --git a/riscos/window.c b/riscos/window.c index fe7ffa315..b2279b52f 100644 --- a/riscos/window.c +++ b/riscos/window.c @@ -1198,6 +1198,7 @@ bool gui_window_scroll_start(struct gui_window *g) return false; } + gui_track_gui_window = g; gui_current_drag_type = GUI_DRAG_SCROLL; return true; } -- cgit v1.2.3