@@ -9,7 +9,10 @@ use glib::{translate::*, Value};
9
9
10
10
use crate :: { ffi, prelude:: * , subclass:: prelude:: * , Clipboard , ContentFormats , ContentProvider } ;
11
11
12
- pub trait ContentProviderImpl : ContentProviderImplExt + ObjectImpl {
12
+ pub trait ContentProviderImpl : ObjectImpl
13
+ where
14
+ <Self as ObjectSubclass >:: Type : IsA < glib:: Object > ,
15
+ {
13
16
fn content_changed ( & self ) {
14
17
self . parent_content_changed ( )
15
18
}
@@ -44,12 +47,10 @@ pub trait ContentProviderImpl: ContentProviderImplExt + ObjectImpl {
44
47
}
45
48
}
46
49
47
- mod sealed {
48
- pub trait Sealed { }
49
- impl < T : super :: ContentProviderImplExt > Sealed for T { }
50
- }
51
-
52
- pub trait ContentProviderImplExt : sealed:: Sealed + ObjectSubclass {
50
+ pub trait ContentProviderImplExt : ContentProviderImpl
51
+ where
52
+ <Self as ObjectSubclass >:: Type : IsA < glib:: Object > ,
53
+ {
53
54
fn parent_content_changed ( & self ) {
54
55
unsafe {
55
56
let data = Self :: type_data ( ) ;
@@ -260,9 +261,15 @@ pub trait ContentProviderImplExt: sealed::Sealed + ObjectSubclass {
260
261
}
261
262
}
262
263
263
- impl < T : ContentProviderImpl > ContentProviderImplExt for T { }
264
+ impl < T : ContentProviderImpl > ContentProviderImplExt for T where
265
+ <T as ObjectSubclass >:: Type : IsA < glib:: Object >
266
+ {
267
+ }
264
268
265
- unsafe impl < T : ContentProviderImpl > IsSubclassable < T > for ContentProvider {
269
+ unsafe impl < T : ContentProviderImpl > IsSubclassable < T > for ContentProvider
270
+ where
271
+ <T as ObjectSubclass >:: Type : IsA < glib:: Object > ,
272
+ {
266
273
fn class_init ( class : & mut glib:: Class < Self > ) {
267
274
Self :: parent_class_init :: < T > ( class) ;
268
275
@@ -280,7 +287,9 @@ unsafe impl<T: ContentProviderImpl> IsSubclassable<T> for ContentProvider {
280
287
281
288
unsafe extern "C" fn content_provider_content_changed < T : ContentProviderImpl > (
282
289
ptr : * mut ffi:: GdkContentProvider ,
283
- ) {
290
+ ) where
291
+ <T as ObjectSubclass >:: Type : IsA < glib:: Object > ,
292
+ {
284
293
let instance = & * ( ptr as * mut T :: Instance ) ;
285
294
let imp = instance. imp ( ) ;
286
295
@@ -290,7 +299,9 @@ unsafe extern "C" fn content_provider_content_changed<T: ContentProviderImpl>(
290
299
unsafe extern "C" fn content_provider_attach_clipboard < T : ContentProviderImpl > (
291
300
ptr : * mut ffi:: GdkContentProvider ,
292
301
clipboard_ptr : * mut ffi:: GdkClipboard ,
293
- ) {
302
+ ) where
303
+ <T as ObjectSubclass >:: Type : IsA < glib:: Object > ,
304
+ {
294
305
let instance = & * ( ptr as * mut T :: Instance ) ;
295
306
let imp = instance. imp ( ) ;
296
307
let clipboard = from_glib_borrow ( clipboard_ptr) ;
@@ -301,7 +312,9 @@ unsafe extern "C" fn content_provider_attach_clipboard<T: ContentProviderImpl>(
301
312
unsafe extern "C" fn content_provider_detach_clipboard < T : ContentProviderImpl > (
302
313
ptr : * mut ffi:: GdkContentProvider ,
303
314
clipboard_ptr : * mut ffi:: GdkClipboard ,
304
- ) {
315
+ ) where
316
+ <T as ObjectSubclass >:: Type : IsA < glib:: Object > ,
317
+ {
305
318
let instance = & * ( ptr as * mut T :: Instance ) ;
306
319
let imp = instance. imp ( ) ;
307
320
let clipboard = from_glib_borrow ( clipboard_ptr) ;
@@ -311,7 +324,10 @@ unsafe extern "C" fn content_provider_detach_clipboard<T: ContentProviderImpl>(
311
324
312
325
unsafe extern "C" fn content_provider_formats < T : ContentProviderImpl > (
313
326
ptr : * mut ffi:: GdkContentProvider ,
314
- ) -> * mut ffi:: GdkContentFormats {
327
+ ) -> * mut ffi:: GdkContentFormats
328
+ where
329
+ <T as ObjectSubclass >:: Type : IsA < glib:: Object > ,
330
+ {
315
331
let instance = & * ( ptr as * mut T :: Instance ) ;
316
332
let imp = instance. imp ( ) ;
317
333
@@ -320,7 +336,10 @@ unsafe extern "C" fn content_provider_formats<T: ContentProviderImpl>(
320
336
321
337
unsafe extern "C" fn content_provider_storable_formats < T : ContentProviderImpl > (
322
338
ptr : * mut ffi:: GdkContentProvider ,
323
- ) -> * mut ffi:: GdkContentFormats {
339
+ ) -> * mut ffi:: GdkContentFormats
340
+ where
341
+ <T as ObjectSubclass >:: Type : IsA < glib:: Object > ,
342
+ {
324
343
let instance = & * ( ptr as * mut T :: Instance ) ;
325
344
let imp = instance. imp ( ) ;
326
345
@@ -335,7 +354,9 @@ unsafe extern "C" fn content_provider_write_mime_type_async<T: ContentProviderIm
335
354
cancellable_ptr : * mut gio:: ffi:: GCancellable ,
336
355
callback : gio:: ffi:: GAsyncReadyCallback ,
337
356
user_data : glib:: ffi:: gpointer ,
338
- ) {
357
+ ) where
358
+ <T as ObjectSubclass >:: Type : IsA < glib:: Object > ,
359
+ {
339
360
let instance = & * ( ptr as * mut T :: Instance ) ;
340
361
let imp = instance. imp ( ) ;
341
362
let wrap: ContentProvider = from_glib_none ( ptr) ;
@@ -394,7 +415,10 @@ unsafe extern "C" fn content_provider_get_value<T: ContentProviderImpl>(
394
415
ptr : * mut ffi:: GdkContentProvider ,
395
416
value_ptr : * mut glib:: gobject_ffi:: GValue ,
396
417
error_ptr : * mut * mut glib:: ffi:: GError ,
397
- ) -> glib:: ffi:: gboolean {
418
+ ) -> glib:: ffi:: gboolean
419
+ where
420
+ <T as ObjectSubclass >:: Type : IsA < glib:: Object > ,
421
+ {
398
422
let instance = & * ( ptr as * mut T :: Instance ) ;
399
423
let imp = instance. imp ( ) ;
400
424
let value: Value = from_glib_none ( value_ptr) ;
0 commit comments