forked from AuroraMiddleware/gtk
New function to cancel a running print operation.
2006-05-19 Matthias Clasen <mclasen@redhat.com> * gtk/gtk.symbols: * gtk/gtkprintoperation.h: * gtk/gtkprintoperation.c (gtk_print_operation_cancel): New function to cancel a running print operation. * gtk/gtkprintoperation-private.h (struct _GtkPrintOperationPrivate): Add a cancelled flag, use g types, use bitfields. * gtk/gtkprintoperation.c (print_pages): Clean up after the idle in the synchronous case.
This commit is contained in:
parent
fbe7b81261
commit
a59a999d7c
11
ChangeLog
11
ChangeLog
@ -1,5 +1,16 @@
|
||||
2006-05-19 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gtk/gtk.symbols:
|
||||
* gtk/gtkprintoperation.h:
|
||||
* gtk/gtkprintoperation.c (gtk_print_operation_cancel): New function
|
||||
to cancel a running print operation.
|
||||
|
||||
* gtk/gtkprintoperation-private.h (struct _GtkPrintOperationPrivate):
|
||||
Add a cancelled flag, use g types, use bitfields.
|
||||
|
||||
* gtk/gtkprintoperation.c (print_pages): Clean up after the idle
|
||||
in the synchronous case.
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_pages_allocate): Fix a
|
||||
boundary case in scrolling where a tab was not shown. (#168105,
|
||||
Hiroyuki Ikezoe, patch by Kouhei Sutou)
|
||||
|
@ -1,5 +1,16 @@
|
||||
2006-05-19 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gtk/gtk.symbols:
|
||||
* gtk/gtkprintoperation.h:
|
||||
* gtk/gtkprintoperation.c (gtk_print_operation_cancel): New function
|
||||
to cancel a running print operation.
|
||||
|
||||
* gtk/gtkprintoperation-private.h (struct _GtkPrintOperationPrivate):
|
||||
Add a cancelled flag, use g types, use bitfields.
|
||||
|
||||
* gtk/gtkprintoperation.c (print_pages): Clean up after the idle
|
||||
in the synchronous case.
|
||||
|
||||
* gtk/gtknotebook.c (gtk_notebook_pages_allocate): Fix a
|
||||
boundary case in scrolling where a tab was not shown. (#168105,
|
||||
Hiroyuki Ikezoe, patch by Kouhei Sutou)
|
||||
|
@ -1,3 +1,7 @@
|
||||
2006-05-19 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gtk/gtk-sections.txt: Additions
|
||||
|
||||
2006-05-18 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gtk/tmpl/gtkenums.sgml: Updates
|
||||
|
@ -6084,8 +6084,8 @@ gtk_print_operation_set_use_full_page
|
||||
gtk_print_operation_set_unit
|
||||
gtk_print_operation_set_show_dialog
|
||||
gtk_print_operation_set_pdf_target
|
||||
gtk_print_operation_run
|
||||
gtk_print_operation_run_async
|
||||
gtk_print_operation_cancel
|
||||
gtk_print_operation_get_status
|
||||
gtk_print_operation_get_status_string
|
||||
gtk_print_operation_is_finished
|
||||
|
@ -2701,6 +2701,7 @@ gtk_print_operation_run_async
|
||||
gtk_print_operation_get_status
|
||||
gtk_print_operation_get_status_string
|
||||
gtk_print_operation_is_finished
|
||||
gtk_print_operation_cancel
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -28,45 +28,46 @@ G_BEGIN_DECLS
|
||||
struct _GtkPrintOperationPrivate
|
||||
{
|
||||
GtkPrintStatus status;
|
||||
char *status_string;
|
||||
gchar *status_string;
|
||||
GtkPageSetup *default_page_setup;
|
||||
GtkPrintSettings *print_settings;
|
||||
char *job_name;
|
||||
int nr_of_pages;
|
||||
int current_page;
|
||||
gboolean use_full_page;
|
||||
gchar *job_name;
|
||||
gint nr_of_pages;
|
||||
gint current_page;
|
||||
GtkUnit unit;
|
||||
gboolean show_dialog;
|
||||
gboolean track_print_status;
|
||||
char *pdf_target;
|
||||
gchar *pdf_target;
|
||||
guint use_full_page : 1;
|
||||
guint show_dialog : 1;
|
||||
guint track_print_status : 1;
|
||||
guint cancelled : 1;
|
||||
|
||||
guint print_pages_idle_id;
|
||||
|
||||
/* Data for the print job: */
|
||||
cairo_surface_t *surface;
|
||||
double dpi_x, dpi_y;
|
||||
gdouble dpi_x, dpi_y;
|
||||
|
||||
GtkPrintPages print_pages;
|
||||
GtkPageRange *page_ranges;
|
||||
int num_page_ranges;
|
||||
gint num_page_ranges;
|
||||
|
||||
int manual_num_copies;
|
||||
gboolean manual_collation;
|
||||
gboolean manual_reverse;
|
||||
gboolean manual_orientation;
|
||||
gint manual_num_copies;
|
||||
guint manual_collation : 1;
|
||||
guint manual_reverse : 1;
|
||||
guint manual_orientation : 1;
|
||||
double manual_scale;
|
||||
GtkPageSet manual_page_set;
|
||||
|
||||
void *platform_data;
|
||||
gpointer platform_data;
|
||||
GDestroyNotify free_platform_data;
|
||||
|
||||
void (*start_page) (GtkPrintOperation *operation,
|
||||
GtkPrintContext *print_context,
|
||||
GtkPageSetup *page_setup);
|
||||
void (*end_page) (GtkPrintOperation *operation,
|
||||
GtkPrintContext *print_context);
|
||||
void (*end_run) (GtkPrintOperation *operation,
|
||||
gboolean wait);
|
||||
GDestroyNotify free_platform_data;
|
||||
GtkPrintContext *print_context,
|
||||
GtkPageSetup *page_setup);
|
||||
void (*end_page) (GtkPrintOperation *operation,
|
||||
GtkPrintContext *print_context);
|
||||
void (*end_run) (GtkPrintOperation *operation,
|
||||
gboolean wait);
|
||||
};
|
||||
|
||||
GtkPrintOperationResult _gtk_print_operation_platform_backend_run_dialog (GtkPrintOperation *operation,
|
||||
@ -75,15 +76,15 @@ GtkPrintOperationResult _gtk_print_operation_platform_backend_run_dialog (GtkPri
|
||||
GError **error);
|
||||
|
||||
typedef void (* GtkPrintOperationPrintFunc) (GtkPrintOperation *op,
|
||||
gboolean wait);
|
||||
gboolean wait);
|
||||
|
||||
void _gtk_print_operation_platform_backend_run_dialog_async (GtkPrintOperation *op,
|
||||
GtkWindow *parent,
|
||||
GtkPrintOperationPrintFunc print_cb);
|
||||
|
||||
void _gtk_print_operation_set_status (GtkPrintOperation *op,
|
||||
GtkPrintStatus status,
|
||||
const char *string);
|
||||
GtkPrintStatus status,
|
||||
const gchar *string);
|
||||
|
||||
/* GtkPrintContext private functions: */
|
||||
|
||||
|
@ -1347,18 +1347,15 @@ static void
|
||||
print_pages_idle_done (gpointer user_data)
|
||||
{
|
||||
PrintPagesData *data;
|
||||
GtkPrintOperationPrivate *priv;
|
||||
|
||||
data = (PrintPagesData*)user_data;
|
||||
priv = data->op->priv;
|
||||
data->op->priv->print_pages_idle_id = 0;
|
||||
|
||||
g_object_unref (data->print_context);
|
||||
g_object_unref (data->initial_page_setup);
|
||||
|
||||
g_object_unref (data->op);
|
||||
g_free (data);
|
||||
|
||||
priv->print_pages_idle_id = 0;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@ -1484,6 +1481,17 @@ print_pages_idle (gpointer user_data)
|
||||
|
||||
out:
|
||||
|
||||
if (priv->cancelled)
|
||||
{
|
||||
g_signal_emit (data->op, signals[END_PRINT], 0, data->print_context);
|
||||
|
||||
cairo_surface_finish (data->op->priv->surface);
|
||||
|
||||
_gtk_print_operation_set_status (data->op, GTK_PRINT_STATUS_FINISHED_ABORTED, NULL);
|
||||
|
||||
done = TRUE;
|
||||
}
|
||||
|
||||
GDK_THREADS_LEAVE ();
|
||||
|
||||
return !done;
|
||||
@ -1535,13 +1543,13 @@ print_pages (GtkPrintOperation *op,
|
||||
while (gtk_events_pending ())
|
||||
gtk_main_iteration ();
|
||||
}
|
||||
print_pages_idle_done (data);
|
||||
}
|
||||
else
|
||||
priv->print_pages_idle_id = g_idle_add_full (G_PRIORITY_DEFAULT_IDLE,
|
||||
print_pages_idle,
|
||||
data,
|
||||
print_pages_idle_done);
|
||||
}
|
||||
print_pages_idle_done);}
|
||||
|
||||
/**
|
||||
* gtk_print_operation_run:
|
||||
@ -1645,5 +1653,26 @@ gtk_print_operation_run_async (GtkPrintOperation *op,
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* gtk_print_operation_cancel:
|
||||
* @op: a #GtkPrintOperation
|
||||
*
|
||||
* Cancels a running print operation. This function may
|
||||
* be called from a begin-print, paginate or draw-page
|
||||
* signal handler to stop the currently running print
|
||||
* operation.
|
||||
*
|
||||
* Since: 2.10
|
||||
*/
|
||||
void
|
||||
gtk_print_operation_cancel (GtkPrintOperation *op)
|
||||
{
|
||||
g_return_if_fail (GTK_IS_PRINT_OPERATION (op));
|
||||
|
||||
op->priv->cancelled = TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#define __GTK_PRINT_OPERATION_C__
|
||||
#include "gtkaliasdef.c"
|
||||
|
@ -138,6 +138,7 @@ GtkPrintOperationResult gtk_print_operation_run (GtkPrintOper
|
||||
GtkPrintStatus gtk_print_operation_get_status (GtkPrintOperation *op);
|
||||
G_CONST_RETURN gchar * gtk_print_operation_get_status_string (GtkPrintOperation *op);
|
||||
gboolean gtk_print_operation_is_finished (GtkPrintOperation *op);
|
||||
void gtk_print_operation_cancel (GtkPrintOperation *op);
|
||||
|
||||
GtkPageSetup *gtk_print_run_page_setup_dialog (GtkWindow *parent,
|
||||
GtkPageSetup *page_setup,
|
||||
|
Loading…
Reference in New Issue
Block a user