vcl/unx/gtk3/gtkinst.cxx |   23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

New commits:
commit 8da12900319696519564d4ae3764d063e94901f8
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Thu Jun 3 11:14:09 2021 +0100
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Thu Jun 3 15:44:17 2021 +0200

    gtk4: get basic menubutton popovers working
    
    Change-Id: Id205761521d9eda50bb858d86e7235e273691568
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116666
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index c469a06010ec..128b63450be9 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -9611,7 +9611,11 @@ public:
         GtkInstanceWidget* pPopoverWidget = 
dynamic_cast<GtkInstanceWidget*>(pPopover);
         m_pPopover = pPopoverWidget ? pPopoverWidget->getWidget() : nullptr;
 
-#if !GTK_CHECK_VERSION(4, 0, 0)
+#if GTK_CHECK_VERSION(4, 0, 0)
+        gtk_menu_button_set_popover(m_pMenuButton, m_pPopover);
+        return;
+#else
+
 #if defined(GDK_WINDOWING_X11)
         if (!m_pMenuHack)
         {
@@ -9631,9 +9635,7 @@ public:
             }
         }
 #endif
-#endif
 
-#if !GTK_CHECK_VERSION(4, 0, 0)
         if (m_pMenuHack)
         {
             GtkWidget* pPlaceHolder = 
gtk_popover_new(GTK_WIDGET(m_pMenuButton));
@@ -9650,18 +9652,14 @@ public:
             gtk_menu_button_set_popover(m_pMenuButton, pPlaceHolder);
         }
         else
-#endif
         {
             gtk_menu_button_set_popover(m_pMenuButton, m_pPopover);
             if (m_pPopover)
             {
-#if !GTK_CHECK_VERSION(4, 0, 0)
                 gtk_widget_show_all(m_pPopover);
-#else
-                gtk_popover_popup(GTK_POPOVER(m_pPopover));
-#endif
             }
         }
+#endif
     }
 
     void set_menu(weld::Menu* pMenu);
@@ -21637,6 +21635,15 @@ ConvertResult Convert3To4(const 
Reference<css::xml::dom::XNode>& xNode)
             {
                 xClass->setNodeValue("GtkPicture");
             }
+            else if (sClass == "GtkPopover" && !bHasVisible)
+            {
+                auto xVisible = CreateProperty(xDoc, "visible", "False");
+                auto xFirstChild = xChild->getFirstChild();
+                if (xFirstChild.is())
+                    xChild->insertBefore(xVisible, xFirstChild);
+                else
+                    xChild->appendChild(xVisible);
+            }
         }
 
         xChild = xNextChild;
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to