diff options
author | Ole Loots <ole@monochrom.net> | 2011-12-04 17:18:29 +0000 |
---|---|---|
committer | Ole Loots <ole@monochrom.net> | 2011-12-04 17:18:29 +0000 |
commit | d7067aa873191403c16ed2135165530311d1505d (patch) | |
tree | 319ad197b9a8f3babe92af5d5f73209ee790f190 /atari | |
parent | 49ff4d5900c303e051b279f5bf3428a24c7d9e5e (diff) | |
download | netsurf-d7067aa873191403c16ed2135165530311d1505d.tar.gz netsurf-d7067aa873191403c16ed2135165530311d1505d.tar.bz2 |
Fix file drops
svn path=/trunk/netsurf/; revision=13241
Diffstat (limited to 'atari')
-rwxr-xr-x | atari/browser_win.c | 74 |
1 files changed, 15 insertions, 59 deletions
diff --git a/atari/browser_win.c b/atari/browser_win.c index 5f2938c67..7a890a04c 100755 --- a/atari/browser_win.c +++ b/atari/browser_win.c @@ -390,74 +390,30 @@ static void __CDECL evnt_window_dd( WINDOW *win, short wbuff[8], void * data ) size, mx, my
));
{
- int posx, posy;
- struct box *box;
- struct box *file_box = 0;
- hlcache_handle *h;
- int box_x, box_y;
LGRECT bwrect;
struct browser_window * bw = gw->browser->bw;
- h = bw->current_content;
- if (!bw->current_content || content_get_type(h) != CONTENT_HTML)
- return;
browser_get_rect( gw, BR_CONTENT, &bwrect );
mx = mx - bwrect.g_x;
- my = my - bwrect.g_y;
+ my = my - bwrect.g_y; if( (mx < 0 || mx > bwrect.g_w) || (my < 0 || my > bwrect.g_h) )
- return;
- box = html_get_box_tree(h);
- box_x = box->margin[LEFT];
- box_y = box->margin[TOP];
-
- while ((box = box_at_point(box, mx+gw->browser->scroll.current.x, my+gw->browser->scroll.current.y, &box_x, &box_y, &h)))
- {
- if (box->style && css_computed_visibility(box->style) == CSS_VISIBILITY_HIDDEN)
- continue;
- if (box->gadget)
- {
- switch (box->gadget->type)
- {
- case GADGET_FILE:
- file_box = box;
- break;
- /*
- TODO: handle these
- case GADGET_TEXTBOX:
- case GADGET_TEXTAREA:
- case GADGET_PASSWORD:
- text_box = box;
- break;
- */
- default:
- break;
- }
- }
- } /* end While */
- if ( !file_box )
- return;
- if (file_box) {
- utf8_convert_ret ret;
- char *utf8_fn;
-
- ret = local_encoding_to_utf8( buff, 0, &utf8_fn);
- if (ret != UTF8_CONVERT_OK) {
+ return; + + utf8_convert_ret ret;
+ char *utf8_fn; +
+ ret = utf8_from_local_encoding( buff, 0, &utf8_fn);
+ if (ret != UTF8_CONVERT_OK) {
/* A bad encoding should never happen */
LOG(("utf8_from_local_encoding failed"));
assert(ret != UTF8_CONVERT_BADENC);
- /* Load was for us - just no memory */
+ /* no memory */
return;
- }
- /* Found: update form input. */
- free(file_box->gadget->value);
- file_box->gadget->value = utf8_fn;
- /* Redraw box. */
- box_coords(file_box, &posx, &posy);
- browser_schedule_redraw(bw->window,
- posx - gw->browser->scroll.current.x,
- posy - gw->browser->scroll.current.y,
- posx - gw->browser->scroll.current.x + file_box->width,
- posy - gw->browser->scroll.current.y + file_box->height);
- }
+ } + browser_window_drop_file_at_point( gw->browser->bw, + mx+gw->browser->scroll.current.x, + my+gw->browser->scroll.current.y, + utf8_fn ); + free( utf8_fn );
}
}
}
|