text-buffer: Use macros for subclassing boilerplate
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3387>
This commit is contained in:
parent
a944889f49
commit
1df56ca77a
3 changed files with 50 additions and 49 deletions
|
@ -51,7 +51,6 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterScrollActor, g_object_unref)
|
||||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterShaderEffect, g_object_unref)
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterShaderEffect, g_object_unref)
|
||||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterStage, g_object_unref)
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterStage, g_object_unref)
|
||||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterSwipeAction, g_object_unref)
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterSwipeAction, g_object_unref)
|
||||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterTextBuffer, g_object_unref)
|
|
||||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterText, g_object_unref)
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterText, g_object_unref)
|
||||||
|
|
||||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterActorBox, clutter_actor_box_free)
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ClutterActorBox, clutter_actor_box_free)
|
||||||
|
|
|
@ -66,16 +66,16 @@ enum
|
||||||
|
|
||||||
static guint signals[LAST_SIGNAL] = { 0 };
|
static guint signals[LAST_SIGNAL] = { 0 };
|
||||||
|
|
||||||
struct _ClutterTextBufferPrivate
|
typedef struct _ClutterTextBufferPrivate
|
||||||
{
|
{
|
||||||
gint max_length;
|
gint max_length;
|
||||||
|
|
||||||
/* Only valid if this class is not derived */
|
/* Only valid if this class is not derived */
|
||||||
gchar *normal_text;
|
gchar *normal_text;
|
||||||
gsize normal_text_size;
|
gsize normal_text_size;
|
||||||
gsize normal_text_bytes;
|
gsize normal_text_bytes;
|
||||||
guint normal_text_chars;
|
guint normal_text_chars;
|
||||||
};
|
} ClutterTextBufferPrivate;
|
||||||
|
|
||||||
G_DEFINE_TYPE_WITH_PRIVATE (ClutterTextBuffer, clutter_text_buffer, G_TYPE_OBJECT)
|
G_DEFINE_TYPE_WITH_PRIVATE (ClutterTextBuffer, clutter_text_buffer, G_TYPE_OBJECT)
|
||||||
|
|
||||||
|
@ -99,28 +99,33 @@ trash_area (gchar *area,
|
||||||
|
|
||||||
static const gchar*
|
static const gchar*
|
||||||
clutter_text_buffer_normal_get_text (ClutterTextBuffer *buffer,
|
clutter_text_buffer_normal_get_text (ClutterTextBuffer *buffer,
|
||||||
gsize *n_bytes)
|
gsize *n_bytes)
|
||||||
{
|
{
|
||||||
|
ClutterTextBufferPrivate *priv =
|
||||||
|
clutter_text_buffer_get_instance_private (buffer);
|
||||||
if (n_bytes)
|
if (n_bytes)
|
||||||
*n_bytes = buffer->priv->normal_text_bytes;
|
*n_bytes = priv->normal_text_bytes;
|
||||||
if (!buffer->priv->normal_text)
|
if (!priv->normal_text)
|
||||||
return "";
|
return "";
|
||||||
return buffer->priv->normal_text;
|
return priv->normal_text;
|
||||||
}
|
}
|
||||||
|
|
||||||
static guint
|
static guint
|
||||||
clutter_text_buffer_normal_get_length (ClutterTextBuffer *buffer)
|
clutter_text_buffer_normal_get_length (ClutterTextBuffer *buffer)
|
||||||
{
|
{
|
||||||
return buffer->priv->normal_text_chars;
|
ClutterTextBufferPrivate *priv =
|
||||||
|
clutter_text_buffer_get_instance_private (buffer);
|
||||||
|
return priv->normal_text_chars;
|
||||||
}
|
}
|
||||||
|
|
||||||
static guint
|
static guint
|
||||||
clutter_text_buffer_normal_insert_text (ClutterTextBuffer *buffer,
|
clutter_text_buffer_normal_insert_text (ClutterTextBuffer *buffer,
|
||||||
guint position,
|
guint position,
|
||||||
const gchar *chars,
|
const gchar *chars,
|
||||||
guint n_chars)
|
guint n_chars)
|
||||||
{
|
{
|
||||||
ClutterTextBufferPrivate *pv = buffer->priv;
|
ClutterTextBufferPrivate *pv =
|
||||||
|
clutter_text_buffer_get_instance_private (buffer);;
|
||||||
gsize prev_size;
|
gsize prev_size;
|
||||||
gsize n_bytes;
|
gsize n_bytes;
|
||||||
gsize at;
|
gsize at;
|
||||||
|
@ -181,10 +186,11 @@ clutter_text_buffer_normal_insert_text (ClutterTextBuffer *buffer,
|
||||||
|
|
||||||
static guint
|
static guint
|
||||||
clutter_text_buffer_normal_delete_text (ClutterTextBuffer *buffer,
|
clutter_text_buffer_normal_delete_text (ClutterTextBuffer *buffer,
|
||||||
guint position,
|
guint position,
|
||||||
guint n_chars)
|
guint n_chars)
|
||||||
{
|
{
|
||||||
ClutterTextBufferPrivate *pv = buffer->priv;
|
ClutterTextBufferPrivate *pv =
|
||||||
|
clutter_text_buffer_get_instance_private (buffer);;
|
||||||
gsize start, end;
|
gsize start, end;
|
||||||
|
|
||||||
if (position > pv->normal_text_chars)
|
if (position > pv->normal_text_chars)
|
||||||
|
@ -244,19 +250,21 @@ clutter_text_buffer_real_deleted_text (ClutterTextBuffer *buffer,
|
||||||
static void
|
static void
|
||||||
clutter_text_buffer_init (ClutterTextBuffer *self)
|
clutter_text_buffer_init (ClutterTextBuffer *self)
|
||||||
{
|
{
|
||||||
self->priv = clutter_text_buffer_get_instance_private (self);
|
ClutterTextBufferPrivate *priv =
|
||||||
|
clutter_text_buffer_get_instance_private (self);
|
||||||
|
|
||||||
self->priv->normal_text = NULL;
|
priv->normal_text = NULL;
|
||||||
self->priv->normal_text_chars = 0;
|
priv->normal_text_chars = 0;
|
||||||
self->priv->normal_text_bytes = 0;
|
priv->normal_text_bytes = 0;
|
||||||
self->priv->normal_text_size = 0;
|
priv->normal_text_size = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_text_buffer_finalize (GObject *obj)
|
clutter_text_buffer_finalize (GObject *obj)
|
||||||
{
|
{
|
||||||
ClutterTextBuffer *buffer = CLUTTER_TEXT_BUFFER (obj);
|
ClutterTextBuffer *buffer = CLUTTER_TEXT_BUFFER (obj);
|
||||||
ClutterTextBufferPrivate *pv = buffer->priv;
|
ClutterTextBufferPrivate *pv =
|
||||||
|
clutter_text_buffer_get_instance_private (buffer);
|
||||||
|
|
||||||
if (pv->normal_text)
|
if (pv->normal_text)
|
||||||
{
|
{
|
||||||
|
@ -557,14 +565,17 @@ void
|
||||||
clutter_text_buffer_set_max_length (ClutterTextBuffer *buffer,
|
clutter_text_buffer_set_max_length (ClutterTextBuffer *buffer,
|
||||||
gint max_length)
|
gint max_length)
|
||||||
{
|
{
|
||||||
|
ClutterTextBufferPrivate *priv;
|
||||||
|
|
||||||
g_return_if_fail (CLUTTER_IS_TEXT_BUFFER (buffer));
|
g_return_if_fail (CLUTTER_IS_TEXT_BUFFER (buffer));
|
||||||
|
|
||||||
|
priv = clutter_text_buffer_get_instance_private (buffer);
|
||||||
max_length = CLAMP (max_length, 0, CLUTTER_TEXT_BUFFER_MAX_SIZE);
|
max_length = CLAMP (max_length, 0, CLUTTER_TEXT_BUFFER_MAX_SIZE);
|
||||||
|
|
||||||
if (max_length > 0 && clutter_text_buffer_get_length (buffer) > max_length)
|
if (max_length > 0 && clutter_text_buffer_get_length (buffer) > max_length)
|
||||||
clutter_text_buffer_delete_text (buffer, max_length, -1);
|
clutter_text_buffer_delete_text (buffer, max_length, -1);
|
||||||
|
|
||||||
buffer->priv->max_length = max_length;
|
priv->max_length = max_length;
|
||||||
g_object_notify_by_pspec (G_OBJECT (buffer), obj_props[PROP_MAX_LENGTH]);
|
g_object_notify_by_pspec (G_OBJECT (buffer), obj_props[PROP_MAX_LENGTH]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -581,8 +592,12 @@ clutter_text_buffer_set_max_length (ClutterTextBuffer *buffer,
|
||||||
gint
|
gint
|
||||||
clutter_text_buffer_get_max_length (ClutterTextBuffer *buffer)
|
clutter_text_buffer_get_max_length (ClutterTextBuffer *buffer)
|
||||||
{
|
{
|
||||||
|
ClutterTextBufferPrivate *priv;
|
||||||
|
|
||||||
g_return_val_if_fail (CLUTTER_IS_TEXT_BUFFER (buffer), 0);
|
g_return_val_if_fail (CLUTTER_IS_TEXT_BUFFER (buffer), 0);
|
||||||
return buffer->priv->max_length;
|
|
||||||
|
priv = clutter_text_buffer_get_instance_private (buffer);
|
||||||
|
return priv->max_length;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -617,7 +632,7 @@ clutter_text_buffer_insert_text (ClutterTextBuffer *buffer,
|
||||||
g_return_val_if_fail (CLUTTER_IS_TEXT_BUFFER (buffer), 0);
|
g_return_val_if_fail (CLUTTER_IS_TEXT_BUFFER (buffer), 0);
|
||||||
|
|
||||||
length = clutter_text_buffer_get_length (buffer);
|
length = clutter_text_buffer_get_length (buffer);
|
||||||
pv = buffer->priv;
|
pv = clutter_text_buffer_get_instance_private (buffer);;
|
||||||
|
|
||||||
if (n_chars < 0)
|
if (n_chars < 0)
|
||||||
n_chars = g_utf8_strlen (chars, -1);
|
n_chars = g_utf8_strlen (chars, -1);
|
||||||
|
|
|
@ -28,11 +28,13 @@
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
#define CLUTTER_TYPE_TEXT_BUFFER (clutter_text_buffer_get_type ())
|
#define CLUTTER_TYPE_TEXT_BUFFER (clutter_text_buffer_get_type ())
|
||||||
#define CLUTTER_TEXT_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_TEXT_BUFFER, ClutterTextBuffer))
|
|
||||||
#define CLUTTER_TEXT_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CLUTTER_TYPE_TEXT_BUFFER, ClutterTextBufferClass))
|
CLUTTER_EXPORT
|
||||||
#define CLUTTER_IS_TEXT_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLUTTER_TYPE_TEXT_BUFFER))
|
G_DECLARE_DERIVABLE_TYPE (ClutterTextBuffer,
|
||||||
#define CLUTTER_IS_TEXT_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CLUTTER_TYPE_TEXT_BUFFER))
|
clutter_text_buffer,
|
||||||
#define CLUTTER_TEXT_BUFFER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_TEXT_BUFFER, ClutterTextBufferClass))
|
CLUTTER,
|
||||||
|
TEXT_BUFFER,
|
||||||
|
GObject)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CLUTTER_TEXT_BUFFER_MAX_SIZE:
|
* CLUTTER_TEXT_BUFFER_MAX_SIZE:
|
||||||
|
@ -41,18 +43,6 @@ G_BEGIN_DECLS
|
||||||
*/
|
*/
|
||||||
#define CLUTTER_TEXT_BUFFER_MAX_SIZE G_MAXUSHORT
|
#define CLUTTER_TEXT_BUFFER_MAX_SIZE G_MAXUSHORT
|
||||||
|
|
||||||
typedef struct _ClutterTextBuffer ClutterTextBuffer;
|
|
||||||
typedef struct _ClutterTextBufferClass ClutterTextBufferClass;
|
|
||||||
typedef struct _ClutterTextBufferPrivate ClutterTextBufferPrivate;
|
|
||||||
|
|
||||||
struct _ClutterTextBuffer
|
|
||||||
{
|
|
||||||
/*< private >*/
|
|
||||||
GObject parent_instance;
|
|
||||||
|
|
||||||
ClutterTextBufferPrivate *priv;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ClutterTextBufferClass:
|
* ClutterTextBufferClass:
|
||||||
* @inserted_text: default handler for the #ClutterTextBuffer::inserted-text signal
|
* @inserted_text: default handler for the #ClutterTextBuffer::inserted-text signal
|
||||||
|
@ -97,9 +87,6 @@ struct _ClutterTextBufferClass
|
||||||
guint n_chars);
|
guint n_chars);
|
||||||
};
|
};
|
||||||
|
|
||||||
CLUTTER_EXPORT
|
|
||||||
GType clutter_text_buffer_get_type (void) G_GNUC_CONST;
|
|
||||||
|
|
||||||
CLUTTER_EXPORT
|
CLUTTER_EXPORT
|
||||||
ClutterTextBuffer* clutter_text_buffer_new (void);
|
ClutterTextBuffer* clutter_text_buffer_new (void);
|
||||||
CLUTTER_EXPORT
|
CLUTTER_EXPORT
|
||||||
|
|
Loading…
Reference in a new issue