diff --git a/clutter/clutter/clutter-autocleanups.h b/clutter/clutter/clutter-autocleanups.h index b8e1d9fa0..73ba9e1e3 100644 --- a/clutter/clutter/clutter-autocleanups.h +++ b/clutter/clutter/clutter-autocleanups.h @@ -30,6 +30,5 @@ #ifndef __GI_SCANNER__ G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterInputDevice, g_object_unref) -G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterText, g_object_unref) #endif /* __GI_SCANNER__ */ diff --git a/clutter/clutter/clutter-text.c b/clutter/clutter/clutter-text.c index b6b00a478..77484a681 100644 --- a/clutter/clutter/clutter-text.c +++ b/clutter/clutter/clutter-text.c @@ -100,7 +100,7 @@ struct _ClutterTextInputFocus ClutterText *text; }; -struct _ClutterTextPrivate +typedef struct _ClutterTextPrivate { PangoFontDescription *font_desc; @@ -214,7 +214,7 @@ struct _ClutterTextPrivate guint show_password_hint : 1; guint password_hint_visible : 1; guint resolved_direction : 4; -}; +} ClutterTextPrivate; enum { @@ -453,11 +453,11 @@ clutter_text_queue_redraw (ClutterActor *self) static gboolean clutter_text_should_draw_cursor (ClutterText *self) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); return (priv->editable || priv->selectable) && - priv->cursor_visible && - priv->has_focus; + priv->cursor_visible && + priv->has_focus; } #define offset_real(t,p) ((p) == -1 ? g_utf8_strlen ((t), -1) : (p)) @@ -483,7 +483,7 @@ offset_to_bytes (const gchar *text, static inline void clutter_text_clear_selection (ClutterText *self) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); if (priv->selection_bound != priv->position) { @@ -496,10 +496,11 @@ clutter_text_clear_selection (ClutterText *self) static gboolean clutter_text_is_empty (ClutterText *self) { - if (self->priv->buffer == NULL) + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); + if (priv->buffer == NULL) return TRUE; - if (clutter_text_buffer_get_length (self->priv->buffer) == 0) + if (clutter_text_buffer_get_length (priv->buffer) == 0) return TRUE; return FALSE; @@ -508,7 +509,7 @@ clutter_text_is_empty (ClutterText *self) static gchar * clutter_text_get_display_text (ClutterText *self) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); ClutterTextBuffer *buffer; const gchar *text; @@ -573,7 +574,7 @@ static void ensure_effective_pango_scale_attribute (ClutterText *self) { float resource_scale; - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); resource_scale = clutter_actor_get_resource_scale (CLUTTER_ACTOR (self)); @@ -606,7 +607,7 @@ static void set_effective_pango_attributes (ClutterText *self, PangoAttrList *attributes) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); if (attributes != NULL) { @@ -627,7 +628,7 @@ set_effective_pango_attributes (ClutterText *self, static inline void clutter_text_ensure_effective_attributes (ClutterText *self) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); /* If we already have the effective attributes then we don't need to do anything */ @@ -691,7 +692,7 @@ clutter_text_create_layout_no_cache (ClutterText *text, gint height, PangoEllipsizeMode ellipsize) { - ClutterTextPrivate *priv = text->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (text); PangoLayout *layout; gchar *contents; gsize contents_len; @@ -794,7 +795,7 @@ clutter_text_create_layout_no_cache (ClutterText *text, static void clutter_text_dirty_cache (ClutterText *text) { - ClutterTextPrivate *priv = text->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (text); int i; /* Delete the cached layouts so they will be recreated the next time @@ -802,8 +803,8 @@ clutter_text_dirty_cache (ClutterText *text) for (i = 0; i < N_CACHED_LAYOUTS; i++) if (priv->cached_layouts[i].layout) { - g_object_unref (priv->cached_layouts[i].layout); - priv->cached_layouts[i].layout = NULL; + g_object_unref (priv->cached_layouts[i].layout); + priv->cached_layouts[i].layout = NULL; } clutter_actor_invalidate_paint_volume (CLUTTER_ACTOR (text)); @@ -827,7 +828,7 @@ clutter_text_set_font_description_internal (ClutterText *self, PangoFontDescription *desc, gboolean is_default_font) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); priv->is_default_font = is_default_font; @@ -855,7 +856,7 @@ clutter_text_set_font_description_internal (ClutterText *self, static void clutter_text_settings_changed_cb (ClutterText *text) { - ClutterTextPrivate *priv = text->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (text); guint password_hint_time = 0; ClutterSettings *settings; @@ -913,7 +914,7 @@ clutter_text_create_layout (ClutterText *text, gfloat allocation_width, gfloat allocation_height) { - ClutterTextPrivate *priv = text->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (text); LayoutCache *oldest_cache = priv->cached_layouts; gboolean found_free_cache = FALSE; gint width = -1; @@ -1127,16 +1128,18 @@ clutter_text_coords_to_position (ClutterText *self, gint px, py; gint trailing; gfloat resource_scale; + ClutterTextPrivate *priv; g_return_val_if_fail (CLUTTER_IS_TEXT (self), 0); + priv = clutter_text_get_instance_private (self); resource_scale = clutter_actor_get_resource_scale (CLUTTER_ACTOR (self)); /* Take any offset due to scrolling into account, and normalize * the coordinates to PangoScale units */ - px = logical_pixels_to_pango (x - self->priv->text_logical_x, resource_scale); - py = logical_pixels_to_pango (y - self->priv->text_logical_y, resource_scale); + px = logical_pixels_to_pango (x - priv->text_logical_x, resource_scale); + py = logical_pixels_to_pango (y - priv->text_logical_y, resource_scale); pango_layout_xy_to_index (clutter_text_get_layout (self), px, py, @@ -1161,7 +1164,7 @@ clutter_text_position_to_coords_internal (ClutterText *self, g_return_val_if_fail (CLUTTER_IS_TEXT (self), FALSE); - priv = self->priv; + priv = clutter_text_get_instance_private (self); n_chars = clutter_text_buffer_get_length (get_buffer (self)); if (priv->preedit_set) @@ -1276,7 +1279,7 @@ clutter_text_position_to_coords (ClutterText *self, static inline void update_cursor_location (ClutterText *self) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); graphene_rect_t rect; float x, y; @@ -1294,7 +1297,7 @@ static inline void clutter_text_ensure_cursor_position (ClutterText *self, float scale) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); gfloat x, y, cursor_height; graphene_rect_t cursor_rect = GRAPHENE_RECT_INIT_ZERO; gint position; @@ -1357,7 +1360,7 @@ clutter_text_delete_selection (ClutterText *self) g_return_val_if_fail (CLUTTER_IS_TEXT (self), FALSE); - priv = self->priv; + priv = clutter_text_get_instance_private (self); n_chars = clutter_text_buffer_get_length (get_buffer (self)); if (n_chars == 0) @@ -1416,7 +1419,7 @@ static inline void clutter_text_set_markup_internal (ClutterText *self, const gchar *str) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); GError *error; gchar *text = NULL; PangoAttrList *attrs = NULL; @@ -1475,6 +1478,7 @@ clutter_text_set_property (GObject *gobject, GParamSpec *pspec) { ClutterText *self = CLUTTER_TEXT (gobject); + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); switch (prop_id) { @@ -1485,7 +1489,7 @@ clutter_text_set_property (GObject *gobject, case PROP_TEXT: { const char *str = g_value_get_string (value); - if (self->priv->use_markup) + if (priv->use_markup) clutter_text_set_markup_internal (self, str ? str : ""); else clutter_text_buffer_set_text (get_buffer (self), str ? str : "", -1); @@ -1604,7 +1608,7 @@ clutter_text_get_property (GObject *gobject, GParamSpec *pspec) { ClutterText *self = CLUTTER_TEXT (gobject); - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); switch (prop_id) { @@ -1737,7 +1741,7 @@ static void clutter_text_dispose (GObject *gobject) { ClutterText *self = CLUTTER_TEXT (gobject); - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); /* get rid of the entire cache */ clutter_text_dirty_cache (self); @@ -1757,7 +1761,7 @@ static void clutter_text_finalize (GObject *gobject) { ClutterText *self = CLUTTER_TEXT (gobject); - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); if (priv->font_desc) pango_font_description_free (priv->font_desc); @@ -1788,7 +1792,7 @@ clutter_text_foreach_selection_rectangle (ClutterText *self, ClutterTextSelectionFunc func, gpointer user_data) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); PangoLayout *layout = clutter_text_get_layout (self); gchar *utf8 = clutter_text_get_display_text (self); gint lines; @@ -1906,7 +1910,7 @@ paint_selection_rectangle (ClutterText *self, gpointer user_data) { CoglFramebuffer *fb = user_data; - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); ClutterActor *actor = CLUTTER_ACTOR (self); guint8 paint_opacity = clutter_actor_get_paint_opacity (actor); CoglPipeline *color_pipeline = create_color_pipeline (); @@ -1959,7 +1963,7 @@ static void selection_paint (ClutterText *self, CoglFramebuffer *fb) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); ClutterActor *actor = CLUTTER_ACTOR (self); guint8 paint_opacity = clutter_actor_get_paint_opacity (actor); const ClutterColor *color; @@ -2092,7 +2096,7 @@ static gint clutter_text_move_line_end (ClutterText *self, gint start) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); PangoLayoutLine *layout_line; PangoLayout *layout; gint line_no; @@ -2128,7 +2132,8 @@ clutter_text_move_line_end (ClutterText *self, static void clutter_text_select_word (ClutterText *self) { - gint cursor_pos = self->priv->position; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); + gint cursor_pos = priv->position; gint start_pos, end_pos; start_pos = clutter_text_move_word_backward (self, cursor_pos); @@ -2140,7 +2145,7 @@ clutter_text_select_word (ClutterText *self) static void clutter_text_select_line (ClutterText *self) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); gint cursor_pos = priv->position; gint start_pos, end_pos; @@ -2162,7 +2167,7 @@ static int clutter_text_update_click_count (ClutterText *self, const ClutterEvent *event) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); ClutterSettings *settings; int double_click_time, double_click_distance; uint32_t evtime; @@ -2196,7 +2201,7 @@ clutter_text_press (ClutterActor *actor, ClutterEvent *event) { ClutterText *self = CLUTTER_TEXT (actor); - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); ClutterEventType type = clutter_event_type (event); gboolean res = FALSE; gfloat x, y; @@ -2290,7 +2295,7 @@ clutter_text_move (ClutterActor *actor, ClutterEvent *event) { ClutterText *self = CLUTTER_TEXT (actor); - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); gfloat x, y; gint index_, offset; gboolean res; @@ -2322,7 +2327,7 @@ clutter_text_release (ClutterActor *actor, ClutterEvent *event) { ClutterText *self = CLUTTER_TEXT (actor); - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); ClutterEventType type = clutter_event_type (event); if (priv->in_select_drag) @@ -2400,9 +2405,10 @@ static gboolean clutter_text_remove_password_hint (gpointer data) { ClutterText *self = data; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); - self->priv->password_hint_visible = FALSE; - self->priv->password_hint_id = 0; + priv->password_hint_visible = FALSE; + priv->password_hint_id = 0; clutter_text_dirty_cache (data); clutter_actor_queue_redraw (data); // paint volume was already invalidated by clutter_text_dirty_cache() @@ -2415,7 +2421,7 @@ clutter_text_key_press (ClutterActor *actor, ClutterEvent *event) { ClutterText *self = CLUTTER_TEXT (actor); - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); ClutterBindingPool *pool; ClutterEventFlags flags; ClutterModifierType modifiers; @@ -2504,7 +2510,7 @@ clutter_text_key_release (ClutterActor *actor, ClutterEvent *event) { ClutterText *self = CLUTTER_TEXT (actor); - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); if (clutter_input_focus_is_focused (priv->input_focus) && clutter_input_focus_filter_event (priv->input_focus, event)) @@ -2589,7 +2595,7 @@ clutter_text_paint (ClutterActor *self, ClutterPaintContext *paint_context) { ClutterText *text = CLUTTER_TEXT (self); - ClutterTextPrivate *priv = text->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (text); CoglFramebuffer *fb; PangoLayout *layout; ClutterActorBox alloc = { 0, }; @@ -2742,8 +2748,8 @@ clutter_text_paint (ClutterActor *self, } real_opacity = clutter_actor_get_paint_opacity (self) - * priv->text_color.alpha - / 255; + * priv->text_color.alpha + / 255; CLUTTER_NOTE (PAINT, "painting text (text: '%s')", clutter_text_buffer_get_text (get_buffer (text))); @@ -2792,7 +2798,7 @@ clutter_text_get_paint_volume_for_cursor (ClutterText *text, float resource_scale, ClutterPaintVolume *volume) { - ClutterTextPrivate *priv = text->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (text); graphene_point3d_t origin; clutter_text_ensure_cursor_position (text, resource_scale); @@ -2825,7 +2831,7 @@ clutter_text_get_paint_volume (ClutterActor *self, ClutterPaintVolume *volume) { ClutterText *text = CLUTTER_TEXT (self); - ClutterTextPrivate *priv = text->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (text); PangoLayout *layout; PangoRectangle ink_rect; graphene_point3d_t origin; @@ -2894,7 +2900,7 @@ clutter_text_get_preferred_width (ClutterActor *self, gfloat *natural_width_p) { ClutterText *text = CLUTTER_TEXT (self); - ClutterTextPrivate *priv = text->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (text); PangoRectangle logical_rect = { 0, }; PangoLayout *layout; gint logical_width; @@ -2939,7 +2945,8 @@ clutter_text_get_preferred_height (ClutterActor *self, gfloat *min_height_p, gfloat *natural_height_p) { - ClutterTextPrivate *priv = CLUTTER_TEXT (self)->priv; + ClutterTextPrivate *priv = + clutter_text_get_instance_private (CLUTTER_TEXT (self)); if (for_width == 0) { @@ -3007,6 +3014,7 @@ clutter_text_allocate (ClutterActor *self, const ClutterActorBox *box) { ClutterText *text = CLUTTER_TEXT (self); + ClutterTextPrivate *priv = clutter_text_get_instance_private (text); ClutterActorClass *parent_class; /* Ensure that there is a cached layout with the right width so @@ -3016,7 +3024,7 @@ clutter_text_allocate (ClutterActor *self, * to have any limit on the layout size, since the paint will clip * it to the allocation of the actor */ - if (text->priv->editable && text->priv->single_line_mode) + if (priv->editable && priv->single_line_mode) clutter_text_create_layout (text, -1, -1); else maybe_create_text_layout_with_resource_scale (text, @@ -3052,7 +3060,7 @@ static void clutter_text_resource_scale_changed (ClutterActor *actor) { ClutterText *text = CLUTTER_TEXT (actor); - ClutterTextPrivate *priv = text->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (text); g_clear_pointer (&priv->effective_attrs, pango_attr_list_unref); clutter_text_dirty_cache (text); @@ -3065,7 +3073,7 @@ clutter_text_event (ClutterActor *self, ClutterEvent *event) { ClutterText *text = CLUTTER_TEXT (self); - ClutterTextPrivate *priv = text->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (text); ClutterEventType event_type; event_type = clutter_event_type (event); @@ -3084,7 +3092,7 @@ clutter_text_event (ClutterActor *self, static void clutter_text_im_focus (ClutterText *text) { - ClutterTextPrivate *priv = text->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (text); ClutterBackend *backend = clutter_get_default_backend (); ClutterInputMethod *method = clutter_backend_get_input_method (backend); @@ -3103,10 +3111,11 @@ clutter_text_im_focus (ClutterText *text) static void clutter_text_key_focus_in (ClutterActor *actor) { - ClutterTextPrivate *priv = CLUTTER_TEXT (actor)->priv; + ClutterText *text = CLUTTER_TEXT (actor); + ClutterTextPrivate *priv = clutter_text_get_instance_private (text); if (priv->editable) - clutter_text_im_focus (CLUTTER_TEXT (actor)); + clutter_text_im_focus (text); priv->has_focus = TRUE; @@ -3116,7 +3125,8 @@ clutter_text_key_focus_in (ClutterActor *actor) static void clutter_text_key_focus_out (ClutterActor *actor) { - ClutterTextPrivate *priv = CLUTTER_TEXT (actor)->priv; + ClutterTextPrivate *priv = + clutter_text_get_instance_private (CLUTTER_TEXT (actor)); ClutterBackend *backend = clutter_get_default_backend (); ClutterInputMethod *method = clutter_backend_get_input_method (backend); @@ -3137,7 +3147,7 @@ clutter_text_real_move_left (ClutterText *self, guint keyval, ClutterModifierType modifiers) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); gint pos = priv->position; gint new_pos = 0; gint len; @@ -3180,7 +3190,7 @@ clutter_text_real_move_right (ClutterText *self, guint keyval, ClutterModifierType modifiers) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); gint pos = priv->position; gint len = clutter_text_buffer_get_length (get_buffer (self)); gint new_pos = 0; @@ -3217,7 +3227,7 @@ clutter_text_real_move_up (ClutterText *self, guint keyval, ClutterModifierType modifiers) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); PangoLayoutLine *layout_line; PangoLayout *layout; gint line_no; @@ -3274,7 +3284,7 @@ clutter_text_real_move_down (ClutterText *self, guint keyval, ClutterModifierType modifiers) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); PangoLayoutLine *layout_line; PangoLayout *layout; gint line_no; @@ -3327,7 +3337,7 @@ clutter_text_real_line_start (ClutterText *self, guint keyval, ClutterModifierType modifiers) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); gint position; g_object_freeze_notify (G_OBJECT (self)); @@ -3349,7 +3359,7 @@ clutter_text_real_line_end (ClutterText *self, guint keyval, ClutterModifierType modifiers) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); gint position; g_object_freeze_notify (G_OBJECT (self)); @@ -3383,7 +3393,7 @@ clutter_text_real_del_next (ClutterText *self, guint keyval, ClutterModifierType modifiers) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); gint pos; gint len; @@ -3405,7 +3415,7 @@ clutter_text_real_del_word_next (ClutterText *self, guint keyval, ClutterModifierType modifiers) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); gint pos; gint len; @@ -3441,7 +3451,7 @@ clutter_text_real_del_prev (ClutterText *self, guint keyval, ClutterModifierType modifiers) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); gint pos; gint len; @@ -3476,7 +3486,7 @@ clutter_text_real_del_word_prev (ClutterText *self, guint keyval, ClutterModifierType modifiers) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); gint pos; gint len; @@ -3565,7 +3575,8 @@ clutter_text_set_color_internal (ClutterText *self, GParamSpec *pspec, const ClutterColor *color) { - ClutterTextPrivate *priv = CLUTTER_TEXT (self)->priv; + ClutterTextPrivate *priv = + clutter_text_get_instance_private (self); GParamSpec *other = NULL; switch (pspec->param_id) @@ -3628,7 +3639,7 @@ clutter_text_set_color_animated (ClutterText *self, const ClutterColor *color) { ClutterActor *actor = CLUTTER_ACTOR (self); - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); const ClutterAnimationInfo *info; ClutterTransition *transition; @@ -4380,15 +4391,15 @@ clutter_text_init (ClutterText *self) gchar *font_name; int i, password_hint_time; - self->priv = priv = clutter_text_get_instance_private (self); + priv = clutter_text_get_instance_private (self); - priv->alignment = PANGO_ALIGN_LEFT; - priv->wrap = FALSE; - priv->wrap_mode = PANGO_WRAP_WORD; - priv->ellipsize = PANGO_ELLIPSIZE_NONE; + priv->alignment = PANGO_ALIGN_LEFT; + priv->wrap = FALSE; + priv->wrap_mode = PANGO_WRAP_WORD; + priv->ellipsize = PANGO_ELLIPSIZE_NONE; priv->use_underline = FALSE; - priv->use_markup = FALSE; - priv->justify = FALSE; + priv->use_markup = FALSE; + priv->justify = FALSE; for (i = 0; i < N_CACHED_LAYOUTS; i++) priv->cached_layouts[i].layout = NULL; @@ -4521,7 +4532,7 @@ clutter_text_new_with_text (const gchar *font_name, static ClutterTextBuffer* get_buffer (ClutterText *self) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); if (priv->buffer == NULL) { @@ -4547,7 +4558,7 @@ buffer_inserted_text (ClutterTextBuffer *buffer, gint new_position; gint new_selection_bound; - priv = self->priv; + priv = clutter_text_get_instance_private (self); if (priv->position >= 0 || priv->selection_bound >= 0) { new_position = priv->position; @@ -4575,7 +4586,7 @@ buffer_deleted_text (ClutterTextBuffer *buffer, gint new_position; gint new_selection_bound; - priv = self->priv; + priv = clutter_text_get_instance_private (self); if (priv->position >= 0 || priv->selection_bound >= 0) { new_position = priv->position; @@ -4643,7 +4654,7 @@ buffer_notify_max_length (ClutterTextBuffer *buffer, static void buffer_connect_signals (ClutterText *self) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); g_signal_connect (priv->buffer, "inserted-text", G_CALLBACK (buffer_inserted_text), self); g_signal_connect (priv->buffer, "deleted-text", G_CALLBACK (buffer_deleted_text), self); g_signal_connect (priv->buffer, "notify::text", G_CALLBACK (buffer_notify_text), self); @@ -4653,7 +4664,7 @@ buffer_connect_signals (ClutterText *self) static void buffer_disconnect_signals (ClutterText *self) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); g_signal_handlers_disconnect_by_func (priv->buffer, buffer_inserted_text, self); g_signal_handlers_disconnect_by_func (priv->buffer, buffer_deleted_text, self); g_signal_handlers_disconnect_by_func (priv->buffer, buffer_notify_text, self); @@ -4709,7 +4720,7 @@ clutter_text_set_buffer (ClutterText *self, g_return_if_fail (CLUTTER_IS_TEXT (self)); - priv = self->priv; + priv = clutter_text_get_instance_private (self); if (buffer) { @@ -4757,7 +4768,7 @@ clutter_text_set_editable (ClutterText *self, g_return_if_fail (CLUTTER_IS_TEXT (self)); - priv = self->priv; + priv = clutter_text_get_instance_private (self); if (priv->editable != editable) { @@ -4788,9 +4799,12 @@ clutter_text_set_editable (ClutterText *self, gboolean clutter_text_get_editable (ClutterText *self) { + ClutterTextPrivate *priv; + g_return_val_if_fail (CLUTTER_IS_TEXT (self), FALSE); - return self->priv->editable; + priv = clutter_text_get_instance_private (self); + return priv->editable; } /** @@ -4811,7 +4825,7 @@ clutter_text_set_selectable (ClutterText *self, g_return_if_fail (CLUTTER_IS_TEXT (self)); - priv = self->priv; + priv = clutter_text_get_instance_private (self); if (priv->selectable != selectable) { @@ -4834,9 +4848,12 @@ clutter_text_set_selectable (ClutterText *self, gboolean clutter_text_get_selectable (ClutterText *self) { + ClutterTextPrivate *priv; + g_return_val_if_fail (CLUTTER_IS_TEXT (self), TRUE); - return self->priv->selectable; + priv = clutter_text_get_instance_private (self); + return priv->selectable; } /** @@ -4861,7 +4878,7 @@ clutter_text_set_activatable (ClutterText *self, g_return_if_fail (CLUTTER_IS_TEXT (self)); - priv = self->priv; + priv = clutter_text_get_instance_private (self); if (priv->activatable != activatable) { @@ -4884,9 +4901,12 @@ clutter_text_set_activatable (ClutterText *self, gboolean clutter_text_get_activatable (ClutterText *self) { + ClutterTextPrivate *priv; + g_return_val_if_fail (CLUTTER_IS_TEXT (self), TRUE); - return self->priv->activatable; + priv = clutter_text_get_instance_private (self); + return priv->activatable; } /** @@ -4911,7 +4931,7 @@ clutter_text_activate (ClutterText *self) g_return_val_if_fail (CLUTTER_IS_TEXT (self), FALSE); - priv = self->priv; + priv = clutter_text_get_instance_private (self); if (priv->activatable) { @@ -4946,7 +4966,7 @@ clutter_text_set_cursor_visible (ClutterText *self, g_return_if_fail (CLUTTER_IS_TEXT (self)); - priv = self->priv; + priv = clutter_text_get_instance_private (self); cursor_visible = !!cursor_visible; @@ -4971,9 +4991,12 @@ clutter_text_set_cursor_visible (ClutterText *self, gboolean clutter_text_get_cursor_visible (ClutterText *self) { + ClutterTextPrivate *priv; + g_return_val_if_fail (CLUTTER_IS_TEXT (self), TRUE); - return self->priv->cursor_visible; + priv = clutter_text_get_instance_private (self); + return priv->cursor_visible; } /** @@ -5011,7 +5034,7 @@ clutter_text_get_cursor_color (ClutterText *self, g_return_if_fail (CLUTTER_IS_TEXT (self)); g_return_if_fail (color != NULL); - priv = self->priv; + priv = clutter_text_get_instance_private (self); *color = priv->cursor_color; } @@ -5068,7 +5091,7 @@ clutter_text_get_selection (ClutterText *self) g_return_val_if_fail (CLUTTER_IS_TEXT (self), NULL); - priv = self->priv; + priv = clutter_text_get_instance_private (self); start_index = priv->position; end_index = priv->selection_bound; @@ -5113,7 +5136,7 @@ clutter_text_set_selection_bound (ClutterText *self, g_return_if_fail (CLUTTER_IS_TEXT (self)); - priv = self->priv; + priv = clutter_text_get_instance_private (self); if (priv->selection_bound != selection_bound) { @@ -5142,9 +5165,12 @@ clutter_text_set_selection_bound (ClutterText *self, gint clutter_text_get_selection_bound (ClutterText *self) { + ClutterTextPrivate *priv; + g_return_val_if_fail (CLUTTER_IS_TEXT (self), -1); - return self->priv->selection_bound; + priv = clutter_text_get_instance_private (self); + return priv->selection_bound; } /** @@ -5184,7 +5210,7 @@ clutter_text_get_selection_color (ClutterText *self, g_return_if_fail (CLUTTER_IS_TEXT (self)); g_return_if_fail (color != NULL); - priv = self->priv; + priv = clutter_text_get_instance_private (self); *color = priv->selection_color; } @@ -5225,7 +5251,7 @@ clutter_text_get_selected_text_color (ClutterText *self, g_return_if_fail (CLUTTER_IS_TEXT (self)); g_return_if_fail (color != NULL); - priv = self->priv; + priv = clutter_text_get_instance_private (self); *color = priv->selected_text_color; } @@ -5263,9 +5289,12 @@ clutter_text_set_font_description (ClutterText *self, PangoFontDescription * clutter_text_get_font_description (ClutterText *self) { + ClutterTextPrivate *priv; + g_return_val_if_fail (CLUTTER_IS_TEXT (self), NULL); - return self->priv->font_desc; + priv = clutter_text_get_instance_private (self); + return priv->font_desc; } /** @@ -5281,9 +5310,12 @@ clutter_text_get_font_description (ClutterText *self) const gchar * clutter_text_get_font_name (ClutterText *text) { + ClutterTextPrivate *priv; + g_return_val_if_fail (CLUTTER_IS_TEXT (text), NULL); - return text->priv->font_name; + priv = clutter_text_get_instance_private (text); + return priv->font_name; } /** @@ -5339,7 +5371,7 @@ clutter_text_set_font_name (ClutterText *self, else is_default_font = FALSE; - priv = self->priv; + priv = clutter_text_get_instance_private (self); if (g_strcmp0 (priv->font_name, font_name) == 0) goto out; @@ -5400,7 +5432,7 @@ static inline void clutter_text_set_use_markup_internal (ClutterText *self, gboolean use_markup) { - ClutterTextPrivate *priv = self->priv; + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); if (priv->use_markup != use_markup) { @@ -5442,13 +5474,16 @@ void clutter_text_set_text (ClutterText *self, const gchar *text) { + ClutterTextPrivate *priv; + g_return_if_fail (CLUTTER_IS_TEXT (self)); /* if the text is editable (i.e. there is not markup flag to reset) then * changing the contents will result in selection and cursor changes that * we should avoid */ - if (self->priv->editable) + priv = clutter_text_get_instance_private (self); + if (priv->editable) { if (g_strcmp0 (clutter_text_buffer_get_text (get_buffer (self)), text) == 0) return; @@ -5502,10 +5537,12 @@ clutter_text_get_layout (ClutterText *self) { PangoLayout *layout; gfloat width, height; + ClutterTextPrivate *priv; g_return_val_if_fail (CLUTTER_IS_TEXT (self), NULL); - if (self->priv->editable && self->priv->single_line_mode) + priv = clutter_text_get_instance_private (self); + if (priv->editable && priv->single_line_mode) return clutter_text_create_layout (self, -1, -1); clutter_actor_get_size (CLUTTER_ACTOR (self), &width, &height); @@ -5555,7 +5592,7 @@ clutter_text_get_color (ClutterText *self, g_return_if_fail (CLUTTER_IS_TEXT (self)); g_return_if_fail (color != NULL); - priv = self->priv; + priv = clutter_text_get_instance_private (self); *color = priv->text_color; } @@ -5579,7 +5616,7 @@ clutter_text_set_ellipsize (ClutterText *self, g_return_if_fail (mode >= PANGO_ELLIPSIZE_NONE && mode <= PANGO_ELLIPSIZE_END); - priv = self->priv; + priv = clutter_text_get_instance_private (self); if ((PangoEllipsizeMode) priv->ellipsize != mode) { @@ -5605,9 +5642,12 @@ clutter_text_set_ellipsize (ClutterText *self, PangoEllipsizeMode clutter_text_get_ellipsize (ClutterText *self) { + ClutterTextPrivate *priv; + g_return_val_if_fail (CLUTTER_IS_TEXT (self), PANGO_ELLIPSIZE_NONE); - return self->priv->ellipsize; + priv = clutter_text_get_instance_private (self); + return priv->ellipsize; } /** @@ -5622,9 +5662,12 @@ clutter_text_get_ellipsize (ClutterText *self) gboolean clutter_text_get_line_wrap (ClutterText *self) { + ClutterTextPrivate *priv; + g_return_val_if_fail (CLUTTER_IS_TEXT (self), FALSE); - return self->priv->wrap; + priv = clutter_text_get_instance_private (self); + return priv->wrap; } /** @@ -5643,7 +5686,7 @@ clutter_text_set_line_wrap (ClutterText *self, g_return_if_fail (CLUTTER_IS_TEXT (self)); - priv = self->priv; + priv = clutter_text_get_instance_private (self); if (priv->wrap != line_wrap) { @@ -5674,7 +5717,7 @@ clutter_text_set_line_wrap_mode (ClutterText *self, g_return_if_fail (CLUTTER_IS_TEXT (self)); - priv = self->priv; + priv = clutter_text_get_instance_private (self); if (priv->wrap_mode != wrap_mode) { @@ -5701,9 +5744,12 @@ clutter_text_set_line_wrap_mode (ClutterText *self, PangoWrapMode clutter_text_get_line_wrap_mode (ClutterText *self) { + ClutterTextPrivate *priv; + g_return_val_if_fail (CLUTTER_IS_TEXT (self), PANGO_WRAP_WORD); - return self->priv->wrap_mode; + priv = clutter_text_get_instance_private (self); + return priv->wrap_mode; } /** @@ -5725,7 +5771,7 @@ clutter_text_set_attributes (ClutterText *self, g_return_if_fail (CLUTTER_IS_TEXT (self)); - priv = self->priv; + priv = clutter_text_get_instance_private (self); if (pango_attr_list_equal (priv->attrs, attrs)) return; @@ -5764,9 +5810,12 @@ clutter_text_set_attributes (ClutterText *self, PangoAttrList * clutter_text_get_attributes (ClutterText *self) { + ClutterTextPrivate *priv; + g_return_val_if_fail (CLUTTER_IS_TEXT (self), NULL); - return self->priv->attrs; + priv = clutter_text_get_instance_private (self); + return priv->attrs; } /** @@ -5789,7 +5838,7 @@ clutter_text_set_line_alignment (ClutterText *self, g_return_if_fail (CLUTTER_IS_TEXT (self)); - priv = self->priv; + priv = clutter_text_get_instance_private (self); if (priv->alignment != alignment) { @@ -5813,9 +5862,12 @@ clutter_text_set_line_alignment (ClutterText *self, PangoAlignment clutter_text_get_line_alignment (ClutterText *self) { + ClutterTextPrivate *priv; + g_return_val_if_fail (CLUTTER_IS_TEXT (self), PANGO_ALIGN_LEFT); - return self->priv->alignment; + priv = clutter_text_get_instance_private (self); + return priv->alignment; } /** @@ -5861,9 +5913,12 @@ clutter_text_set_use_markup (ClutterText *self, gboolean clutter_text_get_use_markup (ClutterText *self) { + ClutterTextPrivate *priv; + g_return_val_if_fail (CLUTTER_IS_TEXT (self), FALSE); - return self->priv->use_markup; + priv = clutter_text_get_instance_private (self); + return priv->use_markup; } /** @@ -5883,7 +5938,7 @@ clutter_text_set_justify (ClutterText *self, g_return_if_fail (CLUTTER_IS_TEXT (self)); - priv = self->priv; + priv = clutter_text_get_instance_private (self); if (priv->justify != justify) { @@ -5907,9 +5962,12 @@ clutter_text_set_justify (ClutterText *self, gboolean clutter_text_get_justify (ClutterText *self) { + ClutterTextPrivate *priv; + g_return_val_if_fail (CLUTTER_IS_TEXT (self), FALSE); - return self->priv->justify; + priv = clutter_text_get_instance_private (self); + return priv->justify; } /** @@ -5923,9 +5981,12 @@ clutter_text_get_justify (ClutterText *self) gint clutter_text_get_cursor_position (ClutterText *self) { + ClutterTextPrivate *priv; + g_return_val_if_fail (CLUTTER_IS_TEXT (self), -1); - return self->priv->position; + priv = clutter_text_get_instance_private (self); + return priv->position; } /** @@ -5946,7 +6007,7 @@ clutter_text_set_cursor_position (ClutterText *self, g_return_if_fail (CLUTTER_IS_TEXT (self)); - priv = self->priv; + priv = clutter_text_get_instance_private (self); if (priv->position == position) return; @@ -5986,7 +6047,7 @@ clutter_text_set_cursor_size (ClutterText *self, g_return_if_fail (CLUTTER_IS_TEXT (self)); - priv = self->priv; + priv = clutter_text_get_instance_private (self); if (priv->cursor_size != size) { @@ -6012,9 +6073,12 @@ clutter_text_set_cursor_size (ClutterText *self, guint clutter_text_get_cursor_size (ClutterText *self) { + ClutterTextPrivate *priv; + g_return_val_if_fail (CLUTTER_IS_TEXT (self), DEFAULT_CURSOR_SIZE); - return self->priv->cursor_size; + priv = clutter_text_get_instance_private (self); + return priv->cursor_size; } /** @@ -6036,7 +6100,7 @@ clutter_text_set_password_char (ClutterText *self, g_return_if_fail (CLUTTER_IS_TEXT (self)); - priv = self->priv; + priv = clutter_text_get_instance_private (self); if (priv->password_char != wc) { @@ -6062,9 +6126,12 @@ clutter_text_set_password_char (ClutterText *self, gunichar clutter_text_get_password_char (ClutterText *self) { + ClutterTextPrivate *priv; + g_return_val_if_fail (CLUTTER_IS_TEXT (self), 0); - return self->priv->password_char; + priv = clutter_text_get_instance_private (self); + return priv->password_char; } /** @@ -6145,7 +6212,7 @@ clutter_text_insert_unichar (ClutterText *self, ClutterTextPrivate *priv; GString *new; - priv = self->priv; + priv = clutter_text_get_instance_private (self); new = g_string_new (""); g_string_append_unichar (new, wc); @@ -6244,7 +6311,7 @@ clutter_text_delete_chars (ClutterText *self, g_return_if_fail (CLUTTER_IS_TEXT (self)); - priv = self->priv; + priv = clutter_text_get_instance_private (self); clutter_text_real_delete_text (self, priv->position, priv->position + n_chars); @@ -6320,7 +6387,7 @@ clutter_text_set_single_line_mode (ClutterText *self, g_return_if_fail (CLUTTER_IS_TEXT (self)); - priv = self->priv; + priv = clutter_text_get_instance_private (self); if (priv->single_line_mode != single_line) { @@ -6355,9 +6422,12 @@ clutter_text_set_single_line_mode (ClutterText *self, gboolean clutter_text_get_single_line_mode (ClutterText *self) { + ClutterTextPrivate *priv; + g_return_val_if_fail (CLUTTER_IS_TEXT (self), FALSE); - return self->priv->single_line_mode; + priv = clutter_text_get_instance_private (self); + return priv->single_line_mode; } /** @@ -6387,7 +6457,7 @@ clutter_text_set_preedit_string (ClutterText *self, g_return_if_fail (CLUTTER_IS_TEXT (self)); - priv = self->priv; + priv = clutter_text_get_instance_private (self); g_free (priv->preedit_str); priv->preedit_str = NULL; @@ -6443,7 +6513,7 @@ clutter_text_get_layout_offsets (ClutterText *self, g_return_if_fail (CLUTTER_IS_TEXT (self)); - priv = self->priv; + priv = clutter_text_get_instance_private (self); if (x != NULL) *x = priv->text_logical_x; @@ -6467,13 +6537,15 @@ clutter_text_get_cursor_rect (ClutterText *self, graphene_rect_t *rect) { float inverse_scale; + ClutterTextPrivate *priv; g_return_if_fail (CLUTTER_IS_TEXT (self)); g_return_if_fail (rect != NULL); inverse_scale = 1.f / clutter_actor_get_resource_scale (CLUTTER_ACTOR (self)); + priv = clutter_text_get_instance_private (self); - graphene_rect_scale (&self->priv->cursor_rect, + graphene_rect_scale (&priv->cursor_rect, inverse_scale, inverse_scale, rect); @@ -6483,48 +6555,63 @@ void clutter_text_set_input_hints (ClutterText *self, ClutterInputContentHintFlags hints) { + ClutterTextPrivate *priv; + g_return_if_fail (CLUTTER_IS_TEXT (self)); - self->priv->input_hints = hints; + priv = clutter_text_get_instance_private (self); + priv->input_hints = hints; - if (clutter_input_focus_is_focused (self->priv->input_focus)) - clutter_input_focus_set_content_hints (self->priv->input_focus, hints); + if (clutter_input_focus_is_focused (priv->input_focus)) + clutter_input_focus_set_content_hints (priv->input_focus, hints); g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_INPUT_HINTS]); } ClutterInputContentHintFlags clutter_text_get_input_hints (ClutterText *self) { + ClutterTextPrivate *priv; + g_return_val_if_fail (CLUTTER_IS_TEXT (self), 0); - return self->priv->input_hints; + priv = clutter_text_get_instance_private (self); + return priv->input_hints; } void clutter_text_set_input_purpose (ClutterText *self, ClutterInputContentPurpose purpose) { + ClutterTextPrivate *priv; + g_return_if_fail (CLUTTER_IS_TEXT (self)); - self->priv->input_purpose = purpose; + priv = clutter_text_get_instance_private (self); + priv->input_purpose = purpose; - if (clutter_input_focus_is_focused (self->priv->input_focus)) - clutter_input_focus_set_content_purpose (self->priv->input_focus, purpose); + if (clutter_input_focus_is_focused (priv->input_focus)) + clutter_input_focus_set_content_purpose (priv->input_focus, purpose); g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_INPUT_PURPOSE]); } ClutterInputContentPurpose clutter_text_get_input_purpose (ClutterText *self) { + ClutterTextPrivate *priv; + g_return_val_if_fail (CLUTTER_IS_TEXT (self), 0); - return self->priv->input_purpose; + priv = clutter_text_get_instance_private (self); + return priv->input_purpose; } gboolean clutter_text_has_preedit (ClutterText *self) { + ClutterTextPrivate *priv; + g_return_val_if_fail (CLUTTER_IS_TEXT (self), FALSE); - return self->priv->preedit_set; + priv = clutter_text_get_instance_private (self); + return priv->preedit_set; } diff --git a/clutter/clutter/clutter-text.h b/clutter/clutter/clutter-text.h index 2c4ee63c4..d69b461e1 100644 --- a/clutter/clutter/clutter-text.h +++ b/clutter/clutter/clutter-text.h @@ -35,23 +35,6 @@ G_BEGIN_DECLS #define CLUTTER_TYPE_TEXT (clutter_text_get_type ()) -#define CLUTTER_TEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_TEXT, ClutterText)) -#define CLUTTER_TEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CLUTTER_TYPE_TEXT, ClutterTextClass)) -#define CLUTTER_IS_TEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLUTTER_TYPE_TEXT)) -#define CLUTTER_IS_TEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CLUTTER_TYPE_TEXT)) -#define CLUTTER_TEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_TEXT, ClutterTextClass)) - -typedef struct _ClutterText ClutterText; -typedef struct _ClutterTextPrivate ClutterTextPrivate; -typedef struct _ClutterTextClass ClutterTextClass; - -struct _ClutterText -{ - /*< private >*/ - ClutterActor parent_instance; - - ClutterTextPrivate *priv; -}; /** * ClutterTextClass: @@ -74,7 +57,10 @@ struct _ClutterTextClass }; CLUTTER_EXPORT -GType clutter_text_get_type (void) G_GNUC_CONST; +G_DECLARE_DERIVABLE_TYPE (ClutterText, + clutter_text, + CLUTTER, TEXT, + ClutterActor) CLUTTER_EXPORT ClutterActor * clutter_text_new (void); diff --git a/clutter/clutter/clutter-types.h b/clutter/clutter/clutter-types.h index 8368eb191..20bd499dd 100644 --- a/clutter/clutter/clutter-types.h +++ b/clutter/clutter/clutter-types.h @@ -63,6 +63,7 @@ typedef struct _ClutterTransition ClutterTransition; typedef struct _ClutterPropertyTransition ClutterPropertyTransition; typedef struct _ClutterKeyframeTransition ClutterKeyframeTransition; typedef struct _ClutterTransitionGroup ClutterTransitionGroup; +typedef struct _ClutterText ClutterText; typedef struct _ClutterAction ClutterAction; typedef struct _ClutterConstraint ClutterConstraint;