2007-09-28 Carlos Alberto Cortez <calberto.cortez@gmail.com>
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / MonthCalendar.cs
index 36fdb0eaa51ecb680f9a5f08b6bcd9fbb8acdf55..9bf3d79d1d49c1938566e1f30828ed3a7e538731 100644 (file)
@@ -187,6 +187,8 @@ namespace System.Windows.Forms {
                        
                        // this replaces paint so call the control version
                        base.Paint += new PaintEventHandler (PaintHandler);
+                       
+                       Size = DefaultSize;
                }
                
                // called when this control is added to date time picker
@@ -1631,10 +1633,9 @@ namespace System.Windows.Forms {
 
                // returns the rectangle for themonth name
                internal Rectangle GetMonthNameRectangle (Rectangle title_rect, int calendar_index) {
-                       Graphics g = this.DeviceContext;
                        DateTime this_month = this.current_month.AddMonths (calendar_index);
-                       Size title_text_size = g.MeasureString (this_month.ToString ("MMMM yyyy"), this.Font).ToSize ();
-                       Size month_size = g.MeasureString (this_month.ToString ("MMMM"), this.Font).ToSize ();
+                       Size title_text_size = TextRenderer.MeasureString (this_month.ToString ("MMMM yyyy"), this.Font).ToSize ();
+                       Size month_size = TextRenderer.MeasureString (this_month.ToString ("MMMM"), this.Font).ToSize ();
                        // return only the month name part of that
                        return new Rectangle (
                                new Point (
@@ -1645,10 +1646,9 @@ namespace System.Windows.Forms {
 
                internal void GetYearNameRectangles (Rectangle title_rect, int calendar_index, out Rectangle year_rect, out Rectangle up_rect, out Rectangle down_rect)
                {
-                       Graphics g = this.DeviceContext;
                        DateTime this_month = this.current_month.AddMonths (calendar_index);
-                       SizeF title_text_size = g.MeasureString (this_month.ToString ("MMMM yyyy"), this.bold_font, int.MaxValue, centered_format);
-                       SizeF year_size = g.MeasureString (this_month.ToString ("yyyy"), this.bold_font, int.MaxValue, centered_format);
+                       SizeF title_text_size = TextRenderer.MeasureString (this_month.ToString ("MMMM yyyy"), this.bold_font, int.MaxValue, centered_format);
+                       SizeF year_size = TextRenderer.MeasureString (this_month.ToString ("yyyy"), this.bold_font, int.MaxValue, centered_format);
                        // find out how much space the title took
                        RectangleF text_rect = new RectangleF (
                                new PointF (
@@ -2042,6 +2042,7 @@ namespace System.Windows.Forms {
                                if (!is_shift_pressed && e.Shift) {
                                        first_select_start_date = SelectionStart;
                                        is_shift_pressed = e.Shift;
+                                       e.Handled = true;
                                }
                                switch (e.KeyCode) {
                                        case Keys.Home:
@@ -2057,6 +2058,7 @@ namespace System.Windows.Forms {
                                                        this.SetSelectionRange (date, date);
                                                }
                                                this.OnDateChanged (new DateRangeEventArgs (SelectionStart, SelectionEnd));
+                                               e.Handled = true;
                                                break;
                                        case Keys.End:
                                                // set the date to the last of the month
@@ -2071,6 +2073,7 @@ namespace System.Windows.Forms {
                                                        this.SetSelectionRange (date, date);
                                                }
                                                this.OnDateChanged (new DateRangeEventArgs (SelectionStart, SelectionEnd));
+                                               e.Handled = true;
                                                break;
                                        case Keys.PageUp:
                                                // set the date to the last of the month
@@ -2081,6 +2084,7 @@ namespace System.Windows.Forms {
                                                        this.SetSelectionRange (date, date);
                                                }
                                                this.OnDateChanged (new DateRangeEventArgs (SelectionStart, SelectionEnd));
+                                               e.Handled = true;
                                                break;
                                        case Keys.PageDown:
                                                // set the date to the last of the month
@@ -2091,6 +2095,7 @@ namespace System.Windows.Forms {
                                                        this.SetSelectionRange (date, date);
                                                }
                                                this.OnDateChanged (new DateRangeEventArgs (SelectionStart, SelectionEnd));
+                                               e.Handled = true;
                                                break;
                                        case Keys.Up:
                                                // set the back 1 week
@@ -2101,6 +2106,7 @@ namespace System.Windows.Forms {
                                                        this.SetSelectionRange (date, date);
                                                }
                                                this.OnDateChanged (new DateRangeEventArgs (SelectionStart, SelectionEnd));
+                                               e.Handled = true;
                                                break;
                                        case Keys.Down:
                                                // set the date forward 1 week
@@ -2111,6 +2117,7 @@ namespace System.Windows.Forms {
                                                        this.SetSelectionRange (date, date);
                                                }
                                                this.OnDateChanged (new DateRangeEventArgs (SelectionStart, SelectionEnd));
+                                               e.Handled = true;
                                                break;
                                        case Keys.Left:
                                                // move one left
@@ -2121,6 +2128,7 @@ namespace System.Windows.Forms {
                                                        this.SetSelectionRange (date, date);
                                                }
                                                this.OnDateChanged (new DateRangeEventArgs (SelectionStart, SelectionEnd));
+                                               e.Handled = true;
                                                break;
                                        case Keys.Right:
                                                // move one left
@@ -2131,11 +2139,11 @@ namespace System.Windows.Forms {
                                                        this.SetSelectionRange (date, date);
                                                }
                                                this.OnDateChanged (new DateRangeEventArgs (SelectionStart, SelectionEnd));
+                                               e.Handled = true;
                                                break;
                                        default:
                                                break;
                                }
-                               e.Handled = true;
                        }
                }