Fix selection in high dpi
This commit is contained in:
@@ -280,10 +280,11 @@ namespace FlaxEngine.GUI
|
|||||||
{
|
{
|
||||||
Vector2 leftEdge = selection.StartIndex <= textBlock.Range.StartIndex ? textBlock.Bounds.UpperLeft : font.GetCharPosition(_text, selection.StartIndex);
|
Vector2 leftEdge = selection.StartIndex <= textBlock.Range.StartIndex ? textBlock.Bounds.UpperLeft : font.GetCharPosition(_text, selection.StartIndex);
|
||||||
Vector2 rightEdge = selection.EndIndex >= textBlock.Range.EndIndex ? textBlock.Bounds.UpperRight : font.GetCharPosition(_text, selection.EndIndex);
|
Vector2 rightEdge = selection.EndIndex >= textBlock.Range.EndIndex ? textBlock.Bounds.UpperRight : font.GetCharPosition(_text, selection.EndIndex);
|
||||||
|
float height = font.Height / Platform.DpiScale;
|
||||||
float alpha = Mathf.Min(1.0f, Mathf.Cos(_animateTime * BackgroundSelectedFlashSpeed) * 0.5f + 1.3f);
|
float alpha = Mathf.Min(1.0f, Mathf.Cos(_animateTime * BackgroundSelectedFlashSpeed) * 0.5f + 1.3f);
|
||||||
alpha *= alpha;
|
alpha *= alpha;
|
||||||
Color selectionColor = Color.White * alpha;
|
Color selectionColor = Color.White * alpha;
|
||||||
Rectangle selectionRect = new Rectangle(leftEdge.X, leftEdge.Y, rightEdge.X - leftEdge.X, font.Height);
|
Rectangle selectionRect = new Rectangle(leftEdge.X, leftEdge.Y, rightEdge.X - leftEdge.X, height);
|
||||||
textBlock.Style.BackgroundSelectedBrush.Draw(selectionRect, selectionColor);
|
textBlock.Style.BackgroundSelectedBrush.Draw(selectionRect, selectionColor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -329,7 +330,8 @@ namespace FlaxEngine.GUI
|
|||||||
if (textBlock.Style.UnderlineBrush != null)
|
if (textBlock.Style.UnderlineBrush != null)
|
||||||
{
|
{
|
||||||
var underLineHeight = 2.0f;
|
var underLineHeight = 2.0f;
|
||||||
var underlineRect = new Rectangle(textBlock.Bounds.Location.X, textBlock.Bounds.Location.Y + font.Height - underLineHeight * 0.5f, textBlock.Bounds.Width, underLineHeight);
|
var height = font.Height / Platform.DpiScale;
|
||||||
|
var underlineRect = new Rectangle(textBlock.Bounds.Location.X, textBlock.Bounds.Location.Y + height - underLineHeight * 0.5f, textBlock.Bounds.Width, underLineHeight);
|
||||||
textBlock.Style.UnderlineBrush.Draw(underlineRect, textBlock.Style.Color);
|
textBlock.Style.UnderlineBrush.Draw(underlineRect, textBlock.Style.Color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user