From: Benjamin Otte Date: Sat, 11 Jun 2022 02:50:49 +0000 (+0200) Subject: shortcutcontroller: Add ::item-type and ::n-items X-Git-Tag: archive/raspbian/4.8.3+ds-2+rpi1~3^2~20^2~4^2~131^2~13 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=d7dae84af248bc198601cad89441724c5345504d;p=gtk4.git shortcutcontroller: Add ::item-type and ::n-items --- diff --git a/gtk/gtkshortcutcontroller.c b/gtk/gtkshortcutcontroller.c index 5e899aecea..0a62e25e36 100644 --- a/gtk/gtkshortcutcontroller.c +++ b/gtk/gtkshortcutcontroller.c @@ -103,8 +103,10 @@ struct _GtkShortcutControllerClass enum { PROP_0, + PROP_ITEM_TYPE, PROP_MNEMONICS_MODIFIERS, PROP_MODEL, + PROP_N_ITEMS, PROP_SCOPE, N_PROPS @@ -186,6 +188,18 @@ gtk_shortcut_controller_is_rooted (GtkShortcutController *self) return gtk_widget_get_root (widget) != NULL; } +static void +gtk_shortcut_controller_items_changed_cb (GListModel *model, + guint position, + guint removed, + guint added, + GtkShortcutController *self) +{ + g_list_model_items_changed (G_LIST_MODEL (self), position, removed, added); + if (removed != added) + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_N_ITEMS]); +} + static void gtk_shortcut_controller_set_property (GObject *object, guint prop_id, @@ -214,10 +228,10 @@ gtk_shortcut_controller_set_property (GObject *object, self->custom_shortcuts = FALSE; } - self->shortcuts_changed_id = g_signal_connect_swapped (self->shortcuts, - "items-changed", - G_CALLBACK (g_list_model_items_changed), - self); + self->shortcuts_changed_id = g_signal_connect (self->shortcuts, + "items-changed", + G_CALLBACK (gtk_shortcut_controller_items_changed_cb), + self); } break; @@ -240,10 +254,18 @@ gtk_shortcut_controller_get_property (GObject *object, switch (prop_id) { + case PROP_ITEM_TYPE: + g_value_set_gtype (value, G_TYPE_OBJECT); + break; + case PROP_MNEMONICS_MODIFIERS: g_value_set_flags (value, self->mnemonics_modifiers); break; + case PROP_N_ITEMS: + g_value_set_uint (value, g_list_model_get_n_items (self->shortcuts)); + break; + case PROP_SCOPE: g_value_set_enum (value, self->scope); break; @@ -562,6 +584,18 @@ gtk_shortcut_controller_class_init (GtkShortcutControllerClass *klass) controller_class->set_widget = gtk_shortcut_controller_set_widget; controller_class->unset_widget = gtk_shortcut_controller_unset_widget; + /** + * GtkShortCutController:item-type: + * + * The type of items. See [method@Gio.ListModel.get_item_type]. + * + * Since: 4.8 + **/ + properties[PROP_ITEM_TYPE] = + g_param_spec_gtype ("item-type", NULL, NULL, + G_TYPE_OBJECT, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + /** * GtkShortcutController:mnemonic-modifiers: (attributes org.gtk.Property.get=gtk_shortcut_controller_get_mnemonics_modifiers org.gtk.Property.set=gtk_shortcut_controller_set_mnemonics_modifiers) * @@ -583,6 +617,18 @@ gtk_shortcut_controller_class_init (GtkShortcutControllerClass *klass) G_TYPE_LIST_MODEL, G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS); + /** + * GtkShortcutController:n-items: + * + * The number of items. See [method@Gio.ListModel.get_n_items]. + * + * Since: 4.8 + **/ + properties[PROP_N_ITEMS] = + g_param_spec_uint ("n-items", NULL, NULL, + 0, G_MAXUINT, 0, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + /** * GtkShortcutController:scope: (attributes org.gtk.Property.get=gtk_shortcut_controller_get_scope org.gtk.Property.set=gtk_shortcut_controller_set_scope) *