feat: add expose all windows keybinding and Alt-drag window manipulation with floating state tracking

Implement key_expose_all function bound to Alt+Space that unminimizes, unmaximizes, and unfullscreens all windows on current workspace then rearranges. Add floating_before_maximize boolean to Client struct to preserve floating state when toggling maximize. Enable Alt+LeftDrag for moving and Alt+RightDrag for resizing windows from any position with directional cursor support. Increase resize edge detection from 8 to 12 pixels. Add panel.h dependency to keys build target and update shortcut help text with new bindings.
This commit is contained in:
2026-02-16 01:24:05 +00:00
parent cd9e55dc64
commit a6ff84dfca
28 changed files with 249 additions and 29 deletions
+12
View File
@@ -125,6 +125,7 @@ struct Client {
char title[256];
char class[64];
SnapConstraint snap;
bool floating_before_maximize;
unsigned long taskbar_color;
ColorAnimation title_anim;
TextGlowAnimation text_glow;
@@ -219,6 +220,17 @@ typedef struct {
int last_mouse_x;
int last_mouse_y;
bool mouse_tracking_initialized;
Cursor cursor_default;
Cursor cursor_resize_top_left;
Cursor cursor_resize_top_right;
Cursor cursor_resize_bottom_left;
Cursor cursor_resize_bottom_right;
Cursor cursor_resize_left;
Cursor cursor_resize_right;
Cursor cursor_resize_top;
Cursor cursor_resize_bottom;
Cursor cursor_move;
} DWNState;
#define PHASE_OFFSET_PANEL_BG 0.0f
+1
View File
@@ -100,6 +100,7 @@ void key_resize_window_up(void);
void key_resize_window_down(void);
void key_set_mark(void);
void key_goto_mark(void);
void key_expose_all(void);
void tutorial_start(void);
void tutorial_stop(void);