1 /* SPDX-License-Identifier: Zlib */
2 
3 #ifndef GIRARA_CALLBACKS_H
4 #define GIRARA_CALLBACKS_H
5 
6 #include "macros.h"
7 #include "types.h"
8 #include <gtk/gtk.h>
9 
10 /**
11  * Callback definition for an inputbar key press event handler
12  *
13  * @param widget The widget
14  * @param event Event
15  * @param data Custom data
16  * @return true if no error occurred
17  */
18 typedef gboolean (*girara_callback_inputbar_key_press_event_t)(GtkWidget* widget,
19     GdkEventKey* event, void* data);
20 
21 /**
22  * Callback definition for an inputbar key press event handler
23  *
24  * @param entry The inputbar
25  * @param data Custom data
26  * @return true if no error occurred
27  */
28 typedef gboolean (*girara_callback_inputbar_activate_t)(GtkEntry* entry,
29     void* data);
30 
31 /**
32  * Default callback for key press events in the view area
33  *
34  * @param widget The used widget
35  * @param event The occurred event
36  * @param session The used girara session
37  * @return TRUE No error occurred
38  * @return FALSE An error occurred
39  */
40 gboolean girara_callback_view_key_press_event(GtkWidget* widget, GdkEventKey* event,
41     girara_session_t* session) GIRARA_VISIBLE;
42 
43 /**
44  * Default callback when a button (typically a mouse button) has been pressed
45  *
46  * @param widget The used widget
47  * @param button The button that triggered the event
48  * @param session The used girara session
49  * @return true to stop other handlers from being invoked for the event.
50  * @return false to propagate the event further.
51  */
52 gboolean girara_callback_view_button_press_event(GtkWidget* widget,
53     GdkEventButton* button, girara_session_t* session) GIRARA_VISIBLE;
54 
55 /**
56  * Default callback when a button (typically a mouse button) has been released
57  *
58  * @param widget The used widget
59  * @param button The button that triggered the event
60  * @param session The used girara session
61  * @return true to stop other handlers from being invoked for the event.
62  * @return false to propagate the event further.
63  */
64 gboolean girara_callback_view_button_release_event(GtkWidget* widget,
65     GdkEventButton* button, girara_session_t* session) GIRARA_VISIBLE;
66 
67 /**
68  * Default callback when the pointer moves over the widget
69  *
70  * @param widget The used widget
71  * @param button The event motion that triggered the event
72  * @param session The used girara session
73  * @return true to stop other handlers from being invoked for the event.
74  * @return false to propagate the event further.
75  */
76 gboolean girara_callback_view_button_motion_notify_event(GtkWidget* widget,
77     GdkEventMotion* button, girara_session_t* session) GIRARA_VISIBLE;
78 
79 /**
80  * Default callback then a scroll event is triggered by the view
81  *
82  * @param widget The widget
83  * @param event The event motion
84  * @param session The girara session
85  * @return true to stop other handlers from being invoked for the event.
86  * @return false to propagate the event further.
87  */
88 gboolean girara_callback_view_scroll_event(GtkWidget* widget, GdkEventScroll* event,
89     girara_session_t* session) GIRARA_VISIBLE;
90 
91 /**
92  * Default callback if the inputbar gets activated
93  *
94  * @param entry The inputbar entry
95  * @param session The used girara session
96  * @return TRUE No error occurred
97  * @return FALSE An error occurred
98  */
99 gboolean girara_callback_inputbar_activate(GtkEntry* entry,
100     girara_session_t* session) GIRARA_VISIBLE;
101 
102 /**
103  * Default callback if an key in the input bar gets pressed
104  *
105  * @param widget The used widget
106  * @param event The occurred event
107  * @param session The used girara session
108  * @return TRUE No error occurred
109  * @return FALSE An error occurred
110  */
111 gboolean girara_callback_inputbar_key_press_event(GtkWidget* widget,
112     GdkEventKey* event, girara_session_t* session) GIRARA_VISIBLE;
113 
114 /**
115  * Default callback if the text of the input bar has changed
116  *
117  * @param widget The used widget
118  * @param session The used girara session
119  * @return TRUE No error occurred
120  * @return FALSE An error occurred
121  */
122 gboolean girara_callback_inputbar_changed_event(GtkEditable* widget,
123     girara_session_t* session) GIRARA_VISIBLE;
124 
125 #endif
126