summaryrefslogtreecommitdiff
path: root/adw/src/private/actionrow_p.cpp
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2025-04-26 18:05:40 +0200
committerFelix Morgner <felix.morgner@gmail.com>2025-04-26 18:05:40 +0200
commit663ec6def00cb498eb12de363ddb721828ab8175 (patch)
tree38355f679c8fe206f3382392dc788efa9201f91f /adw/src/private/actionrow_p.cpp
parent558bfbab432caaafa324e669d0987457b5e48b80 (diff)
downloadturns-663ec6def00cb498eb12de363ddb721828ab8175.tar.xz
turns-663ec6def00cb498eb12de363ddb721828ab8175.zip
adw: add missing ActionRow functions
Diffstat (limited to 'adw/src/private/actionrow_p.cpp')
-rw-r--r--adw/src/private/actionrow_p.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/adw/src/private/actionrow_p.cpp b/adw/src/private/actionrow_p.cpp
index 4a31bc8..9c4e936 100644
--- a/adw/src/private/actionrow_p.cpp
+++ b/adw/src/private/actionrow_p.cpp
@@ -9,14 +9,28 @@
#include "adwaitamm/actionrow.hpp"
#include <glibmm/class.h>
+#include <glibmm/exceptionhandler.h>
#include <glibmm/objectbase.h>
#include <gtkmm/object.h>
#include <adwaita.h>
+#include <glib-object.h>
namespace Adwaita
{
+ namespace
+ {
+ namespace vfuncs
+ {
+ void (*activate_vfunc_ptr)(AdwActionRow *){};
+ auto static activate_vfunc_c_callback(AdwActionRow * self)
+ {
+ activate_vfunc_ptr(self);
+ }
+ } // namespace vfuncs
+ } // namespace
+
auto ActionRow_Class::init() -> Glib::Class const &
{
if (!gtype_)
@@ -31,10 +45,40 @@ namespace Adwaita
{
auto const klass = static_cast<BaseClassType *>(gclass);
CppClassParent::class_init_function(klass, data);
+
+ klass->activate = &vfuncs::activate_vfunc_c_callback;
+ vfuncs::activate_vfunc_ptr = &ActionRow_Class::activate_vfunc_callback;
}
auto ActionRow_Class::wrap_new(GObject * object) -> Glib::ObjectBase *
{
return Gtk::manage(new ActionRow(ADW_ACTION_ROW(object)));
}
+
+ auto ActionRow_Class::activate_vfunc_callback(AdwActionRow * self) -> void
+ {
+ auto base_object = static_cast<Glib::ObjectBase *>(Glib::ObjectBase::_get_current_wrapper(G_OBJECT(self)));
+ if (base_object && base_object->is_derived_())
+ {
+ auto object = dynamic_cast<ActionRow *>(base_object);
+ if (object)
+ {
+ try
+ {
+ object->activate_vfunc();
+ return;
+ }
+ catch (...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ }
+ }
+
+ auto base_class = static_cast<BaseClassType *>(g_type_class_peek_parent(G_OBJECT_GET_CLASS(self)));
+ if (base_class && base_class->activate)
+ {
+ (base_class->activate)(self);
+ }
+ }
} // namespace Adwaita \ No newline at end of file