mirror of
https://github.com/weechat/weechat.git
synced 2026-07-04 16:53:14 +02:00
core: send signal "buffer_moved" for all buffers affected by merge/unmerge
This commit is contained in:
@@ -62,6 +62,7 @@
|
||||
- xfer: fix send of data on the DCC chat buffer after `/upgrade` if the buffer was opened before the upgrade ([#2092](https://github.com/weechat/weechat/issues/2092))
|
||||
- core: fix refresh of bar item "scroll" in root bar after `/buffer clear` ([#590](https://github.com/weechat/weechat/issues/590))
|
||||
- core, plugins: return "0x0" instead of "(nil)" for pointers formatted in strings
|
||||
- core: send signal "buffer_moved" for all buffers affected by merge/unmerge
|
||||
- ruby: fix builtin functions not available ([#2109](https://github.com/weechat/weechat/issues/2109))
|
||||
- php: fix return value of function hdata_longlong
|
||||
- tcl: fix return value of function hdata_longlong ([#2119](https://github.com/weechat/weechat/issues/2119))
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include <ctype.h>
|
||||
|
||||
#include "../core/weechat.h"
|
||||
#include "../core/core-arraylist.h"
|
||||
#include "../core/core-config.h"
|
||||
#include "../core/core-eval.h"
|
||||
#include "../core/core-hashtable.h"
|
||||
@@ -459,6 +460,10 @@ gui_buffer_shift_numbers (struct t_gui_buffer *buffer)
|
||||
break;
|
||||
}
|
||||
ptr_buffer->number++;
|
||||
(void) gui_buffer_send_signal (ptr_buffer,
|
||||
"buffer_moved",
|
||||
WEECHAT_HOOK_SIGNAL_POINTER,
|
||||
ptr_buffer);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4407,6 +4412,8 @@ gui_buffer_merge (struct t_gui_buffer *buffer,
|
||||
struct t_gui_buffer *target_buffer)
|
||||
{
|
||||
struct t_gui_buffer *ptr_buffer, *ptr_first_buffer[2], *ptr_last_buffer[2];
|
||||
struct t_arraylist *buffers_moved;
|
||||
int i, list_size;
|
||||
|
||||
if (!buffer || !target_buffer)
|
||||
return;
|
||||
@@ -4451,6 +4458,10 @@ gui_buffer_merge (struct t_gui_buffer *buffer,
|
||||
if (!ptr_first_buffer[1] || !ptr_last_buffer[1])
|
||||
return;
|
||||
|
||||
buffers_moved = arraylist_new (32, 0, 1, NULL, NULL, NULL, NULL);
|
||||
if (!buffers_moved)
|
||||
return;
|
||||
|
||||
/* remove buffer(s) to merge from list */
|
||||
if (ptr_first_buffer[0]->prev_buffer)
|
||||
(ptr_first_buffer[0]->prev_buffer)->next_buffer = ptr_last_buffer[0]->next_buffer;
|
||||
@@ -4467,6 +4478,7 @@ gui_buffer_merge (struct t_gui_buffer *buffer,
|
||||
for (ptr_buffer = ptr_last_buffer[0]->next_buffer; ptr_buffer;
|
||||
ptr_buffer = ptr_buffer->next_buffer)
|
||||
{
|
||||
arraylist_add (buffers_moved, ptr_buffer);
|
||||
ptr_buffer->number--;
|
||||
}
|
||||
}
|
||||
@@ -4485,6 +4497,7 @@ gui_buffer_merge (struct t_gui_buffer *buffer,
|
||||
ptr_buffer = ptr_buffer->next_buffer)
|
||||
{
|
||||
ptr_buffer->number = target_buffer->number;
|
||||
arraylist_add (buffers_moved, ptr_buffer);
|
||||
if (ptr_buffer == ptr_last_buffer[0])
|
||||
break;
|
||||
}
|
||||
@@ -4502,6 +4515,20 @@ gui_buffer_merge (struct t_gui_buffer *buffer,
|
||||
(void) gui_buffer_send_signal (buffer,
|
||||
"buffer_merged",
|
||||
WEECHAT_HOOK_SIGNAL_POINTER, buffer);
|
||||
|
||||
list_size = arraylist_size (buffers_moved);
|
||||
for (i = 0; i < list_size; i++)
|
||||
{
|
||||
ptr_buffer = (struct t_gui_buffer *)arraylist_get (buffers_moved, i);
|
||||
if (ptr_buffer)
|
||||
{
|
||||
(void) gui_buffer_send_signal (ptr_buffer,
|
||||
"buffer_moved",
|
||||
WEECHAT_HOOK_SIGNAL_POINTER, ptr_buffer);
|
||||
}
|
||||
}
|
||||
|
||||
arraylist_free (buffers_moved);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user