mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Merge pull request #2348 from mhinz/job-control-mouse
[RFC] Job control: enable mouse after foregrounding
This commit is contained in:
commit
5f3eeadd03
@ -50,6 +50,7 @@ typedef struct {
|
|||||||
int out_fd;
|
int out_fd;
|
||||||
int old_height;
|
int old_height;
|
||||||
bool can_use_terminal_scroll;
|
bool can_use_terminal_scroll;
|
||||||
|
bool mouse_enabled;
|
||||||
bool busy;
|
bool busy;
|
||||||
HlAttrs attrs, print_attrs;
|
HlAttrs attrs, print_attrs;
|
||||||
Cell **screen;
|
Cell **screen;
|
||||||
@ -84,7 +85,7 @@ typedef struct {
|
|||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
|
||||||
void tui_start(void)
|
UI *tui_start(void)
|
||||||
{
|
{
|
||||||
TUIData *data = xcalloc(1, sizeof(TUIData));
|
TUIData *data = xcalloc(1, sizeof(TUIData));
|
||||||
UI *ui = xcalloc(1, sizeof(UI));
|
UI *ui = xcalloc(1, sizeof(UI));
|
||||||
@ -119,7 +120,6 @@ void tui_start(void)
|
|||||||
unibi_out(ui, unibi_clear_screen);
|
unibi_out(ui, unibi_clear_screen);
|
||||||
// Enable bracketed paste
|
// Enable bracketed paste
|
||||||
unibi_out(ui, data->unibi_ext.enable_bracketed_paste);
|
unibi_out(ui, data->unibi_ext.enable_bracketed_paste);
|
||||||
|
|
||||||
// setup output handle in a separate event loop(we wanna do synchronous
|
// setup output handle in a separate event loop(we wanna do synchronous
|
||||||
// write to the tty)
|
// write to the tty)
|
||||||
data->write_loop = xmalloc(sizeof(uv_loop_t));
|
data->write_loop = xmalloc(sizeof(uv_loop_t));
|
||||||
@ -162,6 +162,7 @@ void tui_start(void)
|
|||||||
ui->set_icon = tui_set_icon;
|
ui->set_icon = tui_set_icon;
|
||||||
// Attach
|
// Attach
|
||||||
ui_attach(ui);
|
ui_attach(ui);
|
||||||
|
return ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tui_stop(UI *ui)
|
static void tui_stop(UI *ui)
|
||||||
@ -384,12 +385,14 @@ static void tui_mouse_on(UI *ui)
|
|||||||
{
|
{
|
||||||
TUIData *data = ui->data;
|
TUIData *data = ui->data;
|
||||||
unibi_out(ui, data->unibi_ext.enable_mouse);
|
unibi_out(ui, data->unibi_ext.enable_mouse);
|
||||||
|
data->mouse_enabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tui_mouse_off(UI *ui)
|
static void tui_mouse_off(UI *ui)
|
||||||
{
|
{
|
||||||
TUIData *data = ui->data;
|
TUIData *data = ui->data;
|
||||||
unibi_out(ui, data->unibi_ext.disable_mouse);
|
unibi_out(ui, data->unibi_ext.disable_mouse);
|
||||||
|
data->mouse_enabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tui_insert_mode(UI *ui)
|
static void tui_insert_mode(UI *ui)
|
||||||
@ -561,9 +564,14 @@ static void tui_flush(UI *ui)
|
|||||||
|
|
||||||
static void tui_suspend(UI *ui)
|
static void tui_suspend(UI *ui)
|
||||||
{
|
{
|
||||||
|
TUIData *data = ui->data;
|
||||||
|
bool enable_mouse = data->mouse_enabled;
|
||||||
tui_stop(ui);
|
tui_stop(ui);
|
||||||
kill(0, SIGTSTP);
|
kill(0, SIGTSTP);
|
||||||
tui_start();
|
ui = tui_start();
|
||||||
|
if (enable_mouse) {
|
||||||
|
tui_mouse_on(ui);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tui_set_title(UI *ui, char *title)
|
static void tui_set_title(UI *ui, char *title)
|
||||||
|
Loading…
Reference in New Issue
Block a user