mirror of
https://github.com/weechat/weechat.git
synced 2026-06-27 21:36:37 +02:00
Fixed crash when closing a buffer used by more than one window
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
WeeChat - Wee Enhanced Environment for Chat
|
||||
===========================================
|
||||
|
||||
ChangeLog - 2005-09-10
|
||||
ChangeLog - 2005-09-13
|
||||
|
||||
|
||||
Version 0.1.5 (under dev!):
|
||||
* fixed crash when closing a buffer used by more than one window
|
||||
* added some missing IRC commands
|
||||
* fixed DCC display bug (now decodes string according to charset)
|
||||
* added /ignore and /unignore commands
|
||||
|
||||
@@ -2771,9 +2771,9 @@ weechat_cmd_window (int argc, char **argv)
|
||||
gui_window_merge_auto (gui_current_window);
|
||||
}
|
||||
else if (ascii_strcasecmp (argv[0], "-1") == 0)
|
||||
gui_switch_to_previous_window ();
|
||||
gui_switch_to_previous_window (gui_current_window);
|
||||
else if (ascii_strcasecmp (argv[0], "+1") == 0)
|
||||
gui_switch_to_next_window ();
|
||||
gui_switch_to_next_window (gui_current_window);
|
||||
else
|
||||
{
|
||||
irc_display_prefix (NULL, PREFIX_ERROR);
|
||||
|
||||
@@ -143,7 +143,7 @@ gui_input_grab_end ()
|
||||
{
|
||||
if (gui_current_window->buffer->has_input)
|
||||
{
|
||||
gui_input_insert_string (expanded_key, -1);
|
||||
gui_input_insert_string (gui_current_window, expanded_key, -1);
|
||||
gui_current_window->buffer->input_buffer_pos += strlen (expanded_key);
|
||||
gui_draw_buffer_input (gui_current_window->buffer, 1);
|
||||
}
|
||||
@@ -225,7 +225,7 @@ gui_input_read ()
|
||||
/*gui_printf (gui_current_window->buffer, "gui_input_read: key = %s (%d)\n", key_str, key);*/
|
||||
|
||||
if (gui_key_pressed (key_str) != 0)
|
||||
gui_input_insert_char (key);
|
||||
gui_input_insert_char (gui_current_window, key);
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
+408
-411
File diff suppressed because it is too large
Load Diff
@@ -513,7 +513,7 @@ gui_key_pressed (char *key_str)
|
||||
gui_current_window->buffer,
|
||||
ptr_key->command);
|
||||
else
|
||||
(void)(ptr_key->function)();
|
||||
(void)(ptr_key->function)(gui_current_window);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
+38
-37
@@ -272,7 +272,8 @@ struct t_gui_key
|
||||
{
|
||||
char *key; /* key combo (ex: a, ^W, ^W^C, meta-a) */
|
||||
char *command; /* associated command (may be NULL) */
|
||||
void (*function)(); /* associated function (if cmd is NULL) */
|
||||
void (*function)(t_gui_window *);
|
||||
/* associated function (if cmd is NULL) */
|
||||
t_gui_key *prev_key; /* link to previous key */
|
||||
t_gui_key *next_key; /* link to next key */
|
||||
};
|
||||
@@ -319,42 +320,42 @@ extern void gui_buffer_free (t_gui_buffer *, int);
|
||||
extern t_gui_line *gui_new_line (t_gui_buffer *);
|
||||
extern t_gui_message *gui_new_message (t_gui_buffer *);
|
||||
extern void gui_input_clipboard_copy (char *, int);
|
||||
extern void gui_input_clipboard_paste ();
|
||||
extern void gui_input_insert_string (char *, int);
|
||||
extern void gui_input_insert_char ();
|
||||
extern void gui_input_return ();
|
||||
extern void gui_input_tab ();
|
||||
extern void gui_input_backspace ();
|
||||
extern void gui_input_delete ();
|
||||
extern void gui_input_delete_previous_word ();
|
||||
extern void gui_input_delete_next_word ();
|
||||
extern void gui_input_delete_begin_of_line ();
|
||||
extern void gui_input_delete_end_of_line ();
|
||||
extern void gui_input_delete_line ();
|
||||
extern void gui_input_transpose_chars ();
|
||||
extern void gui_input_home ();
|
||||
extern void gui_input_end ();
|
||||
extern void gui_input_left ();
|
||||
extern void gui_input_previous_word ();
|
||||
extern void gui_input_right ();
|
||||
extern void gui_input_next_word ();
|
||||
extern void gui_input_up ();
|
||||
extern void gui_input_up_global ();
|
||||
extern void gui_input_down ();
|
||||
extern void gui_input_down_global ();
|
||||
extern void gui_input_jump_smart ();
|
||||
extern void gui_input_jump_dcc ();
|
||||
extern void gui_input_jump_last_buffer ();
|
||||
extern void gui_input_jump_server ();
|
||||
extern void gui_input_jump_next_server ();
|
||||
extern void gui_input_hotlist_clear ();
|
||||
extern void gui_input_infobar_clear ();
|
||||
extern void gui_input_grab_key ();
|
||||
extern void gui_switch_to_previous_buffer ();
|
||||
extern void gui_switch_to_next_buffer ();
|
||||
extern void gui_switch_to_previous_window ();
|
||||
extern void gui_switch_to_next_window ();
|
||||
extern void gui_switch_to_dcc_buffer ();
|
||||
extern void gui_input_clipboard_paste (t_gui_window *);
|
||||
extern void gui_input_insert_string (t_gui_window *, char *, int);
|
||||
extern void gui_input_insert_char (t_gui_window *, int);
|
||||
extern void gui_input_return (t_gui_window *);
|
||||
extern void gui_input_tab (t_gui_window *);
|
||||
extern void gui_input_backspace (t_gui_window *);
|
||||
extern void gui_input_delete (t_gui_window *);
|
||||
extern void gui_input_delete_previous_word (t_gui_window *);
|
||||
extern void gui_input_delete_next_word (t_gui_window *);
|
||||
extern void gui_input_delete_begin_of_line (t_gui_window *);
|
||||
extern void gui_input_delete_end_of_line (t_gui_window *);
|
||||
extern void gui_input_delete_line (t_gui_window *);
|
||||
extern void gui_input_transpose_chars (t_gui_window *);
|
||||
extern void gui_input_home (t_gui_window *);
|
||||
extern void gui_input_end (t_gui_window *);
|
||||
extern void gui_input_left (t_gui_window *);
|
||||
extern void gui_input_previous_word (t_gui_window *);
|
||||
extern void gui_input_right (t_gui_window *);
|
||||
extern void gui_input_next_word (t_gui_window *);
|
||||
extern void gui_input_up (t_gui_window *);
|
||||
extern void gui_input_up_global (t_gui_window *);
|
||||
extern void gui_input_down (t_gui_window *);
|
||||
extern void gui_input_down_global (t_gui_window *);
|
||||
extern void gui_input_jump_smart (t_gui_window *);
|
||||
extern void gui_input_jump_dcc (t_gui_window *);
|
||||
extern void gui_input_jump_last_buffer (t_gui_window *);
|
||||
extern void gui_input_jump_server (t_gui_window *);
|
||||
extern void gui_input_jump_next_server (t_gui_window *);
|
||||
extern void gui_input_hotlist_clear (t_gui_window *);
|
||||
extern void gui_input_infobar_clear (t_gui_window *);
|
||||
extern void gui_input_grab_key (t_gui_window *);
|
||||
extern void gui_switch_to_previous_buffer (t_gui_window *);
|
||||
extern void gui_switch_to_next_buffer (t_gui_window *);
|
||||
extern void gui_switch_to_previous_window (t_gui_window *);
|
||||
extern void gui_switch_to_next_window (t_gui_window *);
|
||||
extern void gui_switch_to_dcc_buffer (t_gui_window *);
|
||||
extern t_gui_buffer *gui_switch_to_buffer_by_number (t_gui_window *, int);
|
||||
extern void gui_move_buffer_to_number (t_gui_window *, int);
|
||||
extern void gui_window_print_log (t_gui_window *);
|
||||
|
||||
+2
-1
@@ -1,10 +1,11 @@
|
||||
WeeChat - Wee Enhanced Environment for Chat
|
||||
===========================================
|
||||
|
||||
ChangeLog - 2005-09-10
|
||||
ChangeLog - 2005-09-13
|
||||
|
||||
|
||||
Version 0.1.5 (under dev!):
|
||||
* fixed crash when closing a buffer used by more than one window
|
||||
* added some missing IRC commands
|
||||
* fixed DCC display bug (now decodes string according to charset)
|
||||
* added /ignore and /unignore commands
|
||||
|
||||
@@ -2771,9 +2771,9 @@ weechat_cmd_window (int argc, char **argv)
|
||||
gui_window_merge_auto (gui_current_window);
|
||||
}
|
||||
else if (ascii_strcasecmp (argv[0], "-1") == 0)
|
||||
gui_switch_to_previous_window ();
|
||||
gui_switch_to_previous_window (gui_current_window);
|
||||
else if (ascii_strcasecmp (argv[0], "+1") == 0)
|
||||
gui_switch_to_next_window ();
|
||||
gui_switch_to_next_window (gui_current_window);
|
||||
else
|
||||
{
|
||||
irc_display_prefix (NULL, PREFIX_ERROR);
|
||||
|
||||
@@ -143,7 +143,7 @@ gui_input_grab_end ()
|
||||
{
|
||||
if (gui_current_window->buffer->has_input)
|
||||
{
|
||||
gui_input_insert_string (expanded_key, -1);
|
||||
gui_input_insert_string (gui_current_window, expanded_key, -1);
|
||||
gui_current_window->buffer->input_buffer_pos += strlen (expanded_key);
|
||||
gui_draw_buffer_input (gui_current_window->buffer, 1);
|
||||
}
|
||||
@@ -225,7 +225,7 @@ gui_input_read ()
|
||||
/*gui_printf (gui_current_window->buffer, "gui_input_read: key = %s (%d)\n", key_str, key);*/
|
||||
|
||||
if (gui_key_pressed (key_str) != 0)
|
||||
gui_input_insert_char (key);
|
||||
gui_input_insert_char (gui_current_window, key);
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
+408
-411
File diff suppressed because it is too large
Load Diff
@@ -513,7 +513,7 @@ gui_key_pressed (char *key_str)
|
||||
gui_current_window->buffer,
|
||||
ptr_key->command);
|
||||
else
|
||||
(void)(ptr_key->function)();
|
||||
(void)(ptr_key->function)(gui_current_window);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
+38
-37
@@ -272,7 +272,8 @@ struct t_gui_key
|
||||
{
|
||||
char *key; /* key combo (ex: a, ^W, ^W^C, meta-a) */
|
||||
char *command; /* associated command (may be NULL) */
|
||||
void (*function)(); /* associated function (if cmd is NULL) */
|
||||
void (*function)(t_gui_window *);
|
||||
/* associated function (if cmd is NULL) */
|
||||
t_gui_key *prev_key; /* link to previous key */
|
||||
t_gui_key *next_key; /* link to next key */
|
||||
};
|
||||
@@ -319,42 +320,42 @@ extern void gui_buffer_free (t_gui_buffer *, int);
|
||||
extern t_gui_line *gui_new_line (t_gui_buffer *);
|
||||
extern t_gui_message *gui_new_message (t_gui_buffer *);
|
||||
extern void gui_input_clipboard_copy (char *, int);
|
||||
extern void gui_input_clipboard_paste ();
|
||||
extern void gui_input_insert_string (char *, int);
|
||||
extern void gui_input_insert_char ();
|
||||
extern void gui_input_return ();
|
||||
extern void gui_input_tab ();
|
||||
extern void gui_input_backspace ();
|
||||
extern void gui_input_delete ();
|
||||
extern void gui_input_delete_previous_word ();
|
||||
extern void gui_input_delete_next_word ();
|
||||
extern void gui_input_delete_begin_of_line ();
|
||||
extern void gui_input_delete_end_of_line ();
|
||||
extern void gui_input_delete_line ();
|
||||
extern void gui_input_transpose_chars ();
|
||||
extern void gui_input_home ();
|
||||
extern void gui_input_end ();
|
||||
extern void gui_input_left ();
|
||||
extern void gui_input_previous_word ();
|
||||
extern void gui_input_right ();
|
||||
extern void gui_input_next_word ();
|
||||
extern void gui_input_up ();
|
||||
extern void gui_input_up_global ();
|
||||
extern void gui_input_down ();
|
||||
extern void gui_input_down_global ();
|
||||
extern void gui_input_jump_smart ();
|
||||
extern void gui_input_jump_dcc ();
|
||||
extern void gui_input_jump_last_buffer ();
|
||||
extern void gui_input_jump_server ();
|
||||
extern void gui_input_jump_next_server ();
|
||||
extern void gui_input_hotlist_clear ();
|
||||
extern void gui_input_infobar_clear ();
|
||||
extern void gui_input_grab_key ();
|
||||
extern void gui_switch_to_previous_buffer ();
|
||||
extern void gui_switch_to_next_buffer ();
|
||||
extern void gui_switch_to_previous_window ();
|
||||
extern void gui_switch_to_next_window ();
|
||||
extern void gui_switch_to_dcc_buffer ();
|
||||
extern void gui_input_clipboard_paste (t_gui_window *);
|
||||
extern void gui_input_insert_string (t_gui_window *, char *, int);
|
||||
extern void gui_input_insert_char (t_gui_window *, int);
|
||||
extern void gui_input_return (t_gui_window *);
|
||||
extern void gui_input_tab (t_gui_window *);
|
||||
extern void gui_input_backspace (t_gui_window *);
|
||||
extern void gui_input_delete (t_gui_window *);
|
||||
extern void gui_input_delete_previous_word (t_gui_window *);
|
||||
extern void gui_input_delete_next_word (t_gui_window *);
|
||||
extern void gui_input_delete_begin_of_line (t_gui_window *);
|
||||
extern void gui_input_delete_end_of_line (t_gui_window *);
|
||||
extern void gui_input_delete_line (t_gui_window *);
|
||||
extern void gui_input_transpose_chars (t_gui_window *);
|
||||
extern void gui_input_home (t_gui_window *);
|
||||
extern void gui_input_end (t_gui_window *);
|
||||
extern void gui_input_left (t_gui_window *);
|
||||
extern void gui_input_previous_word (t_gui_window *);
|
||||
extern void gui_input_right (t_gui_window *);
|
||||
extern void gui_input_next_word (t_gui_window *);
|
||||
extern void gui_input_up (t_gui_window *);
|
||||
extern void gui_input_up_global (t_gui_window *);
|
||||
extern void gui_input_down (t_gui_window *);
|
||||
extern void gui_input_down_global (t_gui_window *);
|
||||
extern void gui_input_jump_smart (t_gui_window *);
|
||||
extern void gui_input_jump_dcc (t_gui_window *);
|
||||
extern void gui_input_jump_last_buffer (t_gui_window *);
|
||||
extern void gui_input_jump_server (t_gui_window *);
|
||||
extern void gui_input_jump_next_server (t_gui_window *);
|
||||
extern void gui_input_hotlist_clear (t_gui_window *);
|
||||
extern void gui_input_infobar_clear (t_gui_window *);
|
||||
extern void gui_input_grab_key (t_gui_window *);
|
||||
extern void gui_switch_to_previous_buffer (t_gui_window *);
|
||||
extern void gui_switch_to_next_buffer (t_gui_window *);
|
||||
extern void gui_switch_to_previous_window (t_gui_window *);
|
||||
extern void gui_switch_to_next_window (t_gui_window *);
|
||||
extern void gui_switch_to_dcc_buffer (t_gui_window *);
|
||||
extern t_gui_buffer *gui_switch_to_buffer_by_number (t_gui_window *, int);
|
||||
extern void gui_move_buffer_to_number (t_gui_window *, int);
|
||||
extern void gui_window_print_log (t_gui_window *);
|
||||
|
||||
Reference in New Issue
Block a user