From be9ae6b93b257af960da4eebf6544fd1331b5acf Mon Sep 17 00:00:00 2001 From: raveit65 Date: Mon, 29 Jul 2019 14:55:23 +0200 Subject: shell: Use monitor instead of screen to determine window size replace {Width/Height}OfScreen which works only with X11 inspired from: https://gitlab.gnome.org/GNOME/evince/commit/40aa446 --- shell/ev-window.c | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) (limited to 'shell') diff --git a/shell/ev-window.c b/shell/ev-window.c index 67dc52bf..15d81b4c 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -1359,6 +1359,31 @@ setup_model_from_metadata (EvWindow *window) } } +static void +monitor_get_dimesions (EvWindow *ev_window, + gint *width, + gint *height) +{ + GdkDisplay *display; + GdkWindow *gdk_window; + GdkMonitor *monitor; + GdkRectangle geometry; + + *width = 0; + *height = 0; + + display = gtk_widget_get_display (GTK_WIDGET (ev_window)); + gdk_window = gtk_widget_get_window (GTK_WIDGET (ev_window)); + + if (gdk_window) { + monitor = gdk_display_get_monitor_at_window (display, + gdk_window); + gdk_monitor_get_workarea (monitor, &geometry); + *width = geometry.width; + *height = geometry.height; + } +} + static void setup_document_from_metadata (EvWindow *window) { @@ -1391,9 +1416,10 @@ setup_document_from_metadata (EvWindow *window) if (width_ratio > 0. && height_ratio > 0.) { gdouble document_width; gdouble document_height; - GdkScreen *screen; gint request_width; gint request_height; + gint monitor_width; + gint monitor_height; ev_document_get_max_page_size (window->priv->document, &document_width, &document_height); @@ -1401,10 +1427,10 @@ setup_document_from_metadata (EvWindow *window) request_width = (gint)(width_ratio * document_width + 0.5); request_height = (gint)(height_ratio * document_height + 0.5); - screen = gtk_window_get_screen (GTK_WINDOW (window)); - if (screen) { - request_width = MIN (request_width, WidthOfScreen (gdk_x11_screen_get_xscreen (screen))); - request_height = MIN (request_height, HeightOfScreen (gdk_x11_screen_get_xscreen (screen))); + monitor_get_dimesions (window, &monitor_width, &monitor_height); + if (monitor_width > 0 && monitor_height > 0) { + request_width = MIN (request_width, monitor_width); + request_height = MIN (request_height, monitor_height); } if (request_width > 0 && request_height > 0) { -- cgit v1.2.1