From 28e757a362c4643c615f93fed9e6d07bcff8f089 Mon Sep 17 00:00:00 2001 From: Adrian Lees Date: Fri, 15 Apr 2005 05:52:25 +0000 Subject: [project @ 2005-04-15 05:52:25 by adrianl] Text selection, page drag scrolling, drag-saving images svn path=/import/netsurf/; revision=1638 --- desktop/browser.h | 43 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-) (limited to 'desktop/browser.h') diff --git a/desktop/browser.h b/desktop/browser.h index 86764fa3b..34e6c7c6d 100644 --- a/desktop/browser.h +++ b/desktop/browser.h @@ -23,6 +23,7 @@ struct form_control; struct form_successful_control; struct gui_window; struct history; +struct selection; /** Browser window data. */ struct browser_window { @@ -34,6 +35,9 @@ struct browser_window { /** Window history structure. */ struct history *history; + /** Selection state */ + struct selection *sel; + /** Handler for keyboard input, or 0. */ void (*caret_callback)(struct browser_window *bw, wchar_t key, void *p); @@ -54,7 +58,13 @@ struct browser_window { char *frag_id; /** Current drag status. */ - enum { DRAGGING_NONE, DRAGGING_VSCROLL, DRAGGING_HSCROLL } drag_type; + enum { + DRAGGING_NONE, + DRAGGING_VSCROLL, + DRAGGING_HSCROLL, + DRAGGING_SELECTION, + DRAGGING_PAGE_SCROLL + } drag_type; /** Box currently being scrolled, or 0. */ struct box *scrolling_box; @@ -77,15 +87,22 @@ struct browser_window { typedef enum { - BROWSER_MOUSE_CLICK_1, - BROWSER_MOUSE_CLICK_2, - BROWSER_MOUSE_HOVER, - BROWSER_MOUSE_DRAG, /**< CLICK is continuing as a drag. */ - BROWSER_MOUSE_CLICK_1_MOD, - BROWSER_MOUSE_CLICK_2_MOD, -} browser_mouse_click; + BROWSER_MOUSE_CLICK_1 = 1, /* primary mouse button down (eg. Select) */ + BROWSER_MOUSE_CLICK_2 = 2, + + BROWSER_MOUSE_DRAG_1 = 8, /* start of drag operation */ + BROWSER_MOUSE_DRAG_2 = 16, + + BROWSER_MOUSE_HOLDING_1 = 64, /* whilst drag is in progress */ + BROWSER_MOUSE_HOLDING_2 = 128, + + BROWSER_MOUSE_MOD_1 = 512, /* primary modifier key pressed (eg. Shift) */ + BROWSER_MOUSE_MOD_2 = 1024 +} browser_mouse_state; +extern struct browser_window *current_redraw_browser; + void browser_window_create(const char *url, struct browser_window *clone, char *referer); void browser_window_go(struct browser_window *bw, const char *url, @@ -100,11 +117,19 @@ void browser_window_destroy(struct browser_window *bw); void browser_window_update(struct browser_window *bw, bool scroll_to_top); void browser_window_mouse_click(struct browser_window *bw, - browser_mouse_click click, int x, int y); + browser_mouse_state mouse, int x, int y); +void browser_window_mouse_track(struct browser_window *bw, + browser_mouse_state mouse, int x, int y); +void browser_window_mouse_drag_end(struct browser_window *bw, + browser_mouse_state mouse, int x, int y); + bool browser_window_key_press(struct browser_window *bw, wchar_t key); void browser_window_form_select(struct browser_window *bw, struct form_control *control, int item); +void browser_window_redraw_rect(struct browser_window *bw, int x, int y, + int width, int height); + /* In platform specific hotlist.c. */ void hotlist_visited(struct content *content); -- cgit v1.2.3