summaryrefslogtreecommitdiff
path: root/adw/src/private/dialog_p.cpp
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2025-04-28 08:24:15 +0200
committerFelix Morgner <felix.morgner@gmail.com>2025-04-28 09:39:16 +0200
commit33d8a352eca90a530d560175f5406a5bde5e2861 (patch)
treee34244ae066b8b1d206a78b8862415d41b4ef548 /adw/src/private/dialog_p.cpp
parent663ec6def00cb498eb12de363ddb721828ab8175 (diff)
downloadturns-33d8a352eca90a530d560175f5406a5bde5e2861.tar.xz
turns-33d8a352eca90a530d560175f5406a5bde5e2861.zip
adw: add missing Dialog functions
Diffstat (limited to 'adw/src/private/dialog_p.cpp')
-rw-r--r--adw/src/private/dialog_p.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/adw/src/private/dialog_p.cpp b/adw/src/private/dialog_p.cpp
index e6ac6cd..7af615a 100644
--- a/adw/src/private/dialog_p.cpp
+++ b/adw/src/private/dialog_p.cpp
@@ -9,6 +9,7 @@
#include "adwaitamm/dialog.hpp"
#include <glibmm/class.h>
+#include <glibmm/exceptionhandler.h>
#include <glibmm/objectbase.h>
#include <gtkmm/object.h>
@@ -16,9 +17,11 @@
#include <gtkmm/shortcutmanager.h>
#include <adwaita.h>
+#include <glib-object.h>
namespace Adwaita
{
+
auto Dialog_Class::init() -> Glib::Class const &
{
if (!gtype_)
@@ -34,10 +37,65 @@ namespace Adwaita
{
auto const klass = static_cast<BaseClassType *>(gclass);
CppClassParent::class_init_function(klass, data);
+
+ klass->close_attempt = &close_attempt;
+ klass->closed = &closed;
}
auto Dialog_Class::wrap_new(GObject * object) -> Glib::ObjectBase *
{
return Gtk::manage(new Dialog(ADW_DIALOG(object)));
}
+
+ auto Dialog_Class::close_attempt(BaseObjectType * 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<CppObjectType *>(base_object);
+ if (object)
+ {
+ try
+ {
+ return object->on_close_attempt();
+ }
+ 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->close_attempt)
+ {
+ return (base_class->close_attempt)(self);
+ }
+ }
+
+ auto Dialog_Class::closed(BaseObjectType * 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<CppObjectType *>(base_object);
+ if (object)
+ {
+ try
+ {
+ return object->on_closed();
+ }
+ 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->closed)
+ {
+ return (base_class->closed)(self);
+ }
+ }
} // namespace Adwaita \ No newline at end of file