From 2973df584978d9aae6f164ce0204179c8a28b3ae Mon Sep 17 00:00:00 2001 From: 2lag <96544487+2lag@users.noreply.github.com> Date: Sat, 8 Aug 2026 17:33:36 +0200 Subject: console, textbox changes, some other shit --- src/render/gl.cpp | 41 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 4 deletions(-) (limited to 'src/render/gl.cpp') diff --git a/src/render/gl.cpp b/src/render/gl.cpp index 7425ff4..c4eee26 100644 --- a/src/render/gl.cpp +++ b/src/render/gl.cpp @@ -1,3 +1,5 @@ +#include "SDL_keyboard.h" +#include "SDL_keycode.h" #include "SDL_video.h" #include #define STB_IMAGE_IMPLEMENTATION @@ -5,6 +7,7 @@ #include "gl.h" #include "gl_2d_font.h" +#include "../gui/base.h" #include "../util.h" I32 SAMPLER_INDICES[255]; @@ -224,6 +227,7 @@ GL_DATA* gl_create( I32* _canvas ) { gl_handle_window_size_change( gl, start_w, start_h ); SDL_SetEventFilter( gl_event_filter, gl ); + SDL_StartTextInput(); gl_inst = gl; return gl; } @@ -240,6 +244,7 @@ void gl_gen_buffers( GL_DATA* gl ) { void gl_destroy( GL_DATA *gl ) { SDL_SetEventFilter( 0, 0 ); + SDL_StopTextInput(); while( gl->programs.size ) { gl_program_destroy( gl, gl->programs.pop() ); } while( gl->fonts.size ) { gl_font_destroy( gl, gl->fonts.pop() ); } @@ -486,22 +491,50 @@ STAT gl_beginframe( GL_DATA* gl ) { } STAT gl_poll_events( GL_DATA* gl ) { + U8 suppress_console = 0; SDL_Event e; + while( SDL_PollEvent( &e ) ) { + if( suppress_console && e.type == SDL_TEXTINPUT ) { + suppress_console = 0; + continue; + } + input_on_event( &e ); switch( e.type ) { case SDL_QUIT: return STAT_BREAK; + case SDL_WINDOWEVENT: { if( e.window.event == SDL_WINDOWEVENT_SIZE_CHANGED || e.window.event == SDL_WINDOWEVENT_RESIZED ) { - gl_handle_window_size_change( gl, e.window.data1, e.window.data2 ); + gl_handle_window_size_change( + gl, + e.window.data1, + e.window.data2 + ); } } break; - case SDL_KEYDOWN: - return e.key.keysym.sym == SDLK_ESCAPE ? STAT_BREAK : STAT_OK; - default: break; + + case SDL_KEYDOWN: { + if( e.key.keysym.sym == SDLK_BACKQUOTE + && !e.key.repeat + ) { + gui_consolewindow_toggle(); + U16 modifiers = e.key.keysym.mod; + suppress_console = !( + modifiers & ( + KMOD_CTRL | + KMOD_ALT | + KMOD_GUI + ) + ); + } + } break; + + default: + break; } } -- cgit v1.2.3