pub trait GlobalDispatch<I: Resource, GlobalData, State = Self>: Sized {
// Required method
fn bind(
state: &mut State,
handle: &DisplayHandle,
client: &Client,
resource: New<I>,
global_data: &GlobalData,
data_init: &mut DataInit<'_, State>,
);
// Provided method
fn can_view(_client: Client, _global_data: &GlobalData) -> bool { ... }
}
Expand description
A trait which provides an implementation for handling advertisement of a global to clients with some type of associated user data.
Its behavior is similar to the Dispatch
trait.
Required Methods§
sourcefn bind(
state: &mut State,
handle: &DisplayHandle,
client: &Client,
resource: New<I>,
global_data: &GlobalData,
data_init: &mut DataInit<'_, State>,
)
fn bind( state: &mut State, handle: &DisplayHandle, client: &Client, resource: New<I>, global_data: &GlobalData, data_init: &mut DataInit<'_, State>, )
Called when a client has bound this global.
The return value of this function should contain user data to associate the object created by the client.
Provided Methods§
sourcefn can_view(_client: Client, _global_data: &GlobalData) -> bool
fn can_view(_client: Client, _global_data: &GlobalData) -> bool
Checks if the global should be advertised to some client.
The implementation of this function determines whether a client may see and bind some global. If this function returns false, the client will not be told the global exists and attempts to bind the global will raise a protocol error.
One use of this function is implementing privileged protocols such as XWayland keyboard grabbing which must only be used by XWayland.
The default implementation allows all clients to see the global.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.