Skip to main content

WindowOps

Trait WindowOps 

Source
pub trait WindowOps {
    // Required methods
    fn open_window(&mut self, config: WindowConfig) -> TeksiloWindowId;
    fn find_window(&self, string_id: &str) -> Option<TeksiloWindowId>;
    fn window_state(&self, id: TeksiloWindowId) -> Option<WindowState>;
    fn windows(&self) -> Vec<WindowState>;
    fn focus_window(&mut self, id: TeksiloWindowId);
    fn close_window_by_id(&mut self, id: TeksiloWindowId);

    // Provided methods
    fn request_activation_token(
        &mut self,
        _id: TeksiloWindowId,
        cb: Box<dyn FnOnce(Option<String>)>,
    ) { ... }
    fn request_activation_token_self(
        &mut self,
        cb: Box<dyn FnOnce(Option<String>)>,
    ) { ... }
    fn current_parent_handle(&self) -> Option<ParentHandle> { ... }
    fn set_ime_cursor_area(&mut self, _area: Rect) { ... }
    fn begin_os_drag(
        &mut self,
        _data: OutboundDragData,
        _image: Option<DragImageData>,
    ) -> bool { ... }
    fn cancel_os_drag(&mut self) { ... }
}
Expand description

App-level window operations exposed to handlers.

Implemented by teksilo_app::WindowManager (via a short-lived wrapper that also holds &ActiveEventLoop). Passed into every dispatch site as &mut dyn WindowOps and stored on EventContext.

Required Methods§

Source

fn open_window(&mut self, config: WindowConfig) -> TeksiloWindowId

Open a new window. Creates the winit-level window synchronously inside this call and returns its id, which is immediately valid for any other method on this trait.

Source

fn find_window(&self, string_id: &str) -> Option<TeksiloWindowId>

Look up a window by the stable string id it was opened with (WindowConfig::id). Returns None if no live window carries that id.

Source

fn window_state(&self, id: TeksiloWindowId) -> Option<WindowState>

Read the reactive state for a specific window.

Source

fn windows(&self) -> Vec<WindowState>

Every live window’s state, in creation order.

Source

fn focus_window(&mut self, id: TeksiloWindowId)

Raise a window and give it keyboard focus.

Source

fn close_window_by_id(&mut self, id: TeksiloWindowId)

Close a specific window by id. The window is fully torn down before the next event-loop tick.

Provided Methods§

Source

fn request_activation_token( &mut self, _id: TeksiloWindowId, cb: Box<dyn FnOnce(Option<String>)>, )

Request an xdg_activation_v1 token for id — to hand to another window or a child process so it can raise itself on Wayland. cb fires once with the token string, or with None where unsupported (everything but Wayland/X11). Default implementation: immediate None.

Source

fn request_activation_token_self(&mut self, cb: Box<dyn FnOnce(Option<String>)>)

Like request_activation_token but for the current dispatching window — the one whose handler is running. Works even mid-dispatch, when that window is temporarily out of the manager’s map, because it uses the captured window handle instead of an id lookup. Use this when a focused widget needs a token to hand to another window or process. Default implementation: immediate None.

Source

fn current_parent_handle(&self) -> Option<ParentHandle>

Extract the platform parent handle of the window currently dispatching the event (the one that owns the in-flight EventContext). Used by native-dialog integrations (teksilo_platform::file_dialog) to parent OS dialogs to the originating Teksilo window.

Returns None for the standalone / test sink and on rare platform paths where the underlying surface refuses a handle (e.g. during shutdown).

Source

fn set_ime_cursor_area(&mut self, _area: Rect)

Report the focused text widget’s caret rectangle (in window-logical pixels) so the platform can position the OS IME candidate window next to the insertion point. Called from text-editing widgets whenever the caret moves. The app applies it to the in-flight window’s set_ime_cursor_area, deduped against the last value.

No-op on the standalone / test sink.

Source

fn begin_os_drag( &mut self, _data: OutboundDragData, _image: Option<DragImageData>, ) -> bool

Hand an OS-level drag to the platform when an in-app drag escalates at the window boundary (the pointer left the window carrying an OS-exportable payload). The platform backend (teksilo_platform::external_dnd) starts a native drag session (NSDraggingSource / wl_data_source / OLE IDropSource) using data, optionally drawing image as the drag cursor.

Returns true if a native drag session actually started. The default (standalone / test sink, and platforms without an outbound backend, a headless build, or a target with no drop-target implementation) returns false, in which case the framework cancels the drag — the pre-existing “pointer left the window ⇒ drag cancels” behavior.

Source

fn cancel_os_drag(&mut self)

Abandon an OS drag started by Self::begin_os_drag (the user pressed Escape).

Only backends that drive the drag themselves can honour this. macOS and Windows hand the drag to a modal OS loop that owns Escape already, and Wayland’s compositor does the same; X11 tracks the pointer on its own connection, so without this its drags could only end by releasing the button. The backend still reports the terminal DropOutcome either way, so the source widget’s on_drag_ended fires exactly once regardless.

Default: no-op.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§