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
// Take a look at the license at the top of the repository in the LICENSE file.
use crate::{CellEditable, CellRenderer, CellRendererState, Widget};
use glib::translate::*;
use glib::IsA;
pub trait CellRendererExtManual {
/// Passes an activate event to the cell renderer for possible processing.
/// Some cell renderers may use events; for example, [`CellRendererToggle`][crate::CellRendererToggle]
/// toggles when it gets a mouse click.
/// ## `event`
/// a [`gdk::Event`][crate::gdk::Event]
/// ## `widget`
/// widget that received the event
/// ## `path`
/// widget-dependent string representation of the event location;
/// e.g. for [`TreeView`][crate::TreeView], a string representation of [`TreePath`][crate::TreePath]
/// ## `background_area`
/// background area as passed to `gtk_cell_renderer_render()`
/// ## `cell_area`
/// cell area as passed to `gtk_cell_renderer_render()`
/// ## `flags`
/// render flags
///
/// # Returns
///
/// [`true`] if the event was consumed/handled
#[doc(alias = "gtk_cell_renderer_activate")]
fn activate<Q: IsA<Widget>, R: AsRef<gdk::Event>>(
&self,
event: &R,
widget: &Q,
path: &str,
background_area: &gdk::Rectangle,
cell_area: &gdk::Rectangle,
flags: CellRendererState,
) -> bool;
/// Starts editing the contents of this `self`, through a new [`CellEditable`][crate::CellEditable]
/// widget created by the [`CellRenderer`][crate::CellRenderer]Class.start_editing virtual function.
/// ## `event`
/// a [`gdk::Event`][crate::gdk::Event]
/// ## `widget`
/// widget that received the event
/// ## `path`
/// widget-dependent string representation of the event location;
/// e.g. for [`TreeView`][crate::TreeView], a string representation of [`TreePath`][crate::TreePath]
/// ## `background_area`
/// background area as passed to `gtk_cell_renderer_render()`
/// ## `cell_area`
/// cell area as passed to `gtk_cell_renderer_render()`
/// ## `flags`
/// render flags
///
/// # Returns
///
/// A new [`CellEditable`][crate::CellEditable] for editing this
/// `self`, or [`None`] if editing is not possible
#[doc(alias = "gtk_cell_renderer_start_editing")]
fn start_editing<Q: IsA<Widget>, R: AsRef<gdk::Event>>(
&self,
event: Option<&R>,
widget: &Q,
path: &str,
background_area: &gdk::Rectangle,
cell_area: &gdk::Rectangle,
flags: CellRendererState,
) -> Option<CellEditable>;
}
impl<O: IsA<CellRenderer>> CellRendererExtManual for O {
fn activate<Q: IsA<Widget>, R: AsRef<gdk::Event>>(
&self,
event: &R,
widget: &Q,
path: &str,
background_area: &gdk::Rectangle,
cell_area: &gdk::Rectangle,
flags: CellRendererState,
) -> bool {
unsafe {
from_glib(ffi::gtk_cell_renderer_activate(
self.as_ref().to_glib_none().0,
event.as_ref().to_glib_none().0,
widget.as_ref().to_glib_none().0,
path.to_glib_none().0,
background_area.to_glib_none().0,
cell_area.to_glib_none().0,
flags.into_glib(),
))
}
}
fn start_editing<Q: IsA<Widget>, R: AsRef<gdk::Event>>(
&self,
event: Option<&R>,
widget: &Q,
path: &str,
background_area: &gdk::Rectangle,
cell_area: &gdk::Rectangle,
flags: CellRendererState,
) -> Option<CellEditable> {
unsafe {
from_glib_none(ffi::gtk_cell_renderer_start_editing(
self.as_ref().to_glib_none().0,
event.map(|e| e.as_ref()).to_glib_none().0,
widget.as_ref().to_glib_none().0,
path.to_glib_none().0,
background_area.to_glib_none().0,
cell_area.to_glib_none().0,
flags.into_glib(),
))
}
}
}