From cb2ba938b053f63558bfba2d6cde2d66d7583ca6 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Sat, 13 Mar 2010 15:45:02 +0100 Subject: [PATCH] [presentation] Fix scale calculation on rotated monitors MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Spotted by José Aliste. --- libview/ev-view-presentation.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/libview/ev-view-presentation.c b/libview/ev-view-presentation.c index 7d725414..17491ae7 100644 --- a/libview/ev-view-presentation.c +++ b/libview/ev-view-presentation.c @@ -62,6 +62,7 @@ struct _EvViewPresentation guint rotation; EvPresentationState state; gdouble scale; + gint monitor_width; gint monitor_height; /* Cursors */ @@ -168,9 +169,14 @@ ev_view_presentation_get_scale_for_page (EvViewPresentation *pview, gdouble width, height; ev_document_get_page_size (pview->document, page, &width, &height); - pview->scale = (pview->rotation == 90 || pview->rotation == 270) ? - pview->monitor_height / width : - pview->monitor_height / height; + if (pview->rotation == 90 || pview->rotation == 270) { + gdouble tmp; + + tmp = width; + width = height; + height = tmp; + } + pview->scale = MIN (pview->monitor_width / width, pview->monitor_height / height); } return pview->scale; @@ -1195,6 +1201,7 @@ init_presentation (GtkWidget *widget) monitor_num = gdk_screen_get_monitor_at_window (screen, widget->window); gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor); + pview->monitor_width = monitor.width; pview->monitor_height = monitor.height; ev_view_presentation_update_current_page (pview, pview->current_page); -- 2.43.0