summaryrefslogtreecommitdiff
path: root/desktop/mouse.h
blob: 042db23a93554b9261f746b45636a14c6f1f5edf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/*
 * Copyright 2003 Phil Mellor <monkeyson@users.sourceforge.net>
 * Copyright 2006 James Bursa <bursa@users.sourceforge.net>
 * Copyright 2010 Michael Drake <tlsa@netsurf-browser.org>
 *
 * This file is part of NetSurf, http://www.netsurf-browser.org/
 *
 * NetSurf is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; version 2 of the License.
 *
 * NetSurf is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

/** \file
 * Core mouse state.
 */

#ifndef _NETSURF_DESKTOP_MOUSE_H_
#define _NETSURF_DESKTOP_MOUSE_H_

/* Mouse state.	1 is    primary mouse button (e.g. Select on RISC OS).
 *		2 is  secondary mouse button (e.g. Adjust on RISC OS). */
typedef enum {
	BROWSER_MOUSE_HOVER = 0,		/* No mouse buttons pressed,
						 * May be used to indicate
						 * hover or end of drag. */

	BROWSER_MOUSE_PRESS_1   = (1 << 0),	/* button 1 pressed */
	BROWSER_MOUSE_PRESS_2   = (1 << 1),	/* button 2 pressed */

					/* note: click meaning is different for
					 * different front ends. On RISC OS, it
					 * is standard to act on press, so a
					 * click is fired at the same time as a
					 * mouse button is pressed. With GTK, it
					 * is standard to act on release, so a
					 * click is fired when the mouse button
					 * is released, if the operation wasn't
					 * a drag. */

	BROWSER_MOUSE_CLICK_1   = (1 << 2),	/* button 1 clicked. */
	BROWSER_MOUSE_CLICK_2   = (1 << 3),	/* button 2 clicked. */

	BROWSER_MOUSE_DOUBLE_CLICK = (1 << 4),	/* button 1 double clicked */

	BROWSER_MOUSE_DRAG_1    = (1 << 5),	/* start of button 1 drag */
	BROWSER_MOUSE_DRAG_2    = (1 << 6),	/* start of button 2 drag */

	BROWSER_MOUSE_DRAG_ON   = (1 << 7),	/* a drag operation was started
						 * and a mouse button is still
						 * pressed */

	BROWSER_MOUSE_HOLDING_1 = (1 << 8),	/* during button 1 drag */
	BROWSER_MOUSE_HOLDING_2 = (1 << 9),	/* during button 2 drag */


	BROWSER_MOUSE_MOD_1     = (1 << 10),	/* 1st modifier key pressed
						 * (eg. Shift) */
	BROWSER_MOUSE_MOD_2     = (1 << 11),	/* 2nd modifier key pressed
						 * (eg. Ctrl) */
	BROWSER_MOUSE_MOD_3     = (1 << 12)	/* 3rd modifier key pressed
						 * (eg. Alt) */
} browser_mouse_state;


typedef enum { GUI_POINTER_DEFAULT, GUI_POINTER_POINT, GUI_POINTER_CARET,
	       GUI_POINTER_MENU, GUI_POINTER_UP, GUI_POINTER_DOWN,
	       GUI_POINTER_LEFT, GUI_POINTER_RIGHT, GUI_POINTER_RU,
	       GUI_POINTER_LD, GUI_POINTER_LU, GUI_POINTER_RD,
	       GUI_POINTER_CROSS, GUI_POINTER_MOVE, GUI_POINTER_WAIT,
	       GUI_POINTER_HELP, GUI_POINTER_NO_DROP, GUI_POINTER_NOT_ALLOWED,
               GUI_POINTER_PROGRESS } gui_pointer_shape;

/** Mouse pointer type */
typedef enum {
	BROWSER_POINTER_DEFAULT		= GUI_POINTER_DEFAULT,
	BROWSER_POINTER_POINT		= GUI_POINTER_POINT,
	BROWSER_POINTER_CARET		= GUI_POINTER_CARET,
	BROWSER_POINTER_MENU		= GUI_POINTER_MENU,
	BROWSER_POINTER_UP		= GUI_POINTER_UP,
	BROWSER_POINTER_DOWN		= GUI_POINTER_DOWN,
	BROWSER_POINTER_LEFT		= GUI_POINTER_LEFT,
	BROWSER_POINTER_RIGHT		= GUI_POINTER_RIGHT,
	BROWSER_POINTER_RU		= GUI_POINTER_RU,
	BROWSER_POINTER_LD		= GUI_POINTER_LD,
	BROWSER_POINTER_LU		= GUI_POINTER_LU,
	BROWSER_POINTER_RD		= GUI_POINTER_RD,
	BROWSER_POINTER_CROSS		= GUI_POINTER_CROSS,
	BROWSER_POINTER_MOVE		= GUI_POINTER_MOVE,
	BROWSER_POINTER_WAIT		= GUI_POINTER_WAIT,
	BROWSER_POINTER_HELP		= GUI_POINTER_HELP,
	BROWSER_POINTER_NO_DROP		= GUI_POINTER_NO_DROP,
	BROWSER_POINTER_NOT_ALLOWED	= GUI_POINTER_NOT_ALLOWED,
	BROWSER_POINTER_PROGRESS	= GUI_POINTER_PROGRESS,
	BROWSER_POINTER_AUTO
} browser_pointer_shape;


void browser_mouse_state_dump(browser_mouse_state mouse);

#endif