1111// Include individual C API headers instead of the full nativeapi.h
1212#include "../../src/capi/menu_c.h"
1313#include "../../src/capi/run_example_app_c.h"
14+ #include "../../src/capi/string_utils_c.h"
1415#include "../../src/capi/tray_icon_c.h"
1516#include "../../src/capi/tray_manager_c.h"
1617
1718// Event callback functions
1819void on_menu_item_clicked (const void * event , void * user_data ) {
19- const native_menu_item_clicked_event_t * clicked_event = (const native_menu_item_clicked_event_t * )event ;
20+ const native_menu_item_clicked_event_t * clicked_event =
21+ (const native_menu_item_clicked_event_t * )event ;
2022 printf ("Menu item clicked: ID=%ld, Text='%s'\n" , clicked_event -> item_id ,
2123 clicked_event -> item_text );
2224
@@ -29,28 +31,35 @@ void on_menu_item_clicked(const void* event, void* user_data) {
2931}
3032
3133void on_tray_clicked (const void * event , void * user_data ) {
32- const native_tray_icon_clicked_event_t * clicked_event = (const native_tray_icon_clicked_event_t * )event ;
33- printf ("Tray icon clicked! ID=%ld, Button='%s'\n" , clicked_event -> tray_icon_id ,
34- clicked_event -> button );
34+ const native_tray_icon_clicked_event_t * clicked_event =
35+ (const native_tray_icon_clicked_event_t * )event ;
36+ printf ("Tray icon clicked! ID=%ld, Button='%s'\n" ,
37+ clicked_event -> tray_icon_id , clicked_event -> button );
3538}
3639
3740void on_tray_right_clicked (const void * event , void * user_data ) {
38- const native_tray_icon_right_clicked_event_t * right_clicked_event = (const native_tray_icon_right_clicked_event_t * )event ;
39- printf ("Tray icon right clicked! ID=%ld\n" , right_clicked_event -> tray_icon_id );
41+ const native_tray_icon_right_clicked_event_t * right_clicked_event =
42+ (const native_tray_icon_right_clicked_event_t * )event ;
43+ printf ("Tray icon right clicked! ID=%ld\n" ,
44+ right_clicked_event -> tray_icon_id );
4045}
4146
4247void on_tray_double_clicked (const void * event , void * user_data ) {
43- const native_tray_icon_double_clicked_event_t * double_clicked_event = (const native_tray_icon_double_clicked_event_t * )event ;
44- printf ("Tray icon double clicked! ID=%ld\n" , double_clicked_event -> tray_icon_id );
48+ const native_tray_icon_double_clicked_event_t * double_clicked_event =
49+ (const native_tray_icon_double_clicked_event_t * )event ;
50+ printf ("Tray icon double clicked! ID=%ld\n" ,
51+ double_clicked_event -> tray_icon_id );
4552}
4653
4754void on_menu_opened (const void * event , void * user_data ) {
48- const native_menu_opened_event_t * open_event = (const native_menu_opened_event_t * )event ;
55+ const native_menu_opened_event_t * open_event =
56+ (const native_menu_opened_event_t * )event ;
4957 printf ("Menu opened: ID=%ld\n" , open_event -> menu_id );
5058}
5159
5260void on_menu_closed (const void * event , void * user_data ) {
53- const native_menu_closed_event_t * close_event = (const native_menu_closed_event_t * )event ;
61+ const native_menu_closed_event_t * close_event =
62+ (const native_menu_closed_event_t * )event ;
5463 printf ("Menu closed: ID=%ld\n" , close_event -> menu_id );
5564}
5665
@@ -104,10 +113,14 @@ int main() {
104113 native_menu_item_set_state (checkbox , NATIVE_MENU_ITEM_STATE_CHECKED );
105114
106115 // Set up event listeners using new API
107- native_menu_item_add_listener (item1 , NATIVE_MENU_ITEM_EVENT_CLICKED , on_menu_item_clicked , NULL );
108- native_menu_item_add_listener (item2 , NATIVE_MENU_ITEM_EVENT_CLICKED , on_menu_item_clicked , NULL );
109- native_menu_item_add_listener (exit_item , NATIVE_MENU_ITEM_EVENT_CLICKED , on_menu_item_clicked , NULL );
110- native_menu_item_add_listener (checkbox , NATIVE_MENU_ITEM_EVENT_CLICKED , on_menu_item_clicked , NULL );
116+ native_menu_item_add_listener (item1 , NATIVE_MENU_ITEM_EVENT_CLICKED ,
117+ on_menu_item_clicked , NULL );
118+ native_menu_item_add_listener (item2 , NATIVE_MENU_ITEM_EVENT_CLICKED ,
119+ on_menu_item_clicked , NULL );
120+ native_menu_item_add_listener (exit_item , NATIVE_MENU_ITEM_EVENT_CLICKED ,
121+ on_menu_item_clicked , NULL );
122+ native_menu_item_add_listener (checkbox , NATIVE_MENU_ITEM_EVENT_CLICKED ,
123+ on_menu_item_clicked , NULL );
111124
112125 // Add items to menu
113126 native_menu_add_item (menu , item1 );
@@ -119,8 +132,10 @@ int main() {
119132 printf ("Added %zu items to menu\n" , native_menu_get_item_count (menu ));
120133
121134 // Set menu event listeners using new API
122- native_menu_add_listener (menu , NATIVE_MENU_EVENT_OPENED , on_menu_opened , NULL );
123- native_menu_add_listener (menu , NATIVE_MENU_EVENT_CLOSED , on_menu_closed , NULL );
135+ native_menu_add_listener (menu , NATIVE_MENU_EVENT_OPENED , on_menu_opened ,
136+ NULL );
137+ native_menu_add_listener (menu , NATIVE_MENU_EVENT_CLOSED , on_menu_closed ,
138+ NULL );
124139
125140 // Create a submenu example
126141 native_menu_t submenu = native_menu_create ();
@@ -164,9 +179,13 @@ int main() {
164179 native_tray_icon_set_context_menu (tray_icon , menu );
165180
166181 // Set up tray icon event listeners using new API
167- native_tray_icon_add_listener (tray_icon , NATIVE_TRAY_ICON_EVENT_CLICKED , on_tray_clicked , NULL );
168- native_tray_icon_add_listener (tray_icon , NATIVE_TRAY_ICON_EVENT_RIGHT_CLICKED , on_tray_right_clicked , NULL );
169- native_tray_icon_add_listener (tray_icon , NATIVE_TRAY_ICON_EVENT_DOUBLE_CLICKED , on_tray_double_clicked , NULL );
182+ native_tray_icon_add_listener (tray_icon , NATIVE_TRAY_ICON_EVENT_CLICKED ,
183+ on_tray_clicked , NULL );
184+ native_tray_icon_add_listener (tray_icon , NATIVE_TRAY_ICON_EVENT_RIGHT_CLICKED ,
185+ on_tray_right_clicked , NULL );
186+ native_tray_icon_add_listener (tray_icon ,
187+ NATIVE_TRAY_ICON_EVENT_DOUBLE_CLICKED ,
188+ on_tray_double_clicked , NULL );
170189
171190 // Show the tray icon
172191 if (native_tray_icon_show (tray_icon )) {
@@ -191,10 +210,10 @@ int main() {
191210 // Get accelerator info
192211 native_keyboard_accelerator_t accel ;
193212 if (native_menu_item_get_accelerator (found_item , & accel )) {
194- char accel_str [64 ];
195- if (native_keyboard_accelerator_to_string (& accel , accel_str ,
196- sizeof (accel_str )) > 0 ) {
213+ char * accel_str = native_keyboard_accelerator_to_string (& accel );
214+ if (accel_str ) {
197215 printf ("Exit item accelerator: %s\n" , accel_str );
216+ free_c_str (accel_str ); // Free the allocated string
198217 }
199218 }
200219 }
0 commit comments