Casting using `as` syntax is wrong(buggy)
Opened this issue · 1 comments
I just found a bug in my app caused by casting GLib/GTK pointer types using as
. GTK has macros/functions like G_OBJECT
, GTK_WIDGET
, GTK_BOX
etc. for casting and we need to use those. (also see the warning messages printed to console, those indicates errors in the wrappers)
I think we need to change traits to something like this:
(not tested)
pub trait FFIWidget<Ctype> {
fn get_widget(&self) -> *mut Ctype;
fn wrap(widget: *mut Ctype) -> Self;
}
We also need to remove as
syntax used in macros like impl_TraitWidget!
and use proper casting instead. Unfortunately this means adding whole lot of wrappers(like the ones in gtk_glue.c
) from every widget type to GObject
etc. I'm wondering if there's a better way to do this without using as
at all.
I don't think we should change the trait FFIWidget
. But I agree with you, we should not use as
style cast, but call ::gtk::ffi::cast_GtkObject()
.