/* * This file is part of NetSurf, http://netsurf.sourceforge.net/ * Licensed under the GNU General Public License, * http://www.opensource.org/licenses/gpl-license * Copyright 2003 Phil Mellor * Copyright 2004 James Bursa * Copyright 2004 Andrew Timmins * Copyright 2004 John Tytgat */ /** \file * Textual input handling (interface) */ #ifndef _NETSURF_DESKTOP_TEXTINPUT_H_ #define _NETSURF_DESKTOP_TEXTINPUT_H_ #include struct browser_window; struct box; enum input_key { KEY_DELETE_LEFT = 8, /* cursor movement keys */ KEY_LEFT = 28, KEY_RIGHT, KEY_UP, KEY_DOWN, KEY_DELETE_RIGHT = 127, KEY_LINE_START = 128, KEY_LINE_END, KEY_TEXT_START, KEY_TEXT_END, KEY_WORD_LEFT, KEY_WORD_RIGHT, KEY_PAGE_UP, KEY_PAGE_DOWN, KEY_DELETE_LINE_END, KEY_DELETE_LINE_START, }; struct caret { bool defined; struct browser_window *bw; struct box *text_box; size_t char_offset; /* document co-ordinates of bottom left of caret */ int x; int y; int height; }; /** There's a single ghost caret used to implement * drag-and-drop of text into text areas and input fields. */ extern struct caret ghost_caret; void caret_set_position(struct caret *c, struct browser_window *bw, struct box *text_box, int char_offset, int pixel_offset); void caret_remove(struct caret *c); struct box *textarea_get_position(struct box *textarea, int x, int y, int *pchar_offset, int *ppixel_offset); void browser_window_textarea_click(struct browser_window *bw, browser_mouse_state mouse, struct box *textarea, int box_x, int box_y, int x, int y); void browser_window_input_click(struct browser_window* bw, struct box *input, int box_x, int box_y, int x, int y); void browser_window_remove_caret(struct browser_window *bw); #endif