floating/tiling move + floating resize cleaned and fixed

This commit is contained in:
taiyu 2015-08-22 18:01:38 -07:00
parent 232940f813
commit e139de0857
6 changed files with 454 additions and 136 deletions

View file

@ -17,6 +17,7 @@ void press_key(keycode key);
// unsets a key as pressed
void release_key(keycode key);
/* Pointer state */
enum pointer_values {
@ -27,9 +28,40 @@ enum pointer_values {
M_SCROLL_DOWN = 276,
};
enum pointer_mode {
// Target
M_FLOATING = 1 << 0,
M_TILING = 1 << 1,
// Action
M_DRAGGING = 1 << 2,
M_RESIZING = 1 << 3,
};
extern struct pointer_state {
bool l_held;
bool r_held;
// mouse clicks
bool l_held : 1;
bool r_held : 1;
// scroll wheel
bool s_held : 1;
bool s_up : 1;
bool s_down :1;
// pointer position
struct mouse_origin{
int x, y;
} origin;
struct {
int x, y;
} delta;
// view pointer is over
swayc_t *view;
// Pointer mode
int mode;
// OLD
struct pointer_floating {
bool drag;
bool resize;
@ -53,6 +85,16 @@ extern struct pointer_state {
} lock;
} pointer_state;
// on button release unset mode depending on the button.
// on button press set mode conditionally depending on the button
void pointer_mode_set(uint32_t button, bool condition);
// Update mode in mouse motion
void pointer_mode_update(void);
// Reset mode on any keypress;
void pointer_mode_reset(void);
void start_floating(swayc_t *view);
void reset_floating(swayc_t *view);
void input_init(void);

View file

@ -19,10 +19,12 @@ void add_floating(swayc_t *ws, swayc_t *child);
swayc_t *add_sibling(swayc_t *sibling, swayc_t *child);
swayc_t *replace_child(swayc_t *child, swayc_t *new_child);
swayc_t *remove_child(swayc_t *child);
void swap_container(swayc_t *a, swayc_t *b);
void move_container(swayc_t* container,swayc_t* root,enum movement_direction direction);
// Layout
void update_geometry(swayc_t *view);
void arrange_windows(swayc_t *container, double width, double height);
swayc_t *get_focused_container(swayc_t *parent);