12011-01-10  Damon Chaplin  <damon@gnome.org>
2
3	* src/goocanvasimage.c: added "alpha" property. Patch from xapantu
4	plus a few changes.
5
6	* demo/mv-demo.c:
7	* demo/demo.c: added test for the above for the flowers.
8
9	* demo/*: don't set page size for spin button adjustments since that
10	seems to be deprecated and outputs warnings.
11
122010-07-27  Damon Chaplin  <damon@gnome.org>
13
14	* src/goocanvas.c (goo_canvas_adjustment_value_changed): fixed call
15	to redraw_static_items_at_position() - was using hadjustment twice.
16
172010-06-30  Damon Chaplin  <damon@gnome.org>
18
19	* docs: added empty internal subset "[]" to the DOCTYPEs to keep
20	gtk-doc happy.
21
22	* src/goocanvas.c (goo_canvas_expose_event): do a cairo_save()/restore()
23	around painting the main items, so the static items don't get clipped.
24
252010-06-29  Damon Chaplin  <damon@gnome.org>
26
27	* src/goocanvasitemsimple.c (goo_canvas_item_simple_set_property):
28	handle setting "clip-path" to NULL to reset it.
29
30	* src/goocanvastable.c: try to handle RTL direction better.
31
32	* src/goocanvasgroup.c (goo_canvas_group_paint): use the scale
33	argument rather than the canvas scale.
34
35	* src/goocanvas.c: added "before-initial-expose" flag which we use
36	to ignore any redraw requests before the initial expose (since we
37	know the entire canvas needs redrawing anyway). This speeds up the
38	creation of lots of items, e.g. scalability-demo.
39
40	* demo/Makefile.am (mv_demo_LDADD, demo_LDADD): added -lm to compile.
41
42	* demo/mv-scalability-demo.c:
43	* demo/scalability-demo.c: updated to compare with the new-api code.
44
452010-05-10  Damon Chaplin  <damon@gnome.org>
46
47	* src/goocanvastext.c: improve docs for "width" and "height" properties.
48	#595164.
49
502010-05-10  Damon Chaplin  <damon@gnome.org>
51
52	* src/goocanvaspolyline.c: don't use the reconfigure_arrows flag
53	any more - always reconfigure the arrows during an update. This
54	avoids a bug where the line width changes but the arrows don't get
55	reconfigured, since the line width is an inherited property and
56	reconfigure_arrows wasn't being set when it changed.
57
582010-05-07  Damon Chaplin  <damon@gnome.org>
59
60	* src/goocanvasstyle.c (goo_canvas_style_set_stroke_options): handle
61	a NULL dash setting. #617960.
62
632010-04-28  Luis Medinas  <lmedinas@gnome.org>
64
65	* applied small patch to compile with GTK+ 3.0. #615435.
66
672009-08-20  Murray Cumming  <murrayc@murrayc.com>
68
69	* docs/architecture.xml: Fixed documenation typo. Bug #591983.
70	(Martin Olsson)
71
722009-06-29  Damon Chaplin  <damon@gnome.org>
73
74	* Released GooCanvas 0.15
75
762009-06-29  Damon Chaplin  <damon@gnome.org>
77
78	* src/goocanvasimage.c: added "scale-to-fit" property, which scales
79	the image to fit the "width" and "height" settings.
80
81	* demo/units-demo.c:
82	* demo/mv-demo.c (plant_flower):
83	* demo/demo.c (plant_flower): test "scale-to-fit" property.
84
852009-05-07  Damon Chaplin  <damon@gnome.org>
86
87	* src/goocanvasatk.c: fixed GooCanvasWidgetAccessible's G_DEFINE_TYPE
88	call, using GOO_TYPE_CANVAS_ITEM_ACCESSIBLE as parent class.
89	This avoids a hang when using GooCanvasWidget with accessibility support
90	turned on. #581596.
91
922009-03-16  Damon Chaplin  <damon@gnome.org>
93
94	* src/goocanvasitem.c: changed docs referring to "root_x" and "root_y"
95	fields of event structs to "x_root" and "y_root".
96
972009-03-15  Damon Chaplin  <damon@gnome.org>
98
99	* Released GooCanvas 0.14
100
1012009-03-15  Damon Chaplin  <damon@gnome.org>
102
103	* src/goocanvas.c (goo_canvas_query_tooltip): new function to propagate the "query-tooltip"
104	signal up through the canvas items.
105
106	* src/goocanvasitem.[hc]: added "query-tooltip" signal and "tooltip" property.
107	* src/goocanvasitemmodel.c: added "tooltip" property.
108
109	* src/goocanvasitemsimple.c: added "tooltip" property and query_tooltip signal handler.
110
111	* configure.in: added dependancy on GTK+ 2.12 for tooltips.
112
113	* demo/mv-demo.c:
114	* demo/demo.c: added tests for tooltips.
115
1162009-03-15  Damon Chaplin  <damon@gnome.org>
117
118	* src/goocanvasgrid.c: improved section docs.
119
120	* src/goocanvas.c: improved a few function docs.
121
1222009-03-15  Damon Chaplin  <damon@gnome.org>
123
124	* docs/coordinates.xml:
125	* docs/architecture.xml:
126	* docs/creating-items.xml:
127	* src/goocanvasitemsimple.c: use the terms "canvas coordinate space" or
128	"canvas space" rather than "device space" which is a bit misleading.
129
130	* src/goocanvasitem.c: clarify the docs for the mouse position fields
131	of the event structs of the signals. #573458
132
1332009-03-15  Gian Mario Tagliaretti  <gianmt@gnome.org>
134	(Committed by Damon with a few changes.)
135
136	* src/goocanvasitem.h (struct _GooCanvasItemIface): added
137	scroll_event() signals on items.
138
139	* src/goocanvasitem.c: implemented "scroll_event" signals on items.
140
141	* src/goocanvas.c: implemented "scroll_event" signals on items.
142
143	* demo/demo.c: added test for above. #566110
144
1452009-02-17  Damon Chaplin  <damon@gnome.org>
146
147	* src/goocanvas.c (goo_canvas_convert_from_item_space): changed the
148	order of the arguments to cairo_matrix_multiply(). This was broken
149	for everything except translations. #572180
150
1512009-01-12  Armin Burgmeier  <armin@openismus.com>
152
153	* src/goocanvasellipse.c:
154	* src/goocanvaspolyline.c:
155	* src/goocanvasgroup.c:
156	* src/goocanvaspath.c:
157	* src/goocanvaswidget.c:
158	* src/goocanvastext.c:
159	* src/goocanvastable.c: Added "x", "y", "width" and "height"
160	properties where they do not exist already. GooCanvasGroup clips its
161	children if they are out of the specified area, and GooCanvasText
162	clips the text. It is possible to turn off the clipping by using -1
163	for width or height, respectively, which is the default.
164
165	* demo/generic-position-demo.c:
166	* demo/mv-generic-position-demo.c:
167	* demo/Makefile.am: Added a demo showing how this can be used to
168	generically resize items using drag and drop.
169
170	(Patch from bug #555097 committed with quite a few changes by Damon)
171
1722008-12-29  Damon Chaplin  <damon@gnome.org>
173
174	* src/goocanvasgrid.c (calculate_start_position)
175	(paint_vertical_lines, paint_horizontal_lines): handle step <= 0.0.
176	It should now draw a single line at the start position.
177	(based on patch from Murray Cumming) #563487.
178
1792008-12-29  Jonathon Jongsma  <jonathon@quotidian.org>
180
181	* demo/Makefile.am: Fix building demos when builddir != srcdir.
182	goocanvasenumtypes.h is generated in the build dir and not the src dir
183	so we must also add the build dir to the INCLUDES. #561401.
184
1852008-11-30  Damon Chaplin  <damon@gnome.org>
186
187	* Released GooCanvas 0.13
188
1892008-11-19  Damon Chaplin  <damon@gnome.org>
190
191	* src/goocanvasitemmodel.c (goo_canvas_item_model_stop_animation):
192	* src/goocanvasitem.c (goo_canvas_item_animate_cb)
193	(goo_canvas_item_stop_animation): remove the current animation data
194	before emitting "animation-finished", so signal handlers can start a
195	new animation.
196
1972008-11-17  Damon Chaplin  <damon@gnome.org>
198
199	* src/goocanvasgrid.c: added "show-horz-grid-lines" and
200	"show-vert-grid-lines" properties, to turn off horz/vert grid lines.
201
2022008-11-17  Damon Chaplin  <damon@gnome.org>
203
204	* src/goocanvas.c (redraw_static_items_at_position): redraw each
205	group of static items separately, to stop GTK+ merging the redraw
206	rect into one massive one.
207
208	* demo/mv-demo.c (create_static_model):
209	* demo/demo.c (setup_static_items): use a group for all the static
210	items.
211
2122008-11-17  Damon Chaplin  <damon@gnome.org>
213
214	* src/goocanvas.c: added "redraw-when-scrolled" boolean property,
215	which makes the canvas redraw the entire window when scrolled. This
216	is useful for static items to reduce flicker, but is slower.
217	(goo_canvas_adjustment_value_changed): map/unmap the temporary window
218	to implement "redraw-when-scrolled".
219
2202008-11-04  Damon Chaplin  <damon@gnome.org>
221
222	* src/goocanvasutils.h: added typedefs for wrappers of cairo types
223	(but ifdef'd out so not usable), so we can add docs for them.
224	And added the docs, pointing to the cairo docs.
225
226	* src/goocanvasutils.c (goo_canvas_line_dash_get_type): changed the
227	registered type	name from GooCairoLineDash to GooCanvasLineDash so the
228	docs work. The struct was already called GooCanvasLineDash.
229
2302008-11-03  Damon Chaplin  <damon@gnome.org>
231
232	* src/goocanvas.c (emit_pointer_event): handle NULL target_item.
233
234	* src/goocanvaswidget.c: note that widgets can't be static.
235
236	* README:
237	* docs/overview.xml: mention static items and the grid item.
238
2392008-11-03  Damon Chaplin  <damon@gnome.org>
240
241	* src/goocanvas.c (goo_canvas_scroll_to_item): just return if the
242	item is static, as we can't scroll to a static item.
243	(emit_pointer_event): convert the pointer position to static item space
244	for static items.
245
246	* src/goocanvasatk.c (goo_canvas_item_accessible_get_item_extents):
247	handle static items - don't need to convert to pixels within the
248	window as they are already like that.
249
2502008-11-03  Damon Chaplin  <damon@gnome.org>
251
252	* src/goocanvasgrid.[hc]: new grid item.
253
254	* demo/mv-demo.c (setup_grids):
255	* demo/demo.c (setup_grids): added a grid.
256
257	* src/Makefile.am: added grid.
258
259	* src/goocanvas.[hc] (goo_canvas_convert_bounds_to_item_space): new
260	function to convert a bounding box in device space to a bounding box
261	in item space. Useful in paint() methods to optimize painting.
262
263	* src/goocanvasutils.c (goo_canvas_convert_colors_to_rgba)
264	(goo_canvas_get_rgba_value_from_pattern)
265	(goo_canvas_set_style_property_from_pattern)
266	(goo_canvas_create_pattern_from_color_value)
267	(goo_canvas_create_pattern_from_rgba_value)
268	(goo_canvas_create_pattern_from_pixbuf_value): new private utility
269	functions taken out of goocanvasitemsimple.c code.
270
271	* src/goocanvasitemsimple.c: use above utility functions.
272
2732008-10-31  Damon Chaplin  <damon@gnome.org>
274
275	* src/goocanvasitemmodel.h (struct _GooCanvasItemModelIface):
276	* src/goocanvasitem.h (struct _GooCanvasItemIface): added
277	animation_finished() signals.
278
279	* src/goocanvasitemmodel.c:
280	* src/goocanvasitem.c: implemented "animation-finished" signals.
281
282	* demo/mv-demo-animation.c:
283	* demo/demo-animation.c: added test for above.
284
2852008-10-31  Damon Chaplin  <damon@gnome.org>
286
287	* demo/mv-demo-arrowhead.c (on_button_press):
288	* demo/demo-arrowhead.c (on_button_press):
289	* demo/mv-demo.c (on_button_press):
290	* demo/demo.c (on_button_press): use GDK_POINTER_MOTION_HINT_MASK for
291	the pointer grab, so we don't get too many events.
292
2932008-10-31  Damon Chaplin  <damon@gnome.org>
294
295	* src/goocanvas.h:
296	(goo_canvas_get_static_root_item): new function to get static root item.
297	(goo_canvas_set_static_root_item): new function to set static root item.
298	(goo_canvas_get_static_root_item_model): new function to get static
299	root item model.
300	(goo_canvas_set_static_root_item_model): new function to set static
301	root item model.
302	(goo_canvas_request_item_redraw): new function to request a redraw of
303	an item either in device space or in the static item space.
304
305	* src/goocanvasitem.h (struct _GooCanvasItemIface): added
306	get_is_static() and set_is_static() interface methods.
307
308	* src/goocanvasitemsimple.h (struct _GooCanvasItemSimpleData): removed
309	one bit from cache_setting and used it for is_static. Hopefully that
310	won't break binary compatibility.
311
312	* src/goocanvas.c (struct _GooCanvasPrivate): added new private struct
313	with static root item & model and current window position.
314	(goo_canvas_init): init private struct and create static root item.
315	(goo_canvas_dispose): free static root item & model.
316	(goo_canvas_update_internal): update static items.
317	(goo_canvas_get_item_at): check static items as well.
318	(goo_canvas_get_items_at): check static items as well.
319	(goo_canvas_realize): store original window position in private struct.
320	(request_static_redraw): new function to request a redraw in static
321	coordinate space.
322	(request_all_static_redraws): new function to request a redraw of all
323	static items.
324	(paint_static_items): new function to paint the static items.
325	(goo_canvas_expose_event): call paint_static_items().
326	(goo_canvas_convert_to_static_item_space): new function to convert
327	coords to static space.
328	(goo_canvas_adjustment_value_changed): redraw the static items before
329	the window is scrolled, but in their new position. We do this so we
330	don't see them being dragged along when scrolling.
331	Redraw them again after the window has been moved. Hopefully we can
332	optimize this a bit in future to avoid the flickering.
333
334	* src/goocanvasitem.c (goo_canvas_item_get_is_static)
335	(goo_canvas_item_set_is_static): new functions to call the interface
336	methods if they	are implemented. The default behavior allows old code
337	to work without crashing (but old items can't be static).
338
339	* src/goocanvasitemsimple.c (goo_canvas_item_simple_get_is_static)
340	(goo_canvas_item_simple_set_is_static): implemented new interface
341	functions - just get/set the bit-flag.
342
343	* src/goocanvasgroup.c (goo_canvas_group_add_child): call
344	set_is_static() on new child.
345
346	* src/goocanvasgroup.c (goo_canvas_group_set_is_static): implement new
347	interface method, calling set_is_static() for all children if changed.
348
349	* src/goocanvasitemsimple.c:
350	* src/goocanvasgroup.c:
351	* src/goocanvastable.c: use new goo_canvas_request_item_redraw()
352	function so static items are redrawn correctly.
353
354	* demo/mv-demo.c (create_static_model):
355	* demo/demo.c (setup_static_items): added some static items to test.
356	Note that dragging around when scale != 1.0 is weird as the coord
357	spaces are different, but is expected.
358
3592008-10-15  Damon Chaplin  <damon@gnome.org>
360
361	* src/goocanvaspolyline.c (goo_canvas_polyline_is_item_at): only check
362	the fill if the polyline path is closed. Otherwise if we call
363	cairo_in_fill() it will automatically close the path which is not what
364	we want.
365
366	* src/goocanvaspath.c (goo_canvas_path_is_item_at): only check the fill
367	if a fill color/pattern has been set, for similar reasons.
368
3692008-10-12  Damon Chaplin  <damon@gnome.org>
370
371	* src/goocanvastext.c (goo_canvas_text_create_layout): fixed calculation
372	of text bounds.
373
3742008-10-12  Armin Burgmeier  <armin@openismus.com>
375
376	* src/goocanvastable.c (goo_canvas_table_get_requested_area)
377	(goo_canvas_table_allocate_area): Request redraw of the table's
378	bounds, as GooCanvasItemSimple does, to fix incorrect drawing when
379	changing the table's width or height.
380
381	(goo_canvas_table_paint): Keep clipping to the allocated size when
382	drawing the children, so they are not rendered outside the allocated
383	area when the table is shrunk. #555093
384
3852008-10-11  Damon Chaplin  <damon@gnome.org>
386
387	* docs/coordinates.xml: added section on Cairo limits.
388
389	* README: updated home page URL.
390
3912008-10-05  Damon Chaplin  <damon@gnome.org>
392
393	* src/goocanvastext.c (goo_canvas_text_create_layout): don't turn off
394	font hinting. I don't think it has any effect on text layout so we can
395	safely leave it on. Small text should be easier to read, as well as
396	non-antialiased text. Though it does seem to sometimes produce slightly
397	odd results for rotated text (see the 8-bit text in the demo).
398
3992008-09-21  Damon Chaplin  <damon@gnome.org>
400
401	* Released GooCanvas 0.12
402
4032008-09-21  Damon Chaplin  <damon@gnome.org>
404
405	* configure.in: renamed LT_CURRENT, LT_AGE & LT_REVISION to CURRENT,
406	AGE & REVISION to avoid problems with libtool 2.2. #552725.
407
4082008-09-14  Damon Chaplin  <damon@gnome.org>
409
410	* src/goocanvasitemsimple.c (goo_canvas_item_simple_get_requested_area)
411	(goo_canvas_item_simple_allocate_area): request redraws of the old and
412	new item bounds.
413
4142008-09-09  Damon Chaplin  <damon@gnome.org>
415
416	* Released GooCanvas 0.11
417
4182008-09-02  Damon Chaplin  <damon@gnome.org>
419
420	* src/goocanvastable.c (goo_canvas_table_paint): use the item's
421	fill and stroke colors for the table background and grid.
422
423	* demo/table-demo.c: test the above.
424
4252008-08-17  Damon Chaplin  <damon@gnome.org>
426
427	* src/goocanvasgroup.c (goo_canvas_group_add_child)
428	(goo_canvas_group_remove_child): emit the "children_changed" ATK
429	signal, if ATK is enabled. This needs testing.
430
4312008-08-17  Damon Chaplin  <damon@gnome.org>
432
433	* src/Makefile.am (INCLUDES):
434	* demo/Makefile.am (INCLUDES): get rid of the XXX_DISABLE_DEPRECATED
435	flags so we don't break compilation when GTK+ deprecates stuff. #548086
436
4372008-06-24  Damon Chaplin  <damon@gnome.org>
438
439	* src/goocanvasgroup.c (goo_canvas_group_get_child)
440	(goo_canvas_group_model_get_child): return NULL if child_num is out
441	of range. #535150
442
443	* src/goocanvasitemmodel.c (goo_canvas_item_model_get_child):
444	* src/goocanvasitem.c (goo_canvas_item_get_child): updated docs.
445
4462008-06-24  Damon Chaplin  <damon@gnome.org>
447
448	* src/goocanvasutils.h: removed comma at end of GooCanvasItemVisibility
449	enum. Patch from Hubert Figuiere. #539844
450
4512008-06-22  Kjartan Maraas  <kmaraas@gnome.org>
452
453	* demo/demo-animation.c: (create_animation_page):
454	* demo/demo-arrowhead.c: (create_drag_box):
455	* demo/demo-clipping.c: (setup_canvas):
456	* demo/demo-events.c: (setup_item_signals):
457	* demo/demo-features.c: (create_canvas_features):
458	* demo/demo-fifteen.c: (setup_item_signals),
459	(create_canvas_fifteen):
460	* demo/demo-focus.c: (create_focus_box):
461	* demo/demo-grabs.c: (create_fixed), (setup_item_signals):
462	* demo/demo-large-items.c: (create_large_items_page):
463	* demo/demo-paths.c: (create_paths_page):
464	* demo/demo-table.c: (create_demo_item), (create_demo_table),
465	(create_width_for_height_table):
466	* demo/demo.c: (setup_item_signals), (create_canvas_primitives),
467	(setup_canvas), (create_window):
468	* demo/mv-demo-animation.c: (create_animation_page):
469	* demo/mv-demo-arrowhead.c: (on_item_created),
470	(create_canvas_arrowhead):
471	* demo/mv-demo-clipping.c: (setup_canvas):
472	* demo/mv-demo-events.c: (on_item_created), (create_events_page):
473	* demo/mv-demo-features.c: (on_item_created),
474	(create_canvas_features):
475	* demo/mv-demo-fifteen.c: (on_item_created),
476	(create_canvas_fifteen):
477	* demo/mv-demo-focus.c: (on_item_created), (create_focus_page):
478	* demo/mv-demo-grabs.c: (create_fixed), (on_item_created),
479	(create_canvas):
480	* demo/mv-demo-paths.c: (create_paths_page):
481	* demo/mv-demo-table.c: (create_demo_item), (create_demo_table),
482	(create_width_for_height_table):
483	* demo/mv-demo.c: (on_item_created), (create_canvas_primitives),
484	(create_window):
485	* demo/mv-scalability-demo.c: (setup_canvas), (create_canvas),
486	(main):
487	* demo/mv-simple-demo.c: (main):
488	* demo/mv-table-demo.c: (main):
489	* demo/scalability-demo.c: (setup_canvas), (create_canvas), (main):
490	* demo/simple-demo.c: (main):
491	* demo/table-demo.c: (main):
492	* demo/units-demo.c: (setup_canvas), (create_canvas), (main):
493	* demo/widgets-demo.c: (create_focus_box), (main):
494	Use G_CALLBACK instead of the deprecated GtkSignal stuff.
495
4962008-05-18  Damon Chaplin  <damon@gnome.org>
497
498	* src/goocanvasatk.c (goo_canvas_widget_accessible_new): made static.
499
5002008-05-18  Damon Chaplin  <damon@gnome.org>
501
502	* src/goocanvas.c (goo_canvas_expose_event): when clipping, clip to
503	the intersection of the canvas bounds and the expose bounds, to avoid
504	problems with cairo's coordinate limits. (This was apparent in the
505	scalability demo - it wasn't redrawing properly at the bottom of the
506	canvas.)
507
5082008-05-09  Damon Chaplin  <damon@gnome.org>
509
510	* src/goocanvasitemmodel.h:
511	* src/goocanvasitem.h: removed _CLASS macros since they are interfaces.
512	(From Masatake YAMATO).
513
5142008-05-09  Damon Chaplin  <damon@gnome.org>
515
516	* demo/widgets-demo.c (remove_widget_clicked): use g_list_delete_link
517	to update the GList, to avoid a crash.
518
5192008-04-27  Damon Chaplin  <damon@gnome.org>
520
521	* Released GooCanvas 0.10
522
5232008-04-06  Armin Burgmeier  <armin@openismus.com>
524
525	* src/goocanvastable.c: Implemented grid lines between table items by
526	adding "horz-grid-line-width", "vert-grid-line-width",
527	"x-border-spacing" and "y-border-spacing" properties.
528	(Patch applied by Damon with a few changes.)
529
530	* demo/mv-table-demo.c:
531	* demo/table-demo.c: added tests for the gridlines.
532
5332008-04-04  Damon Chaplin  <damon@gnome.org>
534
535	* docs/coordinates.xml:
536	* docs/architecture.xml: new sections.
537
538	* docs/creating-items.xml: rewritten.
539
540	* src/goocanvasitemmodel.c (goo_canvas_item_model_set_parent):
541	* src/goocanvasitem.c (goo_canvas_item_set_parent): note in the docs
542	that the "parent" property can be used to set the parent, but that
543	these functions are only for implementing new items (a bit confusing).
544
545	* src/goocanvasitem.c (goo_canvas_item_is_visible): fixed a bug
546	where if the item doesn't support the method it would just return
547	TRUE, but it should also check the ancestors are visible.
548
549	* src/goocanvasitemsimple.c (goo_canvas_item_simple_set_property)
550	(goo_canvas_item_model_simple_set_property): use the _remove()
551	functions instead of the find_child()/remove_child() code.
552
5532008-03-27  Damon Chaplin  <damon@gnome.org>
554
555	* src/goocanvasitem.c (goo_canvas_item_get_simple_transform):
556	* src/goocanvasitemmodel.c (goo_canvas_item_model_get_simple_transform):
557	new functions to do opposite of set_simple_transform().
558
559	* demo/mv-demo.c (test_simple_transforms):
560	* demo/demo.c (test_simple_transforms): added some test code for above.
561
5622008-03-27  Damon Chaplin  <damon@gnome.org>
563
564	* docs/wysiwyg.xml: new section to document WYSIWYG stuff.
565
5662008-03-23  Damon Chaplin  <damon@gnome.org>
567
568	* src/goocanvasitemsimple.c: made "stroke-color-rgba" and
569	"fill-color-rgba" properties read/write.
570
571	* configure.in (pkg_modules): depend on cairo >= 1.4.0 for
572	cairo_pattern_get_rgba().
573
574	* demo/demo.c (test_color_properties): added some test code.
575
5762008-02-25  Damon Chaplin  <damon@gnome.org>
577
578	* src/goocanvasitemsimple.c: added default implementations for the
579	simple_update/paint/get_item_at() virtual functions that call
580	simple_create_path(). These make it easier for language bindings.
581	Based on patch from Jonathon Jongsma.
582
5832008-02-25  Damon Chaplin  <damon@gnome.org>
584
585	* src/goocanvastext.c (goo_canvas_text_get_natural_extents): added
586	function to get the natural extents of the text.
587
5882007-11-23  Damon Chaplin  <damon@gnome.org>
589
590	* src/goocanvastable.c (goo_canvas_table_size_allocate_pass1): when
591	shrinking, make sure the extra value is always decreasing, so we don't
592	get into an infinite loop.
593
5942007-11-18  Damon Chaplin  <damon@gnome.org>
595
596	* src/goocanvas.c: added support for "clear-background" property,
597	patch from Grahame Bowland.
598
5992007-11-18  Damon Chaplin  <damon@gnome.org>
600
601	* src/goocanvasitem.c (goo_canvas_item_get_child_property)
602	(goo_canvas_item_set_child_property):
603	* src/goocanvasitemmodel.c (goo_canvas_item_model_get_child_property)
604	(goo_canvas_item_model_set_child_property): new functions to get/set
605	individual child properties (to help language bindings).
606
607	* demo/demo-table.c (create_demo_item):
608	* demo/mv-demo-table.c (create_demo_item): test the above.
609
610	* src/goocanvasitem.c:
611	* src/goocanvasitemmodel.c: fixed some docs that wrongly say functions
612	are for implementing new items only.
613
6142007-11-13  Murray Cumming  <murrayc@murrayc.com>
615
616	* src/goocanvasitem.c: goo_canvas_item_add_child():
617	* src/goocanvasitemmodel.c: goo_canvas_item_model_add_child():
618	Add a debugging check to make sure the child is not the same as the
619	parent, preventing an endless loop.
620
6212007-11-13  Murray Cumming  <murrayc@murrayc.com>
622
623	* src/goocanvasimage.c: goo_canvas_image_set_common_property():
624	Support setting the pixbuf property to NULL.
625
6262007-11-13  Murray Cumming  <murrayc@murrayc.com>
627
628	* src/goocanvas.c: goo_canvas_render(): Call goo_canvas_update()
629	if necessary, as suggested by Damon, to fix a crash when rendering
630	a GooCanvasTable that has never been shown on screen.
631
6322007-08-13  Damon Chaplin  <damon@gnome.org>
633
634	* Released GooCanvas 0.9
635
6362007-08-13  Damon Chaplin  <damon@gnome.org>
637
638	* src/goocanvastext.c: added "wrap" property (patch from James
639	Dietrich).
640
641	* src/goocanvastable.c: use static goo_canvas_table_parent_iface
642	and goo_canvas_table_model_parent_iface variables which are set in
643	the class_init functions. That makes it much easier to call the
644	GooCanvasGroup methods when needed.
645
646	* src/goocanvasitemsimple.c (goo_canvas_item_simple_set_parent): call
647	goo_canvas_item_set_canvas() so items can do whatever is needed
648	(e.g. groups can pass the canvas on to children).
649
650	* src/goocanvasitem.c (goo_canvas_item_request_update): don't use
651	return here as it is a void function.
652
653	* src/goocanvastable.c (goo_canvas_table_remove_child):
654	* src/goocanvasgroup.c (goo_canvas_group_remove_child): check the
655	child_num arg is valid.
656
6572007-06-20  Damon Chaplin  <damon@gnome.org>
658
659	* src/goocanvas.c: added "automatic-bounds", "bounds-from-origin" and
660	"bounds-padding" properties, used to calculate the canvas bounds
661	automatically.
662
663	* demo/demo.c (change_bounds_clicked):
664	* demo/mv-demo.c (change_bounds_clicked): test the above.
665
6662007-06-19  Damon Chaplin  <damon@gnome.org>
667
668	* src/goocanvas.c: added "integer-layout" boolean property, to specify
669	that all layout in the canvas (i.e. in GooCanvasTable) is done to the
670	nearest integer.
671
672	* src/goocanvastable.c: implement integer layout.
673
674	* demo/table-demo.c:
675	* demo/mv-table-demo.c: tests for integer layout.
676
6772007-05-15  Damon Chaplin  <damon@gnome.org>
678
679	* src/goocanvas.c: added "scale-x" and "scale-y" properties to set
680	the horizontal and vertical scale independently. Note that if items
681	use the visibility threshold setting it will compare it to the minimum
682	of scale_x and scale_y.
683
684	* demo/demo.c: added "Scale X" and "Scale Y" spinbuttons.
685
6862007-05-15  Damon Chaplin  <damon@gnome.org>
687
688	* src/goocanvas.c (goo_canvas_style_set, goo_canvas_realize): reset
689	the window backgrounds to nothing, to avoid flicker when scrolling.
690	(This happened due to the delay between X clearing the window and
691	GooCanvas repainting it.)
692	(goo_canvas_expose_event): clear the background ourselves here.
693
6942007-05-14  Damon Chaplin  <damon@gnome.org>
695
696	* src/goocanvas.c (goo_canvas_set_property)
697	(goo_canvas_set_bounds): queue a redraw of the widget.
698	(goo_canvas_expose_event): clip to the canvas bounds if necessary.
699
700	* demo/mv-demo.c (change_bounds_clicked):
701	* demo/demo.c (change_bounds_clicked): test changing the bounds
702	dynamically.
703
7042007-05-13  Damon Chaplin  <damon@gnome.org>
705
706	* src/goocanvaspath.c: use a common GooCanvasPathData like the other
707	standard items. This fixes a crash where the model's path_commands
708	GArray was updated but the view still pointed to the old GArray
709	which had been freed.
710
711	* demo/mv-demo-paths.c:
712	* demo/demo-paths.c: added a button to test changing the path data
713	dynamically.
714
7152007-05-11  Damon Chaplin  <damon@gnome.org>
716
717	* demo/demo-large-rect.c:
718	* demo/demo-large-line.c:
719	* demo/demo-large-items.c: new demo and items to show how to create a
720	very large canvas and very large items.
721
722	* src/goocanvasitemsimple.c (goo_canvas_item_simple_get_line_width):
723	added utility function to get an item's line width.
724	Also changed default line width property value to 2.0, and returned
725	canvas line width setting if item's line width isn't set.
726
727	* src/goocanvasrect.c (goo_canvas_rect_update):
728	* src/goocanvaspolyline.c (goo_canvas_polyline_reconfigure_arrows): use
729	the above function to get the line width.
730
7312007-04-30  Damon Chaplin  <damon@gnome.org>
732
733	* src/goocanvas.c (goo_canvas_create_cairo_context): if the GooCanvas
734	isn't realized, use a temporary image surface to create the cairo_t.
735	Hopefully that will result in exactly the same bounds of items.
736	(goo_canvas_get_item): initialize item to NULL.
737
7382007-04-27  Damon Chaplin  <damon@gnome.org>
739
740	* src/goocanvasitem.h:
741	* src/goocanvasutils.c (goo_canvas_bounds_get_type): added type stuff
742	for language bindings (patch from Murray Cumming).
743
7442007-04-25  Damon Chaplin  <damon@gnome.org>
745
746	* src/goocanvasitemmodel.c (_goo_canvas_item_model_emit_child_added)
747	(_goo_canvas_item_model_emit_changed): new simple functions to emit
748	signals faster (avoids signal name lookups).
749
750	* src/goocanvasitemsimple.c
751	(goo_canvas_item_model_simple_set_property)
752	(goo_canvas_item_model_simple_set_transform)
753	(goo_canvas_item_model_simple_set_style):
754	* src/goocanvasgroup.c (goo_canvas_group_model_add_child): use the
755	above functions for a little speedup.
756
7572007-04-25  Damon Chaplin  <damon@gnome.org>
758
759	* demo/mv-scalability-demo.c:
760	* demo/scalability-demo.c: instead of connecting signals to all items
761	we just use a handler on the root item. Also added a switch to turn
762	off the text items, to see the difference in performance (a lot).
763	Without text items we can startup with 100,000 items in 1 second
764	for a simple canvas, or 4 seconds for model-view (compared to 4 seconds
765	and 7 seconds with text items).
766
767	* src/goocanvasitemsimple.c (goo_canvas_item_simple_set_model): only
768	setup the accessibility stuff if accessibility is enabled (as it is
769	quite slow if you have lots of items).
770
7712007-04-25  Damon Chaplin  <damon@gnome.org>
772
773	* src/goocanvasrect.c (goo_canvas_rect_update): added optimized
774	function to calculate the bounds without using cairo.
775
7762007-04-16  Damon Chaplin  <damon@gnome.org>
777
778	* src/goocanvasitem.c (goo_canvas_item_animate_cb): check keep_source
779	before updating the item so we don't use the freed animation data.
780
7812007-04-16  Damon Chaplin  <damon@gnome.org>
782
783	* src/goocanvasitemsimple.c (goo_canvas_item_simple_get_path_bounds):
784	handle empty bounds for an item's fill or stroke. cairo 1.4.x returns
785	0.0 for x1/y1/x2/y2 in that case, though older versions of cairo
786	returned odd values. So I've added a workaround for that as well.
787
7882007-04-05  Damon Chaplin  <damon@gnome.org>
789
790	* src/goocanvas.c (goo_canvas_key_press, goo_canvas_key_release): only
791	emit "key-press" and "key-release" signals on items if the canvas has
792	the focus. (We were incorrectly emitting signals if an embedded widget
793	had the focus, as the events were propagating up to the canvas.)
794
7952007-04-03  Damon Chaplin  <damon@gnome.org>
796
797	* Released GooCanvas 0.8
798
7992007-04-03  Damon Chaplin  <damon@gnome.org>
800
801	* demo/mv-demo.c (create_canvas_primitives):
802	* demo/demo.c (create_canvas_primitives): set the maximum scale to 50,
803	since if we go above that we hit the cairo 16-bit limit and the large
804	rectangle isn't painted correctly.
805
806	* src/goocanvasitemsimple.c (goo_canvas_item_simple_install_common_properties): improved docs for fill/stroke properties.
807
808	* src/goocanvaswidget.c (goo_canvas_widget_new)
809	(goo_canvas_widget_set_widget): keep our own reference to the widget,
810	rather than just relying on the canvas widget's reference. Otherwise
811	once the widget is removed from the canvas we have an invalid pointer.
812
8132007-03-30  Damon Chaplin  <damon@gnome.org>
814
815	* src/goocanvasutils.c (goo_canvas_boolean_handled_accumulator): new
816	function, copied from _gtk_boolean_handled_accumulator().
817
818	* src/goocanvasitem.c (goo_canvas_item_base_init): use the above
819	accumulator for the event signals, so returning TRUE from a handler
820	stops the signal.
821
822	* src/goocanvasitemsimple.h (struct _GooCanvasItemSimpleData):
823	* src/goocanvasitem.h (struct _GooCanvasItemIface): added a few bits
824	that will be needed to support tooltips with GTK+ 2.12. I have a patch
825	to support tooltips but I don't want to depend on GTK+ 2.12 yet.
826
8272007-03-28  Damon Chaplin  <damon@gnome.org>
828
829	* src/goocanvasstyle.c (goo_canvas_style_set_fill_options): check if
830	the fill pattern is set to NULL, which is used to reset any fill
831	pattern or color. If it is, don't set the cairo source and return
832	FALSE.
833
834	* demo/demo.c (move_ellipse_clicked): set the fill pattern to NULL
835	occasionally to test the above.
836
8372007-03-27  Damon Chaplin  <damon@gnome.org>
838
839	* src/goocanvas.c: added "background-color" and "background-color-rgb"
840	properties to set the background color of the canvas, based on a patch
841	from Gian Mario Tagliaretti.
842
843	* demo/demo.c (create_canvas_primitives):
844	* demo/mv-demo.c (create_canvas_primitives): use above properties.
845
8462007-03-16  Murray Cumming  <murrayc@murrayc.com>
847
848	* src/goocanvasitemsimple.h: Change the struct field name from
849	private to priv, to avoid problems when using this from C++.
850
8512007-03-08  Damon Chaplin  <damon@gnome.org>
852
853	* src/goocanvasitemsimple.h (struct _GooCanvasItemSimpleData): use
854	guints for the bitflags rather than the enum types, since that is what
855	GTK+ does. Maybe enums cause a problem because of being signed ints.
856	Also added cache_setting which we may use in future.
857	(struct _GooCanvasItemSimple): added private pointer to allow a bit
858	of expansion in future (e.g. maybe a cache).
859
8602007-03-08  Damon Chaplin  <damon@gnome.org>
861
862	* src/goocanvaswidget.c (goo_canvas_widget_set_canvas): unparent the
863	widget if the canvas is set to NULL (i.e. when the item is removed
864	from the canvas).
865
8662007-03-08  Damon Chaplin  <damon@gnome.org>
867
868	* src/goocanvasitemmodel.c (goo_canvas_item_model_remove):
869	* src/goocanvasitem.c (goo_canvas_item_remove): new convenience
870	functions to easily remove items & models from the canvas.
871
872	* demo/mv-demo-features.c (on_button_press):
873	* demo/demo-features.c (on_button_press):
874	* demo/demo.c (on_button_press):
875	* demo/mv-demo.c (on_button_press):
876	* demo/widgets-demo.c (remove_widget_clicked): use new remove()
877	functions to test them.
878
879	* docs/goocanvas-sections.txt: rearranged GooCanvasItem/Model to put
880	commonly-used functions first, and added remove() functions.
881
8822007-03-08  Damon Chaplin  <damon@gnome.org>
883
884	* src/goocanvastext.[hc]: added ellipsize property, and used bit flags
885	to cut down on memory use a bit.
886
887	* demo/demo.c (setup_texts): added test for ellipsized text.
888
889	* demo/mv-demo.c:
890	* demo/mv-demo-table.c:
891	* demo/mv-demo-clipping.c: updated model-view demos, adding new stuff
892	from simple demo.
893
8942007-03-07  Damon Chaplin  <damon@gnome.org>
895
896	* src/*.c: added notes to all functions that are only meant to be used
897	when implementing new canvas items.
898
899	* docs/goocanvas-sections.txt: placed all the functions only used when
900	implementing new canvas items together at the bottom.
901
9022007-03-06  Damon Chaplin  <damon@gnome.org>
903
904	* src/goocanvasitem.c (goo_canvas_item_get_items_at): if the item
905	doesn't support this method just return found_items.
906
907	* src/goocanvas.c (goo_canvas_create_cairo_context): made this public.
908
9092007-03-06  Damon Chaplin  <damon@gnome.org>
910
911	* */*: added 'const' to a number of arguments taking a cairo_matrix_t*
912	or a GooCanvasBounds*.
913
9142007-03-06  Damon Chaplin  <damon@gnome.org>
915
916	* src/goocanvasitem.[hc]: added get_requested_height() method.
917
918	* src/goocanvastable.c: Reworked a lot of code to support
919	width-for-height layout. This gets the requested area of all children,
920	calculates the column widths, then checks if any children want to
921	change their requested height given their allocated width. Text items
922	change their requested height based on their width, so this results in
923	a better layout.
924
925	* src/goocanvastext.h (struct _GooCanvasText): added layout_width to
926	store the width used for the PangoLayout. This initially comes from
927	the text's width property, but can be modified when the text item
928	is layed out in a container like GooCanvasTable.
929
930	* src/goocanvastext.c (goo_canvas_text_get_requested_height):
931	calculates the requested height for the given width, or just returns
932	-1 if the text item is rotated or has a clip path, in which case the
933	original height is used.
934	(goo_canvas_text_init, goo_canvas_text_create_layout)
935	(goo_canvas_text_update): use layout_width.
936
937	* demo/demo-table.c (create_width_for_height_table): added tests for
938	width-for-height layout.
939
940	* demo/demo-clipping.c (setup_canvas): added text item to check
941	clipping works OK with them.
942
9432007-02-27  Damon Chaplin  <damon@gnome.org>
944
945	* Released GooCanvas 0.7
946
9472007-02-27  Damon Chaplin  <damon@gnome.org>
948
949	* src/goocanvas.c (goo_canvas_get_items_in_area): new function to
950	get items inside or outside a given area.
951
952	* demo/demo.c: added little test for goo_canvas_get_items_at() and
953	goo_canvas_get_items_in_area().
954
9552007-02-27  Damon Chaplin  <damon@gnome.org>
956
957	* src/goocanvasitemmodel.[hc]:
958	* src/goocanvasitem.[hc]: used name "transform" for all arguments
959	to get/set_transform functions.
960
9612007-02-27  Damon Chaplin  <damon@gnome.org>
962
963	* src/goocanvasitemmodel.[hc]:
964	* src/goocanvasitem.[hc]: changed get_transform() method to take a
965	cairo_matrix_t* to fill in, and return a boolean if a transform is set.
966	This is better for bindings.
967
968	* src/goocanvasitemsimple.c: updated get_transform() methods.
969
9702007-02-27  Damon Chaplin  <damon@gnome.org>
971
972	* src/goocanvasitem.[hc]: changed get_item_at method to get_items_at
973	which returns a list of found items rather than a single found item.
974
975	* src/goocanvasitemsimple.[hc]: changed get_item_at() method to
976	is_item_at() which just returns a boolean, and updated to new API.
977
978	* src/goocanvas.c (goo_canvas_get_item_at): updated to use new API.
979	(goo_canvas_get_items_at): new function to return list of found items.
980
981	* src/goocanvastable.c (goo_canvas_table_get_items_at):
982	* src/goocanvasgroup.c (goo_canvas_group_get_items_at):
983	* src/goocanvasimage.c (goo_canvas_image_is_item_at):
984	* src/goocanvaspolyline.c (goo_canvas_polyline_is_item_at):
985	* src/goocanvastext.c (goo_canvas_text_is_item_at):
986	* src/goocanvaswidget.c (goo_canvas_widget_is_item_at):
987	* docs/creating-items.xml:
988	* demo/demo-item.c (goo_demo_item_is_item_at): updated for new API.
989
9902007-02-25  Damon Chaplin  <damon@gnome.org>
991
992	* src/goocanvasitemsimple.c: added "hint-metrics" property so people
993	can use hinted metrics for prettier text if they aren't scaling the
994	canvas at all.
995
996	* src/goocanvasstyle.c: added goo_canvas_style_hint_metrics_id quark.
997
998	* src/goocanvasutils.c (goo_cairo_hint_metrics_get_type): added enum
999	stuff for cairo_hint_metrics_t.
1000
1001	* src/goocanvastext.c (goo_canvas_text_create_layout): use hint metrics
1002	property.
1003
10042007-02-25  Damon Chaplin  <damon@gnome.org>
1005
1006	* src/goocanvas.c (goo_canvas_create_cairo): use CAIRO_ANTIALIAS_GRAY
1007	as the default antialiasing mode, as that is what is recommended when
1008	using unhinted text. (subpixel antialiasing looks really bad.)
1009
10102007-02-25  Damon Chaplin  <damon@gnome.org>
1011
1012	* src/*.c: checked over all finalize methods and moved code to dispose
1013	methods where appropriate. (Dispose methods should be used to unref
1014	any other objects.) This was done to help the Ruby bindings.
1015	It was a bit fiddly so it might cause a few bugs.
1016
1017	* src/goocanvasutils.c (goo_cairo_matrix_copy)
1018	(goo_cairo_matrix_free): allocate and free with g_slice_new/free() as
1019	that is what was being used in GooCanvasItemSimple.
1020
1021	* demo/scalability-demo.c: added a test for a very wide canvas, almost
1022	up to the 31-bit GDK window size limit. (It is slow to start though.)
1023
10242007-02-24  Damon Chaplin  <damon@gnome.org>
1025
1026	* demo/widgets-demo.c (on_delete_event):
1027	* demo/units-demo.c (on_delete_event):
1028	* demo/mv-scalability-demo.c (on_delete_event):
1029	* demo/scalability-demo.c (on_delete_event):
1030	* demo/mv-demo.c (on_delete_event):
1031	* demo/demo.c (on_delete_event): use gtk_main_quit() rather than exit()
1032	here, so GTK+ destroys the window and the finalization code gets
1033	tested.
1034
1035	* src/goocanvas.c (goo_canvas_remove): implement this so embedded
1036	widgets are removed properly.
1037
10382007-02-20  Damon Chaplin  <damon@gnome.org>
1039
1040	* demo/demo-table.c:
1041	* demo/mv-demo-table.c: moved table-demo.c into main demo app, and
1042	made a model-view version.
1043
10442007-02-20  Damon Chaplin  <damon@gnome.org>
1045
1046	* src/goocanvastable.c (goo_canvas_table_get_item_at)
1047	(goo_canvas_table_paint): if the table was shrunk below its requested
1048	size, clip the children if appropriate.
1049
1050	* src/goocanvastable.c (goo_canvas_table_get_item_at)
1051	(goo_canvas_table_paint):
1052	* src/goocanvasgroup.c (goo_canvas_group_get_item_at)
1053	(goo_canvas_group_paint): check the bounds and handle the clip path.
1054
1055	* demo/table-demo.c (create_demo_table): added parameters and created
1056	a second table of shapes, this time with the items shrunk and clipped.
1057
10582007-02-20  Damon Chaplin  <damon@gnome.org>
1059
1060	* src/goocanvastext.c (goo_canvas_text_create_layout):
1061	(goo_canvas_text_get_item_at): use the ink rect as well as the logical
1062	rect when calculating the bounds or doing hit-testing.
1063
1064	* src/goocanvastable.c (goo_canvas_table_size_allocate_pass1): shrink
1065	homogeneous tables if appropriate.
1066
1067	* src/goocanvaswidget.c (goo_canvas_widget_get_item_at): return the
1068	widget item if the point is within its bounds.
1069
1070	* src/goocanvas.c (goo_canvas_render): if bounds are passed in set
1071	the clip path to the bounds.
1072
1073	* demo/demo.c (write_pdf_clicked): added code to test clipped painting.
1074
10752007-02-19  Damon Chaplin  <damon@gnome.org>
1076
1077	* demo/scalability-demo.c (setup_canvas): set the font on the root
1078	group so we don't need to set it on all the text items.
1079	Also output the time to the first expose.
1080
1081	* demo/mv-scalability-demo.c: new demo based on scalability-demo.c.
1082
10832007-02-19  Damon Chaplin  <damon@gnome.org>
1084
1085	* demo/demo.c:
1086	* demo/mv-demo.c:
1087	* demo/demo-animation.c:
1088	* demo/mv-demo-animation.c: made the file-global variables static so
1089	they don't clash, and updated the demos a bit.
1090
10912007-02-19  Damon Chaplin  <damon@gnome.org>
1092
1093	* configure.in:
1094	* src/Makefile.am: rewrote the stuff that handles the autogeneration
1095	of goocanvasmarshal.[hc] and goocanvasenumtypes.[hc], copying what
1096	GTK+ does. It now has a --disable-rebuilds option to disable the
1097	autogeneration and it doesn't try autogeneration if Perl isn't
1098	available.
1099
11002007-02-17  Damon Chaplin  <damon@gnome.org>
1101
1102	* Released GooCanvas 0.6
1103
11042007-02-17  Damon Chaplin  <damon@gnome.org>
1105
1106	* src/goocanvasitemsimple.h (struct _GooCanvasItemSimpleClass): renamed
1107	create_path, update, paint and get_item_at class methods to
1108	simple_create_path, simple_update, simple_paint and simple_get_item_at.
1109	This avoids confusion with the GooCanvasItem interface methods with the
1110	same name (and may avoid problems with language bindings etc.)
1111
1112	* src/goocanvasellipse.c (goo_canvas_ellipse_class_init):
1113	* src/goocanvasimage.c (goo_canvas_image_class_init):
1114	* src/goocanvaspath.c (goo_canvas_path_class_init):
1115	* src/goocanvaspolyline.c (goo_canvas_polyline_class_init):
1116	* src/goocanvasrect.c (goo_canvas_rect_class_init):
1117	* src/goocanvastext.c (goo_canvas_text_class_init):
1118	* src/goocanvaswidget.c (goo_canvas_widget_class_init):
1119	* demo/demo-item.c (goo_demo_item_class_init):
1120	* src/goocanvasitemsimple.c: updated use of above class methods.
1121
1122	* src/goocanvasgroup.c (goo_canvas_group_update): handle children with
1123	empty bounds (i.e. ignore their bounds when computing the group's
1124	bounds).
1125
1126	* src/goocanvastable.c (goo_canvas_table_paint)
1127	(goo_canvas_table_get_item_at):
1128	* src/goocanvasgroup.c (goo_canvas_group_get_item_at)
1129	(goo_canvas_group_paint): don't check the
1130	child bounds here. Leave it up to the children to do that.
1131
1132	* src/goocanvasitemsimple.c (goo_canvas_item_simple_get_item_at)
1133	(goo_canvas_item_simple_paint): check the item's bounds here.
1134
11352007-02-15  Damon Chaplin  <damon@gnome.org>
1136
1137	* src/goocanvasutils.c:
1138	* src/goocanvaspath.c: moved data structures and code for parsing and
1139	creating SVG paths from goocanvaspath.[hc] to goocanvasutils.[hc].
1140	Added goo_canvas_parse_path_data() and goo_canvas_create_path() public
1141	functions.
1142
1143	* src/goocanvasitemsimple.c: added "clip-path" and "clip-fill-rule"
1144	properties to specify the clip path and fill rule, and used these
1145	to calculate bounds, paint, and do hit testing.
1146
1147	* src/goocanvasitemsimple.h (struct _GooCanvasItemSimpleData): added
1148	clip_path_commands and clip_fill_rule.
1149
1150	* src/goocanvastext.c (goo_canvas_text_set_model):
1151	* src/goocanvasrect.c (goo_canvas_rect_set_model):
1152	* src/goocanvaspolyline.c (goo_canvas_polyline_set_model):
1153	* src/goocanvaspath.c (goo_canvas_path_set_model):
1154	* src/goocanvasimage.c (goo_canvas_image_set_model):
1155	* src/goocanvasgroup.c (goo_canvas_group_set_model):
1156	* src/goocanvasellipse.c (goo_canvas_ellipse_set_model): use
1157	goo_canvas_item_simple_set_model() rather than getting parent iface.
1158	(For GooCanvasTable this actually caused a crash as when it called
1159	the GooCanvasGroup function that got the parent iface which pointed to
1160	itself so it got into an infinite loop.)
1161
1162	* demo/mv-demo-clipping.c:
1163	* demo/demo-clipping.c: new files for clipping demo pages.
1164
1165	* demo/Makefile.am:
1166	* demo/mv-demo.c:
1167	* demo/demo.c: added clipping pages.
1168
11692007-02-13  Damon Chaplin  <damon@gnome.org>
1170
1171	* src/goocanvas.c (goo_canvas_size_allocate): only allocate the child
1172	widgets if we are realized, otherwise it crashes.
1173
11742007-02-13  Damon Chaplin  <damon@gnome.org>
1175
1176	* src/goocanvasitemmodel.c (goo_canvas_item_model_animate):
1177	* src/goocanvasitem.c (goo_canvas_item_animate): added "absolute"
1178	parameter, and rewrote the animation code, using the same code for
1179	GooCanvasItem and GooCanvasItemModel.
1180
1181	* demo/demo-animation.c:
1182	* demo/mv-demo-animation.c: new files for animation demo pages.
1183
1184	* demo/mv-demo.c:
1185	* demo/demo.c: added new animation pages and updated animation calls.
1186
11872007-02-12  Damon Chaplin  <damon@gnome.org>
1188
1189	* src/goocanvasitemmodel.c (goo_canvas_item_model_set_simple_transform):
1190	* src/goocanvasitem.c (goo_canvas_item_set_simple_transform): convert
1191	rotation to radians.
1192
11932007-02-09  Damon Chaplin  <damon@gnome.org>
1194
1195	* demo/demo-item.c (goo_demo_item_update): don't convert bounds to
1196	device space.
1197
1198	* src/*.h: added padding to all *Class structs, to allow a bit of
1199	expansion without breaking backwards compatibility.
1200
1201	* docs/*.xml: added example code to the introductory sections.
1202	Needs more explanation at some point.
1203
1204	* configure.in:
1205	* src/Makefile.am: added libtool version numbers.
1206
12072007-02-08  Damon Chaplin  <damon@gnome.org>
1208
1209	* src/goocanvasitemmodel.c
1210	(goo_canvas_item_model_set_simple_transform):
1211	* src/goocanvasitem.c (goo_canvas_item_set_simple_transform): new
1212	convenience functions to set the position, scale and rotation easily.
1213
1214	* demo/demo.c (move_ellipse_clicked): added tests for
1215	goo_canvas_item_set_simple_transform().
1216
1217	* */*: more documentation updates. I've started adding a few
1218	introductory sections, tidied up a few bits, and tried to update all
1219	the docs that referred to the old model/view terminology.
1220
12212007-02-08  Damon Chaplin  <damon@gnome.org>
1222
1223	* */*: more documentation updates. It is 100% complete now, though it
1224	still needs docs on the optional model/view split and creating new
1225	items.
1226
12272007-02-07  Damon Chaplin  <damon@gnome.org>
1228
1229	* src/goocanvasutils.c (goo_canvas_query_child_properties): check if
1230	type is classed before calling g_type_interface_peek().
1231
12322007-02-06  Damon Chaplin  <damon@gnome.org>
1233
1234	* src/goocanvas.[hc]: updated docs.
1235
12362007-02-04  Damon Chaplin  <damon@gnome.org>
1237
1238	* src/goocanvasstyle.[hc]: extern the GQuarks in the header and define
1239	them in the .c file.
1240
12412007-02-04  Damon Chaplin  <damon@gnome.org>
1242
1243	* src/goocanvasitemmodel.c (goo_canvas_item_model_base_init): fix type
1244	of "parent" property, from Gian Mario Tagliaretti.
1245
12462007-02-04  Damon Chaplin  <damon@gnome.org>
1247
1248	* src/goocanvasitemsimple.c (goo_canvas_item_simple_check_style): fixed
1249	bug where if item was using its parent's style it wouldn't get updated.
1250
1251	* */*: documented most of the other symbols. I just need to document
1252	the 2 main interfaces - GooCanvasItemIface and GooCanvasItemModelIface,
1253	check it all over for out-of-date docs, and document the optional
1254	model/view split a bit more. (And maybe a section on writing new items)
1255
12562007-02-02  Damon Chaplin  <damon@gnome.org>
1257
1258	* */*: updated docs for all canvas items & models.
1259
12602007-02-01  Damon Chaplin  <damon@gnome.org>
1261
1262	* src/goocanvastable.c: finished table item. I think the only API
1263	breakage this introduces is that GooCanvasItemSimple subclasses that
1264	override the update() class method must now return the bounds in user
1265	space rather than device space. (This is needed to do the table
1266	layout.)
1267
1268	* demo/table-demo.c: added more test tables with various transforms
1269	and settings.
1270
1271	* src/goocanvasitem.c (goo_canvas_item_get_requested_area)
1272	(goo_canvas_item_allocate_area)
1273	(goo_canvas_item_get_transform_for_child) : new functions and interface
1274	methods to support GooCanvasTable and other layout containers.
1275
1276	* src/goocanvasitemsimple.c: added support for GOO_CANVAS_ITEM_HIDDEN,
1277	initialized the model's visibility setting to GOO_CANVAS_ITEM_VISIBLE.
1278	(goo_canvas_item_simple_update): split part of it out into
1279	goo_canvas_item_simple_update_internal and updated slightly.
1280	(goo_canvas_item_simple_get_requested_area)
1281	(goo_canvas_item_simple_allocate_area): new functions to support
1282	GooCanvasTable and other layout containers.
1283	(goo_canvas_item_simple_get_path_bounds): don't convert to device space
1284	as some code needs the bounds in user space.
1285
1286	* src/goocanvas.c (goo_canvas_convert_to_item_space)
1287	(goo_canvas_convert_from_item_space): used the new
1288	goo_canvas_item_get_transform_for_child() function to get the transform
1289	for each item.
1290
1291	* src/goocanvasutils.h: added GOO_CANVAS_ITEM_HIDDEN visibility setting
1292	which is used for items which are invisible and not allocated any space
1293	in containter items like GooCanvasTable.
1294
1295	* src/goocanvasgroup.c (goo_canvas_group_get_item_at)
1296	(goo_canvas_group_paint): support GOO_CANVAS_ITEM_HIDDEN.
1297
1298	* src/goocanvaspolyline.c (goo_canvas_polyline_compute_bounds):
1299	* src/goocanvasimage.c (goo_canvas_image_update): leave bounds in user
1300	space.
1301
1302	* src/goocanvaswidget.c: updated to override the GooCanvasItemSimple
1303	update, paint & get_item_at methods instead of the interface methods,
1304	added support for GOO_CANVAS_ITEM_HIDDEN, and added
1305	goo_canvas_widget_allocate_area() implementation.
1306
1307	* src/goocanvastext.c (goo_canvas_text_get_item_at): fixed bug that
1308	meant it didn't work for text items with no fill color/pattern set.
1309
13102006-12-09  Damon Chaplin  <damon@gnome.org>
1311
1312	* docs/goocanvas-sections.txt:
1313	* docs/goocanvas-docs.sgml: use separate sections for model objects,
1314	as gtk-doc doesn't support multiple objects per section.
1315
1316	* docs/Makefile.am (SCANGOBJ_OPTIONS): added --query-child-properties
1317	argument to document child properties (needs cvs gtk-doc).
1318
1319	* src/goocanvasutils.c (goo_canvas_query_child_properties): new
1320	function to allow documentation of child properties with gtk-doc.
1321
1322	* src/goocanvasitemmodel.c:
1323	* src/goocanvasitem.c: added support for child properties of item
1324	models.
1325
1326	* src/goocanvastable.c: beginnings of a new table item to layout child
1327	items. Doesn't do much yet.
1328
1329	* demo/table-demo.c: beginnings of demo for GooCanvasTable.
1330
1331	* src/goocanvasitem.c (goo_canvas_item_animate): clarified docs.
1332
1333	* src/goocanvasgroup.c: use goo_canvas_item_add/move/remove_child()
1334	rather than goo_canvas_group_add/move_remove_child() so subclasses can
1335	reuse group's code. Also fix some docs & variable names.
1336
13372006-11-30  Damon Chaplin  <damon@gnome.org>
1338
1339	* src/goocanvasitemsimple.h (struct _GooCanvasItemSimpleClass): added
1340	new update/paint/get_item_at methods that subclasses can override.
1341	If items use these methods GooCanvasItemSimple will perform all the
1342	standard stuff before passing control to them. This makes it much
1343	easier to create simple canvas items.
1344
1345	* demo/demo-item.c:
1346	* src/goocanvaspolyline.c:
1347	* src/goocanvastext.c:
1348	* src/goocanvasimage.c: use the above methods, so we can get rid of
1349	all the boilerplate code.
1350
13512006-11-29  Damon Chaplin  <damon@gnome.org>
1352
1353	* demo/demo-item.[hc]: new demo item to show how to create new items.
1354	There's more boilerplate code than I'd like, but I don't know the best
1355	way to deal with it.
1356
13572006-11-29  Damon Chaplin  <damon@gnome.org>
1358
1359	* */*: major rewrite to make the model optional, so people can choose
1360	to have either a simple canvas or a model/view canvas. (Many people
1361	found the model/view split awkward.) The standard items can be used
1362	in either scenario.
1363
1364	Also added support for cascading styles, with arbitrary properties,
1365	and embedded widget items. I'm in the middle of adding support for
1366	layout items as well (e.g. something like a GtkTable for items).
1367
13682006-10-12  Damon Chaplin  <damon@gnome.org>
1369
1370	* src/goocanvastextview.c (goo_canvas_text_view_create_layout)
1371	(goo_canvas_text_view_get_item_view_at)
1372	(goo_canvas_text_view_paint): patch from Martin Soto to fix a text
1373	positioning bug. The position was wrong when the text width was set
1374	and the alignment wasn't PANGO_ALIGN_LEFT. (Pango uses the set width
1375	to calculate the text origin, but we were using the logical width.)
1376
13772006-10-12  Damon Chaplin  <damon@gnome.org>
1378
1379	* src/goocanvasutils.h:
1380	* src/goocanvasprivate.h: make get_type() declarations public as
1381	they are useful for bindings.
1382
13832006-10-12  Damon Chaplin  <damon@gnome.org>
1384
1385	Applied patch from Paul Davis to use glib_mkenums, slightly modified:
1386
1387	* configure.in: use pkg-config to get the glib_genmarshal and
1388	glib_mkenums binaries.
1389
1390	* src/Makefile.am: use glib_mkenums to generate goocanvasenums.[hc].
1391
1392	* src/goocanvasutils.c: removed goo_canvas_pointer_events_get_type()
1393	and goo_canvas_item_visibility_get_type() as they're generated now.
1394
1395	* src/goocanvasutils.h: removed get_type() declarations that are now
1396	in goocanvasenums.h, and modifed GooCanvasPointerEvents so glib_mkenums
1397	could parse it.
1398
1399	* src/goocanvas.h:
1400	* src/goocanvasitem.c: include goocanvasenums.h.
1401
14022006-10-12  Damon Chaplin  <damon@gnome.org>
1403
1404	* src/goocanvaspolyline.h (struct _GooCanvasPoints): use a separate
1405	typedef declaration for the struct, to help C++ bindings. From Paul
1406	Davis.
1407
1408	* src/goocanvaspath.c (goo_canvas_path_new): use 'const' for the
1409	path_data argument. From Paul Davis.
1410
1411	* src/goocanvaspathview.c (goo_canvas_path_view_create_path): init
1412	last_control_point_x/y to avoid compiler warning.
1413
14142006-09-11  Damon Chaplin  <damon@gnome.org>
1415
1416	* src/goocanvaspolylineview.c: be more careful about using points and
1417	arrow data.
1418
1419	* demo/demo.c (setup_lines): add checks for polylines with 0 and 1
1420	points.
1421
1422	* configure.in: require GTK+ 2.10.0, for GtkUnit (Gian Mario
1423	Tagliaretti).
1424
14252006-08-31  Damon Chaplin  <damon@gnome.org>
1426
1427	* src/goocanvasview.c: added "units", "resolution-x" & "resolution-y"
1428	properties so we can support points, inches and millimeters being used
1429	for item units as well as just pixels. Thus you can create a complete
1430	WYSIWYG printable document. But note that you must use absolute units
1431	for font sizes, i.e. use "px" after the size in any font description
1432	strings, e.g. "Sans 10px".  That stops us scaling fonts twice.
1433	(goo_canvas_view_set_default_line_width): set a reasonable default
1434	line width according to the current units.
1435
1436	* demo/units-demo.c: new demo showing different units in use.
1437
14382006-08-30  Damon Chaplin  <damon@gnome.org>
1439
1440	* src/goocanvasitemviewsimple.c (goo_canvas_item_view_simple_update)
1441	* src/goocanvaspolylineview.c (goo_canvas_polyline_view_update):
1442	added a workaround for cairo limits. Cairo uses fixed point integer
1443	maths and is currently limited to 16-bits for the integer component.
1444	So we remove any current translation before calculating the bounds
1445	of the item, then add it back to the results. This means the 16-bit
1446	limit only applies to items' user space rather than the entire canvas.
1447
1448	* src/goocanvasitemviewsimple.c
1449	(goo_canvas_item_view_simple_get_item_view_at):
1450	* src/goocanvaspolylineview.c
1451	(goo_canvas_polyline_view_get_item_view_at): as above, remove any
1452	current translation before checking if the point is in the item.
1453
1454	* demo/scalability-demo.c: updated to create ~100,000 items, either
1455	rectangles or images. For images it now reuses a single cairo pattern
1456	rather than passing the pixbuf to the GooCanvasImage (which created a
1457	new pattern for each one and ran out of memory). It takes about 10
1458	seconds to setup the canvas which is slower than I'd like, but once
1459	created it seems to work fast enough.
1460
14612006-08-27  Damon Chaplin  <damon@gnome.org>
1462
1463	* src/goocanvasview.c (goo_canvas_view_class_init):
1464	* src/goocanvasitemviewsimple.c (goo_canvas_item_view_simple_class_init)
1465	* src/goocanvasgroupview.c (goo_canvas_group_view_class_init): only
1466	register the accessible factories if accessibility is enabled (i.e.
1467	GtkWidget has registered a factory).
1468
1469	* src/goocanvasitemviewsimple.c (goo_canvas_item_view_simple_setup_accessibility):
1470	* src/goocanvasgroupview.c (goo_canvas_group_view_set_group): only
1471	set the accessible title & description and connect the signal handlers
1472	if accessibility is enabled. (It would be better to not call
1473	atk_gobject_accessible_for_object() at all, as it isn't useful.)
1474
1475	* demo/scalability-demo.c: start of new demo/test for scalability.
1476	We are currently hitting the cairo 16-bit limit (transformed coords
1477	can't be larger than 16-bit ints). A workaround would be nice.
1478	I also want to profile it and see if there are any major bottlenecks.
1479	(Creating canvases with thousands of items is very slow, though
1480	scrolling etc. is OK as long as the canvas is split into groups.)
1481
14822006-08-24  Damon Chaplin  <damon@gnome.org>
1483
1484	* Released GooCanvas 0.4
1485
14862006-08-24  Damon Chaplin  <damon@gnome.org>
1487
1488	* src/*.c: updated docs to point to goo_canvas_view_get_item_view() as
1489	a simple alternative for setting up signal handlers.
1490
1491	* src/goocanvasview.c (goo_canvas_view_pointer_ungrab): only call
1492	gdk_display_pointer_ungrab() if we have an active pointer grab.
1493	So maybe we can now use goo_canvas_view_pointer_ungrab() to ungrab
1494	passive grabs on canvas item views (need to test this though).
1495
14962006-08-23  Damon Chaplin  <damon@gnome.org>
1497
1498	* src/goocanvasview.c: keep an item_to_view hash table so apps can
1499	get the view for particular items (e.g. as an easy alternative for
1500	setting up signal handlers).
1501	(goo_canvas_view_get_item_view): new function to get the item view for
1502	a given item.
1503	(goo_canvas_view_unregister_item_view): new function that implementors
1504	of GooCanvasItemView should call in their finalize method to unregister
1505	the view (so the GooCanvasView removes it from the hash table.)
1506	(goo_canvas_view_create_item_view): add the new item view to the
1507	item_to_view hash table.
1508
1509	* src/goocanvasitemviewsimple.c (goo_canvas_item_view_simple_finalize):
1510	* src/goocanvasgroupview.c (goo_canvas_group_view_finalize): unregister
1511	the item view.
1512	(goo_canvas_group_view_set_parent_view): don't change the canvas view
1513	here any more, since we don't support that.
1514
1515	* demo/simple-demo.c: updated to use simple signal handler setup.
1516
15172006-08-22  Damon Chaplin  <damon@gnome.org>
1518
1519	* src/goocanvasview.c (goo_canvas_view_class_init): 2 minor fixes for
1520	the docs (from Gian Mario Tagliaretti).
1521
15222006-08-15  Damon Chaplin  <damon@gnome.org>
1523
1524	* src/goocanvasutils.h: moved GOO_TYPE_CAIRO_PATTERN stuff here, so
1525	bindings can use it.
1526	Also renamed goo_cairo_line_dash stuff to goo_canvas_line_dash for
1527	consistency.
1528
1529	* src/goocanvasutils.c (goo_canvas_line_dash_newv): new non-varargs
1530	variant of function of goo_canvas_line_dash_new() for bindings.
1531	(from Gustavo J. A. M. Carneiro.)
1532
15332006-08-14  Damon Chaplin  <damon@gnome.org>
1534
1535	* Makefile.am: require automake 1.7, since it is needed for
1536	glib-genmarshal (from Gian Mario Tagliaretti).
1537
15382006-08-08  Damon Chaplin  <damon@gnome.org>
1539
1540	* src/goocanvastextview.c (goo_canvas_text_view_update):
1541	* src/goocanvaspolylineview.c (goo_canvas_polyline_view_update):
1542	* src/goocanvasitemviewsimple.c (goo_canvas_item_view_simple_update):
1543	* src/goocanvasimageview.c (goo_canvas_image_view_update):
1544	* src/goocanvasgroupview.c (goo_canvas_group_view_update): rewrote the
1545	update methods to make sure the bounds is always set and returned
1546	correctly.
1547
15482006-07-26  Damon Chaplin  <damon@gnome.org>
1549
1550	* src/goocanvasgroup.[hc]: added goo_canvas_group_set_model() function,
1551	to set the model of the root group.
1552	* src/goocanvasmodelsimple.c (goo_canvas_model_simple_init): use the
1553	above function.
1554
1555	* src/goocanvas*view.c: support an optional transformation matrix for
1556	each view, which is combined with the underlying item's transform.
1557	(I'm not sure if this will overcomplicate things.)
1558
1559	* src/goocanvasgroupview.c: support generic GooCanvasItems as the
1560	underlying group rather than just GooCanvasGroups. This allows us to
1561	use subclasses of GooCanvasGroupView easily.
1562	(goo_canvas_group_view_set_group): new function to set the underlying
1563	group item, creating child views and setting up signal handlers etc.
1564
15652006-07-21  Damon Chaplin  <damon@gnome.org>
1566
1567	* src/goocanvas*view.c: renamed get_item_at() methods to
1568	get_item_view_at().
1569
1570	* src/goocanvasview.c (goo_canvas_view_get_root_view): new function
1571	to return the root view.
1572	(goo_canvas_view_get_item_view_at): new function to return the item
1573	view at a given point.
1574
15752006-07-19  Damon Chaplin  <damon@gnome.org>
1576
1577	* src/goocanvasatk.c:
1578	* src/goocanvasgroupview.c:
1579	* src/goocanvasimageview.c:
1580	* src/goocanvasitemview.c:
1581	* src/goocanvasitemview.h:
1582	* src/goocanvasitemviewsimple.c:
1583	* src/goocanvaspolylineview.c:
1584	* src/goocanvastextview.c:
1585	* src/goocanvasview.c: changed item view update() and get_bounds()
1586	methods to take a GooCanvasBounds* to fill in, rather than returning
1587	a pointer to a static GooCanvasBounds. This makes it easier for
1588	language bindings.
1589
15902006-07-19  Damon Chaplin  <damon@gnome.org>
1591
1592	* src/goocanvasview.c (goo_canvas_view_scroll): handle scroll events
1593	ourselves, in case we aren't placed directly in a scrolled window.
1594
1595	* src/goocanvasitem.c (goo_canvas_item_get_transform): if the item
1596	doesn't support this method just return NULL.
1597
1598	* demo/demo-fifteen.c: use generic goo_canvas_item_view_get_item()
1599	method to get the item rather than private struct members.
1600
1601	* configure.in: depend on glib 2.10.0 (from Gian Mario Tagliaretti).
1602
1603	* src/goocanvasutils.c (goo_canvas_pointer_events_get_type): use a
1604	flags type rather than an enum type (from Gustavo J. A. M. Carneiro).
1605
1606	* src/goocanvasitem.c (goo_canvas_item_base_init):
1607	* src/goocanvasitemsimple.c:
1608	* src/goocanvasgroup.c: updated to use the flags type for
1609	"pointer-events" instead of enum.
1610
1611 	* src/goocanvasprivate.h:
1612 	* src/goocanvasutils.h: The type GOO_TYPE_CAIRO_MATRIX is used in
1613 	a public interface (a property in the GooCanvasItem interface),
1614 	therefore it has to be public (from Gustavo J. A. M. Carneiro).
1615
16162006-06-08  Damon Chaplin  <damon@gnome.org>
1617
1618	* src/goocanvasitemsimple.c (goo_canvas_item_simple_set_property):
1619	only create the item's style when needed.
1620	(goo_canvas_style_get_type): register boxed type (from Gustavo J. A. M.
1621	Carneiro).
1622
16232006-06-01  Damon Chaplin  <damon@gnome.org>
1624
1625	* demo/demo.c: only add the "Output PDF" option if cairo has PDF
1626	support compiled in.
1627
16282006-05-27  Damon Chaplin  <damon@gnome.org>
1629
1630	* src/*.c: removed ';' after all G_DEFINE_TYPE* macros.
1631
16322006-05-27  Damon Chaplin  <damon@gnome.org>
1633
1634	* autogen.sh: check for AC_CONFIG_HEADER as well as old AM_*.
1635
16362006-05-16  Damon Chaplin  <damon@gnome.org>
1637
1638	* goocanvas.pc.in:
1639	* Makefile.am:
1640	* configure.in: added .pc file (patch from Gian Mario Tagliaretti).
1641
16422006-05-12  Damon Chaplin  <damon@gnome.org>
1643
1644	* src/goocanvastextview.c (goo_canvas_text_view_create_layout): if
1645	there is no text return an empty layout rather than NULL.
1646	(goo_canvas_text_view_get_item_at): check if there is no text first.
1647
1648	* src/goocanvasitemsimple.[hc]: rename operator to op since operator
1649	is a C++ keyword (reported by Yevgen Muntyan).
1650
16512006-04-24  Damon Chaplin  <damon@gnome.org>
1652
1653	* Released GooCanvas 0.3
1654
16552006-04-24  Damon Chaplin  <damon@gnome.org>
1656
1657	* src/goocanvasview.c: added "model", "scale", "anchor", "x1", "y1",
1658	"x2", "y2" properties, and goo_canvas_view_get_bounds() and
1659	goo_canvas_view_get_scale() accessors.
1660	Removed goo_canvas_view_set_anchor() as the property should be enough.
1661	(I think we should only have accessor functions for major properties.)
1662
1663	* src/goocanvasitemview.c (goo_canvas_item_view_is_visible)
1664	(goo_canvas_item_view_get_item_at): removed scale argument. We get it
1665	from the canvas view now, to make the API a little simpler.
1666
1667	* src/goocanvasitemviewsimple.h (struct _GooCanvasItemViewSimple):
1668	added pointer to the canvas view.
1669
1670	* src/*view.[hc]: added canvas view argument to all view creation
1671	functions.
1672
16732006-04-23  Damon Chaplin  <damon@gnome.org>
1674
1675	* src/goocanvasview.c (goo_canvas_view_focus): scroll to show the new
1676	focused item if necessary.
1677	(goo_canvas_view_set_model): set need_update to TRUE.
1678	(goo_canvas_view_focus_check_is_best): try to avoid wild jumps when
1679	moving around with the cursor keys.
1680
16812006-04-22  Damon Chaplin  <damon@gnome.org>
1682
1683	* src/goocanvasview.c: added support for keyboard focus navigation.
1684	(I still need to make it scroll to show the focused item if needed.)
1685
1686	* demo/demo-focus.c: new demo page to test keyboard focus navigation.
1687
1688	* src/goocanvasitemview.c: added "focus-in-event" & "focus-out-event"
1689	signals.
1690
1691	* src/goocanvasitemsimple.c (goo_canvas_item_simple_get_path_bounds):
1692	make sure we do min/max over all points of bounds.
1693
1694	* src/goocanvasview.c (goo_canvas_view_focus_out): emit
1695	"focus_out_event", not "focus_in_event".
1696
16972006-04-19  Damon Chaplin  <damon@gnome.org>
1698
1699	* src/goocanvasitem.c (goo_canvas_item_base_init): added "title" and
1700	"description" properties for accessibility. Note that we only support
1701	per-item settings for the standard canvas items, though more complex
1702	items may want to support per-view settings.
1703
1704	* src/goocanvasitemsimple.c:
1705	* src/goocanvasgroup.c: implemented "title" and "description"
1706	properties.
1707
1708	* src/goocanvas*view.c: set the accessible name & description based
1709	on the item's settings, and update them if changed.
1710
1711	* src/goocanvasatk.c (goo_canvas_item_view_accessible_ref_child):
1712	return the accessible rather than the item view.
1713
17142006-04-18  Damon Chaplin  <damon@gnome.org>
1715
1716	* src/goocanvasview.c (goo_canvas_view_get_model): new function.
1717	(goo_canvas_view_adjustment_value_changed): emit "visible_data_changed"
1718	on accessible object.
1719	(goo_canvas_view_init): initialize default bounds, and create default
1720	adjustments.
1721
1722	* src/goocanvasitemview.[hc]: added new is_visible() method, and
1723	"can-focus" property, and convenience find_child() function.
1724
1725	* src/goocanvasitemviewsimple.c: implemented "can-focus" property
1726	and "is_visible" method.
1727
1728	* src/goocanvasgroupview.c: implemented "can-focus" property and
1729	"is_visible" method, and used same flags field as
1730	GooCanvasItemViewSimple.
1731
1732	* src/goocanvasatk.[c]: new files to support accessibility. Most of
1733	the code has been copied from foocanvas & libgnomecanvas, with slight
1734	changes to handle our model/view split.
1735
1736	* src/goocanvasitemviewsimple.c (goo_canvas_item_view_simple_finalize):
1737	chain up to parent's finalize method.
1738
17392006-04-16  Damon Chaplin  <damon@gnome.org>
1740
1741	* src/goocanvasview.c (propagate_event, emit_pointer_event): ref views
1742	and check they are still valid.
1743
1744	* src/*view.[hc]: made views hold reference on items, to ensure we
1745	never use invalid pointers.
1746
17472006-04-16  Damon Chaplin  <damon@gnome.org>
1748
1749	* demo/simple-demo.c: new very simple demo, also used in docs.
1750
1751	* src/goocanvasitemviewsimple.[hc]: new base class for item views,
1752	so we can share a lot of the common code.
1753
1754	* src/*view.[hc]: updated item views to be a subclass of above.
1755
1756	* src/*.c: removed lots of unused debugging code.
1757
1758	* src/goocanvasitem.c:
1759	* src/goocanvasitemsimple.c:
1760	* src/goocanvasgroup.c: moved "pointer-events" and "transform"
1761	properties, and the "changed" signal to the GooCanvasItem interface.
1762
1763	* src/*.[hc]: updated use of above.
1764
17652006-04-14  Damon Chaplin  <damon@gnome.org>
1766
1767	* src/goocanvasview.c: documented GooCanvasView, though it needs an
1768	overview and demo code.
1769
1770	* src/*.[hc]: documented most of the core objects.
1771
1772	* src/goocanvasutils.h: renamed goo_cairo_dash* to goo_canvas_dash*
1773	for consistency.
1774
1775	* src/goocanvasprivate.h: new header to contain private declarations
1776	that we don't install.
1777
1778	* src/*.[hc]: documented enums & structs on the types page.
1779
17802006-04-13  Damon Chaplin  <damon@gnome.org>
1781
1782	* src/*.[hc]: documented views for standard items.
1783
1784	* src/*.[hc]: documented standard items.
1785
17862006-04-12  Damon Chaplin  <damon@gnome.org>
1787
1788	* configure.in: updated to use newer forms of macros.
1789
1790	* COPYING: added LGPL license.
1791
1792	* src/Makefile.am (libgoocanvasincludedir): install headers into
1793	$(includedir)/goocanvas-1.0 rather than $(includedir)/libgoocanvas-1.0.
1794
1795	* demo/*: moved all the demo code here.
1796
1797	* src/goocanvas.h: new main header to include all the public headers.
1798
1799	* autogen.sh:
1800	* configure.in:
1801	* Makefile.am: setup to use gtk-doc.
1802
1803	* src/Makefile.am: build libgoocanvas as a library now, so we can
1804	document it with gtk-doc. The demo will be moved to a separate
1805	directory.
1806
1807	* src/goocanvastext.h:
1808	* src/goocanvasitem.h: rename a few parameters to match the sources,
1809	since gtk-doc complains if they are different.
1810
18112006-04-11  Damon Chaplin  <damon@gnome.org>
1812
1813	* src/demo-paths.c (create_paths): added more arc tests.
1814
1815	* src/goocanvaspathview.c: finished the elliptical arc and split
1816	up the create_path() function a bit.
1817
18182006-04-10  Damon Chaplin  <damon@gnome.org>
1819
1820	* src/goocanvaspathview.[hc]:
1821	* src/goocanvaspath.[hc]: new path item and view, that uses the same
1822	path spec strings as SVG. I think everything works, except the
1823	elliptical arc, which I haven't finished yet.
1824
1825	* src/demo-paths.c: new demo page to test paths.
1826
18272006-04-08  Damon Chaplin  <damon@gnome.org>
1828
1829	* src/goocanvasitemsimple.[hc]:
1830	* src/goocanvasgroup.[hc]: added "pointer-events" property, like SVG.
1831
1832	* src/goocanvasitemsimple.c (goo_canvas_item_simple_get_path_bounds):
1833	changed to include both the stroke and fill extents, even if they will
1834	not be painted. This is needed to handle the "pointer-events" property.
1835
1836	* src/goocanvasitemsimple.c (goo_canvas_item_simple_check_in_path):
1837	added "pointer_events" argument, to specify which parts of the path
1838	to check.
1839
1840	* src/goocanvasitemview.[hc]: change get_item_at() to take
1841	"is_pointer_event", "parent_visible", and "scale" properties, so we
1842	can handle the "pointer-events" property.
1843
1844	* src/goocanvasgroupview.c (goo_canvas_group_view_get_item_at):
1845	* src/goocanvasellipseview.c (goo_canvas_ellipse_view_get_item_at):
1846	* src/goocanvasimageview.c (goo_canvas_image_view_get_item_at):
1847	* src/goocanvaspolylineview.c (goo_canvas_polyline_view_get_item_at):
1848	* src/goocanvasrectview.c (goo_canvas_rect_view_get_item_at):
1849	* src/goocanvastextview.c (goo_canvas_text_view_get_item_at): updated
1850	to support "pointer-events".
1851
1852	* src/goocanvasutils.[hc]: added GooCanvasPointerEvents enum, and
1853	goo_cairo_line_dash_new().
1854
1855	* src/demo-events.c: new demo page to test "pointer-events" property.
1856
1857	* src/goocanvastextview.c (goo_canvas_text_view_paint): if the fill
1858	pattern	has been explicitly set to NULL, don't paint the text.
1859
18602006-04-03  Damon Chaplin  <damon@gnome.org>
1861
1862	* src/goocanvasview.c (goo_canvas_view_style_set)
1863	(goo_canvas_view_realize): use the base color for the background.
1864
1865	* src/demo.c (create_canvas_primitives): use gtk_widget_modify_base()
1866	to test setting the background color.
1867
18682006-03-24  Damon Chaplin  <damon@gnome.org>
1869
1870	* src/goocanvasitemview.c (goo_canvas_item_view_ensure_updated): new
1871	convenience function to do an immediate update.
1872
1873	* src/goocanvasview.c (goo_canvas_view_update): turned this into a
1874	public function for use by the above.
1875
1876	* src/goocanvastextview.c (goo_canvas_text_view_get_bounds)
1877	(goo_canvas_text_view_get_item_at):
1878	* src/goocanvasrectview.c (goo_canvas_rect_view_get_bounds)
1879	(goo_canvas_rect_view_get_item_at):
1880	* src/goocanvaspolylineview.c (goo_canvas_polyline_view_get_bounds)
1881	(goo_canvas_polyline_view_get_item_at):
1882	* src/goocanvasgroupview.c (goo_canvas_group_view_get_bounds)
1883	(goo_canvas_group_view_get_item_at):
1884	* src/goocanvasimageview.c (goo_canvas_image_view_get_bounds)
1885	(goo_canvas_image_view_get_item_at):
1886	* src/goocanvasellipseview.c (goo_canvas_ellipse_view_get_bounds)
1887	(goo_canvas_ellipse_view_get_item_at): make sure the canvas is updated
1888	first, if needed.
1889
18902006-03-24  Damon Chaplin  <damon@gnome.org>
1891
1892	* src/goocanvasview.c (goo_canvas_view_render): new function to
1893	render all or part of the canvas to a given cairo context.
1894
1895	* src/demo.c: added "Write PDF" test, that creates a pdf file
1896	containing the main canvas.
1897
1898	* src/goocanvasview.[hc]: used a GooCanvasBounds rather than left,
1899	right, top, bottom for the bounds. Also renamed "pixels_per_unit"
1900	to "scale".
1901
1902	* src/goocanvasitemview.[hc]:
1903	* src/goocanvastextview.c (goo_canvas_text_view_paint):
1904	* src/goocanvasgroupview.c (goo_canvas_group_view_paint):
1905	* src/goocanvasellipseview.c (goo_canvas_ellipse_view_paint):
1906	* src/goocanvasimageview.c (goo_canvas_image_view_paint):
1907	* src/goocanvaspolylineview.c (goo_canvas_polyline_view_paint): we
1908	now just pass the effective scale to the paint function rather than the
1909	GooCanvasView*, since when rendering to an arbitrary cairo_t we may not
1910	want to use a different effective scale (to determine which items are
1911	shown). (Also fixed some of the visibility checks.)
1912
19132006-03-23  Damon Chaplin  <damon@gnome.org>
1914
1915	* src/goocanvasitem.c: added new "visibility" and
1916	"visibility-threshold" properties to specify when an item should be
1917	visible (always, never, or above a certain scale threshold).
1918
1919	* src/goocanvasutils.[hc]: added GooCanvasItemVisibility enum stuff.
1920
1921	* src/goocanvasitemsimple.[hc]:
1922	* src/goocanvasgroup.[hc]: implemented new properties.
1923
1924	* src/goocanvasgroupview.c (goo_canvas_group_view_paint):
1925	* src/goocanvastextview.c (goo_canvas_text_view_paint):
1926	* src/goocanvasrectview.c (goo_canvas_rect_view_paint):
1927	* src/goocanvasimageview.c (goo_canvas_image_view_paint):
1928	* src/goocanvasellipseview.c (goo_canvas_ellipse_view_paint): check
1929	the visibility settings to see if the items should be painted.
1930
1931	* src/demo.c (setup_invisible_texts): added test for visibility
1932	settings.
1933
1934	* src/goocanvasitem.[hc] (goo_canvas_item_create_view): removed this as
1935	it is mainly an internal function and the interface can be used
1936	directly instead where needed.
1937
19382006-03-23  Damon Chaplin  <damon@gnome.org>
1939
1940	* src/goocanvasview.c (goo_canvas_view_scroll_to): freeze the canvas
1941	while setting the adjustments so we don't redraw twice.
1942
19432006-03-22  Damon Chaplin  <damon@gnome.org>
1944
1945	* src/goocanvasview.[hc]: convert to a subclass of GtkContainer rather
1946	than GtkLayout, since the layout code didn't help much and just added
1947	to the confusion. (Getting scrolling/zooming to work smoothly  is
1948	pretty difficult.)
1949
1950	Added a goo_canvas_view_scroll_to() function to scroll to a desired
1951	position.
1952
1953	Added an anchor setting to specify where to place the contents of the
1954	canvas if it is smaller than the allocated widget area. (Like the
1955	"center_scroll_region" setting in GnomeCanvas but a bit more general.)
1956
1957	Mapped a temporary window above the canvas when zooming in/out to
1958	stop X from scrolling the canvas contents before it is redrawn.
1959	(Idea pinched from FooCanvas.) Though this could possibly cause
1960	problems with keyboard input in future, in which case I think we should
1961	drop the fancy window scrolling stuff and just scroll ourselves.
1962
1963	Added an internal freeze_count like GtkLayout used to have. This is
1964	used while reconfiguring the scrollbars etc. so we don't scroll more
1965	than once (e.g. horizontally then vertically).
1966
1967	Added coordinate conversion functions to convert between device units
1968	and canvas item units or pixels.
1969
1970	* src/goocanvastextview.[hc]: create a cairo_font_options_t object in
1971	the class init function and use it for all created PangoLayouts.
1972	This ensures that text is layed out the same at any scale, which
1973	also avoids the problems with items not being redrawn properly
1974	(since the bounds were slightly wrong). Note that I was using
1975	cairo_set_font_options(cr) before, but that isn't picked up by Pango
1976	so didn't work. (Font options seem to be associated with surfaces and
1977	also with the graphics state which is confusing.)
1978
1979