diff --git a/src/dispatch/bind_define.h b/src/dispatch/bind_define.h index 129b761..7c0cb89 100644 --- a/src/dispatch/bind_define.h +++ b/src/dispatch/bind_define.h @@ -411,7 +411,7 @@ void resizewin(const Arg *arg) { offsety = arg->i2; break; } - resize_tile_client(c, offsetx, offsety, 0); + resize_tile_client(c, false, offsetx, offsety, 0); return; } diff --git a/src/layout/arrange.h b/src/layout/arrange.h index 7ff132d..6e3949a 100644 --- a/src/layout/arrange.h +++ b/src/layout/arrange.h @@ -18,8 +18,8 @@ void set_size_per(Monitor *m, Client *c) { } } -void resize_tile_master_horizontal(Client *grabc, int offsetx, int offsety, - unsigned int time, int type) { +void resize_tile_master_horizontal(Client *grabc, bool isdrag, int offsetx, + int offsety, unsigned int time, int type) { Client *tc = NULL; float delta_x, delta_y; Client *next = NULL; @@ -64,7 +64,7 @@ void resize_tile_master_horizontal(Client *grabc, int offsetx, int offsety, } } - if (!start_drag_window && offsetx == 0 && offsety == 0) { + if (!start_drag_window && isdrag) { drag_begin_cursorx = cursor->x; drag_begin_cursory = cursor->y; start_drag_window = true; @@ -80,7 +80,7 @@ void resize_tile_master_horizontal(Client *grabc, int offsetx, int offsety, grabc->drag_begin_geom = grabc->geom; } else { // 计算相对于屏幕尺寸的比例变化 - if (!offsetx && !offsety) { + if (isdrag) { offsetx = cursor->x - drag_begin_cursorx; offsety = cursor->y - drag_begin_cursory; @@ -107,7 +107,7 @@ void resize_tile_master_horizontal(Client *grabc, int offsetx, int offsety, bool moving_up; bool moving_down; - if (offsetx || offsety) { + if (!isdrag) { moving_up = offsety < 0 ? true : false; moving_down = offsety > 0 ? true : false; } else { @@ -196,7 +196,7 @@ void resize_tile_master_horizontal(Client *grabc, int offsetx, int offsety, grabc->master_inner_per = new_master_inner_per; grabc->slave_innder_per = new_slave_innder_per; - if (offsetx || offsety) { + if (!isdrag) { arrange(grabc->mon, false); return; } @@ -209,8 +209,8 @@ void resize_tile_master_horizontal(Client *grabc, int offsetx, int offsety, } } -void resize_tile_master_vertical(Client *grabc, int offsetx, int offsety, - unsigned int time, int type) { +void resize_tile_master_vertical(Client *grabc, bool isdrag, int offsetx, + int offsety, unsigned int time, int type) { Client *tc = NULL; float delta_x, delta_y; Client *next = NULL; @@ -240,7 +240,7 @@ void resize_tile_master_vertical(Client *grabc, int offsetx, int offsety, } } - if (!start_drag_window && offsetx == 0 && offsety == 0) { + if (!start_drag_window && isdrag) { drag_begin_cursorx = cursor->x; drag_begin_cursory = cursor->y; start_drag_window = true; @@ -258,7 +258,7 @@ void resize_tile_master_vertical(Client *grabc, int offsetx, int offsety, } else { // 计算相对于屏幕尺寸的比例变化 // 计算相对于屏幕尺寸的比例变化 - if (!offsetx && !offsety) { + if (isdrag) { offsetx = cursor->x - drag_begin_cursorx; offsety = cursor->y - drag_begin_cursory; @@ -287,7 +287,7 @@ void resize_tile_master_vertical(Client *grabc, int offsetx, int offsety, bool moving_left; bool moving_right; - if (offsetx || offsety) { + if (!isdrag) { moving_left = offsetx < 0 ? true : false; moving_right = offsetx > 0 ? true : false; } else { @@ -358,7 +358,7 @@ void resize_tile_master_vertical(Client *grabc, int offsetx, int offsety, grabc->master_inner_per = new_master_inner_per; grabc->slave_innder_per = new_slave_innder_per; - if (offsetx || offsety) { + if (!isdrag) { arrange(grabc->mon, false); return; } @@ -371,13 +371,13 @@ void resize_tile_master_vertical(Client *grabc, int offsetx, int offsety, } } -void resize_tile_scroller(Client *grabc, int offsetx, int offsety, +void resize_tile_scroller(Client *grabc, bool isdrag, int offsetx, int offsety, unsigned int time, bool isvertical) { float delta_x, delta_y; float new_scroller_proportion; double refresh_interval = 1000000.0 / grabc->mon->wlr_output->refresh; - if (!start_drag_window && offsetx == 0 && offsety == 0) { + if (!start_drag_window && isdrag) { drag_begin_cursorx = cursor->x; drag_begin_cursory = cursor->y; start_drag_window = true; @@ -394,7 +394,7 @@ void resize_tile_scroller(Client *grabc, int offsetx, int offsety, } else { // 计算相对于屏幕尺寸的比例变化 // 计算相对于屏幕尺寸的比例变化 - if (!offsetx && !offsety) { + if (isdrag) { offsetx = cursor->x - drag_begin_cursorx; offsety = cursor->y - drag_begin_cursory; @@ -418,7 +418,7 @@ void resize_tile_scroller(Client *grabc, int offsetx, int offsety, bool moving_left; bool moving_right; - if (offsetx || offsety) { + if (!isdrag) { moving_up = offsety < 0 ? true : false; moving_down = offsety > 0 ? true : false; moving_left = offsetx < 0 ? true : false; @@ -459,7 +459,7 @@ void resize_tile_scroller(Client *grabc, int offsetx, int offsety, grabc->scroller_proportion = new_scroller_proportion; - if (offsetx || offsety) { + if (!isdrag) { arrange(grabc->mon, false); return; } @@ -472,7 +472,7 @@ void resize_tile_scroller(Client *grabc, int offsetx, int offsety, } } -void resize_tile_client(Client *grabc, int offsetx, int offsety, +void resize_tile_client(Client *grabc, bool isdrag, int offsetx, int offsety, unsigned int time) { const Layout *current_layout = grabc->mon->pertag->ltidxs[grabc->mon->pertag->curtag]; @@ -480,15 +480,15 @@ void resize_tile_client(Client *grabc, int offsetx, int offsety, current_layout->id == CENTER_TILE ) { - resize_tile_master_horizontal(grabc, offsetx, offsety, time, + resize_tile_master_horizontal(grabc, isdrag, offsetx, offsety, time, current_layout->id); } else if (current_layout->id == VERTICAL_TILE) { - resize_tile_master_vertical(grabc, offsetx, offsety, time, + resize_tile_master_vertical(grabc, isdrag, offsetx, offsety, time, current_layout->id); } else if (current_layout->id == SCROLLER) { - resize_tile_scroller(grabc, offsetx, offsety, time, false); + resize_tile_scroller(grabc, isdrag, offsetx, offsety, time, false); } else if (current_layout->id == VERTICAL_SCROLLER) { - resize_tile_scroller(grabc, offsetx, offsety, time, true); + resize_tile_scroller(grabc, isdrag, offsetx, offsety, time, true); } } diff --git a/src/mango.c b/src/mango.c index f61f31e..b8549c7 100644 --- a/src/mango.c +++ b/src/mango.c @@ -715,8 +715,8 @@ static void enable_adaptive_sync(Monitor *m, struct wlr_output_state *state); static Client *get_next_stack_client(Client *c, bool reverse); static void set_float_malposition(Client *tc); static void set_size_per(Monitor *m, Client *c); -static void resize_tile_client(Client *grabc, int offsetx, int offsety, - unsigned int time); +static void resize_tile_client(Client *grabc, bool isdrag, int offsetx, + int offsety, unsigned int time); #include "data/static_keymap.h" #include "dispatch/bind_declare.h" @@ -3847,7 +3847,7 @@ void motionnotify(unsigned int time, struct wlr_input_device *device, double dx, resize(grabc, grabc->float_geom, 1); return; } else { - resize_tile_client(grabc, 0, 0, time); + resize_tile_client(grabc, true, 0, 0, time); } }