mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Dispatch keydown, keyup, and keypress events at appropriate times.
This commit is contained in:
parent
e999843183
commit
329ba56fca
8 changed files with 124 additions and 19 deletions
|
@ -43,7 +43,7 @@ use servo_msg::compositor_msg::{Blank, Epoch, FinishedLoading, IdleRenderState,
|
|||
use servo_msg::compositor_msg::{ReadyState, RenderingRenderState, RenderState, Scrollable};
|
||||
use servo_msg::constellation_msg::{ConstellationChan, ExitMsg, LoadUrlMsg};
|
||||
use servo_msg::constellation_msg::{NavigateMsg, LoadData, PipelineId, ResizedWindowMsg};
|
||||
use servo_msg::constellation_msg::{WindowSizeData, KeyState, Key};
|
||||
use servo_msg::constellation_msg::{WindowSizeData, KeyState, Key, KeyModifiers};
|
||||
use servo_msg::constellation_msg;
|
||||
use servo_util::geometry::{PagePx, ScreenPx, ViewportPx};
|
||||
use servo_util::memory::MemoryProfilerChan;
|
||||
|
@ -707,8 +707,8 @@ impl<Window: WindowMethods> IOCompositor<Window> {
|
|||
self.on_navigation_window_event(direction);
|
||||
}
|
||||
|
||||
KeyEvent(key, state) => {
|
||||
self.on_key_event(key, state);
|
||||
KeyEvent(key, state, modifiers) => {
|
||||
self.on_key_event(key, state, modifiers);
|
||||
}
|
||||
|
||||
FinishedWindowEvent => {
|
||||
|
@ -882,9 +882,9 @@ impl<Window: WindowMethods> IOCompositor<Window> {
|
|||
chan.send(NavigateMsg(direction))
|
||||
}
|
||||
|
||||
fn on_key_event(&self, key: Key, state: KeyState) {
|
||||
fn on_key_event(&self, key: Key, state: KeyState, modifiers: KeyModifiers) {
|
||||
let ConstellationChan(ref chan) = self.constellation_chan;
|
||||
chan.send(constellation_msg::KeyEvent(key, state))
|
||||
chan.send(constellation_msg::KeyEvent(key, state, modifiers))
|
||||
}
|
||||
|
||||
fn convert_buffer_requests_to_pipeline_requests_map(&self,
|
||||
|
|
|
@ -22,7 +22,7 @@ use servo_msg::constellation_msg::{IFrameSandboxState, IFrameUnsandboxed, InitLo
|
|||
use servo_msg::constellation_msg::{LoadCompleteMsg, LoadUrlMsg, LoadData, Msg, NavigateMsg};
|
||||
use servo_msg::constellation_msg::{NavigationType, PipelineId, RendererReadyMsg, ResizedWindowMsg};
|
||||
use servo_msg::constellation_msg::{ScriptLoadedURLInIFrameMsg, SubpageId, WindowSizeData};
|
||||
use servo_msg::constellation_msg::{KeyEvent, Key, KeyState};
|
||||
use servo_msg::constellation_msg::{KeyEvent, Key, KeyState, KeyModifiers};
|
||||
use servo_msg::constellation_msg;
|
||||
use servo_net::image_cache_task::{ImageCacheTask, ImageCacheTaskClient};
|
||||
use servo_net::resource_task::ResourceTask;
|
||||
|
@ -452,9 +452,9 @@ impl<LTF: LayoutTaskFactory, STF: ScriptTaskFactory> Constellation<LTF, STF> {
|
|||
debug!("constellation got window resize message");
|
||||
self.handle_resized_window_msg(new_size);
|
||||
}
|
||||
KeyEvent(key, state) => {
|
||||
KeyEvent(key, state, modifiers) => {
|
||||
debug!("constellation got key event message");
|
||||
self.handle_key_msg(key, state);
|
||||
self.handle_key_msg(key, state, modifiers);
|
||||
}
|
||||
}
|
||||
true
|
||||
|
@ -767,10 +767,10 @@ impl<LTF: LayoutTaskFactory, STF: ScriptTaskFactory> Constellation<LTF, STF> {
|
|||
.any(|current_frame| current_frame.contains(pipeline_id))
|
||||
}
|
||||
|
||||
fn handle_key_msg(&self, key: Key, state: KeyState) {
|
||||
fn handle_key_msg(&self, key: Key, state: KeyState, mods: KeyModifiers) {
|
||||
self.current_frame().as_ref().map(|frame| {
|
||||
let ScriptControlChan(ref chan) = frame.pipeline.script_chan;
|
||||
chan.send(SendEventMsg(frame.pipeline.id, script_traits::KeyEvent(key, state)));
|
||||
chan.send(SendEventMsg(frame.pipeline.id, script_traits::KeyEvent(key, state, mods)));
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ use geom::scale_factor::ScaleFactor;
|
|||
use geom::size::TypedSize2D;
|
||||
use layers::geometry::DevicePixel;
|
||||
use layers::platform::surface::NativeGraphicsMetadata;
|
||||
use servo_msg::constellation_msg::{Key, KeyState};
|
||||
use servo_msg::constellation_msg::{Key, KeyState, KeyModifiers};
|
||||
use servo_msg::compositor_msg::{ReadyState, RenderState};
|
||||
use servo_util::geometry::ScreenPx;
|
||||
use std::fmt::{FormatError, Formatter, Show};
|
||||
|
@ -60,7 +60,7 @@ pub enum WindowEvent {
|
|||
/// Sent when the user quits the application
|
||||
QuitWindowEvent,
|
||||
/// Sent when a key input state changes
|
||||
KeyEvent(Key, KeyState),
|
||||
KeyEvent(Key, KeyState, KeyModifiers),
|
||||
}
|
||||
|
||||
impl Show for WindowEvent {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue