rename LayerId to AreaLayerId

This commit is contained in:
charburgx 2022-12-17 12:20:18 -06:00
parent 6ae4bc486b
commit 1e770ae3bd
14 changed files with 77 additions and 64 deletions

View file

@ -77,8 +77,8 @@ impl Area {
self self
} }
pub fn layer(&self) -> LayerId { pub fn layer(&self) -> AreaLayerId {
LayerId::new(self.order, self.id) AreaLayerId::new(self.order, self.id)
} }
/// If false, no content responds to click /// If false, no content responds to click
@ -187,7 +187,7 @@ impl Area {
} }
pub(crate) struct Prepared { pub(crate) struct Prepared {
layer_id: LayerId, layer_id: AreaLayerId,
state: State, state: State,
move_response: Response, move_response: Response,
enabled: bool, enabled: bool,
@ -229,7 +229,7 @@ impl Area {
constrain, constrain,
} = self; } = self;
let layer_id = LayerId::new(order, id); let layer_id = AreaLayerId::new(order, id);
let state = ctx.memory().areas.get(id).copied(); let state = ctx.memory().areas.get(id).copied();
let is_new = state.is_none(); let is_new = state.is_none();
@ -328,7 +328,7 @@ impl Area {
return; return;
} }
let layer_id = LayerId::new(self.order, self.id); let layer_id = AreaLayerId::new(self.order, self.id);
let area_rect = ctx.memory().areas.get(self.id).map(|area| area.rect()); let area_rect = ctx.memory().areas.get(self.id).map(|area| area.rect());
if let Some(area_rect) = area_rect { if let Some(area_rect) = area_rect {
let clip_rect = ctx.available_rect(); let clip_rect = ctx.available_rect();
@ -416,7 +416,7 @@ impl Prepared {
} }
} }
fn pointer_pressed_on_area(ctx: &Context, layer_id: LayerId) -> bool { fn pointer_pressed_on_area(ctx: &Context, layer_id: AreaLayerId) -> bool {
if let Some(pointer_pos) = ctx.pointer_interact_pos() { if let Some(pointer_pos) = ctx.pointer_interact_pos() {
let any_pressed = ctx.input().pointer.any_pressed(); let any_pressed = ctx.input().pointer.any_pressed();
any_pressed && ctx.layer_id_at(pointer_pos) == Some(layer_id) any_pressed && ctx.layer_id_at(pointer_pos) == Some(layer_id)

View file

@ -331,7 +331,7 @@ impl SidePanel {
ctx: &Context, ctx: &Context,
add_contents: Box<dyn FnOnce(&mut Ui) -> R + 'c>, add_contents: Box<dyn FnOnce(&mut Ui) -> R + 'c>,
) -> InnerResponse<R> { ) -> InnerResponse<R> {
let layer_id = LayerId::background(); let layer_id = AreaLayerId::background();
let side = self.side; let side = self.side;
let available_rect = ctx.available_rect(); let available_rect = ctx.available_rect();
let clip_rect = ctx.input().screen_rect(); let clip_rect = ctx.input().screen_rect();
@ -783,7 +783,7 @@ impl TopBottomPanel {
ctx: &Context, ctx: &Context,
add_contents: Box<dyn FnOnce(&mut Ui) -> R + 'c>, add_contents: Box<dyn FnOnce(&mut Ui) -> R + 'c>,
) -> InnerResponse<R> { ) -> InnerResponse<R> {
let layer_id = LayerId::background(); let layer_id = AreaLayerId::background();
let available_rect = ctx.available_rect(); let available_rect = ctx.available_rect();
let side = self.side; let side = self.side;
@ -1039,7 +1039,7 @@ impl CentralPanel {
add_contents: Box<dyn FnOnce(&mut Ui) -> R + 'c>, add_contents: Box<dyn FnOnce(&mut Ui) -> R + 'c>,
) -> InnerResponse<R> { ) -> InnerResponse<R> {
let available_rect = ctx.available_rect(); let available_rect = ctx.available_rect();
let layer_id = LayerId::background(); let layer_id = AreaLayerId::background();
let id = Id::new("central_panel"); let id = Id::new("central_panel");
let clip_rect = ctx.input().screen_rect(); let clip_rect = ctx.input().screen_rect();

View file

@ -282,7 +282,7 @@ pub fn was_tooltip_open_last_frame(ctx: &Context, tooltip_id: Id) -> bool {
for (count, (individual_id, _size)) in &state.individual_ids_and_sizes { for (count, (individual_id, _size)) in &state.individual_ids_and_sizes {
if *individual_id == tooltip_id { if *individual_id == tooltip_id {
let area_id = common_id.with(count); let area_id = common_id.with(count);
let layer_id = LayerId::new(Order::Tooltip, area_id); let layer_id = AreaLayerId::new(Order::Tooltip, area_id);
if ctx.memory().areas.visible_last_frame(&layer_id) { if ctx.memory().areas.visible_last_frame(&layer_id) {
return true; return true;
} }

View file

@ -488,7 +488,7 @@ impl PossibleInteractions {
/// Either a move or resize /// Either a move or resize
#[derive(Clone, Copy, Debug)] #[derive(Clone, Copy, Debug)]
pub(crate) struct WindowInteraction { pub(crate) struct WindowInteraction {
pub(crate) area_layer_id: LayerId, pub(crate) area_layer_id: AreaLayerId,
pub(crate) start_rect: Rect, pub(crate) start_rect: Rect,
pub(crate) left: bool, pub(crate) left: bool,
pub(crate) right: bool, pub(crate) right: bool,
@ -518,7 +518,7 @@ fn interact(
window_interaction: WindowInteraction, window_interaction: WindowInteraction,
ctx: &Context, ctx: &Context,
margins: Vec2, margins: Vec2,
area_layer_id: LayerId, area_layer_id: AreaLayerId,
area: &mut area::Prepared, area: &mut area::Prepared,
resize_id: Id, resize_id: Id,
) -> Option<WindowInteraction> { ) -> Option<WindowInteraction> {
@ -585,7 +585,7 @@ fn move_and_resize_window(ctx: &Context, window_interaction: &WindowInteraction)
fn window_interaction( fn window_interaction(
ctx: &Context, ctx: &Context,
possible: PossibleInteractions, possible: PossibleInteractions,
area_layer_id: LayerId, area_layer_id: AreaLayerId,
id: Id, id: Id,
rect: Rect, rect: Rect,
) -> Option<WindowInteraction> { ) -> Option<WindowInteraction> {
@ -626,7 +626,7 @@ fn window_interaction(
fn resize_hover( fn resize_hover(
ctx: &Context, ctx: &Context,
possible: PossibleInteractions, possible: PossibleInteractions,
area_layer_id: LayerId, area_layer_id: AreaLayerId,
rect: Rect, rect: Rect,
) -> Option<WindowInteraction> { ) -> Option<WindowInteraction> {
let pointer = ctx.input().pointer.interact_pos()?; let pointer = ctx.input().pointer.interact_pos()?;

View file

@ -64,9 +64,9 @@ struct ContextImpl {
requested_repaint_last_frame: bool, requested_repaint_last_frame: bool,
/// Written to during the frame. /// Written to during the frame.
layer_rects_this_frame: ahash::HashMap<LayerId, Vec<(Id, Rect)>>, layer_rects_this_frame: ahash::HashMap<AreaLayerId, Vec<(Id, Rect)>>,
/// Read /// Read
layer_rects_prev_frame: ahash::HashMap<LayerId, Vec<(Id, Rect)>>, layer_rects_prev_frame: ahash::HashMap<AreaLayerId, Vec<(Id, Rect)>>,
#[cfg(feature = "accesskit")] #[cfg(feature = "accesskit")]
is_accesskit_enabled: bool, is_accesskit_enabled: bool,
@ -101,7 +101,7 @@ impl ContextImpl {
// Ensure we register the background area so panels and background ui can catch clicks: // Ensure we register the background area so panels and background ui can catch clicks:
let screen_rect = self.input.screen_rect(); let screen_rect = self.input.screen_rect();
self.memory.areas.set_state( self.memory.areas.set_state(
LayerId::background(), AreaLayerId::background(),
containers::area::State { containers::area::State {
pos: screen_rect.min, pos: screen_rect.min,
size: screen_rect.size(), size: screen_rect.size(),
@ -377,7 +377,7 @@ impl Context {
&self, &self,
clip_rect: Rect, clip_rect: Rect,
item_spacing: Vec2, item_spacing: Vec2,
layer_id: LayerId, layer_id: AreaLayerId,
id: Id, id: Id,
rect: Rect, rect: Rect,
sense: Sense, sense: Sense,
@ -400,7 +400,7 @@ impl Context {
// Whichever widget is added LAST (=on top) gets the input: // Whichever widget is added LAST (=on top) gets the input:
if interact_rect.is_positive() && sense.interactive() { if interact_rect.is_positive() && sense.interactive() {
if self.style().debug.show_interactive_widgets { if self.style().debug.show_interactive_widgets {
Self::layer_painter(self, LayerId::debug()).rect( Self::layer_painter(self, AreaLayerId::debug()).rect(
interact_rect, interact_rect,
0.0, 0.0,
Color32::YELLOW.additive().linear_multiply(0.005), Color32::YELLOW.additive().linear_multiply(0.005),
@ -429,12 +429,12 @@ impl Context {
if slf.memory.options.style.debug.show_blocking_widget { if slf.memory.options.style.debug.show_blocking_widget {
drop(slf); drop(slf);
Self::layer_painter(self, LayerId::debug()).debug_rect( Self::layer_painter(self, AreaLayerId::debug()).debug_rect(
interact_rect, interact_rect,
Color32::GREEN, Color32::GREEN,
"Covered", "Covered",
); );
Self::layer_painter(self, LayerId::debug()).debug_rect( Self::layer_painter(self, AreaLayerId::debug()).debug_rect(
prev_rect, prev_rect,
Color32::LIGHT_BLUE, Color32::LIGHT_BLUE,
"On top", "On top",
@ -456,7 +456,7 @@ impl Context {
/// You specify if a thing is hovered, and the function gives a [`Response`]. /// You specify if a thing is hovered, and the function gives a [`Response`].
pub(crate) fn interact_with_hovered( pub(crate) fn interact_with_hovered(
&self, &self,
layer_id: LayerId, layer_id: AreaLayerId,
id: Id, id: Id,
rect: Rect, rect: Rect,
sense: Sense, sense: Sense,
@ -604,14 +604,14 @@ impl Context {
} }
/// Get a full-screen painter for a new or existing layer /// Get a full-screen painter for a new or existing layer
pub fn layer_painter(&self, layer_id: LayerId) -> Painter { pub fn layer_painter(&self, layer_id: AreaLayerId) -> Painter {
let screen_rect = self.input().screen_rect(); let screen_rect = self.input().screen_rect();
Painter::new(self.clone(), layer_id, screen_rect) Painter::new(self.clone(), layer_id, screen_rect)
} }
/// Paint on top of everything else /// Paint on top of everything else
pub fn debug_painter(&self) -> Painter { pub fn debug_painter(&self) -> Painter {
Self::layer_painter(self, LayerId::debug()) Self::layer_painter(self, AreaLayerId::debug())
} }
/// How much space is still available after panels has been added. /// How much space is still available after panels has been added.
@ -1232,25 +1232,25 @@ impl Context {
impl Context { impl Context {
/// Move all the graphics at the given layer. /// Move all the graphics at the given layer.
/// Can be used to implement drag-and-drop (see relevant demo). /// Can be used to implement drag-and-drop (see relevant demo).
pub fn translate_layer(&self, layer_id: LayerId, delta: Vec2) { pub fn translate_layer(&self, layer_id: AreaLayerId, delta: Vec2) {
if delta != Vec2::ZERO { if delta != Vec2::ZERO {
self.graphics().list(layer_id).translate(delta); self.graphics().list(layer_id).translate(delta);
} }
} }
/// Top-most layer at the given position. /// Top-most layer at the given position.
pub fn layer_id_at(&self, pos: Pos2) -> Option<LayerId> { pub fn layer_id_at(&self, pos: Pos2) -> Option<AreaLayerId> {
let resize_grab_radius_side = self.style().interaction.resize_grab_radius_side; let resize_grab_radius_side = self.style().interaction.resize_grab_radius_side;
self.memory().layer_id_at(pos, resize_grab_radius_side) self.memory().layer_id_at(pos, resize_grab_radius_side)
} }
/// Moves the given area to the top in its [`Order`]. /// Moves the given area to the top in its [`Order`].
/// [`Area`]:s and [`Window`]:s also do this automatically when being clicked on or interacted with. /// [`Area`]:s and [`Window`]:s also do this automatically when being clicked on or interacted with.
pub fn move_to_top(&self, layer_id: LayerId) { pub fn move_to_top(&self, layer_id: AreaLayerId) {
self.memory().areas.move_to_top(layer_id); self.memory().areas.move_to_top(layer_id);
} }
pub(crate) fn rect_contains_pointer(&self, layer_id: LayerId, rect: Rect) -> bool { pub(crate) fn rect_contains_pointer(&self, layer_id: AreaLayerId, rect: Rect) -> bool {
rect.is_positive() && { rect.is_positive() && {
let pointer_pos = self.input().pointer.interact_pos(); let pointer_pos = self.input().pointer.interact_pos();
if let Some(pointer_pos) = pointer_pos { if let Some(pointer_pos) = pointer_pos {
@ -1517,7 +1517,7 @@ impl Context {
ui.indent("areas", |ui| { ui.indent("areas", |ui| {
ui.label("Visible areas, ordered back to front."); ui.label("Visible areas, ordered back to front.");
ui.label("Hover to highlight"); ui.label("Hover to highlight");
let layers_ids: Vec<LayerId> = self.memory().areas.order().to_vec(); let layers_ids: Vec<AreaLayerId> = self.memory().areas.order().to_vec();
for layer_id in layers_ids { for layer_id in layers_ids {
let area = self.memory().areas.get(layer_id.id).copied(); let area = self.memory().areas.get(layer_id.id).copied();
if let Some(area) = area { if let Some(area) = area {

View file

@ -69,12 +69,12 @@ impl Order {
/// Also acts as an identifier for [`Area`]:s. /// Also acts as an identifier for [`Area`]:s.
#[derive(Clone, Copy, Debug, Hash, Eq, PartialEq)] #[derive(Clone, Copy, Debug, Hash, Eq, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] #[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub struct LayerId { pub struct AreaLayerId {
pub order: Order, pub order: Order,
pub id: Id, pub id: Id,
} }
impl LayerId { impl AreaLayerId {
pub fn new(order: Order, id: Id) -> Self { pub fn new(order: Order, id: Id) -> Self {
Self { order, id } Self { order, id }
} }
@ -163,13 +163,16 @@ impl PaintList {
pub(crate) struct GraphicLayers([IdMap<PaintList>; Order::COUNT]); pub(crate) struct GraphicLayers([IdMap<PaintList>; Order::COUNT]);
impl GraphicLayers { impl GraphicLayers {
pub fn list(&mut self, layer_id: LayerId) -> &mut PaintList { pub fn list(&mut self, layer_id: AreaLayerId) -> &mut PaintList {
self.0[layer_id.order as usize] self.0[layer_id.order as usize]
.entry(layer_id.id) .entry(layer_id.id)
.or_default() .or_default()
} }
pub fn drain(&mut self, area_order: &[LayerId]) -> impl ExactSizeIterator<Item = ClippedShape> { pub fn drain(
&mut self,
area_order: &[AreaLayerId],
) -> impl ExactSizeIterator<Item = ClippedShape> {
let mut all_shapes: Vec<_> = Default::default(); let mut all_shapes: Vec<_> = Default::default();
for &order in &Order::ALL { for &order in &Order::ALL {

View file

@ -361,7 +361,7 @@ pub use {
grid::Grid, grid::Grid,
id::{Id, IdMap}, id::{Id, IdMap},
input_state::{InputState, MultiTouchInfo, PointerState}, input_state::{InputState, MultiTouchInfo, PointerState},
layers::{LayerId, Order}, layers::{AreaLayerId, Order},
layout::*, layout::*,
memory::Memory, memory::Memory,
painter::Painter, painter::Painter,

View file

@ -1,4 +1,4 @@
use crate::{area, window, Id, IdMap, InputState, LayerId, Pos2, Rect, Style}; use crate::{area, window, AreaLayerId, Id, IdMap, InputState, Pos2, Rect, Style};
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@ -357,12 +357,12 @@ impl Memory {
} }
/// Top-most layer at the given position. /// Top-most layer at the given position.
pub fn layer_id_at(&self, pos: Pos2, resize_interact_radius_side: f32) -> Option<LayerId> { pub fn layer_id_at(&self, pos: Pos2, resize_interact_radius_side: f32) -> Option<AreaLayerId> {
self.areas.layer_id_at(pos, resize_interact_radius_side) self.areas.layer_id_at(pos, resize_interact_radius_side)
} }
/// An iterator over all layers. Back-to-front. Top is last. /// An iterator over all layers. Back-to-front. Top is last.
pub fn layer_ids(&self) -> impl ExactSizeIterator<Item = LayerId> + '_ { pub fn layer_ids(&self) -> impl ExactSizeIterator<Item = AreaLayerId> + '_ {
self.areas.order().iter().copied() self.areas.order().iter().copied()
} }
@ -525,16 +525,16 @@ impl Memory {
pub struct Areas { pub struct Areas {
areas: IdMap<area::State>, areas: IdMap<area::State>,
/// Back-to-front. Top is last. /// Back-to-front. Top is last.
order: Vec<LayerId>, order: Vec<AreaLayerId>,
visible_last_frame: ahash::HashSet<LayerId>, visible_last_frame: ahash::HashSet<AreaLayerId>,
visible_current_frame: ahash::HashSet<LayerId>, visible_current_frame: ahash::HashSet<AreaLayerId>,
/// When an area want to be on top, it is put in here. /// When an area want to be on top, it is put in here.
/// At the end of the frame, this is used to reorder the layers. /// At the end of the frame, this is used to reorder the layers.
/// This means if several layers want to be on top, they will keep their relative order. /// This means if several layers want to be on top, they will keep their relative order.
/// So if you close three windows and then reopen them all in one frame, /// So if you close three windows and then reopen them all in one frame,
/// they will all be sent to the top, but keep their previous internal order. /// they will all be sent to the top, but keep their previous internal order.
wants_to_be_on_top: ahash::HashSet<LayerId>, wants_to_be_on_top: ahash::HashSet<AreaLayerId>,
} }
impl Areas { impl Areas {
@ -547,11 +547,11 @@ impl Areas {
} }
/// Back-to-front. Top is last. /// Back-to-front. Top is last.
pub(crate) fn order(&self) -> &[LayerId] { pub(crate) fn order(&self) -> &[AreaLayerId] {
&self.order &self.order
} }
pub(crate) fn set_state(&mut self, layer_id: LayerId, state: area::State) { pub(crate) fn set_state(&mut self, layer_id: AreaLayerId, state: area::State) {
self.visible_current_frame.insert(layer_id); self.visible_current_frame.insert(layer_id);
self.areas.insert(layer_id.id, state); self.areas.insert(layer_id.id, state);
if !self.order.iter().any(|x| *x == layer_id) { if !self.order.iter().any(|x| *x == layer_id) {
@ -560,7 +560,7 @@ impl Areas {
} }
/// Top-most layer at the given position. /// Top-most layer at the given position.
pub fn layer_id_at(&self, pos: Pos2, resize_interact_radius_side: f32) -> Option<LayerId> { pub fn layer_id_at(&self, pos: Pos2, resize_interact_radius_side: f32) -> Option<AreaLayerId> {
for layer in self.order.iter().rev() { for layer in self.order.iter().rev() {
if self.is_visible(layer) { if self.is_visible(layer) {
if let Some(state) = self.areas.get(&layer.id) { if let Some(state) = self.areas.get(&layer.id) {
@ -578,15 +578,15 @@ impl Areas {
None None
} }
pub fn visible_last_frame(&self, layer_id: &LayerId) -> bool { pub fn visible_last_frame(&self, layer_id: &AreaLayerId) -> bool {
self.visible_last_frame.contains(layer_id) self.visible_last_frame.contains(layer_id)
} }
pub fn is_visible(&self, layer_id: &LayerId) -> bool { pub fn is_visible(&self, layer_id: &AreaLayerId) -> bool {
self.visible_last_frame.contains(layer_id) || self.visible_current_frame.contains(layer_id) self.visible_last_frame.contains(layer_id) || self.visible_current_frame.contains(layer_id)
} }
pub fn visible_layer_ids(&self) -> ahash::HashSet<LayerId> { pub fn visible_layer_ids(&self) -> ahash::HashSet<AreaLayerId> {
self.visible_last_frame self.visible_last_frame
.iter() .iter()
.copied() .copied()
@ -602,7 +602,7 @@ impl Areas {
.collect() .collect()
} }
pub fn move_to_top(&mut self, layer_id: LayerId) { pub fn move_to_top(&mut self, layer_id: AreaLayerId) {
self.visible_current_frame.insert(layer_id); self.visible_current_frame.insert(layer_id);
self.wants_to_be_on_top.insert(layer_id); self.wants_to_be_on_top.insert(layer_id);

View file

@ -3,7 +3,7 @@ use std::sync::Arc;
use crate::{ use crate::{
emath::{Align2, Pos2, Rect, Vec2}, emath::{Align2, Pos2, Rect, Vec2},
layers::{LayerId, PaintList, ShapeIdx}, layers::{AreaLayerId, PaintList, ShapeIdx},
Color32, Context, FontId, Color32, Context, FontId,
}; };
use epaint::{ use epaint::{
@ -21,7 +21,7 @@ pub struct Painter {
ctx: Context, ctx: Context,
/// Where we paint /// Where we paint
layer_id: LayerId, layer_id: AreaLayerId,
/// Everything painted in this [`Painter`] will be clipped against this. /// Everything painted in this [`Painter`] will be clipped against this.
/// This means nothing outside of this rectangle will be visible on screen. /// This means nothing outside of this rectangle will be visible on screen.
@ -34,7 +34,7 @@ pub struct Painter {
impl Painter { impl Painter {
/// Create a painter to a specific layer within a certain clip rectangle. /// Create a painter to a specific layer within a certain clip rectangle.
pub fn new(ctx: Context, layer_id: LayerId, clip_rect: Rect) -> Self { pub fn new(ctx: Context, layer_id: AreaLayerId, clip_rect: Rect) -> Self {
Self { Self {
ctx, ctx,
layer_id, layer_id,
@ -45,7 +45,7 @@ impl Painter {
/// Redirect where you are painting. /// Redirect where you are painting.
#[must_use] #[must_use]
pub fn with_layer_id(self, layer_id: LayerId) -> Self { pub fn with_layer_id(self, layer_id: AreaLayerId) -> Self {
Self { Self {
ctx: self.ctx, ctx: self.ctx,
layer_id, layer_id,
@ -68,7 +68,7 @@ impl Painter {
} }
/// Redirect where you are painting. /// Redirect where you are painting.
pub fn set_layer_id(&mut self, layer_id: LayerId) { pub fn set_layer_id(&mut self, layer_id: AreaLayerId) {
self.layer_id = layer_id; self.layer_id = layer_id;
} }
@ -113,7 +113,7 @@ impl Painter {
/// Where we paint /// Where we paint
#[inline(always)] #[inline(always)]
pub fn layer_id(&self) -> LayerId { pub fn layer_id(&self) -> AreaLayerId {
self.layer_id self.layer_id
} }

View file

@ -1,6 +1,6 @@
use crate::{ use crate::{
emath::{Align, Pos2, Rect, Vec2}, emath::{Align, Pos2, Rect, Vec2},
menu, Context, CursorIcon, Id, LayerId, PointerButton, Sense, Ui, WidgetText, menu, AreaLayerId, Context, CursorIcon, Id, PointerButton, Sense, Ui, WidgetText,
NUM_POINTER_BUTTONS, NUM_POINTER_BUTTONS,
}; };
@ -21,7 +21,7 @@ pub struct Response {
// IN: // IN:
/// Which layer the widget is part of. /// Which layer the widget is part of.
pub layer_id: LayerId, pub layer_id: AreaLayerId,
/// The [`Id`] of the widget/area this response pertains. /// The [`Id`] of the widget/area this response pertains.
pub id: Id, pub id: Id,

View file

@ -71,7 +71,13 @@ impl Ui {
/// ///
/// Normally you would not use this directly, but instead use /// Normally you would not use this directly, but instead use
/// [`SidePanel`], [`TopBottomPanel`], [`CentralPanel`], [`Window`] or [`Area`]. /// [`SidePanel`], [`TopBottomPanel`], [`CentralPanel`], [`Window`] or [`Area`].
pub fn new(ctx: Context, layer_id: LayerId, id: Id, max_rect: Rect, clip_rect: Rect) -> Self { pub fn new(
ctx: Context,
layer_id: AreaLayerId,
id: Id,
max_rect: Rect,
clip_rect: Rect,
) -> Self {
let style = ctx.style(); let style = ctx.style();
Ui { Ui {
id, id,
@ -310,7 +316,7 @@ impl Ui {
/// Use this to paint stuff within this [`Ui`]. /// Use this to paint stuff within this [`Ui`].
#[inline] #[inline]
pub fn layer_id(&self) -> LayerId { pub fn layer_id(&self) -> AreaLayerId {
self.painter().layer_id() self.painter().layer_id()
} }
@ -1728,7 +1734,7 @@ impl Ui {
/// Redirect shapes to another paint layer. /// Redirect shapes to another paint layer.
pub fn with_layer_id<R>( pub fn with_layer_id<R>(
&mut self, &mut self,
layer_id: LayerId, layer_id: AreaLayerId,
add_contents: impl FnOnce(&mut Self) -> R, add_contents: impl FnOnce(&mut Self) -> R,
) -> InnerResponse<R> { ) -> InnerResponse<R> {
self.scope(|ui| { self.scope(|ui| {

View file

@ -354,8 +354,10 @@ impl WrapApp {
} }
} }
let painter = let painter = ctx.layer_painter(AreaLayerId::new(
ctx.layer_painter(LayerId::new(Order::Foreground, Id::new("file_drop_target"))); Order::Foreground,
Id::new("file_drop_target"),
));
let screen_rect = ctx.input().screen_rect(); let screen_rect = ctx.input().screen_rect();
painter.rect_filled(screen_rect, 0.0, Color32::from_black_alpha(192)); painter.rect_filled(screen_rect, 0.0, Color32::from_black_alpha(192));

View file

@ -15,7 +15,7 @@ pub fn drag_source(ui: &mut Ui, id: Id, body: impl FnOnce(&mut Ui)) {
ui.output().cursor_icon = CursorIcon::Grabbing; ui.output().cursor_icon = CursorIcon::Grabbing;
// Paint the body to a new layer: // Paint the body to a new layer:
let layer_id = LayerId::new(Order::Tooltip, id); let layer_id = AreaLayerId::new(Order::Tooltip, id);
let response = ui.with_layer_id(layer_id, body).response; let response = ui.with_layer_id(layer_id, body).response;
// Now we move the visuals of the body to where the mouse is. // Now we move the visuals of the body to where the mouse is.

View file

@ -88,8 +88,10 @@ fn preview_files_being_dropped(ctx: &egui::Context) {
} }
} }
let painter = let painter = ctx.layer_painter(AreaLayerId::new(
ctx.layer_painter(LayerId::new(Order::Foreground, Id::new("file_drop_target"))); Order::Foreground,
Id::new("file_drop_target"),
));
let screen_rect = ctx.input().screen_rect(); let screen_rect = ctx.input().screen_rect();
painter.rect_filled(screen_rect, 0.0, Color32::from_black_alpha(192)); painter.rect_filled(screen_rect, 0.0, Color32::from_black_alpha(192));