#2849052 - "not defined by current visual style"

git-svn-id: svn://svn.code.sf.net/p/processhacker/code@1839 21ef857c-d57f-4fe0-8362-d861dc6d29cd
This commit is contained in:
wj32
2009-09-03 07:26:44 +00:00
parent d206ac0721
commit 841c492e41
4 changed files with 56 additions and 18 deletions
+1
View File
@@ -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
@@ -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;
}
@@ -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));
}
}
}
+5
View File
@@ -673,6 +673,11 @@ namespace Aga.Controls.Tree
UnsafeFullUpdate();
}
public void RefreshVisualStyles()
{
_plusMinus.RefreshVisualStyles();
}
private void UnsafeFullUpdate()
{
_rowLayout.ClearCache();