mirror of
https://github.com/emilk/egui.git
synced 2026-09-01 14:20:04 -04:00
Add Context::requested_repaint_delay_for
Hosted viewports are left out of FullOutput::viewport_output, so there was no way for the application that hosts one to see that it asked for a delayed repaint. Without this, a blinking text cursor inside a hosted viewport stops blinking. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1875,6 +1875,24 @@ impl Context {
|
|||||||
self.read(|ctx| ctx.has_requested_repaint(viewport_id))
|
self.read(|ctx| ctx.has_requested_repaint(viewport_id))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// How long the given viewport is willing to wait before being repainted.
|
||||||
|
///
|
||||||
|
/// This is the same value that [`crate::ViewportOutput::repaint_delay`] reports, and
|
||||||
|
/// is [`Duration::MAX`] if the viewport does not want to be repainted at all.
|
||||||
|
///
|
||||||
|
/// You only need this if you host a viewport yourself with
|
||||||
|
/// [`Self::run_hosted_viewport`], since such viewports are left out of
|
||||||
|
/// [`FullOutput::viewport_output`]. Pass it on to the viewport that owns the window,
|
||||||
|
/// or a blinking text cursor inside the hosted viewport will stop blinking.
|
||||||
|
#[must_use]
|
||||||
|
pub fn requested_repaint_delay_for(&self, viewport_id: &ViewportId) -> Duration {
|
||||||
|
self.read(|ctx| {
|
||||||
|
ctx.viewports
|
||||||
|
.get(viewport_id)
|
||||||
|
.map_or(Duration::MAX, |viewport| viewport.repaint.repaint_delay)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
/// Why are we repainting?
|
/// Why are we repainting?
|
||||||
///
|
///
|
||||||
/// This can be helpful in debugging why egui is constantly repainting.
|
/// This can be helpful in debugging why egui is constantly repainting.
|
||||||
|
|||||||
Reference in New Issue
Block a user