summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Lees <adrian@aemulor.com>2007-06-05 05:14:54 +0000
committerAdrian Lees <adrian@aemulor.com>2007-06-05 05:14:54 +0000
commit6890f816edee2beef447d6b05f4b6fe65c2aaa52 (patch)
tree16dc9a3c1e5d9aed1c87194b0fab45f91345e601
parent6807b4208a27d9037229b16f31cc409d15a992f5 (diff)
downloadnetsurf-6890f816edee2beef447d6b05f4b6fe65c2aaa52.tar.gz
netsurf-6890f816edee2beef447d6b05f4b6fe65c2aaa52.tar.bz2
Fix interaction between failed drag save and pointer tracking (including page drag scrolling)
svn path=/trunk/netsurf/; revision=3311
-rw-r--r--riscos/save.c23
-rw-r--r--riscos/window.c1
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;
@@ -555,6 +552,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;
}