X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=ps%2Fgtkgs.c;h=a710ab52bf0163fb2130c1f8ad237697a38410df;hb=cd7799a4529617f8cc5206fa242e7833018cea30;hp=ebb29f2341be7c39e6b42d8279d455ab0fc1db44;hpb=ec2aa10ab1ec9246d6c35b90f5d1df372f39c732;p=evince.git diff --git a/ps/gtkgs.c b/ps/gtkgs.c index ebb29f23..a710ab52 100644 --- a/ps/gtkgs.c +++ b/ps/gtkgs.c @@ -498,6 +498,7 @@ set_up_page(GtkGS * gs) //GdkColormap *colormap; GdkGC *fill; GdkColor white = { 0, 0xFFFF, 0xFFFF, 0xFFFF }; /* pixel, r, g, b */ + GdkColormap *colormap; #ifdef HAVE_LOCALE_H char *savelocale; @@ -518,6 +519,8 @@ set_up_page(GtkGS * gs) /* clear new pixmap (set to white) */ fill = gdk_gc_new(gs->pstarget); if(fill) { + colormap = gdk_drawable_get_colormap(gs->pstarget); + gdk_color_alloc (colormap, &white); gdk_gc_set_foreground(fill, &white); if(gs->width > 0 && gs->height > 0) { @@ -1742,6 +1745,8 @@ gtk_gs_set_zoom(GtkGS * gs, gfloat zoom) set_up_page(gs); gs->changed = TRUE; } + + gtk_gs_goto_page(gs, gs->current_page); } gfloat @@ -2033,6 +2038,7 @@ gtk_gs_set_zoom_mode(GtkGS * gs, GtkGSZoomMode zoom_mode) gs->zoom_mode = zoom_mode; gtk_gs_set_zoom(gs, 1.0); } + gtk_gs_goto_page(gs, gs->current_page); } GtkGSZoomMode @@ -2089,13 +2095,42 @@ ps_document_get_page (EvDocument *document) return gtk_gs_get_current_page (GTK_GS (document)); } +static gboolean +gtk_gs_widget_event (GtkWidget *widget, GdkEvent *event, gpointer data) +{ + GtkGS *gs = (GtkGS *) data; + + if(event->type != GDK_CLIENT_EVENT) + return FALSE; + + if (event->client.message_type == gs_class->page_atom) { + gs->busy = FALSE; + ev_document_changed (EV_DOCUMENT (gs)); + } + + return TRUE; +} + static void ps_document_set_target (EvDocument *document, - GdkDrawable *target) + GdkDrawable *target) { GtkGS *gs = GTK_GS (document); + GtkWidget *widget; + gpointer data; gs->pstarget = target; + + if (gs->pstarget) { + gdk_window_get_user_data (gs->pstarget, &data); + g_return_if_fail (GTK_IS_WIDGET (data)); + + widget = GTK_WIDGET (data); + g_signal_connect (widget, "event", + G_CALLBACK (gtk_gs_widget_event), + document); + } + gtk_gs_goto_page (gs, gs->current_page); }