/// <summary> /// Renders the control using specified skin. /// </summary> /// <param name="skin">Skin to use.</param> protected override void Render(Skin.SkinBase skin) { if (!m_Root) { int bottom = 0; if (m_InnerPanel.Children.Count > 0) { bottom = m_InnerPanel.Children.Last().ActualTop + m_InnerPanel.ActualTop; } skin.DrawTreeNode(this, m_InnerPanel.IsVisible, IsSelected, m_Title.ActualHeight, m_Title.ActualWidth, (int)(m_ToggleButton.ActualTop + m_ToggleButton.ActualHeight * 0.5f), bottom, RootNode == Parent, m_ToggleButton.ActualWidth); } }
/// <summary> /// Renders the control using specified skin. /// </summary> /// <param name="skin">Skin to use.</param> protected override void render(Skin.SkinBase skin) { int bottom = 0; if (innerPanel.Children.Count > 0) { bottom = innerPanel.Children.Last().Y + innerPanel.Y; } skin.DrawTreeNode(this, innerPanel.IsVisible, IsSelected, title.Height, title.TextRight, (int)(toggleButton.Y + toggleButton.Height * 0.5f), bottom, treeControl == Parent); // IsRoot //[halfofastaple] HACK - The treenodes are taking two passes until their height is set correctly, // this means that the height is being read incorrectly by the parent, causing // the TreeNode bug where nodes get hidden when expanding and collapsing. // The hack is to constantly invalide TreeNodes, which isn't bad, but there is // definitely a better solution (possibly: Make it set the height from childmost // first and work it's way up?) that invalidates and draws properly in 1 loop. this.Invalidate(); }