]> granicus.if.org Git - vim/commitdiff
patch 8.2.2999: balloon sometimes does not hide with GTK 3 v8.2.2999
authorBram Moolenaar <Bram@vim.org>
Mon, 14 Jun 2021 20:08:46 +0000 (22:08 +0200)
committerBram Moolenaar <Bram@vim.org>
Mon, 14 Jun 2021 20:08:46 +0000 (22:08 +0200)
Problem:    Balloon sometimes does not hide with GTK 3.
Solution:   Also listen to GDK_LEAVE_NOTIFY. (Johannes Stezenbach)

src/gui_beval.c
src/version.c

index 10478c677675aab03863662ac1428e4003d9a7b2..9e461e687c36c123b8b6c4cc24f65f172bf74cf0 100644 (file)
@@ -253,6 +253,9 @@ addEventHandler(GtkWidget *target, BalloonEval *beval)
     if (gtk_socket_id == 0 && gui.mainwin != NULL
            && gtk_widget_is_ancestor(target, gui.mainwin))
     {
+       gtk_widget_add_events(gui.mainwin,
+                             GDK_LEAVE_NOTIFY_MASK);
+
        g_signal_connect(G_OBJECT(gui.mainwin), "event",
                         G_CALLBACK(mainwin_event_cb),
                         beval);
@@ -360,6 +363,12 @@ mainwin_event_cb(GtkWidget *widget UNUSED, GdkEvent *event, gpointer data)
        case GDK_KEY_RELEASE:
            key_event(beval, event->key.keyval, FALSE);
            break;
+       case GDK_LEAVE_NOTIFY:
+           // Ignore LeaveNotify events that are not "normal".
+           // Apparently we also get it when somebody else grabs focus.
+           if (event->crossing.mode == GDK_CROSSING_NORMAL)
+               cancelBalloon(beval);
+           break;
        default:
            break;
     }
index 05b4a519b442b4c7b6c5bc6308f77e3acc86dafd..650382e83f3581babf4ccd81a3d9ed3767f0ec2d 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2999,
 /**/
     2998,
 /**/