Merge branch 'main' into panels
This commit is contained in:
commit
146809eef0
183 changed files with 10202 additions and 5720 deletions
|
@ -1174,7 +1174,7 @@ impl AppContext {
|
|||
this.notify_global(type_id);
|
||||
result
|
||||
} else {
|
||||
panic!("No global added for {}", std::any::type_name::<T>());
|
||||
panic!("no global added for {}", std::any::type_name::<T>());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1182,6 +1182,15 @@ impl AppContext {
|
|||
self.globals.clear();
|
||||
}
|
||||
|
||||
pub fn remove_global<T: 'static>(&mut self) -> T {
|
||||
*self
|
||||
.globals
|
||||
.remove(&TypeId::of::<T>())
|
||||
.unwrap_or_else(|| panic!("no global added for {}", std::any::type_name::<T>()))
|
||||
.downcast()
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
pub fn add_model<T, F>(&mut self, build_model: F) -> ModelHandle<T>
|
||||
where
|
||||
T: Entity,
|
||||
|
|
|
@ -270,7 +270,7 @@ impl TestAppContext {
|
|||
.borrow_mut()
|
||||
.pop_front()
|
||||
.expect("prompt was not called");
|
||||
let _ = done_tx.try_send(answer);
|
||||
done_tx.try_send(answer).ok();
|
||||
}
|
||||
|
||||
pub fn has_pending_prompt(&self, window_id: usize) -> bool {
|
||||
|
|
|
@ -42,7 +42,7 @@ impl Color {
|
|||
}
|
||||
|
||||
pub fn yellow() -> Self {
|
||||
Self(ColorU::from_u32(0x00ffffff))
|
||||
Self(ColorU::from_u32(0xffff00ff))
|
||||
}
|
||||
|
||||
pub fn new(r: u8, g: u8, b: u8, a: u8) -> Self {
|
||||
|
|
|
@ -576,6 +576,15 @@ pub struct ComponentHost<V: View, C: Component<V>> {
|
|||
view_type: PhantomData<V>,
|
||||
}
|
||||
|
||||
impl<V: View, C: Component<V>> ComponentHost<V, C> {
|
||||
pub fn new(c: C) -> Self {
|
||||
Self {
|
||||
component: c,
|
||||
view_type: PhantomData,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<V: View, C: Component<V>> Deref for ComponentHost<V, C> {
|
||||
type Target = C;
|
||||
|
||||
|
|
|
@ -477,6 +477,14 @@ impl Deterministic {
|
|||
state.rng = StdRng::seed_from_u64(state.seed);
|
||||
}
|
||||
|
||||
pub fn allow_parking(&self) {
|
||||
use rand::prelude::*;
|
||||
|
||||
let mut state = self.state.lock();
|
||||
state.forbid_parking = false;
|
||||
state.rng = StdRng::seed_from_u64(state.seed);
|
||||
}
|
||||
|
||||
pub async fn simulate_random_delay(&self) {
|
||||
use rand::prelude::*;
|
||||
use smol::future::yield_now;
|
||||
|
@ -698,6 +706,14 @@ impl Foreground {
|
|||
}
|
||||
}
|
||||
|
||||
#[cfg(any(test, feature = "test-support"))]
|
||||
pub fn allow_parking(&self) {
|
||||
match self {
|
||||
Self::Deterministic { executor, .. } => executor.allow_parking(),
|
||||
_ => panic!("this method can only be called on a deterministic executor"),
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(any(test, feature = "test-support"))]
|
||||
pub fn advance_clock(&self, duration: Duration) {
|
||||
match self {
|
||||
|
|
|
@ -11,6 +11,19 @@ pub struct Binding {
|
|||
context_predicate: Option<KeymapContextPredicate>,
|
||||
}
|
||||
|
||||
impl std::fmt::Debug for Binding {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
write!(
|
||||
f,
|
||||
"Binding {{ keystrokes: {:?}, action: {}::{}, context_predicate: {:?} }}",
|
||||
self.keystrokes,
|
||||
self.action.namespace(),
|
||||
self.action.name(),
|
||||
self.context_predicate
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
impl Clone for Binding {
|
||||
fn clone(&self) -> Self {
|
||||
Self {
|
||||
|
|
|
@ -755,7 +755,7 @@ impl platform::Window for Window {
|
|||
let _ = postage::sink::Sink::try_send(&mut done_tx, answer.try_into().unwrap());
|
||||
}
|
||||
});
|
||||
|
||||
let block = block.copy();
|
||||
let native_window = self.0.borrow().native_window;
|
||||
self.0
|
||||
.borrow()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue