summaryrefslogtreecommitdiff
path: root/riscos/gui.c
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2004-03-04 23:15:17 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2004-03-04 23:15:17 +0000
commit0ea3e074f6a28b61c16e5cbfcb2f084035d85ea3 (patch)
tree07c45ef2112e9655a6876a14e839e592fd3510af /riscos/gui.c
parent303e09a6c271b16b13674c5a9cbdd18f5c68ca49 (diff)
downloadnetsurf-0ea3e074f6a28b61c16e5cbfcb2f084035d85ea3.tar.gz
netsurf-0ea3e074f6a28b61c16e5cbfcb2f084035d85ea3.tar.bz2
[project @ 2004-03-04 23:15:17 by jmb]
Add support for double clicking on / dragging in URL files. svn path=/import/netsurf/; revision=582
Diffstat (limited to 'riscos/gui.c')
-rw-r--r--riscos/gui.c60
1 files changed, 53 insertions, 7 deletions
diff --git a/riscos/gui.c b/riscos/gui.c
index b0838a81d..0a816cee7 100644
--- a/riscos/gui.c
+++ b/riscos/gui.c
@@ -801,7 +801,7 @@ void ro_msg_datasave(wimp_message* block)
void ro_msg_dataload(wimp_message *message)
{
- char *url;
+ char *url = 0;
if (message->data.data_xfer.w != wimp_ICON_BAR)
return;
@@ -812,16 +812,39 @@ void ro_msg_dataload(wimp_message *message)
message->data.data_xfer.file_type != 0xb60 &&
message->data.data_xfer.file_type != 0xc85 &&
message->data.data_xfer.file_type != 0xff9 &&
- message->data.data_xfer.file_type != 0xfff)
+ message->data.data_xfer.file_type != 0xfff &&
+ message->data.data_xfer.file_type != 0xb28)
return;
+ /* url file */
+ if (message->data.data_xfer.file_type == 0xb28) {
+ char *temp;
+ FILE *fp = fopen(message->data.data_xfer.file_name, "r");
+
+ if (!fp) return;
+
+ url = xcalloc(256, sizeof(char));
+
+ temp = fgets(url, 256, fp);
+
+ fclose(fp);
+
+ if (!temp) return;
+
+ if (url[strlen(url)-1] == '\n') {
+ url[strlen(url)-1] = '\0';
+ }
+ }
+
/* send DataLoadAck */
message->action = message_DATA_LOAD_ACK;
message->your_ref = message->my_ref;
wimp_send_message(wimp_USER_MESSAGE, message, message->sender);
/* create a new window with the file */
- url = ro_path_to_url(message->data.data_xfer.file_name);
+ if (message->data.data_xfer.file_type != 0xb28) {
+ url = ro_path_to_url(message->data.data_xfer.file_name);
+ }
if (url) {
browser_window_create(url);
free(url);
@@ -906,19 +929,42 @@ void ro_msg_datasave_ack(wimp_message *message)
void ro_msg_dataopen(wimp_message *message)
{
- char *url;
+ char *url = 0;
- if (message->data.data_xfer.file_type != 0xfaf)
- /* ignore all but HTML */
+ if (message->data.data_xfer.file_type != 0xfaf &&
+ message->data.data_xfer.file_type != 0xb28)
+ /* ignore all but HTML and URL */
return;
+ /* url file */
+ if (message->data.data_xfer.file_type == 0xb28) {
+ char *temp;
+ FILE *fp = fopen(message->data.data_xfer.file_name, "r");
+
+ if (!fp) return;
+
+ url = xcalloc(256, sizeof(char));
+
+ temp = fgets(url, 256, fp);
+
+ fclose(fp);
+
+ if (!temp) return;
+
+ if (url[strlen(url)-1] == '\n') {
+ url[strlen(url)-1] = '\0';
+ }
+ }
+
/* send DataLoadAck */
message->action = message_DATA_LOAD_ACK;
message->your_ref = message->my_ref;
wimp_send_message(wimp_USER_MESSAGE, message, message->sender);
/* create a new window with the file */
- url = ro_path_to_url(message->data.data_xfer.file_name);
+ if (message->data.data_xfer.file_type != 0xb28) {
+ url = ro_path_to_url(message->data.data_xfer.file_name);
+ }
if (url) {
browser_window_create(url);
free(url);