diff options
author | Devin J. Pohly <djpohly@gmail.com> | 2020-04-30 10:25:37 -0500 |
---|---|---|
committer | Devin J. Pohly <djpohly@gmail.com> | 2020-04-30 10:25:37 -0500 |
commit | 3973ea5bfe9676bf8673781a966c933b0af0a232 (patch) | |
tree | 824b3b03ec5ffa1e09aa529548e818c152242880 | |
parent | 53e71957f8823e793d2bd98cf23589774e65209a (diff) |
unify movemouse/resizemouse
-rw-r--r-- | config.def.h | 4 | ||||
-rw-r--r-- | dwl.c | 42 |
2 files changed, 18 insertions, 28 deletions
diff --git a/config.def.h b/config.def.h index 5487cee..9f8c2e3 100644 --- a/config.def.h +++ b/config.def.h @@ -78,7 +78,7 @@ static const Key keys[] = { }; static const Button buttons[] = { - { MODKEY, BTN_LEFT, movemouse, {0} }, + { MODKEY, BTN_LEFT, moveresize, {.ui = CurMove} }, { MODKEY, BTN_MIDDLE, togglefloating, {0} }, - { MODKEY, BTN_RIGHT, resizemouse, {0} }, + { MODKEY, BTN_RIGHT, moveresize, {.ui = CurResize} }, }; @@ -148,7 +148,7 @@ static void maprequest(struct wl_listener *listener, void *data); static void motionabsolute(struct wl_listener *listener, void *data); static void motionnotify(uint32_t time); static void motionrelative(struct wl_listener *listener, void *data); -static void movemouse(const Arg *arg); +static void moveresize(const Arg *arg); static void pointerfocus(Client *c, struct wlr_surface *surface, double sx, double sy, uint32_t time); static void quit(const Arg *arg); @@ -157,7 +157,6 @@ static void render(struct wlr_surface *surface, int sx, int sy, void *data); static void renderclients(Monitor *m, struct timespec *now); static void rendermon(struct wl_listener *listener, void *data); static void resize(Client *c, int x, int y, int w, int h, int interact); -static void resizemouse(const Arg *arg); static void run(char *startup_cmd); static void scalebox(struct wlr_box *box, float scale); static Client *selclient(void); @@ -733,7 +732,7 @@ motionrelative(struct wl_listener *listener, void *data) } void -movemouse(const Arg *arg) +moveresize(const Arg *arg) { struct wlr_surface *surface; grabc = xytoclient(cursor->x, cursor->y, &surface, &grabsx, &grabsy); @@ -742,8 +741,20 @@ movemouse(const Arg *arg) /* Float the window and tell motionnotify to grab it */ setfloating(grabc, 1); - cursor_mode = CurMove; - wlr_xcursor_manager_set_cursor_image(cursor_mgr, "fleur", cursor); + switch (cursor_mode = arg->ui) { + case CurMove: + wlr_xcursor_manager_set_cursor_image(cursor_mgr, "fleur", cursor); + break; + case CurResize: + /* Doesn't work for X11 output - the next absolute motion event + * returns the cursor to where it started */ + wlr_cursor_warp_closest(cursor, NULL, + grabc->geom.x + grabc->geom.width, + grabc->geom.y + grabc->geom.height); + wlr_xcursor_manager_set_cursor_image(cursor_mgr, + "bottom_right_corner", cursor); + break; + } } void @@ -940,27 +951,6 @@ resize(Client *c, int x, int y, int w, int h, int interact) } void -resizemouse(const Arg *arg) -{ - struct wlr_surface *surface; - grabc = xytoclient(cursor->x, cursor->y, &surface, &grabsx, &grabsy); - if (!grabc) - return; - - /* Doesn't work for X11 output - the next absolute motion event - * returns the cursor to where it started */ - wlr_cursor_warp_closest(cursor, NULL, - grabc->geom.x + grabc->geom.width, - grabc->geom.y + grabc->geom.height); - - /* Float the window and tell motionnotify to resize it */ - setfloating(grabc, 1); - cursor_mode = CurResize; - wlr_xcursor_manager_set_cursor_image(cursor_mgr, - "bottom_right_corner", cursor); -} - -void run(char *startup_cmd) { pid_t startup_pid = -1; |