mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-26 21:51:08 +00:00
shortcutcontroller: Implement GtkBuildable
Use it to allow adding shortcuts to the controller via the usual <child> method.
This commit is contained in:
parent
458fcba457
commit
29ced09dc4
@ -215,6 +215,7 @@
|
||||
|
||||
#include "gtkbuilderprivate.h"
|
||||
|
||||
#include "gdkpixbufutilsprivate.h"
|
||||
#include "gtkbuildable.h"
|
||||
#include "gtkbuilderscopeprivate.h"
|
||||
#include "gtkdebug.h"
|
||||
|
@ -34,6 +34,7 @@
|
||||
|
||||
#include "gtkshortcutcontrollerprivate.h"
|
||||
|
||||
#include "gtkbuildable.h"
|
||||
#include "gtkconcatmodelprivate.h"
|
||||
#include "gtkeventcontrollerprivate.h"
|
||||
#include "gtkintl.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)
|
||||
|
Loading…
Reference in New Issue
Block a user