URI:
       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 */