gtk+ r20916 - in trunk: . gtk
- From: tml svn gnome org
- To: svn-commits-list gnome org
- Subject: gtk+ r20916 - in trunk: . gtk
- Date: Wed, 30 Jul 2008 09:52:42 +0000 (UTC)
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]