widget_internal.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/git/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
---
widget_internal.h (3512B)
---
1 /*
2 * Copyright (c) 2024-2026 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_WIDGET_INTERNAL_H
18 #define LTK_WIDGET_INTERNAL_H
19
20 /* FIXME: use __attribute__((visibility("hidden"))) for compilers that support it */
21
22 #include <stddef.h>
23
24 #include "array.h"
25 #include "config.h"
26 #include "window.h"
27 #include "graphics.h"
28
29 void ltk_window_get_theme_parseinfo(ltk_theme_parseinfo **p, size_t *len);
30 void ltk_button_get_theme_parseinfo(ltk_theme_parseinfo **p, size_t *len);
31 void ltk_checkbutton_get_theme_parseinfo(ltk_theme_parseinfo **p, size_t *len);
32 void ltk_radiobutton_get_theme_parseinfo(ltk_theme_parseinfo **p, size_t *len);
33 void ltk_label_get_theme_parseinfo(ltk_theme_parseinfo **p, size_t *len);
34 void ltk_menu_get_theme_parseinfo(ltk_theme_parseinfo **p, size_t *len);
35 void ltk_menuentry_get_theme_parseinfo(ltk_theme_parseinfo **p, size_t *len);
36 void ltk_submenu_get_theme_parseinfo(ltk_theme_parseinfo **p, size_t *len);
37 void ltk_submenuentry_get_theme_parseinfo(ltk_theme_parseinfo **p, size_t *len);
38 void ltk_scrollbar_get_theme_parseinfo(ltk_theme_parseinfo **p, size_t *len);
39
40 void ltk_combobox_get_theme_parseinfo(ltk_theme_parseinfo **p, size_t *len);
41 void ltk_combobox_cleanup(void);
42 void ltk_combobox_get_keybinding_parseinfo(
43 ltk_keybinding_cb **press_cbs_ret, size_t *press_len_ret,
44 ltk_keybinding_cb **release_cbs_ret, size_t *release_len_ret,
45 ltk_array(keypress) **presses_ret, ltk_array(keyrelease) **releases_ret
46 );
47
48 void ltk_entry_get_theme_parseinfo(ltk_theme_parseinfo **p, size_t *len);
49 void ltk_entry_cleanup(void);
50 void ltk_entry_get_keybinding_parseinfo(
51 ltk_keybinding_cb **press_cbs_ret, size_t *press_len_ret,
52 ltk_keybinding_cb **release_cbs_ret, size_t *release_len_ret,
53 ltk_array(keypress) **presses_ret, ltk_array(keyrelease) **releases_ret
54 );
55
56 void ltk_window_get_theme_parseinfo(ltk_theme_parseinfo **p, size_t *len);
57 ltk_window *ltk_window_create_intern(ltk_renderdata *data, const char *title, int x, int y, unsigned int w, unsigned int h);
58 void ltk_window_destroy(ltk_widget *self, int shallow);
59 void ltk_window_destroy_intern(ltk_window *window);
60 void ltk_window_cleanup(void);
61 void ltk_window_get_keybinding_parseinfo(
62 ltk_keybinding_cb **press_cbs_ret, size_t *press_len_ret,
63 ltk_keybinding_cb **release_cbs_ret, size_t *release_len_ret,
64 ltk_array(keypress) **presses_ret, ltk_array(keyrelease) **releases_ret
65 );
66
67 int ltk_call_cmd(ltk_widget_id caller, ltk_array(cmd) *cmd, const char *text, size_t textlen);
68
69 int ltk_widget_handle_keypress_bindings(ltk_widget *widget, ltk_key_event *event, ltk_array(keypress) *keypresses, int handled);
70 int ltk_widget_handle_keyrelease_bindings(ltk_widget *widget, ltk_key_event *event, ltk_array(keyrelease) *keyreleases, int handled);
71
72 #endif /* LTK_WIDGET_INTERNAL_H */