diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2012-08-20 22:03:59 +0100 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2012-08-20 22:03:59 +0100 |
commit | 45736594a173d7a715b217a5236e33fb89c95436 (patch) | |
tree | 3ea34952a09bb5954e489106734c390bb602d876 | |
parent | b1342796448c01515d8dcb4d992f804a5f2f4fb4 (diff) | |
download | netsurf-45736594a173d7a715b217a5236e33fb89c95436.tar.gz netsurf-45736594a173d7a715b217a5236e33fb89c95436.tar.bz2 |
Get presence of text input cleanly.
-rwxr-xr-x | amiga/clipboard.c | 4 | ||||
-rwxr-xr-x | amiga/gui.c | 35 | ||||
-rwxr-xr-x | amiga/gui.h | 2 |
3 files changed, 8 insertions, 33 deletions
diff --git a/amiga/clipboard.c b/amiga/clipboard.c index 83548304e..8ecc4ef30 100755 --- a/amiga/clipboard.c +++ b/amiga/clipboard.c @@ -20,7 +20,6 @@ #include "desktop/plotters.h" #include "desktop/selection.h" #include "desktop/textinput.h" -#include "render/box.h" #include "utils/utf8.h" #include "amiga/bitmap.h" @@ -345,7 +344,6 @@ struct ami_text_selection *ami_selection_to_text(struct gui_window_2 *gwin) void ami_drag_selection(struct selection *s) { - struct box *text_box; int x; int y; char *utf8text; @@ -362,7 +360,7 @@ void ami_drag_selection(struct selection *s) x = gwin->win->MouseX; y = gwin->win->MouseY; - if(text_box = ami_text_box_at_point(gwin, (ULONG *)&x, (ULONG *)&y)) + if(ami_text_box_at_point(gwin, (ULONG *)&x, (ULONG *)&y)) { iffh = ami_clipboard_init_internal(1); diff --git a/amiga/gui.c b/amiga/gui.c index 8aef21a3f..bbbb3ba2b 100755 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -30,9 +30,6 @@ #include "desktop/textinput.h" #include "desktop/tree.h" #include "image/ico.h" -#include "render/box.h" -#include "render/form.h" -#include "render/html.h" #include "utils/log.h" #include "utils/messages.h" #include "utils/utf8.h" @@ -4113,17 +4110,12 @@ void ami_scroller_hook(struct Hook *hook,Object *object,struct IntuiMessage *msg /* return the text box at posn x,y in window coordinates x,y are updated to be document co-ordinates */ -struct box *ami_text_box_at_point(struct gui_window_2 *gwin, ULONG *x, ULONG *y) +bool *ami_text_box_at_point(struct gui_window_2 *gwin, ULONG *x, ULONG *y) { struct IBox *bbox; ULONG xs,ys,width,height; - struct box *box,*text_box=0; - hlcache_handle *content; int box_x=0,box_y=0; - - content = gwin->bw->current_content; - - if(content_get_type(content) != CONTENT_HTML) return NULL; + struct contextual_content data; GetAttr(SPACE_AreaBox, (Object *)gwin->objects[GID_BROWSER], (ULONG *)&bbox); @@ -4137,27 +4129,12 @@ struct box *ami_text_box_at_point(struct gui_window_2 *gwin, ULONG *x, ULONG *y) width=bbox->Width; height=bbox->Height; - box = html_get_box_tree(content); - while ((box = box_at_point(box, *x, *y, &box_x, &box_y, &content))) - { - if (box->style && css_computed_visibility(box->style) == CSS_VISIBILITY_HIDDEN) continue; + browser_window_get_contextual_content(gwin->bw, x, y, &data); - if (box->gadget) - { - switch (box->gadget->type) - { - case GADGET_TEXTBOX: - case GADGET_TEXTAREA: - case GADGET_PASSWORD: - text_box = box; - break; + if (data.form_features == CTX_FORM_TEXT) + return true; - default: - break; - } - } - } - return text_box; + return false; } BOOL ami_gadget_hit(Object *obj, int x, int y) diff --git a/amiga/gui.h b/amiga/gui.h index 013be50c0..498e2707e 100755 --- a/amiga/gui.h +++ b/amiga/gui.h @@ -143,7 +143,7 @@ void ami_do_redraw_limits(struct gui_window *g, struct browser_window *bw, int x0, int y0, int x1, int y1); STRPTR ami_locale_langs(void); int ami_key_to_nskey(ULONG keycode, struct InputEvent *ie); -struct box *ami_text_box_at_point(struct gui_window_2 *gwin, ULONG *x, ULONG *y); +bool *ami_text_box_at_point(struct gui_window_2 *gwin, ULONG *x, ULONG *y); BOOL ami_gadget_hit(Object *obj, int x, int y); void ami_gui_history(struct gui_window_2 *gwin, bool back); |