1
0
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:
Sébastien Helleu
2024-08-15 21:35:38 +02:00
parent 6de0195d0a
commit 0182153511
2 changed files with 28 additions and 0 deletions
+1
View File
@@ -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))
+27
View File
@@ -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);
}
/*