Example #1
0
        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();
 }