Index: gtk/gtkprintoperation.c
===================================================================
--- gtk/gtkprintoperation.c	(revision 17566)
+++ gtk/gtkprintoperation.c	(working copy)
@@ -489,6 +489,13 @@ gtk_print_operation_preview_handler (Gtk
   return TRUE;
 }
 
+static gboolean
+gtk_print_operation_paginate (GtkPrintOperation *operation,
+			      GtkPrintContext   *context)
+{
+  return TRUE;
+}
+
 static GtkWidget *
 gtk_print_operation_create_custom_widget (GtkPrintOperation *operation)
 {
@@ -523,7 +530,8 @@ gtk_print_operation_class_init (GtkPrint
  
   class->preview = gtk_print_operation_preview_handler; 
   class->create_custom_widget = gtk_print_operation_create_custom_widget;
-  
+  class->paginate = gtk_print_operation_paginate;
+
   g_type_class_add_private (gobject_class, sizeof (GtkPrintOperationPrivate));
 
   /**
@@ -2024,6 +2032,8 @@ print_pages_idle (gpointer user_data)
 
   if (priv->status == GTK_PRINT_STATUS_PREPARING)
     {
+      gboolean paginated;
+
       if (!data->initialized)
 	{
 	  data->initialized = TRUE;
@@ -2047,15 +2057,10 @@ print_pages_idle (gpointer user_data)
 
 	  goto out;
 	}
-      
-      if (g_signal_has_handler_pending (data->op, signals[PAGINATE], 0, FALSE))
-	{
-	  gboolean paginated = FALSE;
 
-	  g_signal_emit (data->op, signals[PAGINATE], 0, priv->print_context, &paginated);
-	  if (!paginated)
-	    goto out;
-	}
+      g_signal_emit (data->op, signals[PAGINATE], 0, priv->print_context, &paginated);
+      if (!paginated)
+	goto out;
 
       /* FIXME handle this better */
       if (priv->nr_of_pages == 0)
