st: Use macros to generate type boilerplate
Also mark certain types as final when they are not meant to be used externally Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3506>
This commit is contained in:
parent
31119228a8
commit
ad0e2c940b
@ -89,7 +89,10 @@ static guint button_signals[LAST_SIGNAL] = { 0, };
|
||||
|
||||
G_DEFINE_TYPE_WITH_PRIVATE (StButton, st_button, ST_TYPE_BIN);
|
||||
|
||||
static GType st_button_accessible_get_type (void) G_GNUC_CONST;
|
||||
G_DECLARE_FINAL_TYPE (StButtonAccessible,
|
||||
st_button_accessible,
|
||||
ST, BUTTON_ACCESSIBLE,
|
||||
StWidgetAccessible)
|
||||
|
||||
static void
|
||||
st_button_update_label_style (StButton *button)
|
||||
@ -909,44 +912,17 @@ st_button_fake_release (StButton *button)
|
||||
|
||||
#define ST_TYPE_BUTTON_ACCESSIBLE st_button_accessible_get_type ()
|
||||
|
||||
#define ST_BUTTON_ACCESSIBLE(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), \
|
||||
ST_TYPE_BUTTON_ACCESSIBLE, StButtonAccessible))
|
||||
|
||||
#define ST_IS_BUTTON_ACCESSIBLE(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
|
||||
ST_TYPE_BUTTON_ACCESSIBLE))
|
||||
|
||||
#define ST_BUTTON_ACCESSIBLE_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST ((klass), \
|
||||
ST_TYPE_BUTTON_ACCESSIBLE, StButtonAccessibleClass))
|
||||
|
||||
#define ST_IS_BUTTON_ACCESSIBLE_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_TYPE ((klass), \
|
||||
ST_TYPE_BUTTON_ACCESSIBLE))
|
||||
|
||||
#define ST_BUTTON_ACCESSIBLE_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), \
|
||||
ST_TYPE_BUTTON_ACCESSIBLE, StButtonAccessibleClass))
|
||||
|
||||
typedef struct _StButtonAccessible StButtonAccessible;
|
||||
typedef struct _StButtonAccessibleClass StButtonAccessibleClass;
|
||||
|
||||
struct _StButtonAccessible
|
||||
typedef struct _StButtonAccessible
|
||||
{
|
||||
StWidgetAccessible parent;
|
||||
};
|
||||
} StButtonAccessible;
|
||||
|
||||
struct _StButtonAccessibleClass
|
||||
{
|
||||
StWidgetAccessibleClass parent_class;
|
||||
};
|
||||
|
||||
/* AtkObject */
|
||||
static void st_button_accessible_initialize (AtkObject *obj,
|
||||
gpointer data);
|
||||
|
||||
G_DEFINE_TYPE (StButtonAccessible, st_button_accessible, ST_TYPE_WIDGET_ACCESSIBLE)
|
||||
G_DEFINE_FINAL_TYPE (StButtonAccessible, st_button_accessible, ST_TYPE_WIDGET_ACCESSIBLE)
|
||||
|
||||
static const gchar *
|
||||
st_button_accessible_get_name (AtkObject *obj)
|
||||
|
@ -114,7 +114,10 @@ static guint entry_signals[LAST_SIGNAL] = { 0, };
|
||||
|
||||
G_DEFINE_TYPE_WITH_PRIVATE (StEntry, st_entry, ST_TYPE_WIDGET);
|
||||
|
||||
static GType st_entry_accessible_get_type (void) G_GNUC_CONST;
|
||||
G_DECLARE_FINAL_TYPE (StEntryAccessible,
|
||||
st_entry_accessible,
|
||||
ST, ENTRY_ACCESSIBLE,
|
||||
StWidgetAccessible)
|
||||
|
||||
static void
|
||||
st_entry_set_property (GObject *gobject,
|
||||
@ -1508,26 +1511,14 @@ st_entry_get_hint_actor (StEntry *entry)
|
||||
/******************************************************************************/
|
||||
|
||||
#define ST_TYPE_ENTRY_ACCESSIBLE (st_entry_accessible_get_type ())
|
||||
#define ST_ENTRY_ACCESSIBLE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), ST_TYPE_ENTRY_ACCESSIBLE, StEntryAccessible))
|
||||
#define ST_IS_ENTRY_ACCESSIBLE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), ST_TYPE_ENTRY_ACCESSIBLE))
|
||||
#define ST_ENTRY_ACCESSIBLE_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), ST_TYPE_ENTRY_ACCESSIBLE, StEntryAccessibleClass))
|
||||
#define ST_IS_ENTRY_ACCESSIBLE_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), ST_TYPE_ENTRY_ACCESSIBLE))
|
||||
#define ST_ENTRY_ACCESSIBLE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), ST_TYPE_ENTRY_ACCESSIBLE, StEntryAccessibleClass))
|
||||
|
||||
typedef struct _StEntryAccessible StEntryAccessible;
|
||||
typedef struct _StEntryAccessibleClass StEntryAccessibleClass;
|
||||
|
||||
struct _StEntryAccessible
|
||||
typedef struct _StEntryAccessible
|
||||
{
|
||||
StWidgetAccessible parent;
|
||||
};
|
||||
} StEntryAccessible;
|
||||
|
||||
struct _StEntryAccessibleClass
|
||||
{
|
||||
StWidgetAccessibleClass parent_class;
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE (StEntryAccessible, st_entry_accessible, ST_TYPE_WIDGET_ACCESSIBLE)
|
||||
G_DEFINE_FINAL_TYPE (StEntryAccessible, st_entry_accessible, ST_TYPE_WIDGET_ACCESSIBLE)
|
||||
|
||||
static void
|
||||
st_entry_accessible_init (StEntryAccessible *self)
|
||||
|
@ -36,11 +36,16 @@
|
||||
|
||||
static void atk_value_iface_init (AtkValueIface *iface);
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE(StGenericAccessible,
|
||||
st_generic_accessible,
|
||||
ST_TYPE_WIDGET_ACCESSIBLE,
|
||||
G_IMPLEMENT_INTERFACE (ATK_TYPE_VALUE,
|
||||
atk_value_iface_init));
|
||||
typedef struct _StGenericAccessible
|
||||
{
|
||||
StWidgetAccessible parent_class;
|
||||
} StGenericAccessible;
|
||||
|
||||
G_DEFINE_FINAL_TYPE_WITH_CODE (StGenericAccessible,
|
||||
st_generic_accessible,
|
||||
ST_TYPE_WIDGET_ACCESSIBLE,
|
||||
G_IMPLEMENT_INTERFACE (ATK_TYPE_VALUE,
|
||||
atk_value_iface_init));
|
||||
/* Signals */
|
||||
enum
|
||||
{
|
||||
|
@ -29,30 +29,11 @@
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define ST_TYPE_GENERIC_ACCESSIBLE (st_generic_accessible_get_type ())
|
||||
#define ST_GENERIC_ACCESSIBLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ST_TYPE_GENERIC_ACCESSIBLE, StGenericAccessible))
|
||||
#define ST_GENERIC_ACCESSIBLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ST_TYPE_GENERIC_ACCESSIBLE, StGenericAccessibleClass))
|
||||
#define ST_IS_GENERIC_ACCESSIBLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ST_TYPE_GENERIC_ACCESSIBLE))
|
||||
#define ST_IS_GENERIC_ACCESSIBLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ST_TYPE_GENERIC_ACCESSIBLE))
|
||||
#define ST_GENERIC_ACCESSIBLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ST_TYPE_GENERIC_ACCESSIBLE, StGenericAccessibleClass))
|
||||
|
||||
typedef struct _StGenericAccessible StGenericAccessible;
|
||||
typedef struct _StGenericAccessibleClass StGenericAccessibleClass;
|
||||
|
||||
typedef struct _StGenericAccessiblePrivate StGenericAccessiblePrivate;
|
||||
|
||||
struct _StGenericAccessible
|
||||
{
|
||||
StWidgetAccessible parent;
|
||||
|
||||
StGenericAccessiblePrivate *priv;
|
||||
};
|
||||
|
||||
struct _StGenericAccessibleClass
|
||||
{
|
||||
StWidgetAccessibleClass parent_class;
|
||||
};
|
||||
|
||||
GType st_generic_accessible_get_type (void) G_GNUC_CONST;
|
||||
G_DECLARE_FINAL_TYPE (StGenericAccessible,
|
||||
st_generic_accessible,
|
||||
ST, GENERIC_ACCESSIBLE,
|
||||
StWidgetAccessible)
|
||||
|
||||
AtkObject* st_generic_accessible_new_for_actor (ClutterActor *actor);
|
||||
|
||||
|
@ -69,7 +69,10 @@ struct _StLabelPrivate
|
||||
|
||||
G_DEFINE_TYPE_WITH_PRIVATE (StLabel, st_label, ST_TYPE_WIDGET);
|
||||
|
||||
static GType st_label_accessible_get_type (void) G_GNUC_CONST;
|
||||
G_DECLARE_FINAL_TYPE (StLabelAccessible,
|
||||
st_label_accessible,
|
||||
ST, LABEL_ACCESSIBLE,
|
||||
StWidgetAccessible)
|
||||
|
||||
static void
|
||||
st_label_set_property (GObject *gobject,
|
||||
@ -439,45 +442,16 @@ st_label_get_clutter_text (StLabel *label)
|
||||
|
||||
#define ST_TYPE_LABEL_ACCESSIBLE st_label_accessible_get_type ()
|
||||
|
||||
#define ST_LABEL_ACCESSIBLE(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), \
|
||||
ST_TYPE_LABEL_ACCESSIBLE, StLabelAccessible))
|
||||
|
||||
#define ST_IS_LABEL_ACCESSIBLE(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
|
||||
ST_TYPE_LABEL_ACCESSIBLE))
|
||||
|
||||
#define ST_LABEL_ACCESSIBLE_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST ((klass), \
|
||||
ST_TYPE_LABEL_ACCESSIBLE, StLabelAccessibleClass))
|
||||
|
||||
#define ST_IS_LABEL_ACCESSIBLE_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_TYPE ((klass), \
|
||||
ST_TYPE_LABEL_ACCESSIBLE))
|
||||
|
||||
#define ST_LABEL_ACCESSIBLE_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), \
|
||||
ST_TYPE_LABEL_ACCESSIBLE, StLabelAccessibleClass))
|
||||
|
||||
typedef struct _StLabelAccessible StLabelAccessible;
|
||||
typedef struct _StLabelAccessibleClass StLabelAccessibleClass;
|
||||
|
||||
struct _StLabelAccessible
|
||||
{
|
||||
StWidgetAccessible parent;
|
||||
};
|
||||
|
||||
struct _StLabelAccessibleClass
|
||||
{
|
||||
StWidgetAccessibleClass parent_class;
|
||||
};
|
||||
|
||||
/* AtkObject */
|
||||
static void st_label_accessible_initialize (AtkObject *obj,
|
||||
gpointer data);
|
||||
static const gchar * st_label_accessible_get_name (AtkObject *obj);
|
||||
|
||||
G_DEFINE_TYPE (StLabelAccessible, st_label_accessible, ST_TYPE_WIDGET_ACCESSIBLE)
|
||||
typedef struct _StLabelAccessible {
|
||||
StWidgetAccessible parent_class;
|
||||
} StLabelAccessible;
|
||||
|
||||
G_DEFINE_FINAL_TYPE (StLabelAccessible, st_label_accessible, ST_TYPE_WIDGET_ACCESSIBLE)
|
||||
|
||||
static void
|
||||
st_label_accessible_class_init (StLabelAccessibleClass *klass)
|
||||
|
@ -31,43 +31,18 @@ G_BEGIN_DECLS
|
||||
|
||||
#define ST_TYPE_WIDGET_ACCESSIBLE st_widget_accessible_get_type ()
|
||||
|
||||
#define ST_WIDGET_ACCESSIBLE(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), \
|
||||
ST_TYPE_WIDGET_ACCESSIBLE, StWidgetAccessible))
|
||||
G_DECLARE_DERIVABLE_TYPE (StWidgetAccessible,
|
||||
st_widget_accessible,
|
||||
ST, WIDGET_ACCESSIBLE,
|
||||
ClutterActorAccessible)
|
||||
|
||||
#define ST_IS_WIDGET_ACCESSIBLE(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
|
||||
ST_TYPE_WIDGET_ACCESSIBLE))
|
||||
|
||||
#define ST_WIDGET_ACCESSIBLE_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST ((klass), \
|
||||
ST_TYPE_WIDGET_ACCESSIBLE, StWidgetAccessibleClass))
|
||||
|
||||
#define ST_IS_WIDGET_ACCESSIBLE_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_TYPE ((klass), \
|
||||
ST_TYPE_WIDGET_ACCESSIBLE))
|
||||
|
||||
#define ST_WIDGET_ACCESSIBLE_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), \
|
||||
ST_TYPE_WIDGET_ACCESSIBLE, StWidgetAccessibleClass))
|
||||
|
||||
typedef struct _StWidgetAccessible StWidgetAccessible;
|
||||
typedef struct _StWidgetAccessibleClass StWidgetAccessibleClass;
|
||||
typedef struct _StWidgetAccessiblePrivate StWidgetAccessiblePrivate;
|
||||
|
||||
struct _StWidgetAccessible
|
||||
{
|
||||
ClutterActorAccessible parent;
|
||||
|
||||
/*< private >*/
|
||||
StWidgetAccessiblePrivate *priv;
|
||||
};
|
||||
|
||||
struct _StWidgetAccessibleClass
|
||||
{
|
||||
ClutterActorAccessibleClass parent_class;
|
||||
};
|
||||
|
||||
GType st_widget_accessible_get_type (void) G_GNUC_CONST;
|
||||
|
||||
G_END_DECLS
|
||||
|
@ -2453,7 +2453,7 @@ static AtkStateSet *st_widget_accessible_ref_state_set (AtkObject *obj);
|
||||
static void st_widget_accessible_initialize (AtkObject *obj,
|
||||
gpointer data);
|
||||
|
||||
struct _StWidgetAccessiblePrivate
|
||||
typedef struct _StWidgetAccessiblePrivate
|
||||
{
|
||||
/* Cached values (used to avoid extra notifications) */
|
||||
gboolean selected;
|
||||
@ -2463,7 +2463,7 @@ struct _StWidgetAccessiblePrivate
|
||||
* relationships between this object and the label
|
||||
*/
|
||||
AtkObject *current_label;
|
||||
};
|
||||
} StWidgetAccessiblePrivate;
|
||||
|
||||
G_DEFINE_TYPE_WITH_PRIVATE (StWidgetAccessible, st_widget_accessible, CLUTTER_TYPE_ACTOR_ACCESSIBLE)
|
||||
|
||||
@ -2482,21 +2482,16 @@ st_widget_accessible_class_init (StWidgetAccessibleClass *klass)
|
||||
static void
|
||||
st_widget_accessible_init (StWidgetAccessible *self)
|
||||
{
|
||||
StWidgetAccessiblePrivate *priv = st_widget_accessible_get_instance_private (self);
|
||||
|
||||
self->priv = priv;
|
||||
}
|
||||
|
||||
static void
|
||||
st_widget_accessible_dispose (GObject *gobject)
|
||||
{
|
||||
StWidgetAccessible *self = ST_WIDGET_ACCESSIBLE (gobject);
|
||||
StWidgetAccessiblePrivate *priv =
|
||||
st_widget_accessible_get_instance_private (self);
|
||||
|
||||
if (self->priv->current_label)
|
||||
{
|
||||
g_object_unref (self->priv->current_label);
|
||||
self->priv->current_label = NULL;
|
||||
}
|
||||
g_clear_object (&priv->current_label);
|
||||
|
||||
G_OBJECT_CLASS (st_widget_accessible_parent_class)->dispose (gobject);
|
||||
}
|
||||
@ -2524,6 +2519,7 @@ st_widget_accessible_ref_state_set (AtkObject *obj)
|
||||
StWidget *widget = NULL;
|
||||
StWidgetPrivate *widget_priv;
|
||||
StWidgetAccessible *self = NULL;
|
||||
StWidgetAccessiblePrivate *priv;
|
||||
|
||||
result = ATK_OBJECT_CLASS (st_widget_accessible_parent_class)->ref_state_set (obj);
|
||||
|
||||
@ -2534,15 +2530,16 @@ st_widget_accessible_ref_state_set (AtkObject *obj)
|
||||
|
||||
widget = ST_WIDGET (actor);
|
||||
self = ST_WIDGET_ACCESSIBLE (obj);
|
||||
priv = st_widget_accessible_get_instance_private (self);
|
||||
widget_priv = st_widget_get_instance_private (widget);
|
||||
|
||||
/* priv->selected should be properly updated on the
|
||||
* ATK_STATE_SELECTED notification callbacks
|
||||
*/
|
||||
if (self->priv->selected)
|
||||
if (priv->selected)
|
||||
atk_state_set_add_state (result, ATK_STATE_SELECTED);
|
||||
|
||||
if (self->priv->checked)
|
||||
if (priv->checked)
|
||||
atk_state_set_add_state (result, ATK_STATE_CHECKED);
|
||||
|
||||
/* On clutter there isn't any tip to know if a actor is focusable or
|
||||
@ -2596,7 +2593,7 @@ check_pseudo_class (StWidget *widget)
|
||||
if (!accessible)
|
||||
return;
|
||||
|
||||
priv = ST_WIDGET_ACCESSIBLE (accessible)->priv;
|
||||
priv = st_widget_accessible_get_instance_private (ST_WIDGET_ACCESSIBLE (accessible));
|
||||
found = st_widget_has_style_pseudo_class (widget,
|
||||
"selected");
|
||||
|
||||
@ -2631,7 +2628,7 @@ check_labels (StWidget *widget)
|
||||
if (!accessible)
|
||||
return;
|
||||
|
||||
priv = ST_WIDGET_ACCESSIBLE (accessible)->priv;
|
||||
priv = st_widget_accessible_get_instance_private (ST_WIDGET_ACCESSIBLE (accessible));
|
||||
|
||||
/* We only call this method at startup, and when the label changes,
|
||||
* so it is fine to remove the previous relationships if we have the
|
||||
|
Loading…
x
Reference in New Issue
Block a user