Index: gtk/gtkprintoperation.c
===================================================================
--- gtk/gtkprintoperation.c	(revision 18932)
+++ gtk/gtkprintoperation.c	(working copy)
@@ -506,6 +506,25 @@ gtk_print_operation_create_custom_widget
   return NULL;
 }
 
+static gboolean
+gtk_print_operation_paginate (GtkPrintOperation *operation, 
+			      GtkPrintContext   *context)
+{
+  return TRUE;
+}
+
+static gboolean
+paginate_accumulator (GSignalInvocationHint *ihint,
+		      GValue                *return_accu,
+		      const GValue          *handler_return,
+		      gpointer               dummy)
+{
+  *return_accu = *handler_return;
+  /* Stop signal emission on first invocation, so if it's a callback then
+   * the default handler won't run. */
+  return FALSE;
+}
+
 static void
 gtk_print_operation_done (GtkPrintOperation       *operation,
                           GtkPrintOperationResult  result)
@@ -545,6 +564,7 @@ gtk_print_operation_class_init (GtkPrint
   gobject_class->get_property = gtk_print_operation_get_property;
   gobject_class->finalize = gtk_print_operation_finalize;
  
+  class->paginate = gtk_print_operation_paginate; 
   class->preview = gtk_print_operation_preview_handler; 
   class->create_custom_widget = gtk_print_operation_create_custom_widget;
   class->done = gtk_print_operation_done;
@@ -607,7 +627,7 @@ gtk_print_operation_class_init (GtkPrint
    *
    * Emitted after the #GtkPrintOperation::begin-print signal, but before 
    * the actual rendering starts. It keeps getting emitted until it 
-   * returns %FALSE. 
+   * returns %TRUE.
    *
    * The ::paginate signal is intended to be used for paginating the document
    * in small chunks, to avoid blocking the user interface for a long
@@ -628,7 +648,7 @@ gtk_print_operation_class_init (GtkPrint
 		  G_TYPE_FROM_CLASS (gobject_class),
 		  G_SIGNAL_RUN_LAST,
 		  G_STRUCT_OFFSET (GtkPrintOperationClass, paginate),
-		  _gtk_boolean_handled_accumulator, NULL,
+		  paginate_accumulator, NULL,
 		  _gtk_marshal_BOOLEAN__OBJECT,
 		  G_TYPE_BOOLEAN, 1, GTK_TYPE_PRINT_CONTEXT);
 
@@ -2080,14 +2100,13 @@ print_pages_idle (gpointer user_data)
 	  goto out;
 	}
       
-      if (g_signal_has_handler_pending (data->op, signals[PAGINATE], 0, FALSE))
-	{
-	  gboolean paginated = 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;
+      }
 
       /* Initialize parts of PrintPagesData that depend on nr_of_pages
        */
