mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2025-12-23 10:11:54 +00:00
Desktop: Switch to immediate frame present mode on Mac (#3495)
* mac immediate render mode * fix key modifier flags on mac
This commit is contained in:
parent
123108c813
commit
f705d0080d
2 changed files with 35 additions and 2 deletions
|
|
@ -1,6 +1,7 @@
|
|||
use cef::sys::{cef_key_event_type_t, cef_mouse_button_type_t};
|
||||
use cef::sys::{cef_event_flags_t, cef_key_event_type_t, cef_mouse_button_type_t};
|
||||
use cef::{Browser, ImplBrowser, ImplBrowserHost, KeyEvent, MouseEvent};
|
||||
use winit::event::{ButtonSource, ElementState, MouseButton, MouseScrollDelta, WindowEvent};
|
||||
use winit::keyboard::Key;
|
||||
|
||||
mod keymap;
|
||||
use keymap::{ToCharRepresentation, ToNativeKeycode, ToVKBits};
|
||||
|
|
@ -81,6 +82,35 @@ pub(crate) fn handle_window_event(browser: &Browser, input_state: &mut InputStat
|
|||
|
||||
key_event.modifiers = input_state.cef_modifiers(&event.location, event.repeat).into();
|
||||
|
||||
match (&event.logical_key, event.state) {
|
||||
(Key::Named(winit::keyboard::NamedKey::Control), ElementState::Pressed) => {
|
||||
key_event.modifiers |= cef_event_flags_t::EVENTFLAG_CONTROL_DOWN.0;
|
||||
}
|
||||
(Key::Named(winit::keyboard::NamedKey::Control), ElementState::Released) => {
|
||||
key_event.modifiers &= !(cef_event_flags_t::EVENTFLAG_CONTROL_DOWN.0);
|
||||
}
|
||||
(Key::Named(winit::keyboard::NamedKey::Shift), ElementState::Pressed) => {
|
||||
key_event.modifiers |= cef_event_flags_t::EVENTFLAG_SHIFT_DOWN.0;
|
||||
}
|
||||
(Key::Named(winit::keyboard::NamedKey::Shift), ElementState::Released) => {
|
||||
key_event.modifiers &= !(cef_event_flags_t::EVENTFLAG_SHIFT_DOWN.0);
|
||||
}
|
||||
(Key::Named(winit::keyboard::NamedKey::Alt), ElementState::Pressed) => {
|
||||
key_event.modifiers |= cef_event_flags_t::EVENTFLAG_ALT_DOWN.0;
|
||||
}
|
||||
(Key::Named(winit::keyboard::NamedKey::Alt), ElementState::Released) => {
|
||||
key_event.modifiers &= !(cef_event_flags_t::EVENTFLAG_ALT_DOWN.0);
|
||||
}
|
||||
(Key::Named(winit::keyboard::NamedKey::Meta), ElementState::Pressed) => {
|
||||
key_event.modifiers |= cef_event_flags_t::EVENTFLAG_COMMAND_DOWN.0;
|
||||
}
|
||||
(Key::Named(winit::keyboard::NamedKey::Meta), ElementState::Released) => {
|
||||
key_event.modifiers &= !(cef_event_flags_t::EVENTFLAG_COMMAND_DOWN.0);
|
||||
}
|
||||
|
||||
_ => {}
|
||||
}
|
||||
|
||||
key_event.windows_key_code = match &event.logical_key {
|
||||
winit::keyboard::Key::Named(named) => named.to_vk_bits(),
|
||||
winit::keyboard::Key::Character(char) => char.chars().next().unwrap_or_default().to_vk_bits(),
|
||||
|
|
|
|||
|
|
@ -37,10 +37,13 @@ impl RenderState {
|
|||
format: surface_format,
|
||||
width: size.width,
|
||||
height: size.height,
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
present_mode: surface_caps.present_modes[0],
|
||||
#[cfg(target_os = "macos")]
|
||||
present_mode: wgpu::PresentMode::Immediate,
|
||||
alpha_mode: surface_caps.alpha_modes[0],
|
||||
view_formats: vec![],
|
||||
desired_maximum_frame_latency: 2,
|
||||
desired_maximum_frame_latency: 1,
|
||||
};
|
||||
|
||||
surface.configure(&context.device, &config);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue