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