vcl/unx/gtk3/gtkdata.cxx | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-)
New commits: commit 5def21945183b9e4cd86f6c941873a7e5d5d5f67 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Mon May 10 09:18:10 2021 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Mon May 10 11:16:41 2021 +0200 gtk4: start without crashing toplevel empty frame now appears Change-Id: I755525ab5af7a2e532686e8633feafeb7f16f81e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115311 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/vcl/unx/gtk3/gtkdata.cxx b/vcl/unx/gtk3/gtkdata.cxx index f515d93ac1eb..eb534b0d42e6 100644 --- a/vcl/unx/gtk3/gtkdata.cxx +++ b/vcl/unx/gtk3/gtkdata.cxx @@ -499,9 +499,10 @@ void GtkSalData::Init() } // init gtk/gdk -#if !GTK_CHECK_VERSION(4, 0, 0) +#if GTK_CHECK_VERSION(4, 0, 0) + gtk_init_check(); +#else gtk_init_check( &nParams, &pCmdLineAry ); - gdk_error_trap_push(); #endif for (int i = 0; i < nParams; ++i) @@ -532,6 +533,8 @@ void GtkSalData::Init() exit(0); } + ErrorTrapPush(); + #if defined(GDK_WINDOWING_X11) if (DLSYM_GDK_IS_X11_DISPLAY(pGdkDisp)) aOrigXIOErrorHandler = XSetIOErrorHandler(XIOErrorHdl); @@ -586,23 +589,40 @@ void GtkSalData::Init() void GtkSalData::ErrorTrapPush() { -#if !GTK_CHECK_VERSION(4, 0, 0) - gdk_error_trap_push (); +#if GTK_CHECK_VERSION(4, 0, 0) +# if defined(GDK_WINDOWING_X11) + GdkDisplay* pGdkDisp = gdk_display_get_default(); + if (DLSYM_GDK_IS_X11_DISPLAY(pGdkDisp)) + gdk_x11_display_error_trap_push(pGdkDisp); +# endif +#else + gdk_error_trap_push(); #endif } bool GtkSalData::ErrorTrapPop( bool bIgnoreError ) { -#if !GTK_CHECK_VERSION(4, 0, 0) +#if GTK_CHECK_VERSION(4, 0, 0) +# if defined(GDK_WINDOWING_X11) + GdkDisplay* pGdkDisp = gdk_display_get_default(); + if (DLSYM_GDK_IS_X11_DISPLAY(pGdkDisp)) + { + if (bIgnoreError) + { + gdk_x11_display_error_trap_pop_ignored(pGdkDisp); // faster + return false; + } + return gdk_x11_display_error_trap_pop(pGdkDisp) != 0; + } +# endif + return false; +#else if (bIgnoreError) { gdk_error_trap_pop_ignored (); // faster return false; } return gdk_error_trap_pop () != 0; -#else - (void)bIgnoreError; - return false; #endif } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits