mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
patch 8.2.2898: QuitPre and ExitPre not triggered when GUI window is closed
Problem: QuitPre and ExitPre not triggered when GUI window is closed. Solution: Call before_quit_autocmds(). (closes #8242)
This commit is contained in:
@@ -5498,7 +5498,7 @@ not_exiting(void)
|
|||||||
settmode(TMODE_RAW);
|
settmode(TMODE_RAW);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
int
|
||||||
before_quit_autocmds(win_T *wp, int quit_all, int forceit)
|
before_quit_autocmds(win_T *wp, int quit_all, int forceit)
|
||||||
{
|
{
|
||||||
apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, wp->w_buffer);
|
apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, wp->w_buffer);
|
||||||
@@ -5572,7 +5572,7 @@ ex_quit(exarg_T *eap)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If there are more files or windows we won't exit.
|
* If there is only one relevant window we will exit.
|
||||||
*/
|
*/
|
||||||
if (check_more(FALSE, eap->forceit) == OK && only_one_window())
|
if (check_more(FALSE, eap->forceit) == OK && only_one_window())
|
||||||
exiting = TRUE;
|
exiting = TRUE;
|
||||||
|
@@ -857,9 +857,10 @@ gui_exit(int rc)
|
|||||||
void
|
void
|
||||||
gui_shell_closed(void)
|
gui_shell_closed(void)
|
||||||
{
|
{
|
||||||
cmdmod_T save_cmdmod;
|
cmdmod_T save_cmdmod = cmdmod;
|
||||||
|
|
||||||
save_cmdmod = cmdmod;
|
if (before_quit_autocmds(curwin, TRUE, FALSE))
|
||||||
|
return;
|
||||||
|
|
||||||
// Only exit when there are no changed files
|
// Only exit when there are no changed files
|
||||||
exiting = TRUE;
|
exiting = TRUE;
|
||||||
|
@@ -7,13 +7,13 @@ int getline_equal(char_u *(*fgetline)(int, void *, int, getline_opt_T), void *co
|
|||||||
void *getline_cookie(char_u *(*fgetline)(int, void *, int, getline_opt_T), void *cookie);
|
void *getline_cookie(char_u *(*fgetline)(int, void *, int, getline_opt_T), void *cookie);
|
||||||
char_u *getline_peek(char_u *(*fgetline)(int, void *, int, getline_opt_T), void *cookie);
|
char_u *getline_peek(char_u *(*fgetline)(int, void *, int, getline_opt_T), void *cookie);
|
||||||
char *ex_errmsg(char *msg, char_u *arg);
|
char *ex_errmsg(char *msg, char_u *arg);
|
||||||
|
int checkforcmd(char_u **pp, char *cmd, int len);
|
||||||
int parse_command_modifiers(exarg_T *eap, char **errormsg, cmdmod_T *cmod, int skip_only);
|
int parse_command_modifiers(exarg_T *eap, char **errormsg, cmdmod_T *cmod, int skip_only);
|
||||||
int has_cmdmod(cmdmod_T *cmod);
|
int has_cmdmod(cmdmod_T *cmod);
|
||||||
int cmdmod_error(void);
|
int cmdmod_error(void);
|
||||||
void apply_cmdmod(cmdmod_T *cmod);
|
void apply_cmdmod(cmdmod_T *cmod);
|
||||||
void undo_cmdmod(cmdmod_T *cmod);
|
void undo_cmdmod(cmdmod_T *cmod);
|
||||||
int parse_cmd_address(exarg_T *eap, char **errormsg, int silent);
|
int parse_cmd_address(exarg_T *eap, char **errormsg, int silent);
|
||||||
int checkforcmd(char_u **pp, char *cmd, int len);
|
|
||||||
char_u *skip_option_env_lead(char_u *start);
|
char_u *skip_option_env_lead(char_u *start);
|
||||||
char_u *find_ex_command(exarg_T *eap, int *full, int (*lookup)(char_u *, size_t, int cmd, cctx_T *), cctx_T *cctx);
|
char_u *find_ex_command(exarg_T *eap, int *full, int (*lookup)(char_u *, size_t, int cmd, cctx_T *), cctx_T *cctx);
|
||||||
int modifier_len(char_u *cmd);
|
int modifier_len(char_u *cmd);
|
||||||
@@ -33,6 +33,7 @@ char_u *find_nextcmd(char_u *p);
|
|||||||
char_u *check_nextcmd(char_u *p);
|
char_u *check_nextcmd(char_u *p);
|
||||||
char_u *get_command_name(expand_T *xp, int idx);
|
char_u *get_command_name(expand_T *xp, int idx);
|
||||||
void not_exiting(void);
|
void not_exiting(void);
|
||||||
|
int before_quit_autocmds(win_T *wp, int quit_all, int forceit);
|
||||||
void ex_quit(exarg_T *eap);
|
void ex_quit(exarg_T *eap);
|
||||||
void tabpage_close(int forceit);
|
void tabpage_close(int forceit);
|
||||||
void tabpage_close_other(tabpage_T *tp, int forceit);
|
void tabpage_close_other(tabpage_T *tp, int forceit);
|
||||||
|
@@ -750,6 +750,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
2898,
|
||||||
/**/
|
/**/
|
||||||
2897,
|
2897,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user