blob: ab35b95879d8c823264a0734286c7bd2cf1f7fda (
plain) (
blame)
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
|
/* See LICENSE file for copyright and license details. */
#include "common.h"
int
libterminput_unmarshal_mouseevent__(struct libterminput_unmarshaller *how, struct libterminput_mouseevent *what)
{
what->type = LIBTERMINPUT_MOUSEEVENT;
if (how->load(how, &what->event, sizeof(what->event)) ||
how->load(how, &what->x, sizeof(size_t) * 2U))
return -1;
what->mods = 0;
what->button = LIBTERMINPUT_BUTTON1;
switch ((int)what->event) {
case LIBTERMINPUT_PRESS:
case LIBTERMINPUT_RELEASE:
case LIBTERMINPUT_MOTION:
if (how->load(how, &what->mods, sizeof(what->mods)) ||
how->load(how, &what->button, sizeof(what->button)))
return -1;
/* fall through */
case LIBTERMINPUT_HIGHLIGHT_INSIDE:
return 0;
case LIBTERMINPUT_HIGHLIGHT_OUTSIDE:
return how->load(how, &what->start_x, sizeof(size_t) * 4U);
default:
errno = EINVAL;
return -1;
}
}
|