profile/ivi/clutter.git
12 years agoconform/actor-size: Do not use Rectangle
Emmanuele Bassi [Tue, 17 Jan 2012 16:20:19 +0000 (16:20 +0000)]
conform/actor-size: Do not use Rectangle

Use ClutterActor directly, instead.

12 years agoactor: Provide a better default pick() behaviour
Emmanuele Bassi [Tue, 17 Jan 2012 16:13:55 +0000 (16:13 +0000)]
actor: Provide a better default pick() behaviour

The default pick() behaviour does not take into consideration the
children of a ClutterActor because the existing containter actors
usually override pick(), chain up, and then paint their children.

With ClutterActor now a concrete class, though, we need a way to pick
its children without requiring a sub-class; we could simply iterate over
the children inside the default pick() implementation, but this would
lead to double painting, which is not acceptable.

A moderately gross hack is to check if the Actor instance did override
the pick() implementation, and if it is not the case, paint the children
in pick mode.

12 years agoactor: Deprecate show_all()/hide_all()
Emmanuele Bassi [Tue, 17 Jan 2012 16:11:29 +0000 (16:11 +0000)]
actor: Deprecate show_all()/hide_all()

The hide_all() method is pretty much pointless, as hiding an actor will
automatically prevent its children from being painted. The show_all()
method would only be marginally useful, if actors weren't set to be
visible by default when added to another actor - which was the case when
we introduced show_all() and hide_all().

12 years agoUpdated Spanish translation
Daniel Mustieles [Tue, 17 Jan 2012 16:12:52 +0000 (17:12 +0100)]
Updated Spanish translation

12 years agoPost-release version bump to 1.9.5
Emmanuele Bassi [Tue, 17 Jan 2012 14:44:28 +0000 (14:44 +0000)]
Post-release version bump to 1.9.5

12 years agoRelease Clutter 1.9.4 (snapshot)
Emmanuele Bassi [Tue, 17 Jan 2012 14:32:19 +0000 (14:32 +0000)]
Release Clutter 1.9.4 (snapshot)

12 years agotext: Fix the buffer length check on paint
Emmanuele Bassi [Tue, 17 Jan 2012 14:21:02 +0000 (14:21 +0000)]
text: Fix the buffer length check on paint

12 years agoscript: Fix a segfault
Emmanuele Bassi [Tue, 17 Jan 2012 14:17:20 +0000 (14:17 +0000)]
script: Fix a segfault

Accessing a variable before it is being set is not a great plan.

12 years agotext-buffer: Fix the Since annotations
Emmanuele Bassi [Tue, 17 Jan 2012 12:23:28 +0000 (12:23 +0000)]
text-buffer: Fix the Since annotations

12 years agoUpdate the NEWS file
Emmanuele Bassi [Tue, 17 Jan 2012 12:19:35 +0000 (12:19 +0000)]
Update the NEWS file

12 years agoAdd ClutterTextBuffer to the API reference
Emmanuele Bassi [Tue, 17 Jan 2012 12:00:54 +0000 (12:00 +0000)]
Add ClutterTextBuffer to the API reference

12 years agoUpdate clutter.symbols for TextBuffer
Emmanuele Bassi [Tue, 17 Jan 2012 11:56:23 +0000 (11:56 +0000)]
Update clutter.symbols for TextBuffer

12 years agointeractive/text: Remove spurious g_object_unref()
Emmanuele Bassi [Tue, 17 Jan 2012 11:52:37 +0000 (11:52 +0000)]
interactive/text: Remove spurious g_object_unref()

12 years agotext: Implement ClutterTextBuffer
Stef Walter [Wed, 15 Jun 2011 09:06:31 +0000 (10:06 +0100)]
text: Implement ClutterTextBuffer

 * Abstracts the buffer for text in ClutterText
 * Allows implementation of undo/redo.
 * Allows use of non-pageable memory for text
   in the case of sensitive passwords.
 * Implement a test with two ClutterText using the same
   buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=652653

12 years agoUpdated Spanish translation
Daniel Mustieles [Tue, 17 Jan 2012 11:52:01 +0000 (12:52 +0100)]
Updated Spanish translation

12 years agoUpdate clutter.symbols
Emmanuele Bassi [Tue, 17 Jan 2012 11:49:05 +0000 (11:49 +0000)]
Update clutter.symbols

12 years agoUpdated Galician translations
Fran Diéguez [Tue, 17 Jan 2012 00:44:53 +0000 (01:44 +0100)]
Updated Galician translations

12 years agoUpdated POTFILES.in
Piotr Drąg [Tue, 17 Jan 2012 00:29:26 +0000 (01:29 +0100)]
Updated POTFILES.in

12 years agoFix compiler warnings
Emmanuele Bassi [Mon, 16 Jan 2012 23:49:49 +0000 (23:49 +0000)]
Fix compiler warnings

When dereferencing GArray.data to a C structure you need a double cast
from guint8* to void*, and then from void* to the actual type. This
avoids compiler warnings, especially when using clang on OSX.

12 years agodocs: Move deprecated sections to the proper location
Emmanuele Bassi [Tue, 3 Jan 2012 14:51:37 +0000 (14:51 +0000)]
docs: Move deprecated sections to the proper location

12 years agoactor: Deprecated push/pop internal methods
Emmanuele Bassi [Tue, 3 Jan 2012 14:36:32 +0000 (14:36 +0000)]
actor: Deprecated push/pop internal methods

The concept of "internal child" only meant anything when we had a
separate API for containers and actors. Now that we plugged that
particular hole, we can drop all the hacks we used to have in place
to work around its design limitations.

12 years agodocs: Fixes for the API reference
Emmanuele Bassi [Tue, 3 Jan 2012 14:31:06 +0000 (14:31 +0000)]
docs: Fixes for the API reference

12 years agoactor: Add boxed margin accessors
Emmanuele Bassi [Tue, 3 Jan 2012 14:29:39 +0000 (14:29 +0000)]
actor: Add boxed margin accessors

It can be convenient to be able to set, or get, all the components of an
actor's margin at the same time; since we already have a boxed type for
storing a margin, an accessors pair based on it is not a complicated
addition to the API.

12 years agodocs: Update the release notes
Emmanuele Bassi [Wed, 28 Dec 2011 18:37:16 +0000 (18:37 +0000)]
docs: Update the release notes

12 years agobuild: Add inclusion guards and license notices
Emmanuele Bassi [Wed, 28 Dec 2011 18:32:00 +0000 (18:32 +0000)]
build: Add inclusion guards and license notices

12 years agoactor: Use proper internal API
Emmanuele Bassi [Tue, 27 Dec 2011 19:28:47 +0000 (19:28 +0000)]
actor: Use proper internal API

Inside the set_child_[above|below]_sibling() and set_child_at_index() we
should be using the internal API for mutating the children list, instead
of the delegate functions. This ensures that we go through a single,
well-defined code path for all operations on the list of children of
an actor.

12 years agoDeprecate the old raise/lower API
Emmanuele Bassi [Tue, 27 Dec 2011 18:57:32 +0000 (18:57 +0000)]
Deprecate the old raise/lower API

We have a replacement in ClutterActor, now.

The old ClutterContainer API needs to be deprecated, and the raise() and
lower() virtual functions need a default implementation, so we can check
for implementations overriding them, by using the diagnostic mode like
we do for add(), remove(), and foreach().

The sort_depth_order() virtual function just doesn't do anything, as it
should have been made ages ago.

The Actor wrappers for the Container methods also need to be deprecated.

12 years agoactor: Add new methods for changing the paint sequence
Emmanuele Bassi [Tue, 27 Dec 2011 18:22:05 +0000 (18:22 +0000)]
actor: Add new methods for changing the paint sequence

ClutterActor provides four methods for changing the paint sequence order
of its children:

  raise_top()
  raise()
  lower()
  lower_bottom()

The first and last one being just wrappers around raise() and lower(),
respectively. These methods have various issues: they omit the parent,
preferring to retrieve it from the actor passed as the first argument;
this does not match the new style of API introduced to operate on the
list of children of an actor.

Additionally, the raise() and lower() methods of ClutterActor call into
the Container interface, and are not really aptly named (raise() in
particular collides with the completely unrelated 'raise' keyword in
Python, and usually needs to be wrapped in order to be used at all).

Furthermore, we need public methods that Container can call from its
default implementation, as well as methods to port current Container
implementations.

Finally, since we have insert_child_at_index(), we should also have an
equivalent set_child_at_index() as well.

12 years agoactor: Use flags to control add/remove child
Emmanuele Bassi [Tue, 27 Dec 2011 11:28:36 +0000 (11:28 +0000)]
actor: Use flags to control add/remove child

The internal versions of add_child() and remove_child() currently use
boolean arguments to control things like the ChildMeta instances and
the emissions of signals; using more than one boolean argument is an
indication that you need flags to avoid readability issues, as well as
providing a way to add new behaviours without a combinatorial explosion
of arguments, later on.

12 years agoactor: Remove automagic "expand" flag
Emmanuele Bassi [Wed, 21 Dec 2011 17:07:25 +0000 (17:07 +0000)]
actor: Remove automagic "expand" flag

I don't feel comfortable with this feature, and its implementation
still has too many rough edges. We can safely punt it for now, and
introduce it at a later point, as it doesn't block existing features
or API.

12 years agotable-layout: Override compute_expand()
Emmanuele Bassi [Tue, 20 Dec 2011 18:42:53 +0000 (18:42 +0000)]
table-layout: Override compute_expand()

The TableLayout has two expansion flags that need to be taken into
consideration when computing the Actor expansion flags.

12 years agobox-layout: Override compute_expand()
Emmanuele Bassi [Tue, 20 Dec 2011 18:41:51 +0000 (18:41 +0000)]
box-layout: Override compute_expand()

ClutterBoxLayout has an expansion flag, and we need to take that into
consideration when computing the Actor expansion flags.

12 years agoactor: Ask the LayoutManager to compute the expansion flags
Emmanuele Bassi [Tue, 20 Dec 2011 18:40:11 +0000 (18:40 +0000)]
actor: Ask the LayoutManager to compute the expansion flags

If an actor has a layout manager, we want to involve the delegate object
into the lazy computation of the expansion flags state.

12 years agolayout-manager: Add compute_expand() vfunc
Emmanuele Bassi [Tue, 20 Dec 2011 18:38:47 +0000 (18:38 +0000)]
layout-manager: Add compute_expand() vfunc

This virtual function will let layout managers with legacy expansion
flags be able to influence the lazy computation of the expansion flags
on ClutterActor.

12 years agoactor: Paint the background color in the paint class handler
Emmanuele Bassi [Tue, 20 Dec 2011 17:05:48 +0000 (17:05 +0000)]
actor: Paint the background color in the paint class handler

We need to paint the background color in the default class handler for
two reasons: it's logically appropriate, and we don't want actor
subclasses overriding the ::paint class handler to change behaviour only
because somebody decided to set the background color.

12 years agodocs: Update the release notes
Emmanuele Bassi [Tue, 20 Dec 2011 15:59:15 +0000 (15:59 +0000)]
docs: Update the release notes

12 years agodocs: Clean up ClutterContainer's description
Emmanuele Bassi [Tue, 20 Dec 2011 15:49:20 +0000 (15:49 +0000)]
docs: Clean up ClutterContainer's description

The API to add/remove/iterate over children is in ClutterActor, now.

12 years agocontainer: Add diagnostic warnings for deprecated vfuncs
Emmanuele Bassi [Tue, 20 Dec 2011 15:21:06 +0000 (15:21 +0000)]
container: Add diagnostic warnings for deprecated vfuncs

The old add(), remove(), and foreach() virtual functions are deprecated;
ClutterContainer should warn if the public API detects that the vfuncs
have been overridden.

Strictly speaking, it's still legal to override those vfuncs: you can
chain up to the default vtable, or you could just provide an equivalent
implementation. The goal is to avoid having to override the Container
interface, until we can safely deprecate it and remove it in Clutter
2.0.

12 years agocontainer: Provide default implementation of vfuncs
Emmanuele Bassi [Tue, 20 Dec 2011 15:04:24 +0000 (15:04 +0000)]
container: Provide default implementation of vfuncs

Instead of making ClutterActor implement the basic add/remove/foreach
virtual functions of ClutterContainer, we can simply do that from
within the ClutterContainer implementation.

12 years agocontainer: Deprecate more methods
Emmanuele Bassi [Tue, 20 Dec 2011 14:58:08 +0000 (14:58 +0000)]
container: Deprecate more methods

The get_children(), foreach(), and foreach_with_internals() methods and
virtual functions are superceded by the Actor API, and should not be
used in newly written code.

12 years agogroup: Use Actor.remove_all_children()
Emmanuele Bassi [Tue, 20 Dec 2011 14:57:38 +0000 (14:57 +0000)]
group: Use Actor.remove_all_children()

To implement the remove_all() method.

12 years agocally: Use Actor.get_children()
Emmanuele Bassi [Tue, 20 Dec 2011 14:56:54 +0000 (14:56 +0000)]
cally: Use Actor.get_children()

Instead of the Container method, given that the new get_children() gives
us more actors by default.

12 years agotests/interactive: Add a simple test for Actor
Emmanuele Bassi [Tue, 20 Dec 2011 14:47:35 +0000 (14:47 +0000)]
tests/interactive: Add a simple test for Actor

It's meant to be xincluded in the API reference.

12 years agoactor: Add some debug spew
Emmanuele Bassi [Tue, 20 Dec 2011 14:47:04 +0000 (14:47 +0000)]
actor: Add some debug spew

12 years agodocs: Update the Actor API reference
Emmanuele Bassi [Tue, 20 Dec 2011 13:32:37 +0000 (13:32 +0000)]
docs: Update the Actor API reference

Given the size and scope of the changes in ClutterActor, we ought to
rewrite the overall description of what an actor is, what it does, and
how are you supposed to use it and subclass it.

12 years agoDeprecate Container add() and remove() methods
Emmanuele Bassi [Mon, 19 Dec 2011 18:48:02 +0000 (18:48 +0000)]
Deprecate Container add() and remove() methods

This will make things interesting.

We have better replacements in ClutterActor, that do The Right Thing™
instead of deferring control and requiring reimplementation in every
single container actor.

12 years agoactor: Add remove_all_children()
Emmanuele Bassi [Mon, 19 Dec 2011 18:01:04 +0000 (18:01 +0000)]
actor: Add remove_all_children()

A simple method for removing all children of an actor in one fell swoop.

12 years agodocs: Clarify the Actor's iterator API behaviour
Emmanuele Bassi [Mon, 19 Dec 2011 17:34:22 +0000 (17:34 +0000)]
docs: Clarify the Actor's iterator API behaviour

It should be noted in the documentation that it is not safe to operate
on the list of children of an Actor while iterating over it.

12 years agoactor: Provide a proper implementation of replace_child()
Emmanuele Bassi [Mon, 19 Dec 2011 14:37:42 +0000 (14:37 +0000)]
actor: Provide a proper implementation of replace_child()

The correct sequence of actions should be remove(old) → insert(new), not
insert(new) → remove(old). We can implement a simple delegate insertion
functions to insert the new child between the previous and next siblings
of the old child.

While we're at it, let's also add a unit test for replace_child().

12 years agoactor: Fix get_paint_volume() default implementation
Emmanuele Bassi [Mon, 19 Dec 2011 12:13:23 +0000 (12:13 +0000)]
actor: Fix get_paint_volume() default implementation

Providing a default get_paint_volume() that takes into account the
children of an actor was a goal of the whole First Apocalypse; if we
make all the containers rely on it, and yet we return a FALSE value
(meaning: we don't have a valid paint volume) even when we do have it,
then we are going to break the whole machinery, though.

12 years agostage: Use the Actor iteration API
Emmanuele Bassi [Mon, 19 Dec 2011 12:04:03 +0000 (12:04 +0000)]
stage: Use the Actor iteration API

12 years agoRemove usage of Actor/Container.get_children()
Emmanuele Bassi [Mon, 19 Dec 2011 11:53:48 +0000 (11:53 +0000)]
Remove usage of Actor/Container.get_children()

ClutterBox and ClutterGroup are still using the get_children() method
instead of the child iteration API.

12 years agoactor: Simplify first/last child updates
Emmanuele Bassi [Mon, 19 Dec 2011 07:20:20 +0000 (07:20 +0000)]
actor: Simplify first/last child updates

12 years agoDrop some more ClutterContainer.get_children() uses
Emmanuele Bassi [Sun, 18 Dec 2011 22:35:45 +0000 (22:35 +0000)]
Drop some more ClutterContainer.get_children() uses

12 years agofixed-layout: Use the Actor iteration API
Emmanuele Bassi [Sun, 18 Dec 2011 22:34:51 +0000 (22:34 +0000)]
fixed-layout: Use the Actor iteration API

Forgot to migrate the FixedLayout layout manager like we did for the
other layout managers provided by Clutter.

12 years agocally: Use the Actor API instead of ClutterContainer
Emmanuele Bassi [Sun, 18 Dec 2011 22:33:24 +0000 (22:33 +0000)]
cally: Use the Actor API instead of ClutterContainer

Cally is doing a bunch of list traversals through the list returned by
ClutterContainer.get_children(); this means a traversal already, plus
a bunch of allocations. We can do better than that, now that we have
a proper graph iteration API inside ClutterActor.

12 years agoactor: Add replace_child() method
Emmanuele Bassi [Sun, 18 Dec 2011 22:14:36 +0000 (22:14 +0000)]
actor: Add replace_child() method

A simple method that atomically replaces a child actor with another one.

12 years agoactor: Deprecate the old parent modifiers
Emmanuele Bassi [Sun, 18 Dec 2011 21:18:27 +0000 (21:18 +0000)]
actor: Deprecate the old parent modifiers

The old API should not be used in newly written code; we have better
methods for setting up and modifying the scene graph, now.

12 years agoconform/actor-graph: Add lower/raise units
Emmanuele Bassi [Sun, 18 Dec 2011 21:09:44 +0000 (21:09 +0000)]
conform/actor-graph: Add lower/raise units

Check that the lower_bottom(), lower(), raise(), and raise_top()
methods work as intended.

12 years agoconform: Add a suite for the Actor scene graph API
Emmanuele Bassi [Sun, 18 Dec 2011 20:59:07 +0000 (20:59 +0000)]
conform: Add a suite for the Actor scene graph API

Verify that insertion and removal maintain a stable graph, with pointers
to the various children. This should help out tracking regressions in
the scene graph API.

12 years agoactor: Fix child insertion issues
Emmanuele Bassi [Sun, 18 Dec 2011 20:57:02 +0000 (20:57 +0000)]
actor: Fix child insertion issues

The insert_child_at_index, insert_below and insert_above messed up the
first and last child pointers in various cases. This commit fixes all
the instances of first and last child pointers being stale or set to
NULL.

12 years agoPort remaining layout managers to the new child iteration API
Emmanuele Bassi [Sun, 18 Dec 2011 11:26:29 +0000 (11:26 +0000)]
Port remaining layout managers to the new child iteration API

TableLayout and FlowLayout now use the ClutterActor API for iterating
over the children of an actor.

12 years agoBegin porting layout managers to the new child iteration API
Emmanuele Bassi [Sun, 18 Dec 2011 10:29:01 +0000 (10:29 +0000)]
Begin porting layout managers to the new child iteration API

Instead of getting the list of children to iterate over it, let's use
the newly added child iteration API; this should save us a bunch of
allocations, as well as indirections.

Ported: ClutterBinLayout and ClutterBoxLayout.

12 years agoactor: Add children iteration methods
Emmanuele Bassi [Sun, 18 Dec 2011 10:26:35 +0000 (10:26 +0000)]
actor: Add children iteration methods

Instead of requiring every consumer of the ClutterActor API that wishes
to iterate over the children of an actor to use the get_children()
method, we should provide an iteration API directly inside ClutterActor
itself.

12 years agoactor: Define the scene structure inside Actor
Emmanuele Bassi [Fri, 16 Dec 2011 18:41:38 +0000 (18:41 +0000)]
actor: Define the scene structure inside Actor

Instead of storing the list of children, let's turn Actor inside a
proper node of a tree.

This change adds the following members to the Actor private data
structure:

  first_child
  last_child
  prev_sibling
  next_sibling

and removes the "children" GList from it; iteration is performed through
the direct pointers to the siblings and children.

This change makes removal, insertion before a sibling, and insertion
after a sibling constant time operations, but it still retains the
feature of ClutterActor.add_child() to build the list of children while
taking into account the depth set on the newly added child, to allow the
default painter's algorithm we employ inside the paint() implementation
to at least try and cope with the :depth property (albeit in a fairly
naïve way). Changes in the :depth property will not change the paint
sequence any more: this functionality will be restored later.

12 years agoactor: Use a cairo_rectangle_t instead of a ridiculous array
Emmanuele Bassi [Mon, 12 Dec 2011 11:57:45 +0000 (11:57 +0000)]
actor: Use a cairo_rectangle_t instead of a ridiculous array

Make the code maintainable and readable.

12 years agoactor: Document fields of ClutterActorPrivate
Emmanuele Bassi [Fri, 9 Dec 2011 17:17:21 +0000 (17:17 +0000)]
actor: Document fields of ClutterActorPrivate

The private data structure members could do with more comments
documenting what they do.

12 years agoactor: Add TransformInfo
Emmanuele Bassi [Fri, 9 Dec 2011 14:38:25 +0000 (14:38 +0000)]
actor: Add TransformInfo

ClutterTransformInfo is a (private) ancillary data structure that
contains all the decomposed transformation data, i.e. rotation angles
and centers, scale factors and centers, and anchor point. This data
structure is stored in the GData of the actor instance instead of the
actor's private data. This change gives us:

  • a smaller, cleaner private data structure;
  • no size penalty for untransformed actors;
  • static constant storage for the defaults, shared across all
    instances;
  • cache locality for all the decomposed transformation data,
    given that the structure size is smaller.

At the end of the day, the only authoritative piece of information for
actor transformation is the CoglMatrix that we initialize in
apply_transform() from all the decomposed parameters, and that can stay
inside the private data structure of ClutterActor.

12 years agodocs: Update the release notes
Emmanuele Bassi [Thu, 8 Dec 2011 14:33:06 +0000 (14:33 +0000)]
docs: Update the release notes

12 years agoactor: Tweak the underallocation warning
Emmanuele Bassi [Thu, 8 Dec 2011 10:01:53 +0000 (10:01 +0000)]
actor: Tweak the underallocation warning

There are only two kinds of actors that allow underallocations,
according to the API contract:

  • ClutterStage, as it is a viewport and it doesn't have an implicit
    minimum size;

  • Actors using the CLUTTER_ACTOR_NO_LAYOUT escape hatch, which allows
    them to bail out from our layout management policies.

The warning about underallocations should take these two exceptions
under consideration.

12 years agoDeprecate ClutterRectangle
Emmanuele Bassi [Tue, 6 Dec 2011 17:49:27 +0000 (17:49 +0000)]
Deprecate ClutterRectangle

A ClutterActor with a background color set covers 99% of the use cases
for a Rectangle.

12 years agoDeprecate ClutterGroup
Emmanuele Bassi [Tue, 6 Dec 2011 17:33:44 +0000 (17:33 +0000)]
Deprecate ClutterGroup

The Group functionality is now provided by ClutterActor.

Sadly, we need to keep the ClutterGroup structure definition in the
non-deprecated header because ClutterStage inherits from Group - an API
wart that was never fixed during the 0.x cycles, and that we'll have to
keep around until we can break API.

12 years agoDeprecate ClutterBox
Emmanuele Bassi [Tue, 6 Dec 2011 17:18:23 +0000 (17:18 +0000)]
Deprecate ClutterBox

ClutterBox functionality has been implemented by ClutterActor, and
proxied by the Box subclass; with the removal of the abstract bit on
ClutterActor, we can safely deprecated ClutterBox.

12 years agocally: Do not use Group API
Emmanuele Bassi [Tue, 6 Dec 2011 17:44:04 +0000 (17:44 +0000)]
cally: Do not use Group API

Avoids a deprecation warning.

12 years agoactor: Make Actor instantiatable
Emmanuele Bassi [Tue, 6 Dec 2011 16:09:53 +0000 (16:09 +0000)]
actor: Make Actor instantiatable

ClutterActor now has all the API and capabilities for being a concrete
class:

  - layout management, through delegation
  - container implementation and API
  - background color

This means that a simple scene can be built straight out of actors
without using subclasses except for the Stage.

This is the first step towards the deprecation of most of the Actor
subclasses provided by Clutter.

12 years agogroup: Proxy last few methods to Actor
Emmanuele Bassi [Tue, 6 Dec 2011 16:00:49 +0000 (16:00 +0000)]
group: Proxy last few methods to Actor

At this point, ClutterGroup is basically just a shim layer on top of
ClutterActor.

12 years agoactor: Provide more children methods
Emmanuele Bassi [Tue, 6 Dec 2011 16:00:08 +0000 (16:00 +0000)]
actor: Provide more children methods

Add a getter for the number of children, as well as a method to retrieve
the child at a given index.

12 years agogroup: Use the default get_paint_volume()
Emmanuele Bassi [Mon, 5 Dec 2011 13:08:41 +0000 (13:08 +0000)]
group: Use the default get_paint_volume()

ClutterActor does everything we did, and more.

12 years agoactor: Provide a better get_paint_volume() implementation
Emmanuele Bassi [Mon, 5 Dec 2011 12:45:08 +0000 (12:45 +0000)]
actor: Provide a better get_paint_volume() implementation

ClutterActor can do better by default than just giving up immediately.

An actor can check for the clip region, and for its children's paint
volume, for instance.

Just these two should give us a better default implementation for newly
written code.

12 years agoflow-layout: Fix minimum size request
Emmanuele Bassi [Mon, 5 Dec 2011 10:25:42 +0000 (10:25 +0000)]
flow-layout: Fix minimum size request

The minimum preferred size of a Flow layout manager is the size of a
column or a row, as the whole point of the layout policy enforced by
the Flow layout manager is to reflow when needed.

12 years agobox: Proxy the Actor's background color properties
Emmanuele Bassi [Mon, 5 Dec 2011 10:19:45 +0000 (10:19 +0000)]
box: Proxy the Actor's background color properties

ClutterBox's color and color-set properties can be implemented as
proxies for the ClutterActor's newly added background-color and
background-color-set properties, respectively.

This also allows us to get rid of the paint() implementation inside
ClutterBox altogether.

12 years agoactor: Background color
Emmanuele Bassi [Mon, 5 Dec 2011 08:41:51 +0000 (08:41 +0000)]
actor: Background color

Each actor should have a background color property, disabled by default.

This property allows us to cover 99% of the use cases for
ClutterRectangle, and brings us one step closer to being able to
instantiate ClutterActor directly.

12 years agoactor: Cosmetic fixes to internal add/remove child
Emmanuele Bassi [Fri, 2 Dec 2011 16:16:26 +0000 (16:16 +0000)]
actor: Cosmetic fixes to internal add/remove child

Avoid code duplication all over the place.

12 years agoconform/layout: Remove last Container.add_actor() usage
Emmanuele Bassi [Fri, 2 Dec 2011 15:38:25 +0000 (15:38 +0000)]
conform/layout: Remove last Container.add_actor() usage

Use clutter_actor_add_child(), now that Stage falls back to the default
implementation of Container provided by the Actor class.

12 years agogroup: Use the default paint() implementation
Emmanuele Bassi [Fri, 2 Dec 2011 15:36:58 +0000 (15:36 +0000)]
group: Use the default paint() implementation

ClutterActor's paint implementation is perfectly fine for ClutterGroup:
it paints the actor's children, which is exactly what ClutteGroup does.

12 years agoactor: Minor cosmetic fixes to the header
Emmanuele Bassi [Fri, 2 Dec 2011 14:41:55 +0000 (14:41 +0000)]
actor: Minor cosmetic fixes to the header

12 years agogroup: Do not override Container
Emmanuele Bassi [Fri, 2 Dec 2011 12:12:40 +0000 (12:12 +0000)]
group: Do not override Container

Let ClutterActor do all the work.

12 years agoactor: Make Actor.add_child and Container.add_actor idempotent
Emmanuele Bassi [Fri, 2 Dec 2011 11:51:15 +0000 (11:51 +0000)]
actor: Make Actor.add_child and Container.add_actor idempotent

And make sure that overriding Container and calling
clutter_actor_add_child() will result in the same sequence of operations
as the current set_parent()+queue_relayout()+signal_emit pattern.

Existing containers can continue using:

        clutter_actor_set_parent (child, CLUTTER_ACTOR (container));
        clutter_actor_queue_relayout (CLUTTER_ACTOR (container));
        g_signal_emit_by_name (container, "actor-added", child);

and newly written containers overriding Container.add() can simply call:

        clutter_actor_add_child (CLUTTER_ACTOR (container), child);

instead.

12 years agoactor: Do not leak the layout manager
Emmanuele Bassi [Tue, 29 Nov 2011 18:10:57 +0000 (18:10 +0000)]
actor: Do not leak the layout manager

12 years agobox: Drop Container interface overrides
Emmanuele Bassi [Tue, 29 Nov 2011 18:03:05 +0000 (18:03 +0000)]
box: Drop Container interface overrides

And defer as much as possible to ClutterActor's default implementation
for basically everything.

12 years agoactor: Implement Container::sort_depth_order
Emmanuele Bassi [Tue, 29 Nov 2011 18:02:20 +0000 (18:02 +0000)]
actor: Implement Container::sort_depth_order

There's no reason this vfunc should be left out.

12 years agoactor: Add child insertion methods
Emmanuele Bassi [Tue, 29 Nov 2011 17:41:33 +0000 (17:41 +0000)]
actor: Add child insertion methods

We should allow inserting children at given indices, and at given
stacking positions (relative or not to other children).

12 years agoconform: Begin a test suite for layout options
Emmanuele Bassi [Mon, 28 Nov 2011 17:42:49 +0000 (17:42 +0000)]
conform: Begin a test suite for layout options

A simple sampling check to validate that we're painting the right thing
at the right place.

12 years agoactor: Adjust the preferred size too
Emmanuele Bassi [Mon, 28 Nov 2011 15:30:52 +0000 (15:30 +0000)]
actor: Adjust the preferred size too

Don't adjust just the allocation: we need to adjust the preferred size
of the actor to account for the margin.

12 years agoactor: Maintain invariants in add_child/remove_child
Emmanuele Bassi [Fri, 25 Nov 2011 10:27:01 +0000 (10:27 +0000)]
actor: Maintain invariants in add_child/remove_child

We need to queue a relayout when removing a visible child from a visible
parent.

We also need to insert the child at the right position (depending on the
depth) so that newly added actors will be painted on top.

12 years agoactor: More cleanups to the Private data structure
Emmanuele Bassi [Thu, 24 Nov 2011 14:34:18 +0000 (14:34 +0000)]
actor: More cleanups to the Private data structure

Try to document it properly. We can also remove some things that are
properly encapsulated through functions, like the redraw clip volume.

12 years agoactor: Store the fixed sizes into LayoutInfo
Emmanuele Bassi [Thu, 24 Nov 2011 14:13:29 +0000 (14:13 +0000)]
actor: Store the fixed sizes into LayoutInfo

Remove four more floats from ClutterActorPrivate.

The fixed minimum and natural sizes should be stored inside the
ClutterLayoutInfo structure, along with the fixed position.

12 years agoactor: Update the underallocations check
Emmanuele Bassi [Thu, 24 Nov 2011 14:11:00 +0000 (14:11 +0000)]
actor: Update the underallocations check

Add a failsafe against a NULL parent, to avoid a segfault when calling
clutter_actor_allocate() on the Stage.

We also need to deal with floating point values: straight comparison is
not going to cut it.

12 years agoactor: Adjust the allocation prior to call allocate()
Emmanuele Bassi [Wed, 23 Nov 2011 18:16:29 +0000 (18:16 +0000)]
actor: Adjust the allocation prior to call allocate()

ClutterActor has various properties controlling the allocation:

  - x-align, y-align
  - margin-top, margin-bottom, margin-left, margin-right

These properties should adjust the ClutterActorBox passed from the
parent actor to its children when calling clutter_actor_allocate(),
so that the child can just allocate its children at the right origin
with the right available size.

12 years agoactor: Clean up property installation
Emmanuele Bassi [Tue, 22 Nov 2011 17:03:00 +0000 (17:03 +0000)]
actor: Clean up property installation