summaryrefslogtreecommitdiff
path: root/desktop/browser.h
diff options
context:
space:
mode:
authorAdrian Lees <adrian@aemulor.com>2005-04-15 05:52:25 +0000
committerAdrian Lees <adrian@aemulor.com>2005-04-15 05:52:25 +0000
commit28e757a362c4643c615f93fed9e6d07bcff8f089 (patch)
treed6e0e7c12a50a88b3bd7542cb02b105619e3dbb0 /desktop/browser.h
parent530e185124cad07180cf3dc6a827b261b8cf007f (diff)
downloadnetsurf-28e757a362c4643c615f93fed9e6d07bcff8f089.tar.gz
netsurf-28e757a362c4643c615f93fed9e6d07bcff8f089.tar.bz2
[project @ 2005-04-15 05:52:25 by adrianl]
Text selection, page drag scrolling, drag-saving images svn path=/import/netsurf/; revision=1638
Diffstat (limited to 'desktop/browser.h')
-rw-r--r--desktop/browser.h43
1 files changed, 34 insertions, 9 deletions
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);