refactor(ax): remove legacy snap aliases
This commit is contained in:
parent
761b3b0784
commit
bd4dfa8027
5 changed files with 91 additions and 9 deletions
|
|
@ -182,7 +182,7 @@ func (s *Subsystem) registerLayoutTools(server *mcp.Server) {
|
|||
mcp.AddTool(server, &mcp.Tool{Name: "layout_delete", Description: "Delete a saved layout"}, s.layoutDelete)
|
||||
mcp.AddTool(server, &mcp.Tool{Name: "layout_get", Description: "Get a specific layout by name"}, s.layoutGet)
|
||||
mcp.AddTool(server, &mcp.Tool{Name: "layout_tile", Description: "Tile windows in a grid arrangement"}, s.layoutTile)
|
||||
mcp.AddTool(server, &mcp.Tool{Name: "layout_snap", Description: "Snap a window to a screen edge or corner"}, s.layoutSnap)
|
||||
mcp.AddTool(server, &mcp.Tool{Name: "layout_snap", Description: "Snap a window to a screen edge, corner, or center"}, s.layoutSnap)
|
||||
mcp.AddTool(server, &mcp.Tool{Name: "layout_stack", Description: "Stack windows in a cascade pattern"}, s.layoutStack)
|
||||
mcp.AddTool(server, &mcp.Tool{Name: "layout_workflow", Description: "Apply a preset workflow layout"}, s.layoutWorkflow)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -244,13 +244,7 @@ func (s *Service) trackWindow(platformWindow PlatformWindow) {
|
|||
case "resize":
|
||||
if data := event.Data; data != nil {
|
||||
width, _ := data["width"].(int)
|
||||
if width == 0 {
|
||||
width, _ = data["w"].(int)
|
||||
}
|
||||
height, _ := data["height"].(int)
|
||||
if height == 0 {
|
||||
height, _ = data["h"].(int)
|
||||
}
|
||||
_ = s.Core().ACTION(ActionWindowResized{Name: event.Name, Width: width, Height: height})
|
||||
}
|
||||
case "close":
|
||||
|
|
@ -452,7 +446,7 @@ var snapPosMap = map[string]SnapPosition{
|
|||
"top": SnapTop, "bottom": SnapBottom,
|
||||
"top-left": SnapTopLeft, "top-right": SnapTopRight,
|
||||
"bottom-left": SnapBottomLeft, "bottom-right": SnapBottomRight,
|
||||
"center": SnapCenter, "centre": SnapCenter,
|
||||
"center": SnapCenter,
|
||||
}
|
||||
|
||||
func (s *Service) taskSnapWindow(name, position string) error {
|
||||
|
|
|
|||
|
|
@ -99,6 +99,48 @@ func TestTaskSnapWindow_UsesPrimaryScreenSize(t *testing.T) {
|
|||
assert.Equal(t, 1000, info.Height)
|
||||
}
|
||||
|
||||
func TestTaskSnapWindow_Center_Good(t *testing.T) {
|
||||
_, c := newTestWindowServiceWithScreen(t, []screen.Screen{
|
||||
{
|
||||
ID: "1", Name: "Primary", IsPrimary: true,
|
||||
Bounds: screen.Rect{X: 0, Y: 0, Width: 2000, Height: 1000},
|
||||
WorkArea: screen.Rect{X: 0, Y: 0, Width: 2000, Height: 1000},
|
||||
},
|
||||
})
|
||||
|
||||
_, _, err := c.PERFORM(TaskOpenWindow{Window: Window{Name: "snap", Width: 400, Height: 300}})
|
||||
require.NoError(t, err)
|
||||
|
||||
_, handled, err := c.PERFORM(TaskSnapWindow{Name: "snap", Position: "center"})
|
||||
require.NoError(t, err)
|
||||
assert.True(t, handled)
|
||||
|
||||
result, _, err := c.QUERY(QueryWindowByName{Name: "snap"})
|
||||
require.NoError(t, err)
|
||||
info := result.(*WindowInfo)
|
||||
assert.Equal(t, 800, info.X)
|
||||
assert.Equal(t, 350, info.Y)
|
||||
assert.Equal(t, 400, info.Width)
|
||||
assert.Equal(t, 300, info.Height)
|
||||
}
|
||||
|
||||
func TestTaskSnapWindow_LegacyCentre_Bad(t *testing.T) {
|
||||
_, c := newTestWindowServiceWithScreen(t, []screen.Screen{
|
||||
{
|
||||
ID: "1", Name: "Primary", IsPrimary: true,
|
||||
Bounds: screen.Rect{X: 0, Y: 0, Width: 2000, Height: 1000},
|
||||
WorkArea: screen.Rect{X: 0, Y: 0, Width: 2000, Height: 1000},
|
||||
},
|
||||
})
|
||||
|
||||
_, _, err := c.PERFORM(TaskOpenWindow{Window: Window{Name: "snap", Width: 400, Height: 300}})
|
||||
require.NoError(t, err)
|
||||
|
||||
_, handled, err := c.PERFORM(TaskSnapWindow{Name: "snap", Position: "centre"})
|
||||
assert.True(t, handled)
|
||||
assert.Error(t, err)
|
||||
}
|
||||
|
||||
func TestTaskTileWindows_UsesPrimaryWorkAreaOrigin(t *testing.T) {
|
||||
_, c := newTestWindowServiceWithScreen(t, []screen.Screen{
|
||||
{
|
||||
|
|
|
|||
|
|
@ -226,6 +226,52 @@ func TestFileDrop_Good(t *testing.T) {
|
|||
mu.Unlock()
|
||||
}
|
||||
|
||||
func TestWindowResizeEvent_UsesCanonicalPayload_Good(t *testing.T) {
|
||||
svc, c := newTestWindowService(t)
|
||||
|
||||
_, _, _ = c.PERFORM(TaskOpenWindow{Window: Window{Name: "resize-test"}})
|
||||
|
||||
var (
|
||||
resized ActionWindowResized
|
||||
seen bool
|
||||
)
|
||||
c.RegisterAction(func(_ *core.Core, msg core.Message) error {
|
||||
if a, ok := msg.(ActionWindowResized); ok {
|
||||
resized = a
|
||||
seen = true
|
||||
}
|
||||
return nil
|
||||
})
|
||||
|
||||
pw, ok := svc.Manager().Get("resize-test")
|
||||
require.True(t, ok)
|
||||
mw := pw.(*mockWindow)
|
||||
|
||||
mw.emit(WindowEvent{
|
||||
Type: "resize",
|
||||
Name: "resize-test",
|
||||
Data: map[string]any{"width": 111, "height": 222},
|
||||
})
|
||||
|
||||
assert.True(t, seen)
|
||||
assert.Equal(t, "resize-test", resized.Name)
|
||||
assert.Equal(t, 111, resized.Width)
|
||||
assert.Equal(t, 222, resized.Height)
|
||||
|
||||
resized = ActionWindowResized{}
|
||||
seen = false
|
||||
mw.emit(WindowEvent{
|
||||
Type: "resize",
|
||||
Name: "resize-test",
|
||||
Data: map[string]any{"w": 333, "h": 444},
|
||||
})
|
||||
|
||||
assert.True(t, seen)
|
||||
assert.Equal(t, "resize-test", resized.Name)
|
||||
assert.Equal(t, 0, resized.Width)
|
||||
assert.Equal(t, 0, resized.Height)
|
||||
}
|
||||
|
||||
// --- TaskMinimize ---
|
||||
|
||||
func TestTaskMinimize_Good(t *testing.T) {
|
||||
|
|
|
|||
|
|
@ -180,7 +180,7 @@ func (m *Manager) TileWindows(mode TileMode, names []string, screenW, screenH in
|
|||
return nil
|
||||
}
|
||||
|
||||
// SnapWindow snaps a window to a screen edge/corner/centre.
|
||||
// SnapWindow snaps a window to a screen edge, corner, or center.
|
||||
func (m *Manager) SnapWindow(name string, pos SnapPosition, screenW, screenH int, origin ...int) error {
|
||||
originX, originY := layoutOrigin(origin)
|
||||
pw, ok := m.Get(name)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue