Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarlos Garcia Campos <carlosgc@gnome.org>2009-08-21 10:56:35 (GMT)
committer Carlos Garcia Campos <carlosgc@gnome.org>2009-09-15 13:56:02 (GMT)
commit8f8663bd6503f53ad78c68aefe44800575959944 (patch)
treed8742a67c47e6cc205f024b20e7c246080499e8c
parent6965a51a28f76d0a669d0d1c9fdc089e6cf46c7d (diff)
Remove zoom-invalid signal from EvView
It was used by EvView when sizing mode was best-fit or fit-width to request the window for its content size. This is not needed at all, since we already call size_allocate on parent class. GtkScrolledWindow takes into account the shadow type and scrollbars visibility in its size_allocate method, so we can just take the allocation returned to calculate the zoom in case of best-fit or fit-width.
-rw-r--r--libview/ev-view-private.h1
-rw-r--r--libview/ev-view.c131
-rw-r--r--libview/ev-view.h5
-rw-r--r--previewer/ev-previewer-window.c43
-rw-r--r--shell/ev-window.c40
5 files changed, 49 insertions, 171 deletions
diff --git a/libview/ev-view-private.h b/libview/ev-view-private.h
index abef629..2f01f72 100644
--- a/libview/ev-view-private.h
+++ b/libview/ev-view-private.h
@@ -218,7 +218,6 @@ struct _EvViewClass {
void (*binding_activated) (EvView *view,
GtkScrollType scroll,
gboolean horizontal);
- void (*zoom_invalid) (EvView *view);
void (*handle_link) (EvView *view,
EvLink *link);
void (*external_link) (EvView *view,
diff --git a/libview/ev-view.c b/libview/ev-view.c
index f9d8ae8..b2fb610 100644
--- a/libview/ev-view.c
+++ b/libview/ev-view.c
@@ -63,7 +63,6 @@ enum {
enum {
SIGNAL_BINDING_ACTIVATED,
- SIGNAL_ZOOM_INVALID,
SIGNAL_HANDLE_LINK,
SIGNAL_EXTERNAL_LINK,
SIGNAL_POPUP_MENU,
@@ -244,42 +243,33 @@ static void ev_view_init (EvView
static double zoom_for_size_fit_width (gdouble doc_width,
gdouble doc_height,
int target_width,
- int target_height,
- int vsb_width);
+ int target_height);
static double zoom_for_size_fit_height (gdouble doc_width,
gdouble doc_height,
int target_width,
- int target_height,
- int vsb_height);
+ int target_height);
static double zoom_for_size_best_fit (gdouble doc_width,
gdouble doc_height,
int target_width,
- int target_height,
- int vsb_width,
- int hsb_width);
+ int target_height);
+static void ev_view_zoom_for_size (EvView *view,
+ int width,
+ int height);
static void ev_view_zoom_for_size_presentation (EvView *view,
int width,
int height);
static void ev_view_zoom_for_size_continuous_and_dual_page (EvView *view,
int width,
- int height,
- int vsb_width,
- int hsb_height);
+ int height);
static void ev_view_zoom_for_size_continuous (EvView *view,
int width,
- int height,
- int vsb_width,
- int hsb_height);
+ int height);
static void ev_view_zoom_for_size_dual_page (EvView *view,
int width,
- int height,
- int vsb_width,
- int hsb_height);
+ int height);
static void ev_view_zoom_for_size_single_page (EvView *view,
int width,
- int height,
- int vsb_width,
- int hsb_height);
+ int height);
/*** Cursors ***/
static GdkCursor* ev_view_create_invisible_cursor (void);
static void ev_view_set_cursor (EvView *view,
@@ -1419,7 +1409,7 @@ goto_fitr_dest (EvView *view, EvLinkDest *dest)
zoom = zoom_for_size_best_fit (ev_link_dest_get_right (dest) - left,
ev_link_dest_get_bottom (dest) - top,
ev_view_get_width (view),
- ev_view_get_height (view), 0, 0);
+ ev_view_get_height (view));
ev_view_set_sizing_mode (view, EV_SIZING_FREE);
ev_view_set_zoom (view, zoom, FALSE);
@@ -1453,7 +1443,7 @@ goto_fitv_dest (EvView *view, EvLinkDest *dest)
zoom = zoom_for_size_fit_height (doc_width - doc_point.x , doc_height,
ev_view_get_width (view),
- ev_view_get_height (view), 0);
+ ev_view_get_height (view));
ev_view_set_sizing_mode (view, EV_SIZING_FREE);
ev_view_set_zoom (view, zoom, FALSE);
@@ -1485,7 +1475,7 @@ goto_fith_dest (EvView *view, EvLinkDest *dest)
zoom = zoom_for_size_fit_width (doc_width, top,
ev_view_get_width (view),
- ev_view_get_height (view), 0);
+ ev_view_get_height (view));
ev_view_set_sizing_mode (view, EV_SIZING_FIT_WIDTH);
ev_view_set_zoom (view, zoom, FALSE);
@@ -1508,8 +1498,9 @@ goto_fit_dest (EvView *view, EvLinkDest *dest)
page = ev_link_dest_get_page (dest);
ev_document_get_page_size (view->document, page, &doc_width, &doc_height);
- zoom = zoom_for_size_best_fit (doc_width, doc_height, ev_view_get_width (view),
- ev_view_get_height (view), 0, 0);
+ zoom = zoom_for_size_best_fit (doc_width, doc_height,
+ ev_view_get_width (view),
+ ev_view_get_height (view));
ev_view_set_sizing_mode (view, EV_SIZING_BEST_FIT);
ev_view_set_zoom (view, zoom, FALSE);
@@ -2811,7 +2802,9 @@ ev_view_size_allocate (GtkWidget *widget,
if (view->sizing_mode == EV_SIZING_FIT_WIDTH ||
view->sizing_mode == EV_SIZING_BEST_FIT) {
- g_signal_emit (view, signals[SIGNAL_ZOOM_INVALID], 0);
+ ev_view_zoom_for_size (view,
+ allocation->width,
+ allocation->height);
ev_view_size_request (widget, &widget->requisition);
}
@@ -4621,14 +4614,6 @@ ev_view_class_init (EvViewClass *class)
G_TYPE_NONE, 2,
GTK_TYPE_SCROLL_TYPE,
G_TYPE_BOOLEAN);
-
- signals[SIGNAL_ZOOM_INVALID] = g_signal_new ("zoom-invalid",
- G_TYPE_FROM_CLASS (object_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (EvViewClass, zoom_invalid),
- NULL, NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE, 0, G_TYPE_NONE);
signals[SIGNAL_HANDLE_LINK] = g_signal_new ("handle-link",
G_TYPE_FROM_CLASS (object_class),
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
@@ -5456,15 +5441,14 @@ static double
zoom_for_size_fit_width (gdouble doc_width,
gdouble doc_height,
int target_width,
- int target_height,
- int vsb_width)
+ int target_height)
{
double scale;
scale = (double)target_width / doc_width;
if (doc_height * scale > target_height)
- scale = (double) (target_width - vsb_width) / doc_width;
+ scale = (double)target_width / doc_width;
return scale;
}
@@ -5473,15 +5457,14 @@ static double
zoom_for_size_fit_height (gdouble doc_width,
gdouble doc_height,
int target_width,
- int target_height,
- int vsb_height)
+ int target_height)
{
double scale;
scale = (double)target_height / doc_height;
if (doc_width * scale > target_width)
- scale = (double) (target_height - vsb_height) / doc_height;
+ scale = (double)target_height / doc_height;
return scale;
}
@@ -5490,9 +5473,7 @@ static double
zoom_for_size_best_fit (gdouble doc_width,
gdouble doc_height,
int target_width,
- int target_height,
- int vsb_width,
- int hsb_width)
+ int target_height)
{
double w_scale;
double h_scale;
@@ -5501,9 +5482,9 @@ zoom_for_size_best_fit (gdouble doc_width,
h_scale = (double)target_height / doc_height;
if (doc_height * w_scale > target_height)
- w_scale = (double) (target_width - vsb_width) / doc_width;
+ w_scale = (double)target_width / doc_width;
if (doc_width * h_scale > target_width)
- h_scale = (double) (target_height - hsb_width) / doc_height;
+ h_scale = (double)target_height / doc_height;
return MIN (w_scale, h_scale);
}
@@ -5518,16 +5499,14 @@ ev_view_zoom_for_size_presentation (EvView *view,
gdouble scale;
get_doc_page_size (view, view->current_page, &doc_width, &doc_height);
- scale = zoom_for_size_best_fit (doc_width, doc_height, width, height, 0, 0);
+ scale = zoom_for_size_best_fit (doc_width, doc_height, width, height);
ev_view_set_zoom (view, scale, FALSE);
}
static void
ev_view_zoom_for_size_continuous_and_dual_page (EvView *view,
- int width,
- int height,
- int vsb_width,
- int hsb_height)
+ int width,
+ int height)
{
gdouble doc_width, doc_height;
GtkBorder border;
@@ -5548,13 +5527,10 @@ ev_view_zoom_for_size_continuous_and_dual_page (EvView *view,
width -= (2 * (border.left + border.right) + 3 * view->spacing);
height -= (border.top + border.bottom + 2 * view->spacing - 1);
- /* FIXME: We really need to calculate the overall height here, not the
- * page height. We assume there's always a vertical scrollbar for
- * now. We need to fix this. */
if (view->sizing_mode == EV_SIZING_FIT_WIDTH)
- scale = zoom_for_size_fit_width (doc_width, doc_height, width - vsb_width, height, 0);
+ scale = zoom_for_size_fit_width (doc_width, doc_height, width, height);
else if (view->sizing_mode == EV_SIZING_BEST_FIT)
- scale = zoom_for_size_best_fit (doc_width, doc_height, width - vsb_width, height, 0, hsb_height);
+ scale = zoom_for_size_best_fit (doc_width, doc_height, width, height);
else
g_assert_not_reached ();
@@ -5564,9 +5540,7 @@ ev_view_zoom_for_size_continuous_and_dual_page (EvView *view,
static void
ev_view_zoom_for_size_continuous (EvView *view,
int width,
- int height,
- int vsb_width,
- int hsb_height)
+ int height)
{
gdouble doc_width, doc_height;
GtkBorder border;
@@ -5586,13 +5560,10 @@ ev_view_zoom_for_size_continuous (EvView *view,
width -= (border.left + border.right + 2 * view->spacing);
height -= (border.top + border.bottom + 2 * view->spacing - 1);
- /* FIXME: We really need to calculate the overall height here, not the
- * page height. We assume there's always a vertical scrollbar for
- * now. We need to fix this. */
if (view->sizing_mode == EV_SIZING_FIT_WIDTH)
- scale = zoom_for_size_fit_width (doc_width, doc_height, width - vsb_width, height, 0);
+ scale = zoom_for_size_fit_width (doc_width, doc_height, width, height);
else if (view->sizing_mode == EV_SIZING_BEST_FIT)
- scale = zoom_for_size_best_fit (doc_width, doc_height, width - vsb_width, height, 0, hsb_height);
+ scale = zoom_for_size_best_fit (doc_width, doc_height, width, height);
else
g_assert_not_reached ();
@@ -5602,9 +5573,7 @@ ev_view_zoom_for_size_continuous (EvView *view,
static void
ev_view_zoom_for_size_dual_page (EvView *view,
int width,
- int height,
- int vsb_width,
- int hsb_height)
+ int height)
{
GtkBorder border;
gdouble doc_width, doc_height;
@@ -5631,9 +5600,9 @@ ev_view_zoom_for_size_dual_page (EvView *view,
height -= (border.top + border.bottom + 2 * view->spacing);
if (view->sizing_mode == EV_SIZING_FIT_WIDTH)
- scale = zoom_for_size_fit_width (doc_width, doc_height, width, height, vsb_width);
+ scale = zoom_for_size_fit_width (doc_width, doc_height, width, height);
else if (view->sizing_mode == EV_SIZING_BEST_FIT)
- scale = zoom_for_size_best_fit (doc_width, doc_height, width, height, vsb_width, hsb_height);
+ scale = zoom_for_size_best_fit (doc_width, doc_height, width, height);
else
g_assert_not_reached ();
@@ -5643,9 +5612,7 @@ ev_view_zoom_for_size_dual_page (EvView *view,
static void
ev_view_zoom_for_size_single_page (EvView *view,
int width,
- int height,
- int vsb_width,
- int hsb_height)
+ int height)
{
gdouble doc_width, doc_height;
GtkBorder border;
@@ -5660,21 +5627,19 @@ ev_view_zoom_for_size_single_page (EvView *view,
height -= (border.top + border.bottom + 2 * view->spacing);
if (view->sizing_mode == EV_SIZING_FIT_WIDTH)
- scale = zoom_for_size_fit_width (doc_width, doc_height, width, height, vsb_width);
+ scale = zoom_for_size_fit_width (doc_width, doc_height, width, height);
else if (view->sizing_mode == EV_SIZING_BEST_FIT)
- scale = zoom_for_size_best_fit (doc_width, doc_height, width, height, vsb_width, hsb_height);
+ scale = zoom_for_size_best_fit (doc_width, doc_height, width, height);
else
g_assert_not_reached ();
ev_view_set_zoom (view, scale, FALSE);
}
-void
-ev_view_set_zoom_for_size (EvView *view,
- int width,
- int height,
- int vsb_width,
- int hsb_height)
+static void
+ev_view_zoom_for_size (EvView *view,
+ int width,
+ int height)
{
g_return_if_fail (EV_IS_VIEW (view));
g_return_if_fail (view->sizing_mode == EV_SIZING_FIT_WIDTH ||
@@ -5688,13 +5653,13 @@ ev_view_set_zoom_for_size (EvView *view,
if (view->presentation)
ev_view_zoom_for_size_presentation (view, width, height);
else if (view->continuous && view->dual_page)
- ev_view_zoom_for_size_continuous_and_dual_page (view, width, height, vsb_width, hsb_height);
+ ev_view_zoom_for_size_continuous_and_dual_page (view, width, height);
else if (view->continuous)
- ev_view_zoom_for_size_continuous (view, width, height, vsb_width, hsb_height);
+ ev_view_zoom_for_size_continuous (view, width, height);
else if (view->dual_page)
- ev_view_zoom_for_size_dual_page (view, width, height, vsb_width, hsb_height);
+ ev_view_zoom_for_size_dual_page (view, width, height);
else
- ev_view_zoom_for_size_single_page (view, width, height, vsb_width, hsb_height);
+ ev_view_zoom_for_size_single_page (view, width, height);
}
/*** Find ***/
diff --git a/libview/ev-view.h b/libview/ev-view.h
index 2ff3aef..d9b5127 100644
--- a/libview/ev-view.h
+++ b/libview/ev-view.h
@@ -94,11 +94,6 @@ void ev_view_zoom_out (EvView *view);
void ev_view_set_zoom (EvView *view,
double factor,
gboolean relative);
-void ev_view_set_zoom_for_size (EvView *view,
- int width,
- int height,
- int vsb_width,
- int hsb_height);
double ev_view_get_zoom (EvView *view);
void ev_view_set_screen_dpi (EvView *view,
gdouble dpi);
diff --git a/previewer/ev-previewer-window.c b/previewer/ev-previewer-window.c
index 686fb0d..c406a22 100644
--- a/previewer/ev-previewer-window.c
+++ b/previewer/ev-previewer-window.c
@@ -71,42 +71,6 @@ get_screen_dpi (GtkWindow *window)
return (xdpi + ydpi) / 2.0;
}
-static void
-ev_previewer_window_set_view_size (EvPreviewerWindow *window)
-{
- gint width, height;
- GtkRequisition vsb_requisition;
- GtkRequisition hsb_requisition;
- gint scrollbar_spacing;
-
- if (!window->view)
- return;
-
- /* Calculate the width available for the content */
- width = window->swindow->allocation.width;
- height = window->swindow->allocation.height;
-
- if (gtk_scrolled_window_get_shadow_type (GTK_SCROLLED_WINDOW (window->swindow)) == GTK_SHADOW_IN) {
- width -= 2 * GTK_WIDGET (window->view)->style->xthickness;
- height -= 2 * GTK_WIDGET (window->view)->style->ythickness;
- }
-
- gtk_widget_size_request (GTK_SCROLLED_WINDOW (window->swindow)->vscrollbar,
- &vsb_requisition);
- gtk_widget_size_request (GTK_SCROLLED_WINDOW (window->swindow)->hscrollbar,
- &hsb_requisition);
- gtk_widget_style_get (window->swindow,
- "scrollbar_spacing",
- &scrollbar_spacing,
- NULL);
-
- ev_view_set_zoom_for_size (window->view,
- MAX (1, width),
- MAX (1, height),
- vsb_requisition.width + scrollbar_spacing,
- hsb_requisition.height + scrollbar_spacing);
-}
-
#if GTKUNIXPRINT_ENABLED
static void
ev_previewer_window_error_dialog_run (EvPreviewerWindow *window,
@@ -163,7 +127,6 @@ ev_previewer_window_zoom_best_fit (GtkToggleAction *action,
{
if (gtk_toggle_action_get_active (action)) {
ev_view_set_sizing_mode (window->view, EV_SIZING_BEST_FIT);
- ev_previewer_window_set_view_size (window);
} else {
ev_view_set_sizing_mode (window->view, EV_SIZING_FREE);
}
@@ -175,7 +138,6 @@ ev_previewer_window_zoom_page_width (GtkToggleAction *action,
{
if (gtk_toggle_action_get_active (action)) {
ev_view_set_sizing_mode (window->view, EV_SIZING_FIT_WIDTH);
- ev_previewer_window_set_view_size (window);
} else {
ev_view_set_sizing_mode (window->view, EV_SIZING_FREE);
}
@@ -478,10 +440,7 @@ ev_previewer_window_init (EvPreviewerWindow *window)
g_signal_connect (window->view, "notify::sizing-mode",
G_CALLBACK (view_sizing_mode_changed),
window);
- g_signal_connect_swapped (window->view, "zoom_invalid",
- G_CALLBACK (ev_previewer_window_set_view_size),
- window);
-
+
ev_view_set_screen_dpi (window->view, get_screen_dpi (GTK_WINDOW (window)));
ev_view_set_continuous (window->view, FALSE);
ev_view_set_sizing_mode (window->view, EV_SIZING_FIT_WIDTH);
diff --git a/shell/ev-window.c b/shell/ev-window.c
index 078cb9c..7593fd8 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -3965,43 +3965,6 @@ save_sizing_mode (EvWindow *window)
enum_value->value_nick);
}
-static void
-ev_window_set_view_size (EvWindow *window)
-{
- gint width, height;
- GtkRequisition vsb_requisition;
- GtkRequisition hsb_requisition;
- gint scrollbar_spacing;
- GtkWidget *scrolled_window = window->priv->scrolled_window;
-
- if (!window->priv->view)
- return;
-
- /* Calculate the width available for the content */
- width = scrolled_window->allocation.width;
- height = scrolled_window->allocation.height;
-
- if (gtk_scrolled_window_get_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window)) == GTK_SHADOW_IN) {
- width -= 2 * window->priv->view->style->xthickness;
- height -= 2 * window->priv->view->style->ythickness;
- }
-
- gtk_widget_size_request (GTK_SCROLLED_WINDOW (scrolled_window)->vscrollbar,
- &vsb_requisition);
- gtk_widget_size_request (GTK_SCROLLED_WINDOW (scrolled_window)->hscrollbar,
- &hsb_requisition);
- gtk_widget_style_get (scrolled_window,
- "scrollbar_spacing",
- &scrollbar_spacing,
- NULL);
-
- ev_view_set_zoom_for_size (EV_VIEW (window->priv->view),
- MAX (1, width),
- MAX (1, height),
- vsb_requisition.width + scrollbar_spacing,
- hsb_requisition.height + scrollbar_spacing);
-}
-
static void
ev_window_sizing_mode_changed_cb (EvView *view, GParamSpec *pspec,
EvWindow *ev_window)
@@ -6087,9 +6050,6 @@ ev_window_init (EvWindow *ev_window)
g_signal_connect_object (ev_window->priv->view, "handle-link",
G_CALLBACK (view_handle_link_cb),
ev_window, 0);
- g_signal_connect_swapped (ev_window->priv->view, "zoom_invalid",
- G_CALLBACK (ev_window_set_view_size),
- ev_window);
g_signal_connect_object (ev_window->priv->view,
"popup",
G_CALLBACK (view_menu_popup_cb),