diff options
| -rw-r--r-- | include/rootston/input.h | 2 | ||||
| -rw-r--r-- | rootston/cursor.c | 10 | 
2 files changed, 7 insertions, 5 deletions
| diff --git a/include/rootston/input.h b/include/rootston/input.h index c2e0ff75..1fae07d7 100644 --- a/include/rootston/input.h +++ b/include/rootston/input.h @@ -78,7 +78,7 @@ struct roots_input {  	enum roots_cursor_mode mode;  	struct roots_view *active_view;  	int offs_x, offs_y; -	int view_width, view_height; +	int view_x, view_y, view_width, view_height;  	uint32_t resize_edges;  	// Ring buffer of input events that could trigger move/resize/rotate diff --git a/rootston/cursor.c b/rootston/cursor.c index ac6b1dc3..bef30746 100644 --- a/rootston/cursor.c +++ b/rootston/cursor.c @@ -33,8 +33,10 @@ void view_begin_resize(struct roots_input *input, struct wlr_cursor *cursor,  		struct roots_view *view, uint32_t edges) {  	input->mode = ROOTS_CURSOR_RESIZE;  	wlr_log(L_DEBUG, "begin resize"); -	input->offs_x = cursor->x  - view->x; -	input->offs_y = cursor->y - view->y; +	input->offs_x = cursor->x; +	input->offs_y = cursor->y; +	input->view_x = view->x; +	input->view_y = view->y;  	input->view_width = view->wlr_surface->current.width;  	input->view_height = view->wlr_surface->current.height;  	input->resize_edges = edges; @@ -71,14 +73,14 @@ void cursor_update_position(struct roots_input *input, uint32_t time) {  			int width = input->view_width;  			int height = input->view_height;  			if (input->resize_edges & ROOTS_CURSOR_RESIZE_EDGE_TOP) { -				input->active_view->y = dy; +				input->active_view->y = input->view_y + dy;  				height -= dy;  			}  			if (input->resize_edges & ROOTS_CURSOR_RESIZE_EDGE_BOTTOM) {  				height += dy;  			}  			if (input->resize_edges & ROOTS_CURSOR_RESIZE_EDGE_LEFT) { -				input->active_view->x = dx; +				input->active_view->x = input->view_x + dx;  				width -= dx;  			}  			if (input->resize_edges & ROOTS_CURSOR_RESIZE_EDGE_RIGHT) { | 
