event.h - ltk - GUI toolkit for X11 (WIP)
HTML git clone git://lumidify.org/ltk.git (fast, but not encrypted)
HTML git clone https://lumidify.org/ltk.git (encrypted, but very slow)
HTML git clone git://4kcetb7mo7hj6grozzybxtotsub5bempzo4lirzc3437amof2c2impyd.onion/ltk.git (over tor)
DIR Log
DIR Files
DIR Refs
DIR README
DIR LICENSE
---
event.h (2634B)
---
1 /*
2 * Copyright (c) 2022-2024 lumidify <nobody@lumidify.org>
3 *
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16
17 #ifndef LTK_EVENT_H
18 #define LTK_EVENT_H
19
20 #include <stddef.h>
21
22 #include "eventdefs.h"
23
24 typedef struct {
25 ltk_event_type type;
26 size_t window_id;
27 ltk_button_type button;
28 int x, y;
29 } ltk_button_event;
30
31 typedef struct {
32 ltk_event_type type;
33 size_t window_id;
34 int x, y;
35 int dx, dy;
36 } ltk_scroll_event;
37
38 typedef struct {
39 ltk_event_type type;
40 size_t window_id;
41 int x, y;
42 } ltk_motion_event;
43
44 typedef struct {
45 ltk_event_type type;
46 size_t window_id;
47 ltk_mod_type modmask;
48 ltk_keysym sym;
49 char *text;
50 char *mapped;
51 } ltk_key_event;
52
53 typedef struct {
54 ltk_event_type type;
55 size_t window_id;
56 char *new_kbd;
57 } ltk_keyboard_event;
58
59 typedef struct {
60 ltk_event_type type;
61 size_t window_id;
62 int x, y;
63 int w, h;
64 } ltk_configure_event;
65
66 /* FIXME: should maybe be handled in backend with double buffering */
67 typedef struct {
68 ltk_event_type type;
69 size_t window_id;
70 int x, y;
71 int w, h;
72 } ltk_expose_event;
73
74 typedef struct {
75 ltk_event_type type;
76 size_t window_id;
77 unsigned int dpi;
78 } ltk_dpichange_event;
79
80 typedef union {
81 ltk_event_type type;
82 struct {
83 ltk_event_type type;
84 size_t window_id;
85 } any;
86 ltk_button_event button;
87 ltk_scroll_event scroll;
88 ltk_motion_event motion;
89 ltk_key_event key;
90 ltk_configure_event configure;
91 ltk_expose_event expose;
92 ltk_keyboard_event keyboard;
93 ltk_dpichange_event dpichange;
94 } ltk_event;
95
96 #include "graphics.h"
97 #include "clipboard.h"
98
99 void ltk_events_cleanup(void);
100 void ltk_events_init(ltk_renderdata *renderdata);
101 /* WARNING: Text returned in key and keyboard events must be copied before calling this function again! */
102 int ltk_next_event(ltk_renderdata *renderdata, ltk_renderwindow **windows, size_t num_windows, ltk_clipboard *clip, size_t lang_index, ltk_event *event);
103 void ltk_generate_keyboard_event(ltk_renderdata *renderdata, ltk_event *event);
104
105 #endif /* LTK_EVENT_H */