2009-03-16 Ivan N. Zlatev <contact@i-nz.net>
authorIvan Zlatev <ivan@ivanz.com>
Mon, 16 Mar 2009 21:47:55 +0000 (21:47 -0000)
committerIvan Zlatev <ivan@ivanz.com>
Mon, 16 Mar 2009 21:47:55 +0000 (21:47 -0000)
* DataGridViewBand.cs: Update our State whenever a property changes.
* DataGridView.cs: Don't be so generous in reseting Displayed, because
it will spawn lots and lots of unneeded State changed events.
[Fixes bug #484989]

svn path=/trunk/mcs/; revision=129501

mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridView.cs
mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewBand.cs

index 2c2937ca1d025a396ab57763a75ddf6a34faf354..14f9823e6fdf5734d5f3c2120a83bdf6ca0897fe 100644 (file)
@@ -1,3 +1,10 @@
+2009-03-16  Ivan N. Zlatev  <contact@i-nz.net>
+
+       * DataGridViewBand.cs: Update our State whenever a property changes.
+       * DataGridView.cs: Don't be so generous in reseting Displayed, because 
+       it will spawn lots and lots of unneeded State changed events.
+       [Fixes bug #484989]
+
 2009-03-16  Ivan N. Zlatev  <contact@i-nz.net>
 
        * DataGridView.cs, DataGridViewRow.cs, DataGridViewColumn.cs: 
index f3deac6ac72d65bbeeb44bf7fefb55eedbe5e64d..86269c6c60c0707a31c02373c25df56c7e02fe75 100644 (file)
@@ -4590,8 +4590,8 @@ namespace System.Windows.Forms {
                                bounds.Y += columnHeadersHeight;
                        }
                        
-                       // Reset all columns to !Displayed
-                       for (int i = 0; i < Columns.Count; i++)
+                       // Reset not displayed columns to !Displayed
+                       for (int i = 0; i < first_col_index; i++)
                                Columns[i].DisplayedInternal = false;
                        
                        int gridWidth = rowHeadersVisible ? rowHeadersWidth : 0;
@@ -4609,8 +4609,8 @@ namespace System.Windows.Forms {
                                        break;
                        }
                        
-                       // Reset all rows to !Displayed
-                       for (int i = 0; i < Rows.Count; i++)
+                       // Reset all not displayed rows to !Displayed
+                       for (int i = 0; i < first_row_index; i++)
                                GetRowInternal (i).DisplayedInternal = false;
                        
                        // Draw rows
index 41523791904ad6716590de0a244a891da9bfc8cc..c15002900d34be60aafdde6962bc8b1848ac485a 100644 (file)
@@ -95,7 +95,15 @@ namespace System.Windows.Forms {
                [DefaultValue (false)]
                public virtual bool Frozen {
                        get { return frozen; }
-                       set { frozen = value; }
+                       set {
+                               if (frozen != value) {
+                                       frozen = value;
+                                       if (frozen)
+                                               SetState (State | DataGridViewElementStates.Frozen);
+                                       else
+                                               SetState (State & ~DataGridViewElementStates.Frozen);
+                               }
+                       }
                }
 
                [Browsable (false)]
@@ -116,7 +124,15 @@ namespace System.Windows.Forms {
                [DefaultValue (false)]
                public virtual bool ReadOnly {
                        get { return readOnly; }
-                       set { readOnly = value; }
+                       set {
+                               if (readOnly != value) {
+                                       readOnly = value;
+                                       if (readOnly)
+                                               SetState (State | DataGridViewElementStates.ReadOnly);
+                                       else
+                                               SetState (State & ~DataGridViewElementStates.ReadOnly);
+                               }
+                       }
                }
 
                [Browsable (true)]
@@ -126,7 +142,15 @@ namespace System.Windows.Forms {
                                        return DataGridView.AllowUserToResizeColumns ? DataGridViewTriState.True : DataGridViewTriState.False;
                                }
                                return resizable; }
-                       set { resizable = value; }
+                       set {
+                               if (value != resizable) {
+                                       resizable = value;
+                                       if (resizable == DataGridViewTriState.True)
+                                               SetState (State | DataGridViewElementStates.Resizable);
+                                       else
+                                               SetState (State & ~DataGridViewElementStates.Resizable);
+                               }
+                       }
                }
 
                [Browsable (false)]
@@ -150,13 +174,28 @@ namespace System.Windows.Forms {
                                return selected;
                        }
                        set {
-                               selected = value;
+                               if (selected != value) {
+                                       selected = value;
+
+                                       if (selected)
+                                               SetState (State | DataGridViewElementStates.Selected);
+                                       else
+                                               SetState (State & ~DataGridViewElementStates.Selected);
+                               }
                        }
                }
 
                internal bool DisplayedInternal {
                        get { return displayed; }
-                       set { displayed = value; }
+                       set {
+                               if (value != displayed) {
+                                       displayed = value;
+                                       if (displayed)
+                                               SetState (State | DataGridViewElementStates.Displayed);
+                                       else
+                                               SetState (State & ~DataGridViewElementStates.Displayed);
+                               }
+                       }
                }
                
                [Browsable (false)]
@@ -169,7 +208,15 @@ namespace System.Windows.Forms {
                [DefaultValue (true)]
                public virtual bool Visible {
                        get { return visible; }
-                       set { visible = value; }
+                       set {
+                               if (visible != value) {
+                                       visible = value;
+                                       if (visible)
+                                               SetState (State | DataGridViewElementStates.Visible);
+                                       else
+                                               SetState (State & ~DataGridViewElementStates.Visible);
+                               }
+                       }
                }
 
                public virtual object Clone ()