[gtk+/wip/actor: 9/42] xxx: add actor
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/actor: 9/42] xxx: add actor
- Date: Tue, 18 Dec 2012 13:26:47 +0000 (UTC)
commit 7bfc5fd907c8880dc55c4de34094779e17467442
Author: Benjamin Otte <otte redhat com>
Date: Sun Dec 9 23:31:12 2012 +0100
xxx: add actor
gtk/actors/gtkactor.c | 48 +++++++++++++++++++++++++++++++++++++----
gtk/actors/gtkactorprivate.h | 5 ----
2 files changed, 43 insertions(+), 10 deletions(-)
---
diff --git a/gtk/actors/gtkactor.c b/gtk/actors/gtkactor.c
index 95491cd..d4ebeb9 100644
--- a/gtk/actors/gtkactor.c
+++ b/gtk/actors/gtkactor.c
@@ -82,6 +82,9 @@ enum
PROP_MAPPED,
PROP_REALIZED,
+ PROP_WIDTH,
+ PROP_HEIGHT,
+
PROP_TEXT_DIRECTION,
PROP_LAYOUT_MANAGER,
@@ -169,6 +172,14 @@ gtk_actor_get_property (GObject *object,
g_value_set_boolean (value, _gtk_actor_get_realized (actor));
break;
+ case PROP_WIDTH:
+ g_value_set_float (value, _gtk_actor_get_width (actor));
+ break;
+
+ case PROP_HEIGHT:
+ g_value_set_float (value, _gtk_actor_get_height (actor));
+ break;
+
case PROP_TEXT_DIRECTION:
g_value_set_enum (value, _gtk_actor_get_text_direction (actor));
break;
@@ -394,6 +405,13 @@ gtk_actor_real_allocate (GtkActor *self,
&identity,
width, height);
}
+
+ /* _gtk_actor_allocate() freezes the notify queue, so we can notify
+ * before actually setting the property here */
+ if (priv->width != width)
+ g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_WIDTH]);
+ if (priv->height != height)
+ g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_HEIGHT]);
priv->width = width;
priv->height = height;
@@ -1287,11 +1305,11 @@ _gtk_actor_get_request_mode (GtkActor *self)
* Since: 0.8
*/
void
-_gtk_actor_get_preferred_width (GtkActor *self,
- GtkOrientation orientation,
- gfloat for_size,
- gfloat *min_size_p,
- gfloat *natural_size_p)
+_gtk_actor_get_preferred_size (GtkActor *self,
+ GtkOrientation orientation,
+ gfloat for_size,
+ gfloat *min_size_p,
+ gfloat *natural_size_p)
{
GtkActorPrivate *priv;
float min_size = 0;
@@ -2317,7 +2335,27 @@ _gtk_actor_allocate (GtkActor *self,
if (!_gtk_actor_get_visible (self))
return;
+ g_object_freeze_notify (G_OBJECT (self));
+
GTK_ACTOR_GET_CLASS (self)->allocate (self, width, height);
+
+ g_object_thaw_notify (G_OBJECT (self));
+}
+
+void
+_gtk_actor_position (GtkActor *actor,
+ const cairo_matrix_t *position)
+{
+ g_return_if_fail (GTK_IS_ACTOR (actor));
+ g_return_if_fail (position != NULL);
+
+ _gtk_actor_queue_redraw (actor);
+
+ actor->priv->transform = *position;
+
+ _gtk_actor_queue_redraw (actor);
+
+ /* g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_POSITION]); */
}
/**
diff --git a/gtk/actors/gtkactorprivate.h b/gtk/actors/gtkactorprivate.h
index 7d119d4..4965b17 100644
--- a/gtk/actors/gtkactorprivate.h
+++ b/gtk/actors/gtkactorprivate.h
@@ -131,13 +131,8 @@ void _gtk_actor_allocate
gfloat width,
gfloat height);
const cairo_matrix_t * _gtk_actor_get_position (GtkActor *actor);
-/* XXX: Do we wanna support that?
void _gtk_actor_position (GtkActor *actor,
const cairo_matrix_t *position);
-*/
-void _gtk_actor_position_at (GtkActor *actor,
- gfloat x,
- gfloat y);
void _gtk_actor_set_layout_manager (GtkActor *actor,
GtkLayoutManager *layout_manager);
GtkLayoutManager * _gtk_actor_get_layout_manager (GtkActor *actor);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]