Commit Graph

232 Commits

Author SHA1 Message Date
Emmanuele Bassi
f777bc629a [docs] Document the newly added functions
Document the ClutterBackend font name accessors, and the
clutter_actor_get_pango_context() getter method.
2008-12-23 16:59:14 +00:00
Emmanuele Bassi
213d8f0e4e Store the PangoContext inside the main context
The PangoContext should be stored once, and inside the main
Clutter context. Each actor for which clutter_actor_get_pango_context()
has been called will hold a reference on the Pango context as well.

This makes it possible to update the text rendering for Clutter
by using only public API.
2008-12-23 14:27:41 +00:00
Emmanuele Bassi
61d47ee301 Do not leak the PangoContext
We hold a reference on the PangoContext we use for an actor, so
we should remove the reference inside the dispose implementation.
2008-12-23 14:15:10 +00:00
Emmanuele Bassi
78628edf2f Add a per-actor PangoContext
Rendering text inside an actor is pretty much impossible without
using internal API to create the various pieces like the PangoContext
and the font map.

Each actor should have the ability to create a PangoContext, which
is the only object needed to generate layouts and change the various
Pango settings.

This commit adds a clutter_actor_get_pango_context() function that
creates a PangoContext inside the ClutterActor private data and allows
the creation of PangoLayouts when needed. If the actor already
has a PangoContext, the same instance is returned.

The PangoContext is created only on demand.
2008-12-23 14:06:55 +00:00
Emmanuele Bassi
430d1cf347 Add Actor::grab_key_focus() method
Bug 1003 - Add clutter_actor_take_key_focus()

The grab_key_focus() method is just a simple wrapper around
clutter_stage_take_key_focus() that removes the need to get
the ClutterStage of an actor in order to set the key focus.

Based on a patch by Xan López.

Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
Signed-off-by: Øyvind Kolås <pippin@linux.intel.com>
2008-12-11 11:22:46 +00:00
Emmanuele Bassi
bc6a107ff6 Do not modify parameters in place
When the apply_transform_to_point() and its relative variant
landed in Clutter 0.3, the initial approach was to modify the
passed vertex as an in-out parameter. This was later dropped
in favour of a more consistent out parameter.

Unfortunately, the implementation never changed: both methods
where modifying the passed vertex with the partial results of
the computations.

This commit copies the contents of the "point" ClutterVertex
argument inside a stack variable and, for good measure, constifies
the argument.

Thanks to Thomas Steinacher for catching this in Python.
2008-12-10 23:00:48 +00:00
Neil Roberts
74ba6fd8c4 * clutter/clutter-timeline.c:
* clutter/clutter-texture.c:
	* clutter/clutter-stage.c:
	* clutter/clutter-label.c:
	* clutter/clutter-behaviour-path.c:
	* clutter/clutter-actor.c: Fix the 'Since' annotation in the
	gtk-doc.
2008-12-05 14:08:06 +00:00
Emmanuele Bassi
47150304cd 2008-11-20 Emmanuele Bassi <ebassi@linux.intel.com>
* clutter/clutter-actor.c:
	(clutter_actor_set_property): Add sanity checks for NULL
	boxed values when setting the rotation center.

	* tests/interactive/test-animation.c:
	(on_button_press): Add an example on how to use the rotation
	properties to animate an actor.
2008-11-20 10:52:09 +00:00
Emmanuele Bassi
af0cb47570 2008-11-18 Emmanuele Bassi <ebassi@linux.intel.com>
Bug 1049 - Clutter doesn't support most GLSL uniforms (patch
	by Chris Lord and Neil Roberts)

	* README: Update release notes.

	* clutter/Makefile.am:
	* clutter/clutter-shader-types.[ch]: Add GValue types for
	shader values.

	* clutter/clutter-actor.[ch]: Update the shader API to use
	the newly added GValue support for GLSL shader uniform
	setters.

	* clutter/clutter-shader.[ch]: Add float and integer convenience
	API for single value GLSL uniform setters.

	* clutter/cogl/cogl-shader.h: Add new uniform setters.

	* clutter/cogl/gl/cogl-context.c:
	* clutter/cogl/gl/cogl-context.h:
	* clutter/cogl/gl/cogl-defines.h.in:
	* clutter/cogl/gl/cogl-program.c:
	* clutter/cogl/gl/cogl.c: Update the GL implementation of COGL
	to handle the GLSL uniform setters.

	* clutter/cogl/gles/cogl-gles2-wrapper.c:
	* clutter/cogl/gles/cogl-gles2-wrapper.h:
	* clutter/cogl/gles/cogl-internal.h:
	* clutter/cogl/gles/cogl-program.c: Update the GLES 2.0 implementation
	of COGL to handle the GLSL uniform setters.

	* doc/reference/clutter/clutter-sections.txt:
	* doc/reference/cogl/cogl-sections.txt: Update the documentation.

	* tests/interactive/test-fbo.c:
	* tests/interactive/test-shader.c: Update the shader tests.
2008-11-18 15:08:40 +00:00
Neil Roberts
d510a4b0cd * clutter/clutter-actor.c (clutter_actor_get_paint_visibility):
Fix logic so that it won't return TRUE for a hidden stage.
2008-11-13 11:37:35 +00:00
Neil Roberts
eb9799098b * clutter/clutter-actor.c (clutter_actor_get_reactive)
(clutter_actor_get_paint_visibility): Be sure to return exactly
	TRUE or FALSE instead of zero or some non-zero value in these
	functions that return a gboolean. Thanks to Kai Wei for spotting.
2008-11-13 10:33:56 +00:00
Emmanuele Bassi
c823bf9c83 2008-11-12 Emmanuele Bassi <ebassi@linux.intel.com>
* clutter/cogl/cogl-color.h:
	* clutter/cogl/cogl-path.h:
	* clutter/cogl/cogl-types.h:
	* clutter/cogl/common/cogl-color.c: Deprecated cogl_color()
	in favour of cogl_set_source_color() and friends; store the
	CoglColor components as unsigned bytes instead of fixed point
	normalized values; add functions for allocating, copying and
	freeing CoglColor, for use of language bindings.

	* clutter/cogl/cogl.h.in:
	* clutter/cogl/cogl-deprecated.h: Added cogl-deprecated.h,
	an header file containing the deprecation symbols similar
	to clutter-deprecated.h.

	* clutter/cogl/gl/Makefile.am:
	* clutter/cogl/gl/cogl-texture.c:
	* clutter/cogl/gl/cogl.c:
	* clutter/cogl/gles/Makefile.am:
	* clutter/cogl/gles/cogl-texture.c:
	* clutter/cogl/gles/cogl.c: Update the GL and GLES implementations
	of COGL after the CoglColor changes.

	* clutter/clutter-actor.c:
	* clutter/clutter-clone-texture.c:
	* clutter/clutter-entry.c:
	* clutter/clutter-label.c:
	* clutter/clutter-rectangle.c:
	* clutter/clutter-texture.c: Do not use CoglColor whenever it
	is possible, and use cogl_set_source_color4ub() instead.

	* clutter/pango/cogl-pango-render.c: Ditto as above.

	* doc/reference/clutter/subclassing-ClutterActor.xml:
	* doc/reference/cogl/cogl-sections.txt: Update the documentation.

	* tests/interactive/test-cogl-offscreen.c:
	* tests/interactive/test-cogl-primitives.c:
	* tests/interactive/test-cogl-tex-convert.c:
	* tests/interactive/test-cogl-tex-foreign.c:
	* tests/interactive/test-cogl-tex-getset.c:
	* tests/interactive/test-cogl-tex-polygon.c:
	* tests/interactive/test-cogl-tex-tile.c:
	* tests/interactive/test-paint-wrapper.c: Drop the usage of
	CoglColor whenever it is possible.
2008-11-12 13:57:58 +00:00
Matthew Allum
c7c5cf9bd4 2008-11-07 Matthew Allum <mallum@linux.intel.com>
* clutter/clutter-actor.c:
        * clutter/clutter-actor.h:
        * clutter/clutter-clone-texture.c:
        * clutter/clutter-private.h:
        * clutter/clutter-texture.c:
        * clutter/x11/clutter-x11-texture-pixmap.c:

        Attempt to lower overhead of updating TFP's (particularly mipmaped).
        Compresses mipmap updates only for visible TFPs.
        Avoiding updates for non visible TFP's whilst keeping visible
        clones working ok.
2008-11-07 16:31:56 +00:00
Emmanuele Bassi
a547cdbc4d 2008-10-30 Emmanuele Bassi <ebassi@linux.intel.com>
Bug 1210 - Add CoglColor API

	* clutter/cogl/cogl-color.h:
	* clutter/cogl/cogl.h.in:
	* clutter/cogl/common/Makefile.am:
	* clutter/cogl/common/cogl-color.c:
	* clutter/cogl/gl/Makefile.am:
	* clutter/cogl/gl/cogl.c:
	* clutter/cogl/gles/Makefile.am:
	* clutter/cogl/gles/cogl-texture.c:
	* clutter/cogl/gles/cogl.c: Add a new color-type, to be used by
	COGL. CoglColor is optimized to allow the minimum amount of
	conversions possible for both GL and GLES implementations.

	* clutter/clutter-actor.c:
	* clutter/clutter-clone-texture.c:
	* clutter/clutter-entry.c:
	* clutter/clutter-main.c:
	* clutter/clutter-rectangle.c:
	* clutter/clutter-stage.c:
	* clutter/clutter-texture.c: Use CoglColor when needed.

	* clutter/pango/pangoclutter-render.c: Use CoglColor when needed.

	* doc/reference/cogl/cogl-docs.sgml:
	* doc/reference/cogl/cogl-sections.txt: Update the documentation.

	* tests/test-cogl-offscreen.c:
	* tests/test-cogl-primitives.c:
	* tests/test-cogl-tex-convert.c:
	* tests/test-cogl-tex-foreign.c:
	* tests/test-cogl-tex-getset.c:
	* tests/test-cogl-tex-polygon.c:
	* tests/test-cogl-tex-tile.c:
	* tests/test-paint-wrapper.c: Update the tests.

	* README: Update release notes.
2008-10-30 16:50:07 +00:00
Emmanuele Bassi
911b395c8a 2008-10-30 Emmanuele Bassi <ebassi@linux.intel.com>
Bug 1209 - Move fixed point API in COGL

	* clutter/cogl/cogl-fixed.h:
	* clutter/cogl/cogl.h.in:
	* clutter/cogl/common/Makefile.am:
	* clutter/cogl/common/cogl-fixed.c: Add fixed point API, modelled
	after the ClutterFixed. The CoglFixed API supercedes the ClutterFixed
	one and avoids the dependency of COGL on Clutter's own API.

	* clutter/cogl/common/cogl-clip-stack.c:
	* clutter/cogl/common/cogl-primitives.c:
	* clutter/cogl/common/cogl-primitives.h: Update internal usage of
	ClutterFixed to CoglFixed.

	* clutter/cogl/gl/Makefile.am:
	* clutter/cogl/gl/cogl-primitives.c:
	* clutter/cogl/gl/cogl-texture.c:
	* clutter/cogl/gl/cogl.c: Ditto, in the GL implementation of the
	COGL API.

	* clutter/cogl/gles/Makefile.am:
	* clutter/cogl/gles/cogl-fbo.c:
	* clutter/cogl/gles/cogl-gles2-wrapper.c:
	* clutter/cogl/gles/cogl-primitives.c:
	* clutter/cogl/gles/cogl-texture.c:
	* clutter/cogl/gles/cogl.c: Ditto, in the GLES implementation of
	the COGL API.

	* clutter/pango/pangoclutter-glyph-cache.c:
	* clutter/pango/pangoclutter-glyph-cache.h: Ditto, in the Pango
	renderer glyphs cache.

	* clutter/clutter-fixed.c:
	* clutter/clutter-fixed.h: ClutterFixed and related API becomes
	a simple transition API for bindings and public Clutter API.

	* clutter/clutter-actor.c:
	* clutter/clutter-alpha.c:
	* clutter/clutter-backend.c:
	* clutter/clutter-behaviour-depth.c:
	* clutter/clutter-behaviour-ellipse.c:
	* clutter/clutter-behaviour-path.c:
	* clutter/clutter-behaviour-rotate.c:
	* clutter/clutter-behaviour-scale.c:
	* clutter/clutter-clone-texture.c:
	* clutter/clutter-color.c:
	* clutter/clutter-entry.c:
	* clutter/clutter-stage.c:
	* clutter/clutter-texture.c:
	* clutter/clutter-timeline.c:
	* clutter/clutter-units.h: Move from the internal usage of
	ClutterFixed to CoglFixed.

	* doc/reference/clutter/clutter-sections.txt:
	* doc/reference/cogl/cogl-docs.sgml:
	* doc/reference/cogl/cogl-sections.txt: Update the documentation.

	* tests/test-cogl-tex-tile.c:
	* tests/test-project.c: Fix tests after the API change

	* README: Add release notes.
2008-10-30 16:37:55 +00:00
Emmanuele Bassi
a4b0ffe1de 2008-09-23 Emmanuele Bassi <ebassi@linux.intel.com>
Bug 1124 - Clutter causes an additional size request in each
	allocation

	* clutter/clutter-actor.c:
	(clutter_actor_store_old_geometry): Store the allocation instead
	of causing a new size-request cycle. (Johan Bilien)
2008-09-23 11:15:38 +00:00
Neil Roberts
ae8bab0bc8 Bug 1121 - Setting anchor point doesn't work if set too early
* clutter/clutter-actor.c
	(clutter_actor_set_anchor_point_from_gravity)
	(clutter_actor_move_anchor_point_from_gravity): Add documentation
	to make it clear that the anchor point won't move when the actor
	is resized.
2008-09-17 10:40:32 +00:00
Neil Roberts
b83470366c Bug 1137 - Setting the anchor point does not trigger a re-paint
* clutter/clutter-actor.c (clutter_actor_set_property): When
	changing the anchor point properties, use set_anchor_pointu
	instead of changing the value directly so that a redraw will be
	queued.
	(clutter_actor_set_anchor_pointu): Queue a redraw when the anchor
	point is changed. Thanks to Johan Bilien.
2008-09-10 11:20:22 +00:00
Neil Roberts
db4c5e2829 Bug 945 - Clipping+fbo cloning bugs
* clutter/cogl/gl/cogl.c: 
	* clutter/cogl/gles/cogl.c: 
	* clutter/cogl/cogl.h.in: Add cogl_clip_stack_save,
	cogl_clip_stack_restore, cogl_viewport and cogl_frustum.

	* clutter/cogl/gl/cogl-fbo.h: 
	* clutter/cogl/gl/cogl-fbo.c: Try to attach a stencil buffer when
	creating an FBO.

	* clutter/cogl/common/cogl-clip-stack.c: Add functions to save and
	restore the whole state of the stack.

	* clutter/clutter-texture.c (clutter_texture_paint): When
	rendering the FBO source, setup a temporary asymmetric perspective
	projection matrix to render it as it would appear on screen.

	* clutter/clutter-private.h: 
	* clutter/clutter-actor.c
	(_clutter_actor_apply_modelview_transform_recursive): No longer
	static and exported in clutter-private.h
2008-08-01 12:23:57 +00:00
Neil Roberts
0d700d7abb * clutter/clutter-actor.c (clutter_actor_remove_clip)
(clutter_actor_set_clipu): Queue a redraw when the clip is
	changed.
2008-07-25 11:29:12 +00:00
Neil Roberts
919efb5a6f * clutter/clutter-actor.c
(clutter_actor_get_abs_allocation_vertices): The initialization of
	the local stage pointer got moved away in revision 3081 so it was
	crashing if the function is called before the layout is run.
2008-07-02 16:15:30 +00:00
Emmanuele Bassi
12fd095006 2008-07-02 Emmanuele Bassi <ebassi@openedhand.com>
Bug 1010 - ClutterLabel does not update the layout (Lee Jusung)

	* clutter/clutter-actor.c:
	(clutter_actor_queue_relayout): Remove some pointer dereferencing.
	
	* clutter/clutter-label.c:
	(clutter_label_allocate): Revert the change of r2883 and remove the
	layout width cache and force a recreation of the layout every time
	we receive an allocation.
2008-07-02 09:24:25 +00:00
Neil Roberts
cfd91cd0ef * clutter/clutter-actor.c (clutter_actor_get_transformed_sizeu):
This is now do-what-I-mean like clutter_actor_get_size so that if
	the allocation box is available it will use that, otherwise it
	will use the preferred size. clutter_actor_transform_vertices has
	been converted to clutter_actor_transform_and_project_box so that
	it can be used by both functions. Based on a patch by Emmanuele
	Bassi.
	(clutter_actor_get_abs_allocation_vertices)
	(clutter_actor_get_allocation_vertices): These two functions now
	force a relayout if the allocation box is not available.

	* tests/test-fbo.c: Fixed the shader to use texture2D instead of
	texture2DRect now that GL_EXT_texture_rectangle is no longer used.
2008-07-01 21:52:19 +00:00
Emmanuele Bassi
a07d57572c 2008-06-26 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-actor.c:
	(clutter_actor_set_min_width),
	(clutter_actor_set_min_height),
	(clutter_actor_set_natural_width),
	(clutter_actor_set_natural_height): Ignore any override of the
	minimum and natural size of the stage on backends that only
	support static stages.

	* clutter/clutter-stage.c (clutter_stage_allocate): Use the
	preferred size of the ClutterStage implementation instead of
	the display size.

	* clutter/clutter-backend.[ch]: Remove get_display_size() and
	clutter_backend_get_display_size().

	* clutter/eglnative/clutter-backend-egl.c:
	* clutter/fruity/clutter-backend-fruity.c:
	* clutter/osx/clutter-backend-osx.c:
	* clutter/sdl/clutter-backend-sdl.c:
	* clutter/win32/clutter-backend-win32.c:
	* clutter/x11/clutter-backend-x11.c: Remove get_display_size()
	implementations.
2008-06-26 21:42:44 +00:00
Emmanuele Bassi
eb6fba284d 2008-06-25 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-actor.c:
	(clutter_actor_set_min_width),
	(clutter_actor_set_min_height),
	(clutter_actor_set_natural_width),
	(clutter_actor_set_natural_height): Add a comment explaining
	the override in place for backends providing a fixed size
	on a stage.
2008-06-25 15:02:13 +00:00
Emmanuele Bassi
79b214e1f1 2008-06-25 Emmanuele Bassi <set EMAIL_ADDRESS environment variable>
* clutter/clutter-actor.c:
	(clutter_actor_set_min_width),
	(clutter_actor_set_min_height),
	(clutter_actor_set_natural_width),
	(clutter_actor_set_natural_height): If setting the minimum
	and natural width and height on a top-level actor, and on
	a backend that provides only static stages, then override
	the value and use the size of the display as returned by
	the backend.

	* clutter/eglnative/clutter-stage-egl.c:
	(clutter_stage_egl_realize): Remove the setting of the
	minimum and natural width and height.
2008-06-25 14:47:00 +00:00
Neil Roberts
ed44a845a5 * clutter/clutter-actor.c (clutter_actor_paint): Guard against the
actor clip being enabled or disabled in an actor paint
	method. Otherwise the clip stack can be become unbalanced. This
	was happening in ClutterEntry until it was fixed in revision 2983.
2008-06-25 08:40:25 +00:00
Matthew Allum
b241481586 2008-06-23 Matthew Allum <mallum@openedhand.com>
* clutter/clutter-actor.c:
        * clutter/clutter-actor.h:
        * clutter/clutter-event.c:
        * clutter/clutter-event.h:
        * clutter/clutter-main.c:
        * clutter/clutter-main.h:
        * clutter/clutter-private.h:
        * clutter/eglx/clutter-stage-egl.c:
        * clutter/fruity/clutter-backend-fruity.c:
        * clutter/fruity/clutter-backend-fruity.h:
        * clutter/fruity/clutter-fruity.c:
        * clutter/glx/clutter-stage-glx.c:
        * clutter/x11/clutter-backend-x11.c:
        * clutter/x11/clutter-backend-x11.h:
        * clutter/x11/clutter-event-x11.c:
        * clutter/x11/clutter-stage-x11.h:
        * clutter/x11/clutter-x11.h:
        * configure.ac:
        * tests/Makefile.am:
        * tests/test-devices.c:
        Merge of 'xinput' branch giving initial basic support of
        multiple input devices.
2008-06-23 09:55:42 +00:00
Matthew Allum
920687a470 2008-06-23 Matthew Allum <mallum@openedhand.com>
* clutter/clutter-actor.c:
        * clutter/clutter-actor.h:
        * clutter/clutter-group.c:
        Remove uneeded (at least for now) paint_area method (#970)
2008-06-23 09:08:27 +00:00
Emmanuele Bassi
e29ae614b5 2008-06-17 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-actor.h:
	* clutter/clutter-actor.c:
	(clutter_actor_allocate_preferred_size): Add more documentation
	and notes on where it's appropriate to call this function.
2008-06-17 15:59:08 +00:00
Matthew Allum
2dbbee28d5 2008-06-17 Matthew Allum <mallum@openedhand.com>
* clutter/clutter-actor.c:
        * clutter/clutter-actor.h:
        Clean up of parenting code (see #972)
        Doc updates to section intro.
        Add clutter_actor_allocate_preferred_size () utility call

        * clutter/clutter-group.c: (clutter_fixed_layout_allocate):
        Use clutter_actor_allocate_preferred_size ()

        * doc/clutter-actor-invariants.txt:
        Add some more notes
2008-06-17 13:49:40 +00:00
Emmanuele Bassi
988cac1dfb 2008-06-17 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-actor.c:
	(clutter_actor_set_parent): Do not emit ::parent-set when
	reparenting.

	(clutter_actor_unparent): Ditto, as above.
	
	(clutter_actor_reparent): Emit ::parent-set with the old
	parent and set the IN_REPARENT flag unconditionally.
2008-06-17 12:39:37 +00:00
Emmanuele Bassi
ec91b3d253 2008-06-17 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-actor.c:
	(clutter_actor_set_parent): Document and maintain the invariant
	that after setting a realized parent on an actor, the actor is
	also going to be realized.

	(clutter_actor_unparent): Change the invariant that an unparented
	actor is also unrealized: the paint is fast enough to avoid
	unrealizing, since it also causes more problems that what it's
	worth.

	* tests/test-invariants.c (test_show_on_set_parent): Update the
	invariants test because we changed the invariants.
2008-06-17 09:33:18 +00:00
Tomas Frydrych
2ccfd3c08f 2008-06-16 Tomas Frydrych <tf@openedhand.com>
* clutter/clutter-actor.c:
	    (clutter_actor_move_anchor_point_from_gravity):
	    Fixed incorrect sign of position adjustment (revert of earlier
	    change).
2008-06-16 14:14:19 +00:00
Emmanuele Bassi
6ec5cc538c 2008-06-16 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-actor.c (clutter_actor_unparent): Reset the
	:show-on-set-parent property to TRUE when unparenting.

	* tests/Makefile.am: Add test-invariant to the build.

	* tests/test-invariants.c: Test the invariants that we are going
	to honour (and document, at some point).
2008-06-16 13:40:39 +00:00
Tomas Frydrych
1c4b1ce90e 2008-06-16 Tomas Frydrych <tf@openedhand.com>
* clutter/clutter-actor.c:
	    (clutter_actor_move_anchor_point):
	    (clutter_actor_move_anchor_pointu):
	    (clutter_actor_move_anchor_point_from_gravity):
	    Fixed incorrect sign of position adjustment.
	    Fixed replace call to _move_by with move_byu in
	    _move_anchor_pointu.

	    Stripped trailing whitespace.
2008-06-16 09:27:44 +00:00
Emmanuele Bassi
4b97a02410 2008-06-13 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-actor.c:
	* clutter/clutter-actor.h:
	* tests/test-cogl-primitives.c:
	* tests/test-events.c:
	* tests/test-multistage.c:
	* tests/test-textures.c:
	* tests/test-timeline.c: Miscellaneous fixes for distcheck to
	pass.
2008-06-13 15:01:34 +00:00
Emmanuele Bassi
e3de3f196b 2008-06-13 Emmanuele Bassi <ebassi@openedhand.com>
Bug #953 - Actors are not hidden before unrealized or
	           disposed (Tommi Komulainen)

	* clutter/clutter-actor.c:
	(clutter_actor_unrealize): Hide a visible actor when unrealizing
	it.

	(clutter_actor_dispose): Make sure to unrealize an actor when
	disposing it.
2008-06-13 14:16:22 +00:00
Emmanuele Bassi
23c160886b 2008-06-13 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-actor.c:
	(clutter_actor_dispose), (clutter_actor_destroy),
	(clutter_actor_unparent): Clean up the actor's destruction
	sequence, making sure that every operation is performed
	under the CLUTTER_ACTOR_IN_DESTRUCTION internal flag.
2008-06-13 13:59:07 +00:00
Emmanuele Bassi
d1006ca506 2008-06-12 Emmanuele Bassi <ebassi@openedhand.com>
Bug #964 - "unrealized" signal of ClutterActor wrongly named

	* clutter/clutter-actor.c (clutter_actor_class_init): Fix typo
	in the ::unrealize signal name. (Armin Burgmeier)
2008-06-12 17:24:07 +00:00
Emmanuele Bassi
13df7d579d 2008-06-12 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-actor.c: Add more clarifications on the
	size and position accessors and the distinction between
	transformed and untransformed actor box inside the actor's
	description.
2008-06-12 16:34:50 +00:00
Emmanuele Bassi
da8eea1842 2008-06-12 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-actor.c: Clarify the documentation of the
	accessors of the width and height.
2008-06-12 16:20:08 +00:00
Emmanuele Bassi
8ff6cec829 2008-06-12 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-actor.[ch]: Documentation fixes.

	* clutter/clutter-backend.c: Documentation fixes.

	* clutter/clutter-container.h: Documentation fixes.

	* clutter/clutter-fixed.c (clutter_qdivx): Fix the return
	value to be after the description.

	* clutter/clutter-texture.[ch]: Documentation fixes.

	* clutter/clutter-timeline.c: Documentation fixes.
2008-06-12 11:43:25 +00:00
Neil Roberts
3d1d677902 * clutter/clutter-actor.c (clutter_actor_allocate): Fixed the
logic when detecting whether the actor has moved.
2008-06-11 17:12:29 +00:00
Emmanuele Bassi
c859a2f7fd 2008-06-11 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-actor.c: Notify :x, :y, :width and :height
	properties using ClutterUnits, not pixels.
2008-06-11 15:08:03 +00:00
Emmanuele Bassi
473d0e9fc3 2008-06-10 Emmanuele Bassi <ebassi@openedhand.com>
Bug #815 - Split up request, allocation, and paint box

	* clutter/clutter-actor.[ch]: Rework the size allocation,
	request and paint area. Now ::request_coords() is called
	::allocate(), and ::query_coords() has been split into
	::get_preferred_width() and ::get_preferred_height(). See
	the documentation and the layout test on how to implement
	a container and layout manager with the new API. (#915,
	based on a patch by Havoc Pennington, Lucas Rocha and Johan
	Bilien)

	* clutter/clutter-clone-texture.c: Port CloneTexture to
	the new size negotiation API; it just means forwarding
	the requests to the parent texture.

	* clutter/clutter-deprecated.h: Add deprecated and replaced
	API.

	* clutter/clutter-entry.c: Port Entry to the new size
	negotiation API.

	* clutter/clutter-group.c: Port Group to the new size
	negotiation API; the semantics of the Group actor do not
	change.

	* clutter/clutter-label.c: Port Label to the new size
	negotiation API, and vastly simplify the code.

	* clutter/clutter-main.[ch]: Add API for executing a
	relayout when needed.

	* clutter/clutter-private.h: Add new Stage private API.

	* clutter/clutter-rectangle.c: Update the get_abs_opacity()
	call to get_paint_opacity().

	* clutter/clutter-stage.c:
	(clutter_stage_get_preferred_width),
	(clutter_stage_get_preferred_height),
	(clutter_stage_allocate),
	(clutter_stage_class_init): Port Stage to the new size
	negotiation API.

	* clutter/clutter-texture.c: Port Texture to the new size
	negotiation API.

	* clutter/clutter-types.h: Add ClutterRequestMode enumeration.

	* clutter/x11/clutter-stage-x11.c: Port the X11 stage
	implementation to the new size negotiation API.

	* tests/Makefile.am: Add the layout manager test case.

	* tests/test-opacity.c: Update.

	* tests/test-project.c: Update.

	* tests/test-layout.c: Test case for a layout manager implemented
	using the new size negotiation API; the layout manager handles
	both transformed and untransformed children.
2008-06-10 17:07:52 +00:00
Emmanuele Bassi
a06a79737b 2008-06-05 Emmanuele Bassi <ebassi@openedhand.com>
Bug #840 - Implement prepare-paint and finish-paint signals.

	* clutter/clutter-actor.c:
	(clutter_actor_class_init): Add the ::paint, ::realize and
	::unrealize signals to ClutterActor. It is possible to
	override the paint, realization and unrealization of an
	actor without subclassing it. The ::paint signal handlers
	have the same limitations of a ClutterActor::paint implementation
	inside a subclass.

	(clutter_actor_realize),
	(clutter_actor_unrealize),
	(clutter_actor_paint): Emit the signals instead of calling
	the functions from the class vtable.
2008-06-05 14:32:18 +00:00
Neil Roberts
b887bddbb1 Applied patch from bug #947
* clutter/clutter-stage.c (clutter_stage_get_default): Don't grab
	the floating reference when creating the default stage. The stage
	manager will take a reference to it so it will behave as any other
	stage.
	(clutter_stage_new): Don't take the floating reference to the new
	stage but let the stage manager keep it instead.

	* clutter/clutter-stage-manager.c
	(_clutter_stage_manager_add_stage): Take a reference to the stage
	when it is added to the list.
	(_clutter_stage_manager_remove_stage): Unref the stage when it is
	removed from the list.
	(clutter_stage_manager_dispose): Keep track of the 'next' pointer
	as a separate variable so we can cope when the stage being
	destroyed removes itself from the list as the list is being
	iterated.

	* clutter/clutter-actor.c (clutter_actor_destroy): Take a
	reference at the beginning of the function even if there is no
	parent container so that overall the reference count is not
	changed when the actor is unref'd again at the bottom of the
	function. Previously it would have a net effect of leaving the
	reference count alone unless it is a top level actor in which case
	it would unref it.
2008-06-03 20:15:11 +00:00
Emmanuele Bassi
5cc8687e7e 2008-05-23 Emmanuele Bassi <ebassi@openedhand.com>
Bug #928 - Reparenting a child that itself is a container
	doesn't work

	* clutter/clutter-actor.c (clutter_actor_set_parent): Realize
	an actor when setting its parent, if the parent is realized.

	* clutter/clutter-group.c:
	(clutter_group_realize), (clutter_group_class_init): Add the
	missing implementation of the ::realize() virtual function; this
	makes sure that the children of a Group are realized if the Group
	is realized. (#928)
2008-05-23 09:42:32 +00:00
Matthew Allum
092fdf1d79 2008-05-14 Matthew Allum <mallum@openedhand.com>
* clutter/clutter-actor.c:
        * clutter/clutter-main.c:
        * clutter/clutter-private.h:
        Rejid Øyvind's previous commit a little moving more into
        clutter-main.c and using ClutterContext.
        Also Refactor clutter_init & clutter_init_with_args to share
        same core init code.
2008-05-13 23:02:45 +00:00