using System;
using System.Drawing;
// The 'windowHandle' parameter will contain the window handle for the:
// - Active window when run by hotkey
// - Trigger target when run by a Trigger rule
// - TitleBar Button owner when run by a TitleBar Button
// - Jump List owner when run from a Taskbar Jump List
// - Currently focused window if none of these match
public static class DisplayFusionFunction
{
public static void Run(IntPtr windowHandle)
{
// Get the monitor work area
Rectangle monitorWorkArea = BFS.Monitor.GetMonitorWorkAreaByWindow(windowHandle);
// Get the current window bounds
Rectangle currentWindowBounds = BFS.Window.GetBounds(windowHandle);
// Move the window to the opposite side of the monitor, based on whether there's more space on the left or right side
int leftSpace = currentWindowBounds.X - monitorWorkArea.X;
int rightSpace = (monitorWorkArea.X + monitorWorkArea.Width) - (currentWindowBounds.X + currentWindowBounds.Width);
if (leftSpace < rightSpace)
{
int x = (monitorWorkArea.X + monitorWorkArea.Width) - leftSpace - currentWindowBounds.Width;
BFS.Window.SetLocation(windowHandle, x, currentWindowBounds.Y);
}
else if (leftSpace > rightSpace)
{
int x = monitorWorkArea.X + rightSpace;
BFS.Window.SetLocation(windowHandle, x, currentWindowBounds.Y);
}
}
}