[gtk+/wip/actor: 9/42] xxx: add actor



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]