diff --git a/src/backends/xlib/mod.rs b/src/backends/xlib/mod.rs index 3d8d78f..87d4f85 100644 --- a/src/backends/xlib/mod.rs +++ b/src/backends/xlib/mod.rs @@ -774,7 +774,7 @@ impl WindowServerBackend for XLib { if new_pos.is_some() { mask |= xlib::CWX | xlib::CWY; } - if new_size.is_some() { + if new_size.is_some() && wc.width > 1 && wc.height > 1 { mask |= xlib::CWWidth | xlib::CWHeight; } if new_border.is_some() { diff --git a/src/state.rs b/src/state.rs index 325c4eb..6e545f3 100644 --- a/src/state.rs +++ b/src/state.rs @@ -425,11 +425,11 @@ where self.button_event(&event); } WindowEvent::MapRequestEvent(MapEvent { window }) => { + self.backend.handle_event(event); + if !self.clients.contains(&window) { self.new_client(window); } - - self.backend.handle_event(event); } WindowEvent::UnmapEvent(event) => { self.clients.remove(&event.window); @@ -444,8 +444,17 @@ where WindowEvent::ConfigureEvent(ConfigureEvent { window, .. }) => { - if !self.clients.contains(&window) { - self.backend.handle_event(event); + match self.clients.get(&window) { + ClientEntry::Tiled(client) + | ClientEntry::Floating(client) => { + self.backend.configure_window( + window, + Some(client.size), + Some(client.position), + None, + ) + } + ClientEntry::Vacant => self.backend.handle_event(event), } // TODO // match self.clients.get(&event.window).into_option() { @@ -520,7 +529,7 @@ where } fn rotate_virtual_screen(&mut self, dir: Direction) { - info!("rotateing VS: {:?}", dir); + info!("rotating VS: {:?}", dir); match dir { Direction::West(n) => self.clients.rotate_left(n), @@ -713,6 +722,7 @@ where None, Some(self.clients.get_border()), ); + self.clients.insert(client).unwrap(); self.arrange_clients(); @@ -800,8 +810,6 @@ where } } MoveResizeInfo::Resize(info) => { - info!("do_resize: {:#?}", info); - let (x, y) = ( event.position.x - info.starting_cursor_pos.x, event.position.y - info.starting_cursor_pos.y,