Compare commits

..

No commits in common. "fa6ea11d57e151a99bbb0ef05c66f5d9793b48c0" and "2d65864e74788eb747acb87ee586d80d9053ff84" have entirely different histories.

3 changed files with 7 additions and 25 deletions

View file

@ -68,17 +68,17 @@ pub fn receive(self: *Self, _: tp.pid_ref, m: tp.message) error{Exit}!bool {
self.active = true; self.active = true;
self.move_to(y, ypx); self.move_to(y, ypx);
return true; return true;
} else if (try m.match(.{ "B", input.event.release, @intFromEnum(input.mouse.BUTTON1), tp.more })) { } else if (try m.match(.{ "B", input.event.release, tp.more })) {
self.active = false; self.active = false;
return true; return true;
} else if (try m.match(.{ "D", input.event.press, @intFromEnum(input.mouse.BUTTON1), tp.any, tp.any, tp.extract(&y), tp.any, tp.extract(&ypx) })) { } else if (try m.match(.{ "D", input.event.press, @intFromEnum(input.mouse.BUTTON1), tp.any, tp.any, tp.extract(&y), tp.any, tp.extract(&ypx) })) {
self.active = true; self.active = true;
self.move_to(y, ypx); self.move_to(y, ypx);
return true; return true;
} else if (try m.match(.{ "B", input.event.release, @intFromEnum(input.mouse.BUTTON1), tp.more })) { } else if (try m.match(.{ "B", input.event.release, tp.more })) {
self.active = false; self.active = false;
return true; return true;
} else if (try m.match(.{ "D", input.event.release, @intFromEnum(input.mouse.BUTTON1), tp.more })) { } else if (try m.match(.{ "D", input.event.release, tp.more })) {
self.active = false; self.active = false;
return true; return true;
} else if (try m.match(.{ "H", tp.extract(&self.hover) })) { } else if (try m.match(.{ "H", tp.extract(&self.hover) })) {

View file

@ -206,7 +206,7 @@ pub const TabBar = struct {
if (self.tabs[dragging].widget.dynamic_cast(Tab.ButtonType)) |btn| btn.hover = false; if (self.tabs[dragging].widget.dynamic_cast(Tab.ButtonType)) |btn| btn.hover = false;
self.update(); self.update();
for (self.widget_list.widgets.items) |*widgetstate| if (widgetstate.widget.dynamic_cast(Tab.ButtonType)) |btn| if (btn.drag_pos) |_| for (self.widget_list.widgets.items) |*widgetstate| if (widgetstate.widget.dynamic_cast(Tab.ButtonType)) |btn| if (btn.drag_pos) |_|
tui.update_drag_source(&widgetstate.widget); tui.set_drag_source(&widgetstate.widget);
tui.refresh_hover(); tui.refresh_hover();
} }
} }

View file

@ -10,7 +10,6 @@ const builtin = @import("builtin");
const file_link = @import("file_link"); const file_link = @import("file_link");
pub const renderer = @import("renderer"); pub const renderer = @import("renderer");
const input = @import("input");
const command = @import("command"); const command = @import("command");
const EventHandler = @import("EventHandler"); const EventHandler = @import("EventHandler");
const keybind = @import("keybind"); const keybind = @import("keybind");
@ -58,7 +57,6 @@ last_hover_y: c_int = -1,
commands: Commands = undefined, commands: Commands = undefined,
logger: log.Logger, logger: log.Logger,
drag_source: ?*Widget = null, drag_source: ?*Widget = null,
drag_button: ?input.MouseType = null,
dark_theme: Widget.Theme, dark_theme: Widget.Theme,
dark_parsed_theme: ?std.json.Parsed(Widget.Theme), dark_parsed_theme: ?std.json.Parsed(Widget.Theme),
light_theme: Widget.Theme, light_theme: Widget.Theme,
@ -589,9 +587,7 @@ fn dispatch_mouse(ctx: *anyopaque, y: c_int, x: c_int, cbor_msg: []const u8) voi
self.unrendered_input_events_count += 1; self.unrendered_input_events_count += 1;
const send_func = if (self.drag_source) |_| &send_mouse_drag else &send_mouse; const send_func = if (self.drag_source) |_| &send_mouse_drag else &send_mouse;
send_func(self, y, x, from, m) catch |e| self.logger.err("dispatch mouse", e); send_func(self, y, x, from, m) catch |e| self.logger.err("dispatch mouse", e);
var btn: input.MouseType = 0; self.drag_source = null;
_ = m.match(.{ tp.string, tp.any, tp.extract(&btn), tp.more }) catch false;
self.maybe_reset_drag_source_internal(btn);
} }
fn dispatch_mouse_drag(ctx: *anyopaque, y: c_int, x: c_int, cbor_msg: []const u8) void { fn dispatch_mouse_drag(ctx: *anyopaque, y: c_int, x: c_int, cbor_msg: []const u8) void {
@ -600,9 +596,7 @@ fn dispatch_mouse_drag(ctx: *anyopaque, y: c_int, x: c_int, cbor_msg: []const u8
const m: tp.message = .{ .buf = cbor_msg }; const m: tp.message = .{ .buf = cbor_msg };
const from = tp.self_pid(); const from = tp.self_pid();
self.unrendered_input_events_count += 1; self.unrendered_input_events_count += 1;
var btn: input.MouseType = undefined; if (self.drag_source == null) self.drag_source = self.find_coord_widget(@intCast(y), @intCast(x));
if (m.match(.{ tp.string, tp.any, tp.extract(&btn), tp.more }) catch false)
if (self.drag_source == null) self.set_drag_source(self.find_coord_widget(@intCast(y), @intCast(x)), btn);
self.send_mouse_drag(y, x, from, m) catch |e| self.logger.err("dispatch mouse", e); self.send_mouse_drag(y, x, from, m) catch |e| self.logger.err("dispatch mouse", e);
} }
@ -1445,26 +1439,14 @@ pub fn get_keybind_mode() ?Mode {
return self.input_mode_ orelse self.delayed_init_input_mode; return self.input_mode_ orelse self.delayed_init_input_mode;
} }
pub fn update_drag_source(drag_source: *Widget) void { pub fn set_drag_source(drag_source: *Widget) void {
const self = current(); const self = current();
self.drag_source = drag_source; self.drag_source = drag_source;
} }
fn set_drag_source(self: *Self, drag_source: ?*Widget, btn: input.MouseType) void {
self.drag_source = drag_source;
self.drag_button = btn;
}
pub fn reset_drag_context() void { pub fn reset_drag_context() void {
const self = current(); const self = current();
self.drag_source = null; self.drag_source = null;
self.drag_button = 0;
}
fn maybe_reset_drag_source_internal(self: *Self, btn: input.MouseType) void {
if (self.drag_button != btn) return;
self.drag_source = null;
self.drag_button = 0;
} }
pub fn need_render() void { pub fn need_render() void {