diff options
| author | Christoph Lohmann <20h@r-36.net> | 2013-06-01 13:06:53 +0200 |
|---|---|---|
| committer | Christoph Lohmann <20h@r-36.net> | 2013-06-01 13:06:53 +0200 |
| commit | 405fd89ac1d333be79325417c973a07ccad67453 (patch) | |
| tree | 5e887eb5906c5088b602ab494948508faf8a866e | |
| parent | 8315dc417982936186837edfac24420d0d0e516e (diff) | |
| download | st-405fd89ac1d333be79325417c973a07ccad67453.tar.gz st-405fd89ac1d333be79325417c973a07ccad67453.zip | |
Implementing mouse focus and all events.
| -rw-r--r-- | st.c | 15 |
1 files changed, 15 insertions, 0 deletions
| @@ -118,6 +118,7 @@ enum term_mode { | |||
| 118 | MODE_8BIT = 8192, | 118 | MODE_8BIT = 8192, |
| 119 | MODE_BLINK = 16384, | 119 | MODE_BLINK = 16384, |
| 120 | MODE_FBLINK = 32768, | 120 | MODE_FBLINK = 32768, |
| 121 | MODE_FOCUS = 65536, | ||
| 121 | }; | 122 | }; |
| 122 | 123 | ||
| 123 | enum escape_state { | 124 | enum escape_state { |
| @@ -1782,6 +1783,13 @@ tsetmode(bool priv, bool set, int *args, int narg) { | |||
| 1782 | MODBIT(term.mode, set, MODE_MOUSEMOTION); | 1783 | MODBIT(term.mode, set, MODE_MOUSEMOTION); |
| 1783 | MODBIT(term.mode, 0, MODE_MOUSEBTN); | 1784 | MODBIT(term.mode, 0, MODE_MOUSEBTN); |
| 1784 | break; | 1785 | break; |
| 1786 | case 1003: /* 1003: enable all mouse reports */ | ||
| 1787 | MODBIT(term.mode, set, MODE_MOUSEMOTION); | ||
| 1788 | MODBIT(term.mode, set, MODE_MOUSEBTN); | ||
| 1789 | break; | ||
| 1790 | case 1004: | ||
| 1791 | MODBIT(term.mode, set, MODE_FOCUS); | ||
| 1792 | break; | ||
| 1785 | case 1006: | 1793 | case 1006: |
| 1786 | MODBIT(term.mode, set, MODE_MOUSESGR); | 1794 | MODBIT(term.mode, set, MODE_MOUSESGR); |
| 1787 | break; | 1795 | break; |
| @@ -1807,6 +1815,9 @@ tsetmode(bool priv, bool set, int *args, int narg) { | |||
| 1807 | case 1048: | 1815 | case 1048: |
| 1808 | tcursor((set) ? CURSOR_SAVE : CURSOR_LOAD); | 1816 | tcursor((set) ? CURSOR_SAVE : CURSOR_LOAD); |
| 1809 | break; | 1817 | break; |
| 1818 | case 9: /* X10 compatibility mode */ | ||
| 1819 | case 1001: /* mouse highlight mode; can hang the | ||
| 1820 | terminal when implemented. */ | ||
| 1810 | default: | 1821 | default: |
| 1811 | fprintf(stderr, | 1822 | fprintf(stderr, |
| 1812 | "erresc: unknown private set/reset mode %d\n", | 1823 | "erresc: unknown private set/reset mode %d\n", |
| @@ -3309,9 +3320,13 @@ focus(XEvent *ev) { | |||
| 3309 | XSetICFocus(xw.xic); | 3320 | XSetICFocus(xw.xic); |
| 3310 | xw.state |= WIN_FOCUSED; | 3321 | xw.state |= WIN_FOCUSED; |
| 3311 | xseturgency(0); | 3322 | xseturgency(0); |
| 3323 | if(IS_SET(MODE_FOCUS)) | ||
| 3324 | ttywrite("\033[I", 3); | ||
| 3312 | } else { | 3325 | } else { |
| 3313 | XUnsetICFocus(xw.xic); | 3326 | XUnsetICFocus(xw.xic); |
| 3314 | xw.state &= ~WIN_FOCUSED; | 3327 | xw.state &= ~WIN_FOCUSED; |
| 3328 | if(IS_SET(MODE_FOCUS)) | ||
| 3329 | ttywrite("\033[O", 3); | ||
| 3315 | } | 3330 | } |
| 3316 | } | 3331 | } |
| 3317 | 3332 | ||
