Index: gtk/gtkprintoperation.c
===================================================================
--- gtk/gtkprintoperation.c	(revision 18910)
+++ gtk/gtkprintoperation.c	(working copy)
@@ -2080,11 +2080,29 @@
 	  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);
+        {
+          GValue instance_and_params[2] = { { 0, }, };
+          GValue return_value = { 0, };
+          gboolean paginated;
+          
+	  g_value_init (&instance_and_params[0], GTK_TYPE_PRINT_OPERATION);
+	  g_value_init (&instance_and_params[1], GTK_TYPE_PRINT_CONTEXT);
+	  g_value_init (&return_value, G_TYPE_BOOLEAN);
+
+          g_value_set_object (&instance_and_params[0], data->op);
+          g_value_set_object (&instance_and_params[1], priv->print_context);
+          g_value_set_boolean (&return_value, TRUE);
+
+	  g_signal_emitv (instance_and_params, signals[PAGINATE], 0, &return_value);
+	  paginated = g_value_get_boolean (&return_value);
+
+          g_print ("emit paginate...result %d\n", paginated);
+
+          g_value_unset (&instance_and_params[0]);
+          g_value_unset (&instance_and_params[1]);
+          g_value_unset (&return_value);
+
 	  if (!paginated)
 	    goto out;
 	}
