vcl/unx/gtk3/gtkinst.cxx | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-)
New commits: commit 9e9aebcf8db7934bb4026d18590b8336d9f2fea7 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Fri May 21 15:33:37 2021 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Sat May 22 17:59:38 2021 +0200 gtk4: reenable Expander assume for now we can drop the older workarounds Change-Id: I75baabcb00addd3cebb5cca8bd472544cd029218 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115944 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 361dfa745de1..8ca636e6d22c 100644 --- a/vcl/unx/gtk3/gtkinst.cxx +++ b/vcl/unx/gtk3/gtkinst.cxx @@ -17636,18 +17636,27 @@ public: } }; +} + +#endif + +namespace { + class GtkInstanceExpander : public GtkInstanceWidget, public virtual weld::Expander { private: GtkExpander* m_pExpander; gulong m_nSignalId; +#if !GTK_CHECK_VERSION(4, 0, 0) gulong m_nButtonPressEventSignalId; +#endif static void signalExpanded(GtkExpander* pExpander, GParamSpec*, gpointer widget) { GtkInstanceExpander* pThis = static_cast<GtkInstanceExpander*>(widget); SolarMutexGuard aGuard; +#if !GTK_CHECK_VERSION(4, 0, 0) if (gtk_expander_get_resize_toplevel(pExpander)) { GtkWidget *pToplevel = widget_get_root(GTK_WIDGET(pExpander)); @@ -17672,10 +17681,14 @@ private: gtk_window_resize(GTK_WINDOW(pToplevel), nToplevelWidth, nToplevelHeight); } } +#else + (void)pExpander; +#endif pThis->signal_expanded(); } +#if !GTK_CHECK_VERSION(4, 0, 0) static gboolean signalButton(GtkWidget*, GdkEventButton*, gpointer) { // don't let button press get to parent window, for the case of the @@ -17683,13 +17696,16 @@ private: // doesn't work return true; } +#endif public: GtkInstanceExpander(GtkExpander* pExpander, GtkInstanceBuilder* pBuilder, bool bTakeOwnership) : GtkInstanceWidget(GTK_WIDGET(pExpander), pBuilder, bTakeOwnership) , m_pExpander(pExpander) , m_nSignalId(g_signal_connect(m_pExpander, "notify::expanded", G_CALLBACK(signalExpanded), this)) +#if !GTK_CHECK_VERSION(4, 0, 0) , m_nButtonPressEventSignalId(g_signal_connect_after(m_pExpander, "button-press-event", G_CALLBACK(signalButton), this)) +#endif { } @@ -17715,15 +17731,15 @@ public: virtual ~GtkInstanceExpander() override { +#if !GTK_CHECK_VERSION(4, 0, 0) g_signal_handler_disconnect(m_pExpander, m_nButtonPressEventSignalId); +#endif g_signal_handler_disconnect(m_pExpander, m_nSignalId); } }; } -#endif - namespace { gboolean signalTooltipQuery(GtkWidget* pWidget, gint /*x*/, gint /*y*/, @@ -19195,16 +19211,11 @@ public: virtual std::unique_ptr<weld::Expander> weld_expander(const OString &id) override { -#if !GTK_CHECK_VERSION(4, 0, 0) GtkExpander* pExpander = GTK_EXPANDER(gtk_builder_get_object(m_pBuilder, id.getStr())); if (!pExpander) return nullptr; auto_add_parentless_widgets_to_container(GTK_WIDGET(pExpander)); return std::make_unique<GtkInstanceExpander>(pExpander, this, false); -#else - (void)id; - return nullptr; -#endif } virtual std::unique_ptr<weld::DrawingArea> weld_drawing_area(const OString &id, const a11yref& rA11y, _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits