element: Refactor remaining libcosmic elements for blur
This commit is contained in:
parent
6c76fdaa79
commit
db06770a6b
9 changed files with 444 additions and 142 deletions
|
|
@ -1525,6 +1525,27 @@ impl FloatingLayout {
|
|||
if focused == Some(elem) && !elem.is_maximized(false) {
|
||||
let active_window_hint = crate::theme::active_window_hint(theme);
|
||||
let radius = elem.corner_radius(geometry.size.as_logical(), indicator_thickness);
|
||||
|
||||
if let Some((mode, resize)) = resize_indicator.as_mut() {
|
||||
let mut resize_geometry = geometry;
|
||||
resize_geometry.loc -= (18, 18).into();
|
||||
resize_geometry.size += (36, 36).into();
|
||||
|
||||
resize.resize(resize_geometry.size.as_logical());
|
||||
resize.output_enter(output);
|
||||
resize.push_render_elements(
|
||||
renderer,
|
||||
resize_geometry
|
||||
.loc
|
||||
.as_logical()
|
||||
.to_physical_precise_round(output_scale),
|
||||
output_scale.into(),
|
||||
alpha * mode.alpha().unwrap_or(1.0),
|
||||
&mut |elem| push(CosmicMappedRenderElement::Window(elem.into())),
|
||||
None,
|
||||
);
|
||||
}
|
||||
|
||||
if indicator_thickness > 0 {
|
||||
let element = IndicatorShader::focus_element(
|
||||
renderer,
|
||||
|
|
@ -1542,25 +1563,6 @@ impl FloatingLayout {
|
|||
);
|
||||
push(element.into());
|
||||
}
|
||||
|
||||
if let Some((mode, resize)) = resize_indicator.as_mut() {
|
||||
let mut resize_geometry = geometry;
|
||||
resize_geometry.loc -= (18, 18).into();
|
||||
resize_geometry.size += (36, 36).into();
|
||||
|
||||
resize.resize(resize_geometry.size.as_logical());
|
||||
resize.output_enter(output, Rectangle::default() /* unused */);
|
||||
resize.push_render_elements(
|
||||
renderer,
|
||||
resize_geometry
|
||||
.loc
|
||||
.as_logical()
|
||||
.to_physical_precise_round(output_scale),
|
||||
output_scale.into(),
|
||||
alpha * mode.alpha().unwrap_or(1.0),
|
||||
&mut |elem| push(CosmicMappedRenderElement::Window(elem.into())),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
let maybe_map = if let Some(anim) = self.animations.get(elem) {
|
||||
|
|
|
|||
|
|
@ -5330,13 +5330,12 @@ fn render_new_tree_windows<R>(
|
|||
|
||||
let mut group_backdrop = None;
|
||||
let mut indicators = SmallVec::<[CosmicMappedRenderElement<R>; 2]>::new_const();
|
||||
let mut resize_element = None;
|
||||
let mut resize_elements = SmallVec::<[CosmicMappedRenderElement<R>; 10]>::new_const();
|
||||
let mut swap_elements = SmallVec::<[CosmicMappedRenderElement<R>; 4]>::new_const();
|
||||
|
||||
let output_geo = output.geometry();
|
||||
let output_scale = output.current_scale().fractional_scale();
|
||||
|
||||
let (swap_indicator, swap_tree) = overview.1.unzip();
|
||||
let (mut swap_indicator, swap_tree) = overview.1.unzip();
|
||||
let swap_desc = swap_desc.filter(|_| is_active_output);
|
||||
let swap_tree = swap_tree.flatten().filter(|_| is_active_output);
|
||||
let window_hint = crate::theme::active_window_hint(theme);
|
||||
|
|
@ -5540,16 +5539,18 @@ fn render_new_tree_windows<R>(
|
|||
.unwrap_or(false)
|
||||
})
|
||||
.unwrap_or(false))
|
||||
&& let Some(swap) = swap_indicator.as_ref()
|
||||
&& let Some(swap) = swap_indicator.as_mut()
|
||||
{
|
||||
swap.resize(geo.size.as_logical());
|
||||
swap.output_enter(output, output_geo.as_logical());
|
||||
let size = geo.size.as_logical();
|
||||
swap.resize(size);
|
||||
swap.output_enter(output);
|
||||
swap.push_render_elements(
|
||||
renderer,
|
||||
geo.loc.as_logical().to_physical_precise_round(output_scale),
|
||||
output_scale.into(),
|
||||
alpha * overview.0.alpha().unwrap_or(1.0),
|
||||
&mut |elem| swap_elements.push(elem.into()),
|
||||
None,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -5560,29 +5561,20 @@ fn render_new_tree_windows<R>(
|
|||
geo.size += (36, 36).into();
|
||||
|
||||
resize.resize(geo.size.as_logical());
|
||||
resize.output_enter(output, output_geo.as_logical());
|
||||
resize.output_enter(output);
|
||||
let possible_edges =
|
||||
TilingLayout::possible_resizes(target_tree, node_id.clone());
|
||||
if !possible_edges.is_empty() {
|
||||
if resize.with_program(|internal| {
|
||||
let mut edges = internal.edges.lock().unwrap();
|
||||
if *edges != possible_edges {
|
||||
*edges = possible_edges;
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}) {
|
||||
resize.force_update();
|
||||
}
|
||||
resize.set_edges(possible_edges);
|
||||
resize.push_render_elements(
|
||||
renderer,
|
||||
geo.loc.as_logical().to_physical_precise_round(output_scale),
|
||||
output_scale.into(),
|
||||
alpha * mode.alpha().unwrap_or(1.0),
|
||||
&mut |elem| {
|
||||
resize_element = Some(elem.into());
|
||||
resize_elements.push(elem.into());
|
||||
},
|
||||
None,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -5743,7 +5735,7 @@ fn render_new_tree_windows<R>(
|
|||
},
|
||||
);
|
||||
|
||||
for elem in resize_element
|
||||
for elem in resize_elements
|
||||
.into_iter()
|
||||
.chain(swap_elements)
|
||||
.chain(indicators)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue