mirror of
https://github.com/rust-windowing/winit.git
synced 2026-08-29 21:00:04 -04:00
increase the buffer size; proper IC focus/unfocus
This commit is contained in:
@@ -290,9 +290,10 @@ impl EventsLoop {
|
||||
let written = unsafe {
|
||||
use std::str;
|
||||
|
||||
const BUFF_SIZE: usize = 512;
|
||||
let mut windows = self.windows.lock().unwrap();
|
||||
let window_data = windows.get_mut(&WindowId(xwindow)).unwrap();
|
||||
let mut buffer: [u8; 16] = [mem::uninitialized(); 16];
|
||||
let mut buffer: [u8; BUFF_SIZE] = [mem::uninitialized(); BUFF_SIZE];
|
||||
let mut keysym = 0;
|
||||
let count = (self.display.xlib.Xutf8LookupString)(window_data.ic, xkev,
|
||||
mem::transmute(buffer.as_mut_ptr()),
|
||||
@@ -442,10 +443,16 @@ impl EventsLoop {
|
||||
}
|
||||
ffi::XI_FocusIn => {
|
||||
let xev: &ffi::XIFocusInEvent = unsafe { &*(xev.data as *const _) };
|
||||
let mut windows = self.windows.lock().unwrap();
|
||||
let window_data = windows.get_mut(&WindowId(xev.event)).unwrap();
|
||||
unsafe { (self.display.xlib.XSetICFocus)(window_data.ic) };
|
||||
callback(Event::WindowEvent { window_id: mkwid(xev.event), event: Focused(true) })
|
||||
}
|
||||
ffi::XI_FocusOut => {
|
||||
let xev: &ffi::XIFocusOutEvent = unsafe { &*(xev.data as *const _) };
|
||||
let mut windows = self.windows.lock().unwrap();
|
||||
let window_data = windows.get_mut(&WindowId(xev.event)).unwrap();
|
||||
unsafe { (self.display.xlib.XUnsetICFocus)(window_data.ic) };
|
||||
callback(Event::WindowEvent { window_id: mkwid(xev.event), event: Focused(false) })
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user