Merge branch 'fix-per-window-dpi' of git://github.com/stefnotch/FlaxEngine into stefnotch-fix-per-window-dpi
# Conflicts: # Source/Editor/Utilities/Utils.cs # Source/Editor/Windows/Assets/MaterialWindow.cs # Source/Editor/Windows/Assets/ParticleEmitterWindow.cs # Source/Engine/Platform/Linux/LinuxWindow.cpp # Source/Engine/Platform/Windows/WindowsWindow.cpp
This commit is contained in:
@@ -124,7 +124,7 @@ namespace FlaxEditor.GUI.ContextMenu
|
||||
PerformLayout();
|
||||
|
||||
// Calculate popup direction and initial location (fit on a single monitor)
|
||||
var dpiScale = Platform.DpiScale;
|
||||
var dpiScale = parentWin.DpiScale;
|
||||
Vector2 dpiSize = Size * dpiScale;
|
||||
Vector2 locationWS = parent.PointToWindow(location);
|
||||
Vector2 locationSS = parentWin.PointToScreen(locationWS);
|
||||
@@ -275,7 +275,7 @@ namespace FlaxEditor.GUI.ContextMenu
|
||||
{
|
||||
if (_window != null)
|
||||
{
|
||||
_window.ClientSize = Size * Platform.DpiScale;
|
||||
_window.ClientSize = Size * _window.DpiScale;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -143,7 +143,7 @@ namespace FlaxEditor.GUI.Dialogs
|
||||
// Setup initial window settings
|
||||
CreateWindowSettings settings = CreateWindowSettings.Default;
|
||||
settings.Title = _title;
|
||||
settings.Size = _dialogSize * Platform.DpiScale;
|
||||
settings.Size = _dialogSize * parentWindow.DpiScale;
|
||||
settings.AllowMaximize = false;
|
||||
settings.AllowMinimize = false;
|
||||
settings.HasSizingFrame = false;
|
||||
|
||||
@@ -123,9 +123,8 @@ namespace FlaxEditor.GUI.Docking
|
||||
if (parentWin == null)
|
||||
throw new InvalidOperationException("Missing parent window.");
|
||||
var control = _tabsProxy != null ? (Control)_tabsProxy : this;
|
||||
var dpiScale = Platform.DpiScale;
|
||||
var clientPos = control.PointToWindow(Vector2.Zero);
|
||||
return new Rectangle(parentWin.PointToScreen(clientPos), control.Size * dpiScale);
|
||||
return new Rectangle(parentWin.PointToScreen(clientPos), control.Size * RootWindow.DpiScale);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -190,15 +190,15 @@ namespace FlaxEditor.GUI
|
||||
|
||||
private WindowHitCodes OnHitTest(ref Vector2 mouse)
|
||||
{
|
||||
var pos = _window.ScreenToClient(mouse * Platform.DpiScale);
|
||||
var dpiScale = _window.DpiScale;
|
||||
|
||||
if (_window.IsMinimized)
|
||||
return WindowHitCodes.NoWhere;
|
||||
|
||||
if (!_window.IsMaximized)
|
||||
{
|
||||
var dpiScale = Platform.DpiScale;
|
||||
var winSize = RootWindow.Size * dpiScale;
|
||||
var pos = _window.ScreenToClient(mouse * dpiScale); // pos is not DPI adjusted
|
||||
var winSize = _window.Size;
|
||||
|
||||
// Distance from which the mouse is considered to be on the border/corner
|
||||
float distance = 5.0f * dpiScale;
|
||||
@@ -228,11 +228,11 @@ namespace FlaxEditor.GUI
|
||||
return WindowHitCodes.Bottom;
|
||||
}
|
||||
|
||||
var menuPos = PointFromWindow(pos);
|
||||
var controlUnderMouse = GetChildAt(menuPos);
|
||||
var mousePos = PointFromScreen(mouse * dpiScale);
|
||||
var controlUnderMouse = GetChildAt(mousePos);
|
||||
var isMouseOverSth = controlUnderMouse != null && controlUnderMouse != _title;
|
||||
var rb = GetRightButton();
|
||||
if (rb != null && _minimizeButton != null && new Rectangle(rb.UpperRight * Platform.DpiScale, (_minimizeButton.BottomLeft - rb.UpperRight) * Platform.DpiScale).Contains(ref menuPos) && !isMouseOverSth)
|
||||
if (rb != null && _minimizeButton != null && new Rectangle(rb.UpperRight, _minimizeButton.BottomLeft - rb.UpperRight).Contains(ref mousePos) && !isMouseOverSth)
|
||||
return WindowHitCodes.Caption;
|
||||
|
||||
return WindowHitCodes.Client;
|
||||
|
||||
Reference in New Issue
Block a user