mirror of
https://github.com/servo/servo.git
synced 2025-08-07 22:45:34 +01:00
Add detection for page loads.
This commit is contained in:
parent
15ec0989f9
commit
f363c09f41
2 changed files with 14 additions and 2 deletions
|
@ -13,7 +13,7 @@ use std::libc::c_int;
|
||||||
use geom::point::Point2D;
|
use geom::point::Point2D;
|
||||||
use geom::size::Size2D;
|
use geom::size::Size2D;
|
||||||
use servo_msg::compositor_msg::{IdleRenderState, RenderState, RenderingRenderState};
|
use servo_msg::compositor_msg::{IdleRenderState, RenderState, RenderingRenderState};
|
||||||
use servo_msg::compositor_msg::{FinishedLoading, Loading, PerformingLayout, ReadyState};
|
use servo_msg::compositor_msg::{FinishedLoading, Blank, Loading, PerformingLayout, ReadyState};
|
||||||
|
|
||||||
use glfw;
|
use glfw;
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ impl WindowMethods<Application> for Window {
|
||||||
mouse_down_button: @mut 0,
|
mouse_down_button: @mut 0,
|
||||||
mouse_down_point: @mut Point2D(0 as c_int, 0),
|
mouse_down_point: @mut Point2D(0 as c_int, 0),
|
||||||
|
|
||||||
ready_state: FinishedLoading,
|
ready_state: Blank,
|
||||||
render_state: IdleRenderState,
|
render_state: IdleRenderState,
|
||||||
throbber_frame: 0,
|
throbber_frame: 0,
|
||||||
};
|
};
|
||||||
|
@ -168,6 +168,12 @@ impl WindowMethods<Application> for Window {
|
||||||
|
|
||||||
/// Sets the render state.
|
/// Sets the render state.
|
||||||
pub fn set_render_state(@mut self, render_state: RenderState) {
|
pub fn set_render_state(@mut self, render_state: RenderState) {
|
||||||
|
if self.ready_state == FinishedLoading &&
|
||||||
|
self.render_state == RenderingRenderState &&
|
||||||
|
render_state == IdleRenderState {
|
||||||
|
// page loaded
|
||||||
|
}
|
||||||
|
|
||||||
self.render_state = render_state;
|
self.render_state = render_state;
|
||||||
self.update_window_title()
|
self.update_window_title()
|
||||||
}
|
}
|
||||||
|
@ -178,6 +184,9 @@ impl Window {
|
||||||
fn update_window_title(&self) {
|
fn update_window_title(&self) {
|
||||||
let throbber = THROBBER[self.throbber_frame];
|
let throbber = THROBBER[self.throbber_frame];
|
||||||
match self.ready_state {
|
match self.ready_state {
|
||||||
|
Blank => {
|
||||||
|
self.glfw_window.set_title(fmt!("blank — Servo"));
|
||||||
|
}
|
||||||
Loading => {
|
Loading => {
|
||||||
self.glfw_window.set_title(fmt!("%c Loading — Servo", throbber))
|
self.glfw_window.set_title(fmt!("%c Loading — Servo", throbber))
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,10 @@ pub enum RenderState {
|
||||||
RenderingRenderState,
|
RenderingRenderState,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[deriving(Eq)]
|
||||||
pub enum ReadyState {
|
pub enum ReadyState {
|
||||||
|
/// Informs the compositor that nothing has been done yet. Used for setting status
|
||||||
|
Blank,
|
||||||
/// Informs the compositor that a page is loading. Used for setting status
|
/// Informs the compositor that a page is loading. Used for setting status
|
||||||
Loading,
|
Loading,
|
||||||
/// Informs the compositor that a page is performing layout. Used for setting status
|
/// Informs the compositor that a page is performing layout. Used for setting status
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue