xF: close buffers on middle click
This commit is contained in:
@@ -1945,6 +1945,7 @@ tui_make_editor (chtype attrs)
|
||||
widget->attrs = attrs;
|
||||
widget->width = -1;
|
||||
widget->height = 1;
|
||||
widget->text = "";
|
||||
return widget;
|
||||
}
|
||||
|
||||
@@ -2001,6 +2002,7 @@ x11_make_editor (chtype attrs)
|
||||
widget->attrs = attrs;
|
||||
widget->width = -1;
|
||||
widget->height = g_xui.vunit;
|
||||
widget->text = "";
|
||||
return widget;
|
||||
}
|
||||
|
||||
@@ -2987,15 +2989,29 @@ app_layout (void)
|
||||
// ~~~ Buffer input and history ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
static void
|
||||
app_send_buffer_activate (struct buffer *b)
|
||||
app_send_buffer_activate (const struct buffer *b)
|
||||
{
|
||||
if (!b)
|
||||
return;
|
||||
|
||||
struct relay_command_message m = {};
|
||||
m.data.buffer_activate.command = RELAY_COMMAND_BUFFER_ACTIVATE;
|
||||
m.data.buffer_activate.buffer_name = str_make ();
|
||||
str_append (&m.data.buffer_activate.buffer_name, b->buffer_name);
|
||||
m.data.buffer_activate.buffer_name = str_from_cstr (b->buffer_name);
|
||||
relay_send (&m, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
app_send_buffer_close (const struct buffer *b)
|
||||
{
|
||||
if (!b)
|
||||
return;
|
||||
|
||||
struct relay_command_message m = {};
|
||||
m.data.buffer_input.command = RELAY_COMMAND_BUFFER_INPUT;
|
||||
m.data.buffer_input.buffer_name = str_from_cstr (b->buffer_name);
|
||||
m.data.buffer_input.text = str_make ();
|
||||
str_append_printf (&m.data.buffer_input.text,
|
||||
"/buffer close %s", b->buffer_name);
|
||||
relay_send (&m, NULL);
|
||||
}
|
||||
|
||||
@@ -3009,11 +3025,9 @@ app_submit_input (void)
|
||||
|
||||
struct relay_command_message m = {};
|
||||
m.data.buffer_input.command = RELAY_COMMAND_BUFFER_INPUT;
|
||||
m.data.buffer_input.buffer_name = str_make ();
|
||||
m.data.buffer_input.text = str_make ();
|
||||
str_append (&m.data.buffer_input.buffer_name,
|
||||
g.buffer_current->buffer_name);
|
||||
str_append (&m.data.buffer_input.text, text);
|
||||
m.data.buffer_input.buffer_name =
|
||||
str_from_cstr (g.buffer_current->buffer_name);
|
||||
m.data.buffer_input.text = str_from_cstr (text);
|
||||
|
||||
if (!relay_send (&m, NULL))
|
||||
{
|
||||
@@ -3174,9 +3188,8 @@ app_toggle_unimportant (void)
|
||||
struct relay_command_message m = {};
|
||||
m.data.buffer_toggle_unimportant.command =
|
||||
RELAY_COMMAND_BUFFER_TOGGLE_UNIMPORTANT;
|
||||
m.data.buffer_toggle_unimportant.buffer_name = str_make ();
|
||||
str_append (&m.data.buffer_toggle_unimportant.buffer_name,
|
||||
g.buffer_current->buffer_name);
|
||||
m.data.buffer_toggle_unimportant.buffer_name =
|
||||
str_from_cstr (g.buffer_current->buffer_name);
|
||||
relay_send (&m, NULL);
|
||||
}
|
||||
|
||||
@@ -3731,13 +3744,19 @@ app_process_mouse (termo_mouse_event_t type, int x, int y, int button,
|
||||
return transcript && app_widget_contains (transcript, x, y)
|
||||
&& app_scroll (WIDGET_TRANSCRIPT_SCROLLBAR, amount);
|
||||
}
|
||||
if (button != 1)
|
||||
return false;
|
||||
|
||||
struct widget *target = app_interactive_widget_at (g_xui.widgets, x, y);
|
||||
if (!target)
|
||||
return false;
|
||||
|
||||
if (button == 2 && target->widget_id == WIDGET_BUFFER)
|
||||
{
|
||||
app_send_buffer_close (app_buffer_by_index (target->userdata));
|
||||
return true;
|
||||
}
|
||||
if (button != 1)
|
||||
return false;
|
||||
|
||||
if (target->widget_id == WIDGET_BUFFER_LIST_SCROLLBAR
|
||||
|| target->widget_id == WIDGET_TRANSCRIPT_SCROLLBAR)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user