View: fix checks to respect client side move/resize

This commit is contained in:
Isaac Freund 2021-10-30 12:54:23 +02:00
parent b986196118
commit 4b0c5acc46
No known key found for this signature in database
GPG key ID: 86DED400DDFD7A11
3 changed files with 5 additions and 5 deletions

View file

@ -311,7 +311,7 @@ fn handleCommit(listener: *wl.Listener(*wlr.Surface), surface: *wlr.Surface) voi
view.surface_box = new_box; view.surface_box = new_box;
// If the client has decided to resize itself and the view is floating, // If the client has decided to resize itself and the view is floating,
// then respect that resize. // then respect that resize.
if (view.pending.float and size_changed) { if ((self.view.pending.float or self.view.output.pending.layout == null) and size_changed) {
view.pending.box.width = new_box.width; view.pending.box.width = new_box.width;
view.pending.box.height = new_box.height; view.pending.box.height = new_box.height;
view.applyPending(); view.applyPending();
@ -348,7 +348,7 @@ fn handleRequestMove(
) void { ) void {
const self = @fieldParentPtr(Self, "request_move", listener); const self = @fieldParentPtr(Self, "request_move", listener);
const seat = @intToPtr(*Seat, event.seat.seat.data); const seat = @intToPtr(*Seat, event.seat.seat.data);
if ((self.view.pending.float or self.view.output.current.layout == null) and !self.view.pending.fullscreen) if ((self.view.pending.float or self.view.output.pending.layout == null) and !self.view.pending.fullscreen)
seat.cursor.enterMode(.move, self.view); seat.cursor.enterMode(.move, self.view);
} }
@ -356,7 +356,7 @@ fn handleRequestMove(
fn handleRequestResize(listener: *wl.Listener(*wlr.XdgToplevel.event.Resize), event: *wlr.XdgToplevel.event.Resize) void { fn handleRequestResize(listener: *wl.Listener(*wlr.XdgToplevel.event.Resize), event: *wlr.XdgToplevel.event.Resize) void {
const self = @fieldParentPtr(Self, "request_resize", listener); const self = @fieldParentPtr(Self, "request_resize", listener);
const seat = @intToPtr(*Seat, event.seat.seat.data); const seat = @intToPtr(*Seat, event.seat.seat.data);
if ((self.view.pending.float or self.view.output.current.layout == null) and !self.view.pending.fullscreen) if ((self.view.pending.float or self.view.output.pending.layout == null) and !self.view.pending.fullscreen)
seat.cursor.enterMode(.resize, self.view); seat.cursor.enterMode(.resize, self.view);
} }

View file

@ -140,7 +140,7 @@ fn apply(view: *View) void {
// dimensions are set by a layout client. If however the views are // dimensions are set by a layout client. If however the views are
// unarranged, leave them as non-floating so the next active layout can // unarranged, leave them as non-floating so the next active layout can
// affect them. // affect them.
if (view.output.current.layout != null) if (view.output.pending.layout != null)
view.pending.float = true; view.pending.float = true;
view.float_box = view.pending.box; view.float_box = view.pending.box;

View file

@ -38,7 +38,7 @@ pub fn toggleFloat(
// If views are unarranged, don't allow changing the views float status. // If views are unarranged, don't allow changing the views float status.
// It would just lead to confusing because this state would not be // It would just lead to confusing because this state would not be
// visible immediately, only after a layout is connected. // visible immediately, only after a layout is connected.
if (view.output.current.layout == null) if (view.output.pending.layout == null)
return; return;
// Don't float fullscreen views // Don't float fullscreen views