From 1a684464ed4d9343ac43c5f79be9a3e7c892ed9c Mon Sep 17 00:00:00 2001 From: eidheim Date: Mon, 15 Jan 2018 05:17:49 +0100 Subject: [PATCH] No longer clears selection of terminal when modifier keys are used while a process is running --- src/terminal.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/terminal.cc b/src/terminal.cc index b64901c..17fe377 100644 --- a/src/terminal.cc +++ b/src/terminal.cc @@ -397,13 +397,14 @@ bool Terminal::on_key_press_event(GdkEventKey *event) { debug_is_running=Project::current?Project::current->debug_is_running():false; #endif if(processes.size()>0 || debug_is_running) { - get_buffer()->place_cursor(get_buffer()->end()); auto unicode=gdk_keyval_to_unicode(event->keyval); - if(unicode>=32 && unicode!=126) { + if(unicode>=32 && unicode!=126 && unicode!=0) { + get_buffer()->place_cursor(get_buffer()->end()); stdin_buffer+=unicode; get_buffer()->insert_at_cursor(stdin_buffer.substr(stdin_buffer.size()-1)); } else if(event->keyval==GDK_KEY_BackSpace) { + get_buffer()->place_cursor(get_buffer()->end()); if(stdin_buffer.size()>0 && get_buffer()->get_char_count()>0) { auto iter=get_buffer()->end(); iter--; @@ -412,6 +413,7 @@ bool Terminal::on_key_press_event(GdkEventKey *event) { } } else if(event->keyval==GDK_KEY_Return || event->keyval==GDK_KEY_KP_Enter) { + get_buffer()->place_cursor(get_buffer()->end()); stdin_buffer+='\n'; if(debug_is_running) { #ifdef JUCI_ENABLE_DEBUG