1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from gir-files (https://github.com/gtk-rs/gir-files)
// DO NOT EDIT
#![allow(deprecated)]
use crate::TreePath;
use glib::{prelude::*, translate::*};
use std::fmt;
glib::wrapper! {
/// List views use widgets to display their contents.
/// You can use [`DragSource`][crate::DragSource] to implement a drag source
/// Interface for Drag-and-Drop destinations in [`TreeView`][crate::TreeView].
///
/// # Implements
///
/// [`TreeDragSourceExt`][trait@crate::prelude::TreeDragSourceExt]
#[doc(alias = "GtkTreeDragSource")]
pub struct TreeDragSource(Interface<ffi::GtkTreeDragSource, ffi::GtkTreeDragSourceIface>);
match fn {
type_ => || ffi::gtk_tree_drag_source_get_type(),
}
}
impl TreeDragSource {
pub const NONE: Option<&'static TreeDragSource> = None;
}
/// Trait containing all [`struct@TreeDragSource`] methods.
///
/// # Implementors
///
/// [`ListStore`][struct@crate::ListStore], [`TreeDragSource`][struct@crate::TreeDragSource], [`TreeModelFilter`][struct@crate::TreeModelFilter], [`TreeModelSort`][struct@crate::TreeModelSort], [`TreeStore`][struct@crate::TreeStore]
pub trait TreeDragSourceExt: 'static {
/// Asks the [`TreeDragSource`][crate::TreeDragSource] to delete the row at @path, because
/// it was moved somewhere else via drag-and-drop. Returns [`false`]
/// if the deletion fails because @path no longer exists, or for
/// some model-specific reason. Should robustly handle a @path no
/// longer found in the model!
///
/// # Deprecated since 4.10
///
/// Use list models instead
/// ## `path`
/// row that was being dragged
///
/// # Returns
///
/// [`true`] if the row was successfully deleted
#[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
#[allow(deprecated)]
#[doc(alias = "gtk_tree_drag_source_drag_data_delete")]
fn drag_data_delete(&self, path: &TreePath) -> bool;
/// Asks the [`TreeDragSource`][crate::TreeDragSource] to return a [`gdk::ContentProvider`][crate::gdk::ContentProvider] representing
/// the row at @path. Should robustly handle a @path no
/// longer found in the model!
///
/// # Deprecated since 4.10
///
/// Use list models instead
/// ## `path`
/// row that was dragged
///
/// # Returns
///
/// a [`gdk::ContentProvider`][crate::gdk::ContentProvider] for the
/// given @path
#[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
#[allow(deprecated)]
#[doc(alias = "gtk_tree_drag_source_drag_data_get")]
fn drag_data_get(&self, path: &TreePath) -> Option<gdk::ContentProvider>;
/// Asks the [`TreeDragSource`][crate::TreeDragSource] whether a particular row can be used as
/// the source of a DND operation. If the source doesn’t implement
/// this interface, the row is assumed draggable.
///
/// # Deprecated since 4.10
///
/// Use list models instead
/// ## `path`
/// row on which user is initiating a drag
///
/// # Returns
///
/// [`true`] if the row can be dragged
#[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
#[allow(deprecated)]
#[doc(alias = "gtk_tree_drag_source_row_draggable")]
fn row_draggable(&self, path: &TreePath) -> bool;
}
impl<O: IsA<TreeDragSource>> TreeDragSourceExt for O {
#[allow(deprecated)]
fn drag_data_delete(&self, path: &TreePath) -> bool {
unsafe {
from_glib(ffi::gtk_tree_drag_source_drag_data_delete(
self.as_ref().to_glib_none().0,
mut_override(path.to_glib_none().0),
))
}
}
#[allow(deprecated)]
fn drag_data_get(&self, path: &TreePath) -> Option<gdk::ContentProvider> {
unsafe {
from_glib_full(ffi::gtk_tree_drag_source_drag_data_get(
self.as_ref().to_glib_none().0,
mut_override(path.to_glib_none().0),
))
}
}
#[allow(deprecated)]
fn row_draggable(&self, path: &TreePath) -> bool {
unsafe {
from_glib(ffi::gtk_tree_drag_source_row_draggable(
self.as_ref().to_glib_none().0,
mut_override(path.to_glib_none().0),
))
}
}
}
impl fmt::Display for TreeDragSource {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.write_str("TreeDragSource")
}
}