CmdPal: Ensure IconBox uses an initialized scale (#45980)

## Summary of the Pull Request

This PR makes sure that IconBox is using valid scale to prevent
defaulting to 0 and using poorly resizes full-scale image:

<img width="81" height="79" alt="image"
src="https://github.com/user-attachments/assets/55bbb08f-6f78-4c19-b7a6-748176dee9c8"
/>
vs 
<img width="89" height="88" alt="image"
src="https://github.com/user-attachments/assets/2dc26863-88c0-4c47-8798-023611d571b5"
/>


<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [x] Closes: #45973
This commit is contained in:
Jiří Polášek
2026-03-09 12:15:23 +01:00
committed by GitHub
parent e323da939b
commit b72224ea0b

View File

@@ -135,6 +135,8 @@ public partial class IconBox : ContentControl
_lastScale = XamlRoot.RasterizationScale;
XamlRoot.Changed += OnXamlRootChanged;
}
Refresh();
}
private void OnUnloaded(object sender, RoutedEventArgs e)
@@ -149,10 +151,13 @@ public partial class IconBox : ContentControl
{
var newScale = sender.RasterizationScale;
var changedLastTheme = _lastTheme != ActualTheme;
var changedScale = Math.Abs(newScale - _lastScale) > 0.01;
_lastScale = newScale;
_lastTheme = ActualTheme;
if ((changedLastTheme || Math.Abs(newScale - _lastScale) > 0.01) && SourceKey is not null)
if ((changedLastTheme || changedScale) && SourceKey is not null)
{
_lastScale = newScale;
UpdateSourceKey(this, SourceKey);
}
}
@@ -257,7 +262,11 @@ public partial class IconBox : ContentControl
return;
}
var eventArgs = new SourceRequestedEventArgs(sourceKey, iconBox._lastTheme, iconBox._lastScale);
var scale = iconBox._lastScale > 0
? iconBox._lastScale
: (iconBox.XamlRoot?.RasterizationScale > 0 ? iconBox.XamlRoot.RasterizationScale : 1.0);
var eventArgs = new SourceRequestedEventArgs(sourceKey, iconBox._lastTheme, scale);
await iconBoxSourceRequestedHandler.InvokeAsync(iconBox, eventArgs);
// After the await: