gtk+ r20916 - in trunk: . gtk



Author: tml
Date: Wed Jul 30 09:52:42 2008
New Revision: 20916
URL: http://svn.gnome.org/viewvc/gtk+?rev=20916&view=rev

Log:
2008-07-30  Tor Lillqvist  <tml novell com>

	* gtk/gtkprintoperation-win32.c: Fix problems in handling custom
	paper sizes. The DEVMODE::dmPaperWidth and dmPaperLength are in
	tenths of a millimeter, and the RECT passed to CreateEnhMetaFile()
	is in hundredths of a millimeter. Patch by Sven Neumann.



Modified:
   trunk/ChangeLog
   trunk/gtk/gtkprintoperation-win32.c

Modified: trunk/gtk/gtkprintoperation-win32.c
==============================================================================
--- trunk/gtk/gtkprintoperation-win32.c	(original)
+++ trunk/gtk/gtkprintoperation-win32.c	Wed Jul 30 09:52:42 2008
@@ -439,6 +439,8 @@
     {
       devmode->dmPaperSize = DMPAPER_USER;
       devmode->dmFields |= DM_PAPERWIDTH | DM_PAPERLENGTH;
+
+      /* Lengths in DEVMODE are in tenths of a millimeter */
       devmode->dmPaperWidth = gtk_paper_size_get_width (paper_size, GTK_UNIT_MM) * 10.0;
       devmode->dmPaperLength = gtk_paper_size_get_height (paper_size, GTK_UNIT_MM) * 10.0;
     }
@@ -672,10 +674,12 @@
 				     -1, NULL, NULL, NULL);
       if (form_name == NULL || form_name[0] == 0)
 	form_name = g_strdup (_("Custom size"));
+
+      /* Lengths in DEVMODE are in tenths of a millimeter */
       paper_size = gtk_paper_size_new_custom (form_name,
 					      form_name,
-					      devmode->dmPaperWidth * 10.0,
-					      devmode->dmPaperLength * 10.0,
+					      devmode->dmPaperWidth / 10.0,
+					      devmode->dmPaperLength / 10.0,
 					      GTK_UNIT_MM);
       gtk_print_settings_set_paper_size (settings, paper_size);
       gtk_paper_size_free (paper_size);
@@ -954,8 +958,10 @@
 	{
 	  devmode->dmPaperSize = DMPAPER_USER;
 	  devmode->dmFields |= DM_PAPERWIDTH | DM_PAPERLENGTH;
-	  devmode->dmPaperWidth = gtk_paper_size_get_width (paper_size, GTK_UNIT_MM) / 10.0;
-	  devmode->dmPaperLength = gtk_paper_size_get_height (paper_size, GTK_UNIT_MM) / 10.0;
+
+          /* Lengths in DEVMODE are in tenths of a millimeter */
+	  devmode->dmPaperWidth = gtk_paper_size_get_width (paper_size, GTK_UNIT_MM) * 10.0;
+	  devmode->dmPaperLength = gtk_paper_size_get_height (paper_size, GTK_UNIT_MM) * 10.0;
 	}
       gtk_paper_size_free (paper_size);
     }
@@ -1726,7 +1732,6 @@
 							      gchar            **target)
 {
   GtkPaperSize *paper_size;
-  double w, h;
   HDC metafile_dc;
   RECT rect;
   char *template;
@@ -1745,13 +1750,12 @@
   g_free (filename);
 
   paper_size = gtk_page_setup_get_paper_size (page_setup);
-  w = gtk_paper_size_get_width (paper_size, GTK_UNIT_MM);
-  h = gtk_paper_size_get_height (paper_size, GTK_UNIT_MM);
-  
+
+  /* The rectangle dimensions are given in hundredths of a millimeter */
   rect.left = 0;
-  rect.right = w*100;
+  rect.right = 100.0 * gtk_paper_size_get_width (paper_size, GTK_UNIT_MM);
   rect.top = 0;
-  rect.bottom = h*100;
+  rect.bottom = 100.0 * gtk_paper_size_get_height (paper_size, GTK_UNIT_MM);
   
   metafile_dc = CreateEnhMetaFileW (NULL, filename_utf16,
 				    &rect, L"Gtk+\0Print Preview\0\0");



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]