fixed window borders
This commit is contained in:
parent
b47f245250
commit
91b5c91bd5
|
@ -28,6 +28,7 @@ pub trait WindowServerBackend {
|
|||
window: Self::Window,
|
||||
new_size: Option<Point<i32>>,
|
||||
new_pos: Option<Point<i32>>,
|
||||
new_border: Option<i32>,
|
||||
);
|
||||
|
||||
fn screen_size(&self) -> Point<i32>;
|
||||
|
@ -38,10 +39,10 @@ pub trait WindowServerBackend {
|
|||
fn move_cursor(&self, window: Option<Self::Window>, position: Point<i32>);
|
||||
|
||||
fn resize_window(&self, window: Self::Window, new_size: Point<i32>) {
|
||||
self.configure_window(window, Some(new_size), None);
|
||||
self.configure_window(window, Some(new_size), None, None);
|
||||
}
|
||||
|
||||
fn move_window(&self, window: Self::Window, new_pos: Point<i32>) {
|
||||
self.configure_window(window, None, Some(new_pos));
|
||||
self.configure_window(window, None, Some(new_pos), None);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#![allow(unused_variables, dead_code)]
|
||||
use log::{debug, error, warn};
|
||||
use log::{error, warn};
|
||||
use std::{ffi::CString, rc::Rc};
|
||||
|
||||
use thiserror::Error;
|
||||
|
@ -656,6 +656,7 @@ impl WindowServerBackend for XLib {
|
|||
event.window,
|
||||
Some(event.size),
|
||||
Some(event.position),
|
||||
None,
|
||||
);
|
||||
}
|
||||
_ => {}
|
||||
|
@ -765,6 +766,7 @@ impl WindowServerBackend for XLib {
|
|||
window: Self::Window,
|
||||
new_size: Option<super::window_event::Point<i32>>,
|
||||
new_pos: Option<super::window_event::Point<i32>>,
|
||||
new_border: Option<i32>,
|
||||
) {
|
||||
let position = new_pos.unwrap_or(Point::new(0, 0));
|
||||
let size = new_size.unwrap_or(Point::new(0, 0));
|
||||
|
@ -773,7 +775,7 @@ impl WindowServerBackend for XLib {
|
|||
y: position.y,
|
||||
width: size.x,
|
||||
height: size.y,
|
||||
border_width: 0,
|
||||
border_width: new_border.unwrap_or(0),
|
||||
sibling: 0,
|
||||
stack_mode: 0,
|
||||
};
|
||||
|
@ -786,6 +788,9 @@ impl WindowServerBackend for XLib {
|
|||
if new_size.is_some() {
|
||||
mask |= xlib::CWWidth | xlib::CWHeight;
|
||||
}
|
||||
if new_border.is_some() {
|
||||
mask |= xlib::CWBorderWidth;
|
||||
}
|
||||
|
||||
u32::from(mask)
|
||||
};
|
||||
|
|
32
src/state.rs
32
src/state.rs
|
@ -362,7 +362,9 @@ where
|
|||
|
||||
match event {
|
||||
WindowEvent::KeyEvent(event) => {
|
||||
self.handle_keybinds(&event);
|
||||
if event.state == KeyState::Pressed {
|
||||
self.handle_keybinds(&event);
|
||||
}
|
||||
}
|
||||
WindowEvent::ButtonEvent(event) => {
|
||||
self.button_event(&event);
|
||||
|
@ -421,16 +423,14 @@ where
|
|||
|
||||
// TODO: change this somehow cuz I'm not a big fan of this "hardcoded" keybind stuff
|
||||
fn handle_keybinds(&mut self, event: &KeyEvent<B::Window>) {
|
||||
if event.state == KeyState::Released {
|
||||
// I'm not sure if this has to be a Rc<RefCell>> or if it would be better as a Cell<>
|
||||
let keybinds = self.keybinds.clone();
|
||||
// I'm not sure if this has to be a Rc<RefCell>> or if it would be better as a Cell<>
|
||||
let keybinds = self.keybinds.clone();
|
||||
|
||||
for kb in keybinds.borrow().iter() {
|
||||
if kb.key.key == event.keycode
|
||||
&& kb.key.modifiers == event.modifierstate
|
||||
{
|
||||
kb.call(self, event);
|
||||
}
|
||||
for kb in keybinds.borrow().iter() {
|
||||
if kb.key.key == event.keycode
|
||||
&& kb.key.modifiers == event.modifierstate
|
||||
{
|
||||
kb.call(self, event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -645,15 +645,15 @@ where
|
|||
Client::new_default(window)
|
||||
};
|
||||
|
||||
// TODO
|
||||
//self.xlib
|
||||
//.configure_client(&client, self.clients.get_border());
|
||||
self.backend.configure_window(
|
||||
window,
|
||||
None,
|
||||
None,
|
||||
Some(self.clients.get_border()),
|
||||
);
|
||||
self.clients.insert(client).unwrap();
|
||||
self.arrange_clients();
|
||||
|
||||
// TODO
|
||||
//self.xlib.map_window(window);
|
||||
|
||||
self.focus_client(&window, true);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue