use super::flags::{DragDropPayloadCond, DragDropSourceFlags};
use super::payload::DragDropPayload;
use super::source::DragDropSource;
use super::target::DragDropTarget;
use crate::{Ui, sys};
impl Ui {
pub fn drag_drop_source_config<T: AsRef<str>>(&self, name: T) -> DragDropSource<'_, T> {
DragDropSource {
name,
flags: DragDropSourceFlags::NONE,
cond: DragDropPayloadCond::Always,
ui: self,
}
}
#[doc(alias = "BeginDragDropTarget")]
pub fn drag_drop_target(&self) -> Option<DragDropTarget<'_>> {
let should_begin = unsafe { sys::igBeginDragDropTarget() };
if should_begin {
Some(DragDropTarget(self))
} else {
None
}
}
#[doc(alias = "GetDragDropPayload")]
pub fn drag_drop_payload(&self) -> Option<DragDropPayload> {
unsafe {
let ptr = sys::igGetDragDropPayload();
if ptr.is_null() {
return None;
}
Some(DragDropPayload::from_raw(*ptr))
}
}
}