Fix critical bugs and improve laptop compatibility

Major fixes:
- Fix keybinding closure bug causing all zones to map to zone 9
- Change keybindings from Super+Numpad to Super+Ctrl+1-9 for laptop compatibility
- Fix shift-drag detection by implementing continuous modifier polling during window drag
- Fix window object reference by using global.display.focus_window
- Fix window API compatibility (use property checks instead of get_maximized())
- Correct grab-op-begin/end signal handler parameters

Technical improvements:
- Add modifier polling (50ms interval) during window drag to detect Shift key press/release
- Use Mainloop.idle_add to defer window resize operations
- Remove debug logging for production use
- Improve error handling and cleanup in destroy() method

The extension now fully supports:
- Shift-drag window snapping with visual zone overlay
- Keyboard shortcuts for direct zone snapping (Super+Ctrl+1-9)
- Zone overlay toggle (Super+Z)
- Layout cycling (Super+Shift+Z)
- Graphical zone editor (Super+Shift+E)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-15 19:50:23 -07:00
parent 1681580bea
commit 3d79b0336a
3 changed files with 110 additions and 56 deletions

View File

@@ -27,8 +27,9 @@ echo "2. Open System Settings → Extensions"
echo "3. Find 'GridSnap' and toggle it on"
echo ""
echo "Keyboard shortcuts:"
echo " Super+Z : Show/hide zones"
echo " Super+Shift+Z : Cycle layouts"
echo " Super+Numpad1-9 : Snap to zone"
echo " Super+Z : Show/hide zones"
echo " Super+Shift+Z : Cycle layouts"
echo " Super+Ctrl+1-9 : Snap to zone"
echo " Super+Shift+E : Open zone editor"
echo ""
echo "Enjoy your new window manager!"