Implementing mouse focus and all events.
parent
8315dc4179
commit
405fd89ac1
15
st.c
15
st.c
|
@ -118,6 +118,7 @@ enum term_mode {
|
||||||
MODE_8BIT = 8192,
|
MODE_8BIT = 8192,
|
||||||
MODE_BLINK = 16384,
|
MODE_BLINK = 16384,
|
||||||
MODE_FBLINK = 32768,
|
MODE_FBLINK = 32768,
|
||||||
|
MODE_FOCUS = 65536,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum escape_state {
|
enum escape_state {
|
||||||
|
@ -1782,6 +1783,13 @@ tsetmode(bool priv, bool set, int *args, int narg) {
|
||||||
MODBIT(term.mode, set, MODE_MOUSEMOTION);
|
MODBIT(term.mode, set, MODE_MOUSEMOTION);
|
||||||
MODBIT(term.mode, 0, MODE_MOUSEBTN);
|
MODBIT(term.mode, 0, MODE_MOUSEBTN);
|
||||||
break;
|
break;
|
||||||
|
case 1003: /* 1003: enable all mouse reports */
|
||||||
|
MODBIT(term.mode, set, MODE_MOUSEMOTION);
|
||||||
|
MODBIT(term.mode, set, MODE_MOUSEBTN);
|
||||||
|
break;
|
||||||
|
case 1004:
|
||||||
|
MODBIT(term.mode, set, MODE_FOCUS);
|
||||||
|
break;
|
||||||
case 1006:
|
case 1006:
|
||||||
MODBIT(term.mode, set, MODE_MOUSESGR);
|
MODBIT(term.mode, set, MODE_MOUSESGR);
|
||||||
break;
|
break;
|
||||||
|
@ -1807,6 +1815,9 @@ tsetmode(bool priv, bool set, int *args, int narg) {
|
||||||
case 1048:
|
case 1048:
|
||||||
tcursor((set) ? CURSOR_SAVE : CURSOR_LOAD);
|
tcursor((set) ? CURSOR_SAVE : CURSOR_LOAD);
|
||||||
break;
|
break;
|
||||||
|
case 9: /* X10 compatibility mode */
|
||||||
|
case 1001: /* mouse highlight mode; can hang the
|
||||||
|
terminal when implemented. */
|
||||||
default:
|
default:
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"erresc: unknown private set/reset mode %d\n",
|
"erresc: unknown private set/reset mode %d\n",
|
||||||
|
@ -3309,9 +3320,13 @@ focus(XEvent *ev) {
|
||||||
XSetICFocus(xw.xic);
|
XSetICFocus(xw.xic);
|
||||||
xw.state |= WIN_FOCUSED;
|
xw.state |= WIN_FOCUSED;
|
||||||
xseturgency(0);
|
xseturgency(0);
|
||||||
|
if(IS_SET(MODE_FOCUS))
|
||||||
|
ttywrite("\033[I", 3);
|
||||||
} else {
|
} else {
|
||||||
XUnsetICFocus(xw.xic);
|
XUnsetICFocus(xw.xic);
|
||||||
xw.state &= ~WIN_FOCUSED;
|
xw.state &= ~WIN_FOCUSED;
|
||||||
|
if(IS_SET(MODE_FOCUS))
|
||||||
|
ttywrite("\033[O", 3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue