aboutsummaryrefslogtreecommitdiff
path: root/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
commit17f94ac916bccf340327d78d334c308aaabf371b (patch)
tree88b873ce1520ccb5762ec1dd3108919ab23482ef /src/private/dialog_p.cpp
parentafe4ebed3fc618ee42f1e2705c8ff6c7b38f4913 (diff)
downloadlibadwaitamm-17f94ac916bccf340327d78d334c308aaabf371b.tar.xz
libadwaitamm-17f94ac916bccf340327d78d334c308aaabf371b.zip
adw: add missing Dialog functions
Diffstat (limited to 'src/private/dialog_p.cpp')
-rw-r--r--src/private/dialog_p.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/private/dialog_p.cpp b/src/private/dialog_p.cpp
index e6ac6cd..7af615a 100644
--- a/src/private/dialog_p.cpp
+++ b/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