Set log marker on FocusOut event
All of this needs refactoring, probably separating the line editing out from the actual input handling.
This commit is contained in:
		
							parent
							
								
									c0ee457ab1
								
							
						
					
					
						commit
						b66c8abf70
					
				
							
								
								
									
										23
									
								
								ui.c
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								ui.c
									
									
									
									
									
								
							@ -20,6 +20,7 @@
 | 
				
			|||||||
#include <err.h>
 | 
					#include <err.h>
 | 
				
			||||||
#include <locale.h>
 | 
					#include <locale.h>
 | 
				
			||||||
#include <stdarg.h>
 | 
					#include <stdarg.h>
 | 
				
			||||||
 | 
					#include <stdbool.h>
 | 
				
			||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
#include <stdlib.h>
 | 
					#include <stdlib.h>
 | 
				
			||||||
#include <string.h>
 | 
					#include <string.h>
 | 
				
			||||||
@ -39,6 +40,15 @@
 | 
				
			|||||||
#define A_ITALIC A_NORMAL
 | 
					#define A_ITALIC A_NORMAL
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void focusEnable(void) {
 | 
				
			||||||
 | 
						printf("\33[?1004h");
 | 
				
			||||||
 | 
						fflush(stdout);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					static void focusDisable(void) {
 | 
				
			||||||
 | 
						printf("\33[?1004l");
 | 
				
			||||||
 | 
						fflush(stdout);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void colorInit(void) {
 | 
					static void colorInit(void) {
 | 
				
			||||||
	start_color();
 | 
						start_color();
 | 
				
			||||||
	use_default_colors();
 | 
						use_default_colors();
 | 
				
			||||||
@ -98,6 +108,7 @@ void uiInit(void) {
 | 
				
			|||||||
	cbreak();
 | 
						cbreak();
 | 
				
			||||||
	noecho();
 | 
						noecho();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						focusEnable();
 | 
				
			||||||
	colorInit();
 | 
						colorInit();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ui.topic = newpad(2, TOPIC_COLS);
 | 
						ui.topic = newpad(2, TOPIC_COLS);
 | 
				
			||||||
@ -123,6 +134,7 @@ static void uiResize(void) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void uiHide(void) {
 | 
					void uiHide(void) {
 | 
				
			||||||
 | 
						focusDisable();
 | 
				
			||||||
	endwin();
 | 
						endwin();
 | 
				
			||||||
	printf(
 | 
						printf(
 | 
				
			||||||
		"This program is AGPLv3 free software!\n"
 | 
							"This program is AGPLv3 free software!\n"
 | 
				
			||||||
@ -427,6 +439,17 @@ static void complete(void) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void keyChar(wint_t ch) {
 | 
					static void keyChar(wint_t ch) {
 | 
				
			||||||
 | 
						static bool esc, csi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (csi) {
 | 
				
			||||||
 | 
							csi = false;
 | 
				
			||||||
 | 
							if (ch == L'O') logMark();
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						csi = (esc && ch == L'[');
 | 
				
			||||||
 | 
						esc = (ch == L'\33');
 | 
				
			||||||
 | 
						if (csi) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	switch (ch) {
 | 
						switch (ch) {
 | 
				
			||||||
		break; case CTRL('L'): uiRedraw();
 | 
							break; case CTRL('L'): uiRedraw();
 | 
				
			||||||
		break; case CTRL('B'): reject(); left();
 | 
							break; case CTRL('B'): reject(); left();
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user