private void ExpandForegroundWindow() { if (lastWindowState != null) { WindowManipulationHelper.ReturnForegroundWindowToDefaultMaximizedState(lastWindowState); } }
private void KeyboardOpened(Rectangle keyboardPosition) { Debug.WriteLine("KeyboardOpened"); if (WindowManipulationHelper.IsForegroundWindowMaximized() && IsKeyboardInDockedMode() && !WindowManipulationHelper.IsForegroundWindowUWP()) { isVisible = true; if (TabletModeHelper.IsTabletMode) { ShowDock(keyboardPosition); lastWindowState = null; } else { ShrinkForegroundWindow(keyboardPosition); } } else { lastWindowState = null; } }
private void ShrinkForegroundWindow(Rectangle keyboardPosition) { var taskbarSize = TaskbarHelper.GetTaskbarSize(); var taskbarPosition = TaskbarHelper.GetTaskbarPosition(); var diff = 0; if (taskbarPosition == TaskbarHelper.TaskbarPosition.Bottom) { diff = -taskbarSize.Height; } lastWindowState = WindowManipulationHelper.ChangeForegroundWindowToWindowedFullScreen( keyboardPosition.Height + diff); }
private async void keyboardStateCheckTimer_Tick(object sender, EventArgs e) { var isOpen = TouchKeyboardHelper.IsOpen(); if (isOpen && !isVisible && IsKeyboardInDockedMode()) { keyboardPosition = TouchKeyboardHelper.GetTouchKeyboardPosition(); if (keyboardPosition != null) { KeyboardOpened((Rectangle)keyboardPosition); } } else if (isOpen && isVisible) { // Make sure keyboard type is not changed from docked. if (!IsKeyboardInDockedMode()) { KeyboardClosed(); } else { // Check for keyboard resize var currentKeyboardPosition = TouchKeyboardHelper.GetTouchKeyboardPosition(); if (currentKeyboardPosition != null && keyboardPosition != null && MuchDifference((Rectangle)currentKeyboardPosition, (Rectangle)keyboardPosition, keyboardDockedPositionMaxDiff)) { Debug.WriteLine("Keyboard height changed"); UpdateKeyboardHeight((Rectangle)currentKeyboardPosition); keyboardPosition = currentKeyboardPosition; } // Check for foreground app change this.Invoke(new MethodInvoker(() => { try { if (!TabletModeHelper.IsTabletMode && currentKeyboardPosition != null) { var currentForegroundWindow = WindowManipulationHelper.GetForegroundWindow(); if (currentForegroundWindow != lastWindowState.windowHandle) { Debug.WriteLine("Foreground window changed"); ExpandForegroundWindow(); ShrinkForegroundWindow((Rectangle)currentKeyboardPosition); } } } catch (Exception ex) { Debug.WriteLine("Exception in Check for foreground app change: " + ex.ToString()); } })); } } else if (!isOpen && isVisible) { KeyboardClosed(); } }