- Update the selected node if its ImageIndex is changed
- Handle null nodes in UpdateNode (mainly so we don't have to
check if selected is null when updating it
+ - Fix VisibleCount to use the ViewportRectangle so that scrollbars
+ are factored into the visible count
+ - Use VisibleCount for clarity in the code
+ - When the font is changed we need to recurse through all the
+ nodes and invalidate their sizes
2006-05-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public int VisibleCount {
get {
- return ClientRectangle.Height / ItemHeight;
+ return ViewportRectangle.Height / ItemHeight;
}
}
case Keys.PageDown:
if (selected_node != null) {
ne = new OpenTreeNodeEnumerator (selected_node);
- int move = ViewportRectangle.Height / ItemHeight;
+ int move = VisibleCount;
for (int i = 0; i < move && ne.MoveNext (); i++) {
}
case Keys.PageUp:
if (selected_node != null) {
ne = new OpenTreeNodeEnumerator (selected_node);
- int move = ViewportRectangle.Height / ItemHeight;
+ int move = VisibleCount;
for (int i = 0; i < move && ne.MovePrevious (); i++)
{ }
SelectedNode = ne.CurrentNode;
}
if (vert) {
- vbar.SetValues (max_visible_order - 2, ViewportRectangle.Height / ItemHeight);
+ vbar.SetValues (max_visible_order - 2, VisibleCount);
/*
vbar.Maximum = max_visible_order;
vbar.LargeChange = ClientRectangle.Height / ItemHeight;
private void FontChangedHandler (object sender, EventArgs e)
{
- // TODO: I guess we should enumerate every node and invalidate the sizes here :-(
- // update_node_bounds = true;
+ InvalidateNodeWidthRecursive (root_node);
+ }
+
+ private void InvalidateNodeWidthRecursive (TreeNode node)
+ {
+ node.InvalidateWidth ();
+ foreach (TreeNode child in node.Nodes) {
+ InvalidateNodeWidthRecursive (child);
+ }
}
private void FocusChangedHandler (object sender, EventArgs e)