//! Port of apprt/gtk/class/clipboard_confirmation_dialog.zig
//! (`GhosttyClipboardConfirmationDialog`).
//!
//! Properties: `can-remember`, `request` (boxed [`ClipboardRequestBoxed`]),
//! `clipboard-contents` (GtkTextBuffer), `blur`. Signals `confirm(bool)` and
//! `deny(bool)` (bool = "remember choice").
use std::{
cell::{Cell, RefCell},
sync::OnceLock,
};
use adw::{prelude::*, subclass::prelude::*};
use ghostty_apprt::structs::ClipboardRequest;
use ghostty_os::i18n::tr;
use gtk::{glib, glib::subclass::Signal};
use super::dialog::{Dialog, DialogImpl};
/// GBoxed wrapper for [`ClipboardRequest`] (Zig: boxed `apprt.ClipboardRequest`).
#[derive(Debug, Clone, Copy, PartialEq, Eq, glib::Boxed)]
#[boxed_type(name = "GhosttyClipboardRequest", nullable)]
pub struct ClipboardRequestBoxed(pub ClipboardRequest);
mod imp {
use adw::prelude::*;
use gtk::{glib, subclass::prelude::*};
use super::{
AdwAlertDialogImpl,
AdwDialogImpl,
Cell,
ClipboardRequest,
ClipboardRequestBoxed,
Dialog,
DialogImpl,
ObjectImpl,
ObjectSubclass,
OnceLock,
RefCell,
Signal,
WidgetImpl,
tr,
};
#[derive(Default, glib::Properties, gtk::CompositeTemplate)]
#[properties(wrapper_type = super::ClipboardConfirmationDialog)]
#[template(resource = "/com/mitchellh/ghostty/ui/1.4/clipboard-confirmation-dialog.ui")]
pub struct ClipboardConfirmationDialog {
/// The request that this dialog is for.
#[property(get, set, nullable)]
pub request: RefCell