patch 8.1.1303: not possible to hide a balloon
Problem: Not possible to hide a balloon.
Solution: Hide the balloon when balloon_show() is called with an empty
string or list. Add balloon_gettext().
diff --git a/src/gui_beval.c b/src/gui_beval.c
index e1e093f..f4309b8 100644
--- a/src/gui_beval.c
+++ b/src/gui_beval.c
@@ -117,7 +117,8 @@
beval->appContext = XtWidgetToApplicationContext((Widget)target);
#endif
beval->showState = ShS_NEUTRAL;
- beval->msg = mesg;
+ vim_free(beval->msg);
+ beval->msg = mesg == NULL ? NULL : vim_strsave(mesg);
beval->msgCB = mesgCB;
beval->clientData = clientData;
@@ -208,8 +209,9 @@
void
gui_mch_post_balloon(BalloonEval *beval, char_u *mesg)
{
- beval->msg = mesg;
- if (mesg != NULL)
+ vim_free(beval->msg);
+ beval->msg = mesg == NULL ? NULL : vim_strsave(mesg);
+ if (beval->msg != NULL)
drawBalloon(beval);
else
undrawBalloon(beval);
@@ -225,6 +227,7 @@
void
gui_mch_unpost_balloon(BalloonEval *beval)
{
+ VIM_CLEAR(beval->msg);
undrawBalloon(beval);
}
#endif
@@ -975,6 +978,7 @@
gtk_widget_show(beval->balloonShell);
beval->showState = ShS_SHOWING;
+ gui_mch_update();
}
}