Skip to content

Commit

Permalink
Merge pull request #101 from mahkoh/jorth/fix-tl-change-extents
Browse files Browse the repository at this point in the history
tree: fix toplevel float extent memoization
  • Loading branch information
mahkoh authored Feb 19, 2024
2 parents bd3872a + 062bcb2 commit 8555e9e
Show file tree
Hide file tree
Showing 7 changed files with 14 additions and 20 deletions.
7 changes: 1 addition & 6 deletions src/ifs/wl_seat.rs
Original file line number Diff line number Diff line change
Expand Up @@ -369,12 +369,7 @@ impl WlSeatGlobal {
if old_ws.id == ws.id {
return;
}
let cn = match tl
.tl_data()
.parent
.get()
.and_then(|p| p.node_into_containing_node())
{
let cn = match tl.tl_data().parent.get() {
Some(cn) => cn,
_ => return,
};
Expand Down
6 changes: 1 addition & 5 deletions src/ifs/wl_surface/x_surface/xwindow.rs
Original file line number Diff line number Diff line change
Expand Up @@ -385,14 +385,10 @@ impl ToplevelNode for Xwindow {
self.x.surface.set_output(&ws.output.get());
}

fn tl_change_extents(self: Rc<Self>, rect: &Rect) {
fn tl_change_extents_impl(self: Rc<Self>, rect: &Rect) {
// log::info!("xwin {} change_extents {:?}", self.data.window_id, rect);
let old = self.data.info.extents.replace(*rect);
if old != *rect {
if self.toplevel_data.is_floating.get() {
self.toplevel_data.float_width.set(rect.width());
self.toplevel_data.float_height.set(rect.height());
}
if !self.data.info.override_redirect.get() {
self.data
.state
Expand Down
6 changes: 1 addition & 5 deletions src/ifs/wl_surface/xdg_surface/xdg_toplevel.rs
Original file line number Diff line number Diff line change
Expand Up @@ -483,15 +483,11 @@ impl ToplevelNode for XdgToplevel {
self.xdg.set_workspace(ws);
}

fn tl_change_extents(self: Rc<Self>, rect: &Rect) {
fn tl_change_extents_impl(self: Rc<Self>, rect: &Rect) {
let nw = rect.width();
let nh = rect.height();
let de = self.xdg.absolute_desired_extents.get();
if de.width() != nw || de.height() != nh {
if self.toplevel_data.is_floating.get() {
self.toplevel_data.float_width.set(rect.width());
self.toplevel_data.float_height.set(rect.height());
}
self.send_configure_checked(nw, nh);
self.xdg.do_send_configure();
// self.xdg.surface.client.flush();
Expand Down
2 changes: 1 addition & 1 deletion src/state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -522,7 +522,7 @@ impl State {
) {
node.clone().tl_set_workspace(workspace);
width += 2 * self.theme.sizes.border_width.get();
height += 2 * self.theme.sizes.border_width.get() + self.theme.sizes.title_height.get();
height += 2 * self.theme.sizes.border_width.get() + self.theme.sizes.title_height.get() + 1;
let output = workspace.output.get();
let output_rect = output.global.pos.get();
let position = {
Expand Down
2 changes: 1 addition & 1 deletion src/tree/container.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1440,7 +1440,7 @@ impl ToplevelNode for ContainerNode {
}
}

fn tl_change_extents(self: Rc<Self>, rect: &Rect) {
fn tl_change_extents_impl(self: Rc<Self>, rect: &Rect) {
self.toplevel_data.pos.set(*rect);
self.abs_x1.set(rect.x1());
self.abs_y1.set(rect.y1());
Expand Down
2 changes: 1 addition & 1 deletion src/tree/placeholder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ impl ToplevelNode for PlaceholderNode {
None
}

fn tl_change_extents(self: Rc<Self>, rect: &Rect) {
fn tl_change_extents_impl(self: Rc<Self>, rect: &Rect) {
self.toplevel.pos.set(*rect);
if let Some(p) = self.toplevel.parent.get() {
p.node_child_size_changed(self.deref(), rect.width(), rect.height());
Expand Down
9 changes: 8 additions & 1 deletion src/tree/toplevel.rs
Original file line number Diff line number Diff line change
Expand Up @@ -149,9 +149,16 @@ pub trait ToplevelNode: Node {
}

fn tl_change_extents(self: Rc<Self>, rect: &Rect) {
let _ = rect;
let data = self.tl_data();
if data.is_floating.get() {
data.float_width.set(rect.width());
data.float_height.set(rect.height());
}
self.tl_change_extents_impl(rect)
}

fn tl_change_extents_impl(self: Rc<Self>, rect: &Rect);

fn tl_close(self: Rc<Self>) {
// nothing
}
Expand Down

0 comments on commit 8555e9e

Please sign in to comment.