Some of the API landed in trunk has been backported to the stable branch
after testing. This patch updates the Since: tag in the API reference to
reflect the time when the API was first added to a release.
When computing the increasing smoothstep alpha value use the right type
for the results, to avoid overflowing the [0, 0xffff] range of the alpha
value.
Also use the right format when printing out the opacity and alpha values
in the opacity behaviour.
Language bindings will have problems with raise() and lower() bein in both
ClutterContainer and ClutterActor; hence, this patch renames
clutter_container_raise() and clutter_container_lower() to
clutter_container_raise_child() and clutter_container_lower_child(),
respectively.
* 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/clutter-stage.c:
* clutter/clutter-stage.h:
* clutter/clutter-types.h:
Initial implementation of actors emmitting event signals (423);
- Actors set_reactive() to receive mouse events.
(call clutter_enable_motion_events() for per action motion events)
- clutter_stage_set_key_focus () to direct key events.
- Events bubble up to parents (ending at stage)
(original source identified by clutter_event_get_source())
TODO:
- enter/leave notifys for actors.
- stage specific events - fullscreen
- grabs
* tests/test-events.c:
Extend a little to use new API
* clutter/cogl/gl/cogl.c:
* clutter/glx/clutter-backend-glx.c:
Move get_proc_address into cogl and out of backend.
(shaders will need it)
* clutter/clutter-group.c: (clutter_group_real_lower):
Fix a minor compile warning.
* TODO:
Sync up.
Every direct reference to ClutterGroup has been removed, in favour of
ClutterContainer - which is the official way of creating container
actors as of 0.4.
Since ClutterActor directly calls ClutterGroup methods we need ClutterContainer
to provide them, so that every container actor behaves the same way.
This patch makes ::raise, ::lower and ::sort_depth_order virtual functions
of the ClutterContainer interface, implemented by ClutterGroup.
The documentation has been added and deprecation warnings have been added
as well.
ClutterStage now uses the newly added clutter_container_find_child_by_id()
function to find the right child in the scenegraph, using the picking id.
This fixes the test-boxes test case.
Finding a child by its ID is a method that should be used by every container
and not only by ClutterGroup. This is needed to actually fix the picking in
ClutterStage.
* clutter/clutter-timeout-pool.c: Fix removing and adding timeouts
to the timeout pool during a dispatch of a timeout source already
inside the pool. (#456, based on a patch by Neil Roberts)
(clutter_timeout_dispatch), (clutter_timeout_pool_dispatch): Hold
the main Clutter lock in the pool dispatch function, instead of
the per-timeout dispatch; this guarantees that the ref+unref of
the single timeouts are done under the main lock.
Ported from 0.4 branch.
* clutter/clutter-texture.c:
Fix typo in clutter_texture_get_pixbuf (#458, #442?, Neil Roberts).
Use take_object when getting pixbuf prop to avoid ref leak
The threads_enter() and threads_leave() functions are no-ops because Clutter
is not thread-aware nor thread-safe. Leaving them in is a source of confusion
so we just remove them.
Update the NEWS and the README files with the release notes.
To avoid using a ClutterPadding each time you add an actor to a ClutterBox
when you want the same padding around each child, you can now set the
default padding. The API is pixel-based, since it's a commodity function,
and will affect only clutter_box_pack_defaults().
ClutterBox is meant to work like the HTML boxing model: it has a margin and
a backgrdound color, and every child actor is added with a pack type and a
padding. The ClutterBoxChild structure holds the child actor, the padding,
the packing type and the allocated coordinates for the actor.
* clutter/clutter-behaviour-depth.c:
Modify to work like all other behvaiours in not forcing
increasing order in behaviour 'limits'. (#436)
Rename limit min/max props to start/end.
* tests/test-depth.c:
Simplify test-case to work with above change and
without multiple ramps
* clutter/clutter-behaviour-rotate.c:
Handle CW rotation when end > start and similar for CCW just
like ellipse behaviour.
* clutter/clutter-behaviour-depth.c: Clarify that what drives
the movement along the Z axis is the ClutterAlpha object (we
don't have the luxury of a rollover like the opacity does);
so, if you want to go from 0 to -100 you have to use a
decreasing function, just as well if you want to go from 100
to 0. Using a min-depth of 100 and a max-depth of 0 and an
increasing function is undefined behaviour.
* tests/Makefile.am:
* tests/test-depth.c: Add a test case for the depth behaviour.
* clutter/clutter-behaviour-ellipse.c:
(clutter_behaviour_ellipse_get_angle_tilt): Avoid recursion
by fixing a typo.
(clutter_behaviour_ellipse_get_angle_begin),
(clutter_behaviour_ellipse_get_angle_end): Correct the angles
here too.
2007-08-03 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/eglnative/clutter-backend-egl.c:
* clutter/eglx/clutter-backend-egl.c:
* clutter/sdl/clutter-backend-sdl.c: Set the default resolution
as 96.0 dpi for every backend (we already were under this
assumption anyway, and this makes it easier to change this
setting per-backend).
* clutter/pango/pangoclutter-fontmap.c:
* clutter/pango/pangoclutter.h: Allow setting the resolution
for the PangoClutterFontMap object and provide the implementation
for the PangoFcFontMap::get_resolution() virtual function. This
allows to set the resolution of the PangoContext when retrieving
it.
* clutter/clutter-label.c (clutter_label_init): Set the
resolution of the font map with the one the backend gives us.
* clutter/clutter-entry.c (clutter_entry_init): Ditto.
* clutter/clutter-stage.[ch]: Fix clutter_stage_set_user_resizable()
name, and add a getter for the property.
* clutter/glx/clutter-stage-glx.c: Use the accessor, not
g_object_get() to retrieve the value of the resizable property.
* clutter/clutter-backend.[ch]: Add clutter_backend_set_resolution()
and clutter_backend_get_resolution(); backends should use the former
to set the resolution of the display when initialising, while actors
should use the latter when sizing themselves depending on the
resolution or the font size.
* clutter/glx/clutter-backend-glx.c: Set the resolution as 96 dpi
as a default and query the X server when opening the display.
* clutter/clutter-entry.c: Drop the hardcoded dpi value and use
clutter_backend_get_resolution() to compute the default size.
* clutter/clutter-types.h: Document ClutterGravity enumeration
and remove the only incomplete symbol of the api reference. Now
we are up to 79% documented symbols.
* clutter/clutter-media.c: Document ClutterMedia signals;
replace the implementation of clutter_media_set_filename() with
something a wee bit more robust (and portable) than a sprintf().
* clutter/clutter-actor.[ch]: Use GInitiallyUnowned
as the parent structure in the ClutterActor structure
definition; somehow, this has escaped everyone attention
in one year and a half. Luckily, GInitiallyUnowned is
as big as GObject.
(clutter_actor_get_abs_position_units),
(clutter_actor_get_abs_position): Check parameters.
* clutter/clutter-texture.h: Unmangle the flags enum
type declaration, so that dumb parsers like h2defs.py
are not fooled.
* clutter/clutter-behaviour-ellipse.[ch]:
* clutter/clutter-effect.c: Fix some documentation
issues and make gtk-doc happy.
* clutter/clutter-feature.h:
Add new stage feature flags and document.
* clutter/eglnative/clutter-backend-egl.c:
* clutter/eglx/clutter-backend-egl.c:
* clutter/sdl/clutter-backend-sdl.c:
Set new feature flags.
* clutter/glx/clutter-backend-glx.c:
* clutter/glx/clutter-stage-glx.c:
* clutter/clutter-stage.c:
* clutter/clutter-stage.h:
Add a 'user_resizeable' setting to the backend and implement
for glx backend.
* clutter/clutter-entry.c: (offset_to_bytes),
(clutter_entry_ensure_cursor_position),
(clutter_entry_new_with_text), (clutter_entry_new),
(clutter_entry_insert_unichar), (clutter_entry_delete_chars):
Fixed utf8 support so it actually works now, for both inserting and deleting
chars.
Fixed positioning of cursor for utf8 chars. Both GString and Pnago need
bytes (not documented!) for string manipulation, so making sure all values
were bytes and not char positions fixed the issue.
Set a default size of 50x50 for the entry, otherwise no chars can be seen
if the size is not set after creation (which confuses the developer).
Most of these fixes are simple symbol shadowing issues, like index and the
braindead y0 and y1 extern symbols exported by math.h on GNU libc systems.
There is a masking issue in ClutterTexture which should be checked; I ran
the tests and everything looked fine.
The rest are just unused variables.
* clutter/clutter-behaviour.h:
* clutter/clutter-behaviour.c: Rename clutter_behaviour_clear()
to clutter_behaviour_remove_all() to avoid method clashes in
bindings.
* clutter/clutter-behaviour-bspline.c: Kill off some deep pointer
indirections; use CLUTTER_NOTE() instead of ifdeffed out g_debug();
add checks in every public entry point; move some initialisations
of private data structures out of the constructor and into the
init function, where they belong.
* clutter/clutter-behaviour-rotate.c:
* clutter/clutter-behaviour-rotate.h:
Split 'center' prop into 3 seperate props for each axis.
Use clutter_behaviour_actors_foreach() rather than
clutter_behaviour_get_actors() to avoid copying list.
Call fixed point rotation funcs internally.
* clutter/clutter-effect.c:
* clutter/clutter-effect.h:
Add new simple rotation based effect funcs.
* clutter/eglx/clutter-backend-egl.c:
* clutter/eglnative/clutter-backend-egl.c:
* clutter/sdl/clutter-backend-sdl.c: Destroy the stage in every
backend.
* clutter/clutter-texture.[ch]: Add a ClutterTextureError
to be returned by the loader functions; use the GObject API
to allocate the private data structure instead of managing it
ourselves; add documentation.