X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=libview%2Fev-view-presentation.c;h=14cd0dabacb4f31d960a5a7b14076ff4de3011d4;hb=8832b1004e86b6a4aee4798d8cc2a40f0291cb65;hp=49c9c976185da139b051849b87e18399dd6511c5;hpb=70d212c3072eefb0e522166ed877ca4d71addbf1;p=evince.git diff --git a/libview/ev-view-presentation.c b/libview/ev-view-presentation.c index 49c9c976..14cd0dab 100644 --- a/libview/ev-view-presentation.c +++ b/libview/ev-view-presentation.c @@ -37,6 +37,7 @@ enum { PROP_0, PROP_DOCUMENT, PROP_CURRENT_PAGE, + PROP_PAGE, PROP_ROTATION, PROP_INVERTED_COLORS }; @@ -491,7 +492,7 @@ ev_view_presentation_update_current_page (EvViewPresentation *pview, } pview->current_page = page; - g_object_notify (G_OBJECT(pview), "current_page"); + g_object_notify (G_OBJECT(pview), "page"); if (pview->page_cache) ev_page_cache_set_page_range (pview->page_cache, page, page); @@ -1234,6 +1235,26 @@ ev_view_presentation_motion_notify_event (GtkWidget *widget, return FALSE; } +static void +ev_view_presentation_resize_cb (EvViewPresentation *pview, + gpointer data) + { + GdkScreen *screen = gtk_widget_get_screen (GTK_WIDGET(pview)); + GdkRectangle monitor; + gint monitor_num; + + monitor_num = gdk_screen_get_monitor_at_window (screen, gtk_widget_get_window (GTK_WIDGET(pview))); + gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor); + if(!(pview->monitor_width == monitor.width)||!(pview->monitor_height = monitor.height)) { + pview->monitor_width = monitor.width; + pview->monitor_height = monitor.height; + + pview->scale = 0; + ev_view_presentation_reset_jobs (pview); + ev_view_presentation_update_current_page (pview, pview->current_page); + } +} + static gboolean init_presentation (GtkWidget *widget) { @@ -1242,6 +1263,9 @@ init_presentation (GtkWidget *widget) GdkRectangle monitor; gint monitor_num; + g_signal_connect_swapped(G_OBJECT(widget), "size-allocate", + G_CALLBACK(ev_view_presentation_resize_cb),G_OBJECT(pview)); + monitor_num = gdk_screen_get_monitor_at_window (screen, gtk_widget_get_window (widget)); gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor); pview->monitor_width = monitor.width; @@ -1368,6 +1392,9 @@ ev_view_presentation_set_property (GObject *object, case PROP_CURRENT_PAGE: pview->current_page = g_value_get_uint (value); break; + case PROP_PAGE: + pview->current_page = g_value_get_uint (value); + break; case PROP_ROTATION: ev_view_presentation_set_rotation (pview, g_value_get_uint (value)); break; @@ -1388,7 +1415,7 @@ ev_view_presentation_get_property (GObject *object, EvViewPresentation *pview = EV_VIEW_PRESENTATION (object); switch (prop_id) { - case PROP_CURRENT_PAGE: + case PROP_PAGE: g_value_set_uint (value, ev_view_presentation_get_current_page (pview)); break; case PROP_ROTATION: @@ -1455,13 +1482,21 @@ ev_view_presentation_class_init (EvViewPresentationClass *klass) EV_TYPE_DOCUMENT, G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (gobject_class, + PROP_PAGE, + g_param_spec_uint ("page", + "Current Page", + "The current page", + 0, G_MAXUINT, 0, + G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_CURRENT_PAGE, g_param_spec_uint ("current_page", "Current Page", "The current page", 0, G_MAXUINT, 0, - G_PARAM_READWRITE)); + G_PARAM_WRITABLE | + G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (gobject_class, PROP_ROTATION, g_param_spec_uint ("rotation",