[Libreoffice-commits] core.git: vcl/unx
Caolán McNamara (via logerrit)
logerrit at kemper.freedesktop.org
Tue May 11 14:38:28 UTC 2021
vcl/unx/gtk3/gtkdata.cxx | 27 ++++++++++++++++++---------
1 file changed, 18 insertions(+), 9 deletions(-)
New commits:
commit 1821241f7c7c90784662be54dc3b42e4f9ca3ca3
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Tue May 11 14:01:52 2021 +0100
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Tue May 11 16:37:32 2021 +0200
gtk4: listen to monitors changing the new way
Change-Id: Iab483c86a0d9810e801a19a9daf3cb9cc1632608
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115406
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/vcl/unx/gtk3/gtkdata.cxx b/vcl/unx/gtk3/gtkdata.cxx
index 4cea5bc5d223..2f0d949f0710 100644
--- a/vcl/unx/gtk3/gtkdata.cxx
+++ b/vcl/unx/gtk3/gtkdata.cxx
@@ -94,8 +94,15 @@ GtkSalDisplay::~GtkSalDisplay()
#endif
}
-#if !GTK_CHECK_VERSION(4, 0, 0)
-extern "C" {
+#if GTK_CHECK_VERSION(4, 0, 0)
+
+static void signalMonitorsChanged(GListModel*, gpointer data)
+{
+ GtkSalDisplay* pDisp = static_cast<GtkSalDisplay*>(data);
+ pDisp->emitDisplayChanged();
+}
+
+#else
static void signalScreenSizeChanged( GdkScreen* pScreen, gpointer data )
{
@@ -109,8 +116,6 @@ static void signalMonitorsChanged( GdkScreen* pScreen, gpointer data )
pDisp->monitorsChanged( pScreen );
}
-}
-
GdkFilterReturn GtkSalDisplay::filterGdkEvent( GdkXEvent* )
{
(void) this; // loplugin:staticmethods
@@ -569,7 +574,14 @@ void GtkSalData::Init()
GtkSalDisplay *pDisplay = new GtkSalDisplay( pGdkDisp );
SetDisplay( pDisplay );
-#if !GTK_CHECK_VERSION(4, 0, 0)
+#if GTK_CHECK_VERSION(4, 0, 0)
+ pDisplay->emitDisplayChanged();
+ GListModel *pMonitors = gdk_display_get_monitors(pGdkDisp);
+ g_signal_connect(pMonitors, "items-changed", G_CALLBACK(signalMonitorsChanged), pDisplay);
+
+ gtk_style_context_add_provider_for_display(pGdkDisp, CreateSmallButtonProvider(),
+ GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+#else
int nScreens = gdk_display_get_n_screens( pGdkDisp );
for( int n = 0; n < nScreens; n++ )
{
@@ -583,14 +595,11 @@ void GtkSalData::Init()
g_signal_connect( G_OBJECT(pScreen), "size-changed",
G_CALLBACK(signalScreenSizeChanged), pDisplay );
g_signal_connect( G_OBJECT(pScreen), "monitors-changed",
- G_CALLBACK(signalMonitorsChanged), GetGtkDisplay() );
+ G_CALLBACK(signalMonitorsChanged), pDisplay );
gtk_style_context_add_provider_for_screen(pScreen, CreateSmallButtonProvider(),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
}
-#else
- gtk_style_context_add_provider_for_display(pGdkDisp, CreateSmallButtonProvider(),
- GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
#endif
}
More information about the Libreoffice-commits
mailing list