@@ -38,6 +38,10 @@ extern "C" {
3838 */
3939NK_API nk_console * nk_console_key (nk_console * parent , const char * label , nk_rune * out_key );
4040NK_API struct nk_rect nk_console_key_render (nk_console * widget );
41+
42+ /**
43+ * Retrieves the name of the of the given Nuklear rune.
44+ */
4145NK_API const char * nk_console_key_name (nk_rune key );
4246
4347#if defined(__cplusplus )
@@ -86,7 +90,7 @@ NK_API const char* nk_console_key_name(nk_rune key) {
8690 case NK_KEY_RIGHT : return "Right" ;
8791 case NK_KEY_TEXT_INSERT_MODE : return "Insert" ;
8892 case NK_KEY_TEXT_REPLACE_MODE : return "Replace" ;
89- case NK_KEY_TEXT_RESET_MODE : return "Reset Mode" ;
93+ case NK_KEY_TEXT_RESET_MODE : return "Escape" ; // Nuklear uses ESCAPE as Reset Mode
9094 case NK_KEY_TEXT_LINE_START : return "Home" ;
9195 case NK_KEY_TEXT_LINE_END : return "End" ;
9296 case NK_KEY_TEXT_START : return "Ctrl+Home" ;
@@ -155,6 +159,14 @@ NK_API struct nk_rect nk_console_key_render(nk_console* console) {
155159 return widget_bounds ;
156160}
157161
162+ /**
163+ * Go back as a post-render hook so that it handles the events safely afterwards.
164+ */
165+ static void nk_console_key_back_post_render (nk_console * console , void * user_data ) {
166+ NK_UNUSED (user_data );
167+ nk_console_button_back (console , NULL );
168+ }
169+
158170/**
159171 * Render the "Press a Key" capture prompt.
160172 */
@@ -248,7 +260,7 @@ static struct nk_rect nk_console_key_active_render(nk_console* console) {
248260 if (finished == nk_true ) {
249261 top_data -> input_processed = nk_true ;
250262 data -> timer = 0.0f ;
251- nk_console_button_back (console , NULL );
263+ nk_console_add_event (console , NK_CONSOLE_EVENT_POST_RENDER_ONCE , & nk_console_key_back_post_render );
252264 }
253265
254266 return nk_rect (0 , 0 , 0 , 0 );
0 commit comments