From 841c492e41f29d8700aee08c78bbe3a39bce510a Mon Sep 17 00:00:00 2001 From: wj32 Date: Thu, 3 Sep 2009 07:26:44 +0000 Subject: [PATCH] #2849052 - "not defined by current visual style" git-svn-id: svn://svn.code.sf.net/p/processhacker/code@1839 21ef857c-d57f-4fe0-8362-d861dc6d29cd --- trunk/CHANGELOG.txt | 1 + trunk/ProcessHacker/Forms/HackerWindow.cs | 3 + .../Tree/NodeControls/NodePlusMinus.cs | 65 ++++++++++++++----- trunk/TreeViewAdv/Tree/TreeViewAdv.cs | 5 ++ 4 files changed, 56 insertions(+), 18 deletions(-) diff --git a/trunk/CHANGELOG.txt b/trunk/CHANGELOG.txt index 041876e41..f3261c7e0 100644 --- a/trunk/CHANGELOG.txt +++ b/trunk/CHANGELOG.txt @@ -13,6 +13,7 @@ Process Hacker * #2820170 - "System.ArgumentOutOfRangeException in network list" * #2845427 - "Indicator integer overflow" * #2847691 - "Apply button bug" + * #2849052 - "not defined by current visual style" * Critical KProcessHacker denial-of-service security issues * Incorrect menu items for System threads * Crash when viewing error details in the event diff --git a/trunk/ProcessHacker/Forms/HackerWindow.cs b/trunk/ProcessHacker/Forms/HackerWindow.cs index 82b0eb2bd..d51e74c37 100644 --- a/trunk/ProcessHacker/Forms/HackerWindow.cs +++ b/trunk/ProcessHacker/Forms/HackerWindow.cs @@ -2877,7 +2877,10 @@ namespace ProcessHacker case (int)WindowMessage.SettingChange: { + // Refresh icon sizes. this.ExecuteOnIcons((icon) => icon.Size = UsageIcon.GetSmallIconSize()); + // Refresh the tree view visual style. + treeProcesses.Tree.RefreshVisualStyles(); } break; } diff --git a/trunk/TreeViewAdv/Tree/NodeControls/NodePlusMinus.cs b/trunk/TreeViewAdv/Tree/NodeControls/NodePlusMinus.cs index 496d84a3a..232f2d7e3 100644 --- a/trunk/TreeViewAdv/Tree/NodeControls/NodePlusMinus.cs +++ b/trunk/TreeViewAdv/Tree/NodeControls/NodePlusMinus.cs @@ -13,12 +13,16 @@ namespace Aga.Controls.Tree.NodeControls private TreeViewAdv _tree; public const int ImageSize = 9; public const int Width = 16; + private bool _useVisualStyles; + private VisualStyleRenderer _openedRenderer; + private VisualStyleRenderer _closedRenderer; private Bitmap _plus; private Bitmap _minus; public NodePlusMinus(TreeViewAdv tree) { _tree = tree; + this.RefreshVisualStyles(); } private Bitmap Plus @@ -43,6 +47,26 @@ namespace Aga.Controls.Tree.NodeControls } } + public void RefreshVisualStyles() + { + bool useVisualStyles = Application.RenderWithVisualStyles; + + if (useVisualStyles) + { + try + { + _openedRenderer = new VisualStyleRenderer(VisualStyleElement.TreeView.Glyph.Opened); + _closedRenderer = new VisualStyleRenderer(VisualStyleElement.TreeView.Glyph.Closed); + } + catch + { + useVisualStyles = false; + } + } + + _useVisualStyles = useVisualStyles; + } + public override Size MeasureSize(TreeNodeAdv node, DrawContext context) { return new Size(Width, Width); @@ -54,24 +78,29 @@ namespace Aga.Controls.Tree.NodeControls { Rectangle r = context.Bounds; int dy = (int)Math.Round((float)(r.Height - ImageSize) / 2); - if (Application.RenderWithVisualStyles) - { - VisualStyleRenderer renderer; - if (node.IsExpanded) - renderer = new VisualStyleRenderer(VisualStyleElement.TreeView.Glyph.Opened); - else - renderer = new VisualStyleRenderer(VisualStyleElement.TreeView.Glyph.Closed); - renderer.DrawBackground(context.Graphics, new Rectangle(r.X, r.Y + dy, ImageSize, ImageSize)); - } - else - { - Image img; - if (node.IsExpanded) - img = this.Minus; - else - img = this.Plus; - context.Graphics.DrawImageUnscaled(img, new Point(r.X, r.Y + dy)); - } + + if (_useVisualStyles) + { + VisualStyleRenderer renderer; + + if (node.IsExpanded) + renderer = _openedRenderer; + else + renderer = _closedRenderer; + + renderer.DrawBackground(context.Graphics, new Rectangle(r.X, r.Y + dy, ImageSize, ImageSize)); + } + else + { + Image img; + + if (node.IsExpanded) + img = this.Minus; + else + img = this.Plus; + + context.Graphics.DrawImageUnscaled(img, new Point(r.X, r.Y + dy)); + } } } diff --git a/trunk/TreeViewAdv/Tree/TreeViewAdv.cs b/trunk/TreeViewAdv/Tree/TreeViewAdv.cs index 346639983..f65403cb9 100644 --- a/trunk/TreeViewAdv/Tree/TreeViewAdv.cs +++ b/trunk/TreeViewAdv/Tree/TreeViewAdv.cs @@ -673,6 +673,11 @@ namespace Aga.Controls.Tree UnsafeFullUpdate(); } + public void RefreshVisualStyles() + { + _plusMinus.RefreshVisualStyles(); + } + private void UnsafeFullUpdate() { _rowLayout.ClearCache();