How to implement Gtk::Orientable interface?

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

How to implement Gtk::Orientable interface?

Tom Schoonjans
Hi all,


I have a class that derives from Glib::Object that should implement Gtk::Orientable. I thought it would be sufficient to just do:

class MyClass : public MyParentClass, ::Gtk::Orientable {
        public:
        MyClass() : Glib::ObjectBase(“MyClass"), MyParentClass(), Gtk::Orientable() {}
};

Even though this compiles without problems, I do get into trouble at runtime with errors like:

(test1:35777): GLib-GObject-WARNING **: attempting to add an interface (GtkOrientable) to class (gtkmm__CustomObject_MyClass) after class_init

(test1:35777): Gtk-CRITICAL **: gtk_orientable_get_orientation: assertion 'GTK_IS_ORIENTABLE (orientable)' failed

(test1:35777): Gtk-CRITICAL **: gtk_orientable_get_orientation: assertion 'GTK_IS_ORIENTABLE (orientable)' failed


I have tried changing the order of the parent constructors but that doesn’t seem to make a difference.

I would be very grateful for any help!

Thanks in advance and best regards,

Tom
_______________________________________________
gtkmm-list mailing list
[hidden email]
https://mail.gnome.org/mailman/listinfo/gtkmm-list
Reply | Threaded
Open this post in threaded view
|

Re: How to implement Gtk::Orientable interface?

Kjell Ahlstedt-2
On 10/25/2017 10:40 AM, Tom Schoonjans wrote:
Hi all,


I have a class that derives from Glib::Object that should implement Gtk::Orientable. I thought it would be sufficient to just do:

class MyClass : public MyParentClass, ::Gtk::Orientable {
	public:
	MyClass() : Glib::ObjectBase(“MyClass"), MyParentClass(), Gtk::Orientable() {}
};

Even though this compiles without problems, I do get into trouble at runtime with errors like:

(test1:35777): GLib-GObject-WARNING **: attempting to add an interface (GtkOrientable) to class (gtkmm__CustomObject_MyClass) after class_init

(test1:35777): Gtk-CRITICAL **: gtk_orientable_get_orientation: assertion 'GTK_IS_ORIENTABLE (orientable)' failed

(test1:35777): Gtk-CRITICAL **: gtk_orientable_get_orientation: assertion 'GTK_IS_ORIENTABLE (orientable)' failed


I have tried changing the order of the parent constructors but that doesn’t seem to make a difference.

I would be very grateful for any help!

Thanks in advance and best regards,

Tom

Have you tried this version? I think i'll work,
class MyClass : public Gtk::Orientable, public MyParentClass {
	public:
	MyClass() : Glib::ObjectBase(“MyClass"), Gtk::Orientable(), MyParentClass() {}
};

You have made Gtk::Orientable a private base class by omitting "public". I don't know if that's possible. Anyway, it's important that Gtk::Orientable goes before MyParentClass in the first line. That's what determines in which order the constructors are called.

Kjell

_______________________________________________
gtkmm-list mailing list
[hidden email]
https://mail.gnome.org/mailman/listinfo/gtkmm-list
Reply | Threaded
Open this post in threaded view
|

Re: How to implement Gtk::Orientable interface?

Tom Schoonjans
Thanks Kjell, it works now!



On 25 Oct 2017, at 19:18, Kjell Ahlstedt <[hidden email]> wrote:

On 10/25/2017 10:40 AM, Tom Schoonjans wrote:
Hi all,


I have a class that derives from Glib::Object that should implement Gtk::Orientable. I thought it would be sufficient to just do:

class MyClass : public MyParentClass, ::Gtk::Orientable {
	public:
	MyClass() : Glib::ObjectBase(“MyClass"), MyParentClass(), Gtk::Orientable() {}
};

Even though this compiles without problems, I do get into trouble at runtime with errors like:

(test1:35777): GLib-GObject-WARNING **: attempting to add an interface (GtkOrientable) to class (gtkmm__CustomObject_MyClass) after class_init

(test1:35777): Gtk-CRITICAL **: gtk_orientable_get_orientation: assertion 'GTK_IS_ORIENTABLE (orientable)' failed

(test1:35777): Gtk-CRITICAL **: gtk_orientable_get_orientation: assertion 'GTK_IS_ORIENTABLE (orientable)' failed


I have tried changing the order of the parent constructors but that doesn’t seem to make a difference.

I would be very grateful for any help!

Thanks in advance and best regards,

Tom

Have you tried this version? I think i'll work,
class MyClass : public Gtk::Orientable, public MyParentClass {
	public:
	MyClass() : Glib::ObjectBase(“MyClass"), Gtk::Orientable(), MyParentClass() {}
};

You have made Gtk::Orientable a private base class by omitting "public". I don't know if that's possible. Anyway, it's important that Gtk::Orientable goes before MyParentClass in the first line. That's what determines in which order the constructors are called.

Kjell


_______________________________________________
gtkmm-list mailing list
[hidden email]
https://mail.gnome.org/mailman/listinfo/gtkmm-list