1
0
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:
Sebastien Helleu
2005-09-13 17:04:34 +00:00
parent a29416e352
commit 8a299adb3b
12 changed files with 906 additions and 908 deletions
+2 -1
View File
@@ -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
+2 -2
View File
@@ -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);
+2 -2
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
+2 -2
View File
@@ -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);
+2 -2
View File
@@ -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++;
}
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -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
View File
@@ -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 *);