mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-16 11:48:06 +01:00
[FZ Editor] Switch between zone and dialog with Ctrl + Tab (#11435)
* focus zone by ctrl + tab * focus back
This commit is contained in:
@@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Input;
|
||||||
using FancyZonesEditor.Models;
|
using FancyZonesEditor.Models;
|
||||||
using FancyZonesEditor.Utils;
|
using FancyZonesEditor.Utils;
|
||||||
|
|
||||||
@@ -23,6 +24,25 @@ namespace FancyZonesEditor
|
|||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
Loaded += OnLoaded;
|
Loaded += OnLoaded;
|
||||||
|
KeyDown += CanvasEditor_KeyDown;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CanvasEditor_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Key == Key.Tab && (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)))
|
||||||
|
{
|
||||||
|
e.Handled = true;
|
||||||
|
App.Overlay.FocusEditorWindow();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void FocusZone()
|
||||||
|
{
|
||||||
|
if (Preview.Children.Count > 0)
|
||||||
|
{
|
||||||
|
var canvas = Preview.Children[0] as CanvasZone;
|
||||||
|
canvas.FocusZone();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnLoaded(object sender, RoutedEventArgs e)
|
private void OnLoaded(object sender, RoutedEventArgs e)
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ namespace FancyZonesEditor
|
|||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
KeyUp += CanvasEditorWindow_KeyUp;
|
KeyUp += CanvasEditorWindow_KeyUp;
|
||||||
|
KeyDown += CanvasEditorWindow_KeyDown;
|
||||||
|
|
||||||
_model = App.Overlay.CurrentDataContext as CanvasLayoutModel;
|
_model = App.Overlay.CurrentDataContext as CanvasLayoutModel;
|
||||||
_stashedModel = (CanvasLayoutModel)_model.Clone();
|
_stashedModel = (CanvasLayoutModel)_model.Clone();
|
||||||
@@ -49,5 +50,14 @@ namespace FancyZonesEditor
|
|||||||
OnCancel(sender, null);
|
OnCancel(sender, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void CanvasEditorWindow_KeyDown(object sender, KeyEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Key == Key.Tab && (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)))
|
||||||
|
{
|
||||||
|
e.Handled = true;
|
||||||
|
App.Overlay.FocusEditor();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -341,6 +341,11 @@ namespace FancyZonesEditor
|
|||||||
|
|
||||||
public int ZoneIndex { get => zoneIndex; set => zoneIndex = value; }
|
public int ZoneIndex { get => zoneIndex; set => zoneIndex = value; }
|
||||||
|
|
||||||
|
public void FocusZone()
|
||||||
|
{
|
||||||
|
Keyboard.Focus(RootBorder);
|
||||||
|
}
|
||||||
|
|
||||||
private void NWResize_DragStarted(object sender, System.Windows.Controls.Primitives.DragStartedEventArgs e)
|
private void NWResize_DragStarted(object sender, System.Windows.Controls.Primitives.DragStartedEventArgs e)
|
||||||
{
|
{
|
||||||
snappyX = NewMagneticSnapper(true, ResizeMode.BottomEdge);
|
snappyX = NewMagneticSnapper(true, ResizeMode.BottomEdge);
|
||||||
|
|||||||
@@ -14,7 +14,8 @@ namespace FancyZonesEditor
|
|||||||
{
|
{
|
||||||
private MainWindow _mainWindow;
|
private MainWindow _mainWindow;
|
||||||
private LayoutPreview _layoutPreview;
|
private LayoutPreview _layoutPreview;
|
||||||
private UserControl _editor;
|
private UserControl _editorLayout;
|
||||||
|
private EditorWindow _editorWindow;
|
||||||
|
|
||||||
public List<Monitor> Monitors { get; private set; }
|
public List<Monitor> Monitors { get; private set; }
|
||||||
|
|
||||||
@@ -228,34 +229,32 @@ namespace FancyZonesEditor
|
|||||||
_layoutPreview = null;
|
_layoutPreview = null;
|
||||||
if (CurrentDataContext is GridLayoutModel)
|
if (CurrentDataContext is GridLayoutModel)
|
||||||
{
|
{
|
||||||
_editor = new GridEditor();
|
_editorLayout = new GridEditor();
|
||||||
}
|
}
|
||||||
else if (CurrentDataContext is CanvasLayoutModel)
|
else if (CurrentDataContext is CanvasLayoutModel)
|
||||||
{
|
{
|
||||||
_editor = new CanvasEditor();
|
_editorLayout = new CanvasEditor();
|
||||||
}
|
}
|
||||||
|
|
||||||
CurrentLayoutWindow.Content = _editor;
|
CurrentLayoutWindow.Content = _editorLayout;
|
||||||
|
|
||||||
EditorWindow window;
|
|
||||||
|
|
||||||
if (model is GridLayoutModel)
|
if (model is GridLayoutModel)
|
||||||
{
|
{
|
||||||
window = new GridEditorWindow();
|
_editorWindow = new GridEditorWindow();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
window = new CanvasEditorWindow();
|
_editorWindow = new CanvasEditorWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
window.Owner = Monitors[App.Overlay.CurrentDesktop].Window;
|
_editorWindow.Owner = Monitors[App.Overlay.CurrentDesktop].Window;
|
||||||
window.DataContext = model;
|
_editorWindow.DataContext = model;
|
||||||
window.Show();
|
_editorWindow.Show();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CloseEditor()
|
public void CloseEditor()
|
||||||
{
|
{
|
||||||
_editor = null;
|
_editorLayout = null;
|
||||||
_layoutPreview = new LayoutPreview
|
_layoutPreview = new LayoutPreview
|
||||||
{
|
{
|
||||||
IsActualSize = true,
|
IsActualSize = true,
|
||||||
@@ -267,6 +266,22 @@ namespace FancyZonesEditor
|
|||||||
OpenMainWindow();
|
OpenMainWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void FocusEditor()
|
||||||
|
{
|
||||||
|
if (_editorLayout != null && _editorLayout is CanvasEditor canvasEditor)
|
||||||
|
{
|
||||||
|
canvasEditor.FocusZone();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void FocusEditorWindow()
|
||||||
|
{
|
||||||
|
if (_editorWindow != null)
|
||||||
|
{
|
||||||
|
_editorWindow.Focus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void CloseLayoutWindow()
|
public void CloseLayoutWindow()
|
||||||
{
|
{
|
||||||
for (int i = 0; i < DesktopsCount; i++)
|
for (int i = 0; i < DesktopsCount; i++)
|
||||||
|
|||||||
Reference in New Issue
Block a user