Take future borders into account for surface size

This commit is contained in:
Isaac Freund 2020-04-04 23:26:15 +02:00
parent 149dd488a9
commit ea88cca35f
No known key found for this signature in database
GPG key ID: 86DED400DDFD7A11
3 changed files with 15 additions and 10 deletions

View file

@ -109,10 +109,10 @@ pub const Output = struct {
// and need to render that buffer until the transaction is complete. // and need to render that buffer until the transaction is complete.
if (view.stashed_buffer) |buffer| { if (view.stashed_buffer) |buffer| {
var box = c.wlr_box{ var box = c.wlr_box{
.x = view.current_box.x, .x = view.current_box.x + @intCast(i32, view.root.border_width),
.y = view.current_box.y, .y = view.current_box.y + @intCast(i32, view.root.border_width),
.width = @intCast(c_int, view.current_box.width), .width = @intCast(c_int, view.current_box.width - view.root.border_width * 2),
.height = @intCast(c_int, view.current_box.height), .height = @intCast(c_int, view.current_box.height - view.root.border_width * 2),
}; };
// Scale the box to the output's current scaling factor // Scale the box to the output's current scaling factor
@ -176,14 +176,14 @@ pub const Output = struct {
var ox: f64 = 0.0; var ox: f64 = 0.0;
var oy: f64 = 0.0; var oy: f64 = 0.0;
c.wlr_output_layout_output_coords(view.root.wlr_output_layout, output, &ox, &oy); c.wlr_output_layout_output_coords(view.root.wlr_output_layout, output, &ox, &oy);
ox += @intToFloat(f64, view.current_box.x + sx); ox += @intToFloat(f64, view.current_box.x + @intCast(i32, view.root.border_width) + sx);
oy += @intToFloat(f64, view.current_box.y + sy); oy += @intToFloat(f64, view.current_box.y + @intCast(i32, view.root.border_width) + sy);
var box = c.wlr_box{ var box = c.wlr_box{
.x = @floatToInt(c_int, ox), .x = @floatToInt(c_int, ox),
.y = @floatToInt(c_int, oy), .y = @floatToInt(c_int, oy),
.width = @intCast(c_int, surface.current.width), .width = surface.current.width,
.height = @intCast(c_int, surface.current.height), .height = surface.current.height,
}; };
// Scale the box to the output's current scaling factor // Scale the box to the output's current scaling factor

View file

@ -34,6 +34,9 @@ pub const Root = struct {
/// Percentage of the total screen that the master section takes up. /// Percentage of the total screen that the master section takes up.
master_factor: f64, master_factor: f64,
/// Width of borders in pixels
border_width: u32,
/// Number of pending configures sent in the current transaction. /// Number of pending configures sent in the current transaction.
/// A value of 0 means there is no current transaction. /// A value of 0 means there is no current transaction.
pending_configures: u32, pending_configures: u32,
@ -63,6 +66,8 @@ pub const Root = struct {
self.master_factor = 0.6; self.master_factor = 0.6;
self.border_width = 4;
self.pending_configures = 0; self.pending_configures = 0;
self.transaction_timer = null; self.transaction_timer = null;

View file

@ -93,8 +93,8 @@ pub const View = struct {
if (self.pending_box) |pending_box| { if (self.pending_box) |pending_box| {
self.pending_serial = c.wlr_xdg_toplevel_set_size( self.pending_serial = c.wlr_xdg_toplevel_set_size(
self.wlr_xdg_surface, self.wlr_xdg_surface,
pending_box.width, pending_box.width - self.root.border_width * 2,
pending_box.height, pending_box.height - self.root.border_width * 2,
); );
} else { } else {
// TODO: log warning // TODO: log warning