			.map(|(i, target)| TargetEntry::new(target, TargetFlags::all(), i as u32))
			.collect();

		clipboard.set_with_data(&targets, move |_, selection, _| {
			selection.set(&selection.target(), 8i32, string.as_bytes());
		});
	}

	pub(crate) fn read_text(&self) -> Option<String> {
		let display = gdk::Display::default().unwrap();
		let clipboard = gtk::Clipboard::default(&display).unwrap();

		for target in &CLIPBOARD_TARGETS {