summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dwl.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/dwl.c b/dwl.c
index 3898af3..6b99888 100644
--- a/dwl.c
+++ b/dwl.c
@@ -162,6 +162,7 @@ static void run(char *startup_cmd);
static void scalebox(struct wlr_box *box, float scale);
static Client *selclient(void);
static void setcursor(struct wl_listener *listener, void *data);
+static void setfloating(Client *c, int floating);
static void setlayout(const Arg *arg);
static void setmfact(const Arg *arg);
static void setmon(Client *c, Monitor *m);
@@ -736,8 +737,7 @@ movemouse(const Arg *arg)
return;
/* Float the window and tell motionnotify to grab it */
- if (!grabc->isfloating && selmon->lt[selmon->sellt]->arrange)
- grabc->isfloating = 1;
+ setfloating(grabc, 1);
cursor_mode = CurMove;
wlr_xcursor_manager_set_cursor_image(cursor_mgr, "fleur", cursor);
}
@@ -957,8 +957,7 @@ resizemouse(const Arg *arg)
grabc->x + grabc->w, grabc->y + grabc->h);
/* Float the window and tell motionnotify to resize it */
- if (!grabc->isfloating && selmon->lt[selmon->sellt]->arrange)
- grabc->isfloating = 1;
+ setfloating(grabc, 1);
cursor_mode = CurResize;
wlr_xcursor_manager_set_cursor_image(cursor_mgr,
"bottom_right_corner", cursor);
@@ -1064,6 +1063,14 @@ setcursor(struct wl_listener *listener, void *data)
}
void
+setfloating(Client *c, int floating)
+{
+ if (c->isfloating == floating)
+ return;
+ c->isfloating = floating;
+}
+
+void
setlayout(const Arg *arg)
{
if (!arg || !arg->v || arg->v != selmon->lt[selmon->sellt])
@@ -1282,7 +1289,7 @@ togglefloating(const Arg *arg)
if (!sel)
return;
/* return if fullscreen */
- sel->isfloating = !sel->isfloating /* || sel->isfixed */;
+ setfloating(sel, !sel->isfloating /* || sel->isfixed */);
}
void