diff options
| author | Juri Linkov | 2020-01-13 01:23:12 +0200 |
|---|---|---|
| committer | Juri Linkov | 2020-01-13 01:23:12 +0200 |
| commit | d47b157969356f15e038dbbfa4da7769f6f98583 (patch) | |
| tree | 6cf88094de9220c6effc4b860b74c7e80b5da557 | |
| parent | e4791f3f8eabf6db2e7e187c40a7d4d01d69b1e0 (diff) | |
| download | emacs-d47b157969356f15e038dbbfa4da7769f6f98583.tar.gz emacs-d47b157969356f15e038dbbfa4da7769f6f98583.zip | |
Handle tab-bar clicks on a GPM-capable console.
* src/term.c (handle_one_term_event): Call tty_handle_tab_bar_click.
* src/xdisp.c (tty_handle_tab_bar_click): Force reset of up_modifier bit
from the event modifiers.
* lisp/tab-line.el (tab-line-tab-current): No need to use inverse-video
on console/xterm because the selected tab already uses inverse-video.
| -rw-r--r-- | lisp/tab-line.el | 4 | ||||
| -rw-r--r-- | src/term.c | 8 | ||||
| -rw-r--r-- | src/xdisp.c | 4 |
3 files changed, 13 insertions, 3 deletions
diff --git a/lisp/tab-line.el b/lisp/tab-line.el index 8e561c71f5b..ef530d43dec 100644 --- a/lisp/tab-line.el +++ b/lisp/tab-line.el | |||
| @@ -81,9 +81,7 @@ | |||
| 81 | '((default | 81 | '((default |
| 82 | :inherit tab-line-tab) | 82 | :inherit tab-line-tab) |
| 83 | (((class color) (min-colors 88)) | 83 | (((class color) (min-colors 88)) |
| 84 | :background "grey85") | 84 | :background "grey85")) |
| 85 | (t | ||
| 86 | :inverse-video t)) | ||
| 87 | "Tab line face for tab with current buffer in selected window." | 85 | "Tab line face for tab with current buffer in selected window." |
| 88 | :version "27.1" | 86 | :version "27.1" |
| 89 | :group 'tab-line-faces) | 87 | :group 'tab-line-faces) |
diff --git a/src/term.c b/src/term.c index 871734318c0..a3aef31ec25 100644 --- a/src/term.c +++ b/src/term.c | |||
| @@ -2568,6 +2568,14 @@ handle_one_term_event (struct tty_display_info *tty, Gpm_Event *event, | |||
| 2568 | else { | 2568 | else { |
| 2569 | f->mouse_moved = 0; | 2569 | f->mouse_moved = 0; |
| 2570 | term_mouse_click (&ie, event, f); | 2570 | term_mouse_click (&ie, event, f); |
| 2571 | if (tty_handle_tab_bar_click (f, event->x, event->y, | ||
| 2572 | (ie.modifiers & down_modifier) != 0, &ie)) | ||
| 2573 | { | ||
| 2574 | /* tty_handle_tab_bar_click stores 2 events in the event | ||
| 2575 | queue, so we are done here. */ | ||
| 2576 | count += 2; | ||
| 2577 | return count; | ||
| 2578 | } | ||
| 2571 | } | 2579 | } |
| 2572 | 2580 | ||
| 2573 | done: | 2581 | done: |
diff --git a/src/xdisp.c b/src/xdisp.c index f3a297a7020..5b21aaa85a9 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -13516,6 +13516,10 @@ tty_handle_tab_bar_click (struct frame *f, int x, int y, bool down_p, | |||
| 13516 | f->last_tab_bar_item = prop_idx; | 13516 | f->last_tab_bar_item = prop_idx; |
| 13517 | else | 13517 | else |
| 13518 | { | 13518 | { |
| 13519 | /* Force reset of up_modifier bit from the event modifiers. */ | ||
| 13520 | if (event->modifiers & up_modifier) | ||
| 13521 | event->modifiers &= ~up_modifier; | ||
| 13522 | |||
| 13519 | /* Generate a TAB_BAR_EVENT event. */ | 13523 | /* Generate a TAB_BAR_EVENT event. */ |
| 13520 | Lisp_Object frame; | 13524 | Lisp_Object frame; |
| 13521 | Lisp_Object key = AREF (f->tab_bar_items, | 13525 | Lisp_Object key = AREF (f->tab_bar_items, |