Fail using handle

This commit is contained in:
Eivind Gamst 2022-08-24 17:38:21 +02:00
parent 9350f09b06
commit 034cf7cb13
4 changed files with 17 additions and 4 deletions

View file

@ -62,6 +62,13 @@ x11rb = { version = "0.10.0", optional = true }
xkbcommon = { version = "0.4.0", features = ["wayland"]}
scan_fmt = { version = "0.2.3", default-features = false }
[patch.crates-io]
wayland-protocols-misc = { path = '/home/rano/Public/code/wayland-rs/wayland-protocols-misc/' }
wayland-server = { path = '/home/rano/Public/code/wayland-rs/wayland-server/' }
wayland-backend = { path = '/home/rano/Public/code/wayland-rs/wayland-backend/' }
wayland-sys = { path = '/home/rano/Public/code/wayland-rs/wayland-sys/' }
wayland-protocols = { path = '/home/rano/Public/code/wayland-rs/wayland-protocols/' }
[dev-dependencies]
slog-term = "2.3"

View file

@ -45,8 +45,8 @@ use smithay::{
viewporter::ViewporterState,
xdg_activation::{
XdgActivationHandler, XdgActivationState, XdgActivationToken, XdgActivationTokenData,
},
},
}, virtual_keyboard::VirtualKeyboardManagerState,
}, delegate_virtual_keyboard_manager,
};
#[cfg(feature = "xwayland")]
@ -163,6 +163,8 @@ delegate_text_input_manager!(@<BackendData: 'static> AnvilState<BackendData>);
delegate_input_method_manager!(@<BackendData: 'static> AnvilState<BackendData>);
delegate_virtual_keyboard_manager!(@<BackendData: 'static> AnvilState<BackendData>);
delegate_viewporter!(@<BackendData: 'static> AnvilState<BackendData>);
impl<BackendData> XdgActivationHandler for AnvilState<BackendData> {
@ -273,6 +275,7 @@ impl<BackendData: Backend + 'static> AnvilState<BackendData> {
let xdg_shell_state = XdgShellState::new::<Self, _>(&dh, log.clone());
TextInputManagerState::new::<Self>(&dh);
InputMethodManagerState::new::<Self>(&dh);
VirtualKeyboardManagerState::new::<Self>(&dh);
// init input
let seat_name = backend_data.seat_name();

View file

@ -6,7 +6,7 @@ use wayland_protocols_misc::zwp_virtual_keyboard_v1::server::{
};
use wayland_server::{DisplayHandle, GlobalDispatch, Dispatch, Client, New, DataInit};
use self::virtual_keyboard_handle::{VirtualKeyboardUserData, VirtualKeyboardHandle};
use self::virtual_keyboard_handle::{VirtualKeyboardHandle};
use super::seat::Seat;
@ -14,6 +14,8 @@ const MANAGER_VERSION: u32 = 1;
mod virtual_keyboard_handle;
pub use virtual_keyboard_handle::VirtualKeyboardUserData;
/// State of wp misc virtual keyboard protocol
#[derive(Debug)]
pub struct VirtualKeyboardManagerState {
@ -81,7 +83,7 @@ where
user_data.insert_if_missing(VirtualKeyboardHandle::default);
let handle = user_data.get::<VirtualKeyboardHandle>().unwrap();
if handle.has_instance() {
return; //TODO: compositor should present an error when an untrusted client requests a new keyboard. ? :/
return; //TODO: Replace with privileged filter, found in dmabuf
}
let instance = data_init.init(
id,

View file

@ -3,6 +3,7 @@ use std::sync::{Arc, Mutex};
use wayland_backend::server::{ClientId, ObjectId};
use wayland_protocols_misc::zwp_virtual_keyboard_v1::server::zwp_virtual_keyboard_v1::{self, ZwpVirtualKeyboardV1};
use wayland_server::{Dispatch, Client, DisplayHandle, DataInit};
use xkbcommon::xkb;
use crate::{wayland::{seat::{KeyboardHandle, FilterResult}, SERIAL_COUNTER}, backend::input::KeyState};