pub struct Gui {
rendering_context: Rc<OffscreenRenderingContext>,
context: EguiGlow,
event_queue: Vec<UserInterfaceCommand>,
toolbar_height: Length<f32, DeviceIndependentPixel>,
last_mouse_position: Option<Point2D<f32, DeviceIndependentPixel>>,
location: String,
location_dirty: bool,
load_status: LoadStatus,
status_text: Option<String>,
can_go_back: bool,
can_go_forward: bool,
favicon_textures: HashMap<WebViewId, (TextureHandle, SizedTexture)>,
}Expand description
The user interface of a headed servoshell. Currently this is implemented via egui.
Fields§
§rendering_context: Rc<OffscreenRenderingContext>§context: EguiGlow§event_queue: Vec<UserInterfaceCommand>§toolbar_height: Length<f32, DeviceIndependentPixel>§last_mouse_position: Option<Point2D<f32, DeviceIndependentPixel>>§location: String§location_dirty: boolWhether the location has been edited by the user without clicking Go.
load_status: LoadStatusThe LoadStatus of the active WebView.
status_text: Option<String>The text to display in the status bar on the bottom of the window.
can_go_back: boolWhether or not the current WebView can navigate backward.
can_go_forward: boolWhether or not the current WebView can navigate forward.
favicon_textures: HashMap<WebViewId, (TextureHandle, SizedTexture)>Handle to the GPU texture of the favicon.
These need to be cached across egui draw calls.
Implementations§
Source§impl Gui
impl Gui
pub(crate) fn new( winit_window: &Window, event_loop: &ActiveEventLoop, event_loop_proxy: EventLoopProxy<AppEvent>, rendering_context: Rc<OffscreenRenderingContext>, initial_url: Url, ) -> Self
pub(crate) fn take_user_interface_commands( &mut self, ) -> Vec<UserInterfaceCommand>
pub(crate) fn on_window_event( &mut self, winit_window: &Window, event: &WindowEvent, ) -> EventResponse
Sourcepub(crate) fn toolbar_height(&self) -> Length<f32, DeviceIndependentPixel>
pub(crate) fn toolbar_height(&self) -> Length<f32, DeviceIndependentPixel>
The height of the top toolbar of this user inteface ie the distance from the top of the
window to the position of the WebView.
Sourcefn is_in_egui_toolbar_rect(
&self,
position: Point2D<f32, DeviceIndependentPixel>,
) -> bool
fn is_in_egui_toolbar_rect( &self, position: Point2D<f32, DeviceIndependentPixel>, ) -> bool
Return true iff the given position is over the egui toolbar.
Create a frameless button with square sizing, as used in the toolbar.
Sourcefn browser_tab(
ui: &mut Ui,
window: &ServoShellWindow,
webview: WebView,
event_queue: &mut Vec<UserInterfaceCommand>,
favicon_texture: Option<SizedTexture>,
)
fn browser_tab( ui: &mut Ui, window: &ServoShellWindow, webview: WebView, event_queue: &mut Vec<UserInterfaceCommand>, favicon_texture: Option<SizedTexture>, )
Draws a browser tab, checking for clicks and queues appropriate UserInterfaceCommands.
Using a custom widget here would’ve been nice, but it doesn’t seem as though egui
supports that, so we arrange multiple Widgets in a way that they look connected.
Sourcepub(crate) fn update(
&mut self,
state: &RunningAppState,
window: &ServoShellWindow,
headed_window: &Window,
)
pub(crate) fn update( &mut self, state: &RunningAppState, window: &ServoShellWindow, headed_window: &Window, )
Update the user interface, but do not paint the updated state.
Sourcefn update_location_in_toolbar(&mut self, window: &ServoShellWindow) -> bool
fn update_location_in_toolbar(&mut self, window: &ServoShellWindow) -> bool
Updates the location field from the given RunningAppState, unless the user has started
editing it without clicking Go, returning true iff it has changed (needing an egui update).
fn update_load_status(&mut self, window: &ServoShellWindow) -> bool
fn update_status_text(&mut self, window: &ServoShellWindow) -> bool
fn update_can_go_back_and_forward(&mut self, window: &ServoShellWindow) -> bool
Sourcepub(crate) fn update_webview_data(&mut self, window: &ServoShellWindow) -> bool
pub(crate) fn update_webview_data(&mut self, window: &ServoShellWindow) -> bool
Updates all fields taken from the given ServoShellWindow, such as the location field.
Returns true iff the egui needs an update.
Sourcepub(crate) fn handle_accesskit_event(&mut self, event: &WindowEvent) -> bool
pub(crate) fn handle_accesskit_event(&mut self, event: &WindowEvent) -> bool
Returns true if a redraw is required after handling the provided event.
pub(crate) fn set_zoom_factor(&self, factor: f32)
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Gui
impl !RefUnwindSafe for Gui
impl !Send for Gui
impl !Sync for Gui
impl Unpin for Gui
impl !UnwindSafe for Gui
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> Filterable for T
impl<T> Filterable for T
Source§fn filterable(
self,
filter_name: &'static str,
) -> RequestFilterDataProvider<T, fn(DataRequest<'_>) -> bool>
fn filterable( self, filter_name: &'static str, ) -> RequestFilterDataProvider<T, fn(DataRequest<'_>) -> bool>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more