vcl/unx/gtk3/gtkframe.cxx |    9 +++++++++
 1 file changed, 9 insertions(+)

New commits:
commit 275e05cc232b1dc39645f9444ee98932fb3ded58
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Thu Jul 28 13:00:24 2022 +0100
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Fri Jul 29 20:54:04 2022 +0200

    gtk4: update vcl when popup was closed by some external means
    
    Change-Id: Ie580cd0b42ca1c928bfea20a4a9f1494021047d8
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137560
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/vcl/unx/gtk3/gtkframe.cxx b/vcl/unx/gtk3/gtkframe.cxx
index 008a8d5dbbdb..0f783d9e06b5 100644
--- a/vcl/unx/gtk3/gtkframe.cxx
+++ b/vcl/unx/gtk3/gtkframe.cxx
@@ -1353,6 +1353,14 @@ void GtkSalFrame::ListenPortalSettings()
     m_nPortalSettingChangedSignalId = g_signal_connect(m_pSettingsPortal, 
"g-signal", G_CALLBACK(settings_portal_changed_cb), this);
 }
 
+#if GTK_CHECK_VERSION(4,0,0)
+static void PopoverClosed(GtkPopover*, GtkSalFrame* pThis)
+{
+    SolarMutexGuard aGuard;
+    pThis->closePopup();
+}
+#endif
+
 void GtkSalFrame::Init( SalFrame* pParent, SalFrameStyleFlags nStyle )
 {
     if( nStyle & SalFrameStyleFlags::DEFAULT ) // ensure default style
@@ -1398,6 +1406,7 @@ void GtkSalFrame::Init( SalFrame* pParent, 
SalFrameStyleFlags nStyle )
         {
             m_pWindow = gtk_popover_new();
             gtk_popover_set_has_arrow(GTK_POPOVER(m_pWindow), false);
+            g_signal_connect(m_pWindow, "closed", G_CALLBACK(PopoverClosed), 
this);
         }
 #endif
 

Reply via email to