Add focus to my single window
This commit is contained in:
parent
bad5007670
commit
9d64ca0124
5 changed files with 92 additions and 16 deletions
|
|
@ -8,11 +8,16 @@ context: *Context,
|
|||
|
||||
window_v1: *river.WindowV1,
|
||||
|
||||
width: i32 = 0,
|
||||
height: i32 = 0,
|
||||
width: u31 = 0,
|
||||
height: u31 = 0,
|
||||
x: i32 = 0,
|
||||
y: i32 = 0,
|
||||
|
||||
new_width: u31 = 0,
|
||||
new_height: u31 = 0,
|
||||
new_x: i32 = 0,
|
||||
new_y: i32 = 0,
|
||||
|
||||
link: wl.list.Link,
|
||||
|
||||
pub fn init(window: *Window, context: *Context, river_window_v1: *river.WindowV1) void {
|
||||
|
|
@ -28,6 +33,19 @@ pub fn init(window: *Window, context: *Context, river_window_v1: *river.WindowV1
|
|||
fn windowListener(river_window_v1: *river.WindowV1, event: river.WindowV1.Event, window: *Window) void {
|
||||
assert(window.window_v1 == river_window_v1);
|
||||
switch (event) {
|
||||
.closed => {
|
||||
river_window_v1.destroy();
|
||||
window.context.allocator.destroy(window);
|
||||
},
|
||||
.dimensions => |ev| {
|
||||
// Part of the protocol requires these are strictly greater-than zero
|
||||
assert(ev.width > 0 and ev.height > 0);
|
||||
window.width = @intCast(ev.width);
|
||||
window.height = @intCast(ev.height);
|
||||
},
|
||||
.dimensions_hint => {
|
||||
// TODO: Maybe could use this for floating windows
|
||||
},
|
||||
else => |ev| {
|
||||
log.debug("unhandled event: {s}", .{@tagName(ev)});
|
||||
},
|
||||
|
|
@ -35,18 +53,29 @@ fn windowListener(river_window_v1: *river.WindowV1, event: river.WindowV1.Event,
|
|||
}
|
||||
|
||||
pub fn manage(window: *Window) void {
|
||||
if (window.context.wm.outputs.length() == 0) {
|
||||
window.new_width = 0;
|
||||
window.new_height = 0;
|
||||
window.new_x = 0;
|
||||
window.new_y = 0;
|
||||
}
|
||||
|
||||
// TODO: Remove this -- just fullscreen for now
|
||||
if (window.width != window.context.wm.outputs.first().?.width or
|
||||
window.height != window.context.wm.outputs.first().?.height)
|
||||
{
|
||||
window.width = window.context.wm.outputs.first().?.width;
|
||||
window.height = window.context.wm.outputs.first().?.height;
|
||||
window.width = @intCast(window.context.wm.outputs.first().?.width);
|
||||
window.height = @intCast(window.context.wm.outputs.first().?.height);
|
||||
log.debug("setting window width={d} and height={d}", .{ window.width, window.height });
|
||||
}
|
||||
window.window_v1.proposeDimensions(window.width, window.height);
|
||||
// window.window_v1.setTiled(.{ .top = true, .bottom = true, .left = true, .right = true });
|
||||
window.window_v1.informFullscreen();
|
||||
// window.window_v1.informMaximized();
|
||||
}
|
||||
|
||||
pub fn render(window: *Window) void {
|
||||
_ = window;
|
||||
_ = window; // TODO ???
|
||||
}
|
||||
|
||||
const std = @import("std");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue