From: Benjamin Otte Date: Fri, 24 Aug 2018 05:00:12 +0000 (+0200) Subject: shortcutcontroller: Implement GtkBuildable X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2~19^2~32^2~49 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=78e3e42042abc81a2710eb461070a040553e125c;p=gtk4.git shortcutcontroller: Implement GtkBuildable Use it to allow adding shortcuts to the controller via the usual method. --- diff --git a/gtk/gtkbuilder.c b/gtk/gtkbuilder.c index 7045e8f9df..4199b20269 100644 --- a/gtk/gtkbuilder.c +++ b/gtk/gtkbuilder.c @@ -215,6 +215,7 @@ #include "gtkbuilderprivate.h" +#include "gdkpixbufutilsprivate.h" #include "gtkbuildable.h" #include "gtkbuilderscopeprivate.h" #include "gtkdebug.h" diff --git a/gtk/gtkshortcutcontroller.c b/gtk/gtkshortcutcontroller.c index cd5a17bb56..f85662b332 100644 --- a/gtk/gtkshortcutcontroller.c +++ b/gtk/gtkshortcutcontroller.c @@ -35,6 +35,7 @@ #include "gtkshortcutcontrollerprivate.h" #include "gtkflattenlistmodel.h" +#include "gtkbuildable.h" #include "gtkeventcontrollerprivate.h" #include "gtkintl.h" #include "gtkshortcut.h" @@ -103,9 +104,37 @@ gtk_shortcut_controller_list_model_init (GListModelInterface *iface) iface->get_item = gtk_shortcut_controller_list_model_get_item; } +static void +gtk_shortcut_controller_buildable_add_child (GtkBuildable *buildable, + GtkBuilder *builder, + GObject *child, + const gchar *type) +{ + if (type != NULL) + { + GTK_BUILDER_WARN_INVALID_CHILD_TYPE (buildable, type); + } + if (GTK_IS_SHORTCUT (child)) + { + gtk_shortcut_controller_add_shortcut (GTK_SHORTCUT_CONTROLLER (buildable), GTK_SHORTCUT (child)); + } + else + { + g_warning ("Cannot add an object of type %s to a controller of type %s", + g_type_name (G_OBJECT_TYPE (child)), g_type_name (G_OBJECT_TYPE (buildable))); + } +} + +static void +gtk_shortcut_controller_buildable_init (GtkBuildableIface *iface) +{ + iface->add_child = gtk_shortcut_controller_buildable_add_child; +} + G_DEFINE_TYPE_WITH_CODE (GtkShortcutController, gtk_shortcut_controller, GTK_TYPE_EVENT_CONTROLLER, - G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, gtk_shortcut_controller_list_model_init)) + G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, gtk_shortcut_controller_list_model_init) + G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, gtk_shortcut_controller_buildable_init)) static gboolean gtk_shortcut_controller_is_rooted (GtkShortcutController *self)