Author: gert
Date: 2007-02-09 02:53:18 -0500 (Fri, 09 Feb 2007)
New Revision: 72531

Modified:
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PrintDialog.cs
   trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog
   
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/PrintDialogTest.cs
Log:
* PrintDialog.cs: On 1.0 profile, throw ArgumentException in RunDialog if
PrinterSettins has not been set. On 2.0 profile, initialize PrinterSettings
if not set. Fixes bug #80764. Avoid accessing current_settings field 
directly. 
* PrintDialogTest.cs: Added test for bug #80764


Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2007-02-09 03:43:12 UTC (rev 72530)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2007-02-09 07:53:18 UTC (rev 72531)
@@ -1,3 +1,10 @@
+2007-02-09  Gert Driesen  <[EMAIL PROTECTED]>
+
+       * PrintDialog.cs: On 1.0 profile, throw ArgumentException in RunDialog 
if
+       PrinterSettins has not been set. On 2.0 profile, initialize 
PrinterSettings
+       if not set. Fixes bug #80764. Avoid accessing current_settings field
+       directly.
+
 2007-02-08  Everaldo Canuto  <[EMAIL PROTECTED]>
 
        * Theme.cs: An new property MenuAccessKeysUnderlined added with default 
value

Modified: 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PrintDialog.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PrintDialog.cs   
2007-02-09 03:43:12 UTC (rev 72530)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PrintDialog.cs   
2007-02-09 07:53:18 UTC (rev 72531)
@@ -149,9 +149,9 @@
                                labelTo.Enabled = value;
                                labelFrom.Enabled = value;
 
-                               if (current_settings != null) {
-                                       txtFrom.Text = 
current_settings.FromPage.ToString ();
-                                       txtTo.Text = 
current_settings.ToPage.ToString ();
+                               if (PrinterSettings != null) {
+                                       txtFrom.Text = 
PrinterSettings.FromPage.ToString ();
+                                       txtTo.Text = 
PrinterSettings.ToPage.ToString ();
                                }
                        }
                }
@@ -164,7 +164,7 @@
 
                        set {
                                document = value;
-                               current_settings = value == null ? new 
PrinterSettings () : value.PrinterSettings;
+                               current_settings = (value == null) ? new 
PrinterSettings () : value.PrinterSettings;
                        }
                }
 
@@ -173,6 +173,10 @@
                
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
                public PrinterSettings PrinterSettings {
                        get {
+#if NET_2_0
+                               if (current_settings == null)
+                                       current_settings = new PrinterSettings 
();
+#endif
                                return current_settings;
                        }
 
@@ -180,7 +184,7 @@
                                if (value != null && value == current_settings)
                                        return;
 
-                               current_settings = value == null ? new 
PrinterSettings () : value;
+                               current_settings = (value == null) ? new 
PrinterSettings () : value;
                                document = null;
                        }
                }
@@ -221,23 +225,28 @@
 
                protected override bool RunDialog (IntPtr hwnd)
                {
-                       if (allow_some_pages && current_settings.FromPage > 
current_settings.ToPage)
+#if ONLY_1_1
+                       if (PrinterSettings == null)
+                               throw new ArgumentException ("PrintDialog needs 
a PrinterSettings object to display.");
+#endif
+
+                       if (allow_some_pages && PrinterSettings.FromPage > 
PrinterSettings.ToPage)
                                throw new ArgumentException ("FromPage out of 
range");
 
                        if (allow_some_pages) {
-                               txtFrom.Text = 
current_settings.FromPage.ToString ();
-                               txtTo.Text = current_settings.ToPage.ToString 
();
+                               txtFrom.Text = 
PrinterSettings.FromPage.ToString ();
+                               txtTo.Text = PrinterSettings.ToPage.ToString ();
                        }
 
-                       if (current_settings.PrintRange == PrintRange.SomePages 
&& allow_some_pages)
+                       if (PrinterSettings.PrintRange == PrintRange.SomePages 
&& allow_some_pages)
                                radio_pages.Checked = true;
-                       else if (current_settings.PrintRange == 
PrintRange.Selection && allow_selection)
+                       else if (PrinterSettings.PrintRange == 
PrintRange.Selection && allow_selection)
                                radio_sel.Checked = true;
                        else
                                radio_all.Checked = true;
 
-                       updown_copies.Value = current_settings.Copies == 0 ? 1 
: (int) current_settings.Copies;
-                       chkbox_collate.Checked = current_settings.Collate;
+                       updown_copies.Value = PrinterSettings.Copies == 0 ? 1 : 
(int) PrinterSettings.Copies;
+                       chkbox_collate.Checked = PrinterSettings.Collate;
                        chkbox_collate.Enabled = (updown_copies.Value > 1) ? 
true : false;
 
                        if (show_help) {
@@ -291,48 +300,48 @@
                                        ShowErrorMessage ("'From' value cannot 
be greater than 'To' value.", txtFrom);
                                        return;
                                }
-                                       
-                               if (to < current_settings.MinimumPage || to > 
current_settings.MaximumPage) {
+
+                               if (to < PrinterSettings.MinimumPage || to > 
PrinterSettings.MaximumPage) {
                                        ShowErrorMessage ("'To' value is not 
within the page range\n" +
-                                                       "Enter a number between 
" + current_settings.MinimumPage +
-                                                       " and " + 
current_settings.MaximumPage + ".", txtTo);
+                                                       "Enter a number between 
" + PrinterSettings.MinimumPage +
+                                                       " and " + 
PrinterSettings.MaximumPage + ".", txtTo);
                                        return;
                                }
-                                       
-                               if (from < current_settings.MinimumPage || from 
> current_settings.MaximumPage) {
+
+                               if (from < PrinterSettings.MinimumPage || from 
> PrinterSettings.MaximumPage) {
                                        ShowErrorMessage ("'From' value is not 
within the page range\n" +
-                                                       "Enter a number between 
" + current_settings.MinimumPage +
-                                                       " and " + 
current_settings.MaximumPage + ".", txtFrom);
+                                                       "Enter a number between 
" + PrinterSettings.MinimumPage +
+                                                       " and " + 
PrinterSettings.MaximumPage + ".", txtFrom);
                                        return;
                                }
                        }
                        
                        if (radio_all.Checked == true)
-                               current_settings.PrintRange = 
PrintRange.AllPages;
+                               PrinterSettings.PrintRange = 
PrintRange.AllPages;
                        else if (radio_pages.Checked == true)
-                               current_settings.PrintRange = 
PrintRange.SomePages;
+                               PrinterSettings.PrintRange = 
PrintRange.SomePages;
                        else
-                               current_settings.PrintRange = 
PrintRange.Selection;
+                               PrinterSettings.PrintRange = 
PrintRange.Selection;
 
-                       current_settings.Copies = (short) updown_copies.Value;
-                       if (current_settings.PrintRange == 
PrintRange.SomePages) {
-                               current_settings.FromPage = from;
-                               current_settings.ToPage = to;
+                       PrinterSettings.Copies = (short) updown_copies.Value;
+                       if (PrinterSettings.PrintRange == PrintRange.SomePages) 
{
+                               PrinterSettings.FromPage = from;
+                               PrinterSettings.ToPage = to;
                        }
-                       current_settings.Collate = chkbox_collate.Checked;
+                       PrinterSettings.Collate = chkbox_collate.Checked;
 
                        if (allow_print_to_file) {
-                               current_settings.PrintToFile = 
chkbox_print.Checked;
+                               PrinterSettings.PrintToFile = 
chkbox_print.Checked;
                        }
 
                        form.DialogResult = DialogResult.OK;
 
                        if (printer_combo.SelectedItem != null)
-                               current_settings.PrinterName = (string) 
printer_combo.SelectedItem;
+                               PrinterSettings.PrinterName = (string) 
printer_combo.SelectedItem;
 
                        if (document != null) {
                                document.PrintController = new 
PrintControllerWithStatusDialog (document.PrintController);
-                               document.PrinterSettings = current_settings;
+                               document.PrinterSettings = PrinterSettings;
                        }
                }
 

Modified: 
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog   
2007-02-09 03:43:12 UTC (rev 72530)
+++ trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/ChangeLog   
2007-02-09 07:53:18 UTC (rev 72531)
@@ -1,3 +1,7 @@
+2007-02-09  Gert Driesen  <[EMAIL PROTECTED]>
+
+       * PrintDialogTest.cs: Added test for bug #80764.
+
 2007-02-08  Jonathan Pobst  <[EMAIL PROTECTED]>
 
        * ToolStripItemTest.cs: Uncomment tests relating to Overflow. Add

Modified: 
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/PrintDialogTest.cs
===================================================================
--- 
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/PrintDialogTest.cs
  2007-02-09 03:43:12 UTC (rev 72530)
+++ 
trunk/mcs/class/Managed.Windows.Forms/Test/System.Windows.Forms/PrintDialogTest.cs
  2007-02-09 07:53:18 UTC (rev 72531)
@@ -38,7 +38,7 @@
        [TestFixture]
        public class PrintDialogTest
        {
-               [Test]          
+               [Test]
                [Category("Printing")]
                public void DefaultValues ()
                {
@@ -97,6 +97,24 @@
                        if (pd.PrinterSettings == ps1)
                                Assert.Fail ("#5");
                }
+
+#if ONLY_1_1
+               [Test] // bug #80764
+               public void ShowDialog_PrinterSettings_Null ()
+               {
+                       PrintDialog pd = new PrintDialog ();
+                       try {
+                               pd.ShowDialog ();
+                               Assert.Fail ("#1");
+                       } catch (ArgumentException ex) {
+                               // PrintDialog needs a PrinterSettings object 
to display
+                               Assert.AreEqual (typeof (ArgumentException), 
ex.GetType (), "#2");
+                               Assert.IsNull (ex.InnerException, "#3");
+                               Assert.IsNotNull (ex.Message, "#4");
+                               Assert.IsNull (ex.ParamName, "#5");
+                       }
+               }
+#endif
        }
 }
 

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to