private async void OnDisplaysChanged(object sender, DisplaysChangedEventArgs e) { await EnsureInitialized(); await mutableStateLock.WaitAsync(); LocalState.Controlling?controlling = localState as LocalState.Controlling; string?activeDisplayId = null; if (controlling != null) { activeDisplayId = displayLayout.DisplayIds[controlling.ActiveDisplay]; } DebugMessage("own displays changed"); selfDesktop.Displays = e.Displays; selfDesktop.PrimaryDisplay = e.PrimaryDisplay; mouseDeltaDebounceValueX = e.PrimaryDisplay.Width / 2; mouseDeltaDebounceValueY = e.PrimaryDisplay.Height / 2; displayLayout = new DisplayLayout(desktops); var allClients = await workspaceNetwork.GetAllClientDesktops(); await allClients.DisplaysChanged(e.Displays); DebugPrintDisplays(); if (controlling != null && activeDisplayId != null) { var nextDisplay = displayLayout.DisplayById[activeDisplayId]; DebugMessage($"moving from display {controlling.ActiveDisplay} to {nextDisplay}"); var displayOriginDeltaX = nextDisplay.X - controlling.ActiveDisplay.X; var displayOriginDeltaY = nextDisplay.Y - controlling.ActiveDisplay.Y; DebugMessage(controlling.CursorPosition.Offset(displayOriginDeltaX, displayOriginDeltaY).ToString()); localState = new LocalState.Controlling(controlling.ActiveDesktop, nextDisplay, controlling.CursorPosition.Offset(displayOriginDeltaX, displayOriginDeltaY)); } mutableStateLock.Release(); }
private void OnDisplaysChanged(object?sender, DisplaysChangedEventArgs e) { UpdateVirtualDesktopSize(); }