X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=inline;f=libview%2Fev-view.c;h=8a5ac5f85ebf21e5f428f33f84e205143a141475;hb=1600e0323e398d2e235121e9e25df70853095e4c;hp=f9c2e3a1d83b2e1e200321f96358ff3050300a15;hpb=84aeb02284d2abaea4b3361879bb621a1a3782f5;p=evince.git diff --git a/libview/ev-view.c b/libview/ev-view.c index f9c2e3a1..8a5ac5f8 100644 --- a/libview/ev-view.c +++ b/libview/ev-view.c @@ -2784,25 +2784,28 @@ static void ev_view_size_request_continuous_dual_page (EvView *view, GtkRequisition *requisition) { - int max_width; gint n_pages; - GtkBorder border; - - ev_view_get_max_page_size (view, &max_width, NULL); - compute_border (view, max_width, max_width, &border); n_pages = ev_document_get_n_pages (view->document) + 1; - - requisition->width = (max_width + border.left + border.right) * 2 + (view->spacing * 3); get_page_y_offset (view, n_pages, &requisition->height); - if (view->sizing_mode == EV_SIZING_FIT_WIDTH) { - requisition->width = 1; - } else if (view->sizing_mode == EV_SIZING_BEST_FIT) { - requisition->width = 1; - /* FIXME: This could actually be set on one page docs or docs - * with a strange aspect ratio. */ - /* requisition->height = 1;*/ + switch (view->sizing_mode) { + case EV_SIZING_FIT_WIDTH: + case EV_SIZING_BEST_FIT: + requisition->width = 1; + + break; + case EV_SIZING_FREE: { + gint max_width; + GtkBorder border; + + ev_view_get_max_page_size (view, &max_width, NULL); + compute_border (view, max_width, max_width, &border); + requisition->width = (max_width + border.left + border.right) * 2 + (view->spacing * 3); + } + break; + default: + g_assert_not_reached (); } } @@ -2810,24 +2813,28 @@ static void ev_view_size_request_continuous (EvView *view, GtkRequisition *requisition) { - int max_width; - int n_pages; - GtkBorder border; + gint n_pages; - ev_view_get_max_page_size (view, &max_width, NULL); n_pages = ev_document_get_n_pages (view->document); - compute_border (view, max_width, max_width, &border); - - requisition->width = max_width + (view->spacing * 2) + border.left + border.right; get_page_y_offset (view, n_pages, &requisition->height); - if (view->sizing_mode == EV_SIZING_FIT_WIDTH) { - requisition->width = 1; - } else if (view->sizing_mode == EV_SIZING_BEST_FIT) { - requisition->width = 1; - /* FIXME: This could actually be set on one page docs or docs - * with a strange aspect ratio. */ - /* requisition->height = 1;*/ + switch (view->sizing_mode) { + case EV_SIZING_FIT_WIDTH: + case EV_SIZING_BEST_FIT: + requisition->width = 1; + + break; + case EV_SIZING_FREE: { + gint max_width; + GtkBorder border; + + ev_view_get_max_page_size (view, &max_width, NULL); + compute_border (view, max_width, max_width, &border); + requisition->width = max_width + (view->spacing * 2) + border.left + border.right; + } + break; + default: + g_assert_not_reached (); } } @@ -2838,6 +2845,13 @@ ev_view_size_request_dual_page (EvView *view, GtkBorder border; gint width, height; + if (view->sizing_mode == EV_SIZING_BEST_FIT) { + requisition->width = 1; + requisition->height = 1; + + return; + } + /* Find the largest of the two. */ ev_view_get_page_size (view, view->current_page, @@ -2854,17 +2868,9 @@ ev_view_size_request_dual_page (EvView *view, } compute_border (view, width, height, &border); - requisition->width = ((width + border.left + border.right) * 2) + - (view->spacing * 3); - requisition->height = (height + border.top + border.bottom) + - (view->spacing * 2); - - if (view->sizing_mode == EV_SIZING_FIT_WIDTH) { - requisition->width = 1; - } else if (view->sizing_mode == EV_SIZING_BEST_FIT) { - requisition->width = 1; - requisition->height = 1; - } + requisition->width = view->sizing_mode == EV_SIZING_FIT_WIDTH ? 1 : + ((width + border.left + border.right) * 2) + (view->spacing * 3); + requisition->height = (height + border.top + border.bottom) + (view->spacing * 2); } static void @@ -2874,19 +2880,19 @@ ev_view_size_request_single_page (EvView *view, GtkBorder border; gint width, height; + if (view->sizing_mode == EV_SIZING_BEST_FIT) { + requisition->width = 1; + requisition->height = 1; + + return; + } + ev_view_get_page_size (view, view->current_page, &width, &height); compute_border (view, width, height, &border); - requisition->width = width + border.left + border.right + (2 * view->spacing); + requisition->width = view->sizing_mode == EV_SIZING_FIT_WIDTH ? 1 : + width + border.left + border.right + (2 * view->spacing); requisition->height = height + border.top + border.bottom + (2 * view->spacing); - - if (view->sizing_mode == EV_SIZING_FIT_WIDTH) { - requisition->width = 1; - requisition->height = height + border.top + border.bottom + (2 * view->spacing); - } else if (view->sizing_mode == EV_SIZING_BEST_FIT) { - requisition->width = 1; - requisition->height = 1; - } } static void @@ -5264,7 +5270,7 @@ ev_view_inverted_colors_changed_cb (EvDocumentModel *model, inverted_colors = ev_document_model_get_inverted_colors (model); ev_pixbuf_cache_set_inverted_colors (view->pixbuf_cache, inverted_colors); - gtk_widget_queue_resize (GTK_WIDGET (view)); + gtk_widget_queue_draw (GTK_WIDGET (view)); } } @@ -5658,14 +5664,7 @@ zoom_for_size_fit_width (gdouble doc_width, int target_width, int target_height) { - double scale; - - scale = (double)target_width / doc_width; - - if (doc_height * scale > target_height) - scale = (double)target_width / doc_width; - - return scale; + return (double)target_width / doc_width; } static double @@ -5674,14 +5673,7 @@ zoom_for_size_fit_height (gdouble doc_width, int target_width, int target_height) { - double scale; - - scale = (double)target_height / doc_height; - - if (doc_width * scale > target_width) - scale = (double)target_height / doc_height; - - return scale; + return (double)target_height / doc_height; } static double @@ -5696,11 +5688,6 @@ zoom_for_size_best_fit (gdouble doc_width, w_scale = (double)target_width / doc_width; h_scale = (double)target_height / doc_height; - if (doc_height * w_scale > target_height) - w_scale = (double)target_width / doc_width; - if (doc_width * h_scale > target_width) - h_scale = (double)target_height / doc_height; - return MIN (w_scale, h_scale); }