Skip to main content

XxInputPopupSurfaceV2

Struct XxInputPopupSurfaceV2 

pub struct XxInputPopupSurfaceV2 { /* private fields */ }
Expand description

popup surface

An input method popup surface is a short-lived, temporary surface. It is meant as an area to show suggestions, candidates, or for other input-related uses.

The compositor should anchor it at the active text input cursor area.

The client must call wl_surface.commit on the corresponding wl_surface for input_popup_surface state updates to take effect, unless otherwise noted.

After the initial wl_surface.commit, the compositor must reply with a configure sequence (see .start_configure) initializing all the compositor-provided state of the popup. That means providing values for:

  • width
  • height
  • anchor_x
  • anchor_y
  • anchor_width
  • anchor_height
  • serial

using the appropriate events.

The popup will only be presented to the user after the client receives the configure sequence and replies with .ack_configure.

An example init sequence could look like this:

  1. client (Cl): popup = input_method.get_popup(wl_surface, positioner)
  2. Cl: wl_surface.commit()
  3. compositor (Co): popup.start_configure(150, 150, 10, -2, 5, 30)
  4. Co: input_method.done()
  5. Cl: ack_configure()
  6. Cl: wl_surface.commit()

A newly created input_popup_surface will be stacked on top of all previously created input_popup_surfaces associated with the same text input.

A typical sequence resulting from the user selecting a new text field and typing some text:

  1. compositor (Co): input_method.enable()
  2. Co: input_method.done()
  3. [init sequence]
  4. Co: input_method.set_surrounding_text(“new text”)
  5. Co: popup.start_configure(150, 150, -60, -2, 55, 30)
  6. Co: input_method.done()
  7. client (Cl): ack_configure()
  8. Cl: wl_surface.commit()

When the corresponding input_method receives a commited .disable event, the popup gets destroyed and becomes invalid and its surface gets unmapped.

The client must not destroy the underlying wl_surface while the xx_input_popup_surface_v2 object exists.

See also the [Event] enum for this interface.

Implementations§

§

impl XxInputPopupSurfaceV2

pub fn ack_configure(&self, serial: u32)

acknowledge a configure sequence

This request notifies the compositor that the client updated its surface in response to a configure sequence.

The purpose of this request is to synchronize the updates of the surface geometry with the surface contents. For example, when the compositor assigns a size larger than prevously, the client must fill the additional space before the popup gets displayed to the user with the new size. When the compositor receives .ack_configure, it can proceed to draw the new size.

.ack_configure should be sent after every submitted configure sequence, passing along the serial received in it.

An .ack_configure request is conceptually double-buffered. Every request overrides the previous one. The request takes effect once the .commit request is sent on the corresponding surface.

If the client receives multiple configure sequences before it can respond to one, it may acknowledge only the last configure sequence by using its serial in the .ack_configure request.

Committing an .ack_configure request consumes the serial number sent with the request, as well as serial numbers sent by all configure sequences submitted on this input_popup_surface prior to the configure sequence referenced by the committed serial.

Committing this request with a serial that, for this surface, never appeared in a submitted configure sequence, or one that was already committed before, raises an invalid_serial error.

pub fn reposition(&self, positioner: &XxInputPopupPositionerV1, token: u32)

recalculate the popup’s location

Reposition an already-mapped popup. The popup will be placed given the details in the passed input_popup_positioner object.

The request is processed immediately, without the need to issue wl_surface.commit, but the actual repositioning takes place later, after .ack_configure.

The compositor should reply with a configure sequence including:

  • input_popup_surface.start_configure,
  • input_popup_surface.repositioned, including the token passed in this request.

This will discard any parameters set by the previous positioner.

If multiple .reposition requests are sent before the .repositioned event is submitted as part of a configure sequence, the compositor may ignore all but the last one.

The new popup position will not take effect until the corresponding configure sequence is acknowledged by the client. See input_popup_surface.repositioned for details.

The token itself is opaque, and has no other special meaning.

pub fn destroy(&self)

remove the popup

This destroys the popup. Explicitly destroying the input_popup_surface object will also dismiss the popup, and unmap the surface.

Trait Implementations§

§

impl Borrow<ObjectId> for XxInputPopupSurfaceV2

§

fn borrow(&self) -> &ObjectId

Immutably borrows from an owned value. Read more
§

impl Clone for XxInputPopupSurfaceV2

§

fn clone(&self) -> XxInputPopupSurfaceV2

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl Debug for XxInputPopupSurfaceV2

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<D> Dispatch2<XxInputPopupSurfaceV2, D> for PopupData

Source§

fn event( &self, _data: &mut D, popup: &XxInputPopupSurfaceV2, event: Event, _conn: &Connection, _qh: &QueueHandle<D>, )

Source§

fn event_created_child( opcode: u16, _qh: &QueueHandle<State>, ) -> Arc<dyn ObjectData>

§

impl Hash for XxInputPopupSurfaceV2

§

fn hash<H>(&self, state: &mut H)
where H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
§

impl PartialEq<Weak<XxInputPopupSurfaceV2>> for XxInputPopupSurfaceV2

§

fn eq(&self, other: &Weak<XxInputPopupSurfaceV2>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
§

impl PartialEq for XxInputPopupSurfaceV2

§

fn eq(&self, other: &XxInputPopupSurfaceV2) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
§

impl Proxy for XxInputPopupSurfaceV2

§

type Request<'request> = Request<'request>

The request enum for this interface
§

type Event = Event

The event enum for this interface
§

fn interface() -> &'static Interface

The interface description
§

fn id(&self) -> ObjectId

The ID of this object
§

fn version(&self) -> u32

The version of this object
§

fn data<U>(&self) -> Option<&U>
where U: Send + Sync + 'static,

Access the user-data associated with this object
§

fn object_data(&self) -> Option<&Arc<dyn ObjectData>>

Access the raw data associated with this object. Read more
§

fn backend(&self) -> &WeakBackend

Access the backend associated with this object
§

fn send_request( &self, req: <XxInputPopupSurfaceV2 as Proxy>::Request<'_>, ) -> Result<(), InvalidId>

Send a request for this object. Read more
§

fn send_constructor<I>( &self, req: <XxInputPopupSurfaceV2 as Proxy>::Request<'_>, data: Arc<dyn ObjectData>, ) -> Result<I, InvalidId>
where I: Proxy,

Send a request for this object that creates another object. Read more
§

fn from_id( conn: &Connection, id: ObjectId, ) -> Result<XxInputPopupSurfaceV2, InvalidId>

Create an object proxy from its ID Read more
§

fn inert(backend: WeakBackend) -> XxInputPopupSurfaceV2

Create an inert object proxy Read more
§

fn parse_event( conn: &Connection, msg: Message<ObjectId, OwnedFd>, ) -> Result<(XxInputPopupSurfaceV2, <XxInputPopupSurfaceV2 as Proxy>::Event), DispatchError>

Parse a event for this object Read more
§

fn write_request<'a>( &self, conn: &Connection, msg: <XxInputPopupSurfaceV2 as Proxy>::Request<'a>, ) -> Result<(Message<ObjectId, BorrowedFd<'a>>, Option<(&'static Interface, u32)>), InvalidId>

Serialize a request for this object Read more
§

fn is_alive(&self) -> bool

Checks if the Wayland object associated with this proxy is still alive
§

fn downgrade(&self) -> Weak<Self>

Creates a weak handle to this object Read more
§

impl Eq for XxInputPopupSurfaceV2

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more