rpms/gtk2/devel filesystemref.patch, NONE, 1.1 gtk2-landscape-pdf-print.patch, NONE, 1.1 gtk2-preview.patch, NONE, 1.1 gtk2-remove-connecting-reason.patch, NONE, 1.1 gtk2-rotate-layout.patch, NONE, 1.1 gtk2.spec, 1.408, 1.409

Matthias Clasen mclasen at fedoraproject.org
Wed Nov 11 02:40:41 UTC 2009


Author: mclasen

Update of /cvs/pkgs/rpms/gtk2/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv25488

Modified Files:
	gtk2.spec 
Added Files:
	filesystemref.patch gtk2-landscape-pdf-print.patch 
	gtk2-preview.patch gtk2-remove-connecting-reason.patch 
	gtk2-rotate-layout.patch 
Log Message:
Copy F12 changes


filesystemref.patch:
 gtkfilechooserbutton.c  |   12 +++++++++---
 gtkfilechooserdefault.c |   18 ++++++++++--------
 gtkfilesystem.c         |    9 +++++++++
 3 files changed, 28 insertions(+), 11 deletions(-)

--- NEW FILE filesystemref.patch ---
diff -u -r pristine/gtk/gtkfilechooserbutton.c gtk+-2.18.3/gtk/gtkfilechooserbutton.c
--- pristine/gtk/gtkfilechooserbutton.c	2009-10-09 01:00:43.000000000 -0400
+++ gtk+-2.18.3/gtk/gtkfilechooserbutton.c	2009-11-10 19:25:55.257874597 -0500
@@ -1776,10 +1776,16 @@
 	      GFile *base_file;
 
 	      base_file = _gtk_file_system_volume_get_root (volume);
-	      if (base_file != NULL && !g_file_is_native (base_file))
+	      if (base_file != NULL)
 		{
-		  _gtk_file_system_volume_free (volume);
-		  continue;
+                  if (!g_file_is_native (base_file))
+                    {
+                      g_object_unref (base_file);
+		      _gtk_file_system_volume_free (volume);
+		      continue;
+                    }
+                  else
+                    g_object_unref (base_file);
 		}
 	    }
 	}
diff -u -r pristine/gtk/gtkfilechooserdefault.c gtk+-2.18.3/gtk/gtkfilechooserdefault.c
--- pristine/gtk/gtkfilechooserdefault.c	2009-10-16 10:35:45.000000000 -0400
+++ gtk+-2.18.3/gtk/gtkfilechooserdefault.c	2009-11-10 19:25:49.165873229 -0500
@@ -828,7 +828,7 @@
   if (cancellable)
     g_cancellable_cancel (cancellable);
 
-  if (!(shortcut_type == SHORTCUT_TYPE_FILE || 
+  if (!(shortcut_type == SHORTCUT_TYPE_FILE ||
 	shortcut_type == SHORTCUT_TYPE_VOLUME) ||
       !col_data)
     return;
@@ -840,12 +840,10 @@
       volume = col_data;
       _gtk_file_system_volume_free (volume);
     }
-  else
+  if (shortcut_type == SHORTCUT_TYPE_FILE)
     {
       GFile *file;
 
-      g_assert (shortcut_type == SHORTCUT_TYPE_FILE);
-
       file = col_data;
       g_object_unref (file);
     }
@@ -2094,7 +2092,10 @@
                 }
 
               if (!base_is_native)
-                continue;
+                {
+                  _gtk_file_system_volume_free (volume);
+                  continue;
+                }
 	    }
 	}
 
@@ -3587,9 +3588,7 @@
       if (shortcut_type == SHORTCUT_TYPE_SEPARATOR)
 	return FALSE;
       else if (shortcut_type == SHORTCUT_TYPE_VOLUME)
-	{
-	  return FALSE;
-	}
+        return FALSE;
       else if (shortcut_type == SHORTCUT_TYPE_FILE)
 	{
 	  GFile *file;
@@ -10794,6 +10793,9 @@
 	 			       "standard::type",
 				       shortcuts_activate_get_info_cb, data);
 	}
+
+      if (volume)
+        _gtk_file_system_volume_free (volume);
     }
   else if (shortcut_type == SHORTCUT_TYPE_SEARCH)
     {
diff -u -r pristine/gtk/gtkfilesystem.c gtk+-2.18.3/gtk/gtkfilesystem.c
--- pristine/gtk/gtkfilesystem.c	2009-06-04 15:18:04.000000000 -0400
+++ gtk+-2.18.3/gtk/gtkfilesystem.c	2009-11-10 19:20:13.192873941 -0500
@@ -468,6 +468,8 @@
 
 	  priv->volumes = g_slist_prepend (priv->volumes, g_object_ref (drive));
 	}
+
+      g_object_unref (drive);
     }
 
   g_list_free (drives);
@@ -499,6 +501,8 @@
           /* see comment above in why we add an icon for a volume */
           priv->volumes = g_slist_prepend (priv->volumes, g_object_ref (volume));
         }
+
+      g_object_unref (volume);
     }
 
   /* add mounts that has no volume (/etc/mtab mounts, ftp, sftp,...) */
@@ -520,11 +524,13 @@
        */
       if (mount_referenced_by_volume_activation_root (volumes, mount))
         {
+          g_object_unref (mount);
           continue;
         }
 
       /* show this mount */
       priv->volumes = g_slist_prepend (priv->volumes, g_object_ref (mount));
+      g_object_unref (mount);
     }
 
   g_list_free (volumes);
@@ -604,6 +610,7 @@
   get_volumes_list (GTK_FILE_SYSTEM (file_system));
 
   list = g_slist_copy (priv->volumes);
+  g_slist_foreach (list, (GFunc)g_object_ref, NULL);
 
 #ifndef G_OS_WIN32
   /* Prepend root volume */
@@ -1025,6 +1032,8 @@
 
   if (error)
     g_error_free (error);
+
+  _gtk_file_system_volume_free (volume);
 }
 
 GCancellable *

gtk2-landscape-pdf-print.patch:
 gtk/gtkprintcontext.c                            |   31 ++++++++++++++++++++++-
 gtk/gtkprintoperation-private.h                  |   11 ++++----
 gtk/gtkprintoperation-unix.c                     |   13 ++++-----
 gtk/gtkprintoperation.c                          |   13 ++++-----
 modules/printbackends/file/gtkprintbackendfile.c |   14 +++++++++-
 5 files changed, 61 insertions(+), 21 deletions(-)

--- NEW FILE gtk2-landscape-pdf-print.patch ---
--- gtk+-2.18.3/gtk/gtkprintcontext.c	2009-10-09 07:00:44.000000000 +0200
+++ gtk+-2.18.3/gtk/gtkprintcontext.c	2009-11-05 11:57:31.000000000 +0100
@@ -155,7 +155,6 @@ gtk_print_context_set_cairo_context (Gtk
 	       context->pixels_per_unit_y);
 }
 
-
 void
 _gtk_print_context_rotate_according_to_orientation (GtkPrintContext *context)
 {
@@ -204,6 +203,36 @@ _gtk_print_context_rotate_according_to_o
 }
 
 void
+_gtk_print_context_reverse_according_to_orientation (GtkPrintContext *context)
+{
+  cairo_t *cr = context->cr;
+  cairo_matrix_t matrix;
+  gdouble width, height;
+
+  width = gtk_page_setup_get_paper_width (context->page_setup, GTK_UNIT_INCH);
+  width = width * context->surface_dpi_x / context->pixels_per_unit_x;
+  height = gtk_page_setup_get_paper_height (context->page_setup, GTK_UNIT_INCH);
+  height = height * context->surface_dpi_y / context->pixels_per_unit_y;
+
+  switch (gtk_page_setup_get_orientation (context->page_setup))
+    {
+    default:
+    case GTK_PAGE_ORIENTATION_PORTRAIT:
+    case GTK_PAGE_ORIENTATION_LANDSCAPE:
+      break;
+    case GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT:
+    case GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE:
+      cairo_translate (cr, width, height);
+      cairo_matrix_init (&matrix,
+			 -1,  0,
+			  0, -1,
+			  0,  0);
+      cairo_transform (cr, &matrix);
+      break;
+    }
+}
+
+void
 _gtk_print_context_translate_into_margin (GtkPrintContext *context)
 {
   GtkPrintOperationPrivate *priv;
--- gtk+-2.18.3/gtk/gtkprintoperation.c	2009-11-05 12:02:52.000000000 +0100
+++ gtk+-2.18.3/gtk/gtkprintoperation.c	2009-11-05 12:01:40.000000000 +0100
@@ -1960,14 +1960,11 @@ pdf_start_page (GtkPrintOperation *op,
 		GtkPrintContext   *print_context,
 		GtkPageSetup      *page_setup)
 {
-  GtkPaperSize *paper_size;
   cairo_surface_t *surface = op->priv->platform_data;
   gdouble w, h;
 
-  paper_size = gtk_page_setup_get_paper_size (page_setup);
-
-  w = gtk_paper_size_get_width (paper_size, GTK_UNIT_POINTS);
-  h = gtk_paper_size_get_height (paper_size, GTK_UNIT_POINTS);
+  w = gtk_page_setup_get_paper_width (page_setup, GTK_UNIT_POINTS);
+  h = gtk_page_setup_get_paper_height (page_setup, GTK_UNIT_POINTS);
   
   cairo_pdf_surface_set_size (surface, w, h);
 }
@@ -2056,7 +2053,7 @@ run_pdf (GtkPrintOperation  *op,
   priv->manual_reverse = FALSE;
   priv->manual_page_set = GTK_PAGE_SET_ALL;
   priv->manual_scale = 1.0;
-  priv->manual_orientation = TRUE;
+  priv->manual_orientation = FALSE;
   priv->manual_number_up = 1;
   priv->manual_number_up_layout = GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM;
   
@@ -2400,6 +2397,8 @@ common_render_page (GtkPrintOperation *o
   
   if (priv->manual_orientation)
     _gtk_print_context_rotate_according_to_orientation (print_context);
+  else
+    _gtk_print_context_reverse_according_to_orientation (print_context);
 
   if (priv->manual_number_up > 1)
     {
@@ -2934,7 +2933,7 @@ print_pages (GtkPrintOperation       *op
       priv->manual_reverse = gtk_print_settings_get_reverse (priv->print_settings);
       priv->manual_page_set = gtk_print_settings_get_page_set (priv->print_settings);
       priv->manual_scale = gtk_print_settings_get_scale (priv->print_settings) / 100.0;
-      priv->manual_orientation = TRUE;
+      priv->manual_orientation = FALSE;
       priv->manual_number_up = gtk_print_settings_get_number_up (priv->print_settings);
       priv->manual_number_up_layout = gtk_print_settings_get_number_up_layout (priv->print_settings);
     }
--- gtk+-2.18.3/gtk/gtkprintoperation-private.h	2009-10-09 07:00:44.000000000 +0200
+++ gtk+-2.18.3/gtk/gtkprintoperation-private.h	2009-11-05 11:58:07.000000000 +0100
@@ -135,11 +135,12 @@ void _gtk_print_operation_set_status (Gt
 
 /* GtkPrintContext private functions: */
 
-GtkPrintContext *_gtk_print_context_new                             (GtkPrintOperation *op);
-void             _gtk_print_context_set_page_setup                  (GtkPrintContext   *context,
-								     GtkPageSetup      *page_setup);
-void             _gtk_print_context_translate_into_margin           (GtkPrintContext   *context);
-void             _gtk_print_context_rotate_according_to_orientation (GtkPrintContext   *context);
+GtkPrintContext *_gtk_print_context_new                              (GtkPrintOperation *op);
+void             _gtk_print_context_set_page_setup                   (GtkPrintContext   *context,
+								      GtkPageSetup      *page_setup);
+void             _gtk_print_context_translate_into_margin            (GtkPrintContext   *context);
+void             _gtk_print_context_rotate_according_to_orientation  (GtkPrintContext   *context);
+void             _gtk_print_context_reverse_according_to_orientation (GtkPrintContext *context);
 
 G_END_DECLS
 
--- gtk+-2.18.3/gtk/gtkprintoperation-unix.c	2009-11-05 12:02:52.000000000 +0100
+++ gtk+-2.18.3/gtk/gtkprintoperation-unix.c	2009-11-05 12:00:08.000000000 +0100
@@ -109,6 +109,8 @@ unix_start_page (GtkPrintOperation *op,
          }
       else if (type == CAIRO_SURFACE_TYPE_PDF)
         {
+          w = gtk_page_setup_get_paper_width (page_setup, GTK_UNIT_POINTS);
+          h = gtk_page_setup_get_paper_height (page_setup, GTK_UNIT_POINTS);
           cairo_pdf_surface_set_size (op_unix->surface, w, h);
         }
     }
@@ -771,7 +773,6 @@ _gtk_print_operation_platform_backend_cr
 {
   gchar *filename;
   gint fd;
-  GtkPaperSize *paper_size;
   gdouble w, h;
   cairo_surface_t *surface;
   static cairo_user_data_key_t key;
@@ -787,9 +788,8 @@ _gtk_print_operation_platform_backend_cr
 
   *target = filename;
   
-  paper_size = gtk_page_setup_get_paper_size (page_setup);
-  w = gtk_paper_size_get_width (paper_size, GTK_UNIT_POINTS);
-  h = gtk_paper_size_get_height (paper_size, GTK_UNIT_POINTS);
+  w = gtk_page_setup_get_paper_width (page_setup, GTK_UNIT_POINTS);
+  h = gtk_page_setup_get_paper_height (page_setup, GTK_UNIT_POINTS);
     
   *dpi_x = *dpi_y = 72;
   surface = cairo_pdf_surface_create_for_stream (write_preview, GINT_TO_POINTER (fd), w, h);
@@ -822,9 +822,8 @@ _gtk_print_operation_platform_backend_re
   GtkPaperSize *paper_size;
   gdouble w, h;
   
-  paper_size = gtk_page_setup_get_paper_size (page_setup);
-  w = gtk_paper_size_get_width (paper_size, GTK_UNIT_POINTS);
-  h = gtk_paper_size_get_height (paper_size, GTK_UNIT_POINTS);
+  w = gtk_page_setup_get_paper_width (page_setup, GTK_UNIT_POINTS);
+  h = gtk_page_setup_get_paper_height (page_setup, GTK_UNIT_POINTS);
   cairo_pdf_surface_set_size (surface, w, h);
 }
 
--- gtk+-2.18.3/modules/printbackends/file/gtkprintbackendfile.c	2009-10-09 07:00:45.000000000 +0200
+++ gtk+-2.18.3/modules/printbackends/file/gtkprintbackendfile.c	2009-11-05 12:02:32.000000000 +0100
@@ -698,6 +698,7 @@ file_printer_prepare_for_print (GtkPrint
 				GtkPageSetup     *page_setup)
 {
   gdouble scale;
+  OutputFormat format;
 
   print_job->print_pages = gtk_print_settings_get_print_pages (settings);
   print_job->page_ranges = NULL;
@@ -719,7 +720,18 @@ file_printer_prepare_for_print (GtkPrint
     print_job->scale = scale/100.0;
 
   print_job->page_set = gtk_print_settings_get_page_set (settings);
-  print_job->rotate_to_orientation = TRUE;
+
+  format = format_from_settings (settings);
+  switch (format)
+    {
+      case FORMAT_PDF:
+        print_job->rotate_to_orientation = FALSE;
+        break;
+      case FORMAT_PS:
+      case FORMAT_SVG:
+        print_job->rotate_to_orientation = TRUE;
+        break;
+    }
 }
 
 static GList *

gtk2-preview.patch:
 gtkprintoperation-unix.c |   26 ++++++-
 gtkprintoperation.c      |  159 +++++++++++++++++++++++++++--------------------
 gtkprintsettings.c       |    2 
 3 files changed, 116 insertions(+), 71 deletions(-)

--- NEW FILE gtk2-preview.patch ---
--- gtk+-2.18.3/gtk/gtkprintoperation.c	2009-10-09 07:00:44.000000000 +0200
+++ gtk+-2.18.3/gtk/gtkprintoperation.c	2009-11-02 12:05:55.000000000 +0100
@@ -78,11 +78,15 @@ enum 
 
 static guint signals[LAST_SIGNAL] = { 0 };
 static int job_nr = 0;
+typedef struct _PrintPagesData PrintPagesData;
 
-static void          preview_iface_init (GtkPrintOperationPreviewIface *iface);
-static GtkPageSetup *create_page_setup  (GtkPrintOperation             *op);
-static void          common_render_page (GtkPrintOperation             *op,
-					 gint                           page_nr);
+static void          preview_iface_init      (GtkPrintOperationPreviewIface *iface);
+static GtkPageSetup *create_page_setup       (GtkPrintOperation             *op);
+static void          common_render_page      (GtkPrintOperation             *op,
+					      gint                           page_nr);
+static void          increment_page_sequence (PrintPagesData *data);
+static void          prepare_data            (PrintPagesData *data);
+static void          clamp_page_ranges       (PrintPagesData *data);
 
 
 G_DEFINE_TYPE_WITH_CODE (GtkPrintOperation, gtk_print_operation, G_TYPE_OBJECT,
@@ -260,13 +264,23 @@ preview_start_page (GtkPrintOperation *o
 		    GtkPrintContext   *print_context,
 		    GtkPageSetup      *page_setup)
 {
-  g_signal_emit_by_name (op, "got-page-size", print_context, page_setup);
+  if ((op->priv->manual_number_up < 2) ||
+      (op->priv->page_position % op->priv->manual_number_up == 0))
+    g_signal_emit_by_name (op, "got-page-size", print_context, page_setup);
 }
 
 static void
 preview_end_page (GtkPrintOperation *op,
 		  GtkPrintContext   *print_context)
 {
+  cairo_t *cr;
+
+  cr = gtk_print_context_get_cairo_context (print_context);
+
+  if ((op->priv->manual_number_up < 2) ||
+      ((op->priv->page_position + 1) % op->priv->manual_number_up == 0) ||
+      (op->priv->page_position == op->priv->nr_of_pages_to_print - 1))
+    cairo_show_page (cr);
 }
 
 static void
@@ -411,6 +425,31 @@ gtk_print_operation_get_property (GObjec
     }
 }
 
+struct _PrintPagesData
+{
+  GtkPrintOperation *op;
+  gint uncollated_copies;
+  gint collated_copies;
+  gint uncollated, collated, total;
+
+  gint range, num_ranges;
+  GtkPageRange *ranges;
+  GtkPageRange one_range;
+
+  gint page;
+  gint sheet;
+  gint first_position, last_position;
+  gint first_sheet;
+  gint num_of_sheets;
+  gint *pages;
+
+  GtkWidget *progress;
+ 
+  gboolean initialized;
+  gboolean is_preview;
+  gboolean done;
+};
+
 typedef struct
 {
   GtkPrintOperationPreview *preview;
@@ -418,8 +457,8 @@ typedef struct
   GtkWindow *parent;
   cairo_surface_t *surface;
   gchar *filename;
-  guint page_nr;
   gboolean wait;
+  PrintPagesData *pages_data;
 } PreviewOp;
 
 static void
@@ -441,6 +480,10 @@ preview_print_idle_done (gpointer data)
 
   gtk_print_operation_preview_end_preview (pop->preview);
 
+  g_object_unref (pop->pages_data->op);
+  g_free (pop->pages_data->pages);
+  g_free (pop->pages_data);
+
   g_object_unref (op);
   g_free (pop);
 }
@@ -450,9 +493,8 @@ preview_print_idle (gpointer data)
 {
   PreviewOp *pop;
   GtkPrintOperation *op;
-  gboolean retval = TRUE;
-  cairo_t *cr;
   GtkPrintOperationPrivate *priv; 
+  gboolean done = FALSE;
 
   pop = (PreviewOp *) data;
   op = GTK_PRINT_OPERATION (pop->preview);
@@ -461,24 +503,23 @@ preview_print_idle (gpointer data)
 
   if (priv->page_drawing_state == GTK_PAGE_DRAWING_STATE_READY)
     {
-      /* TODO: print out sheets not pages and follow ranges */
-      if (pop->page_nr >= op->priv->nr_of_pages)
-        retval = FALSE;
-
-      if (pop->page_nr > 0)
+      if (!pop->pages_data->initialized)
         {
-          cr = gtk_print_context_get_cairo_context (pop->print_context);
-          _gtk_print_operation_platform_backend_preview_end_page (op, pop->surface, cr);
+          pop->pages_data->initialized = TRUE;
+          prepare_data (pop->pages_data);
         }
-
-      if (retval)
+      else
         {
-          gtk_print_operation_preview_render_page (pop->preview, pop->page_nr);
-          pop->page_nr++;
+          increment_page_sequence (pop->pages_data);
+
+          if (!pop->pages_data->done)
+            gtk_print_operation_preview_render_page (pop->preview, pop->pages_data->page);
+          else
+            done = priv->page_drawing_state == GTK_PAGE_DRAWING_STATE_READY;
         }
     }
 
-  return retval;
+  return !done;
 }
 
 static void
@@ -502,7 +543,6 @@ preview_ready (GtkPrintOperationPreview 
                GtkPrintContext          *context,
 	       PreviewOp                *pop)
 {
-  pop->page_nr = 0;
   pop->print_context = context;
 
   g_object_ref (preview);
@@ -529,6 +569,9 @@ gtk_print_operation_preview_handler (Gtk
   pop->filename = NULL;
   pop->preview = preview;
   pop->parent = parent;
+  pop->pages_data = g_new0 (PrintPagesData, 1);
+  pop->pages_data->op = g_object_ref (GTK_PRINT_OPERATION (preview));
+  pop->pages_data->is_preview = TRUE;
 
   page_setup = gtk_print_context_get_page_setup (context);
 
@@ -2026,30 +2069,6 @@ run_pdf (GtkPrintOperation  *op,
   return GTK_PRINT_OPERATION_RESULT_APPLY; 
 }
 
-typedef struct
-{
-  GtkPrintOperation *op;
-  gint uncollated_copies;
-  gint collated_copies;
-  gint uncollated, collated, total;
-
-  gint range, num_ranges;
-  GtkPageRange *ranges;
-  GtkPageRange one_range;
-
-  gint page;
-  gint sheet;
-  gint first_position, last_position;
-  gint first_sheet;
-  gint num_of_sheets;
-  gint *pages;
-
-  GtkWidget *progress;
- 
-  gboolean initialized;
-  gboolean is_preview;
-  gboolean done;
-} PrintPagesData;
 
 static void
 clamp_page_ranges (PrintPagesData *data)
@@ -2127,7 +2146,8 @@ increment_page_sequence (PrintPagesData 
         inc = 1;
 
       /* changing sheet */
-      if ((priv->page_position + 1) % priv->manual_number_up == 0 ||
+      if (priv->manual_number_up < 2 ||
+          (priv->page_position + 1) % priv->manual_number_up == 0 ||
           priv->page_position == data->last_position ||
           priv->page_position == priv->nr_of_pages_to_print - 1)
         {
@@ -2579,27 +2599,27 @@ prepare_data (PrintPagesData *data)
 
   priv = data->op->priv;
 
+  if (priv->manual_collation)
+    {
+      data->uncollated_copies = priv->manual_num_copies;
+      data->collated_copies = 1;
+    }
+  else
+    {
+      data->uncollated_copies = 1;
+      data->collated_copies = priv->manual_num_copies;
+    }
+
   if (!data->initialized)
     {
       data->initialized = TRUE;
       page_setup = create_page_setup (data->op);
-      _gtk_print_context_set_page_setup (priv->print_context, 
-                                 page_setup);
+      _gtk_print_context_set_page_setup (priv->print_context,
+                                         page_setup);
       g_object_unref (page_setup);
 
       g_signal_emit (data->op, signals[BEGIN_PRINT], 0, priv->print_context);
 
-      if (priv->manual_collation)
-        {
-          data->uncollated_copies = priv->manual_num_copies;
-          data->collated_copies = 1;
-        }
-      else
-        {
-          data->uncollated_copies = 1;
-          data->collated_copies = priv->manual_num_copies;
-        }
-
       return;
     }
 
@@ -2670,10 +2690,15 @@ prepare_data (PrintPagesData *data)
   data->collated = 0;
   data->uncollated = 0;
 
-  if (priv->nr_of_pages_to_print % priv->manual_number_up == 0)
-    data->num_of_sheets = priv->nr_of_pages_to_print / priv->manual_number_up;
+  if (priv->manual_number_up > 1)
+    {
+      if (priv->nr_of_pages_to_print % priv->manual_number_up == 0)
+        data->num_of_sheets = priv->nr_of_pages_to_print / priv->manual_number_up;
+      else
+        data->num_of_sheets = priv->nr_of_pages_to_print / priv->manual_number_up + 1;
+    }
   else
-    data->num_of_sheets = priv->nr_of_pages_to_print / priv->manual_number_up + 1;
+    data->num_of_sheets = priv->nr_of_pages_to_print;
 
   if (priv->manual_reverse)
     {
@@ -2906,12 +2931,12 @@ print_pages (GtkPrintOperation       *op
 							      &priv->num_page_ranges);
       priv->manual_num_copies = 1;
       priv->manual_collation = FALSE;
-      priv->manual_reverse = FALSE;
-      priv->manual_page_set = GTK_PAGE_SET_ALL;
-      priv->manual_scale = 1.0;
+      priv->manual_reverse = gtk_print_settings_get_reverse (priv->print_settings);
+      priv->manual_page_set = gtk_print_settings_get_page_set (priv->print_settings);
+      priv->manual_scale = gtk_print_settings_get_scale (priv->print_settings) / 100.0;
       priv->manual_orientation = TRUE;
-      priv->manual_number_up = 1;
-      priv->manual_number_up_layout = GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM;
+      priv->manual_number_up = gtk_print_settings_get_number_up (priv->print_settings);
+      priv->manual_number_up_layout = gtk_print_settings_get_number_up_layout (priv->print_settings);
     }
   
   priv->print_pages_idle_id = gdk_threads_add_idle_full (G_PRIORITY_DEFAULT_IDLE + 10,
--- gtk+-2.18.3/gtk/gtkprintoperation-unix.c	2009-10-09 07:00:44.000000000 +0200
+++ gtk+-2.18.3/gtk/gtkprintoperation-unix.c	2009-11-02 12:05:52.000000000 +0100
@@ -207,7 +207,7 @@ _gtk_print_operation_platform_backend_la
   gchar *cmd;
   gchar *preview_cmd;
   GtkSettings *settings;
-  GtkPrintSettings *print_settings;
+  GtkPrintSettings *print_settings = NULL;
   GtkPageSetup *page_setup;
   GKeyFile *key_file = NULL;
   gchar *data = NULL;
@@ -235,8 +235,28 @@ _gtk_print_operation_platform_backend_la
 
   key_file = g_key_file_new ();
   
-  print_settings = gtk_print_operation_get_print_settings (op);
-  gtk_print_settings_to_key_file (print_settings, key_file, NULL);
+  print_settings = gtk_print_settings_copy (gtk_print_operation_get_print_settings (op));
+
+  if (print_settings != NULL)
+    {
+      gtk_print_settings_set_reverse (print_settings, FALSE);
+      gtk_print_settings_set_page_set (print_settings, GTK_PAGE_SET_ALL);
+      gtk_print_settings_set_scale (print_settings, 1.0);
+      gtk_print_settings_set_number_up (print_settings, 1);
+      gtk_print_settings_set_number_up_layout (print_settings, GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM);
+
+      /*  These removals are neccessary because cups-* settings have higher priority
+       *  than normal settings.
+       */
+      gtk_print_settings_unset (print_settings, "cups-reverse");
+      gtk_print_settings_unset (print_settings, "cups-page-set");
+      gtk_print_settings_unset (print_settings, "cups-scale");
+      gtk_print_settings_unset (print_settings, "cups-number-up");
+      gtk_print_settings_unset (print_settings, "cups-number-up-layout");
+
+      gtk_print_settings_to_key_file (print_settings, key_file, NULL);
+      g_object_unref (print_settings);
+    }
 
   page_setup = gtk_print_context_get_page_setup (op->priv->print_context);
   gtk_page_setup_to_key_file (page_setup, key_file, NULL);
--- gtk+-2.18.3/gtk/gtkprintsettings.c	2009-10-09 07:00:44.000000000 +0200
+++ gtk+-2.18.3/gtk/gtkprintsettings.c	2009-11-02 12:05:52.000000000 +0100
@@ -1152,7 +1152,7 @@ gtk_print_settings_set_n_copies (GtkPrin
 gint
 gtk_print_settings_get_number_up (GtkPrintSettings *settings)
 {
-  return gtk_print_settings_get_int (settings, GTK_PRINT_SETTINGS_NUMBER_UP);
+  return gtk_print_settings_get_int_with_default (settings, GTK_PRINT_SETTINGS_NUMBER_UP, 1);
 }
 
 /**

gtk2-remove-connecting-reason.patch:
 gtkprintbackendcups.c |    2 --
 1 file changed, 2 deletions(-)

--- NEW FILE gtk2-remove-connecting-reason.patch ---
--- gtk+-2.18.3/modules/printbackends/cups/gtkprintbackendcups.c	2009-10-09 07:00:45.000000000 +0200
+++ gtk+-2.18.3/modules/printbackends/cups/gtkprintbackendcups.c	2009-11-02 11:45:39.000000000 +0100
@@ -1628,7 +1628,6 @@ cups_request_printer_list_cb (GtkPrintBa
           "media-low",
           "media-empty",
           "offline",
-          "connecting-to-device",
           "other"
         };
       static const char * reasons_descs[] =
@@ -1648,7 +1647,6 @@ cups_request_printer_list_cb (GtkPrintBa
           N_("Printer '%s' is low on paper."),
           N_("Printer '%s' is out of paper."),
           N_("Printer '%s' is currently off-line."),
-          N_("Printer '%s' may not be connected."),
           N_("There is a problem on printer '%s'.")
         };
       gboolean is_paused = FALSE;

gtk2-rotate-layout.patch:
 gtkprintbackendcups.c |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

--- NEW FILE gtk2-rotate-layout.patch ---
--- gtk+-2.18.3/modules/printbackends/cups/gtkprintbackendcups.c	2009-11-02 12:10:58.000000000 +0100
+++ gtk+-2.18.3/modules/printbackends/cups/gtkprintbackendcups.c	2009-11-02 12:11:18.000000000 +0100
@@ -4317,18 +4317,18 @@ cups_printer_prepare_for_print (GtkPrint
             break;
           case GTK_PAGE_ORIENTATION_LANDSCAPE:
             if (layout < 4)
-              layout = layout + 5 - 2 * (layout % 2);
+              layout = layout + 2 + 4 * (1 - layout / 2);
             else
-              layout = layout - 6 + 4 * (1 - (layout - 4) / 2);
+              layout = layout - 3 - 2 * (layout % 2);
             break;
           case GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT:
             layout = (layout + 3 - 2 * (layout % 2)) % 4 + 4 * (layout / 4);
             break;
           case GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE:
             if (layout < 4)
-              layout = layout + 2 + 4 * (1 - layout / 2);
+              layout = layout + 5 - 2 * (layout % 2);
             else
-              layout = layout - 3 - 2 * (layout % 2);
+              layout = layout - 6 + 4 * (1 - (layout - 4) / 2);
             break;
         }
 


Index: gtk2.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gtk2/devel/gtk2.spec,v
retrieving revision 1.408
retrieving revision 1.409
diff -u -p -r1.408 -r1.409
--- gtk2.spec	2 Nov 2009 04:22:13 -0000	1.408
+++ gtk2.spec	11 Nov 2009 02:40:40 -0000	1.409
@@ -17,7 +17,7 @@
 Summary: The GIMP ToolKit (GTK+), a library for creating GUIs for X
 Name: gtk2
 Version: %{base_version}
-Release: 16%{?dist}
+Release: 21%{?dist}
 License: LGPLv2+
 Group: System Environment/Libraries
 Source: http://download.gnome.org/sources/gtk+/2.18/gtk+-%{version}.tar.bz2
@@ -46,6 +46,14 @@ Patch8: tooltip-positioning.patch
 Patch9: iconview-hang.patch
 # https://bugzilla.gnome.org/show_bug.cgi?id=599446
 Patch10: toolbutton-assert.patch
+# http://bugzilla.redhat.com/show_bug.cgi?id=529364
+Patch11: gtk2-remove-connecting-reason.patch
+# https://bugzilla.gnome.org/show_bug.cgi?id=592582
+Patch12: gtk2-preview.patch
+Patch13: gtk2-rotate-layout.patch
+Patch14: gtk2-landscape-pdf-print.patch
+# https://bugzilla.gnome.org/show_bug.cgi?id=600992
+Patch15: filesystemref.patch
 
 BuildRequires: atk-devel >= %{atk_version}
 BuildRequires: pango-devel >= %{pango_version}
@@ -167,6 +175,11 @@ This package contains developer document
 %patch8 -p1 -b .tooltip-positioning
 %patch9 -p1 -b .iconview-hang
 %patch10 -p1 -b .toolbutton-assert
+%patch11 -p1 -b .remove-connecting-reason
+%patch12 -p1 -b .preview
+%patch13 -p1 -b .rotate-layout
+%patch14 -p1 -b .landscape-pdf-print
+%patch15 -p1 -b .filesystemref
 
 %build
 libtoolize --force --copy
@@ -180,6 +193,7 @@ if ! pkg-config --exists pangoxft ; then
 fi
 
 %configure --with-xinput=xfree 		\
+	   --enable-debug		\
 	   --disable-gtk-doc 		\
 	   --disable-rebuilds 		\
 	   --with-libjasper		\
@@ -403,6 +417,23 @@ fi
 
 
 %changelog
+* Tue Nov 10 2009 Matthias Clasen <mclasen at redhat.com> - 2.18.3-21
+- Fix refcounting issues in the filechooser that lead
+  to crashes with device hotplug (gnome #600992)
+
+* Thu Nov  5 2009 Marek Kasik <mkasik at redhat.com> - 2.18.3-20
+- Do not rotate page when printing to landscape PDF, just
+- set correct width and height
+
+* Mon Nov  2 2009 Marek Kasik <mkasik at redhat.com> - 2.18.3-19
+- Correct rotation of number-up layout when printing landscape
+
+* Mon Nov  2 2009 Marek Kasik <mkasik at redhat.com> - 2.18.3-18
+- Show correct print preview (gnome bug #592582)
+
+* Mon Nov  2 2009 Marek Kasik <mkasik at redhat.com> - 2.18.3-17
+- Remove handling of "connecting-to-device" reason (#529364)
+
 * Sat Oct 31 2009 Matthias Clasen <mclasen at redhta.com> - 2.18.3-16
 - Handle screen changes for tooltips (#531568)
 




More information about the scm-commits mailing list