@@ -241,6 +241,11 @@ impl<'a, Message: 'static> DndDestination<'a, Message> {
241241 Internal :: Set ( _) => panic ! ( "Invalid Id assigned to dnd destination." ) ,
242242 } ) )
243243 }
244+
245+ pub fn id ( mut self , id : Id ) -> Self {
246+ self . id = id;
247+ self
248+ }
244249}
245250
246251impl < Message : ' static > Widget < Message , crate :: Theme , crate :: Renderer >
@@ -354,8 +359,12 @@ impl<Message: 'static> Widget<Message, crate::Theme, crate::Renderer>
354359 }
355360 return event:: Status :: Captured ;
356361 }
357- Event :: Dnd ( DndEvent :: Offer ( id, OfferEvent :: Leave ) ) if id == Some ( my_id) => {
358- state. on_leave ( self . on_leave . as_ref ( ) . map ( std:: convert:: AsRef :: as_ref) ) ;
362+ Event :: Dnd ( DndEvent :: Offer ( id, OfferEvent :: Leave ) ) => {
363+ if let Some ( msg) =
364+ state. on_leave ( self . on_leave . as_ref ( ) . map ( std:: convert:: AsRef :: as_ref) )
365+ {
366+ shell. publish ( msg) ;
367+ }
359368
360369 if self . forward_drag_as_cursor {
361370 let drag_cursor = mouse:: Cursor :: Unavailable ;
@@ -403,7 +412,7 @@ impl<Message: 'static> Widget<Message, crate::Theme, crate::Renderer>
403412 }
404413 return event:: Status :: Captured ;
405414 }
406- Event :: Dnd ( DndEvent :: Offer ( id, OfferEvent :: LeaveDestination ) ) if id == Some ( my_id ) => {
415+ Event :: Dnd ( DndEvent :: Offer ( id, OfferEvent :: LeaveDestination ) ) => {
407416 if let Some ( msg) =
408417 state. on_leave ( self . on_leave . as_ref ( ) . map ( std:: convert:: AsRef :: as_ref) )
409418 {
0 commit comments