fix: transient windows appear as 1x1 sized

This commit is contained in:
Janis 2021-12-02 18:13:00 +01:00
parent 81a49e8290
commit 7961c97d2f
2 changed files with 16 additions and 8 deletions

View file

@ -774,7 +774,7 @@ impl WindowServerBackend for XLib {
if new_pos.is_some() { if new_pos.is_some() {
mask |= xlib::CWX | xlib::CWY; 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; mask |= xlib::CWWidth | xlib::CWHeight;
} }
if new_border.is_some() { if new_border.is_some() {

View file

@ -425,11 +425,11 @@ where
self.button_event(&event); self.button_event(&event);
} }
WindowEvent::MapRequestEvent(MapEvent { window }) => { WindowEvent::MapRequestEvent(MapEvent { window }) => {
self.backend.handle_event(event);
if !self.clients.contains(&window) { if !self.clients.contains(&window) {
self.new_client(window); self.new_client(window);
} }
self.backend.handle_event(event);
} }
WindowEvent::UnmapEvent(event) => { WindowEvent::UnmapEvent(event) => {
self.clients.remove(&event.window); self.clients.remove(&event.window);
@ -444,8 +444,17 @@ where
WindowEvent::ConfigureEvent(ConfigureEvent { WindowEvent::ConfigureEvent(ConfigureEvent {
window, .. window, ..
}) => { }) => {
if !self.clients.contains(&window) { match self.clients.get(&window) {
self.backend.handle_event(event); 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 // TODO
// match self.clients.get(&event.window).into_option() { // match self.clients.get(&event.window).into_option() {
@ -520,7 +529,7 @@ where
} }
fn rotate_virtual_screen(&mut self, dir: Direction) { fn rotate_virtual_screen(&mut self, dir: Direction) {
info!("rotateing VS: {:?}", dir); info!("rotating VS: {:?}", dir);
match dir { match dir {
Direction::West(n) => self.clients.rotate_left(n), Direction::West(n) => self.clients.rotate_left(n),
@ -713,6 +722,7 @@ where
None, None,
Some(self.clients.get_border()), Some(self.clients.get_border()),
); );
self.clients.insert(client).unwrap(); self.clients.insert(client).unwrap();
self.arrange_clients(); self.arrange_clients();
@ -800,8 +810,6 @@ where
} }
} }
MoveResizeInfo::Resize(info) => { MoveResizeInfo::Resize(info) => {
info!("do_resize: {:#?}", info);
let (x, y) = ( let (x, y) = (
event.position.x - info.starting_cursor_pos.x, event.position.x - info.starting_cursor_pos.x,
event.position.y - info.starting_cursor_pos.y, event.position.y - info.starting_cursor_pos.y,