cursor: allow commands to override cursor operations

Now that we properly handle state changes during cursor operations,
blocking these commands if the target view is the target of a cursor
operation is unnecessary complexity. It is also inconsistent as we
don't block changing the tags of the view.
This commit is contained in:
Isaac Freund 2021-07-23 11:44:10 +02:00
parent 969d7b0344
commit f86291169e
No known key found for this signature in database
GPG key ID: 86DED400DDFD7A11
5 changed files with 3 additions and 23 deletions

View file

@ -179,17 +179,13 @@ pub fn setTheme(self: *Self, theme: ?[*:0]const u8, _size: ?u32) !void {
}
}
pub fn isCursorActionTarget(self: Self, view: *const View) bool {
return switch (self.mode) {
pub fn handleViewUnmap(self: *Self, view: *View) void {
if (switch (self.mode) {
.passthrough => false,
.down => |target_view| target_view == view,
.move => |target_view| target_view == view,
.resize => |data| data.view == view,
};
}
pub fn handleViewUnmap(self: *Self, view: *View) void {
if (self.isCursorActionTarget(view)) {
}) {
self.mode = .passthrough;
self.clearFocus();
}

View file

@ -178,13 +178,6 @@ pub fn inputAllowed(self: Self, wlr_surface: *wlr.Surface) bool {
true;
}
pub fn isCursorActionTarget(self: Self, view: *View) bool {
var it = self.seats.first;
return while (it) |node| : (it = node.next) {
if (node.data.cursor.isCursorActionTarget(view)) break true;
} else false;
}
fn handleInhibitActivate(
listener: *wl.Listener(*wlr.InputInhibitManager),
input_inhibit_manager: *wlr.InputInhibitManager,

View file

@ -155,8 +155,5 @@ fn getView(seat: *Seat) ?*View {
// Do not touch fullscreen views
if (view.pending.fullscreen) return null;
// Do not touch views which are the target of a cursor action
if (server.input_manager.isCursorActionTarget(view)) return null;
return view;
}

View file

@ -44,9 +44,6 @@ pub fn toggleFloat(
// Don't float fullscreen views
if (view.pending.fullscreen) return;
// Don't modify views which are the target of a cursor action
if (server.input_manager.isCursorActionTarget(view)) return;
view.pending.float = !view.pending.float;
view.applyPending();
}

View file

@ -35,9 +35,6 @@ pub fn toggleFullscreen(
if (seat.focused == .view) {
const view = seat.focused.view;
// Don't modify views which are the target of a cursor action
if (server.input_manager.isCursorActionTarget(view)) return;
view.pending.fullscreen = !view.pending.fullscreen;
view.applyPending();
}