Skip to content

Commit deee6a2

Browse files
gtk/subclass: Adapt per Accessible transfer type changes
1 parent 199df19 commit deee6a2

File tree

1 file changed

+9
-63
lines changed

1 file changed

+9
-63
lines changed

gtk4/src/subclass/accessible.rs

Lines changed: 9 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,8 @@
33
// rustdoc-stripper-ignore-next
44
//! Traits intended for implementing the [`Acessible`](crate::Acessible) interface.
55
6-
use super::PtrHolder;
76
use crate::{prelude::*, subclass::prelude::*, ATContext, Accessible, AccessiblePlatformState};
8-
use glib::{translate::*, Quark};
9-
use once_cell::sync::Lazy;
7+
use glib::translate::*;
108
use std::mem::MaybeUninit;
119

1210
pub trait AccessibleImpl: ObjectImpl {
@@ -112,7 +110,7 @@ impl<T: AccessibleImpl> AccessibleImplExt for T {
112110
.get_at_context
113111
.expect("no parent \"get_at_context\" implementation");
114112

115-
from_glib_none(func(
113+
from_glib_full(func(
116114
self.obj().unsafe_cast_ref::<Accessible>().to_glib_none().0,
117115
))
118116
}
@@ -128,7 +126,7 @@ impl<T: AccessibleImpl> AccessibleImplExt for T {
128126
.get_accessible_parent
129127
.expect("no parent \"get_accessible_parent\" implementation");
130128

131-
from_glib_none(func(
129+
from_glib_full(func(
132130
self.obj().unsafe_cast_ref::<Accessible>().to_glib_none().0,
133131
))
134132
}
@@ -144,7 +142,7 @@ impl<T: AccessibleImpl> AccessibleImplExt for T {
144142
.get_first_accessible_child
145143
.expect("no parent \"get_first_accessible_child\" implementation");
146144

147-
from_glib_none(func(
145+
from_glib_full(func(
148146
self.obj().unsafe_cast_ref::<Accessible>().to_glib_none().0,
149147
))
150148
}
@@ -160,7 +158,7 @@ impl<T: AccessibleImpl> AccessibleImplExt for T {
160158
.get_next_accessible_sibling
161159
.expect("no parent \"get_next_accessible_sibling\" implementation");
162160

163-
from_glib_none(func(
161+
from_glib_full(func(
164162
self.obj().unsafe_cast_ref::<Accessible>().to_glib_none().0,
165163
))
166164
}
@@ -212,90 +210,38 @@ unsafe extern "C" fn accessible_get_bounds<T: AccessibleImpl>(
212210
}
213211
}
214212

215-
static ACCESSIBLE_GET_AT_CONTEXT_QUARK: Lazy<Quark> =
216-
Lazy::new(|| Quark::from_str("gtk4-rs-subclass-accessible-get-at-context"));
217213
unsafe extern "C" fn accessible_get_at_context<T: AccessibleImpl>(
218214
accessible: *mut ffi::GtkAccessible,
219215
) -> *mut ffi::GtkATContext {
220216
let instance = &*(accessible as *mut T::Instance);
221217
let imp = instance.imp();
222218

223-
if let Some(at_context) = imp.at_context() {
224-
let at_context = at_context.into_glib_ptr();
225-
imp.obj().set_qdata(
226-
*ACCESSIBLE_GET_AT_CONTEXT_QUARK,
227-
PtrHolder(at_context, |ptr| {
228-
glib::gobject_ffi::g_object_unref(ptr as *mut _)
229-
}),
230-
);
231-
at_context
232-
} else {
233-
std::ptr::null_mut()
234-
}
219+
imp.at_context().into_glib_ptr()
235220
}
236221

237-
static ACCESSIBLE_GET_ACCESSIBLE_PARENT: Lazy<Quark> =
238-
Lazy::new(|| Quark::from_str("gtk4-rs-subclass-accessible-get-accessible-parent"));
239222
unsafe extern "C" fn accessible_get_accessible_parent<T: AccessibleImpl>(
240223
accessible: *mut ffi::GtkAccessible,
241224
) -> *mut ffi::GtkAccessible {
242225
let instance = &*(accessible as *mut T::Instance);
243226
let imp = instance.imp();
244227

245-
if let Some(accessible_parent) = imp.accessible_parent() {
246-
let accessible_parent = accessible_parent.into_glib_ptr();
247-
imp.obj().set_qdata(
248-
*ACCESSIBLE_GET_ACCESSIBLE_PARENT,
249-
PtrHolder(accessible_parent, |ptr| {
250-
glib::gobject_ffi::g_object_unref(ptr as *mut _)
251-
}),
252-
);
253-
accessible_parent
254-
} else {
255-
std::ptr::null_mut()
256-
}
228+
imp.accessible_parent().into_glib_ptr()
257229
}
258230

259-
static ACCESSIBLE_GET_FIRST_ACCESSIBLE_CHILD: Lazy<Quark> =
260-
Lazy::new(|| Quark::from_str("gtk4-rs-subclass-accessible-get-first)accessible-child"));
261231
unsafe extern "C" fn accessible_get_first_accessible_child<T: AccessibleImpl>(
262232
accessible: *mut ffi::GtkAccessible,
263233
) -> *mut ffi::GtkAccessible {
264234
let instance = &*(accessible as *mut T::Instance);
265235
let imp = instance.imp();
266236

267-
if let Some(first_accessible_child) = imp.first_accessible_child() {
268-
let first_accessible_child = first_accessible_child.into_glib_ptr();
269-
imp.obj().set_qdata(
270-
*ACCESSIBLE_GET_FIRST_ACCESSIBLE_CHILD,
271-
PtrHolder(first_accessible_child, |ptr| {
272-
glib::gobject_ffi::g_object_unref(ptr as *mut _)
273-
}),
274-
);
275-
first_accessible_child
276-
} else {
277-
std::ptr::null_mut()
278-
}
237+
imp.first_accessible_child().into_glib_ptr()
279238
}
280239

281-
static ACCESSIBLE_GET_NEXT_ACCESSIBLE_SIBLING: Lazy<Quark> =
282-
Lazy::new(|| Quark::from_str("gtk4-rs-subclass-accessible-get-next-accessible-sibling"));
283240
unsafe extern "C" fn accessible_get_next_accessible_sibling<T: AccessibleImpl>(
284241
accessible: *mut ffi::GtkAccessible,
285242
) -> *mut ffi::GtkAccessible {
286243
let instance = &*(accessible as *mut T::Instance);
287244
let imp = instance.imp();
288245

289-
if let Some(next_accessible_sibling) = imp.next_accessible_sibling() {
290-
let next_accessible_sibling = next_accessible_sibling.into_glib_ptr();
291-
imp.obj().set_qdata(
292-
*ACCESSIBLE_GET_NEXT_ACCESSIBLE_SIBLING,
293-
PtrHolder(next_accessible_sibling, |ptr| {
294-
glib::gobject_ffi::g_object_unref(ptr as *mut _)
295-
}),
296-
);
297-
next_accessible_sibling
298-
} else {
299-
std::ptr::null_mut()
300-
}
246+
imp.next_accessible_sibling().into_glib_ptr()
301247
}

0 commit comments

Comments
 (0)