Skip to main content

WebView

Struct WebView 

Source
pub struct WebView { /* private fields */ }
Expand description

An embeddable web view. Composing widget: it delegates layout/paint to a style-built overlay and drives a native engine subview on top.

See the crate docs for the dormancy/visibility contract.

Implementations§

Source§

impl WebView

Source

pub fn new() -> Self

A blank web view. Set content with url / html / source.

Source

pub fn url(self, url: impl Into<String>) -> Self

Navigate to a URL on first open.

Source

pub fn html(self, html: impl Into<String>) -> Self

Load inline HTML on first open.

Source

pub fn source(self, source: WebSource) -> Self

Set the initial content from a WebSource.

Source

pub fn user_agent(self, ua: impl Into<String>) -> Self

Override the engine User-Agent.

Source

pub fn transparent(self, transparent: bool) -> Self

Request a transparent engine background.

Source

pub fn devtools(self, devtools: bool) -> Self

Enable engine devtools (debug builds, by convention).

Source

pub fn custom_protocol(self, scheme: impl Into<String>) -> Self

Register a custom-protocol scheme name ("app"app://). The dispatch closure lives app-side; the backend only needs the name.

Source

pub fn url_signal(self, signal: Signal<String>) -> Self

Two-way URL binding. The engine writes the resolved URL into signal when an in-page navigation completes; calling signal.set("…") externally drives programmatic navigation (equivalent to load_url). The engine’s own echo is filtered, so the two directions don’t loop.

The initial page still comes from url / html / source; url_signal governs navigation after the first load (the signal’s value at build time is taken as the baseline and does not trigger a navigation).

Source

pub fn title_signal(self, signal: Signal<String>) -> Self

Bind the page title (read-only — updated on TitleChanged).

Source

pub fn loading_signal(self, signal: Signal<bool>) -> Self

Bind the loading flag (read-only — true between page-load start/finish).

Source

pub fn on_message( self, cb: impl FnMut(String, &mut EventContext<'_>) + 'static, ) -> Self

JS → Rust: called when the page runs window.ipc.postMessage(...).

Source

pub fn on_title_changed( self, cb: impl FnMut(String, &mut EventContext<'_>) + 'static, ) -> Self

Called when the document title changes.

Source

pub fn on_navigation( self, cb: impl FnMut(NavigationInfo, &mut EventContext<'_>) + 'static, ) -> Self

Called when a navigation starts (observer — see NavigationInfo; it cannot veto). Useful for URL-bar sync before the load completes.

Source

pub fn on_page_load( self, cb: impl FnMut(PageLoadState, &mut EventContext<'_>) + 'static, ) -> Self

Called when page loading starts and finishes (see PageLoadState).

Source

pub fn on_download_started( self, cb: impl FnMut(DownloadStart, &mut EventContext<'_>) + 'static, ) -> Self

Called when the page begins a download (see DownloadStart).

Source

pub fn on_download_finished( self, cb: impl FnMut(DownloadOutcome, &mut EventContext<'_>) + 'static, ) -> Self

Called when a download finishes or fails (see DownloadOutcome).

Source

pub fn style(self, style: impl WebViewStyle) -> Self

Per-call style override (highest precedence).

Source

pub fn enter_page_on_focus(self, enter: bool) -> Self

Enter the page as soon as the frame receives keyboard focus, rather than on Enter (the default two-step).

Only appropriate when the web view is the window’s content and there is nothing else in the Tab cycle worth reaching — a kiosk view, a full-window document preview. In a mixed UI it makes Tab a one-way door: once the engine owns the keyboard, Teksilo sees no more keys and getting back out is up to the engine and the OS. Off by default for exactly that reason.

Source

pub fn focus_page(&self)

Hand keyboard focus to the engine subview, entering the page.

The programmatic form of the frame’s Enter key. No-op before the engine has opened (the handle is created post-mount).

Source

pub fn focused_signal(&self) -> Signal<bool>

Whether the Teksilo-side frame currently holds keyboard focus.

True while Tab has landed on the web view; it says nothing about whether the page has been entered, because once the engine subview owns the keyboard the toolkit is no longer told what happens inside it.

Source

pub fn id(&self) -> WebViewId

The stable routing identity of this web view.

Source

pub fn load_url(&self, url: &str)

Navigate to url.

Source

pub fn post_message(&self, msg: &str)

Rust → JS: dispatch a teksilo-message event carrying msg.

Source

pub fn eval(&self, script: &str)

Evaluate JavaScript in the page.

Source

pub fn reload(&self)

Reload the page.

Source

pub fn go_back(&self)

Navigate back.

Source

pub fn go_forward(&self)

Navigate forward.

Source

pub fn stop(&self)

Stop the current load.

Source

pub fn open_devtools(&self)

Open the engine’s developer tools (no-op where unsupported, e.g. Servo).

Source

pub fn close_devtools(&self)

Close the engine’s developer tools.

Trait Implementations§

Source§

impl Debug for WebView

Source§

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

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

impl Default for WebView

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Drop for WebView

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more
Source§

impl Widget for WebView

Source§

fn build(&mut self, ctx: &mut BuildContext<'_>) -> Vec<WidgetId>

Compose child widgets. Called once after the widget is placed in the arena, and again on environment change (theme switch, locale switch). Takes &mut self — store child IDs, signal handles, any state needed later. Returns the list of root child IDs (empty for leaf widgets).
Source§

fn layout_response( &self, proposal: SizeProposal, ctx: &LayoutContext<'_>, ) -> LayoutResponse

Respond to the parent’s size proposal with this widget’s wanted size, grow/shrink weights, and compression floor (see LayoutResponse). Read more
Source§

fn place_children( &self, bounds: Rect, _proposal: SizeProposal, children: &mut [WidgetPlacement], ctx: &LayoutContext<'_>, )

Position children within the allocated bounds. Read more
Source§

fn accessibility(&self, builder: &mut AccessNodeBuilder)

Declare this widget’s accessibility identity.
Source§

fn children(&self) -> Vec<WidgetId>

Return the child widget IDs that this widget manages.
Source§

fn as_any_mut(&mut self) -> Option<&mut dyn Any>

Mutable counterpart of as_any. Default returns None; widgets that want to expose mutable state to tests (e.g. so a test can mutate a Scene inside a SceneView post-layout) override with Some(self). Should follow the same opt-in pattern as as_any: only widgets that opt into & introspection should opt into &mut.
Source§

fn type_name(&self) -> &'static str

Concrete type name of this widget (e.g. "teksilo_widgets::button::Button"). The default implementation resolves at the impl site via std::any::type_name::<Self>(), so calls through &dyn Widget correctly dispatch to the monomorphized fn for the concrete type — getting the concrete name through the vtable without per-impl boilerplate. Read more
Source§

fn cacheable_layout(&self) -> bool

Whether this widget’s layout_response may be memoized by the per-pass layout cache. Defaults to true. Read more
Source§

fn paint(&self, _bounds: Rect, _canvas: &mut Canvas, _ctx: &PaintContext<'_>)

Draw the widget’s visual representation.
Source§

fn wants_after_paint(&self) -> bool

Whether this widget wants its after_paint hook to fire each frame. Returning false (the default) saves a virtual call per widget per frame for the vast majority of widgets that don’t aggregate descendant geometry. Read more
Source§

fn after_paint(&self, _view: &WidgetTreeView<'_>, _ctx: &PaintContext<'_>)

Called once per frame after this widget’s subtree has finished painting. Receives a read-only view of the layout-resolved arena so a parent can read its descendants’ final bounds — e.g. TitleBar aggregates its drag region and control-button rects into a single HitRegions payload for the Windows backend’s WM_NCHITTEST. Read more
Source§

fn wants_post_paint(&self) -> bool

Whether this widget wants its post_paint hook to fire each frame. Returning false (the default) saves a virtual call per widget per frame for the vast majority of widgets that don’t draw a foreground over their children. Read more
Source§

fn post_paint( &self, _bounds: Rect, _canvas: &mut Canvas, _ctx: &PaintContext<'_>, )

Draw a foreground layer over this widget’s children. Read more
Source§

fn wants_descendant_redirects(&self) -> bool

Whether this widget wants the AT walker to consult its a11y_redirect_descendant hook for every descendant during AT tree emission, not just its direct arena children. Read more
Source§

fn a11y_redirect_descendant( &self, _self_id: WidgetId, _descendant: WidgetId, ) -> Option<NodeId>

Optional redirection hook for AT-tree placement of a child. Read more
Source§

fn accessible_title_hint(&self) -> Option<String>

Suggest an accessible title to an enclosing container that wraps this widget as content — typically a modal / dialog shell that wants to propagate the inner content’s visible title as the shell’s own accessible name. Read more
Source§

fn accessible_title_node(&self) -> Option<WidgetId>

The widget that paints this one’s title, when it has one. Read more
Source§

fn initial_focus_hint(&self) -> Option<WidgetId>

Optional hint that directs initial focus to a specific descendant when this widget is the root of a deferred-built modal surface. Read more
Source§

fn context_menu_key_target(&self) -> Option<WidgetId>

Which descendant a keyboard request for a context menu should target. Read more
Source§

fn accessibility_children(&self) -> Option<Vec<WidgetId>>

Optional override for the child ORDER presented to assistive technology, when it must differ from the paint / z-order child order returned by children. Read more
Source§

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

Downcast hook. Default implementation returns None; concrete widgets override with Some(self) when they want to expose their concrete type to test-level introspection or reflection. The trait already bounds on std::any::Any so concrete types satisfy the 'static requirement.
Source§

fn clips_children(&self) -> bool

Whether this widget clips its children to its bounds.
Source§

fn focus_reveal_rect(&self, _bounds: Rect) -> Option<Rect>

The rectangle (in absolute tree coordinates) that best represents this widget when the framework reveals it into an ancestor scroll area on focus gain. Returning None (the default) reveals the widget’s whole bounds — correct for most controls. Read more
Source§

fn hit_shape(&self, _local_point: Point, _bounds: Rect) -> bool

Whether the point lies inside this widget’s actual shape, not just its rectangular bounds. Consulted by hit-testing right after the bounds check: returning false for a point that is inside the bounding box makes the widget transparent to the click there, so it falls through to whatever sibling is painted underneath (the same machinery as a fully pass-through node, but shape-aware). Read more
Source§

fn preserves_children_on_rebuild(&self) -> bool

How rebuild_single_widget treats this widget’s existing children when re-running its build(). Read more
Source§

fn tooltip_has_content(&self) -> bool

Whether this widget, used as tooltip content, currently has anything worth showing. Read more
Source§

fn declare_shortcuts(&self) -> Vec<Shortcut>

Declare the rebindable keyboard shortcuts this widget exposes, without installing handlers. The framework calls this at arena insertion time (before build()) and at certain lazy boundaries (e.g. Switcher walks declarations on its not-yet-mounted Pending slots), so settings UIs and the ShortcutRegistry see the keystrokes the moment the owning container mounts — even if build() hasn’t run. Read more
Source§

fn take_handler_set(&mut self) -> Option<HandlerSet>

Extract attached handler set from a WidgetWithHandlers wrapper. Called during arena insertion to transfer handlers to the WidgetNode. Default: returns None (no attached handlers).

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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<W> IntoTeksiChild for W
where W: Widget + 'static,

Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.
Source§

impl<W> WidgetBuilder for W
where W: Widget + 'static,

Source§

fn on_tap( self, f: impl FnMut(&TapEvent, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

Source§

fn on_double_tap( self, f: impl FnMut(&TapEvent, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

Source§

fn on_triple_tap( self, f: impl FnMut(&TapEvent, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

Source§

fn on_long_press( self, f: impl FnMut(&TapEvent, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

Source§

fn accept_tap_buttons( self, mask: impl Into<ButtonMask>, ) -> WidgetWithHandlers<Self>

Restrict (or extend) the set of pointer buttons that fire on_tap. Default is ButtonMask::PRIMARY.
Source§

fn accept_double_tap_buttons( self, mask: impl Into<ButtonMask>, ) -> WidgetWithHandlers<Self>

Restrict (or extend) the set of pointer buttons that fire on_double_tap. Default ButtonMask::PRIMARY.
Source§

fn accept_triple_tap_buttons( self, mask: impl Into<ButtonMask>, ) -> WidgetWithHandlers<Self>

Restrict (or extend) the set of pointer buttons that fire on_triple_tap. Default ButtonMask::PRIMARY.
Source§

fn accept_long_press_buttons( self, mask: impl Into<ButtonMask>, ) -> WidgetWithHandlers<Self>

Restrict (or extend) the set of pointer buttons that fire on_long_press. Default ButtonMask::PRIMARY.
Source§

fn dim_when_inactive(self, factor: f32) -> DimWhenInactive

Dim this widget’s subtree to factor opacity whenever the host window is inactive (not focused / occluded), restoring full opacity when it becomes active again. The opt-in, per-widget layer of the window-active appearance model — for custom content an app wants to fade back when its window isn’t the active one. Stock widgets handle their own inactive appearance (caret hiding, selection desaturation) and need no wrapping. Layout- and a11y-transparent; the opacity snaps (no tween), which is correct under prefers-reduced-motion. See DimWhenInactive.
Source§

fn dim_when_inactive_default(self) -> DimWhenInactive

dim_when_inactive with the default factor (DEFAULT_DIM_FACTOR, 70 %).
Source§

fn on_drag( self, f: impl FnMut(DragPhase, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

Source§

fn on_swipe( self, f: impl FnMut(SwipeDirection, f32, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

Source§

fn on_pinch( self, f: impl FnMut(PinchPhase, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

Source§

fn on_focus( self, f: impl FnMut(bool, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

Source§

fn on_key( self, f: impl FnMut(&WidgetEvent, &mut EventContext<'_>) -> EventResponse + 'static, ) -> WidgetWithHandlers<Self>

Source§

fn on_key_preview( self, f: impl FnMut(&WidgetEvent, &mut EventContext<'_>) -> EventResponse + 'static, ) -> WidgetWithHandlers<Self>

Strict-ancestor key preview. See HandlerSet::on_key_preview.
Source§

fn on_pointer_event( self, f: impl FnMut(&WidgetEvent, &mut EventContext<'_>) -> EventResponse + 'static, ) -> WidgetWithHandlers<Self>

Source§

fn on_hover( self, f: impl FnMut(bool, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

Source§

fn on_scroll( self, f: impl FnMut(&WidgetEvent, &mut EventContext<'_>) -> EventResponse + 'static, ) -> WidgetWithHandlers<Self>

Source§

fn on_access_action( self, f: impl FnMut(Action, &mut EventContext<'_>) -> EventResponse + 'static, ) -> WidgetWithHandlers<Self>

Source§

fn focusable(self, focusable: bool) -> WidgetWithHandlers<Self>

Source§

fn tab_index(self, index: i32) -> WidgetWithHandlers<Self>

Source§

fn cursor(self, cursor: CursorIcon) -> WidgetWithHandlers<Self>

Source§

fn clips_children_on(self, clips: bool) -> WidgetWithHandlers<Self>

Source§

fn ime_input(self, ctx: ImeContext) -> WidgetWithHandlers<Self>

Declare this node a text-input surface, enabling the OS input method (with ctx’s purpose) while it is focused. See crate::ime.
Source§

fn event_pass_through(self, pass_through: bool) -> WidgetWithHandlers<Self>

Make the widget invisible to pointer hit-testing. See HandlerSet::event_pass_through.
Source§

fn gesture_dead_zone(self, dead_zone: bool) -> WidgetWithHandlers<Self>

Mark this widget’s subtree a gesture dead zone. See HandlerSet::gesture_dead_zone.
Source§

fn keyboard_capture(self, capture: bool) -> WidgetWithHandlers<Self>

Mark this widget a keyboard capture surface (terminals, game viewports): while focused, KeyDowns bypass shortcut resolution. See HandlerSet::keyboard_capture.
Source§

fn hit_transparent(self, transparent: bool) -> WidgetWithHandlers<Self>

Make this widget and its whole subtree invisible to pointer hit-testing (decorative overlays). See HandlerSet::hit_transparent.
Source§

fn context_menu( self, factory: impl Fn(Point, &mut EventContext<'_>) -> Option<Box<dyn Widget>> + 'static, ) -> WidgetWithHandlers<Self>

Set a context-menu factory. See HandlerSet::context_menu for the full contract.
Source§

fn focus_within(self, signal: Signal<bool>) -> WidgetWithHandlers<Self>

Bind a Signal<bool> the framework writes when a strict descendant has focus. See HandlerSet::focus_within.
Source§

fn hover_within(self, signal: Signal<bool>) -> WidgetWithHandlers<Self>

Bind a Signal<bool> the framework writes when a strict descendant is hovered. See HandlerSet::hover_within.
Source§

fn visible_when(self, state: impl Into<Prop<bool>>) -> WidgetWithHandlers<Self>

Bind this node’s visibility (bool / Signal<bool> / Prop<bool>) as a builder property, so teksu! can write visible_when: sig. Equivalent to ctx.visible_when(id, ..). See HandlerSet::visible_when.
Source§

fn on_drag_hover( self, f: impl FnMut(&DragPayload, Point, &mut EventContext<'_>) -> DropFeedback + 'static, ) -> WidgetWithHandlers<Self>

Source§

fn on_drag_leave( self, f: impl FnMut(&mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

Source§

fn on_drag_tick( self, f: impl FnMut(Point, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

Source§

fn on_drop( self, f: impl FnMut(DragPayload, Point, &mut EventContext<'_>) -> bool + 'static, ) -> WidgetWithHandlers<Self>

Source§

fn on_drag_ended( self, f: impl FnMut(DropOutcome, &mut EventContext<'_>) + 'static, ) -> WidgetWithHandlers<Self>

Set the drag-ended handler on a drag source. See HandlerSet::on_drag_ended.
Source§

fn access_label( self, label: impl Into<Prop<String>>, ) -> WidgetWithHandlers<Self>

Source§

fn access_description( self, description: impl Into<Prop<String>>, ) -> WidgetWithHandlers<Self>

Source§

fn access_hint(self, hint: impl Into<Prop<String>>) -> WidgetWithHandlers<Self>

Source§

fn access_value( self, value: impl Into<Prop<String>>, ) -> WidgetWithHandlers<Self>

Source§

fn access_role(self, role: Role) -> WidgetWithHandlers<Self>

Source§

fn access_hidden( self, hidden: impl Into<Prop<bool>>, ) -> WidgetWithHandlers<Self>

Source§

fn access_disabled(self, disabled: bool) -> WidgetWithHandlers<Self>

Source§

fn access_identifier(self, id: impl Into<String>) -> WidgetWithHandlers<Self>

Source§

fn access_controls(self, target: WidgetId) -> WidgetWithHandlers<Self>

Source§

fn access_described_by(self, target: WidgetId) -> WidgetWithHandlers<Self>

Source§

fn access_labelled_by(self, target: WidgetId) -> WidgetWithHandlers<Self>

Source§

fn access_live(self, mode: Live) -> WidgetWithHandlers<Self>

Source§

fn access_current(self, current: AriaCurrent) -> WidgetWithHandlers<Self>

Source§

fn access_shortcut_literal( self, shortcut: impl Into<String>, ) -> WidgetWithHandlers<Self>

Source§

fn access_shortcut_id(self, id: impl Into<String>) -> WidgetWithHandlers<Self>

Source§

fn access_has_popup(self, kind: HasPopup) -> WidgetWithHandlers<Self>

Source§

fn access_orientation( self, orientation: Orientation, ) -> WidgetWithHandlers<Self>

Source§

fn access_exclude_subtree(self) -> WidgetWithHandlers<Self>

Source§

fn access_merge_subtree(self) -> WidgetWithHandlers<Self>

Source§

fn access_subtree(self, mode: AccessSubtreeMode) -> WidgetWithHandlers<Self>

Source§

fn access_numeric_value(self, value: f64) -> WidgetWithHandlers<Self>

Source§

fn access_numeric_range(self, min: f64, max: f64) -> WidgetWithHandlers<Self>

Source§

fn access_numeric_step(self, step: f64) -> WidgetWithHandlers<Self>

Source§

fn access_action<F>( self, action: Action, handler: F, ) -> WidgetWithHandlers<Self>
where F: FnMut(&mut EventContext<'_>) + 'static,

Source§

fn access_remove_action(self, action: Action) -> WidgetWithHandlers<Self>

Source§

fn access_custom_action<F>( self, label: impl Into<Prop<String>>, handler: F, ) -> WidgetWithHandlers<Self>
where F: FnMut(&mut EventContext<'_>) + 'static,

Source§

fn access_customize<F>(self, f: F) -> WidgetWithHandlers<Self>
where F: Fn(&mut AccessNodeBuilder) + 'static,