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