mirror of
https://github.com/netsurf-browser/netsurf
synced 2024-12-24 21:16:50 +03:00
monkey: Support clicking in windows
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
This commit is contained in:
parent
404fc65771
commit
69d1d5f626
@ -142,6 +142,16 @@ Commands
|
|||||||
|
|
||||||
This will send a `JS` message back.
|
This will send a `JS` message back.
|
||||||
|
|
||||||
|
* `WINDOW CLICK WIN` _%id%_ `X` _%num%_ `Y` _%num%_ `BUTTON` _%str%_ `KIND` _%str%_
|
||||||
|
|
||||||
|
Cause a browser window to experience a mouse click. The coordinates should
|
||||||
|
be in plot coordinates, so you can use redraw plot commands to find things
|
||||||
|
and then click on them. The `BUTTON` value should be one of `LEFT`
|
||||||
|
or `RIGHT`, and the `KIND` is `SINGLE`, `DOUBLE`, or `TRIPLE`.
|
||||||
|
|
||||||
|
This command will not output anything itself, it's expected only to do things
|
||||||
|
as a result of the click (e.g. navigating when clicking a link).
|
||||||
|
|
||||||
### Login commands
|
### Login commands
|
||||||
|
|
||||||
* `LOGIN USERNAME` _%id%_ _%str%_
|
* `LOGIN USERNAME` _%id%_ _%str%_
|
||||||
|
@ -613,6 +613,48 @@ monkey_window_handle_exec(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
monkey_window_handle_click(int argc, char **argv)
|
||||||
|
{
|
||||||
|
/* `WINDOW CLICK WIN` _%id%_ `X` _%num%_ `Y` _%num%_ `BUTTON` _%str%_ `KIND` _%str%_ */
|
||||||
|
/* 0 1 2 3 4 5 6 7 8 9 10 11 */
|
||||||
|
struct gui_window *gw;
|
||||||
|
if (argc != 12) {
|
||||||
|
moutf(MOUT_ERROR, "WINDOW CLICK ARGS BAD\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
gw = monkey_find_window_by_num(atoi(argv[2]));
|
||||||
|
|
||||||
|
if (gw == NULL) {
|
||||||
|
moutf(MOUT_ERROR, "WINDOW NUM BAD");
|
||||||
|
} else {
|
||||||
|
int x = atoi(argv[5]);
|
||||||
|
int y = atoi(argv[7]);
|
||||||
|
browser_mouse_state mouse;
|
||||||
|
const char *button = argv[9];
|
||||||
|
const char *kind = argv[11];
|
||||||
|
if (strcmp(button, "LEFT") == 0) {
|
||||||
|
mouse = BROWSER_MOUSE_CLICK_1;
|
||||||
|
} else if (strcmp(button, "RIGHT") == 0) {
|
||||||
|
mouse = BROWSER_MOUSE_CLICK_2;
|
||||||
|
} else {
|
||||||
|
moutf(MOUT_ERROR, "WINDOW BUTTON BAD");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (strcmp(kind, "SINGLE") == 0) {
|
||||||
|
/* Nothing */
|
||||||
|
} else if (strcmp(kind, "DOUBLE") == 0) {
|
||||||
|
mouse |= BROWSER_MOUSE_DOUBLE_CLICK;
|
||||||
|
} else if (strcmp(kind, "TRIPLE") == 0) {
|
||||||
|
mouse |= BROWSER_MOUSE_TRIPLE_CLICK;
|
||||||
|
} else {
|
||||||
|
moutf(MOUT_ERROR, "WINDOW KIND BAD");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
browser_window_mouse_click(gw->bw, mouse, x, y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
monkey_window_handle_command(int argc, char **argv)
|
monkey_window_handle_command(int argc, char **argv)
|
||||||
{
|
{
|
||||||
@ -633,6 +675,8 @@ monkey_window_handle_command(int argc, char **argv)
|
|||||||
monkey_window_handle_reload(argc, argv);
|
monkey_window_handle_reload(argc, argv);
|
||||||
} else if (strcmp(argv[1], "EXEC") == 0) {
|
} else if (strcmp(argv[1], "EXEC") == 0) {
|
||||||
monkey_window_handle_exec(argc, argv);
|
monkey_window_handle_exec(argc, argv);
|
||||||
|
} else if (strcmp(argv[1], "CLICK") == 0) {
|
||||||
|
monkey_window_handle_click(argc, argv);
|
||||||
} else {
|
} else {
|
||||||
moutf(MOUT_ERROR, "WINDOW COMMAND UNKNOWN %s\n", argv[1]);
|
moutf(MOUT_ERROR, "WINDOW COMMAND UNKNOWN %s\n", argv[1]);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user