mirror of
https://github.com/weechat/weechat.git
synced 2026-07-09 11:13:12 +02:00
core: fix bugs with automatic layout (bug #26110), add support of merged buffers in layout (task #10893)
This commit is contained in:
@@ -182,24 +182,27 @@ irc_channel_new (struct t_irc_server *server, int channel_type,
|
||||
free (new_channel);
|
||||
return NULL;
|
||||
}
|
||||
buffer_position = (channel_type == IRC_CHANNEL_TYPE_CHANNEL) ?
|
||||
weechat_config_integer (irc_config_look_new_channel_position) :
|
||||
weechat_config_integer (irc_config_look_new_pv_position);
|
||||
switch (buffer_position)
|
||||
if (weechat_buffer_get_integer (new_buffer, "layout_number") < 1)
|
||||
{
|
||||
case IRC_CONFIG_LOOK_BUFFER_POSITION_NONE:
|
||||
/* do nothing */
|
||||
break;
|
||||
case IRC_CONFIG_LOOK_BUFFER_POSITION_NEXT:
|
||||
/* move buffer to current number + 1 */
|
||||
snprintf (str_number, sizeof (str_number),
|
||||
"%d", current_buffer_number + 1);
|
||||
weechat_buffer_set (new_buffer, "number", str_number);
|
||||
break;
|
||||
case IRC_CONFIG_LOOK_BUFFER_POSITION_NEAR_SERVER:
|
||||
/* move buffer after last channel/pv of server */
|
||||
irc_channel_move_near_server (server, channel_type, new_buffer);
|
||||
break;
|
||||
buffer_position = (channel_type == IRC_CHANNEL_TYPE_CHANNEL) ?
|
||||
weechat_config_integer (irc_config_look_new_channel_position) :
|
||||
weechat_config_integer (irc_config_look_new_pv_position);
|
||||
switch (buffer_position)
|
||||
{
|
||||
case IRC_CONFIG_LOOK_BUFFER_POSITION_NONE:
|
||||
/* do nothing */
|
||||
break;
|
||||
case IRC_CONFIG_LOOK_BUFFER_POSITION_NEXT:
|
||||
/* move buffer to current number + 1 */
|
||||
snprintf (str_number, sizeof (str_number),
|
||||
"%d", current_buffer_number + 1);
|
||||
weechat_buffer_set (new_buffer, "number", str_number);
|
||||
break;
|
||||
case IRC_CONFIG_LOOK_BUFFER_POSITION_NEAR_SERVER:
|
||||
/* move buffer after last channel/pv of server */
|
||||
irc_channel_move_near_server (server, channel_type, new_buffer);
|
||||
break;
|
||||
}
|
||||
}
|
||||
buffer_created = 1;
|
||||
}
|
||||
|
||||
@@ -2865,9 +2865,16 @@ irc_server_create_buffer (struct t_irc_server *server)
|
||||
|
||||
irc_server_set_buffer_title (server);
|
||||
|
||||
/* merge buffer if needed */
|
||||
if (ptr_buffer_for_merge)
|
||||
/*
|
||||
* merge buffer if needed: if merge with(out) core set, and if no layout
|
||||
* number is assigned for this buffer (if layout number is assigned, then
|
||||
* buffer was already moved/merged by WeeChat core)
|
||||
*/
|
||||
if (ptr_buffer_for_merge
|
||||
&& (weechat_buffer_get_integer (server->buffer, "layout_number") < 1))
|
||||
{
|
||||
weechat_buffer_merge (server->buffer, ptr_buffer_for_merge);
|
||||
}
|
||||
|
||||
return server->buffer;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user