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)
{
// Prompt to select the monitor to move to
uint monitorID = BFS.Monitor.ShowMonitorSelector();
// Move the window to that monitor
BFS.Window.MoveToMonitor(monitorID, windowHandle);
// Get the windows on that monitor
IntPtr[] windows = BFS.Window.GetVisibleWindowHandlesByMonitor(monitorID);
// Count the windows on that monitor
int windowCount = 0;
foreach (IntPtr window in windows)
{
if (!(BFS.Window.GetText(window) == ""))
{
windowCount++;
}
}
// Set the window sizes based on how many are on that monitor
if (windowCount == 1)
{
BFS.Window.Maximize(windowHandle);
}
else
{
// Set the width and height of the windows on that monitor
Rectangle monitorBounds = BFS.Monitor.GetMonitorBoundsByID(monitorID);
int windowWidth = monitorBounds.Width / windowCount;
int windowHeight = monitorBounds.Height;
// Move and size the windows
int i = 0;
foreach (IntPtr window in windows)
{
if (!(BFS.Window.GetText(window) == ""))
{
BFS.Window.SetSizeAndLocation(window, monitorBounds.X + (windowWidth * i), monitorBounds.Y, windowWidth, windowHeight);
i++;
}
}
}
}
}