feat: add drag_destinations for container widgets
This commit is contained in:
parent
b9cc88c492
commit
745cba1c2c
5 changed files with 72 additions and 1 deletions
|
|
@ -198,6 +198,23 @@ impl<'a, Message: 'static + Clone> Widget<Message, crate::Theme, Renderer>
|
||||||
.map(|((c, c_layout), state)| c.as_widget().a11y_nodes(c_layout, state, p)),
|
.map(|((c, c_layout), state)| c.as_widget().a11y_nodes(c_layout, state, p)),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn drag_destinations(
|
||||||
|
&self,
|
||||||
|
state: &Tree,
|
||||||
|
layout: Layout<'_>,
|
||||||
|
dnd_rectangles: &mut iced_style::core::clipboard::DndDestinationRectangles,
|
||||||
|
) {
|
||||||
|
for ((e, layout), state) in self
|
||||||
|
.children
|
||||||
|
.iter()
|
||||||
|
.zip(layout.children())
|
||||||
|
.zip(state.children.iter())
|
||||||
|
{
|
||||||
|
e.as_widget()
|
||||||
|
.drag_destinations(state, layout, dnd_rectangles);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, Message: 'static + Clone> From<FlexRow<'a, Message>> for Element<'a, Message> {
|
impl<'a, Message: 'static + Clone> From<FlexRow<'a, Message>> for Element<'a, Message> {
|
||||||
|
|
|
||||||
|
|
@ -263,6 +263,23 @@ impl<'a, Message: 'static + Clone> Widget<Message, crate::Theme, Renderer> for G
|
||||||
.map(|((c, c_layout), state)| c.as_widget().a11y_nodes(c_layout, state, p)),
|
.map(|((c, c_layout), state)| c.as_widget().a11y_nodes(c_layout, state, p)),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn drag_destinations(
|
||||||
|
&self,
|
||||||
|
state: &Tree,
|
||||||
|
layout: Layout<'_>,
|
||||||
|
dnd_rectangles: &mut iced_style::core::clipboard::DndDestinationRectangles,
|
||||||
|
) {
|
||||||
|
for ((e, layout), state) in self
|
||||||
|
.children
|
||||||
|
.iter()
|
||||||
|
.zip(layout.children())
|
||||||
|
.zip(state.children.iter())
|
||||||
|
{
|
||||||
|
e.as_widget()
|
||||||
|
.drag_destinations(state, layout, dnd_rectangles);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, Message: 'static + Clone> From<Grid<'a, Message>> for Element<'a, Message> {
|
impl<'a, Message: 'static + Clone> From<Grid<'a, Message>> for Element<'a, Message> {
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
use crate::{ext::CollectionWidget, widget, Element};
|
use crate::{ext::CollectionWidget, widget, Element};
|
||||||
use apply::Apply;
|
use apply::Apply;
|
||||||
use derive_setters::Setters;
|
use derive_setters::Setters;
|
||||||
use iced::{window, Length};
|
use iced::Length;
|
||||||
use iced_core::{widget::tree, Widget};
|
use iced_core::{widget::tree, Widget};
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
|
|
||||||
|
|
@ -232,6 +232,23 @@ impl<'a, Message: Clone + 'static> Widget<Message, crate::Theme, crate::Renderer
|
||||||
.as_widget_mut()
|
.as_widget_mut()
|
||||||
.overlay(child_tree, child_layout, renderer)
|
.overlay(child_tree, child_layout, renderer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn drag_destinations(
|
||||||
|
&self,
|
||||||
|
state: &tree::Tree,
|
||||||
|
layout: iced_core::Layout<'_>,
|
||||||
|
dnd_rectangles: &mut iced_style::core::clipboard::DndDestinationRectangles,
|
||||||
|
) {
|
||||||
|
if let Some((child_tree, child_layout)) =
|
||||||
|
state.children.iter().zip(layout.children()).next()
|
||||||
|
{
|
||||||
|
self.header_bar_inner.as_widget().drag_destinations(
|
||||||
|
child_tree,
|
||||||
|
child_layout,
|
||||||
|
dnd_rectangles,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, Message: Clone + 'static> HeaderBar<'a, Message> {
|
impl<'a, Message: Clone + 'static> HeaderBar<'a, Message> {
|
||||||
|
|
|
||||||
|
|
@ -251,6 +251,16 @@ where
|
||||||
) -> Option<overlay::Element<'b, Message, Theme, Renderer>> {
|
) -> Option<overlay::Element<'b, Message, Theme, Renderer>> {
|
||||||
self.container.overlay(tree, layout, renderer)
|
self.container.overlay(tree, layout, renderer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn drag_destinations(
|
||||||
|
&self,
|
||||||
|
state: &Tree,
|
||||||
|
layout: Layout<'_>,
|
||||||
|
dnd_rectangles: &mut iced_style::core::clipboard::DndDestinationRectangles,
|
||||||
|
) {
|
||||||
|
self.container
|
||||||
|
.drag_destinations(state, layout, dnd_rectangles);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, Message, Theme, Renderer> From<LayerContainer<'a, Message, Theme, Renderer>>
|
impl<'a, Message, Theme, Renderer> From<LayerContainer<'a, Message, Theme, Renderer>>
|
||||||
|
|
|
||||||
|
|
@ -291,6 +291,16 @@ where
|
||||||
) -> Option<overlay::Element<'b, Message, crate::Theme, Renderer>> {
|
) -> Option<overlay::Element<'b, Message, crate::Theme, Renderer>> {
|
||||||
self.container.overlay(tree, layout, renderer)
|
self.container.overlay(tree, layout, renderer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn drag_destinations(
|
||||||
|
&self,
|
||||||
|
state: &Tree,
|
||||||
|
layout: Layout<'_>,
|
||||||
|
dnd_rectangles: &mut iced_style::core::clipboard::DndDestinationRectangles,
|
||||||
|
) {
|
||||||
|
self.container
|
||||||
|
.drag_destinations(state, layout, dnd_rectangles);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, Message, Renderer, I> From<RectangleTrackingContainer<'a, Message, Renderer, I>>
|
impl<'a, Message, Renderer, I> From<RectangleTrackingContainer<'a, Message, Renderer, I>>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue