vcl/unx/gtk3/gtkinst.cxx |   16 ++++++++++++++++
 1 file changed, 16 insertions(+)

New commits:
commit dcf778c85c84edea74e71c11faed9a5c22557a80
Author:     Julien Nabet <serval2...@yahoo.fr>
AuthorDate: Sat Jan 13 15:38:28 2024 +0100
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Sat Jan 13 19:48:16 2024 +0100

    Add missing gdk_event_free (vcl/gtkinst)
    
    Change-Id: I8bef4c3303f8f2fd89c1cf7cec35536c38d9d4d7
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162014
    Reviewed-by: Julien Nabet <serval2...@yahoo.fr>
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>

diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index e80098630919..7f79efee094b 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -11098,10 +11098,16 @@ private:
             gtk_main_do_event(pKeyEvent);
 
             GdkEvent *pTriggerEvent = gtk_get_current_event();
+            bool bEventOwnership = true;
             if (!pTriggerEvent)
+            {
                 pTriggerEvent = pKeyEvent;
+                bEventOwnership = false;
+            }
 
             gtk_menu_popup_at_widget(m_pMenu, pWidget, GDK_GRAVITY_SOUTH_WEST, 
GDK_GRAVITY_NORTH_WEST, pTriggerEvent);
+            if (bEventOwnership)
+                gdk_event_free(pTriggerEvent);
 
             gdk_event_free(pKeyEvent);
         }
@@ -11119,6 +11125,7 @@ private:
             {
                 gdk_event_get_button(pEvent, &nButton);
                 nTime = gdk_event_get_time(pEvent);
+                gdk_event_free(pEvent);
             }
             else
             {
@@ -11460,8 +11467,12 @@ public:
             gtk_main_do_event(pKeyEvent);
 
             GdkEvent *pTriggerEvent = gtk_get_current_event();
+            bool bEventOwnership = true;
             if (!pTriggerEvent)
+            {
                 pTriggerEvent = pKeyEvent;
+                bEventOwnership = false;
+            }
 
             bool bSwapForRTL = SwapForRTL(pWidget);
 
@@ -11479,6 +11490,8 @@ public:
                 else
                     gtk_menu_popup_at_rect(m_pMenu, 
widget_get_surface(pWidget), &aRect, GDK_GRAVITY_NORTH_EAST, 
GDK_GRAVITY_NORTH_WEST, pTriggerEvent);
             }
+            if (bEventOwnership)
+                gdk_event_free(pTriggerEvent);
 
             gdk_event_free(pKeyEvent);
         }
@@ -11501,6 +11514,7 @@ public:
                 if (!gdk_event_get_button(pEvent, &nButton))
                     nButton = 0;
                 nTime = gdk_event_get_time(pEvent);
+                gdk_event_free(pEvent);
             }
             else
             {
@@ -14137,6 +14151,8 @@ private:
 #if !GTK_CHECK_VERSION(4, 0, 0)
         GdkEvent *pEvent = gtk_get_current_event();
         m_bChangedByMouse = pEvent && categorizeEvent(pEvent) == 
VclInputFlags::MOUSE;
+        if (pEvent)
+            gdk_event_free(pEvent);
 #else
         //TODO maybe iterate over gtk_widget_observe_controllers looking for a 
motion controller
 #endif

Reply via email to