Author: jackson
Date: 2007-03-14 14:38:41 -0500 (Wed, 14 Mar 2007)
New Revision: 74295

Modified:
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeView.cs
Log:

        * TreeView.cs: Some workarounds so that we can match event order
        * a
        little better.



Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2007-03-14 19:20:57 UTC (rev 74294)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2007-03-14 19:38:41 UTC (rev 74295)
@@ -1,3 +1,8 @@
+2007-03-14  Jackson Harper  <[EMAIL PROTECTED]>
+
+       * TreeView.cs: Some workarounds so that we can match event order a
+       little better.
+
 2007-03-14  Gert Driesen  <[EMAIL PROTECTED]>
 
        * ErrorProvider.cs: Invoke default ctor from 2.0-only ctor. Fixes bug

Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeView.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeView.cs      
2007-03-14 19:20:57 UTC (rev 74294)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeView.cs      
2007-03-14 19:38:41 UTC (rev 74295)
@@ -44,12 +44,13 @@
                internal bool nodes_added;
                private TreeNodeCollection nodes;
 
-               private TreeViewAction selection_action = 
TreeViewAction.Unknown;
-               internal TreeNode selected_node = null;
-               private TreeNode focused_node = null;
+               private TreeViewAction selection_action;
+               private TreeNode selected_node;
+               private TreeNode pre_selected_node;
+               private TreeNode focused_node;
                private TreeNode highlighted_node;
-               private Rectangle mouse_rect = Rectangle.Empty;
-               private bool select_mmove = false;
+               private Rectangle mouse_rect;
+               private bool select_mmove;
 
                private ImageList image_list;
                private int image_index = -1;
@@ -342,8 +343,17 @@
                [Browsable(false)]
                
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
                public TreeNode SelectedNode {
-                       get { return selected_node; }
+                       get {
+                               if (!IsHandleCreated)
+                                       return pre_selected_node;
+                               return selected_node;
+                       }
                        set {
+                               if (!IsHandleCreated) {
+                                       pre_selected_node = value;
+                                       return;
+                               }
+
                                if (selected_node == value) {
                                        selection_action = 
TreeViewAction.Unknown;
                                        return;
@@ -645,9 +655,14 @@
                        EndUpdate ();
 
                        ///
-                       /// This is basically an emulation of a strange bug on 
MS
+                       /// Everything below this is basically an emulation of 
a strange bug on MS
+                       /// where they don't always scroll to the last node on 
ExpandAll
                        ///
-
+#if NET_2_0
+                       if (!IsHandleCreated)
+                               return;
+#endif
+                       
                        bool found = false;
                        foreach (TreeNode child in Nodes) {
                                if (child.Nodes.Count > 0)
@@ -717,6 +732,9 @@
                        base.CreateHandle ();
                        RecalculateVisibleOrder (root_node);
                        UpdateScrollBars ();
+
+                       if (pre_selected_node != null)
+                               SelectedNode = pre_selected_node;
                }
 
                protected override void Dispose (bool disposing) {
@@ -1760,10 +1778,10 @@
                }
 
                private void GotFocusHandler (object sender, EventArgs e)
-               {                       
-                       if (selected_node == null)
-                               SelectedNode = TopNode;
-                       else
+               {
+                       if (selected_node == null && pre_selected_node != null)
+                               SelectedNode = pre_selected_node;
+                       else if (selected_node != null)
                                UpdateNode (selected_node);
                }
 

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

Reply via email to