diff options
author | Marco Pesenti Gritti <marco@gnome.org> | 2005-02-24 12:47:27 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@src.gnome.org> | 2005-02-24 12:47:27 (GMT) |
commit | 6d7f9e7cf7678b48828be0722ae2e998ce85b7a7 (patch) | |
tree | 3ac765c1e0b92a5be0ce6a637d8577a0525d3eda /shell/ev-window.c | |
parent | 810d8b0808591ebb17d4913da4d20e489e9b8cde (diff) |
Separate page/scale notifications
2005-02-24 Marco Pesenti Gritti <marco@gnome.org>
* backend/ev-document.c: (ev_document_class_init),
(ev_document_page_changed), (ev_document_scale_changed):
* backend/ev-document.h:
Separate page/scale notifications
* pdf/xpdf/pdf-document.cc:
Emit the new signals.
Do not display the pdf page in _render, do it
when scale/page are requested.
* ps/ps-document.c: (ps_document_set_zoom),
(ps_document_widget_event):
* ps/ps-document.h:
Emit the new signals.
* shell/ev-view.c: (ev_view_size_request), (expose_bin_window),
(ev_view_init), (page_changed_callback), (scale_changed_callback),
(ev_view_set_document), (ev_view_zoom), (ev_view_zoom_in),
(ev_view_zoom_out), (size_to_zoom_factor), (ev_view_set_size):
* shell/ev-view.h:
* shell/ev-window.c: (ev_window_cmd_view_normal_size),
(ev_window_cmd_view_page_width), (size_allocate_cb),
(ev_window_set_sizing_mode):
Rework sizing to be pixel based.
There are bugs but should be already way better.
Diffstat (limited to 'shell/ev-window.c')
-rw-r--r-- | shell/ev-window.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/shell/ev-window.c b/shell/ev-window.c index df25cc2..dc88f70 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -61,6 +61,12 @@ #include "ev-stock-icons.h" typedef enum { + EV_SIZING_BEST_FIT, + EV_SIZING_FIT_WIDTH, + EV_SIZING_FREE, +} EvSizingMode; + +typedef enum { PAGE_MODE_SINGLE_PAGE, PAGE_MODE_CONTINUOUS_PAGE, PAGE_MODE_PASSWORD, @@ -1367,7 +1373,7 @@ ev_window_cmd_view_normal_size (GtkAction *action, EvWindow *ev_window) { g_return_if_fail (EV_IS_WINDOW (ev_window)); - ev_view_normal_size (EV_VIEW (ev_window->priv->view)); + ev_view_set_size (EV_VIEW (ev_window->priv->view), -1, -1); } static void @@ -1417,9 +1423,7 @@ ev_window_cmd_view_page_width (GtkAction *action, EvWindow *ev_window) ev_window_set_sizing_mode (ev_window, EV_SIZING_FIT_WIDTH); - ev_view_fit_width (EV_VIEW (ev_window->priv->view), - width, height, - vsb_requisition.width + scrollbar_spacing); + ev_view_set_size (EV_VIEW (ev_window->priv->view), width, height); } static void @@ -1487,7 +1491,7 @@ size_allocate_cb (GtkWidget *scrolled_window, height -= 2 * ev_window->priv->view->style->ythickness; if (ev_window->priv->sizing_mode == EV_SIZING_BEST_FIT) { - ev_view_best_fit (EV_VIEW (ev_window->priv->view), + ev_view_set_size (EV_VIEW (ev_window->priv->view), MAX (1, width), MAX (1, height)); } else if (ev_window->priv->sizing_mode == EV_SIZING_FIT_WIDTH) { gtk_widget_size_request (GTK_SCROLLED_WINDOW (ev_window->priv->scrolled_window)->vscrollbar, @@ -1495,9 +1499,8 @@ size_allocate_cb (GtkWidget *scrolled_window, gtk_widget_style_get (ev_window->priv->scrolled_window, "scrollbar_spacing", &scrollbar_spacing, NULL); - ev_view_fit_width (EV_VIEW (ev_window->priv->view), - width, height, - vsb_requisition.width + scrollbar_spacing); + ev_view_set_size (EV_VIEW (ev_window->priv->view), + width - vsb_requisition.width - scrollbar_spacing, -1); } } @@ -1542,7 +1545,6 @@ ev_window_set_sizing_mode (EvWindow *ev_window, break; } - ev_view_set_mode (EV_VIEW (ev_window->priv->view), sizing_mode); update_sizing_buttons (ev_window); } |