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
// Take a look at the license at the top of the repository in the LICENSE file.

use crate::EditableText;
use glib::object::IsA;
use glib::translate::*;

pub trait EditableTextExtManual: 'static {
    /// Insert text at a given position.
    /// ## `string`
    /// the text to insert
    /// ## `length`
    /// the length of text to insert, in bytes
    /// ## `position`
    /// The caller initializes this to
    /// the position at which to insert the text. After the call it
    /// points at the position after the newly inserted text.
    #[doc(alias = "atk_editable_text_insert_text")]
    fn insert_text(&self, string: &str, position: i32) -> i32;
}

impl<O: IsA<EditableText>> EditableTextExtManual for O {
    fn insert_text(&self, string: &str, mut position: i32) -> i32 {
        let length = string.len() as i32;
        unsafe {
            ffi::atk_editable_text_insert_text(
                self.as_ref().to_glib_none().0,
                string.to_glib_none().0,
                length,
                &mut position,
            );
        }
        position
    }
}