vcl/inc/unx/gtk/gtkframe.hxx | 4 +++- vcl/unx/gtk3/gtkframe.cxx | 25 +++++++++++++++++++++---- 2 files changed, 24 insertions(+), 5 deletions(-)
New commits: commit 62414237e04d16ffe69ed460d336ebc7a6f4bf5f Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Mon May 10 12:22:20 2021 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Mon May 10 15:58:54 2021 +0200 gtk4: new close-request looks equivalent to old delete-event Change-Id: I4176de9e8eb2029979f478e4a32e25e0314c7d99 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115329 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/vcl/inc/unx/gtk/gtkframe.hxx b/vcl/inc/unx/gtk/gtkframe.hxx index 793633905716..045d2c5a4379 100644 --- a/vcl/inc/unx/gtk/gtkframe.hxx +++ b/vcl/inc/unx/gtk/gtkframe.hxx @@ -279,18 +279,20 @@ class GtkSalFrame final : public SalFrame #endif void WindowMap(); void WindowUnmap(); + bool WindowCloseRequest(); #if GTK_CHECK_VERSION(4, 0, 0) static void signalMap( GtkWidget*, gpointer ); static void signalUnmap( GtkWidget*, gpointer ); + static gboolean signalDelete( GtkWidget*, gpointer ); #else static gboolean signalMap( GtkWidget*, GdkEvent*, gpointer ); static gboolean signalUnmap( GtkWidget*, GdkEvent*, gpointer ); + static gboolean signalDelete( GtkWidget*, GdkEvent*, gpointer ); #endif #if !GTK_CHECK_VERSION(4, 0, 0) static gboolean signalConfigure( GtkWidget*, GdkEventConfigure*, gpointer ); static gboolean signalMotion( GtkWidget*, GdkEventMotion*, gpointer ); static gboolean signalKey( GtkWidget*, GdkEventKey*, gpointer ); - static gboolean signalDelete( GtkWidget*, GdkEvent*, gpointer ); static gboolean signalWindowState( GtkWidget*, GdkEvent*, gpointer ); static gboolean signalScroll( GtkWidget*, GdkEvent*, gpointer ); static gboolean signalCrossing( GtkWidget*, GdkEventCrossing*, gpointer ); diff --git a/vcl/unx/gtk3/gtkframe.cxx b/vcl/unx/gtk3/gtkframe.cxx index 004fde48b3ea..e2ef4f28a273 100644 --- a/vcl/unx/gtk3/gtkframe.cxx +++ b/vcl/unx/gtk3/gtkframe.cxx @@ -986,15 +986,16 @@ void GtkSalFrame::InitCommon() #if !GTK_CHECK_VERSION(4,0,0) g_signal_connect( G_OBJECT(m_pWindow), "map-event", G_CALLBACK(signalMap), this ); g_signal_connect( G_OBJECT(m_pWindow), "unmap-event", G_CALLBACK(signalUnmap), this ); + g_signal_connect( G_OBJECT(m_pWindow), "delete-event", G_CALLBACK(signalDelete), this ); #else g_signal_connect( G_OBJECT(m_pWindow), "map", G_CALLBACK(signalMap), this ); g_signal_connect( G_OBJECT(m_pWindow), "unmap", G_CALLBACK(signalUnmap), this ); + g_signal_connect( G_OBJECT(m_pWindow), "close-request", G_CALLBACK(signalDelete), this ); #endif #if !GTK_CHECK_VERSION(4,0,0) g_signal_connect( G_OBJECT(m_pWindow), "configure-event", G_CALLBACK(signalConfigure), this ); g_signal_connect( G_OBJECT(m_pWindow), "key-press-event", G_CALLBACK(signalKey), this ); g_signal_connect( G_OBJECT(m_pWindow), "key-release-event", G_CALLBACK(signalKey), this ); - g_signal_connect( G_OBJECT(m_pWindow), "delete-event", G_CALLBACK(signalDelete), this ); g_signal_connect( G_OBJECT(m_pWindow), "window-state-event", G_CALLBACK(signalWindowState), this ); #endif g_signal_connect( G_OBJECT(m_pWindow), "destroy", G_CALLBACK(signalDestroy), this ); @@ -3744,14 +3745,30 @@ gboolean GtkSalFrame::signalKey(GtkWidget* pWidget, GdkEventKey* pEvent, gpointe return bStopProcessingKey; } +#endif -gboolean GtkSalFrame::signalDelete( GtkWidget*, GdkEvent*, gpointer frame ) +bool GtkSalFrame::WindowCloseRequest() { - GtkSalFrame* pThis = static_cast<GtkSalFrame*>(frame); - pThis->CallCallbackExc( SalEvent::Close, nullptr ); + SolarMutexGuard aGuard; + CallCallbackExc(SalEvent::Close, nullptr); return true; } +#if GTK_CHECK_VERSION(4, 0, 0) +gboolean GtkSalFrame::signalDelete(GtkWidget*, gpointer frame) +{ + GtkSalFrame* pThis = static_cast<GtkSalFrame*>(frame); + return pThis->WindowCloseRequest(); +} +#else +gboolean GtkSalFrame::signalDelete(GtkWidget*, GdkEvent*, gpointer frame) +{ + GtkSalFrame* pThis = static_cast<GtkSalFrame*>(frame); + return pThis->WindowCloseRequest(); +} +#endif + +#if !GTK_CHECK_VERSION(4, 0, 0) void GtkSalFrame::signalStyleUpdated(GtkWidget*, gpointer frame) { GtkSalFrame* pThis = static_cast<GtkSalFrame*>(frame); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits