add escape callback to textboxes
authorhgn <hgodden00@gmail.com>
Mon, 13 Nov 2023 01:05:00 +0000 (01:05 +0000)
committerhgn <hgodden00@gmail.com>
Mon, 13 Nov 2023 01:05:00 +0000 (01:05 +0000)
src/fonts/vg_font_thin.xcf
vg_console.h
vg_imgui.h

index 80cf62f193f549ca87b93462fa06257badd70d63..9c1915e50964246f6f7d4f16752cf8020aaf5372 100644 (file)
Binary files a/src/fonts/vg_font_thin.xcf and b/src/fonts/vg_font_thin.xcf differ
index 1024b82ac468b0b6e6c08d557e7561e965ffc387..d7f7f9f3e030452a75e85f29ddb5eeef09200f76 100644 (file)
@@ -714,7 +714,7 @@ static void _vg_console_draw(void)
       .up = _vg_console_on_up,
       .down = _vg_console_on_down,
       .change = _vg_console_on_update,
-      .enter = _vg_console_on_enter
+      .enter = _vg_console_on_enter,
    };
    ui_textbox( rect_input, NULL, 
                vg_console.input, vg_list_size(vg_console.input), 1,
index 53d8472302f8f3f5e6acb07a81e1860d654a5084..2eb56ab9cbdde95443064280054b218793d9bc12 100644 (file)
@@ -22,6 +22,7 @@
 
 typedef i16                            ui_px;
 typedef ui_px                          ui_rect[4];
+typedef ui_px           ui_point[2];
 typedef struct ui_vert  ui_vert;
 
 enum ui_axis {
@@ -169,7 +170,8 @@ struct{
             void (*enter)( char *, u32 ),  
                  (*up)( char *, u32 ), 
                  (*down)( char *, u32 ),
-                 (*change)( char *, u32 );
+                 (*change)( char *, u32 ),
+                 (*escape)( void );
          }
          callbacks;
       }
@@ -1024,8 +1026,11 @@ static u32 v4f_u32_colour( v4f colour ){
 static void ui_defocus_all(void){
    if( vg_ui.focused_control_type == k_ui_control_textbox ){
       SDL_StopTextInput();
+      if( vg_ui.textbox.callbacks.escape )
+         vg_ui.textbox.callbacks.escape();
    }
 
+   vg_ui.ignore_input_frames = 2;
    vg_ui.focused_control_id = NULL;
    vg_ui.focused_control_hit = 0;
    vg_ui.focused_control_type = k_ui_control_none;
@@ -1626,6 +1631,8 @@ static void _ui_textbox_cut(void){
 
 static void _ui_textbox_enter(void){
    if( vg_ui.focused_control_type == k_ui_control_textbox ){
+      vg_ui.ignore_input_frames = 2;
+
       if( vg_ui.textbox.callbacks.enter )
          vg_ui.textbox.callbacks.enter( vg_ui.textbuf, vg_ui.textbox.len );