2009-12-07 Rolf Bjarne Kvinge <RKvinge@novell.com>
[moon.git] / src / ChangeLog
blob72c0c8884cd6534059037cbf1beadc2bfc459314
1 2009-12-04  Jackson Harper  <jackson@ximian.com>
3         * xaml.cpp: Handle parsing CacheModes.
5 2009-12-04  Jeffrey Stedfast  <fejj@novell.com>
7         * stylus.h (enum TouchAction): Added.
8         (class TouchDevice): Implemented.
9         (class TouchPoint): Implemented.
10         (class TouchPointCollection): Implemented.
12 2009-10-03  Andrew Jorgensen  <ajorgensen@novell.com>
14         * Makefile.am: Add textoptions.h
16 2009-12-03  Jeffrey Stedfast  <fejj@novell.com>
18         * runtime.cpp (SetZoomFactor): Stubbed out.
20 2009-12-03  Jeffrey Stedfast  <fejj@novell.com>
22         * brush.cpp (ImageBrush::ImageOpenedEvent): Added.
23         (ImageBrush::ImageOpened): Emit our own ImageOpened event.
25 2009-12-03  Larry Ewing  <lewing@novell.com>
27         * media.cpp (Render):
28         * mediaelement.cpp (Render): Set the extend mode to pad now that
29         we can in the hopes that it will bring us closer to sl rendering.
31 2009-12-03  Larry Ewing  <lewing@novell.com>
33         * media.cpp (Render):
34         * mediaelement.cpp (Render): Adjust the rendering bounds in the
35         case where RenderSize != actual size this fixes DRT 280.
37 2009-12-03  Jackson Harper  <jackson@ximian.com>
39         * xaml.cpp: A single namespace uri can have many prefixes.  ie
40         xmlns:foo="My.Namespace" xmlns:bar="My.Namespace"
42 2009-12-03  Larry Ewing  <lewing@novell.com>
44         * Makefile.am (libmoon_include_headers): add textoptions.h to the
45         headers.
47 2009-12-03  Alan McGovern  <amcgovern@novell.com>
49         * contentcontrol.cpp: Comment out an extra check when changing
50           the content on a ContentControl which breaks some
51           silverlight toolkit tests.
53 2009-12-02  Jeffrey Stedfast  <fejj@novell.com>
55         * collection.h (enum CollectionIteratorError): New enum to define
56         the possible error conditions for the CollectionIterator methods.
58         * collection.cpp (CollectionIterator::Next): Now returns bool and
59         takes an 'err' argument for error reporting rather than having the
60         return value handle everything.
61         (CollectionIterator::GetCurrent): Modified to also check index <=
62         Count and made the int error argument into a
63         CollectionIteratorError argument.
65         * resources.cpp (class ResourceDictionaryIterator): Implemented.
66         (ResourceDictionary::GetIterator): Return a new
67         ResourceDictionaryIterator.
68         (GetFromMergedDictionaries): Updated for CollectionIterator API
69         changes.
71         * provider.cpp (StylePropertyValueProvider::RecomputePropertyValue):
72         Updated for CollectionIterator API changes.
73         (StylePropertyValueProvider::SealStyle): Same.
75         * style.cpp (SetterBaseCollection::Seal): Updated for
76         CollectionIterator API changes.
78 2009-12-02  Jackson Harper  <jackson@ximian.com>
80         * xaml.cpp: hack to allow Icon's to have a default Source
81         property.
83 2009-12-02  Alan McGovern  <amcgovern@novell.com>
85         * frameworkelement.cpp: Testing shows that MS emits all the
86           SizeChanged events before doing another measure pass. This
87           fixes an older version of the DataVisualisation demos in the
88           Controls Toolkit demo.
90 2009-12-01  Jeffrey Stedfast  <fejj@novell.com>
92         * layout.cpp (GenerateGlyphCluster): Only apply horiBearingX if it
93         is not the first glyph in the cluster. Fixes drt 279.
95 2009-12-01  Jeffrey Stedfast  <fejj@novell.com>
97         * textblock.cpp (TextBlock::Paint): Moved the "show text boxes"
98         debug rendering out of here and into layout.cpp.
99         (TextBlock::ComputeBounds): Use layout->GetRenderExtents() to get
100         the (pre-transformed) bounds rather than the complex kung-fu that
101         was there before. Fixes Vector Space Zero's side-scrolling "WAVE"
102         textblocks.
104         * layout.cpp (TextLayout::GetRenderExtents): New helper method to
105         get the render rectangle for the layout.
106         (TextLayout::Render): If the "show text boxes" debug flag is set,
107         render a green rectangle for the text region.
109 2009-12-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
111         * audio.cpp: Make mutex recursive.
113 2009-12-01  Alan McGovern  <amcgovern@novell.com>
115         * runtime.h:
116         * runtime.cpp: 1) Rename GenerateFocusChangedEvents to
117           EmitFocusChangeEvents.
118         2) Replace AutoFocusAsync with EmitFocusChangedEventsAsync as
119           that's what it's used for now.
120         3) Generate and queue all the required GotFocus/LostFocus
121           events as soon as a new element is focused, don't wait til
122           the next tick.
124 2009-12-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
126         * dependencyobject.cpp: ~EventObject: no need to access
127         Deployment::GetCurrent, we already know the deployment.
129 2009-12-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
131         * pipeline.h: Fix typo in comment.
133 2009-12-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
135         * pipeline.h: Remove outdated comment.
137 2009-12-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
139         * debug.cpp: Handle aborts too to get stack traces when pulseaudio
140         decides to abort us.
142 2009-12-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
144         * mediaelement.cpp: fix printf format specifier for 64 bits.
146 2009-12-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
148         * pipeline-asf.cpp: Fix error message to include error code.
150 2009-12-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
152         * audio.cpp|h: Use our Mutex class.
154 2009-12-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
156         * pipeline.cpp: Make the protected FileSource ctor take an Type::Kind
157         parameter and update accordingly.
159 2009-12-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
161         * deployment.cpp: Make the number of objects dumped configurable by
162         environment variable.
164 2009-12-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
166         * debug.cpp|h: Make the number of stack frames printed configurable
167         with an env var. Remove the ifdefs for managed stack frames - always
168         true now.
170 2009-12-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
172         * mediaelement.cpp: OpenCompletedHandler: emit MediaOpened event if
173         we're detached. Fixes MS DRT #521.
175 2009-11-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
177         * deployment.h: Mark (only) the thread-safe GetSurface version for
178         p/invoking.
180         * cbinding.cpp|h: Regenerated.
182 2009-11-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
184         * dependencyobject.cpp: DO::Dispose: if we have a parent at this point,
185         remove any destroyed event handlers we may have and call SetParent on it.
187         * resources.cpp:
188         * collection.cpp: (DependencyObjectCollection and ResourceDictionary)
189         ::AddedToCollection: if we didn't end up adding the item to the
190         collection, ensure that we don't leave the item with a parent.
191         Fixes a crash in MS DRT #485.
193 2009-11-30  Jackson Harper  <jackson@ximian.com>
195         * resources.h: Fix managed return type of the merged dictionaries
196         property.
198 2009-11-30  Jeffrey Stedfast  <fejj@novell.com>
200         * mediaelement.cpp (MediaEndedHandler): Fixed printf formatter.
202 2009-11-30  AndrĂ©s G. Aragoneses  <aaragoneses@novell.com>
204         * security.c: MOON_A11Y_INTERNAL_HACK is not needed anymore
205           since the audit finished in r147098. r: spouliot
207 2009-11-30  Alan McGovern  <amcgovern@novell.com>
209         * contentcontrol.cpp: Invalidate the measure whenever the
210           Content changes otherwise we may never apply the template
211           and display the content.
213 2009-11-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
215         * pipeline.cpp: IMediaStream::EnqueueFrame: use the same algorithm
216         as IMediaDemuxer::FillBuffers to determine if we have a frame or not,
217         this way there won't be any disagreement between those two. Fixes an
218         issue with DRT #521 where the video wouldn't resume playing after
219         the MediaElement was reattached to the tree.
221         * mediaelement.cpp|h: Save the current state when the MediaElement
222         is detached from the tree and if we're reattached, go back to the
223         original state (i.e. start playing again if we were playing). Fixes
224         MS DRT #521.
226 2009-11-30  Alan McGovern  <amcgovern@novell.com>
228         * uielement.cpp: When propagating hint flags up the visual
229           tree, we can only safely stop walking up the tree if the
230           visual parent already has the hint flag set.
232         * frameworkelement.cpp: If an element invalidates its Measure
233           or Arrange inside a LayoutUpdated handler, we should do
234           another measure/arrange pass immediately. Also add in a
235           debug sanity check to ensure that there are no dirty
236           elements left over when we've finished updating.
238 2009-11-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
240         * dependencyobject.cpp|h: Remove EO::GetStackTrace, never used.
242         * debug.cpp|h: Move MAX_STACK_FRAMES into debug.cpp so that a change
243         doesn't require a rebuild of *everything*.
245 2009-11-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
247         * dependencyobject.cpp: In the parent destroyed handler, call
248         SetParent (NULL) instead of clearing the field directly so that
249         we don't miss any other related cleanup that must be done.
251 2009-11-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
253         * dependencyobject.cpp|h: Add a SetParentSafe method that managed code
254         can use. This method differs from the normal SetParent method in that
255         it listens for the parent's Destroyed event and calls SetParent (NULL)
256         This is a lot easier than keeping track in managed code of objects we
257         must call SetParent (NULL) on.
259         * control.cpp|h:
260         * frameworkelement.cpp|h: Make sure we clear out the parent on objects
261         we call SetParent on whenever the object changes or when we're disposed.
263         * cbinding.cpp|h: Regenerated.
265 2009-11-30  Alan McGovern  <amcgovern@novell.com>
267         * uielement.cpp: Revert 147089 as I didn't mean to commit it
268           yet.
270 2009-11-27  Alan McGovern  <amcgovern@novell.com>
272         * uielement.cpp: Remove the fast path to avoid walking up the
273           tree if the hint flag is already set as it breaks drt 549.
275 2009-11-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
277         * uielement.cpp: SetIsAttached: check the surface for null before using
278         it, we may end up here during shutdown, in which case there is no
279         surface anymore.
281 2009-11-27  Alan McGovern  <amcgovern@novell.com>
283         * frameworkelement.cpp: Fix an issue where if we found no
284           dirty elements while searching the DIRTY_MEASURE_HINT path,
285           we could exit early (without doing an Arrange or Size path).
287 2009-11-27  Alan McGovern  <amcgovern@novell.com>
289         * uielement.cpp: If an item which has a value set for
290           LastRenderSize is added to the tree, ensure that the dirty
291           size hint is propagated up the tree.
293 2009-11-27  Alan McGovern  <amcgovern@novell.com>
295         * frameworkelement.cpp: Add a default handler to the switch to
296           silence compiler warnings.
298 2009-11-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
300         * xaml.cpp:
301         * dirty.cpp:
302         * media.cpp:
303         * panel.cpp:
304         * shape.cpp:
305         * canvas.cpp:
306         * stylus.cpp:
307         * control.cpp:
308         * runtime.cpp:
309         * popup.cpp|h:
310         * glyphs.cpp|h:
311         * pipeline.cpp:
312         * template.cpp:
313         * eventargs.cpp:
314         * textbox.cpp|h:
315         * textblock.cpp:
316         * downloader.cpp:
317         * resources.cpp|h:
318         * uielement.cpp|h:
319         * collection.cpp|h:
320         * mediaplayer.cpp|h:
321         * mediaelement.cpp|h:
322         * mms-downloader.cpp:
323         * frameworkelement.cpp:
324         * dependencyobject.cpp|h: Remove the surface field and the SetSurface
325         method from EventObject. Add (Set)IsAttached, which replaces the earlier
326         "is attached" logic of having a surface set. Update all usages. When
327         we really wanted to get the surface, we now need to get it from the
328         deployment instead.
330         * cbinding.cpp|h: Regenerated.
332 2009-11-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
334         * dependencyobject.h: Remove unneeded cbinding/pinvoke.
336         * deployment.cpp|h: Make Surface a normal property so that we can make
337         it thread safe.
339         * runtime.cpp|h: Added GetTimeManagerReffed (thread-safe), and make
340         necessary changes to make it thread safe too.
342         * dependencyproperty.g.cpp: Regenerated.
344 2009-11-27  Alan McGovern  <amcgovern@novell.com>
346         * dirty.cpp:
347         * runtime.h:
348         * uielement.h:
349         * runtime.cpp:
350         * uielement.cpp:
351         * frameworkelement.cpp: Whenever an element is invalidated,
352           propagate a hint flag up the visual tree. Use this hint flag
353           to avoid walking branches which are not dirty, thus reducing
354           the time required to walk large trees by more than a factor
355           of 15.
357 2009-11-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
359         * pipeline.cpp|h: Media::ReportSeekCompleted: don't reset 'stopped',
360         it makes us buffer after a Stop (since we seek to 0 when stopping).
362 2009-11-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
364         * mediaelement.cpp: BufferingProgressChangedHandler: don't go to
365         buffering unless we're paused or playing.
367 2009-11-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
369         * mediaplayer.cpp: Initialize duration to zero.
371 2009-11-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
373         * pipeline.cpp: Remove a g_warning.
375 2009-11-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
377         * mediaelement.cpp: Fix bad printf.
379 2009-11-25  Jeffrey Stedfast  <fejj@novell.com>
381         * fontmanager.cpp (FontFace::GetExtents): Now takes a gapless
382         argument, which, if set, subtracts the sTypoLineGap from the
383         overall LineSpacing and Descender metrics.
385         * fonts.cpp (TextFont::.ctor): Now takes a gapless bool argument
386         to specify whether or not the Height() method should ignore the
387         sTypoLineGap.
388         (TextFont::UpdateFaceExtents): Updated to pass along the gapless
389         value.
390         (TextFont::LoadPortableUserInterface): Modified to tell our caller
391         whether or not the sTypoLineGap should be ignored.
392         (TextFont::Load): Pass a gapless arg to TextFont's ctor.
394 2009-11-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
396         * pipeline.cpp|h: Media::ReportSeekCompleted: add a 'pending_seeks'
397         parameter that will tell the Media if it can clear the 'stopped' state
398         (so that buffering can begin again).
400         * mediaelement.cpp: SeekCompletedHandler: don't call Play on anything
401         here, the reason we did it was to signal the pipeline that it could
402         start buffering again - however this is broken since we must always
403         start buffering after a seek (even if the previous state was Stopped).
404         Go into the buffering state when we get a buffering changed event and
405         we're not already in the buffering state. Also store the PlayRequested
406         bit in Seek if we're in a playing state.
408 2009-11-25  Larry Ewing  <lewing@novell.com>
410         * textblock.cpp (ComputeBounds): compute our actual bounding rect
411         if the text alignment isn't left;
413         Fixes 279 and http://www.silverlightstopwatch.com
414         
415 2009-11-25  Jackson Harper  <jackson@ximian.com>
417         * runtime.cpp|h: Implement a flag and access method for running out
418         of browser.  DESKTOP_INIT will use this flag and in the future a
419         chrome'd OOB could use this flag also.
421 2009-11-25  Alan McGovern  <amcgovern@novell.com>
423         * popup.h: Add a missing @CallInitialize which resulted in 555
424           regressing.
426         * textbox.h: Keep the usage of the Initialize method
427           consistent - add @CallInitialise to the native type if
428           Initialize is required instead of making it virtual and
429           overriding it.
431 2009-11-25  Alan McGovern  <amcgovern@novell.com>
433         * runtime.cpp: Use TabNavigationWalker to perform the actual
434           focusing otherwise we will only focus properly if the root
435           element is a focusable control. If nothing in the tree is
436           focusable, the root element itself is forcibly focused.
437           Fixes drt 175.
439 2009-11-25  Alan McGovern  <amcgovern@novell.com>
441         * grid.cpp: UIElements are only considered to span an auto row
442           if they do not also span a star row. Similarly for columns.
443           Add the missing check to the if statement. Fixes several
444           moon-units and also scrollbars on the silverlight toolkit.
446 2009-11-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
448         * mediaelement.cpp: SeekingHandler: only set BufferingProgress and emit
449         the event if the property actually changes.
451 2009-11-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
453         * mediaelement.cpp: Don't go to the Buffering state when Seek is called,
454         do it instead in the Seeking handler. Fixes regression of MS DRT #486.
456 2009-11-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
458         * pipeline.cpp|h: Ensure that after a seek we don't add frames to the
459         streams that we don't need (such as frames before the last keyframe
460         before the point we seeked to). Also emit Media::SeekingEvent when we
461         start to seek.
463         * mediaplayer.cpp: Remove the DEBUG_ADVANCEFRAME define: use the LOG_EX
464         logging method instead.
466         * mediaelement.cpp: When we seek, go to the Buffering state, and when
467         the pipeline starts seeking, set buffering progress to 0. This ensures
468         we emit buffering process changed events when the seek has completed.
469         
470         * pipeline-asf.cpp: MmsPlaylistEntry: When we seek we need to clear
471         whatever we have in our queue of packets.
473         * playlist.cpp: Implement PlaylistEntry::SeekingHandler.
475 2009-11-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
477         * playlist.cpp:
478         * pipeline.cpp|h:
479         * mediaplayer.cpp:
480         * mediaelement.cpp: Make Media::GetDemuxer and IMediaStream::GetDemuxer
481         return a reffed demuxer (and rename methods appropiately). Also update
482         all usage of those methods.
484 2009-11-23  Alan McGovern  <amcgovern@novell.com>
486         * xaml.h:
487         * xaml.cpp:
488         * template.cpp:
489         * dependencyobject.h:
490         * dependencyobject.cpp: DOs which are expanded from a
491           ControlTemplate need to keep track of the
492           'templateBindingSource' so that we can attach new
493           TemplateBindings later. This value is stored in addition to
494           'IsTemplateItem' as DOs can be expanded from templates which
495           are not ControlTemplates and only ControlTemplate passes in
496           a non-NULL value for templateBindingSource.
498         * cbinding.h:
499         * cbinding.cpp: regen
501 2009-11-21  Larry Ewing  <lewing@novell.com>
503         * frameworkelement.cpp: round the layout slot and the size
504         constraints when using layout rounding.  
506         * frameworkelement.h: remove unused overload.
508         * grid.cpp (PostRender): clear any path before drawing grid lines.
510         Fix 2024 (and 2005 other than font metrics) by applying layout
511         rounding more aggressively.
512         
513 2009-11-20  Larry Ewing  <lewing@novell.com>
515         * runtime.cpp: Invalidate the window when removing a message
516         layer.
518 2009-11-20  Larry Ewing  <lewing@novell.com>
520         * grid.cpp (PostRender): use apply the layout clip when rendering
521         the gridlines.
523 2009-11-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
525         * managedtypeinfo.cpp: Use strcmp instead of g_strcmp0 since the latter
526         isn't available in sled10.
528 2009-11-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
530         * type.h.in: Generate P/Invoke for Types::RegisterType.
532         * type.h:
533         * cbinding.h: Regenerated.
535 2009-11-20  Larry Ewing  <lewing@novell.com>
537         * textblock.cpp: Fix the dynamic property providers to subclass
538         from FrameworkProvider so that layout actually works with these
539         elements.  Change the min size hack until Jeff fixes it properly.
541         Fixes DRT 269 (again).
542         
543 2009-11-20  Chris Toshok  <toshok@ximian.com>
545         * media.h,media.cpp (class Image): add ImageOpenedEvent.
547         * enums.h,enums.cpp (enum TextHintingMode): add SL3 enum.
549         * textoptions.h (class TextOptions): add this static SL3 class.
551         * effect.h, effect.cpp: stub ShaderEffect and PixelShader.
553 2009-11-20  Larry Ewing  <lewing@novell.com>
555         * frameworkelement.cpp (Measure): don't expand templates on items
556         that aren't visible.
558 2009-11-20  Alan McGovern  <amcgovern@novell.com>
560         * grid.cpp: Elements which span star rows and auto columns are
561           measured twice. The first time they are measured we only
562           want the desired width in order to calculate the size of the
563           Auto column, as such we need to ignore the value of the
564           desired height. This fixes the ScrollBar out of view issue
565           in ScrollViewer.
567 2009-11-19  Larry Ewing  <lewing@novell.com>
569         * runtime.cpp: remove the manual fs message layout logic.
571         * runtime.h: make the messages panels.
572         
573         * fullscreen.xaml: use grid layout rather than doing manual
574         layout.
576         * incomplete-support.xaml: rework the padding a little.
578 2009-11-19  Larry Ewing  <lewing@novell.com>
580         * frameworkelement.cpp (Arrange): make the layout_clip less
581         restrictive as indicated by the tests.
583 2009-11-19  Jeffrey Stedfast  <fejj@novell.com>
585         * uri.cpp (Parse): Lowercase the hostname and remove the port if
586         it is identical to the default port for the protocol as per the
587         documentation on the Uri class on MSDN.
589 2009-11-19  Sebastien Pouliot  <sebastien@ximian.com>
591         * deployment.cpp: Update comment (it's not incomplete anymore)
593 2009-11-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
595         * mediaelement.cpp|h: Add support for getting a quality level,
596         determined by dropped frames per second. Use this quality level
597         to decide which filter algorithm we should ask cairo to use.
599 2009-11-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
601         * mediaelement.cpp|h: Remove unused field.
603 2009-11-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
604         
605         * value.cpp: Need to create zeroed out memory for ManagedTypeInfo
606         instances, since the assignment operator on the next line will try to
607         free whatever the previous memory was pointing to.
609         * textbox.cpp:
610         * contentcontrol.cpp: Create ManagedTypeInfo instances using g_new
611         instead of new to match the way they'll be deleted (g_free). Also
612         delete them properly.
614         * type.h[.in]: Move ManagedTypeInfo to its own file to not require a
615         complete rebuild every time it changes. ManagedTypeInfo: added copy
616         constructor and destructor:     these are used when g++ does it's copy
617         magick. Added [in]equality operators so that Value can compare to instances
618         correctly. Added Initialize/Free methods - to be used when an instance is
619         created with glibs g_new.
621         * value.cpp: Properly compare and free ManagedTypeInfo instances.
623         * Makefile.am: Added managedtypeinfo.h|cpp.
625         * xaml.cpp:
626         * textbox.cpp:
627         * contentcontrol.cpp:
628         * dependencyproperty.g.cpp: Include managedtypeinfo.h.
630 2009-11-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
632         * src.mdp: Updated with new files.
634 2009-11-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
636         * runtime.cpp: Set object type when calling base ctor to get correct
637         object type tracking.
639         * audio.cpp:
640         * audio-alsa.cpp:
641         * audio-pulse.cpp: Set the correct object type on AudioSource
642         subclasses.
644 2009-11-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
646         * type.h[.in]: No need to generate cbindings/pinvokes for ~Types
647         anymore, remote it.
649         * cbinding.cpp|h: Regenerated.
651 2009-11-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
653         * dependencyobject.cpp: Remove debug spew.
655 2009-11-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
657         * brush.cpp: ImageBrush::SetupBrush: Fix a possible deadlock in error
658         codepath.
660 2009-11-18  Chris Toshok  <toshok@ximian.com>
662         [ fixes silverlight.net/showcase/ ]
663         
664         * downloader.cpp (Downloader::ValidateDownloadPolicy): we need to
665         maintain the trailing separator on the source_location.
666         (Downloader::Open): same.
668 2009-11-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
670         * cbinding.h: Regenerated.
672 2009-11-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
674         * value.cpp: Don't ever use memcmp for structure comparison - it fails
675         randomly if the structures have padding. Also special case float/double
676         comparison to take epsilon into account. Fixes random failures in MS
677         DRT #303 and #2015.
679         * thickness.h:
680         * grid.h: Add [in]equality operators.
682         * color.h:
683         * fontstyle.h:
684         * fontfamily.h:
685         * fontweight.h:
686         * fontstretch.h:
687         * propertypath.h: Make inequality operator be the exact opposite of the
688         equality operator, negating the equality operator (even if code was
689         already correct, but duplicated - this way there's a lesser chance of
690         the equality operators getting out of sync)
692 2009-11-18  Jeffrey Stedfast  <fejj@novell.com>
694         * textbox.cpp (TextBoxBase::OnMouseMove): Update the primary
695         selection clipboard as the selection changes. Fixes lewing's frown
696         by turning it upside down.
698 2009-11-18  Larry Ewing  <lewing@novell.com>
700         * runtime.cpp (PaintToDrawable): fix the lame expose color logic
701         so it at least works.
703 2009-11-18  Larry Ewing  <lewing@novell.com>
705         * brush.cpp:
706         * media.cpp:
707         * shape.cpp:
708         * uielement.cpp: check the status of the pattern to avoid drawing
709         with it if we are in an error state. And fix a backwards condition
710         in the previous patch.
711         
712         * uielement.cpp: initialize the transforms.
714 2009-11-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
716         * runtime.cpp: We want to parse MOONLIGHT_DEBUG if LOGGING is defined
717         too.
719 2009-11-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
721         * audio.h:
722         * value.cpp:
723         * runtime.cpp|h:
724         * fontmanager.cpp: Tune ifdefs to allow configuring with logging but
725         without debug support.
727         * audio.cpp: Fix uninitialized variable warning (used in logging).
729 2009-11-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
731         * media.cpp|h:
732         * mediaelement.cpp:
733         * eventargs.cpp|h: Rename MarkerReachedEventArgs to
734         TimelineMarkerRoutedEventArgs to better match managed code, and move
735         the class to eventargs.cpp|h together with the rest of the event args
736         classes.
738         * type.h:
739         * value.h:
740         * cbinding.cpp|h:
741         * type-generated.cpp: Regenerated.
743 2009-11-17  Larry Ewing  <lewing@novell.com>
745         * brush.cpp:
746         * multiscaleimage.cpp (RenderCollection): 
747         * uielement.cpp (PostRender): Check the status of the pattern
748         before trying to draw with it in case something has gone wrong.
750         Fixes DRT 1 and and a couple of sites by not putting the cairo
751         context into an invalid state.
753 2009-11-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
755         * playlist.cpp: ParseASX2: don't verify the end of the uri, there is
756         no guarantee the uri has a specific ending.
758 2009-11-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
760         * mediaplayer.cpp: Open: Call SetSelected and ref on the video stream
761         we actually select, and not all of video streams we loop over.
763 2009-11-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
765         * mediaelement.h: Added LogReady event.
767         * eventargs.cpp|h: Added a LogReadyRoutedEventArgs class.
769         * enums.cpp|h: Added LogSource enum.
771         * type.h:
772         * value.h:
773         * cbinding.h:
774         * cbinding.cpp:
775         * type-generated.cpp: Regenerated.
777 2009-11-17  Jeffrey Stedfast  <fejj@novell.com>
779         Fix for drt #481
781         * textbox.cpp (KeyPressPageUp, KeyPressPageDown): Silverlight
782         seems to set these to handled even if no cursor change took place.
784 2009-11-17  Sebastien Pouliot  <sebastien@ximian.com>
786         * security.c: Do not consider System.Xml.dll and Microsoft.
787         VisualBasic.dll as platform code since, right now, they do not
788         contain any [SecurityCritical] nor [SecuritySafeCritical] code
790 2009-11-17  Alan McGovern  <amcgovern@novell.com>
792         * grid.h:
793         * grid.cpp: We need to store the sizes of all the grid
794           segments immediately after we finish measuring them. These
795           sizes are used as our base values when deciding if we should
796           expand star rows/cols. The rules for expanding star
797           rows/cols now make sense :)
799 2009-11-17  Jeffrey Stedfast  <fejj@novell.com>
801         * uri.cpp (Combine): Use different combining rules for 1.0 apps
802         (if the relative_path starts with a '/', always replace the path
803         rather than combining).
805 2009-11-17  Alan McGovern  <amcgovern@novell.com>
807         * grid.cpp: Remove a bunch of code from Grid::ArrangeOverride
808           which isn't required anymore.
810 2009-11-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
812         * mediaelement.cpp: Fix compiler warning.
814 2009-11-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
816         * pipeline-ui.cpp|h: Distinguish between user initiated download
817         requests and automatic download requests - if the user asked us to
818         download the codecs, show the ui even if the user previously selected
819         to not be asked about codec downloads again.
821         * mediaelement.cpp: When requesting a codec download, indicate that the
822         user did not initiate this request, it's an automatic request.
824 2009-11-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
826         * mms-downloader.cpp: Revert previous fix, it breaks MS DRT 938.
828 2009-11-16  Alan McGovern  <amcgovern@novell.com>
830         * xaml.h:
831         * xaml.cpp:
832         * control.h:
833         * template.cpp:
834         * dependencyproperty.g.cpp: Revert r146166 as it has some
835           bizarre side effects.
837 2009-11-16  Chris Toshok  <toshok@ximian.com>
839         * dependencyobject.h (class EventObject): we need to make
840         AddHandler virtual so UIElement can override it and do special
841         things when Loaded is poked.
843         * uielement.h,cpp: optimize the Loaded tree walking code, reducing
844         the number of nodes we visit by 2-3 orders of magnitude.
846         * list.h,cpp (List::Prepend): add an override that allows you to
847         prepend an entire list onto the front of another one.  used in the
848         Loaded tree walking code.
850 2009-11-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
852         * mms-downloader.cpp: Play: if we're already playing, don't send
853         another play request to the server, it might confuse the server.
854         Fixes #549443.
856 2009-11-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
858         * dependencyobject.cpp: Remove some debug spew.
860 2009-11-14  Larry Ewing  <lewing@novell.com>
862         * media.cpp:
863         * mediaelement.cpp: fix mediaelement rendering to match image and
864         clean up the code in both a little bit.
866 2009-11-14  Larry Ewing  <lewing@novell.com>
868         * shape.cpp (MeasureOverride): fix a bug that slipped in due to
869         the previous shape changes.
871         Fixes 653 and some unit tests.
873 2009-11-13  Jeffrey Stedfast  <fejj@novell.com>
875         * mediaelement.cpp (Pause): Seems that playlist can actually be
876         null here when the downloader fails, so properly handle null
877         situations instead of asserting.
879 2009-11-13  Jeffrey Stedfast  <fejj@novell.com>
881         * pipeline-ui.cpp (AcceptClicked): Don't need to strdup the
882         CODEC_URL string - just pass it as an argument to
883         Downloader::Open().
884         (ToggleEula): When toggling the EULA on, make the dialog
885         resizable. Likewise, when hiding the EULA, disable resize.
886         (Show): Make the EULA scrollview expand/fill available space so
887         that when the dialog gets resized, it expands as well.
889 2009-11-13  Larry Ewing  <lewing@novell.com>
891         * shape.cpp: rework rectangle and ellipse layout logic so that it
892         plays lightly nicer with other things. Fix stretch invalidation
893         issue.
895         Fixes MS 92 and moon 404 as well as some resizing issues visible
896         on covertocover.
898 2009-11-13  Alan McGovern  <amcgovern@novell.com>
900         * dependencyproperty.g.cpp: regen.
902         * xaml.h:
903         * xaml.cpp:
904         * control.h:
905         * template.cpp: DOs which are expanded from a ControlTemplate
906           need to keep track of the 'templateBindingSource' so that we
907           can attach new TemplateBindings later. This value is stored
908           in addition to 'IsTemplateItem' as DOs can be expanded from
909           templates which are not ControlTemplates (i.e.
910           DataTemplates). 
912 2009-11-13  Alan McGovern  <amcgovern@novell.com>
914         * control.h:
915         * control.cpp:
916         * type-generated.cpp:
917         * frameworkelement.h:
918         * frameworkelement.cpp: Move the invoking of OnApplyTemplate
919           from Control to FrameworkElement as ContentPresenter (a
920           FrameworkElement) needs to have its OnApplyTemplate method
921           invoked.
923 2009-11-13  Alan McGovern  <amcgovern@novell.com>
925         * contentcontrol.cpp: Call the correct base method in the
926           GetDefaultTemplate override. We should also be returning
927           NULL instead of false.
929 2009-11-13  Alan McGovern  <amcgovern@novell.com>
931         * runtime.cpp: When we attach a layer we need to set
932           needs_measure and needs_arrange to true otherwise we won't
933           do a layout pass until something else invalidates... if it
934           ever does.
936 2009-11-13  Alan McGovern  <amcgovern@novell.com>
938         * dependencyobject.cpp: Fix a case where a user-registered DP
939           was (incorrectly) setting the Surface if it's type was a DO.
941 2009-11-13  Alan McGovern  <amcgovern@novell.com>
943         * value.cpp: If the DO is null, don't try to clone it.
945 2009-11-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
947         * dependencyobject.cpp: Improve event handling to not create the
948         'events' field except when handlers are added. This will improve
949         memory usage slightly, and enable a few fast-paths (null checks
950         only) when there are no event handlers.
952 2009-11-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
954         * playlist.cpp: Fix compile error.
956 2009-11-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
958         * pipeline.cpp: If the PlaylistParser doesn't have enough data
959         to parse the source, retry later instead of failing.
961         * playlist.cpp|h: TryFixError: need to know the total read size
962         when we fix up characters after the first read (i.e. if the asx
963         file is bigger than the buffer size).
965         Fixes #555047.
967 2009-11-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
969         * uielement.cpp: WalkTreeForLoadedHandlers cache application
970         and deployment for the method's duration.
972 2009-11-12  Geoff Norton  <gnorton@novell.com>
974         * utils.cpp: We need to special case the case-sensitivity handling
975         of debug symbol files as well, to support the soft debugger.
977 2009-11-12  Larry Ewing  <lewing@novell.com>
979         Fix image stretching and alignment so that 641, 802, 889, and 921
980         are all doing the right thing.
981         
982         * frameworkelement.cpp (Arrange): when applying alignment rules
983         take the minimum size into account not the stretched size.
985         * media.cpp (Render): rework the rendering logic to match the DRTS.
986         (ComputeActualSize): in the canvas case we do use the constrained
987         size not the minimum size.
989 2009-11-12  Jeffrey Stedfast  <fejj@novell.com>
991         * media.cpp (Image::OnPropertyChanged): Only report errors if we
992         are being parsed by the xaml parser.
994         * pipeline.cpp (Initialize): If GetResource() fails, report
995         MediaFailed.
997         * mediaelement.cpp (SetUriSource): Set a new bitflag,
998         Initializing, before initializing the playlist so that if it
999         errors out we can properly emit MediaFailed events. Unset the flag
1000         when we're done.
1001         (SetDemuxerSource): Same.
1002         (SetStreamSource): Here too.
1003         (SetSource): And here.
1004         (OpeningHandler): Unset the Initializing flag.
1005         (MediaErrorHandler): If we are initializing, emit MediaFailed even
1006         if the state is Closed.
1008         * glyphs.cpp (OnPropertyChanged): Only set MoonError and emit
1009         ParserErrors when we are in the xaml parser.
1011         * bitmapimage.cpp (UriSourceChanged): If GetResource() fails, call
1012         DownloaderFailed() which will do proper cleanup and emit
1013         ImageFailed events.
1014         (OnPropertyChanged): Only set MoonError for Uri source changes if
1015         we are in the xaml parser.
1017         * uri.h (IsInvalidPath): Fixed to also return true for "\fu".
1018         (IsUncPath): Now returns true as long as the first character is
1019         "\", it no lonegr requires "\\".
1021         * application.cpp (GetResource): Now returns bool so that it can
1022         return false if there was an error.
1024         * xaml.cpp (start_element): Set IsBeingParsed() on DO's to true.
1025         (end_element_handler): And set it back to false here.
1027         * dependencyobject.h: Added IsBeingParsed state so that objects
1028         can check it when their property values change to see if they need
1029         to do special processing. Kind of a gross hack but it is needed in
1030         order to avoid emitting exceptions for Uri property changes in
1031         various elements when an invalid uri is set normally (whereas they
1032         need to emit errors when being parsed from xaml).
1034 2009-11-12  Andreia Gaita  <avidigal@novell.com>
1036         * deployment.cpp: don't unref the application after creating it,
1037         it gets unreffed when SetCurrentApplication is called with a new
1038         one or when deployment shuts down.
1040 2009-11-11  Chris Toshok  <toshok@ximian.com>
1042         * utils.h,cpp (managed_unzip_stream_to_stream_first_file): new
1043         method, basically the same as managed_unzip_stream_to_stream, only
1044         it always unzips the first file in the zip.
1046         * deployment.h (class ExtensionPart): superclass is ExternalPart,
1047         not DependencyObject.
1049 2009-11-11  Chris Toshok  <toshok@ximian.com>
1051         * timeline.cpp (DispatcherTimer::Stop): DispatcherTimer.Stop is
1052         available in managed-land and is callable more than once
1053         apparently (silverlight.net is doing it).  we need to not crash in
1054         this case, so only try to stop the clock if it's not null.
1056         r: lewing
1058 2009-11-11  Larry Ewing  <lewing@novell.com>
1060         Fix hit testing (via InsideLayoutClip) on layout clipped elements
1061         where the parent may not have a clip.
1063         * layoutinformation.cpp (GetClip): fix the composite offset
1064         calculation.
1066         * frameworkelement.cpp (FindElementsInHostCoordinates): use the
1067         current visibility when hittesting.
1069         * uielement.cpp (PostRender): render the layout clip when
1070         rendering clipping in debug mode.
1072 2009-11-11  Larry Ewing  <lewing@novell.com>
1074         * grid.cpp (ArrangeOverride): remove the visibility checks from
1075         grid they are handled in the layout logic.
1077 2009-11-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1079         * dependencyproperty.cpp|h: Add GetDependencyProperty overloads which
1080         take a Type instance to avoid calling Deployment::GetCurrent as much.
1081         Update according to Type/Value API changes.
1083         * panel.cpp:
1084         * border.cpp:
1085         * runtime.cpp:
1086         * provider.cpp:
1087         * animation.cpp:
1088         * resources.cpp:
1089         * collection.cpp:
1090         * validators.cpp:
1091         * usercontrol.cpp:
1092         * contentcontrol.cpp:
1093         * dependencyobject.cpp: Update according to Type/Value API changes.
1095         * type.cpp|h|in: Remove all the static convenience methods that were
1096         accessing Deployment::GetCurrent, and add a deployment field to the
1097         Type instance so that we can keep the instance methods at least.
1099         * value.cpp|h|in: Make the Is method take a deployment parameter.
1101         * xaml.cpp|h: Store a deployment instance on the XamlParserInfo so that
1102         we don't have to use Deployment::GetCurrent that much. Updated
1103         according to Type API changes.
1105         * type-generated.cpp: Regenerated.
1107 2009-11-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1109         * value.h: Don't include cairo.h nor string.h.
1111         * bitmapsource.h:
1112         * writeablebitmap.h: Include cairo.h.
1113         * file-downloader.cpp: Include string.h.
1115 2009-11-11  Larry Ewing  <lewing@novell.com>
1117         * frameworkelement.cpp: In measure make sure we track the last
1118         size we were measured at even if we are collapsed.
1119         In Arrange don't descend into the tree if we are not visible but
1120         track the last slot.
1122 2009-11-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1124         * value.h: Don't include cairo.h nor string.h.
1126         * bitmapsource.h:
1127         * writeablebitmap.h: Include cairo.h.
1128         * file-downloader.cpp: Include string.h.
1130 2009-11-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1132         * dependencyobject.cpp|h: Inline GetDeployment when SANITY isn't
1133         defined.
1135 2009-11-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1137         * dependencyobject.cpp: DependencyObject::Dispose (): we need to clear out
1138         the parent, we might still be alive after our parent has died, so don't
1139         crash if somebody does an upward tree walk in that case.
1141 2009-11-11  Alan McGovern  <amcgovern@novell.com>
1143         * frameworkelement.cpp: If a template is applied when
1144           FE::Measure is called, Surface::needs_measure will be set to
1145           true even though the FE will not have a dirty measure when
1146           the function completes. This can result in us having an
1147           empty measure_list with Surface::needs_measure still set to
1148           true, thus preventing us from arranging any elements and
1149           hitting the 250 max passes. r: lewing
1151 2009-11-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1153         * value.h|in: Make checked_get_subclass and checked_get_exact only
1154         check in SANITY or DEBUG builds.
1156         * type.cpp|h|in: Only define IsSubclassOrSuperclassOf in SANITY or
1157         DEBUG builds.
1159 2009-11-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1161         * type.cpp|h|in: Remove unused method.
1163 2009-11-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1165         * layoutinformation.cpp: Fix a g++ warning.
1167 2009-11-11  Larry Ewing  <lewing@novell.com>
1169         * uielement.cpp (DoArrange): if we haven't been arranged yet but
1170         we have a parent be sure to invalidate the parent before exiting.
1172         * frameworkelement.cpp: set the layout slot before calling
1173         arrange.
1175         Fixes DRT 423
1177         r: alan
1178         
1179 2009-11-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1181         * fontmanager.cpp|h: Cache system fonts.
1183         r: jeff
1185 2009-11-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1187         * deployment.cpp|h:
1188         * list.cpp|h: Inline a few methods which are used very often.
1190 2009-11-10  Larry Ewing  <lewing@novell.com>
1192         * frameworkelement.cpp:
1193         * frameworkelement.h:
1194         * uielement.cpp: Rework hit testing to use InsideObject so that we
1195         don't have to guess at fill and stroke values when doing testing.
1196         Consider the global clip on short circuiting and the layout clip
1197         on the element.
1199         * textblock.cpp:
1200         * textblock.h: Implement the rules for textblock hitting.
1202         * border.cpp:
1203         * glyphs.cpp:
1204         * glyphs.h:
1205         * layoutinformation.cpp:
1206         * media.cpp:
1207         * media.h:
1208         * shape.cpp:  Rework to use the new clip helper methods.
1210         r: spouliot
1211         
1212 2009-11-10  Jackson Harper  <jackson@ximian.com>
1214         * resources.cpp: Hack that allows us to add the same item to
1215         multiple resource dictionaries.
1217         r: rolf
1219 2009-11-10  Larry Ewing  <lewing@novell.com>
1221         * bitmapimage.cpp:
1222         * bitmapsource.cpp:
1223         * brush.cpp: Get overly aggressive about invalidations.
1225         * uielement.cpp:
1226         * uielement.h:
1227         * frameworkelement.cpp: rework the values we store for
1228         layout. Keep track of the raw results of measure and feed them
1229         back into the arrange along with the public desired size.  Allow
1230         Actual* to be completely computed for elements that operate that
1231         way.  Walk up the tree when rendering LayoutClip Make canvas
1232         slightly less special.
1234         * textblock.cpp:
1235         * textblock.h: Make Actual* a computed value.  Rework the
1236         results.
1238         * border.cpp:
1239         * canvas.cpp:
1240         * dirty.cpp:
1241         * grid.cpp:
1242         * layout.cpp:
1243         * media.cpp:
1244         * media.h:
1245         * mediaelement.cpp:
1246         * panel.cpp:
1247         * shape.cpp:
1248         * textbox.cpp:
1249         * usercontrol.cpp: rework the layout output now that we are
1250         storing our hidden desires.
1252         * runtime.cpp: disable ftb for now.  Use image surface by
1253         default.
1255         r: jackson
1257 2009-11-10  Alan McGovern  <amcgovern@novell.com>
1259         * grid.h:
1260         * grid.cpp: Revert the grid changes in r145839 as they
1261           interact badly with upcoming layout fixes. r: lewing
1263 2009-11-10  Alan McGovern  <amcgovern@novell.com>
1265         * grid.h:
1266         * grid.cpp: When expanding in MeasureOverride, do not use the
1267           value of [Horizontal|Vertical]Aligment. This fixes a case
1268           where we would expand and consume too much space. r: lewing
1270 2009-11-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1272         * window.h:
1273         * window-gtk.h|cpp: Add a surface ctor parameter.
1275         * runtime.cpp: Pass the surface as a parameter to the ctor instead of
1276         setting it afterwards, since the window ctor will end up needing the
1277         surface.
1279         * cbinding.h|cpp: Regenerated.
1281         r: sde
1283 2009-11-09  Andreia Gaita  <avidigal@novell.com>
1285         * dependencyproperty.cpp: if the unresolved Target name is not found
1286         (i.e., is managed-only, like "(ButtonBase.ClickMode)"), use the type
1287         of the current object instead. Fixes bug #543072
1289         r: spouliot
1291 2009-11-09  Chris Toshok  <toshok@ximian.com>
1293         * uielement.h (class UIElement): add CacheMode property.
1295         * Makefile.am (libmoon_la_SOURCES): add bitmapcache.cpp
1296         (libmoon_include_headers): add bitmapcache.h
1298         r: spouliot
1300 2009-11-09  Chris Toshok  <toshok@ximian.com>
1302         * runtime.h|.cpp (Surface::Attach): add the loaded handler before
1303         calling AttachLayer, as the latter does the tree walk copying the
1304         event handlers.  Fixes DRT #163.
1305         (globally): fix code/comments to not refer to the toplevel element
1306         as "canvas" anymore.
1308         r: lewing
1310 2009-11-09  Chris Toshok  <toshok@ximian.com>
1312         * uielement.h (class UIElement): mark the Key a MouseLeftButton
1313         events as GenerateManagedEventField=true.
1315         r: rolf
1317 2009-11-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1319         * xaml.cpp:
1320         * grid.cpp:
1321         * glyphs.cpp:
1322         * textbox.cpp:
1323         * runtime.cpp:
1324         * deployment.cpp:
1325         * frameworkelement.cpp:
1326         * deepzoomimagetilesource.cpp: Fix compiler warnings.
1328         r: alan
1330 2009-11-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1332         * dependencyobject.cpp: Initialize variables to null to silence compiler
1333         warnings in release builds.
1335         r: toshok
1337 2009-11-08  Chris Toshok  <toshok@ximian.com>
1339         * deployment.h|cpp: stub out some OutOfBrowser classes.
1341         r: lewing
1343 2009-11-08  Chris Toshok  <toshok@ximian.com>
1345         * effect.h|cpp: stub out SL3 effects classes.
1347         r: kangaroo
1349 2009-11-08  Larry Ewing  <lewing@novell.com>
1351         * incomplete-support.xaml: make things a little prettier by adding
1352         margins and max width.
1354 2009-11-08  Chris Toshok  <toshok@ximian.com>
1356         * Makefile.am (runtime.lo): be explicit about dependencies on
1357         fullscreen.h and incompletely-support.h so we won't get screwed by
1358         build-time dependencies.
1360         r: lewing
1362 2009-11-08  Chris Toshok  <toshok@ximian.com>
1364         * runtime.h|cpp (Surface::Attach): if we're running > SL2, call
1365         ShowIncompleteSilverlightSupportMessage.
1366         (Surface::ShowIncompleteSilverlightSupportMessage): show our
1367         incomplete support message.  as an optimization, hook up to
1368         Completed on the storyboard to remove the layer when the
1369         storyboard is finished.
1370         (Surface::HideIncompleteSilverlightSupportMessage): detach the
1371         layer.
1372         (Surface::ShowFullScreenMessage): use the same optimization of
1373         removing the layer when the storyboard completes.
1375         * Makefile.am (noinst_PROGRAMS): add xaml-to-header.exe here.
1376         (libmoon_include_headers): add deepzoomimagetilesource.h and
1377         multiscalesubimage.h here and remove them from EXTRA_DIST.  also,
1378         remove fullscreen.h entirely since we generate it at build time.
1379         (EXTRA_DIST): add fullscreen.xaml and incomplete-support.xaml
1380         here, as well as xaml-to-header.cs.
1382         * incomplete-support.xaml: new xaml file for our incomplete
1383         support ui.
1385         * fullscreen.xaml: move fullscreen.xaml here.
1387         * xaml-to-header.cs: move fullscreen/fullscreen.cs here and
1388         massage it to make it reusable for the incomplete-support.xaml
1389         file.
1391         r: geoff
1393 2009-11-07  Geoff Norton  <gnorton@novell.com>
1395         * deployment.cpp: Support connecting to sdb when built in debug
1396         mode
1398 2009-11-06  Chris Toshok  <toshok@ximian.com>
1400         * uielement.h|cpp (UIElement::ElementAdded): simplify this a bit
1401         using WalkTreeForLoadedHandlers.
1402         (UIElement::RemoveHandler): pass the removal on to the deployment
1403         as well.
1404         (UIElement::WalkTreeForLoadedHandlers): here there be dragons.
1405         (UIElement::OnLoaded): this method does nothing but update the
1406         flags now.
1407         (UIElement::ClearLoaded): we also need to
1408         ClearForeachGeneration (UIElement::LoadedEvent) so they'll be
1409         copied again when we get added back to the tree.
1411         * provider.cpp (InheritedPropertyValueProvider::PropagateInheritedProperty):
1412         use Logical tree walk ordering.
1414         * tabnavigationwalker.cpp (TabNavigationWalker::Sort): same.
1416         * panel.cpp (Panel::OnPropertyChanged): we have to call
1417         SetSubtreeObject before calling ElementAdded.
1419         * frameworkelement.h|cpp (FrameworkElement::UpdateLayout): remove
1420         the block of code that emits the LoadedEvent.
1421         (FrameworkElement::RegisterManagedOverrides): add our loaded hook
1422         parameter.
1423         (FrameworkElement::OnLoaded): call our loaded hook.
1425         * deployment.h|cpp (class Deployment): a whole bunch of new code
1426         to handle management of a list of loaded handlers similar in
1427         spirit to LayoutUpdated but much more complicated.  bleah.
1429         * dependencyobject.h|cpp: a whole bunch of new apis:
1430         (ForeachHandler): call a method for every handler for a given
1431         event.  Optionally only iterate over handlers added since the last
1432         time ForeachHandler was called.
1433         (ClearForeachGeneration): clears the "last time ForeachHandler was
1434         called" above.
1435         (ForHandler): same as foreach, invoke the same type of handler
1436         method, but only on 1 event handler.
1437         (HasHandlers): returns true if the object has handlers for a
1438         particular event.
1439         (RemoveHandler): make these virtual because UIElement will
1440         override them to remove handlers from the Deployment's loaded
1441         list.
1443         * control.cpp (Control::DoApplyTemplate): since we do it after
1444         ElementAdded, calling WalkTreeForLoadedHandlers here causes
1445         another treewalk, but we need to pass different args to it than
1446         ElementAdded does.
1448         * collection.h (enum VisualTreeWalkerDirection): add
1449         LogicalReverse.
1451         * collection.h|cpp (class DeepTreeWalker): add a
1452         VisualTreeWalkerDirection to this walker as well.
1454         * border.cpp (Border::OnPropertyChanged): we have to make sure to
1455         call SetSubtreeObject before calling ElementAdded.
1457 2009-11-06  Alan McGovern  <amcgovern@novell.com>
1459         * grid.cpp: There's no need to expand star rows/cols at this
1460           point as any time they would expand here, they would be
1461           expanded in ArrangeOverride anyway. r: spouliot
1463 2009-11-05  Jeffrey Stedfast  <fejj@novell.com>
1465         * brush.cpp (ImageBrush::OnPropertyChanged): Check that the Source
1466         uri is valid and the download policy will allow it.
1468         * media.cpp (Image::OnPropertyChanged): Check that the Source uri
1469         is valid and the download policy will allow it.
1471         * mediaelement.cpp (OnPropertyChanged): Check that the Source uri
1472         is valid and the download policy will allow it.
1474         * glyphs.cpp (DownloadFont): Now takes a MoonError argument so
1475         that (late) download policy errors (caused by a failed
1476         Downloader::Open) can propogate up through callers like
1477         OnPropertyChanged() or SetParent().
1478         (SetParent): Moved here from from SetSurface() so that we can
1479         throw an exception when ading the glyphs to the tree if the
1480         FontUri is invalid.
1481         (OnPropertyChanged): Set the MoonError if the uri is invalid.
1483         * bitmapimage.cpp (ValidateDownloadPolicy): New method to check if
1484         the uri can be downloaded.
1485         (OnPropertyChanged): Check if the Source uri is invalid. If so,
1486         set an error.
1488         * downloader.cpp (ValidateDownloadPolicy): New static method to
1489         check that the policy would allow downloading the content at the
1490         uri. Split out from Open().
1492         * uri.h (IsInvalidPath): New method to check the validity of the
1493         path component of a URI.
1494         (IsUncPath): New method that returns true if the path begins with \\
1496         r:spouliot
1498 2009-11-05  Alan McGovern  <amcgovern@novell.com>
1500         * control.h:
1501         * control.cpp:
1502         * application.h:
1503         * application.cpp:
1504         * contentcontrol.h:
1505         * frameworkelement.h:
1506         * contentcontrol.cpp:
1507         * frameworkelement.cpp: Templates must be expanded as part of
1508           the first step of Measure. To support this, remove the old
1509           ApplyTemplateHook managed path and refactor the
1510           GetTemplateRoot managed path into a more generic
1511           GetDefaultTemplate method. Whenever native code needs to get
1512           a default template from managed, this is invoked to retrieve
1513           it. ApplyTemplate and OnApplyTemplate have been moved to
1514           FrameworkElement itself to simplify the code required to
1515           support templateable framework elements (ItemsPresenter for
1516           example). r: toshok
1518         * cbinding.h:
1519         * cbinding.cpp: regen. r: toshok
1521 2009-11-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1523         * dependencyproperty.cpp: Fix an uninitialized variable problem.
1525         r: alan
1527 2009-11-05  Jackson Harper  <jackson@ximian.com>
1529         * playlist.cpp: After we successfully fixup an error we need to
1530         reset the error args otherwise the error will be raised when the
1531         parsing is all done.  Fixes 96x.fm.
1533         r: rolf
1535 2009-11-04  Sebastien Pouliot  <sebastien@ximian.com> 
1537         * list.cpp: Remove unused (even in test) code.
1538         * tabnavigationwalker.cpp: Complete int/uint fix.
1540         r: jackson
1542 2009-11-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1544         * shape.cpp:
1545         * pipeline.cpp:
1546         * audio-alsa.cpp:
1547         * audio-pulse.cpp:
1548         * pipeline-asf.cpp:
1549         * tabnavigationwalker.cpp: Fix warnings when building release builds.
1551         r: spouliot
1553 2009-11-04  Alan McGovern  <amcgovern@novell.com>
1555         * popup.h:
1556         * popup.cpp:
1557         * control.h:
1558         * control.cpp: 1) Disabling the ComboBox should set
1559           IsDropDownOpen to false
1560         2) If the dropdown is opened while the ComboBox is disabled,
1561           the children of the popup are disabled.
1562         3) If the dropdown is open, re-enabling the ComboBox doesn't
1563           close the dropdown and also doesn't update the IsEnabled
1564           state on the children.
1565         r: shana
1567 2009-11-03  Jackson Harper  <jackson@ximian.com>
1569         * xaml.cpp: Dont force setting a property in managed if it was
1570         registered by a base type.
1572         r: spouliot
1574 2009-10-29  Chris Toshok  <toshok@ximian.com>
1576         * messagebox.cpp (message_box_show): don't use
1577         gtk_message_dialog_new with user strings, since they might contain
1578         reserved characters.
1580         r: spouliot
1582 2009-11-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1584         * pipeline.cpp: If we can't seek, reset the 'seeking' flag to false.
1586         r: spouliot
1588 2009-11-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1590         * deployment.cpp: Fix typo in return statement.
1592         r: alan
1594 2009-11-03  Alan McGovern  <amcgovern@novell.com>
1596         * grid.h:
1597         * grid.cpp: Rewrite Grid so that it passes the correct sizes
1598           to elements spanning Star or Auto segments. Fixes
1599           tic-tac-toe. r: lewing
1601 2009-11-02  Alan McGovern  <amcgovern@novell.com>
1603         * control.h:
1604         * cbinding.h:
1605         * control.cpp:
1606         * frameworkelement.h:
1607         * frameworkelement.cpp: Certain UIElements (Controls and
1608           ContentPresenters) need to apply a template before
1609           MeasureOverride is invoked. Add a callback
1610           (ApplyTemplateHook) to FrameworkElement which is non-null
1611           for Controls and ContentPresenters to that these templates
1612           can be expanded properly. r: rolf
1614         * cbinding.cpp: regen. r: rolf
1616 2009-11-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1618         * pipeline.h: Remove dead code.
1620         r: alan
1622 2009-11-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1624         * pipeline.cpp|h: ProgressiveSource: close the write handle in the dtor
1625         to avoid race conditions - media thread closing the handle and main
1626         writing to it.
1628         r: alan
1630 2009-11-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1632         * mms-downloader.cpp: When sending logs, use NoPolicy. We've already
1633         checked if we can access the server or not. Using StreamingPolicy is
1634         wrong now that we create mms downloaders for those always. Also
1635         add a null check.
1637         r: alan
1639 2009-11-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1641         * mediaelement.cpp:
1642         * enums.h|cpp: Remove MediaStateError, it's not used in SL2. Whenever
1643         an error occurs we go to the Closed state.
1645         r: sde
1647 2009-11-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1649         * mms-downloader.cpp: Accept rtsp[s] schemes too.
1651         * downloader.cpp: determine mms'ness by using the policy passed in
1652         instead of comparing schemes (differently in other places - the
1653         pipeline considers rtsp and rtsps schemes too as streaming).
1655         r: sde
1657 2009-11-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1659         * pipeline-asf.cpp: When we got a packet from the mms downloader, ask
1660         the demuxer to fill its buffers. This fixes some cases where the mms
1661         stream never finishes buffering. Added GetDemuxerReffed.
1663         r: spouliot
1665 2009-10-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1667         * pipeline.cpp: Don't completely stop working when the media is
1668         stopped, the media element needs the first frame of the media, so
1669         when stopped, buffer 1 frame instead of 0. Makes MS DRT #483 pass.
1671 2009-10-29  Alan McGovern  <amcgovern@novell.com>
1673         * grid.cpp: Grid should not invalidate its measure unless
1674           either the Columns or Rows collection changes. This reverts
1675           what looks like an accidental commit by lewing in r123309.
1676           r: jeff and toshok.
1678 2009-10-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1680         * mediaelement.cpp: If we Seek when Paused, we need to update
1681         paused_position. Fixes one error in MS DRT #483.
1683         r: spouliot
1685 2009-10-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1687         * pipeline.cpp: Media::SelectDemuxerAsync: seek to 0 on the source
1688         before searching for a demuxer. Makes #546241 play all the audio it
1689         should.
1691         r: alan
1693 2009-10-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1695         * pipeline.cpp: Include signal.h.
1697         r: alan
1699 2009-10-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1701         * mediaelement.cpp: OpenCompletedHandler: only emit
1702         DownloadProgressChanged if MediaOpened hasn't been raised. This fixes
1703         MS DRT #25 (which checks that DownloadProgressChanged isn't raised
1704         after calling Stop and then Play on a media element).
1706         r: geoff
1708 2009-10-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1710         * pipeline.cpp: When we enter a new thread, ensure that we don't
1711         inherit blocked signals from the thread that created us. Fixes deadlock
1712         reported in #546241.
1714         r: jeff
1716 2009-10-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1718         * mediaplayer.cpp|h: Instead of keeping a flag telling whether we're
1719         seeking or not, keep a counter, since we may end up with multiple
1720         pending seeks, and we only want to restart playback when the last seek
1721         finishes. Also call MediaElement's seek method so that we do everything
1722         we must do when a seek happens. Fixes our media test #153.
1723         
1724         * mediaelement.cpp|h: Add a force parameter to Seek to force seeking no
1725         matter which state we're in. Used by MediaPlayer to seek when we open
1726         a media.
1727         
1728         * pipeline.cpp|h: Don't start filling the buffers when a media is opened,
1729         the first thing we do after opening a media is seeking, which would
1730         invalidate whatever buffer we create. When the first seek has finished,
1731         it will request a buffer fill. Also remove the optimization that was
1732         joining multiple seeks into one (the last one), since there was no way
1733         MediaPlayer could know which seek finished when the SeekCompleted event
1734         was raised.     We now do all seeks, in the correct order.
1735         
1736         * playlist.cpp|h: Remove the same optimization here, have a list of pending
1737         seeks and execute them in order.
1739         r: spouliot
1741 2009-10-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1743         * pipeline.cpp: Add a workaround for having invalid codecs in the 
1744         expected codec location - with this workaround the user will get
1745         a new codec download dialog.
1747         r: sde
1749 2009-10-26  Sebastien Pouliot  <sebastien@ximian.com>
1751         * deployment.cpp: Match SL appdomain friendly name
1753         r: sde
1755 2009-10-23  Chris Toshok  <toshok@ximian.com>
1757         * runtime.cpp (Surface::IsVersionSupported): report that we
1758         support versions 3.0.x, because the alternative is not even
1759         attempting to execute many xaps.
1761         r: lewing
1763 2009-10-23  Chris Toshok  <toshok@ximian.com>
1765         * frameworkelement.cpp (FrameworkElement::UpdateLayout): call
1766         Deployment::GetCurrent()->LayoutUpdated() instead of walking an
1767         updated_list.
1769         * frameworkelement.h (class FrameworkElement): remove
1770         LayoutUpdatedEvent.
1772         * deployment.h,cpp (Deployment::LayoutUpdated): move the
1773         FrameworkElement event here, since any layout updating causes
1774         every LayoutUpdated handler to be called, even for those elements
1775         not in the tree.
1777         * type-generated.cpp: regen
1779         r: lewing
1781 2009-10-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1783         * pipeline.h: IMediaDemuxer: add a GetCanSeek method specifying whether
1784         a demuxer can seek or not. ExternalDemuxer (aka MediaStreamSource) can
1785         specify false for this (which won't prevent SL from trying to seek on
1786         the MediaStreamSource though). Implement ExternalDemuxer::SetCanSeek.
1788         * mediaelement.cpp: If the demuxer can't seek, set CanSeek = false.
1790         r: sde
1792 2009-10-23  Stephane Delcroix  <sdelcroix@novell.com>
1794         * uri.cpp (flatten_path): keep track of ../ parts if there's no
1795         previous part to drop, or if the previous part is ../ too.
1797         r: toshok
1799 2009-10-23  Stephane Delcroix  <sdelcroix@novell.com>
1801         * deepzoomimagetilesource..h|cpp: the strip_and_set hack is no longer
1802         required with jeff's latest patch
1804         r: rolf
1806 2009-10-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1808         * pipeline-ui.cpp: ShowUI: We need to set the current deployment here.
1810         r: sde
1812 2009-10-22  Jeffrey Stedfast  <fejj@novell.com>
1814         * uri.cpp (flatten_path): New helper function to flatten a path
1815         (e.g. get rid of extra /'s, ./'s, and handle ../'s).
1816         (Parse): If the Uri is absolute, flatten the path.
1817         (Combine): Simplified by just concatenating the old path, the
1818         relative_path, and then calling flatten_path(). Also, thanks to
1819         Stephane's investigations, fixed the fact that a relative_path
1820         starting with '/' does not combine at the root like previously
1821         thought.
1823         r:sde
1825 2009-10-22  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1827         * dependencyobject.cpp|h: CanEmitEvents: add an event_id argument, so
1828         that we can allow DestroyedEvent during shutdown. This fixes a crash
1829         with namescopes - they rely on DestroyedEVent to properly detach from
1830         objects.
1832         r: alan
1834 2009-10-21  Stephane Delcroix  <sdelcroix@novell.com>
1836         * uri.cpp: url_encode the whitespaces too,
1838         r: jeff
1840 2009-10-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1842         * pipeline-ui.cpp: Include stdlib.h to fix release builds.
1844         r: alan
1846 2009-10-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1848         * pipeline.cpp: GetMediaReffed might return null, add some null checks
1849         for this.
1851         r: toshok
1853 2009-10-20  Andreia Gaita  <avidigal@novell.com>
1855         * timemanager.[h|cpp]: (AddDispatcherCall) used by Dispatcher to add tick
1856         calls. If it's called while we're in the emitting loop, save the new
1857         ones on another list so they'll get invoked on the next tick. All other
1858         tick calls added via AddTickCall get invoked asap.
1860         * list.[h|cpp]: change CloneAndClear to MoveTo, it now moves the queue
1861         nodes to an existing queue instead of creating a new one
1863         * cbinding.[h|cpp]: regen
1865         r: rolf
1867 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1869         * pipeline.cpp: IMediaDemuxer::ReportGetFrameCompleted: Only clear the
1870         pending_stream field if we're stopped or if we processed the returned
1871         frame. Specifically do not clear the pending_stream field if we're
1872         not executing on a media thread (since when the method is called again on
1873         the media thread we might end up dropping the frame) - and it's a race
1874         condition that may cause crashes.
1876         r: spouliot
1877         
1878 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1880         * runtime.cpp|h: Add a DetachWindow which detaches the surface from
1881         the window and prevents the window from getting destroyed when the
1882         surface is destroyed. Also add a few protections against having a
1883         null window, which we may get when the window has been detached.
1885         r: spouliot
1887 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1889         * type.h:
1890         * type.cpp
1891         * type.h.in: Added a LookupEvent method that takes a deployment
1892         parameter so that it doesn't try to use Deployment::GetCurrent. This
1893         is required when we need to lookup events for deployments which are
1894         not the current one (when re-creating a PluginInstance since its
1895         source has changed for instance).
1897         r: spouliot
1899 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1901         * window-gtk.cpp:
1902         * window.cpp|h: Detach the window from the deployment by not storing it,
1903         use Surface' deployment instead. Also add a convenience SetCurrentDeployment
1904         method.
1906         * value.cpp:
1907         * textblock.cpp:
1908         * provider.cpp:
1909         * popup.cpp:
1910         * glyphs.cpp:
1911         * downloader.cpp:
1912         * control.cpp:
1913         * canvas.cpp:
1914         * audio.cpp: 
1915         * dependencyproperty.cpp: Include deployment.h, required now that
1916         window.h doesn't include it.
1918         * src.mdp:
1919         * Makefile.am: Updated with window.cpp.
1921         r: spouliot
1923 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1925         * deployment.cpp|h: Moved all managed code handling from PluginInstance
1926         here.
1928         r: spouliot
1930 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1932         * codec-version.h.in: Bump ABI to 16.
1934 2009-10-19  Andreia Gaita  <avidigal@novell.com>
1936         * list.[h|cpp]: (Queue::CloneAndClear) Added, clones the queue while
1937         clearing the original
1939         * timemanager.cpp: Make a copy of the queued tick calls and use that
1940         instead of the live queue. Callbacks may insert new calls into the
1941         queue, and those should be invoked on the next tick, not on the
1942         current one. Fixes drt #244
1944         r: rolf
1946 2009-10-19  Andreia Gaita  <avidigal@novell.com>
1948         * timemanager.cpp: fix START_TIMER define and add timing logs on tick calls
1950         r: rolf
1952 2009-10-15  Alan McGovern  <amcgovern@novell.com>
1954         * grid.cpp: Add comment explaining why the InvalidateMeasure
1955           call is there.
1957 2009-10-15  Alan McGovern  <amcgovern@novell.com>
1959         * grid.cpp: Changing a Grid property (Row, RowSpan etc) on a
1960           UIElement invalidates its measure. r: lewing.
1962 2009-10-15  Stephane Delcroix  <sdelcroix@novell.com>
1964         * multiscaleimage.cpp: send the RoutedException on ImageOpenFailed.
1965         Errorcode and (empty) message are matching SL behavior. Fixes drt #874.
1967         r: rolf
1969 2009-10-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1971         * type.h:
1972         * value.h:
1973         * cbinding.h:
1974         * type-generated.cpp: Regenerated.
1976         r: sde
1978 2009-10-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1980         * pipeline.cpp: A printf sneaked in.
1982         r: sde
1984 2009-10-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1986         * uri.cpp:
1987         * mp3.cpp:
1988         * runtime.h:
1989         * clock.cpp:
1990         * audio.cpp:
1991         * fonts.cpp:
1992         * timeline.cpp:
1993         * playlist.cpp:
1994         * pipeline.cpp:
1995         * downloader.cpp:
1996         * audio-alsa.cpp:
1997         * audio-pulse.cpp:
1998         * mediaplayer.cpp:
1999         * timemanager.cpp:
2000         * pipeline-asf.cpp:
2001         * mediaelement.cpp:
2002         * mms-downloader.cpp: Fix 64 bit printf format specifier on x64.
2004         r: andreia
2006 2009-10-14  Andreia Gaita  <avidigal@novell.com>
2008         * timeline.[h|cpp]: destroy dispatcher timer clocks immediately if
2009         they're stopped and not restarted on the same tick
2011         r: toshok
2013 2009-10-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2015         * mp3.cpp:
2016         * pipeline-asf.cpp: Updated according to API changes.
2018         * pipeline.cpp|h: Media::Dispose: Check if we've been disposed and
2019         do nothing in that case. This way we don't hit the warning just below
2020         about not being in the media thread.
2021         
2022         MediaThreadPool::IsThreadPoolThread: Return the value we calculated, 
2023         not a hardcoded 'true' value.
2024         
2025         Make the demuxer serialized: Don't seek if we're waiting for a frame (wait
2026         until the frame has been returned). Also don't request a frame if we're
2027         seeking (just do nothing, when the seek completes new frames will be
2028         requested).
2029         
2030         Change seeking to store the last seeked-to pts in the demuxer
2031         when marshalling seeks from the main thread to the media thread. This
2032         ensures that if two seeks are enqueued quickly, we won't seek twice, only
2033         to the last (there is also another potential issue: if the first seek
2034         couldn't complete because we were waiting for a frame, we could end up
2035         seeking in the wrong order).
2036         
2037         * deployment.cpp: Delete the local variable, not the instance field
2038         we just nulled out.
2040         r: spouliot
2042 2009-10-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2044         * pipeline.cpp: ProgressiveSource::DataWrite: write_fd might be null
2045         if we've been disposed, don't print a warning in this case. Also don't
2046         get the media until we've passed the write_fd check - this way we don't
2047         leak refs if the check fails.
2049         r: spouliot
2051 2009-10-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2053         * pipeline.cpp: Remove more output which can happen during normal
2054         executing (shutdown in particular for these cases).
2056         r: spouliot
2058 2009-10-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2060         * pipeline.cpp: Media::RetryHttp: don't dispose media objects in this
2061         method directly, it's called on the main thread, instead marshal the
2062         Dispose to the media thread. Also reset error_reported, otherwise
2063         Initialize will just bail out immediately.
2065         r: spouliot
2067 2009-10-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2069         * pipeline.cpp: Download progress can actually go down (if the file
2070         size goes down). So don't print a scary warning.
2072         r: spouliot
2074 2009-10-13  Jeffrey Stedfast  <fejj@novell.com>
2076         * textbox.cpp (TextBoxView::Layout): Set dirty to false after
2077         laying out the text.
2078         (TextBoxView::Render): Don't do Layout here.
2080         r: lewing
2082 2009-10-09  Chris Toshok  <toshok@ximian.com>
2084         * control.cpp (Control::OnPropertyChanged): drt #438 shows that
2085         you can set Template = null to clear the template's visual tree.
2086         bizarre, but true.
2087         (Control::ClearTemplate): set template_root to NULL after we
2088         remove it.
2090         r: jackson
2092 2009-10-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2094         * mediaelement.cpp: MediaElement::SetUriSource: Remove scary warning
2095         which may happen quite often and in common code paths.
2097         r: alan
2099 2009-10-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2101         * dependencyobject.cpp: DependencyObject::ProviderValueChanged: After
2102         invoking the property changed handler the values we have might have
2103         gotten deleted. Clone them before calling the property changed handler
2104         so that we don't access deleted values. Makes #544211 not crash.
2106         r: alan
2108 2009-10-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2110         * dependencyobject.cpp: Emit overloads: ensure we unref the calldata
2111         when returning early.
2113         r: alan
2115 2009-10-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2117         * mediaelement.h: Make SourceProperty nullable. Fixes #537849.
2119         * dependencyproperty.g.cpp: Regenerated.
2121         r: alan
2123 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2125         * pipeline-ui.cpp: Add checks against a null downloader, fixes #468491.
2127         r: spouliot
2129 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2131         * audio.cpp: AudioSource::Dispose: lock around field accesses,
2132         and move the fields into a local variables so we can clean up
2133         with the mutex unlocked.
2135         r: spouliot
2137 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2139         * audio.cpp: AudioSource::IsQueueEmpty: it's pretty common to
2140         end up with a null stream, so don't spam the console with warnings.
2142         r: spouliot
2144 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2146         * mediaplayer.cpp: Open: seek to the initial pts.
2148         * playlist.cpp: When we re-open a media after stopping it, don't do
2149         it async since we might end up doing things in the wrong order.
2151         Fixes #476180.
2153         r: spouliot
2155 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2157         * deployment.cpp|h: Make shutdown an async/iterative process to ensure
2158         we don't accidentally get deadlocked while shutting down. Change shutdown
2159         sequence to first ensure no media threads are running, then do managed
2160         shutdown unloading the appdomain, and do nothing more until the appdomain
2161         has unloaded successfully (calling mono_domain_finalize which we used to is
2162         very wrong since it assumes all managed threads have been aborted, when only
2163         mono_domain_unload actually aborts threads - we ended up executing code in
2164         other managed threads with freed objects everywhere). Added an
2165         AppDomainUnloadedEvent so that the plugin can know when the appdomain has
2166         been unloaded and free itself. Dispose the types when the deployment is
2167         disposed, and delete them types when the deployment is destroyed. This way we
2168         make sure that the types are available until all the objects have been
2169         deleted. This also fixes different code paths / deletion points
2170         depending on whether we built with object tracking or not. This also
2171         removes the need for the is_dead variable. Maintain a counter of the number of
2172         deployments alive so that we know when runtime can be shut down.
2174         * dependencyobject.cpp: Don't emit events while we're shutting down.
2175         Deployment::is_dead is dead now, remove checks, replaced with Deployment::
2176         IsShuttingDown wherever applicable. Only emit DestroyedEvent on the main
2177         thread.
2179         * dependencyproperty.cpp|h: Add a Dispose method which clears out any
2180         refs the default value might have (but keep a default value, we depend
2181         in some places on having a default value).
2183         * type.cpp: Dispose: call Dispose on the DP.
2185         * type.h:
2186         * type.h.in: Remove 'disposed' field: no longer needed.
2188         r: andreia
2190 2009-10-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2192         * pipeline.cpp|h: Media::Stop[Async]: when called clear all buffers.
2193         This ensures that we don't keep the (default) 5s buffer of media in
2194         memory while stopped. Add lots of checks for a stopped media so that
2195         we don't refill the buffer after clearing it.
2196         Makes MS DRT #238, #239 and #244 require a lot less memory.
2198         * playlist.cpp: Call Play on the media too when we start playing.
2200 2009-10-05  Jeffrey Stedfast  <fejj@novell.com>
2202         * runtime.cpp (HandleUIKeyPress): Silverlight 2.0 does not
2203         silently drop repeated key-press events.
2205         r: spuliot
2207 2009-10-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2209         * pipeline.cpp: MediaFrames can be deleted on any thread. Fixes an
2210         issue where we'd create more MediaFrames than the delayed unref
2211         mechanism could free, so we'd run out of memory.
2213         r: spouliot
2215 2009-10-05  Alan McGovern  <amcgovern@novell.com>
2217         * cbinding.h:
2218         * cbinding.cpp:
2219         * dependencyobject.h:
2220         * dependencyobject.cpp: Store the starting_generation and
2221           only_unemitted flags on the EmitContext so that the values
2222           are used when we call DoEmitCurrentContext from managed
2223           code. r: toshok
2225 2009-10-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2227         * pipeline.cpp|h: IMediaDemuxer::FillBuffers, don't enqueue a request
2228         if we there is already a request pending.
2230         r: spouliot
2232 2009-10-01  Jeffrey Stedfast  <fejj@novell.com>
2234         Gets drt #412 a bit closer to passing.
2236         * textblock.cpp (TextBlock): Initialize our own FontDescription
2237         needed so we can tell the layout engine what the base font to use
2238         for calculating BlockLineHeight proportions.
2239         (TextBlock): Delete our FontDescription.
2240         (UpdateFontDescription): New method to update our own
2241         FontDescription and notify the layout engine of any changes.
2242         (UpdateLayoutAttributes): Call UpdateFontDescription().
2243         (UpdateFontDescriptions): Same.
2245         * layout.cpp (TextLayout::SetBaseFont): Calculate the proportional
2246         distance to the baseline given the base font.
2247         (TextLayout::OverrideLineHeight): Don't check line_height against
2248         NAN, check it against 0 instead. NAN means that we use the
2249         containing TextBlock's font height as a base.
2250         (TextLayout::LineHeightOverride): New method to figure out the
2251         line height value to use when using BlockLineHeight strategy.
2252         (TextLayout::DescendOverride): Given the overridden LineHeight,
2253         calculate the baseline offset using the proportional distance
2254         calculated in SetBaseFont().
2255         (TextLayout::Layout): Instead of using 0 as the overridden line
2256         descent, use the value calculated from DescendOverride(). Also use
2257         LineHeightOverride() instead of line_height directly.
2259         r: spouliot
2261 2009-10-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2263         * pipeline-asf.cpp: MmsPlaylistEntry: clear the queue when we're
2264         disposed, that ensures that the queue is cleared up even if the
2265         MmsPlaylistEntry itself leaks.
2267         r: spouliot
2269 2009-10-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2271         * pipeline-asf.cpp: Fix some potential leaks.
2273         r: spouliot
2275 2009-10-01  Jeffrey Stedfast  <fejj@novell.com>
2277         * fonts.h (class TextFont): Make some of the getters const.
2279         r: shana
2281 2009-10-01  Andreia Gaita  <avidigal@novell.com>
2283         * utils.cpp: if there's no Application instance, use the root temp
2284         dir to store, and track the created path directly on deployment so
2285         it can be cleared up in the end.
2287         r: spouliot
2289 2009-10-01  Alan McGovern  <amcgovern@novell.com>
2291         * runtime.cpp: WalkTreeForLoaded has already been called on
2292           this element as part of the previous call to AttachLayer.
2294 2009-10-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2296         * dependencyobject.h: Make GetUnsafeDeployment available always, media
2297         code might use it to get the deployment of the object instead of the
2298         current deployment.
2300         * pipeline.cpp|h: Added WaitForCompletion to MediaThreadPool: allows a
2301         deployment instance to wait until there is nothing more executing in 
2302         the thread pool regarding that deployment.
2304         * deployment.cpp|h: Maintain a list of all the Media instances created
2305         and dispose them when the deployment shuts down.
2307         r: spouliot
2309 2009-10-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2311         * dependencyobject.cpp|h: EventObject::CanEmitEvents: added to avoid
2312         some code duplication in all our Emit methods.
2314         r: alan
2316 2009-10-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2318         * audio.cpp: Dispose: make sure the audio really stops.
2320         r: alan
2322 2009-10-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2324         * pipeline.cpp|h: ExternalDemuxer: Make writes to the callbacks
2325         thread-safe, since managed code may clear them up on the finalizer
2326         thread.
2328         * cbinding.cpp|h: Regenerated.
2330         r: alan
2332 2009-09-30  Alan McGovern  <amcgovern@novell.com>
2334         * runtime.cpp: If the surface has been zombified, don't handle
2335           the plugin focus in/out event. r: toshok
2337 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2339         * pipeline.cpp: IMediaDecoder::ReportDecodeFrameCompleted: add some
2340         null checks.
2342 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2344         * pipeline.cpp: IMediaDemuxer::ReportGetFrameCompleted: always do the
2345         decoding async. This ensures we don't reenter managed code when the
2346         frame comes from MediaStreamSource.
2348         r: spouliot
2350 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2352         * pipeline.cpp|h: MediaThreadPool: Don't use a globally allocated list
2353         for the queue, it may blow up when the process shuts down because the
2354         media thread might still be running when the list is destroyed causing
2355         random crashes.
2357         r: spouliot
2359 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2361         * pipeline.cpp|h: MediaThreadPool: Add a max_threads const variable
2362         specifying the max number of threads, and use static memory for all of
2363         them.
2365         r: spouliot
2367 2009-09-30  Andreia Gaita  <avidigal@novell.com>
2369         * deployment.[h|cpp]: Added TrackPath/UntrackPath to track temporary
2370         paths that get created in applications, so they can be released even
2371         if the Application instance leaks.
2373         * application.[h|cpp]: Added GetResourceRoot, returns resource_root,
2374         which keeps the base temp path of all files and resources for an
2375         application.
2377         * utils.cpp: use the Application GetResourceRoot as a base path for
2378         all temporary files.
2380         r: alan
2382 2009-09-30  Alan McGovern  <amcgovern@novell.com>
2384         * runtime.cpp: When the plugin gets focus or loses focus, we
2385           have to emit the corresponding event on the currently
2386           focused element - not on the TopLevel. Note that if we focus
2387           out of the plugin, we emit LostFocus on the currently
2388           focused element but do *not* set the current focused element
2389           to null. Lastly when handling the mouse down event, we
2390           should not try to focus elements in the hitlist from the
2391           mouse click. This mostly fixes DRT 745. r: rolf
2393 2009-09-30  Alan McGovern  <amcgovern@novell.com>
2395         * textbox.h:
2396         * validators.h:
2397         * validators.cpp: IsInputMethodEnabled defaults to true and
2398           also needs a validator to ensure that it's only set on 
2400         * dependencyproperty.g.cpp: IsInputMethodEnabled defaults to
2401           true and also needs a validator to ensure that it's only set
2402           on TextBoxes
2404 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2406         * pipeline.cpp: Reset more state when a seek completes.
2408         r: alan
2410 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2412         * pipeline.cpp: Media::EnqueueWork: we need to lock around the entire
2413         call to MediaThreadPool::AddWork, since otherwise we have a race
2414         condition between setting the is_disposed variable to true and adding
2415         the work.
2417         r: alan
2419 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2421         * mediaelement.cpp: Stop immediately when the we're deattached from the
2422         visual tree.
2424         r: andreia
2426 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2428         * deployment.h: Fix typo in comment.
2430 2009-09-29  Chris Toshok  <toshok@ximian.com>
2432         * dependencyobject.cpp (EventObject::StartEmit): when we copy the
2433         list of closures to invoke, don't copy ones that are
2434         pending_removal.  This fixes the crash due to re-entering in drt
2435         502 in a way that doesn't break the existing plugin behavior.
2436         (EventObject::DoEmitCurrentContext): revert the
2437         !closure->pending_removal change that caused plugin event listener
2438         breakage in the xaml tests.
2440         r: andreia
2442 2009-09-29  Larry Ewing  <lewing@novell.com>
2444         * border.cpp (InsideObject): improve Border::InsideObject to
2445         handle the actual drawn bounds.
2447         Fixes #2022.
2449         r: jackson
2450         
2451 2009-09-29  Jeffrey Stedfast  <fejj@novell.com>
2453         * textbox.cpp (PostOnKeyDown): Renamed from OnCharacterKeyDown()
2454         to be more consistent with the managed method names. Don't set
2455         Handled to true, since anything that makes it this far should also
2456         bubble up.
2458         r:toshok
2460 2009-09-28  Andreia Gaita  <avidigal@novell.com>
2462         * application.cpp, bitmapimage.cpp,
2463           file-downloader.cpp, fontmanager.cpp,
2464           pipeline-ui.cpp, pipeline.cpp,
2465           utils.cpp: uniform usage of glib io calls
2467         r: toshok
2469 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2471         * window-gtk.cpp: gtk_window_destroy can cause reentry, so ensure we leave
2472         the current deployment as it was when returning from it.
2474         r: lewing
2475         
2476 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2478         * mediaelement.cpp|h: When receiving markers from the pipeline, store them
2479         in a general list and only move them into a TimelineCollection just before
2480         checking if they are to be emitted. This avoids locking a mutex during a
2481         potentially large time, as well as trying to emit an event on the pipeline
2482         thread (collection changed event when adding markers to the
2483         TimelineCollection).
2485         r: spouliot
2487 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2489         * audio.cpp: Follow refcounting rules with the AlsaPlayer.
2491         r: alan
2493 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2495         * audio.cpp: AudioPlayer::Shutdown: no need to unref with the mutex
2496         locked. CreateInstance: Add a couple of comments.
2498         r: alan
2500 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2502         * deployment.cpp|h: No need for the downloaders field to be a pointer
2503         when it'll always exist. Move the downloader abort code to the node's
2504         destructor, this way we ensure that the downloader is always aborted.
2505         Reinitialize: clear the downloaders list instead of creating a new one
2506         (and leaking the previous one).
2508         r: spouliot
2510 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2512         * audio.cpp|h: AudioPlayer can't derive from EventObject, since 
2513         EventObject is tied to a particular deployment, while AudioPlayer is
2514         process-wide. Implement simple refcounting in AudioPlayer to work
2515         around this and keep the old behaviour.
2517         * type.h:
2518         * value.h:
2519         * cbinding.h:
2520         * type-generated.cpp: Regenerated.
2522         r: alan, spouliot
2524 2009-09-28  Chris Toshok  <toshok@ximian.com>
2526         * frameworkelement.h|cpp (class FrameworkElement): remove the
2527         empty SetValueWithErrorImpl implementation.
2529         r: jeff
2531 2009-09-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2533         * pipeline.cpp: Make Media::OpenAsync really async. Fixes issues with
2534         MS DRT #244 (and possibly others) where we'd end up raising the
2535         MediaOpened event while still parsing xaml (the test didn't have time
2536         to attach an handler to the event before it was raised).
2538         r: spouliot
2540 2009-09-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2542         * mediaelement.cpp: Stop when we're detached. This helps with a
2543         resource "leak": if the user code just removes the mediaelement from
2544         the visual tree and forgets about it, we'd continue playing until the
2545         gc kicks in and finds out it should free the mediaelement.
2547         r: spouliout
2549 2009-09-28  Chris Toshok  <toshok@ximian.com>
2551         * dependencyobject.cpp (EventObject::DoEmitCurrentContext): don't
2552         call closure functions when the closure is pending removal.  if
2553         it's a managed delegate it will likely have already been
2554         collected.  This fixes the regression of drt #502.
2556         r: spouliot
2558 2009-09-24  Stephen Shaw  <sshaw@decriptor.com>
2560         * multiscaleimage.cpp (MultiScaleImage::GetZoomAnimationEndPoint):
2561         Method now returns a value
2563         r: lewing
2565 2009-09-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2567         * mediaelement.cpp|h: Remove unused methods.
2569         r: sde
2571 2009-09-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2573         * pipeline.cpp: Remove an unused variable (fixing a compiler warning).
2575         r: sde
2577 2009-09-23  Chris Toshok  <toshok@ximian.com>
2579         * uielement.cpp (UIElement::EmitGotFocus): this event passes
2580         RoutedEventArgs, not EventArgs.
2581         (UIElement::EmitLostFocus): same.
2583         * eventargs.h|cpp (class MouseButtonEventArgs): add this type, and
2584         make both MouseButtonEventArgs and MouseWheelEventArgs subclass
2585         from MouseEventArgs.  Move MouseEventArgs::GetButton and
2586         ::GetClickCount to MouseButtonEventArgs.
2588         * runtime.cpp (Surface::CreateArgsForEvent): for the button
2589         events, create a MouseButtonEventArgs.
2591         * textbox.h|cpp: MouseEventArgs -> MouseButtonEventArgs for all
2592         button handling methods.
2594         * value.h, type.h, type-generate.cpp, cbinding.h|cpp: regen.
2596         r: lewing
2598 2009-09-23  Chris Toshok  <toshok@ximian.com>
2600         * uielement.h (class UIElement): add event metadata.
2602         * uielement.cpp (UIElement::OnLoaded): pass RoutedEventArgs to the
2603         LoadedEvent.
2604         (UIElement::ClearLoaded): same with Unloaded.
2606         * type-generated.cpp, type.h, value.h: regen.
2608         * transform.h (class Matrix): add event metadata.
2610         * timeline.h (class TimelineGroup): add event metadata.
2612         * textbox.h (class TextBox): add event metadata.
2613         (class PasswordBox): add event metadata.
2615         * stylus.h (class StylusPoint): add event metadata.
2617         * runtime.cpp (Surface::PerformReleaseCapture): we need to clear
2618         captured/pendingReleaseCapture before emitting the event,
2619         otherwise we could get into an infinite loop between handler and
2620         ReleaseMouseCapture.
2621         (Surface::EmitEventOnList): remove the ctx arg to DoEmit.
2623         * namescope.h (class NameScope): add event metadata.
2625         * multiscaleimage.h (class MultiScaleImage): add event metadata.
2627         * mediaelement.h (class MediaElement): add event metadata.
2629         * media.h (class MediaBase): add event metadata.
2631         * frameworkelement.h (class FrameworkElement): add event metadata.
2633         * deployment.h (class Deployment): add event metadata.
2635         * dependencyproperty.h: remove PropertyChangedEventArgs from here.
2637         * eventargs.h: and put it here.
2639         * dependencyproperty.h|cpp: replace the emitting count with a
2640         stack of EmitContexts.  This is since the managed layer calls a
2641         function to actually perform the emit, and the managed code
2642         doesn't have access to the context.
2643         (AddOnEventHandler,RemoveOnEventHandler): new methods so that we
2644         can replace the normal emit machinery with a delegate into managed
2645         that calls the OnEvent method.
2646         (StartEmit): push the new context onto the stack
2647         (DoEmit): if there's an on_event handler, call that and let it do
2648         the work.  otherwise call DoEmitCurrentContext.
2649         (DoEmitCurrentContext): move the actual invoking of event closures
2650         here.
2651         (FinishEmit): pop the context off the stack.
2652         (DependencyObject::ProviderValueChanged): we have to allocate
2653         PropertyChangedEventArgs on the heap now that it's refcounted.
2654         (DependencyObject::NotifyListenersOfPropertyChange): same.
2655         (DependencyObject::collection_item_changed): same.
2656         
2657         * control.h (class Control): add event metadata.
2659         * control.cpp (Control::OnPropertyChanged): when emitting
2660         IsEnabledChangedEvent, and pass the PropertyChangedEventArgs.
2662         * collection.h (class Collection): add event metadata.
2664         * brush.h (class ImageBrush): add event metadata.
2666         * bitmapsource.h (class BitmapSource): add event metadata.
2668         * bitmapimage.h (class BitmapImage): add event metadata.
2670         * application.h (class Application): add event metadata.
2672         * cbinding.h|cpp: regen.
2674         r: spouliot, andriea
2676 2009-09-23  Stephane Delcroix  <sdelcroix@novell.com>
2678         * multiscaleimage.cpp: fix the vp_h computation. vp_h is
2679         vp_w *msi_h/msi_w, NOT vp_w*msi_w/msi_h !
2681 2009-09-21  Stephane Delcroix  <sdelcroix@novell.com>
2683         * multiscaleimage.h|cpp: stop the animations when setting
2684         UseSprings to false. Set the values to the target values
2685         of the animations too.
2687         r: toshok
2689 2009-09-18  Jackson Harper  <jackson@ximian.com>
2691         * xaml.cpp|h: Use flags passed to createfromstring now for
2692         validating templates and importing the default namespace.
2693         * value.h
2694         * collection.cpp|h: Implement a resource dictionary collection,
2695         this is a collection of dictionaries used for the
2696         MergedDictionaries property of ResourceDictionaries
2697         * resources.cpp|h: Implement the merged dictionaries property and
2698         check them when looking up items in a dictionary.
2699         * dependencyproperty.g.cpp:
2700         * types-generated.cpp:
2701         * cbinding.c|h: regen
2702         
2703 2009-09-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2705         * pipeline-asf.cpp: MmsPlaylistEntry::WritePacket: actually fetch the
2706         media before asserting that it isn't null.
2708         r: sde
2710 2009-09-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2712         * pipeline.cpp: When filling buffers, treat a buffering_time of 0 as a
2713         buffering_time of 1 ms, otherwise we'll do nothing at all since we have
2714         the requested amount of buffer (nothing at all), but buffering progress
2715         is is still at 0% (since we didn't buffer anything). Don't change the
2716         buffering progress calculation, since playback would fail (there would
2717         be nothing to play).
2719         r: sde
2721 2009-09-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2723         * mms-downloader.cpp: Remove old debugging code that was stripping out
2724         everything after a ? in a url.
2726         r: sde
2728 2009-09-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2730         * xaml.cpp: Honor the debug configuration option instead of enabling it
2731         all the time.
2733         * glyphs.cpp: Move debug code into conditional expression.
2735         * debug.h: DEBUG is resolved to nothing at all in release builds, so
2736         when checking if debug is defined in complex expressions we need to
2737         use 'defined (DEBUG)', since otherwise the expression becomes bogus.
2738         Also Move #include "runtime.h" outside of the conditional code, this
2739         way we don't have different include requirements in other headers
2740         depending on debug/release configuration.
2742         r: sde
2744 2009-09-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2746         * dependencyobject.cpp|h: SetCurrentDeployment: add a parameter
2747         specifying whether the current thread should be registered with the
2748         deployment or not.
2749         
2750         This fixes a minor catch with the media threads: they need to register
2751         the current thread with the deployment before calling
2752         SetCurrentDeployment, but they can't call GetDeployment to get the
2753         deployment to register the thread with before calling
2754         SetCurrentDeployment since it would trigger a deployment mis-matched
2755         warning.
2757         * pipeline.cpp|h: Add a thread pool to manage media threads instead of
2758         creating one thread per Media instance.
2760         * pipeline-asf.cpp: Updated according to Media API changes.
2762         r: geoff
2764 2009-09-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2766         * mediaplayer.cpp: GetVolume: Get the AudioSource instance before using
2767         it.
2769         r: sde
2771 2009-09-16  Larry Ewing  <lewing@novell.com>
2773         * multiscaleimage.cpp (OnPropertyChanged): chain up to MediaBase
2774         not DependencyObject so that property changes actually work.
2776         r: kangaroo
2778 2009-09-14  Jeffrey Stedfast  <fejj@novell.com>
2780         * deployment.cpp (Initialize): Disable MONO_IOMAP=case.
2782         * application.cpp (GetResourceAsPath): ExtractAll using
2783         CanonModeResource (everything gets lowercased).
2785         * xap.cpp (Unpack): ExtractAll using CanonModeXap (everything but
2786         .dll's get lowercased).
2787         (xap_create_from_file): Canonicalize the AppManifest.xaml file
2788         name.
2790         * utils.cpp (CanonicalizeFilename): Now takes a tri-state mode
2791         argument to specify whether it is canonicalizing a Xap file, a
2792         resource name, or just fixing path separators. When in Xap mode,
2793         don't downcase Dll base names.
2794         (ExtractAll): When extracting a Xap, symlink a fully lowercased
2795         filename to the unmodified .dll name.
2797         r: spouliot
2799 2009-09-16  Larry Ewing  <lewing@novell.com>
2801         * tilesource.h: make tileblendtime unamanaged so we can use it
2802         when creating the fade animation.
2803         
2804         * multiscaleimage.cpp (Render): use the duration from the
2805         tilesource for the fade animation.  This probably needs to listen
2806         to change events but more testing is required.
2808         r: toshok
2809         
2810 2009-09-16  Larry Ewing  <lewing@novell.com>
2812         * style.h: make IsSealed field internal. 
2814 2009-09-16  Sebastien Pouliot  <sebastien@ximian.com>
2816         * messagebox.h: Remove tab to please the generator
2818         r: lewing
2820 2009-09-16  Sebastien Pouliot  <sebastien@ximian.com> 
2822         * deepzoomimagetilesource.cpp: don't leak get_resource_aborter
2823         or format
2825         r: sde
2827 2009-09-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2829         * pipeline.cpp|h: ProgressiveSource::Dispose: we can only abort the 
2830         resource loader from the main thread.
2832         r: sde
2834 2009-09-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2836         * ChangeLog:
2837         * bitmapimage.cpp: don't leak get_res_aborter.
2839         r: sde
2841 2009-09-16  Stephane Delcroix  <sdelcroix@novell.com>
2843         * multiscaleimage.h|cpp: StopDownloading () abort and clean the
2844         downloaders. Call it from the dtor, InvalidateTileLayer and
2845         OnSourcePropertyChanged. Should prevent drt874 from randomly failing.
2847         r: rolf
2849 2009-09-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2851         * pipeline.cpp: MediaClosure: remove the 'finished' field (never used)
2852         and add a 'description' field to ease understanding of what is going
2853         on in the pipeline.
2855         r: sde
2857 2009-09-15  Sebastien Pouliot  <sebastien@ximian.com> 
2859         * messagebox.h: Workaround old gtk+ lacking GTK_MESSAGE_OTHER
2861         r: lewing
2863 2009-09-15  Larry Ewing  <lewing@novell.com>
2865         * control.h: Mark IsTemplateItem as internal.
2867         * mediaelement.h: mark DownloadProgress as readonly.
2869         * multiscaleimage.h: make AspectRatio, IsDownloading and IsIdle
2870         readonly.
2872 2009-09-15  Sebastien Pouliot  <sebastien@ximian.com> 
2874         * messagebox.cpp|h: New. MessageBox implementation
2875         * Makefile.am: Add new files to the build
2877         r: toshok
2879 2009-09-15  Stephane Delcroix  <sdelcroix@novell.com>
2881         * multiscaleimage.cpp: set the surface pointer to NULL after
2882         destroying.
2884         r: spouliot
2886 2009-09-16  Chris Toshok  <toshok@ximian.com>
2888         * dependencyobject.cpp (EventObject::Emit): don't return early
2889         when we have a pre-emit handler, even if the list is empty.  Also,
2890         don't do the pre-emit handler here.
2891         (EventObject::DoEmit): instead do it here.
2893 2009-09-14  Chris Toshok  <toshok@ximian.com>
2895         * xaml.cpp (XamlLoader::CreateFromFileWithError): use the new
2896         ParserErrorEventArgs overload to MoonError::FillIn to simplify
2897         this a little bit.
2898         (XamlLoader::CreateFromStringWithError): same.
2899         (XamlLoader::HydrateFromStringWithError): same.
2901         * pipeline-asf.cpp (MmsSource::DownloadFailedHandler): pass a
2902         MoonError to the ErrorEventArgs, instead of the multiple args.
2904         * playlist.cpp: same.
2906         * asf/asf.cpp: same.
2908         * downloader.cpp (Downloader::SendInternal): pass a MoonError to
2909         the ErrorEventArgs, instead of the multiple args.
2910         (Downloader::NotifyFailed): same.
2912         * runtime.cpp (Surface::EmitError): same.
2914         * mediaelement.cpp (MediaElement::ReportErrorOccurred): same.
2916         * pipeline.cpp: same.
2918         * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
2919         we need to free the string we pass to MoonError::FillIn now that
2920         it frees.
2921         (DependencyObject::IsValueValid): same.
2922         (DependencyObject::RegisterAllNamesRootedAt): same.
2923         (DependencyObject::ReadLocalValueWithError): same.
2924         (DependencyObject::GetValueWithError): same.
2925         (DependencyObject::GetValueNoDefaultWithError): same.
2926         (DependencyObject::SetParent): same.
2928         * brush.h|cpp (ImageBrush::image_failed): pass in the calldata to
2929         ImageFailed.
2930         (ImageBrush::ImageFailed): pass the ImageErrorEventArgs on to our
2931         ImageFailedEvent, after reffing them.
2933         * bitmapimage.cpp (BitmapImage::DownloaderComplete): if there was
2934         an error, we need to fill in the moon error with the appropriate
2935         exception, code, and msg.  the calldata to the Emit call is now an
2936         ImageErrorEventArgs again, which we construct using the
2937         moon_error.
2938         (BitmapImage::DownloaderFailed): same sort of change.
2939         (BitmapImage::CreateLoader): same.
2941         * bitmapimage.h (class BitmapImage): rename "error" field to
2942         "gerror" to make it clearer what it is in the code.
2944         * enums.h (enum ErrorEventArgsType): rename ErrorType to this so
2945         we get a little more indication of where it comes from.  this enum
2946         is not long for this world, if I can help it.
2948         * media.h|cpp (Image::image_failed): pass in the calldata to
2949         ImageFailed.
2950         (Image::ImageFailed): pass the ImageErrorEventArgs on to our
2951         ImageFailedEvent, after reffing them.
2953         * error.h|cpp: move all the eventargs subclasses from here
2954         to eventargs.h.
2955         (class MoonError): add a non-empty ctor, copy ctor and operator=.
2956         Also, remove the char* vs. const char* apis.  make them all const
2957         char*, and dup the passed in string.  Lastly, add a FillIn
2958         overload that takes a ParserErrorEventArgs.
2960         * eventargs.h|cpp: the ErrorEventArgs subclasses now keep some
2961         info in an embedded MoonError.
2962         (ExceptionRoutedEventArgs): remove this class.  Nothing in
2963         unmanaged code uses it.
2965 2009-09-14  Sebastien Pouliot  <sebastien@ximian.com>
2967         * xaml.cpp: remove dead code
2969         r: jackson
2971 2009-09-14  Chris Toshok  <toshok@ximian.com>
2973         * xaml.cpp (XamlLoader::CreateFromFileWithError): use the new
2974         ParserErrorEventArgs overload to MoonError::FillIn to simplify
2975         this a little bit.
2976         (XamlLoader::CreateFromStringWithError): same.
2977         (XamlLoader::HydrateFromStringWithError): same.
2979         * pipeline-asf.cpp (MmsSource::DownloadFailedHandler): pass a
2980         MoonError to the ErrorEventArgs, instead of the multiple args.
2982         * playlist.cpp: same.
2984         * asf/asf.cpp: same.
2986         * downloader.cpp (Downloader::SendInternal): pass a MoonError to
2987         the ErrorEventArgs, instead of the multiple args.
2988         (Downloader::NotifyFailed): same.
2990         * runtime.cpp (Surface::EmitError): same.
2992         * mediaelement.cpp (MediaElement::ReportErrorOccurred): same.
2994         * pipeline.cpp: same.
2996         * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
2997         we need to free the string we pass to MoonError::FillIn now that
2998         it frees.
2999         (DependencyObject::IsValueValid): same.
3000         (DependencyObject::RegisterAllNamesRootedAt): same.
3001         (DependencyObject::ReadLocalValueWithError): same.
3002         (DependencyObject::GetValueWithError): same.
3003         (DependencyObject::GetValueNoDefaultWithError): same.
3004         (DependencyObject::SetParent): same.
3006         * brush.h|cpp (ImageBrush::image_failed): pass in the calldata to
3007         ImageFailed.
3008         (ImageBrush::ImageFailed): pass the ImageErrorEventArgs on to our
3009         ImageFailedEvent, after reffing them.
3011         * bitmapimage.cpp (BitmapImage::DownloaderComplete): if there was
3012         an error, we need to fill in the moon error with the appropriate
3013         exception, code, and msg.  the calldata to the Emit call is now an
3014         ImageErrorEventArgs again, which we construct using the
3015         moon_error.
3016         (BitmapImage::DownloaderFailed): same sort of change.
3017         (BitmapImage::CreateLoader): same.
3019         * bitmapimage.h (class BitmapImage): rename "error" field to
3020         "gerror" to make it clearer what it is in the code.
3022         * enums.h (enum ErrorEventArgsType): rename ErrorType to this so
3023         we get a little more indication of where it comes from.  this enum
3024         is not long for this world, if I can help it.
3026         * media.h|cpp (Image::image_failed): pass in the calldata to
3027         ImageFailed.
3028         (Image::ImageFailed): pass the ImageErrorEventArgs on to our
3029         ImageFailedEvent, after reffing them.
3031         * error.h|cpp: move all the eventargs subclasses from here
3032         to eventargs.h.
3033         (class MoonError): add a non-empty ctor, copy ctor and operator=.
3034         Also, remove the char* vs. const char* apis.  make them all const
3035         char*, and dup the passed in string.  Lastly, add a FillIn
3036         overload that takes a ParserErrorEventArgs.
3038         * eventargs.h|cpp: the ErrorEventArgs subclasses now keep some
3039         info in an embedded MoonError.
3040         (ExceptionRoutedEventArgs): remove this class.  Nothing in
3041         unmanaged code uses it.
3043 2009-09-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3045         * audio-alsa.cpp|h:
3046         * audio-pulse.cpp|h: Delay pulse/alsa initialization until we actually
3047         need to play something, and clean up when we stop playing audio.
3049         * mutex.h: Add support for recursive mutexes.
3051         r: geoff
3053 2009-09-14  Stephane Delcroix  <sdelcroix@novell.com>
3055         * deepzoomimagetilesource.h:
3056         * multiscaleimage.h|cpp:
3057         * tilesource.h|cpp:
3058         * uielement.h: drop some manually written cbindings in favor of
3059         generated ones.
3061         * cbinding.h|cpp: regen
3063         r: rolf
3065 2009-09-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3067         * audio.cpp: It should be safe to delete audio sources on any
3068         thread.
3070         r: sde
3072 2009-09-11  Larry Ewing  <lewing@novell.com>
3074         * deployment.cpp, deployment.h: add OutOfBrowserSettings,
3075         ExternalPartCollection, ExternalPart and ExtensionPart to allow
3076         more SL 3 compat.
3078         r: toshok
3080 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3082         * audio.cpp|h: Add AudioSource::GetMediaPlayerReffed and use it
3083         wherever we used to access the field directly. Fixes a very rare
3084         multi-thread issue.
3086         r: spouliot
3088 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3090         * pipeline-asf.cpp: Add a null check.
3092         r: spouliot
3094 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3096         * runtime.h: Fix typo in sanity message.
3098 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3100         * audio.cpp: WriteFull: have a local copy of the stream pointer,
3101         it may get changed on the main thread.
3103         r: spouliot
3105 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3107         * audio-alsa.cpp: AlsaSource::InitializeInternal: make sure we unref
3108         the audio stream in all code paths.
3110         r: spouliot
3112 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3114         * mediaelement.cpp: Dont ref/unref around the MarkerTimeout tick call,
3115         it should be safe since the tick call is removed upon destruction.
3117         r: spouliot
3119 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3121         * audio.cpp|h: Make AudioPlayer refcounted, and shutdown when the
3122         AudioPlayer is disposed due to refcounting reaching 0. This way
3123         we can keep the instance lock for as little time as possible
3124         (to do the ref), instead of during the entire Add/Remove calls,
3125         which may end up deadlocking deep inside pulse in rare circumstances
3126         (we try to add an audio source on one thread(requires a global pa lock)
3127         when removing another audio source on another thread as a response to
3128         an event from pa which may already have the global pa lock).
3130         * type.h:
3131         * value.h:
3132         * cbinding.h:
3133         * type-generated.cpp: Regenerated
3135         r: sde
3137 2009-09-11  Stephane Delcroix  <sdelcroix@novell.com>
3139         * multiscaleimage.h|.cpp: DownloadTile () now takes a user_data
3140         pointer instead of subcache, layer, x and y. Avoids some tree waliking
3141         in the cache trees.
3143         r: spouliot
3145 2009-09-11  Stephane Delcroix  <sdelcroix@novell.com>
3147         * multiscaleimage.cpp: QTree: remove the QTreeNode alias, fix 
3148         qtree_remove to take guint64 indices, qtree_next_sibling for 
3149         future usage.
3151         r: rolf
3153 2009-09-10  Jackson Harper  <jackson@ximian.com>
3155         * namescope.h: Add an accessor for the names hashtable so we can
3156         use them in plugin-debug.
3158         r: spouliot
3160 2009-09-10  Jackson Harper  <jackson@ximian.com>
3162         * xaml.cpp|h: Add flags to the callback data
3163         - Add a pinvoke function that allows propertys to be delayed in
3164         their set call until after the element is fully parsed.  This
3165         allows things like adding elements to a Selector and setting its
3166         index in xaml.
3168         r: spouliot
3169         
3170 2009-09-10  Larry Ewing  <lewing@novell.com>
3172         * multiscaleimage.cpp (RenderSingle): work around the cairo
3173         limitations by doing the viewport/msi intersection and clipping in
3174         viewport space.
3176         r: sde
3178 2009-09-10  Stephane Delcroix  <sdelcroix@novell.com>
3180         * multiscaleimage.cpp: drop 3 useless lines (the cairocontext we
3181         receive on Render is already clipped to the control size.
3182         Wrap the clipping to image size in a conditional to avoid clipping
3183         with really huge rectangles. That it a bug in cairo, as shown in 
3184         drt 2013, 2014. In those cases, the rendering will (visually) leak
3185         for the low order layers.
3187         r: spouliot
3189 2009-09-09  Jackson Harper  <jackson@ximian.com>
3191         * xaml.cpp: When we are setting attributes we want to set
3192         everything with a backing dependency property before we set things
3193         that require managed. We also delay the setting of attributes with
3194         an explicit managed namespace reference.  NOTE: We dont delay
3195         setting attributes that have a DP but are forced into managed
3196         because of their type.
3197         - We can share SetUnknownAttribute functions because the default
3198         xmlns is inited to NULL.
3200         r: rolf
3202 2009-09-09  Stephane Delcroix  <sdelcroix@novell.com>
3204         * multiscaleimage.cpp: Clear () the SubImagesCollection on 
3205         source changed. Speed things up when reusing the same MSI
3206         over and over with different sources. drt #2004 is now passing
3207         every times.
3209         r: rolf
3211 2009-09-08  Sebastien Pouliot  <sebastien@ximian.com>
3213         * downloader.h, layout.h, list.h: Add missing virtual destructors
3215         r: toshok
3217 2009-09-08  Chris Toshok  <toshok@ximian.com>
3219         * provider.cpp (StylePropertyValueProvider::SealStyle): pass true
3220         for ProviderValueChanged's @set_parent.
3221         (InheritedPropertyValueProvider::PropagateInheritedProperty): pass
3222         true in the visual walking case, and false in the
3223         textblock->inline case.
3224         (PROP_ADD): pass true.
3225         (AutoCreatePropertyValueProvider::GetPropertyValue): pass true.
3226         (InheritedPropertyValueProvider::PropagateInheritedProperty):
3227         do a deep traversal of the tree, looking for children who have a
3228         mapped property from the changed one (MapPropertyToDescendant
3229         returns NULL if there's no mapping).  Once we find a suitable
3230         descendant, call ProviderValueChanged on it with "true" for
3231         notify_listeners.  This will take care of notifying further down
3232         the tree if need be, and we can skip that branch.  For textblocks
3233         we also have to iterate over the inlines to propagate the property
3234         change notification.
3235         (InheritedPropertyValueProvider::PropagateInheritedPropertiesOnAddingToTree):
3236         traverse the entire subtree looking for classes which can inherit
3237         properties from above them.  when we find one, get the inherited
3238         value.  if it's non-null, notify that the property has changed,
3239         and keep trace of this property (we only notify once for a given
3240         subtree, since the normal ProviderValueChanged notifications will
3241         handle the rest for that property.)
3242         (walk_tree): this recursive function does the bulk of the work for
3243         ::PropagateInheritedPropertiesOnAddingToTree
3245         * dependencyobject.h|cpp (DependencyObject::ProviderValueChanged):
3246         add an additional argument (set_parent), which is true for every
3247         instant except when TextBox is propagating inherited brushes to
3248         its constituent inlines.  In this case, the textbox is still the
3249         parent of the brush.  At least for the time being.  In a perfect
3250         world all the changed handling would live in the leaf
3251         nodes (i.e. in the Inlines themselves)
3252         (DependencyObject::ClearValue): track api change
3253         (DependencyObject::SetValueWithErrorImpl): same.
3254         (DependencyObject::GetValue): add an overload for allowing both
3255         starting and ending precedences, and implement the other two
3256         overloads in terms of it.
3257         (DependencyObject::GetValueSkippingPrecedence): remove, no longer
3258         used.
3260         * uielement.cpp (UIElement::ElementAdded): propagate all
3261         inheritable properties into the subtree we're adding, before
3262         calling Loaded.
3264         r: andreia
3265         
3266 2009-09-08  Stephane Delcroix  <sdelcroix@novell.com>
3268         * downloader.h|.cpp: new MsiPolicy, like MediaPolicy but doesn't allow
3269         redirections (drt 874)
3271         * bitmapimage.h|bitmapimage.cpp: new SetDownloadPolicy () to override the
3272         bitmapimage policy;
3274         * multiscaleimage.cpp: use MsiPolicy, fixes drt 874.
3276         r: spouliot
3278 2009-09-08  Sebastien Pouliot  <sebastien@ximian.com>
3280         * downloader.cpp: Skip redirection check if the source url is a
3281         local file.
3283         r: sde
3285 2009-09-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3287         * bitmapimage.cpp: CreateLoader: we were relying on an DownloadFailed
3288         event from the downloader after cancelling a resource request, this 
3289         is no longer true, so emit ImageFailed manually after calling Abort.
3291         r: sde
3293 2009-09-08  Stephane Delcroix  <sdelcroix@novell.com>
3295         * deepzoomimagetilesource.cpp: don't render if any MSI extends
3296         is 0. avoid rendering an extra layer in some cases.
3298         r: rolf
3300 2009-09-08  Stephane Delcroix  <sdelcroix@novell.com>
3302         * deepzoomimagetilesource.h|cpp: replace downloader usage by
3303         Application::GetResource (). Parses the xml stream as it comes,
3304         instead of all at once.
3306         r: kangaroo
3308 2009-09-07  Chris Toshok  <toshok@ximian.com>
3310         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
3311         don't bail out early if both values are null, as the property
3312         might be AlwaysChange.
3313         (DependencyObject::ClearValue): same.
3315         r: kangaroo
3317 2009-09-07  Stephane Delcroix  <sdelcroix@novell.com>
3319         * multiscaleimage.cpp: the tileLayer parameter is not the number 
3320         of layers to invalidate.
3322         r: shana
3324 2009-09-07  Stephane Delcroix  <sdelcroix@novell.com>
3326         * multiscaleimage.cpp: InvalidateTileLayer no longer invalidate the
3327         full cache, but only the requested tiles.
3329         r: shana
3331 2009-09-05  Stephane Delcroix  <sdelcroix@novell.com>
3333         * multiscaleimage.cpp:
3334         * deepzoomimagetilesource.h|cpp: do the same cleaning suffs (clearing
3335         the cache, aborting the downloaders, invalidating, etc...) on dzits 
3336         urisource changed that is done on msi sourcechanged.
3338         r: shana
3340 2009-09-05  Stephane Delcroix  <sdelcroix@novell.com>
3342         * multiscaleimage.h|cpp: code reshuffling and refactoring. Move
3343         the OnSourcePropertyChanged handling outside of OnPropertyChanged.
3344         No longer keep a source instance variable, as we can get it with
3345         GetSource ().
3347         r: jackson
3349 2009-09-04  Larry Ewing  <lewing@novell.com>
3351         * multiscaleimage.cpp (RenderSingle): clip our rendering to the
3352         image bounds so that when we are scaling up we don't end up with
3353         blurry images.
3355         r: sde
3357 2009-09-04  Stephane Delcroix  <sdelcroix@novell.com>
3359         * utils.h|cpp: add a void* arg to the Cancellable api
3361         * application.cpp:  remove the downloader notifications on 
3362         Cancel ().
3364 2009-09-04  Stephane Delcroix  <sdelcroix@novell.com>
3366         * multiscaleimage.cpp: on source change, don't only Abort() the
3367         dlders, but also reset the internal state of the dlders to Free
3369         r: alan
3371 2009-09-03  Stephane Delcroix  <sdelcroix@novell.com>
3373         * multiscaleimage.cpp: reset the Viewport to its default values
3374         on source change. Eventually fixes drt#511.
3376         r:lewing
3378 2009-09-03  Jeffrey Stedfast  <fejj@novell.com>
3380         * textbox.h: Nuke the CallInitialize metadata from TextBox.
3382 2009-09-03  Stephane Delcroix  <sdelcroix@novell.com>
3384         * deepzoomimagetilesource.h: add Generate* attributes
3386 2009-09-03  Stephane Delcroix  <sdelcroix@novell.com>
3388         * multiscaleimage.h: drop the GenrateJSBinding attributes
3390 2009-09-03  Stephane Delcroix  <sdelcroix@novell.com>
3392         * xaml.cpp:
3393         * deepzoomimagetilesource.h|cpp: remove a hack in the parser, and
3394         move it to the DZITS ctor. DRTs (509 and 511) and some sites shows
3395         that we have to strip an eventual leading / on ctor but not on
3396         SetUriSource.
3398 2009-09-02  Andreia Gaita  <avidigal@novell.com>
3400         * dependencyobject.cpp: move the storage cleanup to Dispose, they
3401         will need to invoke handlers and other things that require the
3402         object to still be alive. fixes crash on drt 109
3404         r: lewing
3406 2009-09-02  Jackson Harper  <jackson@ximian.com>
3408         * dependencyproperty.cpp: If the explicitly mentioned type does
3409         not contain the property, try looking for the property on the
3410         current lookup obejct.  Allows things like (UIElement.Height) on a
3411         Grid object.
3413         r: shana
3415 2009-09-02  Jeffrey Stedfast  <fejj@novell.com>
3417         * textblock.cpp (TextBlock::OnCollectionChanged): Explicitly call
3418         UpdateLayoutAttributes(). We can't rely on it being called as a
3419         result of setting the Text property since the overall Text
3420         property value might not have changed.
3421         (TextBlock::OnCollectionItemChanged): Same here.
3422         (TextBlock::OnPropertyChanged): Same for when the Inlines property
3423         changes. In the FontSource case, don't set invalidate to
3424         false. Also set dirty to true.
3425         (SetTextInternal): Changed to return void, no need to return bool
3426         anymore.
3428         r: alan
3430 2009-09-01  Jeffrey Stedfast  <fejj@novell.com>
3432         * layout.cpp (TextLayoutGlyphCluster::Render): If the background
3433         brush is null, don't bother drawing a background.
3435         r: lewing
3437 2009-09-01  Jeffrey Stedfast  <fejj@novell.com>
3439         * layout.cpp (TextLayoutGlyphCluster::Render): If the Foreground
3440         brush is null, don't render the text.
3442         r: spouliot
3444 2009-09-01  Sebastien Pouliot  <sebastien@ximian.com> 
3446         * utils.cpp (CopyFileTo): Close the destination file handle if 
3447         the source (filename) cannot be opened.
3449         r: jeff
3451 2009-09-01  Sebastien Pouliot  <sebastien@ximian.com>
3453         * uielement.cpp (UIElement::Paint): Don't leak a copy of the 
3454         region when *not* using FTB rendering.
3456         r: jeff
3458 2009-09-01  Larry Ewing  <lewing@novell.com>
3460         * frameworkelement.cpp: clear LastRenderSize before we emit so
3461         that we don't end up in a possible recursion.
3463         Fixes http://www.worldwidetelescope.org/webclient/
3464         
3465         r: toshok
3467 2009-09-01  Sebastien Pouliot  <sebastien@ximian.com>
3469         * xaml.cpp: Fix DRT355 (broken at r140756) to report the "right"
3470         error code when an invalid xap file is encoutered.
3472         re: jackson
3474 2009-08-31  Sebastien Pouliot  <sebastien@ximian.com>
3476         * debug.cpp: Delete frame if we're not using it in the loop
3477         * resources.cpp: Don't leak Value instance on error
3479         re: kangaroo
3481 2009-08-30  Andreia Gaita  <avidigal@novell.com>
3483         clock leak fixes.
3485         * animation.[h|cpp]: rename TeardownClockGroup to TeardownClock and
3486         move it to the Timeline class so all timelines can clear their clocks.
3487         Removed private root_clock, all timelines should use the timeline
3488         clock variable
3490         * timeline.[h|cpp]: TeardownClock removes the clock from the parent
3491         ClockGroup and clears the ref on the clock so it can be destroyed
3492         (which in turn will release the ref on the timeline so it too gets
3493         destroyed).
3494         DispatcherTimer doesn't have to destroy it's clock, the timeline
3495         dispose takes care of that. Added TeardownClock for DispatcherTimer
3496         so it stops the clock before disposing.
3497         Removed private root_clock, all timelines should use the timeline
3498         clock variable
3500         * clock.[h|cpp]: Added Dispose to Clock and ClockGroup. The
3501         group Dispose goes down the hierarchy of clocks and starts clearing
3502         clocks (via timeline TeardownClock) from bottom to top, so
3503         everything is guaranteed to die before the root clock gets
3504         destroyed.
3506         * timemanager.cpp: Dispose root clock before releasing it
3508         r: toshok
3510 2009-08-30  Andreia Gaita  <avidigal@novell.com>
3512         * textblock.cpp: drop the run reference, it's already reffed on the
3513         collection
3515         r: toshok
3517 2009-08-28  Alan McGovern  <amcgovern@novell.com>
3519         * control.h:
3520         * control.cpp:
3521         * contentcontrol.cpp: ContentControl is not in charge of
3522           expanding its content template, the users of ContentControl
3523           have to do that. When applying a ControlTemplate, if it
3524           expands to an empty element or one which is not a UIElement,
3525           we ignore the template and instead apply the default
3526           element. r: toshok
3528 2009-08-27  Jeffrey Stedfast  <fejj@novell.com>
3530         * textbox.cpp (TextBoxBase::Initialize): Don't listen for Focus or
3531         Mouse events anymore (except the special internal MultiClick
3532         event). Managed code will now call our public On$Event() methods
3533         when appropriate.
3534         (TextBoxBase::OnKeyUp): Don't ever set args.Handled to
3535         true. Doesn't seem like SL ever does.
3537         r:alan
3539 2009-08-27  Stephane Delcroix  <sdelcroix@novell.com>
3541         * tilesource.h: rely on the generator for internal properties.
3543         * tilesource,cpp:
3544         * deepzoomimagetilesource.cpp: use the accesors instead of the
3545         fields.
3547 2009-08-27  Andreia Gaita  <avidigal@novell.com>
3549         * dependencyobject.cpp: list should only be cleared, not destroyed,
3550         storage_hash still needs it
3552         r: alan
3554 2009-08-26  Chris Toshok  <toshok@ximian.com>
3556         * xaml.cpp (XamlParserInfo::ClearBuffer): set buffer to NULL after
3557         we free it.
3559         r: jackson
3561 2009-08-16  Chris Toshok  <toshok@ximian.com>
3563         * value.h.in, value.cpp: remove Value::Set.  it's unnecessary.
3565         * validators.cpp (Validators::BalanceValidator): use the
3566         assignment operator instead of ::Set, which no longer exists.
3567         (Validators::VolumeValidator): same.
3568         (Validators::CursorValidator): don't assign the pointer, assign
3569         the value.  This should have caused bugs...
3571         r: jackson
3572         
3573 2009-08-26  Jeffrey Stedfast  <fejj@novell.com>
3575         * validators.cpp (FloatValidator): New validator to make sure a
3576         value is within range for a float.
3578         * glyphs.cpp: Get rid of origin_y_specified, origin_x, and
3579         origin_y state variables. We can just query these on demand.
3580         (Render): Simplified slightly.
3581         (GetTransformOrigin): Get rid of unused variable.
3582         (GetOriginPoint): Just use the ascender rather than the height and
3583         the descender. Simpler that way.
3585         * glyphs.h: Changed default OriginX and OriginY values to what
3586         they should be according to the moon-unit tests (also makes drt
3587         #246 pass).
3589         r:toshok
3591 2009-08-26  Alan McGovern  <amcgovern@novell.com>
3593         * cbinding.h:
3594         * template.h:
3595         * cbinding.cpp:
3596         * template.cpp: Allow FrameworkTemplates to be expanded in
3597           managed code. Using that, expand the ItemsPanelTemplate in
3598           ItemsControl when it is available. r: toshok
3600 2009-08-26  AndrĂ©s G. Aragoneses  <aaragoneses@novell.com>
3602         * security.c: Fixed typos in last "a11y" commit.
3604 2009-08-26  Chris Toshok  <toshok@ximian.com>
3606         * textbox.cpp (TextBoxBase::SetSurface): only call
3607         gtk_im_context_set_client_window if @surface is non-null.  this
3608         quiets down some of the gtk warnings on shutdown.
3610         r: lewing
3611         
3612 2009-08-26  Alan McGovern  <amcgovern@novell.com>
3614         * type.h:
3615         * value.h:
3616         * cbinding.h:
3617         * type-generated.cpp: regen r: shana
3619 2009-08-26  Andreia Gaita  <avidigal@novell.com>
3621         * animation.[h|cpp]: Redesign AnimationStorages. There's now 4
3622         public methods that DOs and Clocks use to control an animation:
3623             - when a new storage is attached and there is already one on
3624                 the property, Disable removes the handlers from the previous
3625                 storage;
3626             - when a storage is detached, the previous one is enabled via
3627                 Enable, which attaches the handlers;
3628             - when a clock is stopped, it calls Stop, which detaches
3629                 everything and resets the property;
3630             - when cloning, SwitchTarget is used to replace the DO and its
3631                 handlers on the storage, to avoid having to clone all the
3632                 storages every time.
3634         Storages are now only deleted when the clock stops, is destroyed
3635         or when the DO they're attached to is destroyed. IsLonely was
3636         removed (meaningless now), as well as the resettable flag (only
3637         enabled animations reset)
3639         * dependencyobject.[h|cpp]: a DO can have more than one animation
3640         running on the same DP, and they need to be stored so that when a
3641         DO is cloned, all running animations are updated to the new DO -
3642         - this way, when they stop they update the current DO and not the
3643         one they were originally attached to. This fixes the animation
3644         problems on togglebuttons and other objects that have several
3645         animations overlapping each other. The storage_hash now stores a
3646         List* of AnimationStorage::Node objects with all existing animations
3647         for every DP, and the animation storage cloning process doesn't clone
3648         the storages, it merely creates a new List* with the existing storages
3649         and updates them to the newly cloned DO.
3651         r: alan
3653 2009-08-26  Alan McGovern  <amcgovern@novell.com>
3655         * template.cpp: NNull check 'result' before using it. r:shana
3657 2009-08-26  AndrĂ©s G. Aragoneses  <aaragoneses@novell.com>
3659         * security.c: Mark MoonAtkBridge.dll as platform assembly.
3661 2009-08-25  Chris Toshok  <toshok@ximian.com>
3663         * control.cpp (Control::OnPropertyChanged): emit IsEnabledChanged
3664         when IsEnabledProperty has changed.  we need to do it after the
3665         focus handling has happened, though, as
3666         FocusManager.GetFocusedElement() returns the currently focused
3667         thing in handlers for IsEnabledChanged.  Fixes the rendering of
3668         disabled elements in drt #432.
3670         r: andreia
3671         
3672 2009-08-26  Jackson Harper  <jackson@ximian.com>
3674         * dependencyproperty.cpp: Allow setting properties that are
3675         attached on their owner type without parens. r: toshok
3677 2009-08-26  Jackson Harper  <jackson@ximian.com>
3679         * xaml.cpp|h: Expose a function for parsing bools so the plugin
3680         code can use our bool parsing code. (Handle ints).
3682         r: shana && kangaroo
3684 2009-08-25  Jeffrey Stedfast  <fejj@novell.com>
3686         * textblock.cpp (TextBlock::UpdateFontDescriptions): Don't
3687         invalidate unless one of the fonts has actually changed.
3689         r:spouliot
3691 2009-08-25  Jackson Harper  <jackson@ximian.com>
3693         * type.cpp: Function was still in the header but somehow lost its
3694         implementation.  We dont use it anywhere but its useful for
3695         debugging. r: kangaroo
3697 2009-08-25  Alan McGovern  <amcgovern@novell.com>
3699         * control.h:
3700         * template.h:
3701         * control.cpp:
3702         * template.cpp:
3703         * contentcontrol.cpp: Add support for using
3704           ContentControl.ContentTemplate when it is available. If
3705           there is no Control.Template, ContentControl.ControlTemplate
3706           is used. If that isn't available, we call into managed code
3707           and get the fallback root. r: toshok
3709 2009-08-24  Jackson Harper  <jackson@ximian.com>
3711         * dependencyobject.cpp: Hydrated objects are registered in their
3712         parent namescope so we need to unregister them there also. r: toshok
3714 2009-08-21  Jeffrey Stedfast  <fejj@novell.com>
3716         * fontmanager.cpp (AddResource): Need to free the path string
3717         before returning on success.
3719         * frameworkelement.cpp (UpdateLayout): Modified outer-loop to not
3720         leak the various lists.
3722         r:toshok
3724 2009-08-21  Jeffrey Stedfast  <fejj@novell.com>
3726         * grid.cpp (DestroyMatrices): Need to use delete[] to free the
3727         matrices.
3729         r:toshok
3731 2009-08-21  Alan McGovern  <amcgovern@novell.com>
3733         * control.cpp:
3734         * template.cpp: Whenever any template is expanded, the
3735           template namescope should be locked. r: jackson
3737 2009-08-21  Alan McGovern  <amcgovern@novell.com>
3739         * grid.cpp: When assigning sizes to grid segments, if the
3740           current UIElement spans across star segments, then extra
3741           height will only be assigned to those star segments.
3742           Otherwise extra height will be assigned to Auto and Pixel
3743           segments. r: sde
3745 2009-08-20  Jeffrey Stedfast  <fejj@novell.com>
3747         * textbox.cpp (TextBoxBase::Emit*Async): Removed.
3748         (TextBox::EmitSelectionChanged): Updated to use EmitAsync().
3749         (TextBox::EmitTextChanged): Same.
3750         (PasswordBox::EmitTextChanged): Same.
3752         * popup.cpp (OnPropertyChanged): Use the new EmitAsync() method.
3754         * dependencyobject.cpp (EventObject::EmitAsync): New method to
3755         emit an event asynchronously.
3757         r:alan
3759 2009-08-20  Jeffrey Stedfast  <fejj@novell.com>
3761         * textbox.cpp (emit_selection_changed): Pass along the generation
3762         to the virtual EmitSelectionChanged() method.
3763         (emit_text_changed): Same.
3764         (EmitSelectionChangedAsync): Use a custom closure so that we can
3765         capture the current event generation to use when we actuall emit
3766         it later.
3767         (EmitTextChangedAsync): Same.
3769         r:toshok
3771 2009-08-20  Jackson Harper  <jackson@ximian.com>
3773         * xaml.cpp: Setting OBJECT properties allows objects to be parsed
3774         from strings that shouldn't normally be.  Such as SolidColorBrush
3775         and PointCollection.
3777 2009-08-19  Jeffrey Stedfast  <fejj@novell.com>
3779         * fontmanager.cpp (FontFace::GetExtents): Updated to implement the
3780         same algorithm used by Silverlight.
3782         r:jackson
3784 2009-08-19  Jackson Harper  <jackson@ximian.com>
3786         * playlist.cpp: Its possible to queue an async operation and then
3787         call Dispose before that operation has taken place. This patch
3788         makes Playlist delay its unref and adds guards in its async
3789         callback functions to avoid this. Fixes http://www.nederland24.nl/
3790         r:spouliot
3791         
3792 2009-08-18  Jackson Harper  <jackson@ximian.com>
3794         * template.cpp: Remove not very helpful and somewhat scary looking
3795         debug spew. r:toshok
3797 2009-08-18  Jeffrey Stedfast  <fejj@novell.com>
3799         * layout.cpp (word_type_changed): Partial revert for previous
3800         commit as it broke drt #208.
3802         r:toshok
3804 2009-08-17  Jeffrey Stedfast  <fejj@novell.com>
3806         Fixes for drt #411.
3808         * layout.cpp (SetMaxWidth): If setting MaxWidth to 0, treat it as
3809         infinite.
3810         (word_type_changed): Allow alphabetic characters inside
3811         ideographic words.
3812         (layout_word_wrap): Allow line advance to equal max width.
3814         r:toshok
3816 2009-08-18  Alan McGovern  <amcgovern@novell.com>
3818         * grid.h:
3819         * grid.cpp: Remove the 'magic' size as size allocations are
3820           read from row_matrix/col_matrix now. r: kangaroo
3822 2009-08-18  Alan McGovern  <amcgovern@novell.com>
3824         * grid.h:
3825         * grid.cpp: Allocate sizes of the grid segments in the correct
3826           order. r: shana
3828 2009-08-17  Alan McGovern  <amcgovern@novell.com>
3830         * grid.h:
3831         * grid.cpp: When allocating sizes for rows/columns, clamp the
3832           sizes between the Min and Max values in a consistent manner.
3833           r: jackson
3835 2009-08-17  Alan McGovern  <amcgovern@novell.com>
3837         * grid.h:
3838         * grid.cpp: Change the parameter order in the Segment
3839           constructors to be "value, min, max" to be consistent with
3840           how 'CLAMP' is usually defined. r: jackson
3842 2009-08-16  Chris Toshok  <toshok@ximian.com>
3844         * xaml.cpp (value_from_str_with_parser): fix the abundant memory
3845         leaks in this method.
3847         * propertypath.h (struct PropertyPath): add a copy constructor
3848         here so the xaml.cpp changes work without crashing.
3850         r: andreia
3852 2009-08-16  Chris Toshok  <toshok@ximian.com>
3854         * xaml.cpp (value_from_str_with_parser): we were using the return
3855         value from this method to be "v has been set to a value", but this
3856         isn't enough state.  We also need to know if the
3857         caller (dependency_object_set_attributes, specifically) should
3858         continue on or skip the attribute after it's called us.  So, we
3859         add a "bool *v_set" parameter, and change the return value to
3860         "false = skip, true = continue processing."  We return false in
3861         only 1 case right now, if a double-typed value is to be parsed
3862         from an empty string.  This fixes the Klotski demo, which has
3863         <TranslateTransform X=""> in its xaml. Also, fix the g_strstrip
3864         usage to also deal properly with leading spaces, and stop
3865         duplicating "g_free (s); return true;" - just break there, and let
3866         the blanket free/return at the end of the method handle it.
3867         (dependency_object_set_attributes): simplify the {} handling, and
3868         stop leaking the string value of the attribute when we pass it to
3869         managed.
3871         r: andreia
3872         
3873 2009-08-15  Larry Ewing  <lewing@novell.com>
3875         * mediaelement.cpp (Render): use the same logic we used in image
3876         here to always adjust the paint rect when stretch != StretchNone.
3878         r: andreia
3880 2009-08-15  Larry Ewing  <lewing@novell.com>
3882         * shape.cpp (MeasureOverride): Stretch to the proper width when
3883         available size in not infinite.  Avoid using infinite dimesions as
3884         constraints for Uniform stretches.
3886         Fixes Header stretching in playboy an improves DRT #210.
3888         r: jeff
3889         
3890 2009-08-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3892         * pipeline.cpp: Quiet some debug spew.
3894         r: andreia
3896 2009-08-14  Larry Ewing  <lewing@novell.com>
3898         * grid.cpp (MeasureOverride): properly use min and max.
3900         Fixes regression in DRT #319 from new table code
3902         r: kangaroo
3904 2009-08-14  Larry Ewing  <lewing@novell.com>
3906         * media.cpp: always adjust our paint rectangle when Stretch !=
3907         StretchNone.
3909         Fixes DRT #516 and the regression in #422
3911         r: toshok
3913 2009-08-14  Larry Ewing  <lewing@novell.com>
3915         * frameworkelement.cpp (Arrange): apply the size constraints after
3916         we the the actualsize back from the element.
3918         * layoutinformation.cpp (GetClip): now that other things are
3919         improved only traverse up one level.
3921         Fixes clipping on the smooth streaming size and DRT #210
3923         r: sde
3924         
3925 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3927         * pipeline.cpp: IMediaDecoder::Dispose: clear the list of pending
3928         frames to decode.
3930         r: andreia
3932 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3934         * pipeline.cpp: IMediaDecoder::Dispose: store a copy of our instance
3935         variables in local variables and clear out the instance variables
3936         before unreffing them - prevents certain rare cases of infinite loops.
3938         r: andreia
3940 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3942         * pipeline.cpp: IMediaDecoder::DecodeFrameAsync: don't do anything if
3943         we've been disposed.
3945         r: andreia
3947 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3949         * pipeline.cpp: IMediaObject::EmitSafe: unref the args in all code
3950         paths.
3952         r: andreia
3954 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3956         * pipeline.cpp: IMediaObject::AddSafeHandler: don't add any handlers
3957         if we've been disposed.
3959         r: andreia
3961 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3963         * pipeline.cpp: IMediaObject::Dispose: clear the list of events
3964         we were supposed to emit on the main thread.
3966         r: andreia
3968 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3970         * pipeline.cpp: IMediaDemuxer::Dispose: add a missing unref.
3972         r: andreia
3974 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3976         * pipeline.cpp: IMediaDemuxer::Dispose: store a copy of our instance
3977         variables in local varaibles and clear out the instance variables
3978         before unreffing them - prevents certain rare cases of infinite loops.
3980         r: andreia
3982 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3984         * pipeline.cpp: IMediaStream::Dispose: store a copy of our instance
3985         variables in local variables and clear out the instance variables
3986         before unreffing them - prevents certain rare cases of infinite loops.
3988         r: andreia
3990 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3992         * pipeline.cpp: Media::RetryHttp: we need to Dispose the previous
3993         source.
3995         r: andreia
3997 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3999         * pipeline-asf.cpp: MmsPlaylistEntry::Dispose: break a circular
4000         dependency between MmsPlaylistEntry and Media.
4002         r: andreia
4004 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4006         * pipeline.cpp: Media::Dispose: store a copy of our instance variables
4007         in local variables and clear out the instance variables before
4008         unreffing them - prevents certain rare cases of infinite loops.
4010         r: andreia
4012 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4014         * pipeline.cpp: MarkerStream::Dispose: call base class' Dispose.
4016         r: andreia
4018 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4020         * pipeline-asf.cpp: Add a few missing unrefs.
4022         r: andreia
4024 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4026         * pipeline.cpp|h: Add a MediaDisposObjectClosure that ensures that
4027         the closure is called.
4029         r: andreia
4031 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4033         * pipeline.cpp: Add an invalid MediaResult value, so that MediaClosure
4034         can detect if the callback has been called or not.
4036         r: andreia
4038 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4040         * pipeline.cpp: Media::DisposeObject: if we couldn't enqueue the
4041         dispose on the media thread, call dispose directly.
4043         r: andreia
4045 2009-08-14  Alan McGovern  <amcgovern@novell.com>
4047         * grid.h:
4048         * grid.cpp: Rewrite the size allocation code in grid to better
4049           match the microsoft implementation. It works much better for
4050           the pixel and auto cases, but still has some issues with
4051           star columns. r: lewing
4053 2009-08-14  Jeffrey Stedfast  <fejj@novell.com>
4055         * application.cpp (GetResource): Close the stream when we're
4056         done. Also changed to check write_cb exists before reading from
4057         the stream - if the callback is NULL, don't even bother.
4058         (GetResourceAsBuffer): Removed.
4059         (GetResourceAsPath): Instead of calling GetResourceAsBuffer(), do
4060         the streaming ourselves. Also return NULL if writing the stream to
4061         disk fails.
4063         * utils.cpp (managed_stream_open/read/write/etc): Changed to be
4064         internal. These symbols don't need to be publicly exported.
4066         * utils.h: Added a Stream_Close function signature to
4067         ManagedStreamCallbacks.
4069         * bitmapimage.cpp (resource_notify): Make static/internal - does
4070         not need to be publicly exported.
4072         r:kangaroo
4074 2009-08-14  Stephane Delcroix  <sdelcroix@novell.com>
4076         * multiscaleimage.cpp: retry downloading up to 5 times.
4078 2009-08-14  Stephane Delcroix  <sdelcroix@novell.com>
4080         * bitmapimage.h|cpp, multiscaliemage.cpp: abort downaloaders on 
4081         source change. 
4082         
4083         r: lewing
4085 2009-08-13  Larry Ewing  <lewing@novell.com>
4087         * usercontrol.cpp (MeasureOverride): don't constrain the results.
4089         Fixes DRT #417
4091         r: andreia
4093 2009-08-13  Larry Ewing  <lewing@novell.com>
4095         * textblock.cpp (MeasureOverride):
4096         * textbox.cpp (MeasureOverride): ceil our measurement request when
4097         layout rounding is being done so that we don't get rounded down
4098         and forced to wrap.  More testing is in order but failure mode for
4099         this is painful.
4101         Fixes wrapping in Playboy and the chess final screen.
4103         r: jeff
4104         
4105 2009-08-13  Larry Ewing  <lewing@novell.com>
4107         * timesource.h (MOON_PRIORITY_DEFAULT): lower our default priority
4108         to idle so that firefox and gtk can process events without getting
4109         starved.  Improved Quakelight and StrangeAttractor experience.
4111         r: andreia
4112         
4113 2009-08-13  Larry Ewing  <lewing@novell.com>
4115         * src/brush.cpp: replace all cairo_matrix_invert calls with a
4116         version that warns if it fails.
4118         r: andreia
4120 2009-08-13  Jeffrey Stedfast  <fejj@novell.com>
4122         * layout.cpp (TextLayoutGlyphCluster::Render): No-op if the
4123         advance width is 0. Fixes test-videobrush-text.xaml to render all
4124         of the runs.
4126         r:lewing
4128 2009-08-13  Chris Toshok  <toshok@novell.com>
4130         * xaml.cpp (start_element): If the element is a TextBox.Text
4131         CDATA, treat it as verbatim. Partial fix for drt 2003.
4133         r:jeff
4135 2009-08-13  Jeffrey Stedfast  <fejj@novell.com>
4137         * layout.cpp (Layout): Make sure all attributes were able to load
4138         their fonts. If not, we can't proceed. Fixes the NULL TextFont
4139         crash in DrPopper.
4141         * textblock.cpp (OnPropertyChanged): Instead of using
4142         UpdateLayoutAttributes(), all we really need to do is call
4143         UpdateFontDescriptions() when the FontSource changes.
4145         r:toshok
4147 2009-08-13  Jeffrey Stedfast  <fejj@novell.com>
4149         * fonts.cpp (TextFont::Load): When loading a font face from a
4150         source w/o any families specified, make sure to set master=0 so
4151         that we don't try to get extents from faces[-1].
4153         r:lewing
4155 2009-08-13  Larry Ewing  <lewing@novell.com>
4157         r: kangaroo
4158         
4159         * writeablebitmap.cpp (InitializeFromBitmapSource): always use
4160         rgba pixelformat like sl3 does now.
4162 2009-08-12  Chris Toshok  <toshok@ximian.com>
4164         * bitmapsource.h|cpp (SetBitmapData): add an extra parameter
4165         "own" (default: true) which, if true, causes the bitmap source to
4166         free the bitmapdata when it's destroyed.
4168         * cbinding.h|cpp: regen
4170 2009-08-12  Alan McGovern  <amcgovern@novell.com>
4172         * cbinding.h:
4173         * cbinding.cpp: regen r: toshok
4175         * control.h:
4176         * application.h:
4177         * application.cpp:
4178         * contentcontrol.h:
4179         * contentcontrol.cpp:
4180         * frameworkelement.cpp: A ContentControl which has no Template
4181           needs to call into managed land to create a 'default
4182           template'. When the Content is a UIElement, the UIElement is
4183           used as the template root, otherwise a Grid + TextBlock
4184           (with Binding) is used. This is the same as what
4185           ContentPresenter does to its Content property. r: toshok
4187 2009-08-12  Alan McGovern  <amcgovern@novell.com>
4189         * uielement.cpp: VisualParent should be set to null before
4190           invalidating the cache otherwise the element might be added
4191           to the dirty lists. This causes issues if the element is
4192           added back into the visual tree at a different level. r:
4193           lewing.
4195 2009-08-12  Stephane Delcroix  <sdelcroix@novell.com>
4197         * multiscaleimage.cpp: clear the cache on source change, cache a NULL
4198         tile on downloader failure (fix drt 2014 for good).
4200 2009-08-12  Stephane Delcroix  <sdelcroix@novell.com>
4202         * multiscaleimage.cpp: restore the initial number of concurrent
4203         downloaders, drt 2014 will require a proper fix.
4205 2009-08-12  Chris Toshok  <toshok@ximian.com>
4207         * media.h|cpp (class Image): if our source is a BitmapSource,
4208         handle the PixelDataChangedEvent and Invalidate ourselves if it's
4209         emitted.
4211         * brush.h|cpp (class ImageBrush): if our source is a BitmapSource,
4212         handle the PixelDataChangedEvent and notify our listeners to
4213         redraw if it's emitted.
4215         * bitmapsource.h|cpp (class BitmapSource): add an event so classes
4216         using BitmapSources can be notified when the pixel data
4217         changes (primarily for use with WriteableBitmap).  Emit it from
4218         BitmapSource::Invalidate.
4220         * type-generated.cpp, cbinding.h|cpp: regen
4221         
4222 2009-08-11  Chris Toshok  <toshok@ximian.com>
4224         [ each of these changes fixes a line of text in drt 444 ]
4225         * fontmanager.cpp (FontManager::AddResource): seek the stream to 0
4226         before reading it.
4228         * textblock.cpp (TextBlock::OnPropertyChanged): we need to call
4229         UpdateLayoutAttributes if FontSource is changed, so that the
4230         change propagates down to the inlines.
4232         r: kangaroo
4234 2009-08-11  Larry Ewing  <lewing@novell.com>
4236         * grid.cpp (MeasureOverride): adjust row definition values by
4237         max/min values when building up the Actual sizes
4239         Fixes DRT #319.
4241         r: toshok
4243 2009-08-11  Jeffrey Stedfast  <fejj@novell.com>
4245         * textbox.cpp (TextBox::OnPropertyChanged): Set the font_source on
4246         the TextFontDescription as well as emitting an event so the view
4247         knows it has to re-render. Improves drt 480.
4248         (PasswordBox::OnPropertyChanged): Same.
4249         (TextBox::ClearFontSource): Removed, not used.
4250         (PasswordBox::ClearFontSource): Same.
4252         r:toshok
4254 2009-08-11  Andreia Gaita  <avidigal@novell.com>
4256         * runtime.cpp: TimeManager should be the last thing destroyed, other
4257         objects might need to access it while disposing. r: alan
4259 2009-08-11  Stephane Delcroix  <sdelcroix@novell.com>
4261         * multiscaleimage.cpp: cast so the modulo operation opers on int,
4262         not guint64. Fix sharedtiles usage. r:shana, lewing
4264 2009-08-11  Jeffrey Stedfast  <fejj@novell.com>
4266         * textbox.cpp (TextBoxBase::Paste): Change the multiline
4267         truncation test to explicitly check for \r, \n and 0x2028 instead
4268         of using g_unichar_type() which didn't return the expected values
4269         for these characters. Partial fix for drt 2003.
4270         (*Box::OnPropertyChanged): Updated for AddResource() API change.
4272         * textblock.cpp (TextBlock::OnPropertyChanged): Updated for
4273         AddResource() API change.
4275         * fontmanager.cpp (AddResource): Instead of having our callers
4276         generate a unique resource name, let us do it for them. Don't
4277         bother using mkstemp()/mkdtemp() since our root dir is already
4278         unique. Also fixed to reset the stream resource after consuming it
4279         so that if multiple textblocks/boxes/etc reuse the FontSource,
4280         things work properly. Partial fix for drt 444.
4282         r:lewing
4284 2009-08-11  Alan McGovern  <amcgovern@novell.com>
4286         * runtime.cpp: Controls aren't really auto-focused. What
4287           happens is that when a focused control is removed from the
4288           live tree SL does not emit a LostFocus event and so when the
4289           control is added back into the tree it still thinks it has
4290           focus. This call is still needed as there can be pending
4291           GotFocus/LostFocus events waiting to be emitted. r: toshok.
4293 2009-08-11  Alan McGovern  <amcgovern@novell.com>
4295         * runtime.cpp: Make HandleUIKeyPress do the same thing as
4296           HandleUIKeyRelease when there is no toplevel so it doesn't
4297           null deref. r: sde
4299 2009-08-10  Larry Ewing  <lewing@novell.com>
4301         * bitmapimage.cpp (CreateLoader): if the image isn't a png or a
4302         jpg abort the getresource call.
4304 2009-08-07  Larry Ewing  <lewing@novell.com>
4306         * dirty.cpp (UpdateLayout): don't use the toplevel hack on
4307         noncontainers.
4309         Gets DRT #516 very close to passing slight layout problems left.
4311 2009-08-10  Andreia Gaita  <avidigal@novell.com>
4313         * ptr.h: Change the base class to not allow direct casts to Value
4314         objects. Add cast operator to cast between DO classes directly
4316 2009-08-10  Andreia Gaita  <avidigal@novell.com>
4318         * animation.[h|cpp]: Check for valid applier before trying to use it,
4319         it could be disposing, same for targetprop.
4320         * timemanager.cpp: clear applier when disposing
4322 2009-08-10  Andreia Gaita  <avidigal@novell.com>
4324         * ptr.h: Rename OwnerPtr to DOPtr to make it clear it's a smart
4325         pointer for DependencyObject.
4326         * shape.cpp, timeline.cpp: Rename OwnerPtr to DOPtr
4327         * multiscaleimage.[h|cpp]: Use DOPtr to store DOs and auto-release
4328         them when destroying
4330 2009-08-10  Alan McGovern  <amcgovern@novell.com>
4332         * frameworkelement.cpp: A new measure pass should be made if
4333           either the available width *or* available height has changed
4334           since the last measure pass.
4336 2009-08-10  Andreia Gaita  <avidigal@novell.com>
4338         * ptr.h: fix assignment operators, the copy by reference ones were
4339         causing the pointer to be destroyed prematurely when assigning via
4340         new ()
4342 2009-08-08  Chris Toshok  <toshok@ximian.com>
4344         * fontmanager.cpp (FontManager::AddResource): pass stream->handle
4345         as the first arg to stream->Read, not stream itself.  Also, get
4346         rid of "total" and just pass a 0 offset for each read, since we're
4347         writing the full buffer's contents up to nread each time anyway.
4349 2009-08-07  Andreia Gaita  <avidigal@novell.com>
4351         Fixes drt 2014
4353         * multiscaleimage.cpp: Fix the type of the left shit operations to
4354         avoid overflows. Make it an inline function for easier maintenance.
4355         * tilesource.[h|cpp]: Fix the type of the image width and height,
4356         should be bigger than int.
4358 2009-08-07  Jeffrey Stedfast  <fejj@novell.com>
4360         Fixes drt 337
4362         * textbox.cpp (TextBox::OnPropertyChanged): If setting
4363         SelectedText to "", don't emit TextChanged events if there was no
4364         selection.
4365         (PasswordBox::OnPropertyChanged): Same.
4367 2009-08-06  Chris Toshok  <toshok@ximian.com>
4369         * runtime.cpp (Surface::tick_after_attach_reached): the ordering
4370         of code between this method and Surface::ToplevelLoaded is likely
4371         still somewhat wrong, but moving the Emit here fixes drt #21.
4373 2009-08-06  Chris Toshok  <toshok@ximian.com>
4375         * window-gtk.cpp: move the InvokeTickCalls from here...
4377         * runtime.cpp: to the HandleUI* methods here, so they will be used
4378         in both windowed and windowless codepaths.
4380 2009-08-06  Chris Toshok  <toshok@ximian.com>
4382         * timemanager.h|cpp (TimeManager::RemoveTickCall): this takes
4383         another argument now (the data object passed to AddTickCall) so we
4384         can differentiate callbacks properly.
4386         * runtime.h|cpp (Surface::Attach): we don't return true from
4387         IsLoaded until after the first tick, so that our measure pass has
4388         been run (and contentpresenters are created for all content
4389         controls.)  register the tick call here (after removing any that
4390         may have already been added).
4391         (Surface::tick_after_attach_reached): set ticked_after_attach to
4392         true.
4393         (Surface::IsLoaded): we require ticked_after_attach to be true
4394         here.
4396         * cbinding.h|cpp: regen.
4398 2009-08-06  Jeffrey Stedfast  <fejj@novell.com>
4400         * textbox.cpp (TextBoxBase::OnFocusOut): Instead of clearing the
4401         selection, just set the selection to the cursor position. This
4402         way, if the control gets programatically Focus()'d again, then the
4403         cursor will be where it was just before the control lost
4404         focus. Partial fix for drt 2003.
4406 2009-08-06  Jackson Harper  <jackson@ximian.com>
4408         * xaml.cpp|xaml.h: Add bindings for checking/setting whether a
4409         property has already been set.
4410         
4411 2009-08-06  Jackson Harper  <jackson@ximian.com>
4413         * xaml.cpp: Its possible that a buffered element can add a new
4414         namespace that start_element_handler will not know about, just
4415         ignore this error and the namespace will be added when the buffer
4416         is parsed.
4418 2009-08-06  Jackson Harper  <jackson@ximian.com>
4420         * xaml.cpp: Handle null in the print_tree debug code. (This can
4421         occur when loading a null template)
4423 2009-08-05  Larry Ewing  <lewing@novell.com>
4425         * frameworkelement.cpp (UpdateLayout): revert an accidental
4426         change.
4428 2009-08-05  Jeffrey Stedfast  <fejj@novell.com>
4430         * textbox.cpp (TextBoxBase::OnKeyDown): Cut and Copy operations
4431         should not copy the text buffer to the clipboard if the contents
4432         are secret.
4434 2009-08-05  Larry Ewing  <lewing@novell.com>
4436         * uielement.cpp (ElementRemoved): clear the desired size when
4437         removing the element.
4439         * layoutinformation.cpp: partially revert one of the workarounds.
4441         * frameworkelement.cpp (Arrange): get the old_size from the
4442         RenderSize not the ActualWidth.
4444 2009-08-05  Chris Toshok  <toshok@ximian.com>
4446         * popup.cpp (class GenerationClosure): new closure for emiting the
4447         Opened and Closed events.
4448         (Popup::emit_opened, Popup::emit_closed): pass the generation from
4449         the closure to ->Emit.
4450         (Popup::OnPropertyChanged): for the tick call, pass a closure that
4451         contains the current event generation.
4453         * timemanager.h, timemanager.cpp (TimeManager::InvokeTickCalls):
4454         factor out the loop for invoking tick calls here and call it from
4455         the source tick method.
4457         * window-gtk.cpp (MoonWindowGtk::button_press)
4458         (MoonWindowGtk::button_release, MoonWindowGtk::scroll)
4459         (MoonWindowGtk::motion_notify, MoonWindowGtk::crossing_notify)
4460         (MoonWindowGtk::focus_in, MoonWindowGtk::focus_out)
4461         (MoonWindowGtk::key_press, MoonWindowGtk::key_release): call
4462         TimeManager::InvokeTickCalls from each of these methods before we
4463         call the Surface::HandleUI* method.
4465         * dependencyobject.h (class EventObject): make a couple of api
4466         changes:
4467         (AddTickCall*): add an "EventObject* data" parameter.  if it's
4468         NULL, pass "this", so we have the current behavior.
4469         (DoEmit/Emit): add a "starting_generation" optional argument.  if
4470         it's supplied, we invoke only those handlers with tokens less than
4471         the starting_generation (i.e. those handlers that were registered
4472         before the event was generated.)
4474 2009-08-05  Jeffrey Stedfast  <fejj@novell.com>
4476         * textbox.cpp (TextBoxBase::OnPropertyChanged): Don't clear the
4477         FontSource property when the FontFamily property changes.
4478         (TextBox::OnPropertyChanged): Handle FontSource property changes.
4479         (PasswordBox::OnPropertyChanged): Same.
4481         * textblock.cpp (CleanupDownloaders): Free the font_source string
4482         as well.
4483         (SetFontSource): Update the font_source string based on the
4484         downloader.
4485         (UpdateLayoutAttributes): No longer need to get the font_source
4486         string, we already have it.
4487         (UpdateFontDescriptions): Same.
4488         (OnCollectionItemChanged): Here too.
4489         (OnPropertyChanged): Update the font_source string when the
4490         FontSource property changes.
4492 2009-08-05  Jeffrey Stedfast  <fejj@novell.com>
4494         * textbox.cpp (OnMouseLeftButtonMultiClick): Don't poke at the raw
4495         GdkEventButton structure, use the new MouseEventArgs accessors
4496         instead.
4498         * eventargs.cpp (GetButton): Get the id of the button pressed.
4499         (GetClickCount): Get the number of clicks on the button.
4501 2009-08-05  Alan McGovern  <amcgovern@novell.com>
4503         * panel.cpp: The LogicalParent needs to be set before the
4504           element is added, otherwise the Loaded event can be fired
4505           before LogicalParent is set.
4507 2009-08-04  Larry Ewing  <lewing@novell.com>
4509         * uielement.cpp (DoMeasure): invalidate up the tree more
4510         agressively.  Fixes DRT #190 regression.
4512 2009-08-04  Jeffrey Stedfast  <fejj@novell.com>
4514         * textbox.cpp (TextBoxBase::OnMouseLeftButtonMultiClick): New
4515         callback for the MultiClick event.
4516         (TextBoxBase::OnMouseLeftButtonDown): No longer needs to handle
4517         double and triple mouse clicks.
4519         * uielement.h: Added a MosueLeftButtonMultiClickEvent.
4521         * runtime.cpp (CreateArgsForEvent): Handle MultiClickEvent.
4522         (HandleUIButtonPress): Handle 2 and 3 button mouse clicks.
4524         * pipeline.h (IMediaObject): FrameNode's dtor needs to be virtual.
4526 2009-08-04  Jeffrey Stedfast  <fejj@novell.com>
4528         * utils.cpp (write_all): Changed to just return int (-1 for fail,
4529         0 for success).
4530         (ExtractFile): Don't fsync(). Saves us a lot of time.
4532 2009-08-03  Larry Ewing  <lewing@novell.com>
4534         * shape.cpp (ArrangeOverride): clear the current path.
4536 2009-08-03  Larry Ewing  <lewing@novell.com>
4538         * textbox.cpp (OnModelChanged): InvalidateMeasure when things
4539         change.
4541 2009-08-03  Jeffrey Stedfast  <fejj@novell.com>
4543         * fontmanager.cpp (AddResource): Implemented a version of this
4544         interface that can take a ManagedStreamCallbacks argument.
4546         * application.cpp (GetResourceAsPath): If we are adding the X's
4547         ourselves, use MakeTempDir() instead of CreateTempDir().
4549 2009-07-31  Larry Ewing  <lewing@novell.com>
4551         * layoutinformation.cpp (GetClip): add another hack for layoutclip
4552         on Controls while things are in flux.
4554 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4556         * pipeline.cpp: Media::EnqueueWork: return a bool indicating whether
4557         the work was enqueued or not.
4559 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4561         * pipeline.cpp: Media: use the new ClearQueue overload instead of
4562         spreading the logic all over the place.
4564 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4566         * pipeline.cpp: Media: add a ClearQueue overload which optionally
4567         deletes the queue.
4569 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4571         * playlist.cpp: Don't g_warn something which can happen in normal
4572         circumstances.
4574 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4576         * mediaplayer.cpp: Plug a leak in one rare code-path.
4578 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4580         * mediaplayer.cpp: Close: dispose the AudioSource, it won't be used again.
4582 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4584         * mediaplayer.cpp: Dispose: call base class Dispose after we've finished.
4586 2009-07-31  Jeffrey Stedfast  <fejj@novell.com>
4588         * fonts.cpp (LoadPortableUserInterface): Always load the en-US
4589         font(s) first, and then load the preferred CJK font, followed by
4590         the rest. This improves drt 414.
4592         * fontmanager.cpp (GetExtents): Improved baseline alignment by
4593         adjusting Descent if Height is larger than Ascent +
4594         Descent. Especially visible with drt 107's Deobfuscated Brauhaus
4595         93 font rendering.
4597 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4599         * deployment.cpp: Dispose: we need to unref and null out the application.
4601 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4603         * error.cpp|h:
4604         * downloader.cpp:
4605         * eventargs.cpp|h: Set the object's type upon construction instead
4606         of using SetObjectType right after. This is useful when tracking
4607         objects by type - the ctor also shows up.
4609         * dependencyobject.cpp|h: Add a DependencyObject ctor that takes
4610         a Type::Kind argument.
4612 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4614         * debug.cpp: Make the stacktrace pipes thread-local. This way
4615         printing stacktraces from several threads at the same time doesn't
4616         result in a big mess.
4618 2009-07-30  Larry Ewing  <lewing@novell.com>
4620         * layoutinformation.cpp (GetClip): add a workaround for the panel
4621         case while layoutinformation is refactored.
4622         
4623 2009-07-30  Larry Ewing  <lewing@novell.com>
4625         * layoutinformation.cpp: repair a merge bug.
4627 2009-07-30  Larry Ewing  <lewing@novell.com>
4629         * layoutinformation.cpp, layoutinformation.h: move layoutinformation
4630         out of uielement.h.  Compute the layout clip on the fly.
4632         * border.cpp:
4633         * dependencyproperty.g.cpp:
4634         * frameworkelement.cpp:
4635         * frameworkelement.h:
4636         * glyphs.cpp:
4637         * media.cpp:
4638         * mediaelement.cpp:
4639         * panel.cpp:
4640         * point.h:
4641         * shape.cpp:
4642         * textblock.cpp:
4643         * textbox.cpp:
4644         * textbox.h:
4645         * uielement.cpp:
4646         * uielement.h: start reworking layout logic at we refactor
4647         layoutinformation.  Use RenderLayoutClip where appropriate.
4649 2009-07-30  Jeffrey Stedfast  <fejj@novell.com>
4651         * fontmanager.cpp (GetExtents): Much better fix than the
4652         string-comparison hack. Poke at the TrueType/OpenType OS/2 table
4653         and use the usWinAscent/usWinDescent values since this is what
4654         most Windows applications (brokenly) use according to some info I
4655         found on the web. Low and behold, this also makes the Adobe Caslon
4656         Pro metrics work out exactly like they do in Silverlight, so I'm
4657         guessing that the info I found is accurate :-)
4659 2009-07-30  Larry Ewing  <lewing@novell.com>
4661         * uielement.cpp (DoArrange): revert the parent invalidation change as it
4662         did break things.
4664 2009-07-30  Larry Ewing  <lewing@novell.com>
4666         * control.cpp (OnPropertyChanged): update the layout if the
4667         aligment changes.
4669 2009-07-30  Larry Ewing  <lewing@novell.com>
4671         * uielement.cpp (DoArrange): remove the parent invalidation call
4672         it shouldn't be required now and is contraindicated by DRT #501.
4674         * runtime.cpp: InvalidateMeasure on resize.
4676 2009-07-30  Alan McGovern  <amcgovern@novell.com>
4678         * popup.cpp:
4679         * textbox.cpp: TextBox and Popup should use AddAsyncEventCall
4681         * runtime.cpp:
4682         * dependencyobject.h:
4683         * dependencyobject.cpp: Implement a new method for adding
4684           callbacks to invoke asynchronous events. They can't be
4685           invoked using the regular AddTickCall as that causes the
4686           ordering of mouse events and asynchronous events to be
4687           incorrect preventing drt 333, 476 and some others from
4688           passing.
4690 2009-07-30  Jeffrey Stedfast  <fejj@novell.com>
4692         * fontmanager.cpp (GetExtents): Now uses the alternative method of
4693         getting font metrics. Also, when dealing with Adobe fonts, use the
4694         bbox to get metrics rather than using the normal
4695         ascender/descender/height values.
4697 2009-07-30  Jackson Harper  <jackson@ximian.com>
4699         * xaml.cpp: Swallow white space before linebreaks. 
4701 2009-07-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4703         * src.mdp: Connect the Build command in
4704         MonoDevelop with 'make install'.
4706 2009-07-30  Andreia Gaita  <avidigal@novell.com>
4708         * multiscaleimage.cpp: leak and initialization fixes
4710 2009-07-30  Andreia Gaita  <avidigal@novell.com>
4712         * shape.cpp: use smart pointer to avoid unreffing by hand
4714 2009-07-30  Andreia Gaita  <avidigal@novell.com>
4716         * timeline.cpp: leak fix
4718 2009-07-30  Andreia Gaita  <avidigal@novell.com>
4720         * ptr.h: added RefPtr and OwnerPtr, smart refcounting pointer classes
4721         * Makefile.am: updated
4723 2009-07-29  Larry Ewing  <lewing@novell.com>
4725         * border.cpp (ArrangeOverride): return the input now that it is
4726         correctly sized.
4728         * frameworkelement.cpp: short circuit Measure and Arrange if the
4729         element is collapsed.
4731 2009-07-29  Jeffrey Stedfast  <fejj@novell.com>
4733         * textbox.cpp (TextBoxBase::OnKeyDown): Only reset the IM context
4734         of the keyboard event was handled (meaning the state has changed).
4735         (TextBoxBase::OnCharacterKeyDown): Don't reset the IM context
4736         here.
4738 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4740         * shape.cpp: Plug a leak.
4742 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4744         * pipeline.cpp: IMediaObject::EmitSafe (): use same refcounting
4745         semantics as EventObject::Emit: unref the event args at the end of
4746         the Emit method.
4748 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4750         * pipeline.cpp: IMediaDemuxer::SeekAsync (): don't return before
4751         unreffing the reffed media we've got.
4753 2009-07-29  Sebastien Pouliot  <sebastien@ximian.com>
4755         * pipeline-ui.cpp: Delegate the codec integrity validation to Mono.
4756         Helper.CheckIntegrity (System.Windows.dll)
4758 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4760         * pipeline.cpp (Media::SelectDemuxerAsync): minor performance
4761         improvement: return true immediately if we've actually managed to
4762         open a demuxer instead of enqueuing another call to
4763         SelectDemuxerAsync.
4765 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4767         * pipeline-asf.cpp:
4769         * pipeline-asf.cpp (MmsPlaylistEntry::AddEntry): add the entry
4770         to the playlist before initializing it, since initializing it may
4771         end up opening it right away and then it must be present in the
4772         playlist.
4774 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4776         * pipeline-asf.cpp (ASFDemuxer::Open): unref the streams we've
4777         created when done with them.
4779 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4781         * pipeline.cpp: printf -> LOG_PIPELINE.
4783 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4785         * mp3.cpp (Mp3Demuxer::ReadHeader): unref the stream we've created
4786         when we're done with it.
4788 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4790         * audio.cpp IMediaStream::PopFrame() gives us a reffed object,
4791         unref it when done with it.
4793 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4795         * dependencyobject.h: Make EventObject::GetObjectType
4796         non-virtual. No need for a virtual method anymore, since we store
4797         the type on the object itself.
4799 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4801         * application.cpp: unref the downloader when it has finished.
4803 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4805         * utils.cpp|h: Cancellable: use strong typing to store the
4806         downloader and ref it. This way the cancel callback can use the
4807         downloader safely.
4809 2009-07-29  Alan McGovern  <amcgovern@novell.com>
4811         * textbox.h:
4812         * cbinding.h:
4813         * textbox.cpp:
4814         * cbinding.cpp: 1) TextBox cannot hook into Key press events
4815           in unmanaged code otherwise they never propagate to managed
4816           and the user cannot intercept them. Instead of hooking to
4817           the event in native code, just call native
4818           TextBox::OnKeyDown in the managed override.
4819         2) Key press events are actually handled in two different
4820           places. 'Navigation' keypresses like Left/Right/PgUp are
4821           handled when the textbox OnKeyDown virtual method is
4822           invoked. 'Character' keypresses like 'a', 'b', 'c' are
4823           handled after the KeyDown event is emitted
4824         3) If a key press does not affect the textbox state (i.e.
4825           pressing 'left' when the caret is already at the very left),
4826           then the keypress is not handled.
4827         4) The KeyDown event is emitted even if OnKeyDown is overriden
4828           and the base method is not invoked.
4829         5) The tab key should be interpreted as 'Focus next control'
4830           only after the KeyDown event handlers have run and the key
4831           press is not handled.
4833 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4835         * pipeline.cpp: NullDecoder: add wmav3 to the list of codecs we
4836         know we can't decode. This means that if the user does not have
4837         MS codecs (or any other codecs) installed, he'll get the download
4838         codecs dialog for wmav3 media too.
4840 2009-07-28  Sebastien Pouliot  <sebastien@ximian.com>
4842         * mediaelement.cpp: Add a check if the codecs have already been 
4843         downloaded/installed without refreshing the browser. This will
4844         stop additional dialogs showing up and fix a crash (x86_64) if
4845         the codecs are downloaded/installed a second time in the same 
4846         session.
4848 2009-07-27  Larry Ewing  <lewing@novell.com>
4850         * src/border.cpp:
4851         * src/frameworkelement.cpp:
4852         * src/media.cpp:
4853         * src/shape.cpp:
4854         * src/textblock.cpp:
4855         * src/usercontrol.cpp: Move the alignment logic out of the
4856         controls and into the Arrange call now.
4858         Fixes DRT #335 improves several others.
4859         
4860 2009-07-28  Jackson Harper  <jackson@ximian.com>
4862         * xaml.cpp: Handle UNMANAGEDMATRIX, it's just a matrix with
4863         another name
4864         - Don't create a Matrix for TRANSFORM properties if "Identity" was
4865         used as the string.  (kinda seems like an SL bug to me).
4867 2009-07-28  Jeffrey Stedfast  <fejj@novell.com>
4869         * multiscaleimage.cpp: Fixed a bunch of compiler warnings.
4871         * window-gtk.cpp (button_press): Revert change to drop
4872         2BUTTON_PRESS and 3BUTTON_PRESS events. TextBox needs these until
4873         we find a better way (also, 234 is still broken even with this
4874         change, which breaks 337 and possibly makes other
4875         TextBox/PasswordBox drts unfixable).
4877 2009-07-27  Larry Ewing  <lewing@novell.com>
4879         * glyphs.cpp, glyphs.h: Start implmenting glyph layout.  Fixes DRT #442.
4881 2009-07-27  Larry Ewing  <lewing@novell.com>
4883         * frameworkelement.cpp: Always round down when doing layout
4884         rounding.  
4885         
4886         * uielement.cpp (OnPropertyChanged): Invalidate layout on
4887         rounding changes.
4889         Fixes ... a lot.
4890         
4891 2009-07-27  Chris Toshok  <toshok@ximian.com>
4893         * dependencyobject.cpp (EventObject::DoEmit): we emit the XAML
4894         handler *after* all registered handlers.  part of the fix for drt
4895         234.
4897         * window-gtk.cpp (MoonWindowGtk::button_press): ignore
4898         double-click and triple click gdk events here.  part of the fix
4899         for drt 234.
4901 2009-07-27  Jackson Harper  <jackson@ximian.com>
4903         * xaml.cpp|h: Hydrate needs to accept Value* instead of a DOB.  It
4904         is legal to hydrate a top level managed non DOB class.
4905         * cbinding.cpp|h: regen
4907 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4909         * mp3.cpp: When seeking and we don't have enough data to seek to
4910         the desired pts, try again a bit later. Fixes MS DRT #59.
4912 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4914         * src.mdp: Use Makefile integration.
4916 2009-07-27  Alan McGovern  <amcgovern@novell.com>
4918         * uielement.cpp: Default styles are applied even if the user
4919           applies a style. Fixes some visual glitches in the controls
4920           toolkit site.
4922 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4924         * pipeline.cpp|h: Use Application::GetResource instead of creating
4925         downloaders to get data.
4927 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4929         * pipeline.cpp: ReportErrorOccurred: don't propagate more than one
4930         error.
4932 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4934         * application.cpp: GetResource: set the notify_size callback
4935         on the downloader too. Media must known the size whenever possible.
4937 2009-07-27  Larry Ewing  <lewing@novell.com>
4939         * uielement.cpp (GetTransformToUIElementWithError): signal and
4940         error in the to_element doesn't have a Surface case.
4942 2009-07-26  Larry Ewing  <lewing@novell.com>
4944         * rect.h: make PointInside inclusive on the top/left.
4946 2009-07-24  Larry Ewing  <lewing@novell.com>
4948         * textblock.cpp:  Rework the bounds computation to be the max of
4949         the actual and the framework element settings.  Fixes DRT #245.
4951 2009-07-24  Larry Ewing  <lewing@novell.com>
4953         * border.cpp: Apply the default constraints more carefully.
4955         * src/frameworkelement.cpp, src/frameworkelement.h: add
4956         ApplySizeContraints method, use it.
4958         * src/canvas.cpp:
4959         * src/shape.cpp:
4960         * src/textblock.cpp:
4961         * src/usercontrol.cpp: use ApplySizeContraints method.
4963 2009-07-24  Larry Ewing  <lewing@novell.com>
4965         Rename some of the layout information based on some
4966         of the tests.
4968 2009-07-24  Jeffrey Stedfast  <fejj@novell.com>
4970         * textbox.cpp (TextBoxBase::OnPropertyChanged): When our
4971         width/height properties change, pass those values along to our
4972         TextBoxView as well.
4974 2009-07-24  Jackson Harper  <jackson@ximian.com>
4976         * xaml.cpp: Instead of cloning the element set it's namescope
4977         explicitly so it doesn't get registered in another namescope when
4978         it is used as a property of an element in another namescope.
4980 2009-07-23  Jeffrey Stedfast  <fejj@novell.com>
4982         * downloader.cpp (same_domain): Fixed to be safe if/when a uri
4983         host is NULL.
4985 2009-07-23  Alan McGovern  <amcgovern@novell.com>
4987         * animation.cpp: If the initial value is null, create a Value
4988         with the correct type with IsNull set to true.
4990 2009-07-23  Jackson Harper  <jackson@ximian.com>
4992         * xaml.cpp: If we are getting a named item from the app resources
4993         we should clone it since it comes from a different namescope. This
4994         allows you to have named items in app.resources be referenced in
4995         control code as a static resource even if it has the same name as
4996         an object in the control code.
4998 2009-07-23  Jeffrey Stedfast  <fejj@novell.com>
5000         * fonts.cpp (LoadPortableUserInterface): Even if we are a
5001         Silverlight 2.0 app, we still need to load Lucida Sans for the
5002         font face extents (Lucida extents seem to be very close to what
5003         Microsoft Silverlight is using).
5005 2009-07-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5007         * runtime.cpp: HandleUIKeyRelease: add a null check before
5008         accessing toplevel. Apparently toplevel can be null when the
5009         site fails to load completely (mstv.cz / bug #506306).
5011 2009-07-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5013         * media.h: MarkerReachedEventArgs: make Markers accessible to
5014         managed code.
5016         * cbinding.h:
5017         * cbinding.cpp: Regenerated.
5019 2009-07-22  Chris Toshok  <toshok@ximian.com>
5021         * animation.h|cpp: add some more accessors for AnimationStorages
5022         so we can clone them.
5024         * dependencyproperty.h|cpp: remove all the AnimationStorage stuff
5025         from here, and put it in DependencyObject where (imo) it belonged
5026         all along.
5028         * dependencyobject.h|cpp: move the AnimationStorage stuff here,
5029         and also add support for cloning the storage while we're cloning
5030         the object.  This means that new animations started against
5031         existing objects (with animations) will inherit the right reset
5032         value.  This fixes the button animation regression.
5034 2009-07-22  Jeffrey Stedfast  <fejj@novell.com>
5036         * fonts.cpp (LoadPortableUserInterface): If the application is a
5037         Silverlight 2.0 app, default to Verdana instead of Lucida Sans
5038         Unicode.
5040         * textbox.cpp (TextBoxBase::OnKeyDown): The clipboard Cut action
5041         is a no-op for ReadOnly TextBox controls.
5043 2009-07-22  Sebastien Pouliot  <sebastien@ximian.com>
5045         * runtime.cpp: Call GetMaximumRefreshRate before unreferencing
5046         the current timemanager.
5048 2009-07-21  Jeffrey Stedfast  <fejj@novell.com>
5050         * textbox.cpp (TextBoxBase::CursorPrevWord): Fixed the logic a
5051         bit.
5052         (TextBoxBase::OnKeyDown): Implemented alternate keybindings for
5053         Cut/Copy/Paste.
5054         (TextBoxBase::OnKeyDown): If there is no selection and the user
5055         invokes the Cut or Copy commands, do not overwrite the clipboard
5056         buffer with an empty string.
5058 2009-07-21  Jackson Harper  <jackson@ximian.com>
5060         * xaml.cpp: Raise errors from managed SetProperty.
5062 2009-07-21  Jackson Harper  <jackson@ximian.com>
5064         * xaml.cpp: Don't raise errors if we are a managed element, let
5065         the managed SetProperty handle that stuff.
5067 2009-07-21  Alan McGovern  <amcgovern@novell.com>
5069         * geometry.h:
5070         * dependencyproperty.g.cpp: The issue with auto creating
5071           PathGeometry.Figures appears to be fixed so add
5072           AutoCreateValue to FiguresProperty and see how the bots
5073           react...
5075 2009-07-20  Chris Toshok  <toshok@ximian.com>
5077         * application.h|cpp: add a ResourceBase parameter to all the
5078         GetResource calls and to the GetResourceCallback delegate type.
5080         * dependencyobject.h (DependencyObject::SetResourceBase,
5081         DependencyObject::GetResourceBase): new methods.
5083         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
5084         "inherit" resource base from our parent (this might be very, very
5085         wrong...)
5086         (DependencyObject::Initialize): init resource_base to null.
5087         (DependencyObject::~DependencyObject): free resource_base.
5089         * bitmapimage.cpp (BitmapImage::UriSourceChanged): locate the
5090         resource using our resource base.
5092         * template.cpp (FrameworkTemplate::GetVisualTree): use the same
5093         resource base when expanding the template.
5095         * textblock.cpp (Inline::AddFontResource): locate the font using
5096         our resource base.
5097         (TextBlock::AddFontResource): same.
5099         * textbox.cpp (TextBoxBase::AddFontResource): same.
5100         using our resource base.
5102         * glyphs.cpp (Glyphs::SetFontResource): same.
5104         * xaml.cpp (XamlParserInfo::AddCreatedElement): factor out all
5105         those SetSurface calls, and put it here.  Also, set the resource
5106         base at the same time.
5107         (XamlLoader::Initialize): store off the resource_base.
5108         (XamlLoader::~XamlLoader): and free it.
5109         (xaml_loader_new): take a resourceBase, and pass it along.
5110         (XamlLoader::HydrateFromString): set the ResourceBase on the
5111         toplevel object.
5112         (create_element_info_from_imported_managed_type): remove the
5113         SetSurface call, just call XamlParserInfo::AddCreatedElement.
5114         (XamlElementInstanceNative::CreateItem): same.
5115         (XamlElementInfoManaged::CreateElementInstance): same.
5116         (XamlElementInfoManaged::CreateWrappedElementInstance): same.
5118         * xaml.h (class XamlLoader): add a common Initialize method, and a
5119         ctor overload that takes a "resource base", which is the uri which
5120         we're loading from.  Also add a GetResourceBase() accessor.
5122         * cbinding.h: regen
5124 2009-07-20  Larry Ewing  <lewing@novell.com>
5126         * uielement.cpp (ComputeTransform): add a hack for placing popup
5127         children for now.
5129         * popup.cpp: call updatetransform on our child whenever the offset
5130         values change.  Fixes DRTs #325 #503 
5131         
5132 2009-07-18  Jackson Harper  <jackson@ximian.com>
5134         * xaml.h|cpp: New flag on the loader for determining whether or
5135         not to auto import the default SL namespace.
5136         - Throw the proper error if the default namespace isn't available.
5137         * template.cpp: Templates get the default namespace auto
5138         imported.
5140 2009-07-17  Larry Ewing  <lewing@novell.com>
5142         * runtime.cpp (Attach): copy the current framerate to the new
5143         timemanager.
5145 2009-07-17  Jeffrey Stedfast  <fejj@novell.com>
5147         * textbox.cpp (TextBoxBase::Commit): Respect MaxLength and
5148         multiline support.
5149         (TextBoxBase::Paste): Consider the SelectionLength in our
5150         MaxLength overflow calculation.
5151         (TextBuffer::ctor): Instead of taking ownership of a string
5152         buffer, just copy it instead. This keeps memory management more
5153         obvious higher up.
5154         (TextBoxUndoActionInsert::ctor): No longer takes ownership of the
5155         'inserted' string.
5156         (TextBoxUndoActionReplace::ctor): Same, so copy it.
5157         (*Box::OnPropertyChanged): Fixed to g_free(text) after creating
5158         the undo action. I think some of these situations leaked before.
5160 2009-07-17  Stephane Delcroix  <sdelcroix@novell.com>
5162         * bitmapimage.h: tag UriSourceProperty with AlwaysChange. fix #2014
5164 2009-07-17  Stephane Delcroix  <sdelcroix@novell.com>
5166         * multiscaleimage.cpp: more protections against crash with 31 layers
5168 2009-07-17  Stephane Delcroix  <sdelcroix@novell.com>
5169         
5170         * multiscaleimage.cpp: allow up to 31 layers.
5172 2009-07-17  Stephane Delcroix  <sdelcroix@novell.com>
5174         * multiscaleimage.cpp: emit OpenImageSucceed for non DZ tile sources
5176 2009-07-17  Alan McGovern  <amcgovern@novell.com>
5178         * runtime.cpp: Correctly set 'emittingMouseEvent' to
5179           true/false when we receive a mouse event. Fixes some mouse
5180           capture issues in drt 535
5182 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5184         * playlist.cpp|h: Make the *Async methods really async, and add corresponding
5185         non-async methods.
5187         * mediaplayer.cpp: Don't allow Play while we're seeking.
5189         * mediaelement.cpp: When calling any of the async methods on the playlist,
5190         set the expected state immediately, since CurrentState is not async. Also
5191         allow Play/Pause/Stop if we're already in the desired state, since there might
5192         be another state changed pending.
5194 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5196         * mediaplayer.cpp|h: Emit BufferUnderflowEvent when the buffer underflows.
5198 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5200         * pipeline.cpp|h: Notify the decoder when a seek has completed so
5201         that it can clean its state properly. FillBuffers: the final buffer size
5202         is equal to the smallest buffer size of all the streams, not the buffer
5203         size of the last stream.
5205 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5207         * mediaplayer.cpp: Video/AudioFinished: don't do anything if the video/audio
5208         has already finished.
5210 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5212         * playlist.cpp|h: Fix IsSingleFile implementation.
5214         * mediaelement.cpp|h: Don't emit MediaOpened after reloading a media after
5215         a Stop for non-playlist media.
5217 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5219         * mediaplayer.cpp|h: Add a StopAudio method which stops the audio, and use
5220         it whenever we stop the audio. AdvanceFrame: For media with a specified
5221         duration stop the audio when we've reached the desired duration.
5223 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5225         * mediaelement.cpp: OpenCompletedHander: Before emitting
5226         DownloadProgressChangedEvent get the highest DownloadProgress value
5227         from either our own dependency property or the media. For mms streams
5228         download progress needs to be 1.0 when emitting MediaOpenedEvent,
5229         the mms code sets media's DownloadProgress to 1.0 after parsing the
5230         asf header correctly, but since the media emits the DownloadProgressChanged
5231         event async, the dependency property in MediaElement hasn't been updated
5232         yet in OpenCompletedHandler.
5234 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5236         * pipeline.cpp: Allow buffering progress to go down, not only up.
5237         Also fix progress events to only emit if delta > 0.5% or if equal
5238         to lower/upper limits.
5240 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5242         * pipeline.cpp|h: When we get a decode frame request from another
5243         thread, store the request on the demuxer in a list, instead of on the
5244         media thread's stack. This ensures that decode frame requests are
5245         decoded in the same order they're requested.
5247         * type.h:
5248         * value.h:
5249         * cbinding.h:
5250         * type-generated.cpp: Regenerated.
5252 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5254         * playlist.cpp|h: Added and Emit EntryChangedEvent.
5256         * type-generated.cpp: Regenerated.
5258 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5260         * playlist.cpp: PlaylistList::Dispose: set current_node to null, since we'll delete
5261         it here.
5263 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
5265         * mediaelement.cpp: Only emit BufferingProgressChanged if it has gone up. The real
5266         buffer level will fluctuate as we play.
5268 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5270         * mediaelement.cpp|h: When we pause, store the current position, which we must return
5271         while paused. It may differ from the actual position when we pause, since the actual
5272         pause is done async.
5274 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5276         * mediaplayer.cpp|h:
5277         * mediaelement.cpp|h: Use a property value provider for
5278         Render/DroppedFramesPerSecond.
5280 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5282         * mediaelement.cpp|h: Make ReportErrorOccurred thread-safe. Managed code might
5283         call us from a worker thread.
5285 2009-07-16  Jackson Harper  <jackson@ximian.com>
5287         * xaml.cpp: When creating user controls make sure that we are
5288         hydrating if an x:Class type name is used.
5290 2009-07-16  Jeffrey Stedfast  <fejj@novell.com>
5292         * textbox.cpp (TextBoxUndoActionInsert::.ctor): Now takes an
5293         'atomic' argument. If atomic is true, then the buffer is not
5294         growable. This is the behavior we want for TextBoxBase::Paste(),
5295         but not TextBoxBase::Commit() (which needs to allow growable
5296         insert actions so that Undo removes the string of text the user
5297         just typed as opposed to just the most recent character).
5298         (TextBoxBase::Paste): Pass 'true' as the 'atomic' argument to
5299         TextBoxUndoActionInsert::.ctor().
5301 2009-07-16  Alan McGovern  <amcgovern@novell.com>
5303         * control.h:
5304         * uielement.h:
5305         * control.cpp:
5306         * uielement.cpp: 1) If the Control is not attached to a
5307           subtree which has been loaded, don't propagate IsEnabled to
5308           its children.
5309         2) Whenever a Control is loaded we traverse it's visual
5310           parents until we find another control and propagate the
5311           IsEnabled state.
5313 2009-07-16  Stephane Delcroix  <sdelcroix@novell.com>
5315         * multiscaleimage.h: mark the ViewportOrigin and ViewportWidth
5316         properties as AlwaysChange. fix drt #291.
5318 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5320         * dependencyobject.cpp: Retrieve all instance variables we need
5321         into local variables before decreasing the refcount. If the
5322         refcount is > 0 after decreasing it, we can't access instance
5323         variables anymore, since another thread might have unreffed which
5324         would cause the object to be deleted already.
5326 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5328         * dependencyobject.cpp: #if DEBUG -> #if SANITY and fix a typo in
5329         a comment.
5331 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5333         * dependencyobject.cpp: Add sanity check for refcount < 0.
5335 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5337         * dependencyobject.cpp: Move sanity verification into #if SANITY.
5339 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5341         * dependencyobject.h: Is, GetType, GetTypeName: use the Type
5342         overloads which takes a Deployment and provide our deployment
5343         instance.
5345 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5347         * type.cpp|h.in: Add Find, IsAssignable and IsSubclassOf methods
5348         which takes a Deployment argument for when we already have the
5349         Deployment handy.  This way we can avoid hitting
5350         Deployment::GetCurrent on some frequently used methods.
5352         * type.h: Regenerated.
5354 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5356         * runtime.h: Add stack trace to warning.
5358 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5360         * audio.cpp: Underflowed: if we haven't ended and don't have any
5361         more frames, we need to set the Waiting bit so that we start
5362         playing again when we get more frames.
5364 2009-07-16  Stephane Delcroix  <sdelcroix@novell.com>
5366         * multiscaleimage.cpp: reset the bitmapimage uri for the next time,
5367         avoid issues while reusing dlders for the same images, like in drt2013
5369 2009-07-16  Stephane Delcroix  <sdelcroix@novell.com>
5371         * tilesource.h|cpp, multiscleimage.h|cpp: invalidate the full msi cache
5372         on tilesource InvalidateTileLayer ().
5374 2009-07-16  Jackson Harper  <jackson@ximian.com>
5376         * xaml.cpp: Remove some dead code.
5378 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5380         * deployment.h: DeploymentStack: Added to ease push/pop current
5381         deployment when calling into a browser.
5383 2009-07-15  Chris Toshok  <toshok@ximian.com>
5385         * clock.h|cpp (Clock::CalculateFillTime): split this out from
5386         Clock::Begin since we can seek on a clock that hasn't actually hit
5387         Clock::Begin yet.
5388         (Clock::Begin): call CalculateFillTime.
5389         (Clock::UpdateFromParentTime): change our calculations slightly
5390         for what localTime is in the face of a seek, and update
5391         progress/localtime even when stopped.  Also, call
5392         CalculateFillTime if we're seeking on a clock that hasn't started,
5393         to make sure we get the proper progress.
5394         (Clock::Seek): don't apply the SpeedRatio here, we do it in
5395         UpdateFromParentTime.
5397         * animation.h|cpp (AnimationStorage::GetStopValue): remove, it's
5398         never used.
5399         (AnimationStorage::UpdatePropertyValue): pass the stopValue or
5400         baseValue as the defaultDestinationValue to
5401         AnimationClock::GetCurrentValue.
5402         (AnimationStorage::ResetPropertyValue): use ?: instead of if+else.
5403         (DoubleAnimation::GetCurrentValue): if there's a correctly typed
5404         defaultDestinationValue, use that before the base case of end =
5405         start.
5406         (ColorAnimation::GetCurrentValue): same.
5407         (PointAnimation::GetCurrentValue): same.
5409 2009-07-15  Jackson Harper  <jackson@ximian.com>
5411         * xaml.cpp|h: Consolidate some of the data passed to
5412         every callback and not used much into a struct.
5414 2009-07-15  Jeffrey Stedfast  <fejj@novell.com>
5416         * fontmanager.cpp (IndexFontSubdirectory): font_stream_new() can
5417         return NULL, so properly handle this error condition.
5418         (IndexFontFile): Same.
5419         (FontManager::OpenFontFace): Here too.
5420         (OpenSystemFont): Don't destroy the FcPattern until after opening
5421         the font (otherwise the filename will be free'd memory).
5423         * textbox.cpp (TextBoxView::Paint): Use the CaretBrush property to
5424         get the brush used for rendering the blinking caret. This is a 3.0
5425         feature.
5427 2009-07-15  Alan McGovern  <amcgovern@novell.com>
5429         * control.h:
5430         * control.cpp: Remove the Control::SetVisualParent override
5431           which ensures Control::IsEnabled is propagated correctly as
5432           this needs to be performed in UIElement::SetVisualParent.
5433           Set the subtreeobject before calling
5434           FrameworkElement::ElementAdded otherwise Control::IsEnabled
5435           cannot be propagated.
5437         * uielement.h:
5438         * uielement.cpp: Whenever the visual parent is changed on a
5439           UIElement we need to propagate Control::IsEnabled changes
5440           down the tree. Allows drt 557 to get a lot further.
5442 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5444         * mediaelement.cpp: SetProperties: set last seeked-to pts to 0.
5446 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5448         * pipeline.cpp: When seeking, reset buffering progress to 0.
5450 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5452         * mediaelement.cpp: SetDemuxerSource: no downloading goes on here
5453         (that we know of), so initialize DownloadProgress to 1.0.
5455 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5457         * mediaelement.cpp: Don't emit CurrentStateChanged after calling
5458         SetState, since SetState will also emit the event.
5460 2009-07-15  Alan McGovern  <amcgovern@novell.com>
5462         * tabnavigationwalker.cpp: If a child node is disabled, there
5463           is no point in walking its children or attempting to tab to
5464           it.
5466 2009-07-15  Jackson Harper  <jackson@ximian.com>
5468         * xaml.cpp: We don't want to auto import the SL namespaces when
5469         loading files
5470         
5471 2009-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5473         * pipeline.cpp|h: AudioStream: add a keyframe flag to the ctor.
5475         * cbinding.cpp|h: Regenerated.
5477 2009-07-15  Stephane Delcroix  <sdelcroix@novell.com>
5479         * bitmapimage.h|cpp: drop the downloader references, rely on
5480         Application::GetResource () for getting from resource AND downloading. The
5481         old downloader mechanism for v1 js callbacks.
5483 2009-07-14  Stephane Delcroix  <sdelcroix@novell.com>
5485         * application.h|cpp: Application.GetResource () now try to get the resource
5486         from the managed callback, then fallback to downloading.
5488 2009-07-14  Stephane Delcroix  <sdelcroix@novell.com>
5490         * utils.h|cpp: Cancellable class, passed as method argument, allows
5491         to abort an async action.
5493 2009-07-15  Stephane Delcroix  <sdelcroix@novell.com>
5495         * tilesource.h|cpp: add an invalidate_tile_layer_func so MSI can
5496         hook itself in and invalidate the cache
5498 2009-07-15  Stephane Delcroix  <sdelcroix@novell.com>
5500         * tilesource.h|cpp: stub InvalidateTileLayer
5502 2009-07-15  Alan McGovern  <amcgovern@novell.com>
5504         * control.cpp: Ensure that the control loses focus when it is
5505           disabled even if there are no other focusable controls. Also
5506           ensure the surface is not null before using it, fixes a
5507           regression in 432.
5509 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5511         * error.h: ErrorEventArg: Add accessors that can be pinvoked.
5513         * cbinding.cpp|h: Regenerated.
5515 2009-07-15  Alan McGovern  <amcgovern@novell.com>
5517         * control.cpp: When the focused control is disabled, tab to
5518           the next suitable control.
5520 2009-07-15  Alan McGovern  <amcgovern@novell.com>
5522         * runtime.h:
5523         * runtime.cpp: Implement the default autofocusing behaviour
5524           which silverlight exhibits. Apparently if the root control
5525           is focused, silverlight will keep attempting to focus a
5526           child of that control until it succeeds. Once a child
5527           control is focused, the focus changed events are emitted
5528           immediately, ignoring the usual focusing rules. Fixes DRT
5529           323.
5531 2009-07-15  Alan McGovern  <amcgovern@novell.com>
5533         * uielement.cpp: When clearing the Loaded flag on a UIElement,
5534           we should clear the flag on all visual children too.
5536 2009-07-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5538         * audio.cpp: Ref when we're supposed to ref. Fixes a crash.
5540 2009-07-14  Larry Ewing  <lewing@novell.com>
5542         * panel.cpp (OnPropertyChanged): make sure we invalidate the panel
5543         bounds when the bg changes.  Fixes 641
5545 2009-07-14  Larry Ewing  <lewing@novell.com>
5547         * border.cpp (OnSubPropertyChanged): elements must listen to
5548         subproperty changes for brushes.  Fixes 2020
5550 2009-07-14  Alan McGovern  <amcgovern@novell.com>
5552         * tabnavigationwalker.cpp: If TabNavagationWalker::Focus () is
5553           called on a Control with the 'Cycle' navigation mode and
5554           none of the children of that node can be tabbed to, then
5555           focus remains on that control.
5557 2009-07-13  Jeffrey Stedfast  <fejj@novell.com>
5559         * fonts.cpp (TextFont::Load): Don't g_strfreev() the families
5560         string array until after we've finished using the hash
5561         table. Prevents FMRs.
5563 2009-07-13  Jackson Harper  <jackson@ximian.com>
5565         * xaml.cpp: Don't allow setting x:Name and Name on the same
5566         element
5567         - Raise an error if we try to set a property to an incompatible
5568         type.
5570 2009-07-13  Alan McGovern  <amcgovern@novell.com>
5572         * runtime.cpp:
5573         * uielement.cpp: If the focused element is removed from the
5574           visual tree, it should lose focus.
5576 2009-07-13  Jackson Harper  <jackson@ximian.com>
5578         * xaml.cpp: Oops, trying to get the element name from the wrong
5579         void*
5581 2009-07-13  Jackson Harper  <jackson@ximian.com>
5583         * xaml.cpp: Handle MoonErrors for AddChild.
5585 2009-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5587         * mp3.cpp:
5588         * pipeline.h:
5589         * playlist.cpp:
5590         * pipeline.cpp:
5591         * pipeline-asf.cpp:
5592         * mms-downloader.cpp: IMediaObject: make the media field
5593           private, and add thread-safe property accessors (using a
5594           mutex and always returning a reffed object). Update all code
5595           which accessed the old accessor to use the new accessor and
5596           unref the media when done.
5598 2009-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5600         * pipeline.cpp|h: Deleted MemoryNestedSource, not used anymore.
5602         * type.h:
5603         * value.h:
5604         * type-generated.cpp: Regenerated.
5606 2009-07-13  Alan McGovern  <amcgovern@novell.com>
5608         * control.cpp: A control does not have to be loaded to be
5609           focusable, the visual tree it's attached to has to be
5610           loaded.
5612 2009-07-13  Alan McGovern  <amcgovern@novell.com>
5614         * cbinding.h:
5615         * cbinding.cpp:
5616         * tabnavigationwalker.h: TabNavigation should activate if the
5617           control does not handle the Tab key
5619 2009-07-13  Alan McGovern  <amcgovern@novell.com>
5621         * src.mdp:
5622         * cbinding.h:
5623         * Makefile.am:
5624         * collection.h:
5625         * collection.cpp:
5626         * tabnavigationwalker.h:
5627         * tabnavigationwalker.cpp: Commit the initial implementation
5628           of the TabNavigationWalker. Supports the three tabbing modes
5629           and also forward/backward tabbing. Passes drt 323 except for
5630           a default focusing issue.
5632 2009-07-13  Alan McGovern  <amcgovern@novell.com>
5634         * keyboard.cpp: Handle shift + tab (GDK_ISO_Left_Tab) as a
5635           KeyTab press.
5637 2009-07-13  JĂ©rĂ©mie Laval  <jeremie.laval@gmail.com>
5638         * src/xaml.cpp
5639         * src/dependencyproperty.cpp: Added const modifier to local variables.
5640         Fix the build with recent gcc.
5642 2009-07-10  Chris Toshok  <toshok@ximian.com>
5644         * value.h.in|cpp (Value::Clone): new method, clone the DO if the
5645         value contains one, and otherwise just copy the contents.
5647         * namescope.cpp (NameScope::CloneCore): clone the mapping (hm,
5648         this is probably wrong, as the mapping needs to reference cloned
5649         objects, not the same objects that existed in the original
5650         mapping.
5652         * collection.h|cpp (Collection::CloneCore): clone the collection
5653         contents.
5655         * dependencyproperty.h|cpp (resolve_property_path): add a
5656         promoted_values hashtable argument.  if the value has already been
5657         promoted, don't do it again. promote the first value we can while
5658         resolving the property path.  Don't promote UIElement subclasses
5659         though.
5660         
5661         * dependencyobject.h|cpp: add api for cloning (deep copying) for
5662         DependencyObjects.  DependencyObject::Clone is the public
5663         interface, with subclasses overriding ::CloneCore if they need to.
5665         * color.cpp (color_to_string): multiply by 255, not 256.
5667         * animation.h|cpp (Storyboard::HookupAnimationsRecurse): this
5668         takes a hashtable now so we don't promote values more than
5669         once (doing so causes previous animations to target objects that
5670         are no longer attached anywhere).
5672         * cbinding.h, cbinding.cpp, value.h, type-generated.cpp: regen.
5674 2009-07-10  Larry Ewing  <lewing@novell.com>
5676         * shape.cpp (MeasureOverride): start working towards fixing
5677         LayoutShapes with some tweaking here.
5678         (Clip): apply the framework clip to elements in the flow too.
5680 2009-07-10  Jeffrey Stedfast  <fejj@novell.com>
5682         * textbox.cpp (TextBoxBase::CursorNextWord): Emulate Windows
5683         instead of Gtk+.
5684         (TextBoxBase::CursorPrevWord): Same.
5685         (TextBoxBase::KeyPressRight): If there is currently a selection
5686         and the user presses ArrowRight by itself, set the anchor and
5687         cursor at the end of the selection.
5688         (TextBoxBase::KeyPressLeft): Same idea, but set them at the start
5689         of the selection.
5691 2009-07-10  Jeffrey Stedfast  <fejj@novell.com>
5693         * textbox.cpp: Always set SelectionStart before
5694         SelectionLength. Fixes a bug when selecting backwards from the end
5695         of the buffer.
5697 2009-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5699         * mediaelement.cpp|h: Store the last seeked-to position so that we never
5700         return a value before that as the current Position. MS DRT #486 uses
5701         a MediaStreamSource which returns frames before the seeked to position
5702         after seeking, and the test checks that MediaElement's Position property
5703         never returns a value before the seeked to position.
5705 2009-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5707         * audio.cpp: When we stop, we need to discard any audio data we might
5708         have stored.
5710 2009-07-10  Sebastien Pouliot  <sebastien at ximian.com>
5712         * runtime.cpp|h, type-generated.cpp: Rename 
5713         SourceDownloadCompletedEvent to SourceDownloadCompleteEvent
5715 2009-07-09  Jeffrey Stedfast  <fejj@novell.com>
5717         Fixes DRT #246
5719         * uri.cpp: Don't use a GData for params, instead use a custom
5720         linked-list. This makes it easier to compare param lists.
5721         (operator==): Compare params.
5723         * textbox.cpp (TextBoxBase::OnFocusOut): When we focus out, clear
5724         the selection.
5726 2009-07-09  Jackson Harper  <jackson@ximian.com>
5728         * dependencyobject.cpp|h: Add a little more logic for setting
5729         things to NULL and consolidate in it's own function (STRING can
5730         now be set to NULL).
5732 2009-07-09  Sebastien Pouliot  <sebastien at ximian.com>
5734         * downloader.cpp|h: Don't check redirection AFTER downloading the
5735         data. Expose CheckRedirectionPolicy so the plugin can check for
5736         the redirection policy when creating a new stream.
5737         * uri.cpp|h: Add IsAbsolute method and make the return value of
5738         IsScheme const.
5740 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5742         * playlist.cpp: StopAsync: (PlaylistEntry): don't stop the MediaPlayer,
5743         the root takes care of that. (Playlist): loop over all children and
5744         call StopAsync on them, this way all nested playlists are reset properly
5745         (PlaylistRoot): when done stopping, reopen us.
5747 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5749         * playlist.cpp: Skip UTF8 boms when checking if a file is a playlist.
5751 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5753         * mediaelement.cpp: If we don't AutoPlay, we end up Paused, not Stopped.
5755 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5757         * mediaelement.cpp: Don't go directly into a Buffering state, when
5758         MediaOpened is emitted we must be either in Paused or Playing state.
5760 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5762         * mediaelement.cpp: Seek: if CanSeek is false, don't seek.
5764 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5766         * mediaelement.cpp|h: Emit CurrentState events asynchronously.
5768 2009-07-08  Larry Ewing  <lewing@novell.com>
5770         * frameworkelement.cpp (Arrange): apply min/max values to the
5771         offer.
5773 2009-07-08  Jeffrey Stedfast  <fejj@novell.com>
5775         * fontmanager.cpp (FontManager::OpenSystemFont): Make 2 attempts
5776         at opening the requested system font. First, try using the font
5777         name exactly as the user gave it to us. If that fails, fallback to
5778         canonicalizing it and the style values.
5779         (style_diff): Modify the algorithm used to compare the style
5780         difference between 2 fonts.
5782 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5784         * validators.cpp|h:
5785         * mediaelement.h: Add validators for Balance and Volume.
5786         This fixes MS DRT #960.
5788         * value.cpp|in: Add support for changing a value.
5790         * value.h:
5791         * dependencyproperty.g.cpp: Regenerated.
5793 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5795         * playlist.h|cpp: Add support for PARAMS elements in ASX files. Fix
5796         some casing changes with media attributes. PlayNext: fix logic, after
5797         finishing a nested playlist we must play the next entry in our playlist,
5798         not finish right away. If the pipeline raises a MediaError event due to
5799         missing a codec (which is most likely due to an unsupported media file),
5800         don't propagate the error, just play the next entry. Fix a lot of error
5801         code/message changes from 1.0 to 2.0. MS DRT #78 now passes, as well
5802         as 99.6% of our playlist tests.
5804 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5806         * pipeline.h:
5807         * playlist.h|cpp: Unify playlist detection into one place and add
5808         support for skipping initial whitespace in the file.
5810 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5812         * playlist.cpp|h: String setters: be consistent: take a const string
5813         and dup inside the setter if required, instead of always when calling
5814         the setter, which may leak.
5816 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5818         * playlist.cpp: OnASXStartElement: null initialize to avoid reading 
5819         random memory.
5821 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5823         * playlist.cpp: Cleanup: cleanup properly since we may continue to live
5824         after this method has been called.
5826 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5828         * playlist.cpp: PlaylistEntry: needs to ref/unref the source. 
5830 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5832         * pipeline.cpp:
5833         * playlist.cpp|h: Store any ErrorEventArgs in the PlaylistParser, and if
5834         the parsing fails, propagate the args up in the pipeline.
5836 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5838         * mediaelement.cpp: We need to populate media attributes before raising
5839         MediaOpened.
5841 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5843         * mediaelement.cpp: When emitting MediaOpened, ensure that DownloadProgress
5844         has changed at least a tiny bit.
5846 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5848         * mediaelement.cpp: MediaOpened event comes with an empty RoutedEventArgs.
5850 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5852         * mediaelement.cpp: Properly set CanPause and CanSeek, and always use 
5853         mediaplayer's duration as NaturalDuration.
5855 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5857         * mediaplayer.cpp: All starting points seem to be allowed now, so don't
5858         throw an error event for starting point > duration anymore. Also duration
5859         is always the entire length of the media, regardless of when we start and
5860         how long we're supposed to play.
5862 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5864         * error.cpp|h: Add custom information to ErrorEventArgs, to provide
5865         better Moonlight debugging and in some cases we need more information
5866         than what MS reports.
5868 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5870         * media.cpp: MediaAttributes are case-insensitive.
5872 2009-07-07  Jeffrey Stedfast  <fejj@novell.com>
5874         * fontmanager.cpp (canon_font_family_and_style): New convenience
5875         function to canonicalize font family & style info, split out of
5876         IndexMatchFace().
5877         (IndexMatchFace): Use the new function.
5879 2009-07-07  Jackson Harper  <jackson@ximian.com>
5881         * style.h: Need an internal setter for IsSealed so we can do the
5882         parser seal/unseal hack.
5884 2009-07-07  Sebastien Pouliot  <sebastien@ximian.com>
5886         * downloader.cpp|h: Add a new FontPolicy since it differs from 
5887         XamlPolicy (which is otherwise *unused*) and fix policies wrt
5888         http://msdn.microsoft.com/en-us/library/cc189008(VS.95).aspx
5889         * glyphs.cpp, textblock.cpp, textbox.cpp: Use the new FontPolicy
5890         when downloading
5892 2009-07-07  Alan McGovern  <amcgovern@novell.com>
5894         * namescope.cpp: Once a namescope is locked, don't allow names
5895           to be registered or unregistered. Fixes the case where the
5896           name is changed on a template item.
5898 2009-07-07  Alan McGovern  <amcgovern@novell.com>
5900         * xaml.h:
5901         * xaml.cpp:
5902         * template.cpp: When expanding a template, mark all the
5903           children as TemplateItems so they will be able to look up
5904           the correct namescope.
5906         * control.h:
5907         * control.cpp:
5908         * dependencyproperty.g.cpp: Add an "IsTemplateItem" attached
5909           property.
5911         * dependencyobject.h:
5912         * dependencyobject.cpp: Add extra overloads to FindName and
5913           FindNameScope so that we can tell whether we are looking up
5914           a template name or regular name.
5916         * namescope.h:
5917         * namescope.cpp: Add the ability to lock a namescope so it
5918         can be recognised as a template namescope.
5920 2009-07-07  Jackson Harper  <jackson@ximian.com>
5922         * xaml.cpp: Lookup properties on the owner type so attached
5923         properties get looked up properly when setting them via text ie
5924         <Canvas.Left>5</Canvas.Left>
5926 2009-07-06  Jackson Harper  <jackson@ximian.com>
5928         * xaml.cpp: Ignored elements should buffer their contents
5929         - Add in Ignored attributes
5931 2009-07-06  Jackson Harper  <jackson@ximian.com>
5933         * xaml.cpp: Implement ignorable namespaces.
5935 2009-07-06  Larry Ewing  <lewing@novell.com>
5937         * multiscaleimage.cpp (ZoomAboutLogicalPoint): make this compile.
5939 2009-07-06  Stephane Delcroix  <sdelcroix@novell.com>
5941         * multiscaleimage.cpp, multiscaleimage.h: keep the zoom and pan targets
5942         so ZoomAbout *= the target's value for zoom, not the current one.
5944 2009-07-06  Jeffrey Stedfast  <fejj@novell.com>
5946         Fixes drt 249.
5948         * fonts.cpp (LoadPortableUserInterface): Return the index of the
5949         Lucida font face.
5950         (TextFont::Load): If PUI is our first family, keep track of which
5951         face the Lucida face is and use that as our master. Otherwise use
5952         the first face.
5953         (TextFont::UpdateFaceExtents): Use the 'master' face to get the
5954         extents from, rather than the first face.
5956 2009-07-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5958         * playlist.cpp: PlayNext: play even if previous entry didn't fail.
5959         Fixes our test #136.
5961 2009-07-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5963         * playlist.cpp|h: Remove wsx/smil parsing, it's a server side
5964         playlist format so we'll never get it, it'll be parsed on the
5965         media server.
5967 2009-07-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5969         * mediaelement.cpp: Fix warning.
5971 2009-07-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5973         * src.mdp: Updated.
5975 2009-07-03  Larry Ewing  <lewing@novell.com>
5977         * textblock.cpp (ArrangeOverride): try to get textblock height
5978         stretching closer.  See 295 and 2020 for examples.
5980 2009-07-03  Alan McGovern  <amcgovern@novell.com>
5982         * runtime.cpp: We don't need to change these actually.
5984 2009-07-03  Alan McGovern  <amcgovern@novell.com>
5986         * runtime.cpp: When inside the if statement, we know that
5987           toplevel and element are the same, so use 'element' instead
5988           of 'toplevel' in case the toplevel is removed during the
5989           loaded/resized event. Fixes memorabilia.
5991 2009-07-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5993         * mms-downloader.cpp: ProcessResponseHeaderCallback:
5994         set current deployment.
5996 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5998         * pipeline-asf.cpp|h:
5999         * mms-downloader.cpp|h: If downloading the mms url
6000         doesn't succeed, raise an error. Fixes MS DRT #222
6001         completely.
6003 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6005         * pipeline-asf.cpp:
6006         * mediaelement.cpp: When playing an mms stream, SL sets
6007         DownloadProgress to 1.0 after downloading the header.
6008         Makes MS DRT #222 reach a bit further.
6010 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6012         * pipeline.cpp: Fix printf.
6014 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6016         * mediaelement.cpp: Handle DownloadProgressChanged events
6017         properly.
6019 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6021         * downloader.cpp|h: Add another downloader API
6022         method, this time to get the DownloaderResponse.
6024         * cbinding.cpp|h: Regenerated.
6026 2009-07-02  Stephane Delcroix  <sdelcroix@novell.com>
6028         * multiscaleimage.h: instruct the generator to do more for us.
6030 2009-07-02  Chris Toshok  <toshok@ximian.com>
6032         * propertypath.h: fix operator== and add operator!=.
6034         * validators.h|cpp: add StoryboardTargetPropertyValidator.
6036         * dependencyproperty.g.cpp: regen.
6038         * animation.h (class Storyboard): use a special validator for
6039         TargetPropertyProperty such that it follows the semantics laid out
6040         in StoryboardTest.SetTargetPropertyTwice*.
6042 2009-07-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6044        * mediaelement.cpp: Protect against emitting BufferingProgressChanged
6045        when the actual value hasn't changed.
6047        * pipeline.cpp: FillBuffers: don't report any buffering progress
6048        if we don't have any media streams.
6050 2009-07-02  Jeffrey Stedfast  <fejj@novell.com>
6052         * fonts.cpp (LoadPortableUserInterface): Now takes a 'lang'
6053         argument which is used for loading the preferred default font (by
6054         language) first, before the other fallback fonts.
6055         (TextFont::Load): Pass in the 'lang' argument.
6056         (TextFontDescription): Added methods to get/set a Language
6057         property.
6059         * textblock.cpp (Inline::UpdateFontDescription): Set the language
6060         on the TextFontDescription.
6061         (TextBlock::OnPropertyChanged): If the
6062         FrameworkElement::LanguageProperty changes, reload the fonts and
6063         invalidate.
6065 2009-07-02  Jackson Harper  <jackson@ximian.com>
6067         * xaml.cpp: Fix error code so it gets propogated up when
6068         validating templates.
6070 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6072         * runtime.cpp: Fix printf.
6074 2009-07-02  Stephane Delcroix  <sdelcroix@novell.com>
6076         * multiscaleimage.h|cpp: handle the various motion finished separately
6077         and only emit th eMotionFinished event if all the 3 (zoom, pan, fade)
6078         animations are completed.
6080 2009-07-02  Stephane Delcroix  <sdelcroix@novell.com>
6082         * multiscaleimage.h|cpp: use 2 internals dp for animating pan & zoom.
6083         use a custom property provider so getting vp origin or width returns
6084         the current value, while setting them sets the animation's targets.
6086 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6088         * pipeline.cpp: FillBuffers: Only take into
6089         account media streams when trying to determine
6090         if all streams have reached its end. Fixes our test
6091         #150.
6093 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6095         * mediaelement.cpp: Reinvalidate everything when
6096         clearing a source. Fixes MS DRT #45 (after setting
6097         the source to an empty string, the media element
6098         shouldn't render anything anymore).
6100 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6102         * pipeline.cpp: FillBuffers: Take into account that
6103         decoders may call SetOutputEnded once SetInputEnded
6104         is called, and update the number of ended streams
6105         immediately. Fixes our test #111.
6107 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6109         * pipeline.cpp:
6110         * playlist.cpp: Make debug output more descriptive.
6112 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6114         * pipeline-asf.cpp|h: Reimplement support for mms seeking.
6116 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6118         * mp3.cpp: GetFrameAsyncInternal: if we don't have enough data,
6119         try again later.
6121 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6123         * mp3.cpp: Fix parsing of xing vbr headers causing wrong
6124         duration to get calculated of the file.
6126 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6128         * mp3.cpp: FindMpegHeader: fix return value: the offset of
6129         the header goes into the result output variable and we return
6130         success instead of returning a bogus error value.
6132 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6134         * pipeline.cpp: If we couldn't select a demuxer because of
6135         not having enough data yet, try again later.
6137 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6139         * mediaelement.cpp: If Source (or UriSource) is either null
6140         or an empty string, we're only supposed to clean up, not 
6141         trying to play the null/empty string.
6143 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6145         * pipeline.cpp: Use ProgressEventArgs to pass buffering progress
6146         to MediaElement. Clamp BufferingProgress to 0.0 <=> 1.0, and if
6147         all streams have finished their output, set buffering progress
6148         to 1.0.
6150         * playlist.cpp: Properly forward progress event args.
6152         * mediaelement.cpp: Set buffering progress when it changes,
6153         and raise BufferingProgressChanged. Don't try to autoplay
6154         when buffering progress is < 1.0, wait until it reaches 1.0.
6156 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6158         * audio-pulse.cpp: Fix warning.
6160 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6162         * audio-alsa.cpp: WriteMmap: If we try to write with an audio
6163         source which has ended, call Underflowed, since that's what's
6164         happened.
6166 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6168         * audio-alsa.cpp: If hw setup failed, dump current hw parameters
6169         to stdout (if debug mode is enabled).
6171 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6173         * mms-downloader.cpp: Do better initialization and cleanup of
6174         downloader and state variables to prevent issues when seeking.
6176 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6178         * mms-downloader.cpp: Write: Don't use math when not necessary to
6179         avoid overflows, and if we end up freeing the buffer set the size
6180         accordingly.
6182 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6184         * mms-downloader.cpp: Use thread-safe tick call from media thread.
6186 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6188         * mms-downloader.cpp: Don't leak the uri.
6190 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6192         * downloader.h: Make OpenInitialize public so that the
6193         MmsDownloader can reinitialize it when sending new requests.
6195 2009-06-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6197         * audio.cpp: Play 24 bit audio unconditionally.
6199 2009-07-01  Chris Toshok  <toshok@ximian.com>
6201         * Makefile.am (INCLUDES): turns out we need to include ../plugin
6202         here to deal with type-generated/type.h/etc.
6204         * type.h.in: fix annoying indent problem.
6206         * cbinding.h, dependencyproperty.g.cpp, type-generated.cpp,
6207         value.h, type.h: regen
6209 2009-07-01  Larry Ewing  <lewing@novell.com>
6211         * textblock.cpp (ArrangeOverride): take alignment into account
6212         when computing our size.
6214 2009-07-01  Jeffrey Stedfast  <fejj@novell.com>
6216         * textblock.cpp (ArrangeOverride): Set the available width on the
6217         layout so that it can properly align the text for center/right
6218         alignment.
6220 2009-07-01  Jackson Harper  <jackson@ximian.com>
6222         * xaml.cpp: Need to set the binding source when we are validating
6223         templates.
6225 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6227         * mediaelement.cpp: SetMarkerTimeout: when unreffing self
6228         use a delayed timeout, since we can be the last ref, this
6229         ensures the stack is unwound first.
6231 2009-06-30  Larry Ewing  <lewing@novell.com>
6233         * border.cpp (Render): get CornerRound rendering closer to the sl
6234         version.
6236 2009-06-30  Chris Toshok  <toshok@ximian.com>
6238         * clock.h|cpp: Seeking doesn't start the clock.  And we have to
6239         support UpdateFromParentTime even while paused, since we can seek
6240         while paused.  Fixes 392 (along with actually fixing the test..)
6242 2009-06-30  Chris Toshok  <toshok@ximian.com>
6244         * clock.h|cpp: fix Seek and SeekAlignedToLastTick.  fixed DRT
6245         tests 393 and 396.
6247 2009-06-30  Jeffrey Stedfast  <fejj@novell.com>
6249         * fontmanager.cpp (style_diff): Improved a bit so that we never
6250         return G_MAXINT if any font by the same name is found, no matter
6251         what style differences there are.
6253 2009-06-30  Jackson Harper  <jackson@ximian.com>
6255         * deepzoomimagetilesource.cpp: Parsers need to be freed.
6257 2009-06-30  Alan McGovern  <amcgovern@novell.com>
6259         * popup.cpp: According to the docs, a popup which is GC'ed
6260           should be closed. Ensure that this happens.
6262 2009-06-30  Alan McGovern  <amcgovern@novell.com>
6264         * popup.cpp: If the child is set after the popup is opened,
6265           make sure it is shown. Ensure that we now only emit the
6266           Opened/Closed events when the popup IsOpen state changes.
6267           Allows 503 to progress further.
6269 2009-06-30  Jackson Harper  <jackson@ximian.com>
6271         * xaml.cpp|h: Add a flag for template validation
6272         - Implement template validation and propogate errors up
6273         * cbinding.cpp: regen
6275 2009-06-30  Stephane Delcroix  <sdelcroix@novell.com>
6277         * multiscaleimage.cpp: drop a debug block that was misinterpreted by
6278         the preprocessor. fir x drt 265.
6280 2009-06-30  Stephane Delcroix  <sdelcroix@novell.com>
6282         * multiscaleimage.cpp: download the first num_dl (6) levels while the
6283         source is ready.
6285 2009-06-29  Alan McGovern  <amcgovern@novell.com>
6287         * control.cpp: Unregress drt 911, EnabledChanged events fire
6288           at the correct time again.
6290 2009-06-29  Jeffrey Stedfast  <fejj@novell.com>
6292         * fontmanager.cpp (LoadGlyph): Save some memory by dropping some
6293         of the GlyphMetrics fields.
6295         * layout.cpp: Updated to keep track of the previous GlyphInfo
6296         rather than the previous GlyphInfo's index.
6298         * fonts.cpp (TextFont::GetGlyphInfo): Set the GlyphInfo face.
6299         (TextFont::Kerning): Modified to take GlyphInfo arguments rather
6300         than face indexes since they are worthless w/o knowing which font
6301         face the indexes of each are for.
6303 2009-06-29  Alan McGovern  <amcgovern@novell.com>
6305         * control.cpp: Propagate the IsEnabled changes down the visual
6306           tree in OnPropertyChanged, not in SetValue.
6308 2009-06-29  Jackson Harper  <jackson@ximian.com>
6310         * xaml.cpp: Store enums as INTs.
6312 2009-06-28  Chris Toshok  <toshok@ximian.com>
6314         * clock.h|cpp (Clock::RaiseAccumulatedEvents): switch (state ==
6315         Clock::Active) to (state != Clock::Stopped) to tell whether or not
6316         we've started (since we can start directly in the filling state.)
6318         Also remove all the idle_hint stuff, since it's no longer used.
6320         * timemanager.cpp (RootClockGroup::UpdateFromParentTime): not sure
6321         why this method is needed at all, but at the very lease we need to
6322         stop calling ClockGroup::UpdateFromParentTime, since this method
6323         very nearly duplicates that one (and we're therefore looping over
6324         the child clocks twice).
6326 2009-06-28  Chris Toshok  <toshok@ximian.com>
6328         * color.cpp (named_colors): update these so that text-colors.xaml
6329         passes.
6331 2009-06-28  Larry Ewing  <lewing@novell.com>
6333         * xaml.cpp (value_from_str_with_parser): allow NAN to be NAN too.
6335 2009-06-27  Jeffrey Stedfast  <fejj@novell.com>
6337         * glyphs.cpp (OnPropertyChanged): When the FontUriProperty
6338         changes, the layout *always* gets dirty. We also always need to
6339         invalidate.
6341         * fonts.cpp (TextFont::UpdateFaceExtents): New helper method to
6342         calculate/update the font extents. Only use the extents of the
6343         first face - this fixes a bunch of MS DRTs.
6344         (TextFont::.ctor): Call UpdateFaceExtents().
6345         (TextFont::SetSize): Need to call UpdateFaceExtents() here. Fixes
6346         a number of regressions (like MS DRT #43).
6348 2009-06-27  Chris Toshok  <toshok@ximian.com>
6350         * grid.cpp (Grid::OnCollectionItemChanged): don't
6351         InvalidateMeasure() when the grid's actualwidth or row's
6352         actualheight is set.  this gets us into an infinite loop.
6354 2009-06-26  Chris Toshok  <toshok@ximian.com>
6356         * enums.cpp (grid_unit_type_map): add a mapping for GridUnitType.
6357         (initialize_enums): and add it to the hashtable.
6359         * grid.h|cpp: make ColumnDefinition.ActualWidth and
6360         RowDefinition.ActualHeight dependencyproperties to make the plugin
6361         binding easier.  get rid of each class's "actual" field.
6362         
6363 2009-06-25  Chris Toshok  <toshok@ximian.com>
6365         * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
6366         object we're looking the event up on, and a flag as to whether or
6367         not to allow desktop-specific events.  and just look up the event
6368         from the type system instead of having the hardcoded list.
6370 2009-06-25  Chris Toshok  <toshok@ximian.com>
6372         * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
6373         object we're looking the event up on, and a flag as to whether or
6374         not to allow desktop-specific events.  and just look up the event
6375         from the type system instead of having the hardcoded list.
6377 2009-06-26  Jeffrey Stedfast  <fejj@novell.com>
6379         * fonts.cpp (LoadPortableUserInterface): Only set that we've
6380         loaded PUI, not each individual fallback face. The other faces may
6381         match user-specified faces, but there may also be a font source
6382         that it is loading them from (which may differ from the locally
6383         installed faces).
6385 2009-06-26  Jeffrey Stedfast  <fejj@novell.com>
6387         * runtime.cpp: Don't need to call font_init() or font_shutdown()
6388         anymore.
6390         * deployment.cpp: Create a new FontManager per Deployment and
6391         provide an access method to get at it.
6393         * textblock.cpp, glyphs.cpp, textbox.cpp: Updated for the font
6394         loading APIs.
6396         * provider.cpp: Removed FontFilenameProperty and FontGUIDProperty
6397         inheritance, these no longer exist.
6399         * fonts.cpp|h: New source files with the higher-level abstraction
6400         for font loading, glyph manipulation, etc.
6402         * fontmanager.cpp|h: New source files containing a FontManager
6403         class which handles caching of font faces and indexing of font
6404         resources. Serves as platform-dependent font loading layer.
6406         * font.cpp|h: Removed.
6408 2009-06-26  Jeffrey Stedfast  <fejj@novell.com>
6410         * uri.cpp (ToString): Respct the UriHideQuery flag.
6412 2009-06-26  Larry Ewing  <lewing@novell.com>
6414         * border.h: change the default value.
6416         * cornerradius.h: reorder the bottom* arguments.
6418 2009-06-26  Alan McGovern  <amcgovern@novell.com>
6420         * popup.h:
6421         * popup.cpp: Handle popup hittesting when its closed in a way
6422           that doesn't suck.
6424 2009-06-26  Alan McGovern  <amcgovern@novell.com>
6426         * popup.cpp: Keep the RENDER_VISIBLE flag in sync with the
6427           IsOpen state so that hittesting works correctly.
6429 2009-06-25  Chris Toshok  <toshok@ximian.com>
6431         * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
6432         object we're looking the event up on, and a flag as to whether or
6433         not to allow desktop-specific events.  and just look up the event
6434         from the type system instead of having the hardcoded list.
6436 2009-06-25  Larry Ewing  <lewing@novell.com>
6438         * grid.cpp, grid.h (PostRender): move the grid lines from Render to
6439         PostRender so that the lines are on top of the children (which
6440         appears to be the sl behavior).  Fixes at least 317 and 446.
6441         
6442 2009-06-25  Sebastien Pouliot  <sebastien@ximian.com>
6444         * downloader.cpp: Fix MediaElement policy wrt cross-domain access.
6445         Fix two unnumbered DRT tests.
6447 2009-06-25  Chris Toshok  <toshok@ximian.com>
6449         * textbox.h|cpp (TextBoxBase::SelectWithError): we need to
6450         generate ArgumentExceptions here if start/length are out of range.
6451         This could, in the future, be entirely handled by the setter
6452         methods but for now we don't pass a MoonError to them.
6454         * xaml.h|cpp (xaml_set_property_from_str): this method takes an
6455         additional MoonError parameter so we can communicate back if there
6456         was a problem.  Also, call SetValueWithError.
6458         * cbinding.h|cpp: regen.
6460 2009-06-25  Chris Toshok  <toshok@ximian.com>
6462         * resources.h|cpp: add a "from_resource_dictionary_api" bool so we
6463         can tell in AddedToCollection and RemovedFromCollection if we got
6464         there from using ResourceDictionary's string-based api or
6465         Collection's object-based api.  Take care of adding/removing the
6466         key for the object in those methods if we didn't come from the RD
6467         api.
6469         * type.cpp (Type): quiet valgrind down by using "delete []"
6470         instead of "delete" to free up the interfaces array.
6472 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6474         * mediaplayer.cpp: Improve debug output.
6476 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6478         * pipeline.h: Added a ProgressEventArgs class.
6480         * value.h:
6481         * type.h:
6482         * type-generated.cpp: Regenerated.
6484 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6486         * audio.cpp|h: Add support for having different input (from the
6487         codec) and output (to the device) formats. This is required for
6488         pulseaudio 0.10 which doesn't support 24 bit audio, only 16 and 32
6489         bit. Also add support for multi channel audio.
6491         * audio-alsa.cpp:
6492         * audio-pulse.cpp: Add support for multi channel and 24 bit audio
6493         and update according to audio API changes.
6495 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6497         * audio-alsa.cpp: Fix debug output by not duplicating declarations.
6499 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6501         * audio.cpp|h: Add support for dumping raw audio data to a file.
6503 2009-06-25  Alan McGovern  <amcgovern@novell.com>
6505         * dependencyproperty.g.cpp: Regen
6507 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6509         * downloader.cpp:
6510         * mms-downloader.h:
6511         * file-downloader.h:
6512         * internal-downloader.h: Add a SetFilename abstract method to 
6513         InternalDownloader, provide implementations in FileDownloader
6514         and MmsDownloader and call the abstract method in the downloader
6515         instead of blindly casting an InternalDownloader to a FileDownloader
6516         when it might be an MmsDownloader.
6518 2009-06-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6520         * pipeline.cpp|h: AudioStream: add possibility of having different
6521         input and output formats.
6523         * cbinding.cpp|h: Regenerated.
6525 2009-06-24  Chris Toshok  <toshok@ximian.com>
6527         * xaml.cpp (matrix_from_str): handle "Identity" here.
6528         (value_from_str_with_parser): you can also create TransformGroups
6529         directly using the matrix syntax.  Also, add support for parsing
6530         FontWeight/FontStyle/FontWeight structs here since we can't just
6531         rely on the enum_* stuff alone to do it.
6533         * value.h.in, value.cpp: add support for
6534         FontWeight/FontStyle/FontWeight structs.
6536         * textblock.cpp (Inline::UpdateFontDescription): track the
6537         struct-update.
6538         (TextBlock::Layout): same.
6540         * textbox.cpp (TextBoxBase::Initialize): same.
6541         (TextBoxBase::OnPropertyChanged): same.
6543         * fontweight.h, fontstyle.h, fontstretch.h: new files, we're using
6544         structs now for these.
6545         
6546         * textblock.h, control.h: use the FontWeight/FontStyle/FontWeight
6547         struct types for properties instead of our internal enums.
6549         * Makefile.am (libmoon_include_headers): add fontstretch.h
6550         fontstyle.h, and fontweight.h
6552         * type-generated.cpp: regen.
6554         * cbinding.h|cppp: regen.
6556         * dependencyproperty.g.cpp: regen.
6558         * value.h: regen.
6559         
6560 2009-06-24  Larry Ewing  <lewing@novell.com>
6562         * panel.cpp (Render): add layout clipping to panel rendering.
6564 2009-06-24  Larry Ewing  <lewing@novell.com>
6566         * grid.h: stop drawing the gridlines by default.  See comment for
6567         details.
6569 2009-06-24  Alan McGovern  <amcgovern@novell.com>
6571         * runtime.h:
6572         * runtime.cpp: Focus changed events should be emitted at the
6573           start and end of any user initiated event.
6574           can_raise_focus_changed is no longer necessary.
6576 2009-06-23  Larry Ewing  <lewing@novell.com>
6578         * frameworkelement.cpp (UpdateLayout): reorder the way we process
6579         the lyout queues. Fixes ms 409.
6581 2009-06-23  Jackson Harper  <jackson@ximian.com>
6583         * xaml.cpp: Handle empty buffers
6584         
6585 2009-06-23  Jackson Harper  <jackson@ximian.com>
6587         * xaml.cpp: ContentControl can not have string content set this
6588         way, if the content object is a string it needs to be set with
6589         attributes.
6591 2009-06-23  Jackson Harper  <jackson@ximian.com>
6593         * xaml.cpp: Another stab at not skipping empty attributes. Fixed
6594         all the unit test regression this caused last night.
6596 2009-06-23  Alan McGovern  <amcgovern@novell.com>
6598         * grid.cpp: A dash length of 4 seems to be more correct.
6600 2009-06-23  Alan McGovern  <amcgovern@novell.com>
6602         * grid.h:
6603         * grid.cpp: Implement Grid.ShowGridlines
6605 2009-06-22  Jackson Harper  <jackson@ximian.com>
6607         * xaml.cpp: Pass the full prop name to managed
6608         - If managed fails to set the property, delete it so unmanaged can
6609         try
6611 2009-06-22  Larry Ewing  <lewing@novell.com>
6613         * provider.cpp: make UIElement::UseLayoutRounding inherited, this
6614         doesn't make it pass 2019 but it does a lot more. 
6616         * shape.cpp: mirror the silverlight logic for canvas children with
6617         only one of w/h set.  Fixes ms test 23.
6619 2009-06-18  Larry Ewing  <lewing@novell.com>
6621         * shape.cpp: try to get the shape flags right once again trap
6622         explicit small values properly.  Add Clipping logic to clip shapes
6623         to the fe values when explicitly set.
6625         * frameworkelement.cpp: look at stretch even when we have no
6626         children.
6628 2009-06-19  Jackson Harper  <jackson@ximian.com>
6630         * xaml.cpp|h: We now have a managed version of AddChild so remove
6631         all the AddToContainer junk and use the managed AddChild instead.
6632         - Add MoonError to all the callbacks. Not handling the errors yet,
6633         but at least they are there now.
6635 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6637         * xaml.cpp: Add comment about absolute/relative paths
6638         for MSI.
6640 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6642         * multiscaleimage.cpp: When an image has been opened,
6643         invalidate everything.
6645 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6647         * multiscaleimage.cpp|h: Emit MotionFinished after
6648         SetViewportWidth/SetViewportOrigin has been called.
6650 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6652         * multiscaleimage.cpp|h:
6653         * deepzoomimagetilesource.cpp|h: Raise error events.
6655 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6657         * multiscaleimage.cpp|h: Add support for methods exposed to JS.
6659         * cbinding.h: Regenerated.
6661 2009-06-18  Sebastien Pouliot  <sebastien@ximian.com>
6663         * textblock.cpp: Avoid crash when using FontSource
6665 2009-06-18  Alan McGovern  <amcgovern@novell.com>
6667         * control.h:
6668         * uielement.h:
6669         * control.cpp: When the visual parent changes on a Control, it
6670           needs to search up the visual tree to find out the Enabled
6671           state of the first Control it finds. When raising the
6672           IsEnabledChanged events, the control must emit its event
6673           before controls in its subtree emit their events. Fixes drt
6674           911.
6676 2009-06-17  Jeffrey Stedfast  <fejj@novell.com>
6678         * textbox.cpp (Paste): Don't allow pastes to exceed MaxLength and
6679         for single-line entry controls (e.g. PasswordBox), don't allow
6680         multi-line pastes.
6682 2009-06-17  Alan McGovern  <amcgovern@novell.com>
6684         * uielement.cpp: Changing UIElement::Visibility should also
6685           invalidate the parents measure. This allows DRT 2050 to
6686           complete without timing out.
6688 2009-06-17  Alan McGovern  <amcgovern@novell.com>
6690         * uielement.cpp: Changing UIElement.Visibility should result
6691           in the measure being invalidated.
6693 2009-06-17  Alan McGovern  <amcgovern@novell.com>
6695         * font.cpp: When the font cache is destroyed, set it to NULL
6696           so that if a Font is destroyed later it does not try to
6697           re-use the cache.
6698         Null check the the FontFace cache before using it.
6699         If the FT_Face stream is null already, don't try to destroy
6700           it.
6702 2009-06-17  Alan McGovern  <amcgovern@novell.com>
6704         * runtime.cpp: A subset of keypresses are allowed to bubble up
6705           when in fullscreen mode. Fixes drt 175.
6707 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6709         * uri.cpp: Add a null check to prevent a crash.
6711 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6713         * uri.cpp: Flag a lot more characters as url unsafe, and 
6714         fix printf specifiers for url encoded characters to not 
6715         include extra 'ff' sequences for every encoded character.
6717         This fixes parts of MS DRT #641.
6719 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6721         * downloader.cpp|h: Add an Open overload which takes an Uri
6722         instead of a string.
6724         * deepzoomimagetilesource.cpp:
6725         * bitmapimage.cpp: Use the Uri overload of Downloader::Open.
6727 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6729         * playlist.cpp: When we stop, emit the StopEvent.
6731         * mediaelement.cpp: Don't return a CurrentPosition > NaturalDuration.
6733 2009-06-16  Chris Toshok  <toshok@ximian.com>
6735         * xaml.cpp (XamlElementInfoStaticResource,
6736         XamlElementInstanceStaticResource): remove these classes.
6737         (begin_buffering_element_names): remove this unused variable.
6738         (XamlParserInfo::LookupNamedResource): remove.
6739         (DefaultNamespace::FindElement): remove the
6740         XamlElementInfoStaticResource case, and just let the managed
6741         loader create the StaticResource element itself.
6742         (is_static_resource_element): remove.
6743         (XamlElementInstanceNative::SetProperty): defer to the loader if
6744         either the property or the value RequiresManagedSet.
6745         (dependency_object_set_property): defer to the loader if the value
6746         RequiresManagedSet.
6747         (dependency_object_set_attributes): remove all processing of
6748         markup extensions from unmanaged code.
6749         (xaml_markup_parse_argument): remove.
6750         (xaml_markup_extension_type): remove.
6751         (handle_markup_in_managed): remove.
6752         (handle_xaml_markup_extension): remove.
6753         
6754         * panel.h|cpp (Panel::Panel): just set our subtree object here.
6755         (Panel::GetSubtreeObject): remove.
6756         
6757         * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
6758         don't notify listeners when creating an auto-created value.
6760         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
6761         only call the property's change callback if we're notifying
6762         listeners.
6764 2009-06-17  Andreia Gaita  <avidigal@novell.com>
6766         * dependencyobject.cpp: (Emit) if types have been destroyed, bail out
6768 2009-06-17  Andreia Gaita  <avidigal@novell.com>
6770         * xaml.cpp: fix typo
6772 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6774         * pipeline.cpp: Remove spurious printfs.
6776 2009-06-16  Andreia Gaita  <avidigal@novell.com>
6778         * deployment.[h|cpp]: Try to dispose types only if there are no
6779         objects pending destruction. If there are, dispose only after
6780         they are all cleared (on DrainUnrefs). This makes sure no properties
6781         are destroyed while objects are still pending.
6782         Added isDead flag, used when doing object tracking to protect against
6783         trying to access type fields when the types have been destroyed
6784         already (when doing ref logging and the final leak report).
6785         Type destruction is slightly delayed when doing object tracking
6786         to allow for the report (otherwise we wouldn't have any type names
6787         on it, and that would be sad)
6789         * type.cpp: fake-clear the properties list by setting it's count to 0
6790         so access by id fails (in case someone wants to access the property
6791         while we're disposing everything).
6792         Delete all the registered types and kill the properties list when
6793         destroying. By this point all properties and objects should be
6794         dead.
6795         * type.h.in: added dispose flag.
6796         * type.h: regenerated
6798 2009-06-16  Andreia Gaita  <avidigal@novell.com>
6800         * uielement.cpp: release all refs on dispose
6802 2009-06-16  Andreia Gaita  <avidigal@novell.com>
6804         * control.[h|cpp]: Dispose() added. Don't be clingy, unref things
6806 2009-06-16  Jeffrey Stedfast  <fejj@novell.com>
6808         * xaml.cpp (value_from_str_with_parser): Handle Type::CHAR
6810 2009-06-16  Larry Ewing  <lewing@novell.com>
6812         * shape.cpp: try to be more careful about clearing SHAPE_EMPTY
6813         when properties change in preparation for fixing the autocreated
6814         property notification stuff
6816 2009-06-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6818         * multiscaleimage.cpp: Add a call to print_stack_trace, looks
6819         like abort () doesn't cause a stack trace.
6821 2009-06-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6823         * mediaplayer.cpp: Remove circular dependency between MediaPlayer
6824         and MediaElement, clear out the element in Dispose and add a null
6825         check before accessing the element. Fixes crash in MS DRT #238.
6827 2009-06-15  Andreia Gaita  <avidigal@novell.com>
6829         * frameworkelement.cpp: delete UIElement nodes when we're done 
6830         with them
6832 2009-06-15  Jeffrey Stedfast  <fejj@novell.com>
6834         * textblock.cpp (SetTextInternal): Get rid of some duplicated
6835         code.
6837 2009-06-15  Alan McGovern  <amcgovern@novell.com>
6839         * uielement.cpp:
6840         * frameworkelement.h:
6841         * frameworkelement.cpp: Give an initial implementation of
6842           FindElementInHostCoordinates (UIElement, Rect) which treats
6843           the rect as a series of points and checks each one until a
6844           hit is found. Allows drt 280 to 
6846 2009-06-15  Jeffrey Stedfast  <fejj@novell.com>
6848         * dependencyobject.cpp (Initialize): Initialize is_hydrated to
6849         false.
6851 2009-06-15  Andreia Gaita  <avidigal@novell.com>
6853         * type.[h|cpp]: Dispose method added, to help separate between clearing
6854         all the DPs and actually deleting the types. For now, just clears the
6855         DPs and doesn't touch the type list.
6856         * deployment.cpp: (Dispose) types are disposed here, for now.
6858 2009-06-15  Andreia Gaita  <avidigal@novell.com>
6860         * dependencyproperty.g.cpp: regenerated
6862 2009-06-15  Jackson Harper  <jackson@ximian.com>
6864         * xaml.cpp: Reorder errors.
6866 2009-06-15  Andreia Gaita  <avidigal@novell.com>
6868         * deployment.cpp: (Reinitialize) AssemblyPartsCollection is reffed
6869         inside SetParts, and since we don't store it anywhere else, drop a
6870         ref after the call
6872 2009-06-15  Andreia Gaita  <avidigal@novell.com>
6874         * dependencyproperty.cpp, animation.[h|cpp]: Fix animation storage so
6875         it removes itself from the property list and gets deleted as soon as
6876         possible, otherwise it will not only leak, but blow up once we start
6877         clearing DPs.
6878         Floating status is gone.
6880 2009-06-15  Andreia Gaita  <avidigal@novell.com>
6882         * value.[h.in|cpp], debug.h, runtime.[h|cpp]: LOG_VALUE macro added,
6883         and some extra debugging output for refcounting.
6884         * value.h: regen
6886 2009-06-15  Alan McGovern  <amcgovern@novell.com>
6888         * frameworkelement.cpp: Objects can be hit as long as their
6889           height as greater than zero and the point is in the fill or
6890           stroke.
6892 2009-06-15  Alan McGovern  <amcgovern@novell.com>
6894         * frameworkelement.cpp: Back that change out as it causes some
6895           regressions in the moon-unit tests.
6897 2009-06-15  Alan McGovern  <amcgovern@novell.com>
6899         * frameworkelement.cpp: We can hit an element in both stroke
6900           and fill.
6902 2009-06-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6904         * playlist.cpp|h: When a media reports that it has been opened
6905         successfully, check if we're the current element, and if not,
6906         don't to anything more until we are the current element. This
6907         fixes an issue with server side playlists where they would
6908         only play the first entry.
6910         * pipeline.cpp|h: Move code out of header.
6912         * pipeline-asf.cpp|h: Inform the MmsPlaylistEntry whenever an
6913         entry has finished.
6915 2009-06-15  Alan McGovern  <amcgovern@novell.com>
6917         * frameworkelement.cpp: We're hittesting the clip, we use
6918           user-space coordinates, so apply the identity matrix to get
6919           the correct result.
6921 2009-06-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6923         * pipeline.h: Expose MediaFrame::IsKeyFrame to C.
6925         * cbinding.cpp|h: Regenerated.
6927 2009-06-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6929         * enums.cpp: Rename MediaElementState -> MediaState. Add 'Paused'
6930         to the enum->str conversion table.
6932 2009-06-15  Alan McGovern  <amcgovern@novell.com>
6934         * mediaplayer.cpp: The MediaPlayer should ref the MediaElement
6935           it's attached to otherwise it can access the element after
6936           the element has been destroyed. Stops 238 crashing.
6938 2009-06-14  Andreia Gaita  <avidigal@novell.com>
6940         * value.[h.in|cpp]: (CreateUnref*) Accept EventObject instead of DPs, since 
6941         there are certain refcounted objects that aren't child classes of
6942         DependencyObject.
6943         Wrap null objects but don't try to unref them.
6944         * value.h: regen
6946 2009-06-14  Andreia Gaita  <avidigal@novell.com>
6948         * debug.[h|cpp]: add max frame arg for finer control when getting 
6949         stack traces
6951 2009-06-12  Jackson Harper  <jackson@ximian.com>
6953         * xaml.cpp|h: import_xmlns now validates the namespace so we can
6954         raise an error if it is invalid.
6956 2009-06-12  Jackson Harper  <jackson@ximian.com>
6958         * xaml.cpp: Don't allow dtds.
6960 2009-06-12  Jackson Harper  <jackson@ximian.com>
6962         * xaml.cpp: SL doesn't handle NaN the same way that strtod does.
6964 2009-06-12  Jackson Harper  <jackson@ximian.com>
6966         * xaml.cpp: Use the value attribute parsing for enum types, this
6967         allows them to have x:Key and x:Name attributes.
6969 2009-06-12  Sebastien Pouliot  <sebastien@ximian.com>
6971         * dependencyproperty.g.cpp: Regenerated
6972         * deployment.h: Update ExternalCallersFromCrossDomainProperty
6973         generator-related properties and add unmanaged accessors
6974         * enumscpp|h: Remove CrossDomainAccessFullAccess value which was
6975         dropped after SL2 beta2
6976         * uri.cpp|h: Add new Uri::SameSiteOfOrigin method
6977         * validators.cpp|h: Add new CrossDomainValidator that ensure we
6978         can set only once Deployment::ExternalCallersFromCrossDomainProperty
6980 2009-06-11  Jackson Harper  <jackson@ximian.com>
6982         * xaml.cpp: Re-enable the force USERCONTROL to be managed thingy.
6983         - Don't try to set managed properties in
6984         dependency_object_add_child.
6985         - Make sure we only create managed property elements for managed
6986         items, even if they are DOBs, otherwise UserControl.Resources gets
6987         a native property info.
6989 2009-06-11  Alan McGovern  <amcgovern@novell.com>
6991         * runtime.h:
6992         * runtime.cpp: The uielements involved in GotFocus/LostFocus
6993           events need to be stored in a queue so that focusing
6994           multiple elements in one tick works correctly.
6996 2009-06-11  Alan McGovern  <amcgovern@novell.com>
6998         * popup.h:
6999         * popup.cpp:
7000         * type-generated.cpp: Make Popup.[Opened|Closed] asynchronous.
7002 2009-06-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7004         * src.mdp: Define HAVE_CONFIG_H to fix build in MD.
7006         * security.c: Fix signed/unsigned mismatch warning.
7008         * error.cpp: Fix warning about not initialize in correct order.
7010 2009-06-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7012         * pipeline.cpp: Fix warning/typo in printf.
7014 2009-06-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7016         * pipeline.cpp: MarkerStream: if there is no callback, store
7017         the markers in a list instead of just dropping them. Fixes an 
7018         issue with our #150 where we'd lose markers since the stream
7019         had processed them before getting a callback.
7021         * mediaelement.cpp: Check if a marker stream has stored markers
7022         (which would have been added before the calback was set).
7024 2009-06-10  Larry Ewing  <lewing@novell.com>
7026         * frameworkelement.cpp (Arrange): measure containers if they
7027         haven't been at least for now.
7029 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7031         * mediaelement.cpp: When we get a stream as the source, set download
7032         progress immediately to 1.0. Also emit DownloadProgressChanged just
7033         after opening the file (to ensure that we emit DownloadProgressChanged
7034         at least once). This makes MS DRT #420 not time out.
7036 2009-06-10  Larry Ewing  <lewing@novell.com>
7038         * frameworkelement.cpp (UpdateLayout): if we find a unloaded
7039         element while walking the tree emit loaded on it now.
7041 2009-06-10  Larry Ewing  <lewing@novell.com>
7043         * frameworkelement.cpp (UpdateLayout): emit SizeChanged in the
7044         place it was supposed to be emitted.
7046 2009-06-10  Jeffrey Stedfast  <fejj@novell.com>
7048         * layout.cpp (Layout): Don't apply font height to the line unless
7049         text has been rendered on that line using that font.
7051 2009-06-10  Jackson Harper  <jackson@ximian.com>
7053         * xaml.cpp|h: Add another param to LookupObject to specify whether
7054         we are looking up a property.  We can't rely on the '.' being in
7055         the name because x:Class names can have namespaces.
7056         - Force USERCONTROL to be looked up in managed so we can
7057         honour x:Class
7058         
7059 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7061         * playlist.cpp|h: PlaylistEntry: Add support for getting duration for
7062         parent entries/playlists too. Also propagate the BufferUnderflow
7063         event.
7065         * pipeline.cpp: Change logic when filling the buffer to request
7066         a frame from the least-buffered stream. This solves an issue with
7067         live streams, we might end up playing audio only when the video
7068         buffer was empty and the audio buffer never full.
7070         * mediaplayer.cpp|h: When determining duration of an entry, check
7071         the entry's parents too for duration. We also need to set
7072         first_live_pts when rendering. This makes MS DRT #129
7073         not time out. Add a BufferUnderflow to inform listeners of any
7074         buffer underflows.
7076         * mediaelement.cpp|h: Handle the BufferUnderflow event, pause
7077         playback and update states accordingly. Remove UpdateProgress,
7078         unused.
7080         * type-generated.cpp: Regenerated.
7082 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7084         * mediaplayer.cpp: use the correct max value for guint64.
7086 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7088         * mediaplayer.cpp|h: Make flags a thread-safe variable, since
7089         we might write to it from an audio thread.
7091 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7093         * playlist.cpp: When checking if an entry has duration, check
7094         the right entry. Fixes a possible crash.
7096 2009-06-10  Alan McGovern  <amcgovern@novell.com>
7098         * multiscaleimage.cpp: The FadeIn storyboard should emit a MotionFinished
7099         event too. Allows drt 293 to complete.
7100         
7101 2009-06-10  Alan McGovern  <amcgovern@novell.com>
7103         * uri.cpp: Uris starting with "\\" need to be recognised as
7104           absolute Uris
7106 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7108         * pipeline-asf.cpp: Remove dead code.
7110 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7112         * runtime.cpp: g_warning -> printf to ease breaking on
7113         g_log.
7115 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7117         * dependencyobject.h: Fix IdMask.
7119 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7121         * pipeline.h|cpp: Rework some of the buffer filling algorithm:
7122         we now never have more than one frame pending (to know which
7123         stream a response comes from - if frame parameter to 
7124         ReportGetFrameCompleted is null, we need to mark the corresponding
7125         stream as ended. Also split the 'stream ended' concept in two:
7126         input ended (the demuxer won't give us more data) and output
7127         ended (the decoder won't give us more data). This fixed
7128         MS DRT #19.
7130         * mp3.h|cpp:
7131         * pipeline-asf.h|cpp: GetFrameAsync: For some error codes we
7132         need to try again later.
7134         * mediaelement.cpp: CheckMarkers: subtract one to not include
7135         both ends of the range, if the marker matches exactly the end
7136         of a range it will get emitted twice otherwise.
7138         * mediaplayer.cpp:
7139         * audio.cpp: Updated according to IMediaStream changes.
7141 2009-06-09  Jeffrey Stedfast  <fejj@novell.com>
7143         * value.cpp (operator==): Fix a crash if comparing a null
7144         FontSource.
7146         * textbox.cpp (EmitSelectionChangedAsync): Only emit the event if
7147         the control is loaded.
7148         (EmitTextChangedAsync): Same.
7150 2009-06-09  Alan McGovern  <amcgovern@novell.com>
7152         * runtime.cpp: The first mouse click will always Focus on the
7153           'default' control. After that we follow the normal focusing
7154           rules and focus on the first eligible control which the
7155           mouse has clicked on.
7157 2009-06-08  Jackson Harper  <jackson@ximian.com>
7159         * xaml.cpp: Add TimeSpan to the primitive types.
7161 2009-06-08  Chris Toshok  <toshok@ximian.com>
7163         * runtime.h (class Surface): add IsZombie.
7165 2009-06-08  Jackson Harper  <jackson@ximian.com>
7167         * error.cpp|h: Add method and fields for line/char positions.
7168         * xaml.cpp: Fill in line/char positions on MoonErrors, this allows
7169         them to get propogated to managed and fixes some of the unit tests.
7171 2009-06-08  Jackson Harper  <jackson@ximian.com>
7173         * xaml.cpp|h: Pass the property xmlns and the element xmlns into
7174         managed when setting properties.
7176 2009-06-08  Alan McGovern  <amcgovern@novell.com>
7178         * runtime.cpp: Un-regress drt 783. We need to raise our cached
7179           focus changed event, then process the focus change itself,
7180           then raise the events for the new change.
7182 2009-06-08  Alan McGovern  <amcgovern@novell.com>
7184         * runtime.h:
7185         * runtime.cpp: If Control.Focus is called from inside a
7186           GotFocus handler, the focus change occurs immediately and
7187           the new GotFocus event is raised as soon as the current
7188           handler is finished.
7190 2009-06-08  Jackson Harper  <jackson@ximian.com>
7192         * xaml.cpp: Bail out after we hit the first attribute parsing
7193         error.
7195 2009-06-08  Jackson Harper  <jackson@ximian.com>
7197         * xaml.cpp: We need to convert path geometry strings from managed.
7199 2009-06-08  Jackson Harper  <jackson@ximian.com>
7201         * xaml.cpp: Little more cleanup now that we don't have to reparse
7202         attributes for x:Class.
7204 2009-06-05  Chris Toshok  <toshok@ximian.com>
7206         * xaml.cpp (XNamespace::SetAttribute): setting x:Class on an
7207         element when we aren't hydrating is illegal.  this has the
7208         pleasant side effect of removing the need to reparse attributes,
7209         so axe that code as well.
7211 2009-06-05  Chris Toshok  <toshok@ximian.com>
7213         * textbox.cpp (TextBoxView::Blink): don't set deployments using
7214         the pattern Deployment::SetCurrent (GetDeployment()), as
7215         GetDeployment() issues a warning if the object's deployment
7216         doesn't match the current one.  use
7217         DependencyObject::SetCurrentDeployment(true) instead.
7219 2009-06-04  Chris Toshok  <toshok@ximian.com>
7221         * runtime.cpp (Surface::EmitError): stop unreffing the args after
7222         the Emit call.  Emit unrefs them for us.
7224 2009-06-05  Jeffrey Stedfast  <fejj@novell.com>
7226         * layout.cpp (layout_word_wrap): Stop processing when we come to
7227         open-punctuation if it isn't the first char in the word as this is
7228         a good break opportunity. Fixes the last remaining issue in
7229         OMTextInline DRT.
7231 2009-06-04  Jackson Harper  <jackson@ximian.com>
7233         * xaml.cpp: Track the owner type of properties so we know whether
7234         or not to go into managed when we are dealing with an attached
7235         property.
7237 2009-06-04  Jeffrey Stedfast  <fejj@novell.com>
7239         * font.cpp (OpenFaceByIndex): If lang is non-null, then accept any
7240         font face that fontconfig can find for the requested language.
7241         (FontFace::LoadFontFace): Get the lang string and pass it along.
7242         (FontFace::Init): initialize a default font hash table for
7243         non-latin languages.
7244         (FontFace::Shutdown): destroy aformentioned table.
7245         (FontFace::LoadDefaultFaceForLang): New helper method to load the
7246         default font face for a given language code.
7247         (FontFace::GetDefault): If the language in the Fc pattern is
7248         'special', use LoadDefaultFaceForLang().
7249         (TextFontDescription::.ctor): Initialize language.
7250         (TextFontDescription::.dtor): Free language.
7251         (TextFontDescription::CreatePattern): Add the FC_LANG attribute if
7252         appropriate.
7253         (TextFontDescription::UnsetFields): Unset the language field.
7254         (TextFontDescription::Merge): Merge the language field.
7255         (TextFontDescription::GetLanguage): New method to get the language.
7256         (TextFontDescription::SetLanguage): New method to set the language.
7257         (TextFontDescription::ToString): Modified a bit.
7259         * textblock.cpp (Inline::Equals): Compare XmlLanguage attributes
7260         as well.
7261         (Inline::UpdateFontDescription): Pass the XmlLanguage along to the
7262         TextFontDescription.
7264 2009-06-04  Jackson Harper  <jackson@ximian.com>
7266         * xaml.cpp: The managed property could be either the property or
7267         the parent.
7269 2009-06-04  Larry Ewing  <lewing@novell.com>
7271         * canvas.cpp (OnCollectionItemChanged): call
7272         InvalidateSubtreePaint on items when their position in the canvas
7273         changes to make sure we clear the old region.  Fixes a couple of
7274         the inkpresenter tests.
7276 2009-06-04  Larry Ewing  <lewing@novell.com>
7278         * shape.cpp (ComputeStretchBounds): reject negative width/height
7279         settings.  Fixes test-shape-negative.xaml
7281 2009-06-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7283         * multiscaleimage.cpp: Add a debugging abort to try to find the
7284         issue with #2014.
7286 2009-06-04  Alan McGovern  <amcgovern@novell.com>
7288         * control.h:
7289         * type-generated.cpp: Actually add IsEnabledChangedEvent
7291 2009-06-04  Alan McGovern  <amcgovern@novell.com>
7293         * control.h: Add IsEnabledChangedEvent to native
7294         
7295         * type-generated.cpp: regen
7297 2009-06-04  Stephane Delcroix  <sdelcroix@novell.com>
7299         * multiscaleimage.cpp: qtree_insert () takes no value. returns
7300         the newly created QTreeNode. qtree_insert_at () renamed to 
7301         qtree_insert_with_value ().
7303 2009-06-03  Alan McGovern  <amcgovern@novell.com>
7305         * cbinding.cpp|h:
7306         * control.cpp|h:
7307         * runtime.cpp:
7308         * uielement.cpp|h: Calling Control.Focus () results in a recursive
7309         check to find a focusable element. A mouse click does a non-recursive
7310         check on the elements which were 'hit'. Fixes two DRTs.
7312 2009-06-03  Jackson Harper  <jackson@ximian.com>
7314         * xaml.cpp: Update some error messages.
7315         - Pass the current namespace in when creating property infos in
7316         managed.
7317         * frameworkelement.h: ActualWidth and ActualHeight are readonly
7318         properties.
7319         * dependencyproperty.g.cpp: regen
7321 2009-06-03  Jeffrey Stedfast  <fejj@novell.com>
7323         * font.cpp (GetCharIndex): Use FcFreeTypeCharIndex() which does a
7324         bit more than FT_Get_Char_index().
7326         * layout.cpp (TextLayout::Layout): Silverlight 2.0 /never/ counts
7327         trailing lwsp towards line width, even if underlined.
7328         (TextLayoutGlyphCluster::Render): Don't underline trailing lwsp if
7329         we are the last glyph cluster on a line.
7330         (GenerateGlyphCluster): Keep track of underline width (calculated
7331         using width up to/including last non-lwsp char).
7332         (word_type_changed): Consider numerics as part of the containing
7333         alphabetic word.
7335 2009-06-03  Jackson Harper  <jackson@ximian.com>
7337         * xaml.cpp|h: We need to look for managed properties on native
7338         types.
7339         - Set the element info for properties to the type of the property.
7340         - Add the ability for properties to force their set to be in
7341         managed even if they come from a native type.
7342         
7343 2009-06-03  Alan McGovern  <amcgovern@novell.com>
7345         * uielement.cpp: Calculate the Transform between two UIElements
7346         correctly.
7348 2009-06-03  Alan McGovern  <amcgovern@novell.com>
7350         * transform.cpp: When instantiating a Matrix from a cairo_matrix_t
7351         we need to populate M11/M12/M21 etc with the correct values.
7353 2009-06-02  Chris Toshok  <toshok@ximian.com>
7355         * xaml.cpp (dependency_object_add_child): XamlElementInfoEnum has
7356         Type::INVALID as its Kind.  This is another facet to the "we need
7357         to register enum types" work that will need to be done.  The
7358         GetKind() method needs to eventually return a property Kind, but
7359         until then we'll just check for Type::INVALID.
7361 2009-06-02  Sebastien Pouliot  <sebastien@ximian.com>
7363         * security.c: Use the PREVIEW_VERSION for the environment variable
7364         used to turn off security (coreclr and verifier)
7366 2009-06-02  Jeffrey Stedfast  <fejj@novell.com>
7368         * textblock.cpp (SetTextInternal): Oops, I must have somehow nuked
7369         the run->SetAutogenerated() logic a while back which is causing
7370         some tests to fail.
7372         * layout.cpp (layout_word_overflow): Removed, Silverlight 2.0 no
7373         longer supports this wrapping model.
7375 2009-06-02  Larry Ewing  <lewing@novell.com>
7377         * uielement.cpp (DoArrange): don't poke at unset values.  Fixes
7378         the crash in #421.
7380 2009-06-02  Jeffrey Stedfast  <fejj@novell.com>
7382         * runtime.cpp (HandleMouseEvent): Fixed compile warning about 'if
7383         (x && y || z)'.
7385 2009-06-02  Alan McGovern  <amcgovern@novell.com>
7387         * collection.cpp: Fix DeepTreeWalker.Step (). It used to step in
7388         reverse logical order.
7390         * control.h
7391         * uielement.cpp|h: Make Focus a virtual method on UIElement.
7392         
7393         * src/runtime.cpp: When the surface receives a mouse down we need to
7394         focus the first control added to the root element if the user has not
7395         clicked on a control or focused one using Control.Focus (). Then any
7396         pending Focus events are raised before the mouse event is processed.
7397         
7398         * src/window-gtk.cpp: Always pass a right mouse button event into the
7399         Surface so that we can fire any pending Focus events to match the
7400         behaviour of Silverlight.
7402 2009-06-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7404         * mms-downloader.cpp: Use strtoull instead of g_ascii_strtoull
7405         since g_ascii_strtoull isn't available in sled.
7407 2009-06-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7409         * mms-downloader.cpp: Use strtoull instead of g_ascii_strtoull
7410         since g_ascii_strtoull isn't available in sled.
7412 2009-06-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7414         * type.h:
7415         * value.h:
7416         * cbinding.h:
7417         * type-generated.cpp: Regenerated.
7419         * downloader.h: Removed streaming_features, not used here anymore.
7421         * utils.cpp
7422         * enums.h:
7423         * playlist.cpp|h:
7424         * pipeline.cpp|h:
7425         * pipeline-asf.cpp|h:
7426         * mms-downloader.cpp|h: Implement support for server side playlists.
7428 2009-06-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7430         * pipeline.cpp: Check queued_requests for null after locking too.
7432 2009-06-02  Alan McGovern  <amcgovern@novell.com>
7434         * runtime.cpp|h: Focus changed events are emitted synchronously right
7435         before a MouseLeftButtonDown or MouseRightButtonDown event.
7437 2009-06-01  Chris Toshok  <toshok@ximian.com>
7439         * type.h.in|cpp (Types::RegisterType): permit a ctor_visible flag
7440         here too so xaml.cpp knows if the type is creatable.
7442         * type.h, cbinding.cpp|h: regen
7444 2009-06-01  Chris Toshok  <toshok@ximian.com>
7446         * xaml.cpp (dependency_object_add_child): only do this check for
7447         non-Type::MANAGED children.
7449 2009-06-01  Chris Toshok  <toshok@ximian.com>
7451         * grid.cpp|h: the row/columndefinitioncollections do not permit
7452         definitions to be inserted more than once.
7453         
7454         * type.h.in (class Type): add IsCtorVisible method and ctor arg.
7456         * type.h, type-generated.cpp: regen.
7458         * xaml.cpp (XamlElementInstanceNative::CreateItem): only create
7459         the instance if the ctor is visible.
7460         (dependency_object_add_child): if the ctor for the child isn't
7461         visible, error out even if it's the same type/kind as the
7462         property.
7464 2009-06-01  Jeffrey Stedfast  <fejj@novell.com>
7466         * deployment.cpp (Dispose): Properly chain up to
7467         DependencyObject::Dispose().
7469         * bitmapimage.cpp (Dispose): Fixed Dispose chaining.
7471         * brush.cpp (ImageBrush::Dispose): Chain up to
7472         TileBrush::Dispose() instead of EventObject::Dispose(). Fixes a
7473         crash in GlyphsManagedDRT
7475         * dependencyobject.cpp (WildcardListener): Uh, this needs to
7476         subclass Listener or we can't go around casting it to a Listener.
7477         (CallbackListener): Same.
7479 2009-06-01  Chris Toshok  <toshok@ximian.com>
7481         * runtime.cpp (Surface::EmitEventOnList): if the list is empty (or
7482         end_idx == 0) return early.
7484         * xaml.cpp (XamlLoader::HydrateFromString): turns out we only mark
7485         the toplevel object as hydrated if parser_info->hydrating == true.
7486         this fixes some managed parsing stuff since XamlReader.Load was
7487         using the same codepath (just passing NULL into
7488         XamlReader::HydrateFromString.)
7490 2009-05-29  Jeffrey Stedfast  <fejj@novell.com>
7492         * application.cpp (GetResourceAsPath): Fixed extra
7493         XXXXXX'age. CreateTempDir() already handles appending the XXXXXX's
7494         for us.
7496 2009-05-29  Alan McGovern  <amcgovern@novell.com>
7498         * control.cpp: When Control.Focus () is called, if the control itself
7499         is not focusable, we need to check it's visual children. The call will
7500         complete successfully if any of the children are focusable, and that
7501         child will become the focused element.
7503 2009-05-29  Alan McGovern  <amcgovern@novell.com>
7505         * control.cpp|h: If a control becomes disabled, it loses mouse capture
7506         and cannot regain it later. If CaptureMouse is called on a disabled
7507         control, the mouse is successfully captured and then immediately
7508         released which fires the LostMouseCapture event.
7510         * runtime.cpp|h: If control A captures the mouse, control B can't steal
7511         the capture or release the capture. Add an explicit ReleaseMouseCapture
7512         function to accomodate this behaviour.
7513         
7514         * uielement.cpp|h: Add an EmitLostMouseCapture event and a CanCaptureMouse
7515         function which signifies whether or not the current UIElement can keep the
7516         mouse captured.
7518 2009-05-28  Jeffrey Stedfast  <fejj@novell.com>
7520         * textbox.h (class PasswordBox): Marked PasswordProperty as
7521         AlwaysChange so that setting this property (even to the same
7522         value) will force a PasswordChanged event to be emitted.
7523         (class TextBox): Marked SelectedTextProperty as AlwaysChange to
7524         fix moon-unit test: SetIdenticalSelectedText()
7526         * textbox.cpp (PasswordBox::OnPropertyChanged): Removed debugging
7527         printfs for utf8->ucs4 conversion errors.
7529 2009-05-28  Jeffrey Stedfast  <fejj@novell.com>
7531         * textbox.h (class TextBox): Added the AlwaysChange metadata to
7532         SelectionStart/Length properties.
7534         * textbox.cpp (TextBoxBase::EmitSelectionChangedAsync): New method
7535         to asynchronously emit SelectionChanged events.
7536         (TextBoxBase::EmitTextChangedAsync): Same for TextChanged events.
7537         (TextBoxBase::SyncAndEmit): Asynchronously emit the events.
7538         (TextBox::EmitSelectionChanged): Simply emit the event now, don't
7539         bother updating state which is now handled elsewhere.
7540         (TextBox::EmitTextChanged): Same.
7541         (TextBox::OnPropertyChanged): When clamping the SelectionLength
7542         value due to a SelectionState property change, block events - we
7543         should only emit a single SelectionChanged event. Also modified to
7544         avoid emitting a TextBoxModelChanged event if the values didn't
7545         actually change. Same for SelectionLength changes.
7547 2009-05-28  Chris Toshok  <toshok@ximian.com>
7549         * value.h.in, value.cpp: add a copy assignment operator.
7551         * value.h: regen.
7553 2009-05-28  Alan McGovern  <amcgovern@novell.com>
7555         * control.cpp: When changing Control.IsEnabled, create the
7556         new value properly.
7558 2009-05-28  Alan McGovern  <amcgovern@novell.com>
7560         * animation.cpp: Fix a double free caused by the line
7561         converted = Value (*value);
7563 2009-05-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7565         * pipeline-ui.cpp: Protect against a null surface.
7567         * mediaelement.cpp: Get the surface from the deployment (which should
7568           always have a surface) instead of the media element's surface
7569           (which is not guaranteed to be set always).
7571 2009-05-28  Alan McGovern  <amcgovern@novell.com>
7573         * control.cpp|h: Control.IsEnabled propagates to its children
7574         when the control is Loaded.
7576 2009-05-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7578         * src.mdp: Updated.
7580 2009-05-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7582         * mms-downloader.cpp: Custom headers must be requested before
7583           opening the downloader.
7585 2009-05-28  Stephane Delcroix  <sdelcroix@novell.com>
7587         * multiscaleimage.h|cpp: replace the hash cache on uri by
7588         a set of qtree, one per subimage. This should speed stuffs
7589         a lot, as uri crating/parsing/hashing was taking up to 20%
7590         of msi time.
7592 2009-05-28  Stephane Delcroix  <sdelcroix@novell.com>
7594         * multiscalesubimage.h: GetId (). Get subimage id, used as
7595         cache index in msi.
7597 2009-05-28  Stephane Delcroix  <sdelcroix@novell.com>
7599         * multiscaleimage.cpp: qtree_new, qtree_lookup, qtree_destroy,
7600         qtree_insert, etc. The Q(uad)Tree data structure is a tree with
7601         4 child nodes, matching the tree-ish pyramid of MSI tiles.
7603 2009-05-28  Andreia Gaita  <avidigal@novel.com>
7605         * timeline.cpp: Stop the clock when you call Stop.
7607 2009-05-27  Jeffrey Stedfast  <fejj@novell.com>
7609         * textbox.cpp (TextBoxBase::SyncAndEmit): Now takes a sync_text
7610         argument which defaults to true. If not set, we avoid calling
7611         SyncText() even if emit has the TEXT_CHANGED bit set.
7612         (TextBox::OnPropertyChanged): Call SyncAndEmit() with sync_text =
7613         false if the value was just set to null.
7615 2009-05-27  Alan McGovern  <amcgovern@novell.com>
7617         * control.h:
7618         * control.cpp: Implement correct propagation of
7619           Control.IsEnabled. Children of disabled controls are
7620           disabled. When their parent is re-enabled, they go back to
7621           their previous state.
7623 2009-05-27  Jeffrey Stedfast  <fejj@novell.com>
7625         Fixes to make sure that an TextChanged and SelectionChanged events
7626         are emitted after each and every change to the Text/Selection
7627         properties occurs.
7629         * textbox.cpp (TextBoxBase::BatchPush): Call at the start of each
7630         batch operation. Prevents SyncAndEmit() from doing anything until
7631         all nested batch operations are completed.
7632         (TextBoxBase::BatchPop): Call at the end of each
7633         batch operation.
7634         (TextBoxBase::*): Instead of using inkeypress, use the more
7635         generic BatchPush()/Pop().
7636         (TextBox::OnPropertyChanged): Call SyncAndEmit() after
7637         Text/Selection changes.
7638         (PasswordBox::OnPropertyChanged): Same.
7640 2009-05-27  Geoff Norton  <gnorton@novell.com>
7642         * runtime.cpp|h: Support the splash progress/completed events.
7643         * cbinding.h:
7644         * type-generated.h: Regen
7646 2009-05-27  Jeffrey Stedfast  <fejj@novell.com>
7648         * textbox.cpp (TextBox::EmitSelectionChanged): Only emit the event
7649         if the TextBox is loaded and unset the emit state.
7650         (TextBox::EmitTextChanged): Same.
7652 2009-05-27  Geoff Norton  <gnorton@novell.com>
7654         * deployment.cpp|h: Allow reinitializing the appdomain if our
7655         Source has changed, or we're switching from the splash screen to
7656         the XAP.
7658 2009-05-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7660         * font.cpp:
7661         * textblock.cpp: Fix warnings.
7663 2009-05-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7665         * debug.h:
7666         * runtime.h|cpp: Add LOG_PIPELINE_EX and parse LOG_ASF correctly.
7668 2009-05-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7670         * textbox.cpp:
7671         * textblock.cpp:
7672         * pipeline.cpp:
7673         * mms-downloader.h:
7674         * mms-downloader.cpp:
7675         * internal-downloader.h:
7676         * file-downloader.h:
7677         * file-downloader.cpp:
7678         * pipeline-asf.cpp: Updated according to downloader API changes.
7680         * downloader.h:
7681         * downloader.cpp: Add support for retrieving response headers
7682           and disable caching. Initialize the downloader interface methods
7683           to their default/dummy methods statically.
7685         * value.h:
7686         * type.h:
7687         * type-generated.cpp:
7688         * cbinding.h:
7689         * cbinding.cpp: Regenerated.
7691 2009-05-27  Alan McGovern  <amcgovern@novell.com>
7693         * resources.cpp: Wait til AddedToCollection returns success
7694         before adding the item to the hashtable.
7696 2009-05-27  Alan McGovern  <amcgovern@novell.com>
7698         * resources.cpp: Propagate the error (if there is one) from
7699         Collection::AddWithError. If there is an error, clear the item
7700         from the hashtable before returning.
7702 2009-05-27  Alan McGovern  <amcgovern@novell.com>
7704         * control.h:
7705         * control.cpp:
7706         * dependencyproperty.g.cpp: Control.Enabled needs to be
7707           created in native code as it's required for hittesting. A
7708           disabled control and its visual children do not receive
7709           mouse events and are not visible to
7710           VisualTreeHelper.FindElementInHostCoordinates.
7712 2009-05-26  Jeffrey Stedfast  <fejj@novell.com>
7714         * glyphs.cpp (OnPropertyChanged): Set the font weight/slant based
7715         on the StyleSimulations value.
7716         (Layout): No longer need to pass along StyleSimulations to
7717         GetGlyphInfo().
7719         * font.cpp (style_weights): Added more style weight name mappings.
7720         (style_slants): Same.
7721         (FontFace::IsItalic): New method to query the font face to see if
7722         it is italic or not.
7723         (FontFace::IsBold): Same idea.
7724         (TextFont::TextFont): Now takes a TextFontDescription so that we
7725         can initialize the new 'simulate' member variable which tells us
7726         if we have to simulate bold or italics due to not finding a
7727         suitable font.
7728         (TextFont::GetGlyphInfo): No longer takes a StyleSimulations
7729         argument. Instead, it now uses the 'simulate' member variable to
7730         pass to FontFace::LoadGlyph().
7731         (TextFontDescription::CreatePattern): Always add Weight and Slant
7732         to the pattern now, even if it is the default font
7733         family. Silverlight 2.0 no longer restricts bold/italics to
7734         non-PUI.
7736 2009-05-26  Chris Toshok  <toshok@ximian.com>
7738         * xaml.cpp (XamlElementInstance::SetName): if it's a
7739         dependencyobject, add it to the container here.
7740         (XamlElementInstance::SetKey): same.
7741         (end_element_handler): only do the AddToParentContainer call here
7742         if the element is not a dependencyobject.
7744 2009-05-25  Jeffrey Stedfast  <fejj@novell.com>
7746         * glyphs.cpp: Changed 'style' to be unsigned.
7748 2009-05-25  Andreia Gaita  <avidigal@novel.com>
7750         * timeline.h|cpp (DispatcherTimer): reset the clock properly when
7751         restarting a dispatcher timer. also, rename Run to Restart.
7752         note: if a timer is not stopped or started during it's tick event,
7753         the time spent on the tick is counted for the next tick on the
7754         Restart method.
7756 2009-05-25  Chris Toshok  <toshok@ximian.com>
7758         * runtime.h|cpp (Surface::EmitError): add an overload so
7759         Application.cs can cause an error to be emitted on the surface.
7761         * cbinding.h|cpp: regen.
7763 2009-05-25  Andreia Gaita  <avidigal@novel.com>
7765         * border.cpp (OnPropertyChanged): Invalidate when background is
7766         updated
7768 2009-05-25  Chris Toshok  <toshok@ximian.com>
7770         * uielement.cpp (UIElement::GetTransformToUIElementWithError):
7771         this method fails incorrectly when you call it on the toplevel
7772         element of a surface.
7774 2009-05-25  Chris Toshok  <toshok@ximian.com>
7776         * xaml.cpp (class XNamespace): name conflicts are pseudo-allowed
7777         for separate resource dictionary name registration.  this isn't
7778         exactly right, since the name *should* be unregistered.
7780 2009-05-25  Chris Toshok  <toshok@ximian.com>
7782         * validators.cpp (Validators::TemplateValidator): this is causing
7783         DRT 438 to throw an exception and subsequently timeout.  its
7784         removal doesn't seem to break anything else, so ifdef it out with
7785         a comment.
7787 2009-05-25  Alan McGovern  <amcgovern@novell.com>
7789         * cbinding.cpp
7790         * cbinding.h: Regen
7792         * dependencyobject.cpp
7793         * dependencyproperty.cpp
7794         * dependencyproperty.g.cpp
7795         * dependencyproperty.h
7796         * uielement.h: There are two types of DependencyProperty. 
7797         Core properties and custom properties. Custom properties
7798         do not set the parent on a DO. This makes the old 
7799         'SetsParent' property redundant, so remove it.
7801 2009-05-22  Chris Toshok  <toshok@ximian.com>
7803         * xaml.cpp (XamlElementInstance::SetName): don't call
7804         AddToContainer here.  in case the element is a value type, and
7805         we're adding it to a RD on a managed type (like StackPanel), the
7806         managed xaml loader will marshal the value type to C# and we'll
7807         lose any further updates to the value typed object by the parser.
7808         That is, if we parse <Color x:Key="foo">#ffffff00</Color>, the
7809         ManagedXamlLoader will see a color with #00000000 as its value, as
7810         the content hasn't been parsed by the time we create the managed
7811         object.
7812         (XamlElementInstance::SetKey): same.
7813         (end_element_handler): call AddToParentContainer here instead.
7815 2009-05-22  Chris Toshok  <toshok@ximian.com>
7817         * dependencyobject.cpp (DependencyObject::OnPropertyChanged): we
7818         were missing the case where HydratedFromXaml elements weren't
7819         updating their parent namescope on name changes, only their
7820         private ones.  Adding the parent namescope fix fixes FaceMonkey's
7821         button grid.
7823 2009-05-22  Jackson Harper  <jackson@ximian.com>
7825         * xaml.h|cpp: New callback for registering elements in
7826         containers, we need to do this earlier on in the parse than
7827         setproperty because other elements could reference these elements
7828         before they've been set.
7829         
7830 2009-05-21  Alan McGovern  <amcgovern@novell.com>
7832         * src/cbinding.cpp
7833         * src/cbinding.h: regen
7834         
7835         * dependencyproperty.c:
7836         * dependencyproperty.h: We can either register a 'core' property or a
7837         'custom' property from managed code. Core properties are part of the
7838         framework itself, custom properties are user-created. Custom properties
7839         don't set the parent or register names in namescopes.
7840         
7841 2009-05-21  Stephane Delcroix  <sdelcroix@novell.com>
7843         * deepzoomimagetilesource.h:
7844         * deepzoomimagetilesource.cpp: IsParsed () function, so we know,
7845         without listening to the event, if a tilesource is ready to be
7846         consumed.
7847         * multiscaleimage.cpp: check dzits.IsParsed() before getting the tile
7848         size from a subimage source.
7850 2009-05-21  Larry Ewing  <lewing@novell.com>
7852         * multiscaleimage.cpp (RenderCollection): reoorder the max level
7853         test so that we only call get_tile_func once in that case.  Speeds
7854         up hardrock and the moment.
7856 2009-05-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7858         * debug.h: Added LOG_ASF.
7860 2009-05-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7862         * runtime.h: Don't use 64 bit constants for the runtime debug enum.
7864 2009-05-21  Alan McGovern  <amcgovern@novell.com>
7866         * src/cbinding.cpp
7867         * src/cbinding.h
7868         * src/dependencyproperty.g.cpp: regen
7869         
7870         * dependencyobject.cpp:
7871         * dependencyproperty.cpp:
7872         * dependencyproperty.h:
7873         * uielement.h: Add the ability to set a DP as non-parenting and
7874         apply it to FrameworkElement::TagProperty
7876 2009-05-20  Larry Ewing  <lewing@novell.com>
7878         * multiscaleimage.cpp (RenderCollection): fix bug introduced in
7879         earlier tile size fix.  Fixes covertocover.
7881 2009-05-20  Larry Ewing  <lewing@novell.com>
7883         * brush.cpp:
7884         * bitmapsource.cpp: when creating a cached surface use the group
7885         target type not the overall target.
7887 2009-05-20  Larry Ewing  <lewing@novell.com>
7889         * frameworkelement.cpp (ComputeActualSize): avoid making a
7890         IsLayoutContainer call here.
7892 2009-05-20  Stephane Delcroix  <sdelcroix@novell.com>
7894         * multiscaleimage.cpp: support different tile sizes for the collection
7895         and the individual images. Fixes "the moment" 2D.
7897 2009-05-20  Larry Ewing  <lewing@novell.com>
7899         * xaml.cpp: update the parser error numbers and strings to match 2.0.
7901 2009-05-20  Larry Ewing  <lewing@novell.com>
7903         * multiscaleimage.cpp: small change to avoid getting the property
7904         so often.
7906 2009-05-20  Alan McGovern  <amcgovern@novell.com>
7908         * type.h:
7909         * value.h:
7910         * value.h.in:
7911         * type-generated.cpp: Register 'float' as a known type
7913 2009-05-20  Chris Toshok  <toshok@ximian.com>
7915         * type.h.in: a few changes.  We no longer pass the kind name to
7916         the ctor, since nothing ever uses it, and the type name is enough.
7917         add both an interface array and array count to the Type ctor, as
7918         well as a is_interface bool.  Lastly, add IsAssignableFrom
7919         overloads.
7921         * dependencyobject.cpp (DependencyObject::IsValueValid): switch
7922         from using a direct comparison on Kinds to using
7923         Type::IsAssignableFrom.  this makes interfaces work.
7925         * cbinding.h, cbinding.cpp, type-generated.cpp, type.h: regen.
7927         * animation.cpp (AnimationClock::HookupStorage): instead of
7928         comparing kinds, use Type::IsAssignableFrom to see if we can
7929         animate the property using a particular timeline type.
7930         (DoubleAnimation::GetCurrentValue,
7931          DoubleAnimation::GetTargetValue, ColorAnimation::GetCurrentValue,
7932          ColorAnimation::GetTargetValue, PointAnimation::GetCurrentValue,
7933          PointAnimation::GetTargetValue): add code to deal with the start
7934          value not being the same type as the animation uses (this can
7935          happen if we're animating an interface property like
7936          IComparable.)  The start values in that case are 0.0, Point(0.0),
7937          and Color(0,0,0,0), respectively.
7939 2009-05-19  Larry Ewing  <lewing@novell.com>
7941         * collection.cpp: avoid some GetDeployment calls in looping cases.
7943 2009-05-19  Larry Ewing  <lewing@novell.com>
7945         * frameworkelement.cpp (UpdateLayout): clear the needs flags when
7946         we restart in case they we're properly cleared before.
7948 2009-05-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7950         * pipeline.cpp|h: Add an ExternalDecoder which takes a list of
7951         function pointers to call whenever the corresponding virtual method
7952         is called.
7954         * enums.h: Move enums from the pipeline here (makes it easier to 
7955         create c bindings for methods taking enums)
7957         * mp3.cpp:
7958         * pipeline-asf.cpp:
7959         * pipeline-ffmpeg.cpp: Update accccording to enum changes.
7961         * codec-version.h.in: Bump ABI version.
7963         * value.h:
7964         * cbinding.cpp|h:
7965         * type-generated.cpp: Regenerated.
7967 2009-05-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7969         * audio.cpp:
7970         * mediaplayer.cpp:
7971         * mp3.cpp:
7972         * pipeline-asf.cpp:
7973         * pipeline-ffmpeg.cpp:
7974         * pipeline.cpp|h: Add accessors for fields in VideoStream,
7975         AudioStream and MediaFrame.
7976         * cbinding.cpp|h: Regenerated.
7978 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7980         * cbinding.cpp|h: Regenerated.
7982 2009-05-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7984         * security.h: Include <mono/metadata/assembly.h>.
7985         Fixes a warning (and the build with MD).
7987 2009-05-19  Alan McGovern  <amcgovern@novell.com>
7989         * animation.cpp: Add some optimisations to ObjectKeyFrames.
7990           Don't call back into managed when the value is null or when
7991           the the value is already of the exact right kind. This will
7992           need to be reviewed once unmanaged code understands
7993           interfaces so we can fastpath interfaces too.
7995 2009-05-18  Larry Ewing  <lewing@novell.com>
7997         * dirty.cpp:
7998         * uielement.cpp:
7999         * frameworkelement.cpp: for the time being use the needs* flags on
8000         surface to skip the UpdateLayout logic when the tree is clean.
8001         Optimize a couple of the property reads inside the deep walk.
8002         
8003         * provider.cpp (GetPropertyValue): rework some more of the checks
8004         to remove some other remaining unneeded checks.
8006 2009-05-18  Chris Toshok  <toshok@ximian.com>
8008         * dependencyproperty.g.cpp (Types::RegisterNativeProperties):
8009         regen.
8011 2009-05-18  Larry Ewing  <lewing@novell.com>
8013         * bitmapsource.cpp (GetSurface): use the content type of the image
8014         when creating the native surface.
8016 2009-05-18  Larry Ewing  <lewing@novell.com>
8018         * provider.cpp (GetPropertyValue): reorder the framework element
8019         property lookup to avoid an extra type inquiry in a potentially
8020         common case.
8022 2009-05-18  Larry Ewing  <lewing@novell.com>
8024         * xaml.cpp (dependency_object_set_attributes): move the types
8025         lookup outside the loop.
8027 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8029         * cbinding.h|cpp: 
8030         * type.h: Regenerated.
8031         
8032         * application.h:
8033         * dependencyobject.h:
8034         * dependencyproperty.h:
8035         * downloader.h:
8036         * easing.h:
8037         * frameworkelement.h:
8038         * pipeline.h:
8039         * tilesource.h:
8040         * type.h: Sprinkle CBindingPrequisite around. Also use ints
8041         instead of Type::Kind values in function pointers.
8042         
8043 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8045         * window-gtk.h: Add a GetNativeWidget which returns a void 
8046         pointer instead of GtkWidget* so that we don't need to include
8047         gtk for the c bindings.
8049 2009-05-18  Alan McGovern  <amcgovern@novell.com>
8051         * contentcontrol.cpp: For contentcontrols, the applied
8052           template is only cleared if the old or new content is a
8053           UIElement (frameworkelement?). The fallback 'template' of a
8054           Grid + TextBlock is also reused every time.
8056 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8058         * utils.h: Use c++-style structs to please the generator.
8060 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8062         * window-gtk.h: Add a GetNativeWidget which returns a void
8063         pointer instead of GtkWidget* so that we don't need to include
8064         gtk for the c bindings.
8065         * cbinding.h|cpp: Updated.
8067 2009-05-16  Chris Toshok  <toshok@ximian.com>
8069         * xaml.cpp (flush_char_data): verbatim mode cdata still needs to
8070         be g_strstrip'ed, but we can't do it until right before we use it,
8071         so we do it here.
8073 2009-05-16  Chris Toshok  <toshok@ximian.com>
8075         * xaml.cpp (XamlElementInfo::SetIsCDataVerbatim,
8076         XamlElementInfo::IsCDataVerbatim): new methods to set and get a
8077         flag telling the cdata_handler to not collapse/remove
8078         whitespace. <clr:String> requires this.
8079         (PrimitiveNamespace::FindElement): for the "String" case, call
8080         XamlElementInfo::SetIsCDataVerbatim(true).
8081         (char_data_handler): if the current element IsCDataVerbatim, just
8082         append the input string and return.
8084 2009-05-16  Alan McGovern  <amcgovern@novell.com>
8086         * security.c: Bump the security env var to _04
8088 2009-05-16  Alan McGovern  <amcgovern@novell.com>
8090         * cbinding.h:
8091         * animation.h:
8092         * cbinding.cpp:
8093         * animation.cpp:
8094         * application.h:
8095         * application.cpp:
8096         * dependencyproperty.g.cpp: Add type converting to
8097           ObjectKeyFrame. The conversion is done during the Resolve
8098           phase. If the type conversion can't be completed an
8099           exception is thrown.
8101 2009-05-15  Chris Toshok  <toshok@ximian.com>
8103         * dependencyobject.cpp (DependencyObject::RegisterAllNamesRootedAt):
8104         in the hydrated case we still need to register our name.
8105         (DependencyObject::ProviderValueChanged): don't swallow the error
8106         when we SetParent on the new_as_dep.
8107         (DependencyObject::SetParent): if we're adding a Hydrated
8108         element (i.e. one that was loaded using LoadComponent), we need to
8109         register its name into the parent namescope.  Also, move the
8110         quickest check to the top so we don't do the family check on every
8111         SetParent call if the before/after parent are the same.  Lastly,
8112         we only register names if the current parent is NULL.  That is, if
8113         a named brush is a property on an element already, and its name is
8114         registered, we don't register it in the new namescope when it's
8115         set as a property on a second element.  Odd but it matches SL
8116         behavior.
8117         (DependencyObject::FindName): no longer walk up the namescope
8118         hierarchy, and don't look up things in the toplevel's namescope
8119         either.
8121         * dependencyobject.h (class DependencyObject): add
8122         SetIsHydratedFromXaml/IsHydratedFromXaml, used by the parser.
8124         * xaml.cpp (XamlLoader::HydrateFromString): flag the resulting
8125         object as being hydrated.
8126         (everywhere): we don't need GetParentNamescope for anything.  we
8127         always use the toplevel namescope of the subtree the parser is
8128         currently parsing.
8130         * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
8131         don't pass a null error to ProviderValueChanged.
8132         
8133 2009-05-15  Larry Ewing  <lewing@novell.com>
8135         * frameworkelement.cpp (UpdateLayout): just warn if the element is
8136         loaded don't skip it for now since it causes regressions in the
8137         control tests.
8139 2009-05-15  Chris Toshok  <toshok@ximian.com>
8141         * timeline.cpp (ParallelTimeline::GetNaturalDurationCore): tiny
8142         change that gets automatic storyboards with zero length children
8143         to have a zero length themselves.
8145 2009-05-15  Larry Ewing  <lewing@novell.com>
8147         * grid.cpp (OnCollectionItemChanged): invalidate on column
8148         definition changes.
8150 2009-05-15  Larry Ewing  <lewing@novell.com>
8152         * debug.h (LOG_LAYOUT): use printf.
8154         * mediaelement.cpp (ArrangeOverride): remove layout debug spew.
8156         * frameworkelement.cpp: reorder the updated_list and clean up some
8157         debug spew.
8159         * uielement.cpp (PostSubtreeLoad): we can't guard against emitting
8160         loaded here since it will break delayed queuing of loaded events
8161         when the tree is modified inside the event handler.  Improves
8163 2009-05-15  Jackson Harper  <jackson@ximian.com>
8165         * xaml.cpp: Use the property element's type instead of parsing out
8166         the name, this fixes setting propertys of imported managed types.
8168 2009-05-15  Alan McGovern  <amcgovern@novell.com>
8170         * animation.h:
8171         * dependencyproperty.g.cpp: The Keyframes property of
8172           ObjectAnimationUsingKeyframes needs to be autogenerated.
8174 2009-05-15  Alan McGovern  <amcgovern@novell.com>
8176         * type-generated.cpp:
8177         * frameworkelement.h: Properly handle exceptions when updating
8178           the source in a 2 way binding. Raise the
8179           BindingValidationError event in the right place.
8181 2009-05-14  Jackson Harper  <jackson@ximian.com>
8183         * xaml.cpp: Pass the item's xmlns when setting unknown attributes.
8185 2009-05-14  Larry Ewing  <lewing@novell.com>
8187         * xaml.cpp (lookup_named_item): make this nonrecursive.
8189 2009-05-14  Jeffrey Stedfast  <fejj@novell.com>
8191         * frameworkelement.cpp (OnPropertyChanged): Do a
8192         FullInvalidate(true) when the Horizontal or Vertical Alignment
8193         properties change.
8195 2009-05-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8197         * dependencyobject.cpp: unref: only try to delete
8198         us if we had a 0 refcount after decrementing refcount.
8199         Also use an atomic fetch when checking if the object
8200         was resurrected.
8202 2009-05-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8204         * dependencyobject.cpp: when printing stack traces
8205         first get all the lines to print, then print them.
8206         This way it's a lot less probable to get other lines
8207         in between when printing stacktraces from multiple threads.
8209 2009-05-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8211         * dependencyobject.cpp: Print typename for object creation
8212         too, now that we don't have to call a virtual method to 
8213         get the type.
8215 2009-05-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8217         * timesource.h: G_PRIORITY_IDLE doesn't exist, use
8218         G_PRIORITY_HIGH_IDLE.
8220 2009-05-13  Chris Toshok  <toshok@ximian.com>
8222         * xaml.cpp (class XamlContextInternal): allow for a parent context
8223         so that we can track context's (and resources) across multiple
8224         template instantiations.
8225         (create_resource_list): just stuff the FrameworkElement on the
8226         list and leave the GetValue(UIElement::Resources) for when we look
8227         up the actual resource.
8228         (end_element_handler): when creating a new XamlContext pass in our
8229         current XamlContext.
8230         (XamlContextInternal::LookupNamedItem): handle both changes (FWE
8231         in our resources list, and parent context chaining.)
8233 2009-05-13  Jackson Harper  <jackson@ximian.com>
8235         * xaml.cpp: We need to dup the top_element since this can be
8236         deleted elsewhere.
8238 2009-05-13  Chris Toshok  <toshok@ximian.com>
8240         * clock.cpp (Clock::UpdateFromParentTime): for instantaneous
8241         clocks (those with Duration=00:00:00) we weren't emitting
8242         completed (or switching to Fill/Stop).
8244 2009-05-13  Jackson Harper  <jackson@ximian.com>
8246         * xaml.h|cpp: use a Value* for top level objects, this lets us get
8247         rid of the gchandle hack in the managed xaml loader for non DOB
8248         top level objects.
8250 2009-05-13  Larry Ewing  <lewing@novell.com>
8252         * canvas.cpp: make IsLayoutContainer nonrecursive using
8253         DeepTreeWalker.
8254         
8255         * frameworkelement.cpp:
8256         * uielement.cpp, uielement.h:
8257         * panel.h: 
8258         * shape.cpp: start reworking the container layout logic to avoid
8259         expensive calls.
8261         * collection.cpp: don't ref elements inside DeepTreeWalker use
8262         UnsafeUIElementNode instead.
8263         
8264         * dirty.cpp (UpdateLayout): remove some dead code.
8266 2009-05-13  Alan McGovern  <amcgovern@novell.com>
8268         * value.cpp: Ensure we don't explode when checking null uris
8270 2009-05-13  Alan McGovern  <amcgovern@novell.com>
8272         * validators.cpp: If StyleProperty has a value and it is
8273           'null', that is allowed to be replaced.
8275 2009-05-12  Chris Toshok  <toshok@ximian.com>
8277         * timeline.cpp (DispatcherTimer::Start): when resetting the clock
8278         we need to make sure to reset the root parent time, or else the
8279         timer will tick immediately when started (if it's previously hit
8280         its tick).
8282 2009-05-12  Larry Ewing  <lewing@novell.com>
8284         * collection.cpp, collection.h: Add a SkipBranch method to avoid
8285         computing walking into the tree when we can.
8287         * frameworkelement.cpp (UpdateLayout): Use the new skip branch
8288         logic in deeptreewalker to avoid invisible elements.
8290 2009-05-12  Larry Ewing  <lewing@novell.com>
8292         * frameworkelement.cpp (UpdateLayout): revert the visibility change
8293         for now.
8295 2009-05-12  Larry Ewing  <lewing@novell.com>
8297         * frameworkelement.cpp (ComputeBounds): make sure the bounds are
8298         the size of the full element, and skip elements based on the
8299         actual visibility setting not the computed one.
8301 2009-05-12  Jeffrey Stedfast  <fejj@novell.com>
8303         * textbox.cpp (InvalidateCursor): New helper method which applies
8304         the absolute transform to the cursor before invalidating the
8305         cursor's region.
8306         (ShowCursor): Use InvalidateCursor().
8307         (HideCursor): Same.
8308         (UpdateCursor): Here too.
8310 2009-05-12  Jeffrey Stedfast  <fejj@novell.com>
8312         * textbox.cpp (OnKeyDown): Need to set the handled flag on the
8313         routed event args in the case where the key event is handled by
8314         GtkIMContext too.
8315         (OnKeyUp): Set the handled flag in both cases here.
8317 2009-05-11  Alan McGovern  <amcgovern@novell.com>
8319         * control.h:
8320         * control.cpp:
8321         * contentcontrol.cpp: Recommit r133738 as it's not causing the
8322           timeouts.
8324 2009-05-09  Andreia Gaita  <avidigal@novell.com>
8326         * uielement.h: Add GenerateJSBinding annotation to 
8327         CaptureMouse, ReleaseMouseCapture and
8328         GetTransformToUIElementWithError (TransformToVisual)
8330 2009-05-09  Chris Toshok  <toshok@ximian.com>
8332         * eventargs.cpp (KeyEventArgs::IsModifier): reverse the sense of
8333         this check so we're buildable on SLED10.
8335 2009-05-08  Jeffrey Stedfast  <fejj@novell.com>
8337         * layout.cpp (layout_word_wrap): If we can't find a suitable place
8338         to wrap in the first time through the loop, make sure to respect
8339         the 'force' state the second time through.
8341         * application.cpp (GetResourceAsPath): Updated.
8343         * utils.cpp (CanonicalizeFilename): Now takes a 'lower' argument
8344         to specify whether the filename should be lowercased as it is
8345         canonicalized.
8346         (ExtractAll): The 'canon' argument has been renamed to 'lower'
8347         which more accurately reflects its purpose. Pass this on to
8348         CanonicalizeFilename().
8350 2009-05-08  Alan McGovern  <amcgovern@novell.com>
8352         * control.h:
8353         * control.cpp:
8354         * contentcontrol.cpp: Revert the changes in r133738 until I
8355           can figure out why the x86 bot doesn't like them. It's
8356           causing the extended controls tests to time out.
8358 2009-05-07  Alan McGovern  <amcgovern@novell.com>
8360         * control.h:
8361         * control.cpp:
8362         * contentcontrol.cpp: If the content property changes, the
8363           Template is cleared if it has already been applied.
8365 2009-05-07  Andreia Gaita  <avidigal@novell.com>
8367         * src/uielement.cpp (GetTransformToUIElementWithError): Don't fail if
8368         the to_element is the top level element.
8370 2009-05-06  Chris Toshok  <toshok@ximian.com>
8372         * xaml.cpp (dependency_object_set_attributes): we can't assume
8373         that a NULL value for @v means it hasn't been set, since {x:Null}
8374         could have been specified.  we need another flag to make it work.
8376 2009-05-06  Jeffrey Stedfast  <fejj@novell.com>
8378         * textbox.cpp (OnPropertyChanged): Guard against calling
8379         ResetIMContext in the middle of some keyboard input.
8381 2009-05-05  Chris Toshok  <toshok@ximian.com>
8383         * collection.cpp (Collection::InsertWithError): we need to make a
8384         further copy because the caller could remove the element in a
8385         handler, which causes us to delete the value (values aren't ref
8386         counted.)
8388 2009-05-05  Jeffrey Stedfast  <fejj@novell.com>
8390         * textbox.cpp (TextBoxBase::Initialize): Set use_preedit() to
8391         false since we're not rendering the preedit strings ourselves.
8392         (TextBoxBase::SetSurface): Update the GtkIMContext's client
8393         GdkWindow.
8394         (TextBoxView::UpdateCursor): Update the GtkIMContext's idea of
8395         where the cursor is at.
8397 2009-05-05  Alan McGovern  <amcgovern@novell.com>
8399         * xaml.cpp: If 'Key' hasn't been set, use 'Name'. Allows
8400           elements to be added to ResourceDictionarys in managed land.
8402 2009-05-05  Jeffrey Stedfast  <fejj@novell.com>
8404         * layout.cpp (Select): Fixed some selection logic.
8406         * textbox.cpp (TextBoxBase::Initialize): Create a new GtkIMContext
8407         and hook up some callbacks. Also init need_im_reset to false.
8408         (TextBoxBase::~TextBoxBase): Kill the IMContext.
8409         (TextBoxBase::OnKeyDown): Filter the event key through the
8410         IMContext. If it handles the key, don't do anything more.
8411         (TextBoxBase::DeleteSurrounding): New callback method for
8412         IMContext stuff.
8413         (TextBoxBase::RetrieveSurrounding): Same.
8414         (TextBoxBase::Commit): New IMContext callback method to commit the
8415         input-method chars into the TextBox.
8416         (TextBoxBase::ResetIMContext): New helper method to reset the
8417         IMContext.
8418         (TextBoxBase::OnFocusOut): Update GtkIMContext focus state.
8419         (TextBoxBase::OnFocusIn): Same.
8420         (TextBoxBase::OnPropertyChanged): If the IsReadOnly property state
8421         changes, update the GtkIMContext state accordingly. Same with the
8422         various Selection states and Text property.
8424         * eventargs.cpp (GetEvent): New method to get access to the
8425         original GdkEventKey event for use with GtkIMContext.
8427 2009-05-05  Alan McGovern  <amcgovern@novell.com>
8429         * geometry.h:
8430         * animation.h:
8431         * dependencyproperty.g.cpp: Back out the default value fix
8432           until the parser can be updated to handle this.
8434 2009-05-05  Alan McGovern  <amcgovern@novell.com>
8436         * geometry.h:
8437         * animation.h:
8438         * dependencyproperty.g.cpp: PathGeometry.Figures and
8439           ObjectAnimationUsingKeyframes.KeyFrames both need to be
8440           autogenerated. This allows them to pass their respective
8441           DefaultValues tests (when those tests are run).
8443 2009-05-05  Alan McGovern  <amcgovern@novell.com>
8445         * template.h: Remove the forward decls for TemplateBinding and
8446           XamlTemplateBinding as they don't exist in unmanaged anymore
8448 2009-05-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8450         * pipeline-ffmpeg.cpp: FfmpegDecoder: Chain Dispose.
8452 2009-05-04  Geoff Norton  <gnorton@novell.com>
8454         * codec-version.h.in: Bump
8455         * pipeline-ui.cpp: Bump because we no longer link libmoon in the codecs
8457 2009-05-04  Jeffrey Stedfast  <fejj@novell.com>
8459         * debug.cpp (Frame::ToString): fixed compile warning.
8461         * uielement.cpp (UpdateLayout): Need to return a bool here, we
8462         can't return void.
8464         * textbox.cpp (Blink): Set the deployment.
8466 2009-05-03  Chris Toshok  <toshok@ximian.com>
8468         * everywhere (NotifyListenersOfPropertyChange): add a MoonError
8469         arg here.
8470         
8471         * xaml.h|.cpp (class XamlContext): add GetTemplateBindingSource so we
8472         can hook up TemplateBindings in managed code.  Also, change all
8473         the loader callback types to take a loader pointer so we can get
8474         the context.
8476         * template.h|.cpp: remove all the lists of bindings, the
8477         two different template binding types (XamlTemplateBinding and
8478         TemplateBinding) and their respective List::Node containers.  all
8479         this is handled in managed land now, where it belongs.
8481         * dependencyproperty.h|.cpp: move
8482         PropertyChangedEventArgs to dependencyproperty.h, and unify the
8483         two types for property change handlers into simply
8484         PropertyChangeHandler.
8486         * dependencyobject.h: remove the PropertyChangedEventArgs struct
8487         from here, it now lives in dependencyproperty.h
8489         * dependencyobject.cpp (class CallbackListener): pass a MoonError
8490         to the callback.
8491         (DependencyObject::ProviderValueChanged): reuse the
8492         PropertyChangedEventArgs since property change callbacks take them
8493         now instead of splitting up the old_value/new_value/property.
8495         * control.cpp (Control::Control, Control::~Control,
8496         Control::ApplyTemplate): remove all reference to the list of
8497         bindings.
8499         * control.h (class Control): remove the list of bindings.
8501         * cbinding.h|.cpp, type-generated.cpp, type.h, value.h:
8502         regen.
8504 2009-05-03  Jeffrey Stedfast  <fejj@novell.com>
8506         * runtime.h (InMainThread): check main_thread_inited.
8508         * runtime.cpp: All flags variables are now 32bit. Split _EX flags
8509         into a second debug_flags_ex. Also added a new bool var to keep
8510         track of whether or not main_thread has been initialized since we
8511         can't necessary compare against NULL.
8513         * debug.h: Updated.
8515 2009-05-03  Jeffrey Stedfast  <fejj@novell.com>
8517         * debug.cpp: #include <unistd.h>
8519         * *.h: Don't #include stdint.h or unistd.h (only cpp files should
8520         include unistd.h).
8522 2009-05-02  Jeffrey Stedfast  <fejj@novell.com>
8524         * downloader.h: 
8525         * runtime.h:
8526         * color.h:
8527         * clock.h:
8528         * geometry.h:
8529         * value.h[.in]: Don't include stdint.h
8531 2009-05-01  Jackson Harper  <jackson@ximian.com>
8533         * xaml.cpp: Handle the {} escape sequence. (Managed code will have to
8534         handle this also).
8536 2009-05-01  Larry Ewing  <lewing@novell.com>
8538         * collection.cpp: rework the sorting invalidation logic so that we
8539         don't do it quite as often.
8541 2009-05-01  Larry Ewing  <lewing@novell.com>
8543         * collection.h:
8544         * collection.cpp: cache the deployment more and add a
8545         VisualTreeWalker interface to help with that.
8547 2009-05-01  Larry Ewing  <lewing@novell.com>
8549         * type.h:
8550         * type.in.h:
8551         * type.cpp: Move the IsSubclassOrSuperclassOf logic into types and
8552         add a static version that handles looking up the deploy for us.
8554         * value.h
8555         * value.h.in
8556         * value.cpp: Make it possible to use a cached deployment when
8557         retriving values using the ::As* methods and calling 
8558         Types::IsSubclassOrSuperclassOf.
8560         * style.cpp: when sealing the style use the cached deployment logic.
8562 2009-05-01  Larry Ewing  <lewing@novell.com>
8563         
8564         * dependencyobject.h:
8565         * xaml.cpp: use types more directly in a few more places to reduce
8566         calls to Deployment::GetCurrent even more.
8568 2009-05-01  Jackson Harper  <jackson@ximian.com>
8570         * validators.cpp|h:
8571         * dependencyobject.cpp|h: Move the name validation check to a
8572         validator (phase one of moving NameProperty to frameworkelement).
8573         * dependencyproperty.g.cpp: regen
8574         
8575 2009-05-01  Jackson Harper  <jackson@ximian.com>
8577         * type.h.in:
8578         * value.h.in: Sync with their .h's
8580 2009-04-30  Jackson Harper  <jackson@ximian.com>
8582         * xaml.cpp: Use the type system for detecting if we should be in
8583         buffering mode, anything that is a FrameworkTemplate
8584         should be buffered.  This fixes custom types that inherit from
8585         DataTemplate not getting buffered properly.
8587 2009-04-30  Jackson Harper  <jackson@ximian.com>
8589         * xaml.cpp: We need to pass the object to GetPropertyName because
8590         non DOB objects can have content properties now.
8592 2009-04-30  Jackson Harper  <jackson@ximian.com>
8594         * xaml.cpp: Don't require a content property name when we are
8595         trying to set a managed content property.  This could be the
8596         content of a managed collection.
8598 2009-04-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8600         * bitmapimage.cpp: Make sure we clean up any previous
8601           downloaders when we create new ones.
8603 2009-04-29  Larry Ewing  <lewing@novell.com>
8605         * frameworkelement.cpp:
8606         * uielement.cpp (DoMeasure): reorder some calls to improve speed
8607         until the new logic lands.
8609 2009-04-29  Larry Ewing  <lewing@novell.com>
8611         * value.h (checked_get_subclass): use IsSubclassOrSuperclassOf to
8612         reduce Deployment::GetCurrent calls.
8614         * type.h:
8615         * type.cpp: add IsSubclassOrSuperclassOf so that we can use it it
8616         for value checking.
8618 2009-04-29  Larry Ewing  <lewing@novell.com>
8620         * xaml.cpp:
8621         * dependencyobject.cpp: reuse types to reduce calls to
8622         Deployment::GetCurrent ().
8624 2009-04-29  Alan McGovern  <alan.mcgovern@gmail.com>
8626         * popup.cpp: Forgot to call the base Dispose method.
8628 2009-04-29  Geoff Norton  <gnorton@novell.com>
8630         * debug.cpp: Not everyone in the world is 32-bit intel.
8632 2009-04-29  Jeffrey Stedfast  <fejj@novell.com>
8634         * textblock.cpp (SetTextInternal): Protect everything from
8635         reentrancy and never replace the autocreated InlineCollection with
8636         a newly allocated one. Instead, Clear() the old one and add the
8637         new Run.
8638         (OnCollectionChanged): If !setvalue, then it means we are updating
8639         stuff elsewhere. Avoid causing reentrancy. Also simplified a bit.
8641 2009-04-29  Andreia Gaita  <avidigal@novell.com>
8643         * dependencyobject.cpp: Add MOONLIGHT_OBJECT_TRACK_VISI for outputting
8644         parseable stacktraces for later visualization
8646 2009-04-29  Andreia Gaita  <avidigal@novell.com>
8648         * debug.[cpp|h]: Add libunwind-backed output for tracing ref/unref
8649         calls in a nice way, for later parsing and visualization.
8651 2009-04-29  Geoff Norton  <gnorton@novell.com>
8653         * pipeline-ui.cpp|h: If the codec download ends prematurely, dlopen
8654         nicely crashes on a incomplete .so (thanks).  As such we're going to 
8655         sha1 the expected binary before blindly installing it to gatekeep
8656         against this.
8658 2009-04-29  Jeffrey Stedfast  <fejj@novell.com>
8660         Fixes some cursor position/selection bugs
8662         * layout.cpp (TextLayoutLine): Initialize a new member variable
8663         'count' to 0.
8664         (Layout): Update line->count (needed for the reworking of
8665         GetCursor) and line->length (which was the case of the bugs)
8666         variables as we go. Switch to doing this for run->length too.
8667         (GetCursor): Reworked a bit to use character indexes to help us
8668         find the correct cursor position rather than using byte offsets
8669         which were more awkward.
8671 2009-04-29  Alan McGovern  <amcgovern@novell.com>
8673         * popup.h:
8674         * popup.cpp: Remove the attached layer correctly when the
8675           surface is being nulled on a Popup. 
8677 2009-04-29  Geoff Norton  <gnorton@novell.com>
8679         * style.cpp:
8680         * provider.cpp: GetIterator returns a ref'd iter, we need to delete
8681         it when we're done to clean it up.
8682         * dependencyproperty.g.cpp: You raise me up.
8683         * deployment.cpp|h: Deployment has a cyclic reference to things 
8684         stored in it (AssemblyParts, NameScope), we need to break this cycle
8685         in our disposer so they can be properly cleand up.
8686         * xaml.cpp: If we create a new collection, and set the collection as
8687         some objects value, it will have a refcount of 2.  We need to unref
8688         the collection once we've handed it off.
8690 2009-04-28  Geoff Norton  <gnorton@novell.com>
8692         * popup.cpp: We cannot access this local value here since its been
8693         cleared in our dispose call.
8695 2009-04-28  Geoff Norton  <gnorton@novell.com>
8697         * deployment.cpp: Now that we properly shut down the clocks and 
8698         media threads, we can finalize the domain here instead of pumping
8699         the GC.
8701 2009-04-28  Chris Toshok  <toshok@ximian.com>
8703         * dirty.cpp (Surface::UpdateLayout): quiet g++ about taking the
8704         address of a temporary.
8706 2009-04-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8708         * audio.h:
8709         * audio.cpp: When looping over playing nodes, don't include
8710           nodes in the Waiting state.
8712         * audio-alsa.cpp: when Played, update the poll list. The state
8713           might not actually have changed if only the Waiting flag was
8714           switched.
8716 2009-04-28  Larry Ewing  <lewing@novell.com>
8718         * uielement.cpp
8719         * uielement.h:
8720         * dirty.cpp:
8721         * runtime.cpp:
8722         * runtime.h:
8723         * frameworkelement.h:
8724         * frameworkelement.cpp: add FrameworkProvider for actual*
8725         values.  Rework layout using the actual* values and add a first
8726         pass at looping layout.
8728         * collection.cpp:
8729         * collection.h: Add a deep tree walker that allows you to walk the
8730         entire tree without recursing.
8731         
8732         * media.cpp:
8733         * media.h:
8734         * shape.cpp:
8735         * shape.h:
8736         * canvas.h:
8737         * canvas.cpp: rework layout logic for the new providers and handle
8738         more of the corner cases.
8740         * textblock.h:
8741         * textblock.cpp: Remove the old Actual* provider since we use the
8742         generic one now.  Go a bit crazy with Invalidations until they can
8743         be reworked.
8745         * eventargs.cpp: stop using IsAnythingDirty.
8746         
8747 2009-04-28  Larry Ewing  <lewing@novell.com>
8749         * dependencyobject.cpp:
8750         * mediaelement.cpp:
8751         * mediaplayer.cpp:
8752         * textbox.cpp:
8753         * timesource.cpp:
8754         * timesource.h: rework the priority of our event queue so that
8755         we end up being more responsive to input and give the browser a
8756         chance to do things like repaint.
8758 2009-04-28  Jackson Harper  <jackson@ximian.com>
8760         * xaml.cpp: Don't allow x:Class on non top level elements.
8762 2009-04-28  Jackson Harper  <jackson@ximian.com>
8764         * dependencyproperty.cpp: When resolving property paths if we
8765         don't have enough info to lookup the correct managed type we just
8766         verify that the current lookup object has the correct type name,
8767         excluding namespace.
8769 2009-04-28  Alan McGovern  <amcgovern@novell.com>
8771         * cbinding.h:
8772         * cbinding.cpp:
8773         * contentcontrol.h:
8774         * contentcontrol.cpp: Add the ability to stop ContentControl
8775           from automatically setting the LogicalParent when a
8776           FrameworkElement is added as the Content.
8778 2009-04-27  Jackson Harper  <jackson@ximian.com>
8780         * value.cpp: property path's have expanded paths that need to be
8781         copied, freed, ect now.
8782         * propertypath.h: Add an expanded path to the property path, this
8783         is a path with managed types marked with namespaces expanded into
8784         full names. So 'moon:MyType' becomes something like
8785         'MoonNamespace.MyType'.
8786         * dependencyproperty.cpp: If an expanded path is available use
8787         that for property path parsing.  Also added support for the ' mark
8788         for escaping full type names (otherwise full names could not have
8789         '.'s). The ' can only be used in expanded paths.
8790         * xaml.cpp: When parsing property paths expand out managed
8791         namespaces if possible.
8793 2009-04-27  Geoff Norton  <gnorton@novell.com>
8795         * value.cpp: Its possible for these pointers to be 0x0 here, so
8796         we need to guard against a invalid dereference causing a SIGSEGV
8797         fixes moon-unit with toggleref on.
8799 2009-04-27  Geoff Norton  <gnorton@novell.com>
8801         * codec-url.h, pipeline-ui.cpp: Update for 1.9p1
8803 2009-04-24  Chris Toshok  <toshok@ximian.com>
8805         It turns out the granularity of overriding in styles is at the
8806         setter level, not the style level.  so if you have a local style
8807         with a setter for Background, it doesn't overwrite the default
8808         style setters for, say, Foreground.  We handle this by having two
8809         style providers, with the local style provider overriding the
8810         default style provider.
8811         
8812         * frameworkelement.cpp (FrameworkElement::FrameworkElement):
8813         initialize both of the style providers (at both LocalStyle and
8814         DefaultStyle levels.)
8815         (FrameworkElement::OnPropertyChanged): call ApplyStyle on the new
8816         style (so that values are converted in managed-land), and seal it
8817         at the local style level.
8818         (FrameworkElement::SetDefaultStyle): same blob here, but seal it
8819         at the default style level.
8821         * dependencyobject.cpp (DependencyObject::Initialize): pass
8822         precedences to the providers in their ctors, and also don't
8823         initialize a style provider here.  This saves us from having a
8824         style provider on anything except frameworkelement subclasses.
8826         * mediaelement.h|.cpp, textbox.cpp, textblock.cpp: add the
8827         precedence ctor arg to property value providers.
8829         * provider.h: provider ctors now take both an object and a
8830         precedence level.  that way they know what precedence level to
8831         notify changes on (this is mostly for the style provider, but it
8832         moves all the precedence level logic to the spot where we create
8833         the provider, not in the provider code itself.)
8835         * provider.cpp: add all the precedence ctor args.
8836         (StylePropertyValueProvider::SealStyle): call ProviderValueChanged
8837         with the precedence we were initialized with.
8838         (AutoCreatePropertyValueProvider::GetPropertyValue): same.
8839         
8840 2009-04-24  Alan McGovern  <amcgovern@novell.com>
8842         * runtime.cpp: When a layer is being detached, don't try to
8843           invalidate its bounds if the active window has already been
8844           torn down. Fixes the case where a popup is open while the
8845           window is being torn down.
8847 2009-04-24  Alan McGovern  <amcgovern@novell.com>
8849         * popup.h:
8850         * popup.cpp: When the popup is detached from the surface, it
8851           should automatically close if it is open.
8853 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
8855         * layout.cpp (Layout): Silverlight 2.0 no longer starts plotting
8856         lwsp after going beyond the width constraint. Fixes the
8857         tests in the far right in MS DRT 206.
8859 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
8861         * font.cpp (GetGlyphInfo): Don't special-case
8862         ZeroWidthNonBreakingSpace anymore. Rely on the font for this
8863         glyph. That seems to be what SL2 does now...
8865         * layout.cpp (layout_word_wrap): Fixed logic for word-joiners and
8866         implemenetd a forced-wrap if we can't find a suitable place to
8867         wrap.
8869 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
8871         * layout.cpp (layout_word_wrap): Don't treat special numeric
8872         punctuation as the start of a numeric word until we see what lays
8873         beyond it.
8875 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
8877         * layout.cpp (layout_word_wrap): Don't ignore Zero-Width spaces
8878         anymore, that was a 1.0-thing and can no longer be used. Also
8879         added support for non-breaking-glue classes as well as rules for
8880         breaking on combining-marks, open-punctuation, contingents,
8881         quotations, prefixes, and words starting with an infix.
8883 2009-04-23  Chris Toshok  <toshok@ximian.com>
8885         * animation.cpp|.h, clock.cpp|.h: remove
8886         OnSurfaceAttach/OnSurfaceDetach.  They're no longer used.
8888 2009-04-23  Chris Toshok  <toshok@ximian.com>
8890         * clock.cpp (ClockGroup::UpdateFromParentTime): cache the current
8891         clock state and use that to tell whether to update the child
8892         clocks on this tick.  Clock::UpdateFromParentTime will change it
8893         out from under us, and child clocks won't get updated the last
8894         time when we switch to Filling or Stopped.
8896 2009-04-23  Chris Toshok  <toshok@ximian.com>
8898         * animation.cpp (Animation::AllocateClock): remove the name
8899         setting from here, since it only works here if the target/property
8900         were set on the animation itself.
8901         (AnimationClock::HookupStorage): and move it here, when we know
8902         both the target and property.
8904         * multiscaleimage.cpp (MultiScaleImage::SetViewportWidth): use
8905         Class::Event instead of instance->Event.  also set the name of the
8906         storyboard in debug mode.
8907         (MultiScaleImage::SetViewportOrigin): same.
8908         (motion_finished): make static.
8910 2009-04-23  Chris Toshok  <toshok@ximian.com>
8912         * clock.cpp (ClockGroup::UpdateFromParentTime): only tick child
8913         clocks (not clockgroups, mind you) if we're active and not paused.
8914         Fixes animations reverting in lutz's deep zoom demo.
8916 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
8918         Lots of fixage for MS DRT #209
8920         * layout.cpp (layout_word_wrap): Fixed for inseparables,
8921         exclamations, ambiguous, and postfix. Also removed the
8922         glyph->index == 0 hack that was there for Silverlight 1.0
8924 2009-04-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8926         * dependencyobject.h:
8927         * dependencyobject.cpp: Add a way to mark allow objects to be
8928           deleted on any thread, not just the main thread.
8930         * pipeline.cpp: MediaClosures can be deleted on any thread.
8932 2009-04-22  Jeffrey Stedfast  <fejj@novell.com>
8934         * layout.cpp (layout_word_wrap): Add a bit more logic for infix
8935         separators. Finishes off MSDRT 208.
8937 2009-04-22  Chris Toshok  <toshok@ximian.com>
8939         * xaml.cpp (value_from_str): permit empty int32's (they're 0).
8940         add comment about empty doubles.
8942 2009-04-22  Chris Toshok  <toshok@ximian.com>
8944         * xaml.cpp (dependency_object_add_child): guard against adding an
8945         empty Value to a resource dictionary.  this happen when you have
8946         no content on a primitive type (<sys:Bool></sys:Bool>) and
8947         value_from_str can't deal with parsing an empty string.
8948         (value_from_str): for non-object/non-string types, we need to
8949         strip leading/trailing whitespace before attempting to parse. this
8950         allows things like: <sys:Bool> true </sys:Bool>
8951         (class XamlElementInstanceValueType): for empty elements the value
8952         will have never been set.  try to set it here using an empty
8953         string.
8955 2009-04-22  Jeffrey Stedfast  <fejj@novell.com>
8957         * textbox.cpp (OnPropertyChanged): Clamp our SelectionStart and
8958         SelectionLength values as they come in. Apparently this is what
8959         Silverlight does too.
8961 2009-04-22  Chris Toshok  <toshok@ximian.com>
8963         * clock.h|cpp (Clock::UpdateFromParentTime): returns a bool now,
8964         with true meaning "i need another tick."
8965         (ClockGroup::UpdateFromParentTime): same.
8967         * timeline.cpp (DispatcherTimer::Start): use the timemanager to
8968         add the clock.
8969         (DispatcherTimer::Run): use the root_clock's parent clock here to
8970         simplify the code a bit.
8971         (DispatcherTimer::~DispatcherTimer): same.
8973         * animation.cpp (Storyboard::BeginWithError): simplify this a bit.
8974         we don't care about groups, just add it to the deployment's
8975         timemanager.
8977         * timemanager.h|cpp (class RootClockGroup): new class to represent
8978         the root clock group created by a time manager to house all other
8979         clocks in a surface.  It has slightly different behavior from a
8980         noprmal clock group, particularly wrt putting the timemanager to
8981         sleep.
8982         (TimeManager::TimeManager): create a RootClockGroup.
8983         (TimeManager::RemoveTickCall): if we're putting the time manager
8984         to sleep, check to see if this was the last tick call, and clear
8985         the flag (and stop the source if the flags are now empty).
8986         (TimeManager::NeedRedraw): now that clock smoothing isn't used,
8987         source->SetTimerFrequency() can't be called with whatever timeout
8988         we like and have it migrrate back to the user-specified time.  so
8989         change 0 to current_time.
8990         (TimeManager::NeedClockTick): same.
8991         (TimeManager::AddTickCall): same.
8992         (TimeManager::SourceTick): remove the #if'ed out version with
8993         clock smoothing, and add back in the stuff to put the time manager
8994         to sleep (currently ifdef'ed out still)
8995         (TimeManager::AddClock): move the logic to delay the root clock
8996         group here out of Storyboard::Begin.  This is because we also want
8997         to do this with DispatcherTimers as well.  Given that there is no
8998         TimeManager::GetRootClock anymore, this is the only api to add
8999         child clocks.
9001 2009-04-22  Jeffrey Stedfast  <fejj@novell.com>
9003         * layout.cpp (utf8_getc): When inptr goes beyond bounds, update
9004         the 'in' ptr to inend.
9006         * utils.cpp (CanonicalizeFilename): Fixed some undefined behavior.
9008 2009-04-22  Rusty Howell  <rhowell@novell.com>
9010         * building libmoonxpi for the FF plugin
9012 2009-04-21  Chris Toshok  <toshok@ximian.com>
9014         * provider.cpp:
9015         (InheritedPropertyValueProvider::GetPropertyValue): gross changes,
9016         but hopefully worth the hotspot reduction.  do fast checks to see
9017         if we're even dealing with a property that's inheritable first.
9018         cache the Types* pointer instead of indirectly fetching it
9019         repeatedly (thanks to calling EO::Is - call Types::IsSubclassOf
9020         directly instead.)
9022 2009-04-21  Jeffrey Stedfast  <fejj@novell.com>
9024         * glyphs.cpp (Layout): Fixed scaling calculation.
9026         * layout.cpp (Layout): Merged LayoutWrapWithOverflow, LayoutNoWrap
9027         and LayoutWrap. The different word-wrapping behaviors are, as
9028         before, handled in different subroutines but the outer loops are
9029         all now merged.
9031 2009-04-20  Jeffrey Stedfast  <fejj@novell.com>
9033         * textblock.cpp (SetTextInternal): Don't break the string into
9034         multiple inlines, Silverlight shoves the entire string into a
9035         single Run no matter what.
9036         (GetTextInternal): Map LineBreaks to the Unicode LineSeparator
9037         character instead of \n to match Silverlight behavior.
9039         * layout.cpp: Fixed various loops and checks to properly handle
9040         any type of unicode line-breaking character.
9042 2009-04-21  Alan McGovern  <amcgovern@novell.com>
9044         * collection.h: HitTestCollection should override
9045           RemovedFromCollection the same way it overrides
9046           AddedToCollection so that items added/removed from the
9047           collection are not reparented.
9049 2009-04-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9051         * deepzoomimagetilesource.cpp: Fix a crash in MS DRT #545.
9053 2009-04-20  Chris Toshok  <toshok@ximian.com>
9055         * clock.cpp (Clock::UpdateFromParentTime): comment the hell out of
9056         this method.  Also, don't multiply to compute localTime only to
9057         turn around and divide to compute normalizedTime.  normalizedTime
9058         is always the factor we multiply natural_duration_timespan by.
9060 2009-04-20  Chris Toshok  <toshok@ximian.com>
9062         * provider.h|cpp (AutoCreators::CreateDefaultFontSize): move the
9063         textblock autocreator here, and stop using TextBlock vs. Control
9064         for the font size names, as both textblock and controls have the
9065         varying font size.  There's also no reason to make them public
9066         anymore.  if you want the font size, just call GetFontSize().
9068         * control.h: FontSize uses an autocreator now, and remove the
9069         #define.
9071         * textbox.cpp (TextBoxBase::Initialize): use GetFontSize() instead
9072         of the #define, and while we're at it just replace the other
9073         defines with calls to the getters too.
9075         * textblock.h|.cpp: remove the autocreator (it's in provider.cpp
9076         now), and the #define for font_size.
9078         * dependencyproperty.g.cpp: regen.
9079         
9080 2009-04-20  Chris Toshok  <toshok@ximian.com>
9082         * security.c (security_enable_coreclr): version the
9083         MOON_DISABLE_SECURITY variable.
9085 2009-04-20  Jeffrey Stedfast  <fejj@novell.com>
9087         * textblock.cpp (TextBlock): Removed cached TextFontDescription
9088         since it's only ever used in 1 place and even then it's a corner
9089         case.
9091 2009-04-20  Chris Toshok  <toshok@ximian.com>
9093         * timeline.cpp: fix up DispatcherTimers after I broke them by
9094         removing the clock event.
9096 2009-04-19  Chris Toshok  <toshok@ximian.com>
9098         * eventargs.h|.cpp: add RenderingEventArgs type.
9100         * timemanager.cpp (TimeManager::SourceTick): the render event
9101         takes a RenderEventArgs, even though the type of the event is
9102         EventHandler.  Goes a long way toward fixing DRT #394 and fixes
9103         DRT #905.
9105         * type.h, type-generated.cpp, value.h, cbinding.h, cbinding.cpp:
9106         regen.
9107         
9108 2009-04-19  Chris Toshok  <toshok@ximian.com>
9110         * shape.cpp|.h (Shape::CreateDefaultStretch): create the proper
9111         default for the various shapes (Fill if a rectangle or ellipse,
9112         None for all other types).  Fixes part of DRT #508.
9113         (Rectangle::Rectangle): don't set the default value as a local
9114         value.
9115         (Ellipse::Ellipse): same.
9117 2009-04-19  Jeffrey Stedfast  <fejj@novell.com>
9119         * textblock.cpp (DefaultFontSize): New function to get the default
9120         font size for a TextBlock (or Inline) based on the Silverlight
9121         context (XAP vs XAML).
9123 2009-04-19  Chris Toshok  <toshok@ximian.com>
9125         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
9126         inlines inherit their Language from the textblock, and textblocks
9127         inherit it from frameworkelements.  part of fix for drt #952.
9129 2009-04-18  Chris Toshok  <toshok@ximian.com>
9131         * clock.h|.cpp: move to the holy grail of a functional clock
9132         setup.  this removes Clock::Tick and related additive machinery
9133         that introduces errors into various calculations.  instead we use
9134         the fact that a child's time can be expressed as a function of its
9135         parent's time.  more calculation per-frame, perhaps, but less
9136         problems wrt inflection points like autoreverse/repeat points.
9137         This removes *tons* of difficult to read and impossible to
9138         understand code, and brings clocks and clockgroups a lot closer.
9139         Docs coming soon to a source file near you.
9141         * timeline.h|.cpp: various clock-related changes.  2 notables are
9142         the fact that all Timelines have a completed event now instead of
9143         just storyboards (because Clocks are also emitting completed now,
9144         not just ClockGroups), and DispatcherTimers now subclass from
9145         Timeline instead of TimelineGroup.  We also use a virtual method
9146         instead of an event handler for ticking DispatcherTimers.
9147         
9148         * animation.h|.cpp: more clock fallout.  Also, rewrite
9149         HookupAnimationsRecurse so that we propagate the current
9150         target/property as parameters instead of requiring a search back
9151         up the tree at ever level.
9153         * timemanager.cpp: more clock rewrite stuff.  Set the surface
9154         clockgroup's duration to forever instead of automatic, and switch
9155         from ->Tick to ->UpdateFromParentTime.
9156         
9157         * multiscaleimage.cpp: track changes to storyboard api (basically
9158         i removed the non-WithError methods.. maybe i should put them
9159         back?)
9161         * cbinding.h|.cpp, type-generated.cpp: regen.
9163 2009-04-17  Jeffrey Stedfast  <fejj@novell.com>
9165         * glyphs.cpp (Layout): Pass our StyleSimulations along to
9166         GetGlyphInfo() so that we can simulate Bold or Italics as the user
9167         has requested.
9169         * font.cpp (FontFace::LoadGlyph): Now takes a StyleSimulations
9170         argument (which defaults to None). Adjust the glyph for Bold
9171         and/or Italics if requested.
9172         (TextFont::GetGlyphInfo): Now takes a StyleSimulations
9173         argument (which defaults to None). When looking up the glyph in
9174         the cache, make sure that the simulations also match. When loading
9175         a new glyph, pass along the StyleSimulations.
9177 2009-04-17  Larry Ewing  <lewing@novell.com>
9179         * runtime.cpp (Surface): remove references to removed variable.
9181 2009-04-17  Chris Toshok  <toshok@ximian.com>
9183         * deployment.h|.cpp (class Deployment): add IsLoadedFromXap
9184         getter/setter here, and move XapLocation from surface to here.
9186         * runtime.h|.cpp: remove SetXapLocation/GetXapLocation.
9188         * downloader.cpp: use Deployment::GetXapLocation
9190         * cbinding.h|chinding.cpp: regen.
9192 2009-04-17  Jeffrey Stedfast  <fejj@novell.com>
9194         * font.h: Changed the glyph cache size to be #defined rather than
9195         hard-coded everywhere.
9197 2009-04-17  Jackson Harper  <jackson@ximian.com>
9199         * xaml.cpp: When we are setting the Name property use the same
9200         trick we are using for setting the x:Name property.  Grabbing the
9201         parent element and making sure we get registered in that
9202         namescope.  This isn't perfect, but should fix 95% of the managed
9203         namescope problems.
9205 2009-04-17  Alan McGovern  <amcgovern@novell.com>
9207         * popup.h:
9208         * type-generated.cpp: Correctly mark Popup.Child as its
9209           Content property.
9211 2009-04-17  Geoff Norton  <gnorton@novell.com>
9213         * media.cpp: Ensure that we invalidate the image if the
9214         BitmapImage has already been parsed (like from a SetSource call)
9216 2009-04-17  Geoff Norton  <gnorton@novell.com>
9218         * error.cpp: Image errors use the code 4001, fixes #97
9220 2009-04-16  Jeffrey Stedfast  <fejj@novell.com>
9222         * glyphs.cpp (Layout): Don't bail if we have something other than
9223         StyleSimulationsNone.
9225         * enums.h (enum StyleSimulations): Added Bold, Italic, and
9226         BoldItalic.
9228 2009-04-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9230         * pipeline.cpp: IMediaDemuxer::SetStreams: ref the streams. We
9231           already unref them upon destruction.
9233 2009-04-16  Jeffrey Stedfast  <fejj@novell.com>
9235         * textblock.cpp (DownloaderComplete): Only invalidate/etc if any
9236         of our inlines' fonts have changed - if they all override the font
9237         family, then there's no need to redraw.
9239 2009-04-16  Jackson Harper  <jackson@ximian.com>
9241         * dependencyobject.cpp: Unregister the old name when we set an
9242         objects name.
9244 2009-04-16  Sebastien Pouliot  <sebastien@ximian.com>
9246         * openfile.cpp|h: Add a dialog requester to increase isolated
9247         storage quota. Add function to recursively compute the total size
9248         of a directory, which is used to check quota in IS.
9250 2009-04-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9252         * deployment.cpp: mono_gc_invoke_finalizers may cause the
9253           current appdomain to change, so restore it afterwards. Fixes
9254           a rare, random crash upon shutdown.
9256 2009-04-15  Jeffrey Stedfast  <fejj@novell.com>
9258         * textbox.cpp (TextBoxBase::DownloaderComplete): Instead of
9259         invalidating the TextBoxBase, we need to emit an event to let the
9260         TextBoxView know our font has changed.
9261         (TextBoxView::OnModelChanged): Reset state on the layout when the
9262         font changes (since it has no way of knowing that the font has
9263         changed otherwise).
9265         * textblock.cpp (Inline::UpdateFontDescription): Return true if
9266         the font has changed or false otherwise.
9267         (TextBlock::UpdateFontDescriptions): If any of the fonts changed,
9268         return true and reset the state on the TextLayout.
9270         * font.cpp (TextFontDescription::Set*): Return true if the font
9271         has changed or false otherwise.
9273         * layout.cpp (TextLayout::ResetState): New method to reset the
9274         state of a TextLayout. Normally the state only gets reset if a
9275         layout property chanegs, but sometimes it is necessary to notify
9276         the TextLayout engine of a state change in one of the
9277         TextLayoutAttributes.
9279 2009-04-15  Jeffrey Stedfast  <fejj@novell.com>
9281         * textbox.cpp (TextBoxBase::SetFontResource): If the font isn't a
9282         xap resource, download it from the web.
9284         * textblock.cpp (Inline::SetFontResource): If the font isn't a xap
9285         resource, download it from the web.
9287 2009-04-15  Larry Ewing  <lewing@novell.com>
9289         * dirty.cpp (UpdateLayout): a quick hack to get popups sizing
9290         correctly.
9292 2009-04-15  Jeffrey Stedfast  <fejj@novell.com>
9294         * layout.cpp (layout_word_wrap): The HANGUL enums weren't added to
9295         glib until 2.10, so so guard to allow building on systems with
9296         older versions of glib. Also merged BREAK_NEXT_LINE and
9297         BREAK_UNKNOWN into the BREAK_AFTER group.
9299 2009-04-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9301         * runtime.cpp: Don't support versions of the type "1.0..0".
9302           Fixes a test case in MS DRT #21.
9304 2009-04-15  Stephane Delcroix  <sdelcroix@novell.com>
9306         * downloader.cpp (Downloader::Open): fix the argument passed to
9307         validate_policy
9309 2009-04-15  Alan McGovern  <amcgovern@novell.com>
9311         * utils.cpp: We need to increment the pointer otherwise we
9312           loop forever.
9314 2009-04-15  Stephane Delcroix  <sdelcroix@novell.com>
9316         * downloader.cpp (Downloader::Open): make the relative uris relative to
9317         the xaplocation
9318         (check_redirection_policy, Downloader::Write): don't use
9319         uri->originalString, but uri->ToString ()
9321 2009-04-15  Stephane Delcroix  <sdelcroix@novell.com>
9323         * runtime.h|cpp (Surface): xap_location, Get() and Set()
9325 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
9327         * layout.cpp (layout_word_wrap): Fixed word-break logic for
9328         ambiguous break-types. Fixes second column of text in test #208.
9330 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
9332         * layout.cpp (layout_word_wrap): Fixed word-breaking around a
9333         BREAK_BEFORE_AND_AFTER. Fixes one of the test cases in test #209.
9335 2009-04-14  Stephane Delcroix  <sdelcroix@novell.com>
9337         * deepzoomimagetilesource.h: expose IsDownloaded()
9338         * multiscaleimage.cpp: download the tile source for the subimage before
9339         downloading the un-shared tiles.
9341 2009-04-14  Andreia Gaita  <avidigal@novell.com>
9343         * pipeline-ffmpeg.cpp: check avcodec_decode_audio2 return value: 0
9344         indicates frame could not be decoded. fixes uninitialized buffer
9345         size leading to huge memory allocation and abort. kudos to
9346         Alp Toker for spotting this.
9348 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
9350         * layout.cpp (layout_word_wrap): Added support for Hangul and
9351         ideographic word breaking. Improves test #208 quite a bit.
9353 2009-04-14  Larry Ewing  <lewing@novell.com>
9355         * control.h:
9356         * control.cpp (InsideObject): always return fals controls don't
9357         handle the testing.  Fixes MSI navigation in
9358         http://playboy.covertocover.com/
9359         
9360         * panel.h:
9361         * panel.cpp: remove HitTest stubs.
9363 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
9365         * layout.cpp (layout_word_wrap): Added logic to for breaking after
9366         more break-types including BREAK_AFTER, BREAK_HYPHEN, and
9367         BREAK_IDEOGRAPHIC in an effort to closer match Silverlight 2.0's
9368         behavior on test #206.
9370 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
9372         * layout.cpp (utf8_strlen): Removed, this has never been sued.
9373         (utf8_find_last_word): Removed. No longer needed - Silverlight 2.0
9374         no longer has this wrapping bug.
9375         (layout_word_wrap): Don't need to check if we're at the last word
9376         in the textblock because Silverlight 2.0 fixed this bug.
9377         (FindLastWord): Removed, no longer needed.
9379 2009-04-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9381         * pipeline.h:
9382         * playlist.cpp: Don't try to open the media if an error has
9383           been reported.
9385 2009-04-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9387         * mediaelement.h:
9388         * mediaplayer.cpp:
9389         * mediaelement.cpp: Check for markers with a timeout instead
9390           of after rendering a frame, this way markers also work with
9391           audio-only media.
9393 2009-04-14  Jackson Harper  <jackson@ximian.com>
9395         * dependencyobject.cpp|h: Add a return value for SetName with
9396         namescope, returns false if there is an error.
9397         * xaml.cpp: Check the return value of SetName
9399 2009-04-14  Stephane Delcroix  <sdelcroix@novell.com>
9401         * uri.cpp (Combine): strip leading ../ as we're already cutting the
9402         filename off the base uri
9404 2009-04-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9406         * type.h:
9407         * size.h:
9408         * xaml.h:
9409         * utils.h:
9410         * value.h:
9411         * stylus.h:
9412         * value.cpp:
9413         * type.h.in:
9414         * runtime.h:
9415         * value.h.in:
9416         * openfile.h:
9417         * transform.h:
9418         * tilesource.h:
9419         * downloader.h:
9420         * timemanager.h:
9421         * downloader.cpp:
9422         * timemanager.cpp: Added @GeneratePInvoke to all methods used
9423           in managed code. For C++ methods also generate the
9424           corresponding C method.
9426         * cbinding.h:
9427         * cbinding.cpp: Regenerated.
9429 2009-04-13  Jeffrey Stedfast  <fejj@novell.com>
9431         * textblock.cpp (SetFontResource): If we cannot get the resource
9432         from within the xap, then we need to spawn a downloader to fetch
9433         it from the web.
9435 2009-04-13  Geoff Norton  <gnorton@novell.com>
9437         * deployment.cpp: Turn on MONO_IOMAP=case until we fix the iomapping
9438         centrally.
9440 2009-04-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9442         * src.mdp: Updated.
9444 2009-04-12  Jeffrey Stedfast  <fejj@novell.com>
9446         * debug.cpp (hexdump_addr): New function to help toshok print a
9447         hexdump of memory from gdb.
9449         * textbox.cpp (TextBoxBase::SetFontResource): Set the font
9450         filename/guid based on the resource provided.
9451         (TextBoxBase::OnPropertyChanged): If a font resource is named in
9452         the FontFamily property, then call SetFontResource() with the
9453         provided resource name.
9454         (TextBox::ClearFontSource): Clear the FontSourceProperty.
9455         (PasswordBox::ClearFontSource): Same.
9457 2009-04-11  Chris Toshok  <toshok@ximian.com>
9459         * provider.h|.cpp, dependencyobject.cpp: get rid of
9460         PropertyPrecedence_Animation and the associated provider.  in SL,
9461         animations are considered local values (and a choir of angels was
9462         heard moaning as they fell on their swords).
9464 2009-04-11  Jeffrey Stedfast  <fejj@novell.com>
9466         * font.cpp: Don't reuse FT_Open_Args. Changed things to pass
9467         FT_Streams and setup their own FT_Open_Args instead. This solves
9468         the crasher problems in the silverlight2 test harness.
9470         * textblock.cpp (Inline::SetFontResource): New method to update
9471         our FontFilenameProperty and FontGUIDProperties.
9472         (Inline::OnPropertyChanged): Handle FontFamilyProperty changes
9473         that reference a resource.
9474         (Inline::UpdateFontDescription): Parse out the family name from
9475         the FontFamily::Source.
9477 2009-04-11  Jeffrey Stedfast  <fejj@novell.com>
9479         * textblock.cpp (TextBlock::SetFontResource): Renamed from
9480         SetFontSource() to be more accurate.
9482         * font.cpp (OpenFaceByIndex): Don't leave any FT_Faces open on
9483         fail. This is probably what was causing the crash on
9484         font_shutdown().
9486         * glyphs.cpp (SetFontResource): Now takes a Uri argument rather
9487         than a string and returns a bool argument hinting at whether we
9488         succeeded or not.
9489         (OnPropertyChanged): Only fall back on creating a downloader for
9490         the font if the uri is not a resource.
9492 2009-04-11  Jackson Harper  <jackson@ximian.com>
9494         * xaml.cpp: If we are hydrating we don't need the extra ref.
9496 2009-04-10  Jeffrey Stedfast  <fejj@novell.com>
9498         * uri.cpp (ToString): Made to accept const Uri*
9500         * textblock.cpp (SetFontSource): Parse the resource string into a
9501         Uri and pass that along to GetResourceAsPath().
9503         * glyphs.cpp (SetFontResource): Parse the resource string into a
9504         Uri and pass that along to GetResourceAsPath().
9506         * bitmapimage.cpp (UriSourceChanged): Back to passing a Uri for
9507         GetResource().
9509         * application.cpp (GetResource): Oops, this really does need a Uri
9510         argument.
9511         (GetResourceAsPath): Use a Uri here too, and convert any ';' into
9512         a '/'.
9514 2009-04-10  Jackson Harper  <jackson@ximian.com>
9516         * xaml.cpp: Let the XamlElementInstances cleanup their Values.
9518 2009-04-10  Chris Toshok  <toshok@ximian.com>
9520         * timemanager.cpp (TimeManager::SourceTick): just for kicks
9521         completely rip out the clock smoothing code, and also emit all
9522         tick calls (don't worry about how much time we're taking in them).
9523         Lastly, emit tick calls *before* rendering.  we need to do this or
9524         else the Loaded event won't be posted before we draw (when we
9525         delay the loaded event, that is.) which leads to a great many
9526         VisualTreeWalker warnings, since Panel::OnLoaded adds the dirty
9527         flag for the initial children z-sorting.
9529         * collection.cpp (VisualTreeWalker::Step): add a special case for
9530         collection::count == index == 1, which is what we end up with on
9531         uielement's with a subobject.  it won't be a collection child of a
9532         panel, so it'll never be z-sorted, but since it's only 1 element
9533         it doesn't need to be anyway.
9535         * canvas.h|.cpp: move OnLoaded, ElementAdded, and ElementRemoved
9536         to Panel.  Also, move the ZIndex OnCollectionItemChanged code into
9537         panel as well.
9539         * panel.h|.cpp: remove a couple of unused
9540         decls (ChildAdded/ChildRemoved) and add the stuff we moved out of
9541         canvas.h|cpp here.
9543 2009-04-10  Jeffrey Stedfast  <fejj@novell.com>
9545         * font.cpp (OpenFaceByIndex): New helper function split out from
9546         FontFace::LoadFontFace() which performs the FT_Open_Face() and
9547         family name matching.
9548         (OpenFaceByFamily): If we don't have an index, this function opens
9549         all faces in the file and finds a matching font face based on
9550         family.
9551         (LoadFontFace): Use our new helper functions.
9553         * textblock.cpp (SetFontSource): On fail, set the font filename to
9554         NULL and call UpdateFontDescriptions() no matter what.
9556         * font.cpp (UnsetFields): Allow unsetting of the font index.
9557         (Merge): Merge the index separately.
9558         (SetIndex): Set/unset the FontMaskIndex bit.
9560         * glyphs.cpp (SetFontResource): New internal method to set a font
9561         resource stream.
9562         (OnPropertyChanged): Handle non-absolute Uris as resource streams.
9564 2009-04-10  Larry Ewing  <lewing@novell.com>
9566         * multiscaleimage.cpp: add a translucency check before calling
9567         cairo_paint_with_alpha.
9569 2009-04-10  Jeffrey Stedfast  <fejj@novell.com>a
9571         * textblock.cpp (SetFontSource): New method for setting a font
9572         source via a resource name.
9573         (OnPropertyChanged): When the FontFamily changes, parse out the
9574         resource name (if it exists) and set that as our font source.
9576         * bitmapimage.cpp (UriSourceChanged): Updated.
9578         * xap.cpp (Unpack): Use the new ExtractAll() convenience function.
9580         * application.cpp (GetResourceAsPath): New helper method to get a
9581         specified resource as a filesystem path.
9582         (GetResource): Now takes a resource name rather than a Uri.
9584         * utils.cpp (CanonicalizeFilename): New function to canonicalize a
9585         filename.
9586         (ExtractAll): New helper function to extract all files from a zip
9587         archive into a specified directory.
9589 2009-04-10  Jeffrey Stedfast  <fejj@novell.com>
9591         * textblock.cpp (CleanupDownloader): New helper method.
9592         (SetFontSource): Use CleanupDownloader() and also clear the
9593         FontSourceProperty since this will override that source.
9594         (OnPropertyChanged): Parse the FontFamily name.
9595         (DownloaderComplete): Use SetValue() correctly.
9597         * glyphs.cpp (CleanupDownloader): Remove the CompletedEvent
9598         handler.
9600 2009-04-10  Sebastien Pouliot  <sebastien@ximian.com>
9602         * security.c: Move #if MONO_ENABLE_CORECLR_SECURITY to remove
9603         all coreclr-related code from being compiled.
9605 2009-04-09  Chris Toshok  <toshok@ximian.com>
9607         * uielement.cpp (UIElement::WalkTreeForLoaded): be more
9608         descriptive with the "attempting to use a null application" thing.
9610         * xaml.cpp (xaml_is_valid_event_name): sort these, and add a bunch
9611         that were missing.  we need to make this less fragile, and have it
9612         use the event strings in type-generated.cpp.
9613         (end_element_handler): add more text to the line about attempting
9614         to use a null application, so we can differentiate it from the
9615         other one.
9617         * timeline.h (class Timeline): BeginTime has, in fact, a default
9618         value (of 0.)
9620         * dependencyproperty.g.cpp: regen.
9622 2009-04-09  Jeffrey Stedfast  <fejj@novell.com>
9624         * textblock.h, textbox.h: Added FontSourceProperty.
9626         * value.cpp|h: Added FontSource support.
9628         * fontsource.h: Added.
9630 2009-04-09  Sebastien Pouliot  <sebastien@ximian.com>
9632         * cbinding.cpp|h: regenerated
9633         * openfile.cpp|h: Add save_file_dialog_show to implement
9634         SaveFileDialog (SL3) and refactor the filter code to be shared.
9635         * runtime.cpp|h: Rename can_full_screen to user_initiated_event
9636         since we need it for SaveFileDialog (and elsewhere too). Rename
9637         setter and add a getter with a c binding.
9639 2009-04-09  Jackson Harper  <jackson@ximian.com>
9641         * xaml.cpp|h: We need to create Value*'s from strings/files now
9642         instead of just creating dependencyobjects, it's legal to create a
9643         managed object from xaml that isn't a DOB.
9644         - Add a couple utility methods for creating just DOBs from
9645         strings/files.
9646         * cbinding.cpp: regen
9647         * xap.cpp:
9648         * template.cpp:
9649         * runtime.cpp: Updated method names
9650         
9651 2009-04-08  Geoff Norton  <gnorton@novell.com>
9653         * downloader.cpp: Ensure that when someone subscribes to NotifySize
9654         they actually will get notified of the size.
9656 2009-04-08  Geoff Norton  <gnorton@novell.com>
9658         * glyphs.cpp:  Ensure we dont pass an unitialized pointer to 
9659         TextFontDescription::SetFilename
9661 2009-04-08  Andreia Gaita  <avidigal@novell.com>
9663         * dependencyobject.cpp: enable toggleref
9664         conditionally (MOONLIGHT_ENABLE_TOGGLEREF)
9666 2009-04-08  Jeffrey Stedfast  <fejj@novell.com>
9668         * font.cpp (IndexFontSubdirectory): Don't try deobfuscating if it
9669         isn't a .odttf file.
9671 2009-04-08  Geoff Norton  <gnorton@novell.com>
9673         * pipeline.cpp: Ensure we dont try to decode if our stream has been
9674         disposed.
9676 2009-04-08  Jeffrey Stedfast  <fejj@novell.com>
9678         * downloader.cpp (validate_policy): Don't delete source here, we
9679         don't own it.
9681         * glyphs.cpp (DownloaderComplete): Only bother setting a guid if
9682         the file extension is .odttf. Also no need to stat() anymore.
9684         * textblock.cpp (DownloaderComplete): Same.
9686 2009-04-08  Jeffrey Stedfast  <fejj@novell.com>
9688         * provider.cpp (InheritedPropertyValueProvider): We need to
9689         inherit FontGUIDProperty for Inlines as well.
9691         * file-downloader.cpp|h: Cleaned up a bit, no longer needs font
9692         deobfuscation features.
9694         * glyphs.cpp (DownloaderCompleted): Don't need to call
9695         downloader_deobfuscate_font() anymore. We only need to get the
9696         GUID to set on the FontDescription.
9698         * textblock.cpp (DownloaderCompleted): Same.
9700         * font.cpp: Implemented our own FT_Stream that can handle reading
9701         obfuscated fonts directly without the need to rewrite the file
9702         first.
9703         (TextFontDescription): Now has a GUID property for Glyphs and
9704         TextBlock to use.
9706         * downloader.cpp: Fixed to autogenerate the accessors and changed
9707         the UriProperty type to a Uri to be consistent with other classes.
9708         (GetDownloadedFilename): Work around the Mozilla 64k bug here too.
9710 2009-04-08  Geoff Norton  <gnorton@novell.com>
9712         * deployment.cpp: Ensure that we restore to the current MonoDomain
9713         after creating a new deployment.
9715 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
9717         * multiscaleimage.h|cpp: Set IsDownloading property according to the
9718         status of the downloaders
9720 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
9722         * multiscaleimage.cpp (MultiScaleImage::RenderSingle, 
9723         MultiScaleImage::RenderCollection): do not start any new download if
9724         AllowDownlodingProperty is false.
9726 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
9728         * multiscaleimage.h|cpp: impplement missing LogicalToElementPoint
9730 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
9732         * multiscaleimage.cpp: if downloading a tile fail, cache a NULL surface
9733         and move on
9735 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
9737         * multiscaleimage.cpp: some additional debug info printing the state of
9738         each BitmapImage
9740 2009-04-07  Chris Toshok  <toshok@ximian.com>
9742         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
9743         almost had it that last time.  In the case where the parent has
9744         that property, use GetValue on it instead of ReadLocalValue, which
9745         won't pick up styles.
9747 2009-04-07  Chris Toshok  <toshok@ximian.com>
9749         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
9750         rewrite this substantially to make it work correctly and be more
9751         efficient.  we no longer look up the hierarchy for properties
9752         which aren't inheritable, and we only loop up the visual tree, not
9753         the logical one (since that has issues when it comes to
9754         templates).
9755         (get_parent): nuke, it was a broken way to deal with parents.
9757 2009-04-07  Chris Toshok  <toshok@ximian.com>
9759         * uielement.h|.cpp (class UIElement): scrap that ill-advised
9760         AutoCreator crap.  it's much simpler.  the default is actually
9761         NULL, and the managed layer does the stupid mapping from NULL to
9762         new MatrixTransform.
9764 2009-04-07  Chris Toshok  <toshok@ximian.com>
9766         * uielement.h|.cpp (class UIElement): use an AutoCreator for
9767         RenderTransformProperty.
9769         * dependencyproperty.g.cpp: regen.
9770         
9771 2009-04-07  Larry Ewing  <lewing@novell.com>
9773         * grid.cpp (MeasureOverride): use the star fraction of the
9774         available size when measuring.
9776         * border.cpp: restrict the return value to available size.
9778 2009-04-07  Geoff Norton  <gnorton@novell.com>
9780         * pipeline.cpp|h: Ensure that we can post ReportSeekCompleted back
9781         to the media thread from any thread.  Fixes seeking on SmoothHD
9782         sites.
9784 2009-04-07  Geoff Norton  <gnorton@novell.com>
9786         * bitmapimage.cpp|h: Ensure we stop getting events from any 
9787         active downloaders once we're disposed.
9788         * brush.cpp|h: Ensure we stop getting events from any 
9789         active BitmapImages once we're disposed.
9791 2009-04-07  Jeffrey Stedfast  <fejj@novell.com>
9793         * glyphs.cpp (CleanupDownloader): New helper method.
9794         (DownloadFont): Don't delete the uri after we're done, we do not
9795         own this object!
9796         (OnPropertyChanged): Use Uri::IsNullOrEmpty().
9798 2009-04-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9800         * runtime.cpp: layers is an EventObject, unref instead of
9801           delete.
9803         * collection.h: Have a protected dtor so that nobody can
9804           delete this class directly ever again.
9806 2009-04-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9808         * runtime.cpp: Add a few null checks.
9810 2009-04-07  Stephane Delcroix  <sdelcroix@novell.com>
9812         * application.cpp: uri->ToString() allocates memory, free it after
9813         use.
9815 2009-04-06  Chris Toshok  <toshok@ximian.com>
9817         * runtime.cpp|.h (Surface::Attach): split this method effectively
9818         in half: stuff we do before the loaded events are fired, and stuff
9819         we do after.  The second half is in Surface::ToplevelLoaded.  This
9820         fixes playboy.covertocover.com coming up, as the alert that
9821         vertigo pops up via Surface::LoadEvent was causing a sub-mainloop
9822         to screw with our async events.
9824 2009-04-06  Chris Toshok  <toshok@ximian.com>
9826         * uielement.cpp|.h (UIElement::GetTransformToUIElementWithError):
9827         flesh this method out some.  I don't like the walks we have to do
9828         here.  Also, rename this to *WithError so we can report the error
9829         back to managed land from here instead of doing it in C#.
9831         * cbinding.cpp|.h: regen.
9833 2009-04-06  Chris Toshok  <toshok@ximian.com>
9835         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
9836         in case we didn't notify listeners, output the moon error if there
9837         was one.
9839 2009-04-06  Chris Toshok  <toshok@ximian.com>
9841         * xaml.cpp (value_from_str): quiet spew (which in this case
9842         indicates an error when there isn't one.)
9844 2009-04-06  Chris Toshok  <toshok@ximian.com>
9846         * brush.h: include imagesource.h, not bitmapimage.h
9848         * brush.cpp: include bitmapimage.h here.
9850 2009-04-06  Geoff Norton  <gnorton@novell.com>
9852         * bitmapimage.cpp: Stop leaking the resource here.
9854 2009-04-06  Geoff Norton  <gnorton@novell.com>
9856         * codec-version.h.in: Bump
9858 2009-04-06  Geoff Norton  <gnorton@novell.com>
9860         * application.cpp: We want ToString here, not just the path of the
9861         uri.
9862         * bitmapimage.cpp|h: We need to do this async, since the events
9863         might be registered in managed code before a yield.
9865 2009-04-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9867         * security.c: Add jtr.dll to the list of platform assemblies,
9868           it's an assembly used by managed tests which contains unsafe
9869           code and pinvoke methods.
9871 2009-04-06  Stephane Delcroix  <sdelcroix@novell.com>
9873         * multiscaleimage.h: ad the 3.0 DPs and property accessors
9875 2009-04-05  Chris Toshok  <toshok@ximian.com>
9877         * easing.cpp|.h: add EasingFunctionBase::SetEasingFunction so that
9878         managed subclasses can register a delegate.
9880         * cbinding.cpp|.h: regen.
9882 2009-04-04  Geoff Norton  <gnorton@novell.com>
9884         * mediaplayer.cpp: Ensure that we invalidate for planar data as well.
9886 2009-04-04  Geoff Norton  <gnorton@novell.com>
9888         * pipeline.cpp|h: Support YV12 from MediaStreamSource as well
9890 2009-04-04  Geoff Norton  <gnorton@novell.com>
9892         * media.h: Removed unused define
9893         * mediaplayer.cpp|h: We need to support RGBA video formats now, so 
9894         lets track what the decoder is giving us (pass-thru is the only decoder
9895         which will provide RGBA from MSS, we still pass around yuv and rgb
9896         internally).  If the format is RGBA we have to incur a one-frame penalty
9897         to recreate our cairo surfaces.
9898         * pipeline.cpp|h: Support RGBA pixel formats.  Don't support RGB from 
9899         MediaStreamSource.  Mark the pass-thru frames as decoded.
9901 2009-04-04  Chris Toshok  <toshok@ximian.com>
9903         * animation.h|.cpp: add Easing{Color,Double,Point}KeyFrame types.
9905         * type.h, type-generated.cpp, dependencyproperty.g.cpp, value.h,
9906         cbinding.h|.cpp: regen.
9907         
9908 2009-04-03  Chris Toshok  <toshok@ximian.com>
9910         * animation.h: add EasingFunctionProperty to
9911         Color/Double/PointAnimation.
9913         * animation.cpp (DoubleAnimation::GetCurrentValue): if there's an
9914         easing function, apply it to progress.
9915         (ColorAnimation::GetCurrentValue): if there's an easing function,
9916         apply it to progress.
9917         (PointAnimation::GetCurrentValue): if there's an easing function,
9918         apply it to progress.
9920         * easing.h, easing.cpp: implementations of all the easing
9921         functions.  still missing are BounceEase and ElasticEase.
9923         * enums.h, enums.cpp (enum EasingMode): new enum.
9925         * Makefile.am: add easing.h/easing.cpp
9927         * type.h, type-generated.cpp, cbinding.h|.cpp,
9928         dependencyproperty.g.cpp, value.h: regen.
9929         
9930 2009-04-03  Geoff Norton  <gnorton@novell.com>
9932         * multiscaleimage.cpp: Guard against 0x0 MSI's to prevent a cairo bug
9933         which renders garbage on the screen on amd64.
9935 2009-04-03  Aaron Bockover  <abockover@novell.com>
9937         * cbinding.h:
9938         * runtime.h:
9939         * dependencyproperty.g.cpp:
9940         * cbinding.cpp: Add generated binding for Surface::GetToplevel, needed
9941         by Moonlight.Gtk.XamlHost
9943 2009-04-03  Larry Ewing  <lewing@novell.com>
9945         * popup.h:
9946         * popup.cpp: Make sure that we hide any active layers when Child
9947         changes and that we show any new ones.  Fixes part of
9948         PopupExample2.  Give IsOpen a default value.
9950         Regenerate.
9952 2009-04-03  Chris Toshok  <toshok@ximian.com>
9954         * animation.h: remove a couple of ancient (and unused) method and
9955         function declarations, and re-order
9956         public/private/protected (seriously, this makes my eyes bleed.)
9957         Also move the "internal classes" to the end.
9959 2009-04-03  Chris Toshok  <toshok@ximian.com>
9961         * clock.cpp (Clock::Begin): remove the COMPATABILITY_BUGS stuff,
9962         since that's for compatability with 1.0, which we no longer are.
9963         
9964 2009-04-03  Alan McGovern  <amcgovern@novell.com>
9966         * textbox.h: TextBox does validation in both the getter and
9967           setter of its TextProperty, so we have to manually implement
9968           it.
9970 2009-04-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9972         * security.c: Include "config.h" to get
9973           MONO_ENABLE_CORECLR_SECURITY.
9975 2009-04-02  Aaron Bockover  <abockover@novell.com>
9977         Do not build code that requires Mono 2.5 or better in the case where
9978         we want Moonlight to run only in an embedded desktop app scenario; in
9979         this case, CoreCLR security and non-default app domains are not needed
9981         * security.c (security_enable_coreclr): If MONO_ENABLE_CORECLR_SECURITY
9982         is not defined, this function is now a noop
9984         * deployment.cpp: If MONO_ENABLE_APP_DOMAIN_CONTROL is not defined, do
9985         not implement app domain loading/unloading; factor out all common init
9986         code that was duplicated in both ctors into InnerConstructor
9987         
9988         * deployment.h: Define InnerConstructor
9990 2009-04-02  Larry Ewing  <lewing@novell.com>
9992         * uielement.h:
9993         * uielement.cpp: move the bulk of the paint ftb logic from surface
9994         to here since we will be using this in more places.  Make some of
9995         the ftb logic protected now.
9997         * bitmapsource.h:
9998         * writeablebitmap.h:
9999         * writeablebitmap.cpp: Land Geoff's initial Render implementation
10000         with a few changes.
10002         Regenerate.
10003         
10004 2009-04-02  Larry Ewing  <lewing@novell.com>
10005         
10006         * dirty.cpp:
10007         * runtime.h:
10008         * runtime.cpp: Treat full_screen_message as another layer.  Make
10009         sure that we mark layers as loaded.  Popups should render now.
10011 2009-04-02  Alan McGovern  <amcgovern@novell.com>
10013         * runtime.cpp: the real toplevel element must always be at
10014           position 0 in the layers list. Fixes the situation where we
10015           open a popup before setting attaching the surface.
10017 2009-04-02  Stephane Delcroix  <sdelcroix@novell.com>
10019         * multiscaleimage.h|cpp: use *AnimationUsingKeyFrames instead of
10020         linear animation, animate for 4 secs instead of .4, use steep spline
10021         to start fast finish smoothly. For botn panning and zooming.
10023 2009-04-02  Alan McGovern  <amcgovern@novell.com>
10025         * popup.h:
10026         * popup.cpp:
10027         * dependencyproperty.g.cpp: The Child property has similar
10028           validation to a ContentControl. Fixes three tests.
10030 2009-04-02  Alan McGovern  <amcgovern@novell.com>
10032         * popup.h:
10033         * popup.cpp:
10034         * dirty.cpp:
10035         * runtime.h:
10036         * cbinding.h:
10037         * runtime.cpp:
10038         * cbinding.cpp:
10039         * dependencyproperty.g.cpp: Popups are treated as top level
10040           elements which are rendered on top of all other elements. To
10041           handle this a list of all toplevel elements (layers) is kept
10042           in the surface. Mouse events are captured within a toplevel
10043           element and not visible to other toplevel elements.
10045 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
10047         * multiscaleimage.cpp (ZoomAboutLogicalPoint): zoom around the point,
10048         not to the center of the control
10050 2009-04-01  Andreia Gaita  <avidigal@novell.com>
10051     
10052         * window-gtk.cpp: Only connect the scroll-event signal if we're
10053         not running on the desktop (otherwise, gecko won't get the
10054         signals)
10056 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
10058         * uri.h: no longer expose GetOriginalString(), it leads to buggy
10059         code.
10061 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
10063         * mediaelement.cpp:
10064         * bitmapimage.cpp:
10065         * deepzoomimagetilesource.cpp: g_free the memory allocated by
10066         uri->ToString()
10068 2009-04-01  Chris Toshok  <toshok@ximian.com>
10070         * window-gtk.cpp (MoonWindowGtk::button_press): reinstate
10071         the (desktop extension -ized) button check here.  this wouldn't be
10072         necessary if the plugin could insert its signal handler before the
10073         window's, but alas, gtk...
10075 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
10077         * application.cpp (GetResource): use the uri path, not
10078         originalstring
10080 2009-04-01  Jeffrey Stedfast  <fejj@novell.com>
10082         * expression.cpp|h: Removed from the build.
10083         not running on the desktop (otherwise, gecko won't get the
10084         signals)
10086 2009-04-01  Chris Toshok  <toshok@ximian.com>
10088         * runtime.cpp (Surface::HandleUIButtonRelease): if desktop
10089         extensions are turned on, allow button 3 (right mouse).
10090         (Surface::HandleUIButtonPress): same.
10092         * window-gtk.cpp (MoonWindowGtk::button_release): don't suppress
10093         non-button 1 presses here.
10095 2009-04-01  Chris Toshok  <toshok@ximian.com>
10097         * eventargs.cpp (MouseWheelEventArgs::GetWheelDelta): flip the
10098         sign here so we have the same behavior that lutz's demo expects
10099         from windows.
10101 2009-04-01  Geoff Norton  <gnorton@novell.com>
10103         * uri.cpp|h: Add IsNullOrEmpty
10104         * bitmapimage.cpp: Clean up this call to use Uri::IsNullOrEmpty
10106 2009-04-01  Geoff Norton  <gnorton@novell.com>
10108         * bitmapimage.cpp: Ensure we deregister the events too.
10110 2009-04-01  Geoff Norton  <gnorton@novell.com>
10112         * bitmapimage.cpp: If the UriSource is changed, then we should abort
10113         and clean up any existing downloaders.
10115 2009-04-01  Geoff Norton  <gnorton@novell.com>
10117         * brush.cpp: ImageSource is a nullable property so we need to new
10118         one up here if we dont have one already.
10120 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
10122         * multiscaleimage.h|.cpp: reuse BitmapImage for tile downloading
10123         and creating cairo surfaces.
10125 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
10127         * bitmapimage.cpp: compare uri against its DefaultValue on UriSource
10128         property changed.
10130 2009-04-01  Chris Toshok  <toshok@ximian.com>
10132         * uielement.h (class UIElement): add
10133         MouseRightButton{Down,Up}Event and MouseWheelEvent.
10135         * runtime.cpp|.h (RUNTIME_INIT_DESKTOP): enable desktop
10136         extensions.
10137         (Surface::HandleUIScroll): new method, emit a MouseWheelEvent.
10139         * eventargs.cpp|.h (class MouseWheelEventArgs): new class.
10141         * window-gtk.cpp|.h (MoonWindowGtk::scroll): new method for mouse
10142         wheel action.
10143         (MoonWindowGtk::EnableEvents): connect the scroll-event.
10144         (MoonWindowGtk::InitializeCommon): if desktop extensions are
10145         enabled, add GDK_SCROLL_MASK.
10147         * xaml.cpp (xaml_is_valid_event_name): if we're running with
10148         desktop extensions, expose the right button events and mouse
10149         wheel.
10151         * value.h, cbinding.h, cbinding.cpp, type-generated.cpp: regen.
10153 2009-03-31  Jeffrey Stedfast  <fejj@novell.com>
10155         * enums.h: Well what do ya know... TextWrapping enum wasn't the
10156         same as the TextWrapping.cs enum, this is likely the case of some
10157         text layout wonkyness.
10159         * textblock.cpp (TextBlock::MeasureOverride): Set the
10160         ActualWidth/Height DP values here after calling Layout(), this
10161         seems to be what Silverlight does (can't be set in FWE::Measure()
10162         because it doesn't have the actual extents, it just has the
10163         desiredSize). Also don't reset dirty back to true after laying out
10164         the text.
10165         (TextBlock::Layout): Restructured slightly.
10167 2009-03-31  Stephane Delcroix  <sdelcroix@novell.com>
10169         * bitmapimage.cpp: use Uri::ToString () instead of OriginalString, as
10170         originalstrings aren't updated on Uri::Combine ().
10172 2009-03-31  Stephane Delcroix  <sdelcroix@novell.com>
10174         * bitmapimage.h: Set a DefaultValue for ProgressProperty
10176 2009-03-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10178         * src.mdp: Updated some project files.
10180 2009-03-31  Stephane Delcroix  <sdelcroix@novell.com>
10182         * multiscaleimage.cpp: Invalidate on ZIndex change, or on subimages 
10183         added/removed
10185 2009-03-31  Stephane Delcroix  <sdelcroix@novell.com>
10187         * multiscaleimage.h|.cpp: remove the AddTickCall workaround for 
10188         the race while emitting ImageOpenSucceded. Test if the source is
10189         a deepzoom before casting (avoid g_warnings on the console). Change a 
10190         printf to LOG_MSI.
10192 2009-03-30  Chris Toshok  <toshok@ximian.com>
10194         * timemanager.cpp|.h: split this out from clock.cpp|.h
10196         * animation.cpp, clock.cpp, clock.h, dependencyobject.cpp,
10197         libmoon.h, mediaplayer.cpp, runtime.cpp, textbox.cpp,
10198         timeline.cpp, uielement.cpp: track the above change.
10200         * Makefile.am: add timemanager.cpp|.h
10202         * cbinding.h, type-generated.cpp: regen
10204 2009-03-30  Geoff Norton  <gnorton@novell.com>
10206         * bitmapsource.cpp: When caching a native surface ensure we dont
10207         destroy it on every GetSurface pass, but we do clean it up in
10208         Invalidate.
10210 2009-03-30  Chris Toshok  <toshok@ximian.com>
10212         * application.h, border.h, contentcontrol.h, control.h,
10213         cornerradius.h, deployment.h, expression.h, frameworkelement.h,
10214         grid.h, multiscaleimage.h, size.h, style.h, template.h, textbox.h,
10215         transform.h, type.h, usercontrol.h: remove @SilverlightVersion
10216         metadata attributes.
10219 2009-03-30  Chris Toshok  <toshok@ximian.com>
10221         * downloader.h: add pinvokes for a few of the downloader_* C
10222         functions.
10224         * clock.h|.cpp (class TimeManager): add a CBinding/PInvoke for
10225         AddTickCall, and remove the manual implementation.
10227         * dependencyobject.h (class EventObject): add a PInvoke for
10228         event_object_get_surface.
10230         * cbinding.h, cbinding.cpp: regen
10232 2009-03-30  Sebastien Pouliot  <sebastien@ximian.com>
10234         * security.c: Ensure mono_assembly_setrootdir is always called
10235         while enabled coreclr is dependent on the MOON_DISABLE_SECURITY
10236         variable and the availability of a platform directory.
10238 2009-03-30  Geoff Norton  <gnorton@novell.com>
10240         * brush.h: Brush.ImageSource is stupid, and of course not consistent
10241         with Image.Source
10242         * bitmapimage.cpp: Nuke some debug spew.
10243         * dependencyproperty.g.cpp: Funky cold medina.
10245 2009-03-30  Larry Ewing  <lewing@novell.com>
10247         * brush.cpp (OnPropertyChanged): check for the right property and
10248         fixup a harmless typo.
10249         
10250         * media.cpp (OnPropertyChanged): fixup a (harmless) logic typo
10252 2009-03-30  Jeffrey Stedfast  <fejj@novell.com>
10254         * font.cpp (FontFace::GetExtents): Instead of calculating our
10255         ascent/descent and height values from 2 different ways, calculate
10256         ascent/descent the same way we calculated height. This seems to
10257         give slightly more accurate results (previous logic rounded up to
10258         the nearest whole pixel for ascent/descent).
10260 2009-03-30  Geoff Norton  <gnorton@novell.com>
10262         * media.h: Hide some API that never should have been public.
10263         * media.cpp: ImageBrush no longer uses a image internally.
10264         * bitmapimage.cpp|h: Part name is a const char * since we dup
10265         it here.
10266         * brush.cpp|h: Migrate away from using a Image internally
10267         and consume the new BitmapImage API.
10269 2009-03-30  Geoff Norton  <gnorton@novell.com>
10271         * bitmapimage.cpp: Ensure we fall back to downloading if we 
10272         cannot find the image as a resource.
10274 2009-03-30  Chris Toshok  <toshok@ximian.com>
10276         * deployment.h|.cpp: combing the desktop and browser cases (the
10277         desktop case coming from jeff's patch) into one method, where the
10278         different root_domain behavior is determined by the boolean
10279         argument.
10281         * runtime.cpp (runtime_init): pass an initial boolean to
10282         Deployment::Initialize to tell whether or not we should create the
10283         root domain (i.e. whether or not we should initialize mono.)
10284         (RUNTIME_INIT_BROWSER): add RUNTIME_INIT_CREATE_ROOT_DOMAIN.
10286 2009-03-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10288         * security.c: Revert latest fix, the buildbots aren't ready
10289           for this yet.
10291 2009-03-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10293         * security.c: Always call mono_assembly_setrootdir, even if
10294           CoreCLR is disabled. This should fix buildbots where
10295           mono/mcs and moonlight are installed into different
10296           prefixes.
10298 2009-03-30  Geoff Norton  <gnorton@novell.com>
10300         * media.cpp: Stop leaking a cairo pattern in Image::Render
10302 2009-03-30  Stephane Delcroix  <sdelcroix@novell.com>
10304         * deepzoomimagetilesource.cpp: revert latest change, don't advance
10305         twice. Fixes collections.
10307 2009-03-29  Chris Toshok  <toshok@ximian.com>
10309         * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
10310         add a sanity check here to make sure the autocreated value is of a
10311         compatible type.
10313         * animation.h|.cpp: remove the /*Timeline*/ comments from
10314         everywhere -- stop pretending the type names are the same as WPF.
10316 2009-03-29  Geoff Norton  <gnorton@novell.com>
10318         * media.cpp: Ensure that the ImageSource we get is a BitmapImage
10319         before treating it as such.
10321 2009-03-29  Geoff Norton  <gnorton@novell.com>
10323         * Makefile.am, bitmapimage.cpp|h, bitmapsource.cpp|h,
10324           writeablebitmap.cpp|h, brush.cpp, enums.h, eventargs.cpp|h,
10325           imagesource.cpp|h, media.cpp|h, mediaplayer.h, pipeline.cpp:
10326         Update the image based source to have a properly implemented
10327         BitmapImage.  I've also moved all this code to the SL3 API which
10328         injects a BitmapSource in between ImageSource and BitmapImage,
10329         and adds support for WriteableBitmap.
10331         Basically now all the cairo logic lives in ImageSource and 
10332         BitmapSource.  All the pixbuf loader logics and downloader logic
10333         is isolated in BitmapImage.
10335         * cbinding.cpp|h, dependencyproperty.g.cpp, type-generated.cpp,
10336           type.h, value.h: Regenerate  
10338 2009-03-29  Chris Toshok  <toshok@ximian.com>
10340         * provider.h, provider.cpp, dependencyproperty.h: change
10341         AutoCreator signature to take the DependencyObject as the first
10342         parameter.
10344 2009-03-29  Chris Toshok  <toshok@ximian.com>
10346         * dependencyproperty.h|.cpp: rework the autocreate functionality.
10347         instead of a boolean flag, we pass a function pointer.  We keep
10348         IsAutoCreated() around (just func != NULL) and add
10349         GetAutoCreator() so the AutoCreateProvider can call the method
10350         when it needs a value.
10352         Also, remove the empty ctor since it doesn't initialize any
10353         fields (and it also isn't called.)
10355         * provider.h (class AutoCreators): new class, containing the
10356         default autocreator which just calls type->CreateInstance().
10358         * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
10359         call the property's AutoCreator function if there is one.
10360         (AutoCreators::default_autocreator): new function for the default
10361         case.  basically some code that was ripped out of
10362         ::GetPropertyValue
10364         * dependencyproperty.g.cpp: regen.
10366 2009-03-29  Chris Toshok  <toshok@ximian.com>
10368         * uielement.cpp (UIElement::OnLoaded): now that we don't walk the
10369         tree in OnLoaded, don't do anything at all if we're already
10370         Loaded.
10372 2009-03-29  Chris Toshok  <toshok@ximian.com>
10374         * eventargs.h: consistenfy everything, and make
10375         CollectionChangedEventArgs fields private, not public.  add
10376         accessors.
10378         * dependencyobject.h (PropertyChangedEventArgs): make
10379         old_value/new_value private and add accessors.
10381         * *.cpp|.h: track the above changes.
10382         
10383 2009-03-29  Chris Toshok  <toshok@ximian.com>
10385         * dependencyproperty.h|.cpp: rename AutoCreate to IsAutoCreated.
10387         * dependencyobject.cpp:, provider.cpp: track above change.
10389 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
10391         * deployment.cpp|h (Initialize): If a platform directory is
10392         specified then we initialize the CoreCLR security model.
10393         * runtime.cpp|h: Initialize the runtime using the plugin
10394         directory (when applicable, i.e. browser mode).
10395         * security.c|h: New. Handle the CoreCLR security model 
10396         initialization and platform code detection.
10397         * Makefile.am: Add security.[c|h] to the build
10399 2009-03-28  Jeffrey Stedfast  <fejj@novell.com>
10401         * frameworkelement.cpp (OnPropertyChanged): Instead of setting
10402         ActualWidth/Height to 0 in the non-LayoutContainer case, use
10403         ClearValue() those properties instead. Fixes some TextBlock cases.
10405         * textblock.cpp (GetSize): Check isnan() rather than 0.
10406         (Render): The dirty flag should never be set at this point, so
10407         don't bother with it. Set TextLayout's AvailableWidth to our
10408         ActualWidth value.
10409         (ArrangeOverride): Don't set dirty back to true after we've
10410         arranged, this is why dirty was true in ::Render()
10412 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
10414         * textblock.cpp (Layout): Fixed the special-case logic. If no text
10415         has ever been set, then the extents should be 0,0. However, if
10416         they have ever been set but the text is currently empty, then use
10417         the font height as the ActualHeight value. Use a state variable to
10418         check if the text has ever been set rather than trying to check
10419         other things which are not reliable.
10421 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
10423         * size.h (Size::GrowBy): If the width or height are infinite going
10424         in, then leave them infinite going out.
10426         * textblock.cpp (TextBlock::GetSize): New method to get the
10427         TextBlock's size.
10428         (TextBlock::Render): Use GetSize() instead of GetRenderSize().
10429         (class TextBlockDynamicPropertyValueProvider): Same.
10431 2009-03-27  Chris Toshok  <toshok@ximian.com>
10433         * uielement.h (class UIElement): add LostMouseCaptureEvent.
10435         * type-generated.cpp: regen.
10437 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
10439         * multiscaleimage.h|.cpp: sort the subimages by ZIndex, Invalidate on
10440         subimage collection items changed.
10442 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
10444         * multiscalesubimage.h|.cpp:
10445         * multiscaleimage.cpp: remove the link to msi parents and don't try to
10446         Invalidate from subimage.
10448 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
10450         * collection.cpp: do not use generated cbinding in
10451         MultiScaleSubImageZIndexComparer.
10453 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
10455         * multiscalesubimage.h: set a default ZIndex value
10457 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
10459         * textblock.cpp (TextBlock::UpdateLayoutAttributes): New method to
10460         update the TextLayout's text and attributes.
10461         (TextBlock::OnPropertyChanged): If the Text or Inlines properties
10462         change, immediately call UpdateLayoutAttributes().
10463         (TextBlock::Layout): No longer sets up the TextLayout's attributes
10464         as this is already done. Also no longer takes a cairo_t argument
10465         since it's never used, instead it now takes a Size constraint
10466         argument.
10467         (TextBlock::CalcActualWidthHeight): Removed, no longer needed.
10468         (TextBlock::MeasureOverride): Rewritten / simplified.
10469         (TextBlock::ArrangeOverride): Same.
10470         (class TextBlockDynamicPropertyValueProvider): Updated.
10471         (TextBlock::OnCollectionItemChanged): Call UpdateFontDescription
10472         on the Inline that changed.
10473         (TextBlock::UpdateFontDescriptions): New method to update the font
10474         descriptions on all inlines.
10475         (TextBlock::OnPropertyChanged): Update the font descriptions on
10476         all inlines whenever a font property changes.
10477         (TextBlock::SetFontSource): Call UpdateFontDescriptions().
10478         (TextBlock::DownloaderComplete): Same.
10480         * textbox.cpp (TextBoxView::Render): Set the layout's
10481         AvailableWidth to the render size width.
10482         (TextBoxView::Layout): Don't worry about constraint.width being
10483         INFINITY anymore, TextLayout() now handles INFINITY.
10485         * layout.cpp: Instead of using -1.0 to mean 'unset' for extents
10486         and max width/height constraints, use NAN and
10487         INFINITY (respectively). This will prevent TextBox/Block from
10488         having to use hacks if their width/height constraints are
10489         INFINITY.
10490         (TextLayout::HorizontalAlignment): Since MaxWidth might be
10491         INFINITY, we need to base this on a new property called
10492         AvailableWidth, which is the width available for rendering (where
10493         MaxWidth is only used for wrapping).
10495 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
10497         * deepzoomimagetilesource.cpp (DeepZoomImageTileSource::GetTileLayer):
10498         After finding the baseUri's filename, advance beyond the / before
10499         passing it to uri->Combine().
10501         * uri.cpp (Uri::Combine): If the uri has no path and the
10502         relative_path does not begin with a /, don't prepend one.
10504 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
10506         General cleanup of the TextBoxBase abstraction.
10508         * textbox.cpp (TextBoxView::UpdateText): Get rid of special-casing
10509         of PasswordBox.
10510         (PasswordBox::SyncDisplayText): Generate a masked password string
10511         using the specified PasswordChar.
10512         (PasswordBox::SyncText): Call SyncDisplayText ().
10513         (PasswordBox::OnPropertyChanged): When the PasswordProperty
10514         changes, call SyncDisplayText().
10515         (PasswordBox::GetDisplayText): Override TextBoxBase's to return
10516         our masked password string.
10517         (PasswordBox::ctor): Initialize display text
10518         (PasswordBox::dtor): Delete display text.
10519         (TextBox::GetDisplayText): Simply return GetText ()
10521 2009-03-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10523         * playlist.cpp: MergeWith: need to clone uris, otherwise it'll
10524           double free.
10526 2009-03-27  Jackson Harper  <jackson@ximian.com>
10528         * xaml.cpp: Despite the docs saying differently
10529         (http://msdn.microsoft.com/en-us/library/cc917841(VS.95).aspx)
10530         sys:Boolean is also legal. (I wonder what else is).
10532 2009-03-27  Jackson Harper  <jackson@ximian.com>
10534         * xaml.cpp: Fix typo in LookupNamedItem so exists returns the
10535         correct value.
10536         - When we are populating the context resource dictionaries we need
10537         to include elements that are resource dictionaries not just
10538         elements have have dictionaries.  This fixes elements looking up
10539         items in their top level RD (like in generic xaml).
10541 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
10543         * xaml.cpp: Source attribute of MultiScaleImage, even while starting with a
10544         '/', are relative uris.
10546 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
10548         * multiscaleimage.cpp: if a tile is already being downloaded, don't
10549         start a 2nd downloader for the same uri.
10551 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
10553         * deepzoomimagetilesource.cpp: Uris composed of a single file name
10554         are fine too. don't discriminate !
10556 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
10558         * uri.cpp: fix Combine when the original path is a single file,
10559         without a leading '/'
10561 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
10563         * multiscalesubimage.h|.cpp: fix the mess I was doing on uris in
10564         the overloaded ctor now that we have a proper Uri struct
10566 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
10568         * uri.h, uri.cpp: add Combine (const Uri*).
10570 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
10572         * multiscaleimage.h|.cpp: Emit MotionFinishedEvent
10574 2009-03-26  Chris Toshok  <toshok@ximian.com>
10576         * deployment.h|.cpp: be a little more fragile (and a lot less
10577         evil) about the way we're exposing Mono types in our headers.
10578         just put a typedef for MonoDomain in deployment.h instead of
10579         including appdomain.h.  Include appdomain.h from deployment.cpp.
10581 2009-03-26  Chris Toshok  <toshok@ximian.com>
10583         * uielement.h|.cpp (class UIElement): add the ability to do
10584         instant and delayed emission of Loaded events.
10585         (UIElement::PostSubtreeLoad): perhaps poorly named, but the
10586         @load_list is a list of UIElement which will be walked in order in
10587         a tick call, emitting OnLoaded on all of them.
10588         (UIElement::EmitSyncLoaded): walk the same list as would be passed
10589         to PostSubtreeLoad, emitting it now.
10590         (UIElement::WalkTreeForLoaded): this does a post-order tree walk
10591         building up the list which is passed to PostSubtreeLoad or
10592         EmitSubtreeLoad.  The out bool parameter tells us whether we
10593         should delay the emission or not. Currently the only thing that
10594         delays emission is a control with a style applied (even a default
10595         style.)  We also set a PENDING_LOADED flag on all elements during
10596         the walk.
10597         (UIElement::OnLoaded): no longer walk the tree here.  only emit
10598         Loaded on this one element.  Clear the PENDING_LOADED flag while
10599         we're at it.
10600         (UIElement::ElementAdded): complicate matters slightly here so
10601         that it follows the following two rules:
10603         1) if @this is loaded, walk the tree and either emit or post the
10604         load based on what the out param tells us to do.
10606         2) if @this is pending_loaded, walk the tree and always post.
10607         
10608         * frameworkelement.h (class FrameworkElement): unfortunately we
10609         need access to "default_style_applied" from UIElement.
10611         * control.h|.cpp: remove OnLoaded implementation from here.
10613         * runtime.cpp (Surface::Attach): move the Loaded handling *after*
10614         the zombie check.  not sure why we were ever doing it before.  but
10615         most importantly, this always Posts the loaded state, it doesn't
10616         emit it synchronously.  This allows us to do the changes in
10617         Application.cs/Deployment.cs that are needed to get ncaa working.
10619 2009-03-26  Chris Toshok  <toshok@ximian.com>
10621         * trigger.cpp (EventTrigger::SetTarget): fix regression, and ifdef
10622         out the code that allows other events to be used.  Maybe in SL3
10623         they'll allow it.
10625 2009-03-26  Jeffrey Stedfast  <fejj@novell.com>
10627         * textbox.cpp: Reengineered TextBox and PasswordBox to inherit
10628         from a new TextBoxBase class which handles almost all of the logic
10629         for us.
10631 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
10633         * multiscaleimage.cpp: replace the ldexp (1.0, n) by 1 << n
10635 2009-03-26  Jeffrey Stedfast  <fejj@novell.com>
10637         * textbox.cpp: Reengineered TextBox and PasswordBox to inherit
10638         from a new TextBoxBase class which handles almost all of the logic
10639         for us.
10641 2009-03-26  Jeffrey Stedfast  <fejj@novell.com>
10643         * deepzoomimagetilesource.cpp (DeepZoomImageTileSource::GetTileLayer):
10644         Use the new Uri::Combine() method.
10646         * uri.cpp (Uri::Combine): New method to combine a relative path to
10647         an existing Uri.
10649 2009-03-26  Chris Toshok  <toshok@ximian.com>
10651         * animation.cpp, clock.cpp: move some class-static fields around
10652         so they make more sense.
10654 2009-03-26  Chris Toshok  <toshok@ximian.com>
10656         * clock.h: move enum FillBehavior...
10658         * enums.h: ... to here.
10660 2009-03-26  Chris Toshok  <toshok@ximian.com>
10662         * animation2.h: nuke, moving everything into animation.h.
10664         * clock.h|.cpp, timesource.h|.cpp, timeline.h|.cpp: split out all
10665         the timesource/timeline stuff into separate files to reduce
10666         clock.cpp's size/complexity a bit.
10668         * mediaplayer.cpp, mediaelement.cpp, media.cpp,
10669         mms-downloader.cpp: track new locations of things (that were moved
10670         out of clock.h|.cpp)
10671         
10672         * cbinding.h, cbinding.cpp, type-generate.cpp,
10673         dependencyproperty.g.cpp: regen.
10674         
10675         * Makefile.am: add/remove files.
10676         
10677 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
10679         * multiscaleimage.h|.cpp: fix optimal_layer caclulation for tiles
10680         with an aspect_ratio < 1.0 (portrait images).
10682 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
10684         * multiscaleimage.h|.cpp: replace the single downloader code by
10685         a list of downloader, speed up downloading a lot. (Set --arbitrary--
10686         to 6 dlders for now)
10688 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
10690         * multiscaleimage.h|.cpp: Download directly from Render*
10692 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
10694         * multiscaleimage.h|.cpp: DownloadUri downloads a Uri (sic). Use an Uri
10695         as cache key, use the new get_image_uri_func everywhere.
10697 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
10699         * tilesource.h:
10700         * deepzoomimagetilesource.h|.cpp: change the signature of
10701         get_image_uri_func. It returns a bool indicating success, the Uri is
10702         now a method arg, and no longer returned as a string pointer. Fixes 
10703         some random crashes with managed tilesoources.
10705 2009-03-25  Chris Toshok  <toshok@ximian.com>
10707         * uri.h (struct Uri): add accessor methods for all of the fields.
10708         The fields are still public for now, since a few places (e.g.,
10709         plugin-debug, playlist), make direct modifications.
10711         * multiscalesubimage.cpp, playlist.cpp, downloader.cpp,
10712         glyphs.cpp, mediaelement.cpp, application.cpp, media.cpp: use
10713         accessors when getting values.
10714         
10715 2009-03-25  Stephane Delcroix  <sdelcroix@novell.com>
10717         * uri.h, uri.cpp: GetHashCode (), so Uris can be used as keys for
10718         hash_tables.
10720 2009-03-25  Jeffrey Stedfast  <fejj@novell.com>
10722         * mediaelement.cpp (MediaElement::GetStateName): Don't pass an sl2
10723         argument to enums_int_to_str() anymore.
10725         * trigger.cpp (EventTrigger::SetTarget): Surface::IsSilverlight2()
10726         no longer exists, don't bother checking it. If the target is other
10727         than the Loaded event, we need to treat the whole thing as
10728         Silverlight2 anyway.
10730         * runtime.cpp (Surface::Surface): No longer takes a silverlight2
10731         argument or keeps such a flag.
10732         (Surface::EmitEventOnList): Don't need to care about the
10733         silverlight2 flag.
10734         (Surface::HandleUIKeyPress): Same.
10735         (Surface::HandleUIKeyRelease): Here too.
10737         * enums.cpp (enums_str_to_int): No longer takes an sl2 argument.
10738         (enums_int_to_str): Same.
10740         * xaml.cpp (value_from_str_with_typename): No longer takes an sl2
10741         argument.
10742         (value_from_str): Same.
10743         (convert_value_type): Same.
10744         (xaml_set_property_from_str): Same.
10746 2009-03-25  Geoff Norton  <gnorton@novell.com>
10748         * Makefile.am: 
10749         * binding.cpp: 
10750         * binding.h: 
10751         * cbinding.cpp: 
10752         * cbinding.h: 
10753         * frameworkelement.cpp: 
10754         * frameworkelement.h: 
10755         * type-generated.cpp: 
10756         * type.h: 
10757         * value.h: 
10758         * xaml.cpp:  Bindings live 100% in managed land now
10760 2009-03-25  Alan McGovern  <amcgovern@novell.com>
10762         * animation.cpp: Revert the changes in r130133 as they
10763           resulted in double frees of the Value *.
10765 2009-03-25  Jeffrey Stedfast  <fejj@novell.com>
10767         * value.cpp (Value::FreeValue): Don't dereference uri if it is
10768         NULL.
10770 2009-03-25  Stephane Delcroix  <sdelcroix@novell.com>
10772         * multiscaleimage.cpp: emit ViewportChanged
10774 2009-03-25  Stephane Delcroix  <sdelcroix@novell.com>
10776         * multiscaleimage.cpp: renders layer 0 too, drop some old debug code
10778 2009-03-25  Jackson Harper  <jackson@ximian.com>
10780         * xaml.cpp: Can put this back now that bindings are convertering
10781         strings properly.  Don't try to create a value object if we are
10782         just going into managed anyways.
10784 2009-03-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10786         * runtime.h:
10787         * runtime.cpp: Move IsVersionSupported implementation here,
10788           add GetBackgroundColor and sprinkle generator annotations.
10790         * cbinding.h:
10791         * cbinding.cpp: Regenerated.
10793 2009-03-25  Alan McGovern  <amcgovern@novell.com>
10795         * uri.cpp: Scheme was being used uninitialised if the if
10796           (!*start) check succeeded.
10798 2009-03-24  Chris Toshok  <toshok@ximian.com>
10800         * playlist.cpp (PlaylistParser::OnASXStartElement): use
10801         uri->IsScheme()
10802         (PlaylistParser::OnSMILStartElement): use uri->IsScheme()
10804         * uri.h, uri.cpp (struct Uri): add "bool IsScheme(const char
10805         *scheme)" so we can stop twiddling internals.
10807 2009-03-24  Chris Toshok  <toshok@ximian.com>
10809         * downloader.cpp: s/protocol/scheme for Uris
10811         * playlist.cpp: s/protocol/scheme for Uris
10813         * uri.h, uri.cpp: s/protocol/scheme for Uris.
10815 2009-03-24  Chris Toshok  <toshok@ximian.com>
10817         * uri.cpp: do as much as we can to get isAbsolute set correctly.
10819 2009-03-25  Andreia Gaita  <avidigal@novell.com>
10821         * clock.h: remove unused timeline field
10823 2009-03-25  Andreia Gaita  <avidigal@novell.com>
10825         * clock.cpp: Refresh the clock's duration, it might have changed
10826         after it's creation
10828 2009-03-24  Jeffrey Stedfast  <fejj@novell.com>
10830         * value.cpp (Value::Value): If the input value has a NULL uri,
10831         don't call Uri::Copy(), simply set the new uri to NULL too.
10833         * uri.cpp (Uri::Copy): If the 'from' argument is NULL, nullify the
10834         members in the 'to' argument. This should never happen anymore,
10835         but if it does, don't allow 'to' to have invalid pointers.
10837 2009-03-24  Jackson Harper  <jackson@ximian.com>
10839         * xaml.cpp: Need to make this a little smarter, revert for now
10840         because it breaks hardrock.
10842 2009-03-24  Jeffrey Stedfast  <fejj@novell.com>
10844         * layout.cpp (TextLayout::Layout*Wrap*): Fixed to not give 0.0
10845         actual_height extents if the text is "".
10847         * textbox.cpp (TextBoxView::UpdateText): Make sure that we never
10848         set NULL text on the layout so that we won't crash inside
10849         TextLayout::GetCursor() inside g_utf8_offset_to_pointer().
10851 2009-03-24  Jackson Harper  <jackson@ximian.com>
10853         * xaml.cpp: Don't attempt to convert values if we are going to
10854         managed anyways. This prevents things that can be created easily
10855         from strings being created from expressions.
10857 2009-03-24  Jackson Harper  <jackson@ximian.com>
10859         * animation2.h:
10860         * animation.cpp: Use an OBJECT for the Value property.
10861         * dependencyproperty.g.cpp: Regen
10862         
10863 2009-03-24  Stephane Delcroix  <sdelcroix@novell.com>
10865         * uri.h|uri.cpp: new Equals () methods, so we can use its generated
10866         cbinding as GCompareFunc.
10868 2009-03-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10870         * pipeline.cpp: Fix breakage.
10872 2009-03-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10874         * pipeline.h:
10875         * pipeline.cpp: Add a PassThroughDecoder for when the demuxer
10876           gives ready-to-present data. Make it handle pcm, rgb, rgba
10877           and yv12 formats.
10879         * type.h:
10880         * value.h:
10881         * type-generated.cpp: Regenerated.
10883 2009-03-23  Stephane Delcroix  <sdelcroix@novell.com>
10885         * deepzoomimagetilesource.h|cpp: pass a *Uri to the ctor, related
10886         changes to keep working
10888 2009-03-23  Jeffrey Stedfast  <fejj@novell.com>
10890         * uri.cpp (Uri::operator==): If all the != compares pass, return
10891         true. Don't let control reach the end of a non-void function!
10893         * textbox.cpp (TextBoxView::UpdateCursor): Emit a new cursor
10894         position changed event.
10896 2009-03-23  Chris Toshok  <toshok@ximian.com>
10898         * uri.cpp (Uri::Uri): I don't like this fix, mostly because it was
10899         due to vertigo doing some weird stuff that I don't fully
10900         understand :) but in the interest of not requiring every usage to
10901         include a null check, init originalString to g_strdup("") here.
10903 2009-03-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10905         * pipeline.cpp: FillBuffers: fix warning. NullDecoder: Chain
10906           Dispose.
10908 2009-03-23  Chris Toshok  <toshok@ximian.com>
10910         * uri.cpp (Uri::Copy): return immediately if @from == null.
10912 2009-03-21  Chris Toshok  <toshok@ximian.com>
10914         * bitmapimage.cpp (BitmapImage::OnPropertyChanged): pass the Uri
10915         to Application:GetResource.
10917         * application.[h,cpp] (Application::GetResource): this takes a Uri
10918         instead of a string now.
10920 2009-03-21  Chris Toshok  <toshok@ximian.com>
10922         * uri.[h,cpp]: a few changes:
10923           1. Add "bool isAbsolute" and "char* originalString" fields.
10924           2. Remove Clone and add a static Copy method which Value can use
10925              to copy all the internal fields.
10926           3. Add Free method.
10927           4. make it a struct so we'll only box when explicitly asked to in
10928              Value.cs.
10929           5. add an operator== so we can do non-reference comparisons in
10930              value.cpp
10932         * dependencyobject.h,
10933         dependencyobject.cpp (DependencyObject::SetMarshalledValueWithError):
10934         remove.
10936         * bitmapimage.[h,cpp]: UriSourceProperty is a Uri, not a string.
10938         * glyphs.[h,cpp]: FontUriProperty is a Uri, not a string.
10939         
10940         * deepzoomimagetilesource.h: UriSourceProperty is a Uri, not a
10941         string.
10942         
10943         * media.cpp: source->GetUriSource() returns a Uri*
10944         
10945         * mediaelement.[h,cpp]: SourceProperty is a Uri, not a string.
10947         * multiscalesubimage.[h,cpp] (MultiScaleSubImage::MultiScaleSubImage):
10948         use Uris more.
10950         * playlist.cpp (Playlist::MergeWith): don't Clone() the uris, as
10951         the Value ctor does that for us.
10953         * xaml.cpp (value_from_str): add Type::URI case, and rework the
10954         Type::BITMAPIMAGE case to use a Uri object.
10956         * validators.[h,cpp]: rename NonNullStringValidator to
10957         NonNullValidator.  All uses before didn't depend on the
10958         "string"-ness of the value, and we can make use of it for the Uri
10959         stuff.
10961         * value.h.in, value.cpp: add Uri support, and remove
10962         Value::Unmarshal.
10964         * dependencyproperty.g.cpp, cbinding.cpp|.h, type-generated.cpp,
10965         value.h: regen.
10967         * textblock.h, frameworkelement.h: track name change of NonNullStringValidator
10969 2009-03-20  Jeffrey Stedfast  <fejj@novell.com>
10971         * textbox.cpp (TextBoxView::UpdateText): Split out from
10972         TextBoxView::Layout(). Sets the text on the layout engine.
10973         (TextBoxView::Layout): Moved most of the logic into UpdateText()
10974         and the rest into Render(). We now just set the MaxWidth and lay
10975         out the text.
10976         (TextBoxView::Render): If dirty, after calling Layout(), call
10977         UpdateCursor(false) and clear the dirty flag.
10978         (TextBoxView::OnModelChanged): If the text changes, update it
10979         immediately on our layout context by calling UpdateText().
10980         (TextBoxView::SetTextBox): Call UpdateText() here as well and make
10981         it more robust against a NULL textbox argument.
10983 2009-03-20  Jeffrey Stedfast  <fejj@novell.com>
10985         * textbox.cpp (TextBoxView::Layout): No longer takes a cairo
10986         context argument since it never actually uses it anyway.
10987         (TextBoxView::MeasureOverride): Don't create a temporary cairo
10988         context since it never gets used.
10989         (TextBoxView::ArrangeOverride): Same.
10991 2009-03-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10993         * pipeline.h:
10994         * pipeline.cpp:
10995         * pipeline-asf.cpp: Re-implement fallback to http when mms
10996           fails.
10998 2009-03-20  Jeffrey Stedfast  <fejj@novell.com>
11000         * layout.cpp (TextLayout::SetText): Handle text being NULL a bit
11001         better.
11003 2009-03-20  Jackson Harper  <jackson@ximian.com>
11005         * xaml.cpp: Make sure we go to managed when using property element
11006         syntax for setting properties of managed kinds.
11008 2009-03-20  Jeffrey Stedfast  <fejj@novell.com>
11010         * layout.cpp (TextLayout::SetMaxWidth): If the new MaxWidth is
11011         larger than the current ActualWidth (and no wrapping has been
11012         done), then no need to re-layout. This should help improve
11013         performance of many cases of TextBox/Block MeasureOverride() and
11014         ArrangeOverride().
11015         (TextLayout::LayoutWrapWithOverflow): If we have to wrap a line,
11016         set is_wrapped to true.
11017         (TextLayout::LayoutWrap): Same.
11018         (TextLayout::Layout): Reset is_wrapped to false before laying out
11019         the text.
11021 2009-03-19  Larry Ewing  <lewing@novell.com>
11023         * multiscaleimage.cpp (RenderSingle): move the clipping to the
11024         outer loop here too.
11026 2009-03-19  Larry Ewing  <lewing@novell.com>
11028         * multiscaleimage.cpp (RenderCollection): rework the collection
11029         rendering slightly by moving the subimages out of the loop.
11031 2009-03-18  Chris Toshok  <toshok@ximian.com>
11033         * dependencyobject.cpp (unregister_depobj_names): another side of
11034         the TagProperty coin.  don't unregister names from it, since we
11035         aren't registering names from it.
11036         (DependencyObject::SetParent): remove the USERCONTROL extra
11037         registration from here.  it's not necessary now that jackson has
11038         fixed where we register the names.
11040         * dependencyproperty.cpp (DependencyProperty::RegisterFull): only
11041         freeze the default value if the property is not custom.
11043 2009-03-18  Jeffrey Stedfast  <fejj@novell.com>
11045         Fixes a crash in the Microsoft.SilverlightControls
11046         ControlsExtended unit tests (specifically the DatePickerTest).
11048         * control.h (class Control): Set a DefaultValue for the Foreground
11049         property.
11051         * textblock.h (class TextBlock): Same.
11053 2009-03-18  Jackson Harper  <jackson@ximian.com>
11055         * xaml.cpp: When we use x:Name to set an elements name, make sure
11056         that it gets set in the namescope of it's containing element.
11057         * dependencyobject.cpp|h: New method that allows setting objects
11058         name in a different namescope, this will also result in the name
11059         being set in the objects namescope.
11060         - Allow duplicate objects if they are the same object
11061         * namescope.cpp: Allow duplicates if they are the same object.
11063 2009-03-18  Jeffrey Stedfast  <fejj@novell.com>
11065         * textbox.cpp (TextBox::Initialize): Don't bother connecting to
11066         MouseEnter/Leave, we don't care.
11067         (TextBoxView::TextBoxView): Connect to MouseLeftButtonDown/Up.
11068         (TextBoxView::OnMouseLeftButtonDown): Proxy the event to our
11069         parent TextBox control.
11070         (TextBoxView::OnMouseLeftButtonUp): Same.
11072         * runtime.cpp (Surface::FocusElement): Don't do all the checks
11073         here, they are now done in Control::Focus().
11074         (Surface::HandleMouseEvent): Don't loop to FocusElement() here, we
11075         now expect this to be done in the MouseLeftButtonDown event
11076         callback.
11078         * control.cpp (Control::Focus): New method to focus a control.
11080 2009-03-18  Jb Evain  <jbevain@novell.com>
11082         * deployment.cpp: add a MOON_PROFILER environment variable
11083         to control profiling of the embedded mono.
11085 2009-03-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11087         * pipeline.h:
11088         * pipeline.cpp: Remove unused field.
11090 2009-03-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11092         * pipeline-asf.cpp: Fix visitmix.
11094 2009-03-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11096         * debug.h:
11097         * debug.cpp:
11098         * deployment.cpp: Add signal handlers for crash detection in
11099           libmoon instead of libshocker, this way there's not a race
11100           condition between loading mono and installing a signal
11101           handler in libshocker (the signal handler has to get
11102           installed before loading mono, otherwise we'll crash for
11103           real due to managed exceptions getting caught by the signal
11104           handler).
11106 2009-03-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11108         * pipeline.cpp: More asserts.
11110 2009-03-17  Jeffrey Stedfast  <fejj@novell.com>
11112         * xap.cpp (Xap::Unpack): Canonicalize the extracted filename to
11113         lowercase.
11115 2009-03-17  Jeffrey Stedfast  <fejj@novell.com>
11117         * xap.cpp (Xap::Unpack): Don't mix & match malloc/g_free, don't
11118         shadow the fname method argument, and don't leak if
11119         finfo.external_fa has the 4th bit set.
11121 2009-03-17  Chris Toshok  <toshok@ximian.com>
11123         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
11124         don't do the SetParent stuff (even when the value is a
11125         DependencyObject) if the property is UIElement::TagProperty.  This
11126         fixes the cyclic tree warning in RichTextBox.  Right now it's
11127         hardcoded to check for that property, but we need to move it to
11128         the DP metadata, and do an audit of other "typeof(object)" DP's to
11129         make sure we aren't setting parent where we shouldn't be.
11131 2009-03-17  Stephane Delcroix  <sdelcroix@novell.com>
11133         * collection.h|cpp: allow MSISICollections to be sorted by ZIndex
11135 2009-03-16  Jackson Harper  <jackson@ximian.com>
11137         * template.cpp: It doesn't really change anything because
11138         templates are never parented, but technically they should be in non
11139         temporary namescopes.
11141 2009-03-16  Jeffrey Stedfast  <fejj@novell.com>
11143         * textbox.cpp (TextBox::CursorDown, TextBox::CursorUp): Fixed to
11144         go up/down 'n' lines instead of always 1 if n wouldn't overflow.
11146 2009-03-16  Stephane Delcroix  <sdelcroix@novell.com>
11148         * multiscaleimage.cpp:
11149         * multiscalesubimage.h|cpp: keep a ref to the parent MSI, Invalidate
11150         it on VP origin or width changed.
11152 2009-03-13  Stephane Delcroix  <sdelcroix@novell.com>
11154         * multiscaleimage.cpp: fix the clipping issue for collections
11156 2009-03-13  Chris Toshok  <toshok@ximian.com>
11158         * type.h, type-generated.cpp: regen.
11160 2009-03-13  Chris Toshok  <toshok@ximian.com>
11162         * xaml.cpp (value_from_str): in the int32 and int64 case, we need
11163         to parse until we get an invalid character, and return the value
11164         parsed up to that point.  it's only an error if there's no valid
11165         characters.
11167 2009-03-13  Chris Toshok  <toshok@ximian.com>
11169         * textblock.h (class Inline): inlines don't permit multiple
11170         parents (Fixes RunTest.RunMultipleParents).
11172 2009-03-13  Geoff Norton  <gnorton@novell.com>
11174         * xap.cpp: Zip files can contain directory entires, we shouldn't
11175         try to open them as files.
11177 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11179         * xaml.cpp:
11180         * control.cpp: Added a null check to prevent crashes.
11182 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11184         * mediaelement.h:
11185         * mediaelement.cpp: Attach to Deployment::ShuttingDownEvent
11186           and clean up upon shutdown.
11188         * pipeline.h:
11189         * pipeline.cpp: Remove a broken attempt to ensure that we
11190           don't leave Media threads running after having shut down.
11192 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11194         * playlist.cpp: Dispose: fix a typo - dispose the media not
11195           ourselves.
11197 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11199         * playlist.cpp: DownloadProgressChangedHandler: Don't do
11200           anything if we've been disposed. Fixes a warning. 
11202 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11204         * mediaelement.cpp: Dispose: We need to dispose the media
11205           player too.
11207 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11209         * downloader.h: DownloaderResponse: Add virtual ref/unref
11210           methods.
11212 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11214         * mediaplayer.cpp: SetTimeout: Add null-checks to prevent
11215           crashes when we can't find a time manager. Also if we can't
11216           remove a timeout, we have to leak ourselves, otherwise the
11217           timeout might get called after we're destroyed.
11219 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11221         * deployment.h:
11222         * deployment.cpp:
11223         * type-generated.cpp: Added Deployment::ShuttingDownEvent.
11224           This will be used by MediaElement to ensure that all media
11225           threads are cleaned up even if the MediaElement itself is
11226           leaked.
11228 2009-03-13  Stephane Delcroix  <sdelcroix@novell.com>
11230         * multiscaleimage.cpp: no longer use precompiled table for morton
11231         layout, but use short and fast function in place.
11233 2009-03-13  Stephane Delcroix  <sdelcroix@novell.com>
11235         * multiscaleimage.cpp: check for null tiles uri returned by
11236         get_tile_func
11238 2009-03-13  Stephane Delcroix  <sdelcroix@novell.com>
11240         * multiscaleimage.cpp: compute the tie opacity on rendering, avoid
11241         having to loop over all the tiles on every tick.
11243 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11245         * runtime.cpp: Surface::Dispose: call SetSurface (NULL) on the
11246           toplevel element before disposing it, since the SetSurface
11247           will be propagated to all descendants, while Dispose will
11248           detach descendants (preventing subsequent SetSurface calls
11249           to reach them).
11251 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11253         * mediaplayer.cpp: Open: when we add an event handler to the
11254           video stream's FirstFrameEnqueued event, the first frame
11255           might already be in the queue, so just call LoadVideoFrame
11256           once always. Fixes test-canvas-no-size.html.
11258 2009-03-12  Geoff Norton  <gnorton@novell.com>
11260         * src/runtime.cpp: MouseLeaveEvent is a MouseEventArgs
11262 2009-03-12  Geoff Norton  <gnorton@novell.com>
11264         * deepzoomimagetilesource.cpp: Ensure we dont override default values
11265         if nothing has been provided in the XML
11267 2009-03-12  Geoff Norton  <gnorton@novell.com>
11269         * animation.cpp:
11270         * animation.h: Implement SkipToFill
11272 2009-03-12  Larry Ewing  <lewing@novell.com>
11274         * canvas.cpp: don't chain up the FE in the overides that is very
11275         wrong these days.
11277 2009-03-12  Chris Toshok  <toshok@ximian.com>
11279         * runtime.cpp (Surface::CreateArgsForEvent): fix crash in the rich
11280         text demo when you click on the buttons.  we need to be creating
11281         RoutedEventArgs, not EventArgs.
11283 2009-03-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11285         * codec-version.h.in: Bump.
11287 2009-03-12  Alan McGovern  <amcgovern@novell.com>
11289         * dependencyproperty.cpp: 1) Refactor the code so that
11290           open/closing parens are parsed in a separate step to
11291           typename/property name. Then merge the codepaths for the
11292           default and '(' case.
11293         2) Attached properties can only be specified inside parens. So
11294           "Canvas.Left" is invalid but "(Canvas.Left)" is valid.
11295         3) For non-attached properties both "Rectangle.RadiusX" and
11296           "(Rectangle.RadiusX)" are acceptable.
11298 2009-03-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11300         * pipeline.cpp: Add a null check.
11302 2009-03-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11304         * audio.cpp: Use media's thread-safe event handling.
11306         * playlist.h:
11307         * playlist.cpp: PlaylistRoot: keep a reference to our media
11308           player (i.e. don't use MediaElement's media player, it may
11309           change). Use the thread-safe event support in media.
11311         * mediaplayer.h:
11312         * mediaplayer.cpp: Use media's thread-safe event handling.
11313           Don't tick while waiting for the media to get the first
11314           frame, just attach an event handler to
11315           FirstFrameEnqueuedEvent.
11317         * pipeline.h:
11318         * pipeline.cpp: IMediaObject: Add thread-safe event support.
11319           Media: inherit from IMediaObject to get the thread-safe
11320           event support.
11322         * pipeline-asf.cpp: ASFDemuxer::SeekAsyncInternal: don't
11323           ignore ASFReader::Seek's result, handle it correctly.
11324           EnqueueGetFrame: requeue a get frame request if we don't
11325           have enough data yet.
11327 2009-03-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11329         * pipeline.h: Move IMediaObject above Media so that Media can
11330           inherit from IMediaObject.
11332 2009-03-12  Andreia Gaita  <avdigal@novell.com>
11334         * clock.[h|cpp]: Fix DispatcherTimer when the timer is stopped and
11335         started during the tick event; in some cases the time between these
11336         two calls was enough to have an extra tick on the time manager, and
11337         the DispatcherTimer would be advanced again even though it was
11338         stopped, and this would happen after the Completed handler was
11339         removed and before it was added again.
11340         Fixes the RestartTimer2 test and SilverlightChess.
11342 2009-03-11  Jeffrey Stedfast  <fejj@novell.com>
11344         * textbox.cpp (TextBox::OnPropertyChanged): Don't create selection
11345         brushes here anymore.
11346         (class TextBoxDynamicPropertyValueProvider): Return default
11347         selection brushes if they've been initialized (happens in
11348         TextBoxView::Render).
11349         (TextBoxView::Render): Initialize the selection brushes if they
11350         haven't already been.
11352 2009-03-11  Alan McGovern  <amcgovern@novell.com>
11354         * dependencyproperty.cpp: Fix issues in resolve_property_path
11355           with some complex paths. Add two new NUnit tests which
11356           verify the correct properties are animated.
11358 2009-03-11  Jeffrey Stedfast  <fejj@novell.com>
11360         * text.cpp|h: Split into textblock.cpp|h and glyphs.cpp|h
11362         * downloader.cpp (downloader_deobfuscate_font): Moved here from
11363         text.cpp and made public.
11365 2009-03-11  Jeffrey Stedfast  <fejj@novell.com>
11367         * layout.cpp (TextLayoutGlyphCluster::Render): If we have nothing
11368         to render, no-op.
11370 2009-03-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11372         * brush.cpp: ImageBrush::image_failed: we need to ref the
11373           eventargs when we do emit chaining.
11375 2009-03-11  Chris Toshok  <toshok@ximian.com>
11377         * border.cpp (Border::OnPropertyChanged): Border is ever the red
11378         headed stepchild.  It has its own validation wrt SetLogicalParent,
11379         that behaves like the InvalidOperationException case in
11380         FrameworkElement, but throws ArgumentException instead of IOE.
11382 2009-03-11  Chris Toshok  <toshok@ximian.com>
11384         * canvas.h, canvas.cpp (Canvas::OnCollectionItemChanged): move the
11385         Top/Left property changed handling from OnSubPropertyChanged to
11386         here, and remove OnSubPropertyChanged.  Basically property changes
11387         on items in collections are never communicated back using
11388         OnSubPropertyChanged.  That is reserved for direct children of the
11389         object (fill/stroke brushes, etc.)
11391         * grid.h, grid.cpp: same.
11393         * dependencyobject.cpp (DependencyObject::NotifyListenersOfPropertyChange):
11394         remove this use of GetParent (yay!) since we don't implicitly
11395         notify our logical parent if an attached property was changed.  we
11396         just notify all listeners.
11398         * clock.h, clock.cpp, animation.cpp: in an effort to disambiguate,
11399         rename GetParent/SetParent to GetParentClock/SetParentClock.
11401 2009-03-10  Chris Toshok  <toshok@ximian.com>
11403         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
11404         hook up (and unhook) the collection events if the dob is a
11405         Type::COLLECTION.  Remove the stupid parent check that was
11406         breaking everything.  Pass in our MoonError parameter to
11407         OnPropertyChanged so we can communicate it back.
11408         (DependencyObject::ClearValue): unhook from the collection events.
11410         * dependencyobject.h (SetLogicalParent, GetLogicalParent): remove.
11411         these methods are now in FrameworkElement.
11412         (SetParent, GetParent): their replacements.  Hopefully these are
11413         not long for this world, and I'm working on getting rid of them.
11414         they are used in very few places now (basically collection.cpp and
11415         provider.cpp).
11416         (collection_changed, collection_item_changed): two new
11417         EventHandlers so we can make collection stop calling directly into
11418         its parent.
11419         (OnPropertyChanged): add a MoonError* arg here so we can transmit
11420         errors back from the various OnPropertyChanged overrides.
11421         
11422         * validators.h,
11423         validators.cpp (Validators::ContentControlContentValidator): add
11424         half of the "multiple parents for .Content" checks here.  This
11425         runs before the value is actually set and checks to see if the
11426         logical parent is a Panel subclass.  If it is it throws an
11427         ArgumentException instead of an InvalidOperationException (don't
11428         ask me.)
11430         * collection.cpp, collection.h: remove the assumption that we can
11431         just call into our parent to notify of collection/collection item
11432         changes.  instead just emit an event.
11434         * eventargs.h: define CollectionItemChangedEventArgs for the new
11435         Collection::ItemChangedEvent.
11436         
11437         * contentcontrol.h,
11438         contentcontrol.cpp (ContentControl::OnPropertyChanged): call
11439         SetLogicalParent on the old/new contents if they're
11440         FrameworkElements, and if either returns an error, return
11441         immediately.
11443         * usercontro.h, usercontrol.cpp (UserControl::OnPropertyChanged):
11444         same.
11446         
11447         * frameworkelement.cpp, frameworkelement.h: move
11448         Set/GetLogicalParent here, and make the InvalidOperationException
11449         on multiple parents unconditional.
11450         
11451         * panel.cpp (Panel::OnCollectionChanged): if the new/old child is
11452         a FrameworkElement, set its logical parent.
11454         * animations.*, bitmapimage.*, border.*, brush.*, canvas.*,
11455         control.*, deepzoomimagetilesource.*, geometry.*, grid.*, media.*,
11456         mediaelement.*, multiscaleimage.*, popup*, shape.*, stylus.*,
11457         textbox.*, text.*, transform.*, uielement.*: change all the
11458         OnPropertyChanged signatures to include MoonError*
11460         * cbinding.*, dependencyproperty.g.cpp, type-generated.cpp,
11461         type.h, value.h: regen.
11463         * resources.cpp: s/LogicaParent/Parent.
11464         
11465         * provider.h, provider.cpp (StylePropertyValueProvider::unlink_converted_value):
11466         not really part of this larger change, but needed for the
11467         toggleref stuff.  we need to call SetParent on all the
11468         DO-subclassed converted values so they never reference a trashed
11469         parent pointer.
11470         (get_parent): add more cases here, none of which I'm sure are
11471         correct.
11473 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
11475         * textbox.cpp (PasswordBox::OnPropertyChanged): Fixed.
11476         (TextBox::TextBox): New protected ctor that PasswordBox's ctor can
11477         chain up to.
11478         (PasswordBox::PasswordBox): Chain up to the TextBox ctor we want,
11479         so that we don't register event callbacks twice. Doh.
11481 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
11483         * validators.cpp (Validators::PasswordValidator):
11484         Removed. PasswordBox::PasswordProperty is internal, so we map it
11485         to TextBox::TextProperty and manually implement the
11486         getter/setter (which si where we manually throw an
11487         ArgumentNullException if set to null).
11489         * textbox.cpp (PasswordBox::OnPropertyChanged): Manually syncing
11490         Password and Text properties sucks, let's not do it. Instead,
11491         we'll map PasswordProperty to TextProperty on the managed
11492         side. Also need to Invalidate() if PasswordChar changes.
11493         (TextBoxView::Layout): Mask the text with PasswordChars if we are
11494         rendering a PasswordBox's content.
11496 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
11498         * textbox.cpp (PasswordBox::OnPropertyChanged): Keep the Text and
11499         Password properties in sync. Don't emit a PasswordChanged event,
11500         that's mapped to TextChanged on the managed side.
11501         (TextBox::OnApplyTemplate): Handle Border and Panel
11502         ContentElements as well.
11504         * textbox.h (class PasswordBox): Get rid of the
11505         PasswordChangedEvent and also some of the properties that it
11506         shares with TextBox.
11508 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
11510         * contentcontrol.cpp (ContentControl::ContentControl): Use the
11511         nice new ManagedTypeInfo ctor.
11513         * type.h.in (struct ManagedTypeInfo): Added a nice ctor.
11515         * textbox.cpp (TextBox::Initialize): New protected method; all of
11516         the old ctor logic was moved here so that PasswordBox could reuse
11517         it.
11518         (TextBox::TextBox): Call Initialize() with out type info.
11519         (PasswordBox::PasswordBox): Call Initialize() with out type info.
11520         (PasswordBox::Cursor*): Override some of TextBox's cursor
11521         navigation because we don't "see" whitespace or lines.
11523 2009-03-10  Larry Ewing  <lewing@novell.com>
11525         * textbox.cpp (OnApplyTemplate): don't crash it ContentElement
11526         isn't found in the template.
11528 2009-03-10  Jackson Harper  <jackson@ximian.com>
11530         * xaml.cpp: Don't use GetLogicalParent here because the parenting
11531         hasn't been setup yet. Wse the XamlElementInstance tree for
11532         figuring out who our parent is.
11534 2009-03-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11536         * brush.cpp: ImageBrush::image_failed: propagate event args.
11538 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
11540         * layout.cpp (TextLayout::Layout*Wrap*): Changed the outer while
11541         loops into do-while loops so that the line->height and
11542         line->descent get set properly. Needed to fix
11543         TextLayout::GetCursor().
11545 2009-03-10  Jackson Harper  <jackson@ximian.com>
11547         * xaml.cpp: Do some basic type conversion for resources, this
11548         allows you to do things like store a font family as
11549         <clr:String>Arial</clr:String>.
11551 2009-03-10  Jackson Harper  <jackson@ximian.com>
11553         * value.h:
11554         * value.h.in: Consistentify method name.
11555         
11556 2009-03-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11558         * uielement.cpp: GetTimeManager: if we don't have a surface,
11559           try to get it from the deployment.
11561 2009-03-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11563         * pipeline-ui.cpp:
11564         * pipeline-nocodec-ui.cpp: Set current deployment in
11565           ResponseEvent.
11567 2009-03-09  Larry Ewing  <lewing@novell.com>
11569         * border.cpp (Render): set the fill rule after drawing the clip
11570         geometry since it will set the fill rule for itself.
11572 2009-03-09  Chris Toshok  <toshok@ximian.com>
11574         * enums.cpp (cursors_map): add the missing Size* members here.
11575         gets the
11576         http://www.adefwebserver.com/DotNetNukeHELP/Misc/Silverlight/GanttChart/Default.aspx
11577         gallery site to the point where it's displaying a UI.
11579 2009-03-09  Jeffrey Stedfast  <fejj@novell.com>
11581         * textbox.cpp (TextBox::KeyPressUnichar): Fixed a logic goof that
11582         caused a segfault.
11584 2009-03-09  Jeffrey Stedfast  <fejj@novell.com>
11586         * textbox.cpp (TextBox::TextBox): Initialize have_offset to false
11587         and cursor_offset to 0.0. Silverlight doesn't use character column
11588         when moving the cursor up/down, it uses the cursor's x-offset.
11589         (TextBox::CursorDown): Implement using TextLayoutLines.
11590         (TextBox::CursorUp): Same.
11591         (TextBoxView::GetLineFromY): New convenience method.
11592         (TextBoxView::GetLineFromIndex): Another new method.
11594         * layout.cpp (TextLayoutLine::GetCursorFromX): New convenience
11595         method.
11596         (TextLayout::GetCursorFromXY): Moved the remaining logic into
11597         TextLayoutLine::GetCursorFromX().
11598         (TextLayout::GetLineFromY): Provide the line index to our caller,
11599         if requested.
11600         (TextLayout::GetLineFromIndex): New convenience method.
11602 2009-03-09  Jeffrey Stedfast  <fejj@novell.com>
11604         * textbox.cpp (TextBoxView::UpdateCursor): We shouldn't need the
11605         cursor == 0 hack anymore.
11607 2009-03-09  Andreia Gaita  <avidigal@novell.com>
11608     
11609         * dependencyobject.cpp: revert r128895 (toggleref changes) for now,
11610         needs more tests
11612 2009-03-09  Andreia Gaita  <avidigal@novell.com>
11614         * dependencyobject.cpp: do the toggleref callbacks so the managed
11615         side can dispose of things properly
11617 2009-03-09  Jeffrey Stedfast  <fejj@novell.com>
11619         * layout.cpp (unichar_combining_class): New function to protect
11620         against using Glib's g_unichar_combining_class() if the API isn't
11621         available.
11623 2009-03-09  Jackson Harper  <jackson@ximian.com>
11625         * xaml.cpp: Store the top element in the xaml context so we can
11626         still lookup handlers when parsing templates.
11628 2009-03-09  Stephane Delcroix  <sdelcroix@novell.com>
11630         * multiscaleimage.cpp: fix the loop ending conditions for images
11631         with extreme aspect ratios.
11633 2009-03-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11635         * deployment.cpp: Add support for setting the root directory
11636           using MOON_PATH.
11638 2009-03-06  Larry Ewing  <lewing@novell.com>
11640         * multiscaleimage.cpp (Render): cache the surface type as a
11641         similar surface to the rendering target to speed up rendering a
11642         bit.
11644 2009-03-06  Larry Ewing  <lewing@novell.com>
11645         
11646         * layout.cpp (SetText): handle null text here.
11648 2009-03-06  Geoff Norton  <gnorton@novell.com>
11650         * codec-version.h.in: When we change the layout of 
11651         dependencyobject, we need to bump the ABI
11653 2009-03-06  Alan McGovern  <amcgovern@novell.com>
11655         * clock.h:
11656         * cbinding.h:
11657         * animation.h:
11658         * cbinding.cpp:
11659         * animation.cpp: If the PropertyPath supplied to the
11660           TargetPropertyProperty is a DependencyProperty, we need a
11661           special method to retrieve it. Normally PropertyPaths which
11662           are instantiated with a DependencyProperty are returned as
11663           'null' from native. Also add method for getting the manual
11664           target.
11666 2009-03-06  Alan McGovern  <amcgovern@novell.com>
11668         * clock.h:
11669         * ChangeLog:
11670         * cbinding.h:
11671         * animation.h:
11672         * cbinding.cpp:
11673         * animation.cpp: Revert - I didn't mean to commit that yet.
11674           It's not complete.
11676 2009-03-06  Alan McGovern  <amcgovern@novell.com>
11678         * propertypath.h: Need to null check the path before passing
11679           to strcmp - It is possible for the path to be null now.
11681 2009-03-06  Andreia Gaita  <avidigal@novell.com>
11683         * dependencyobject.[h|cpp]: Add toggleref event registration
11684         and handler
11686         * cbinding.[h|cpp]: regen
11688 2009-03-05  Jeffrey Stedfast  <fejj@novell.com>
11690         * layout.cpp (FindLastWord): We need to walk backwards, not
11691         forewards. Oops.
11693 2009-03-05  Alan McGovern  <amcgovern@novell.com>
11695         * propertypath.h: If we set a propertypath with a
11696           DependencyProperty, set the 'path' string to null. This
11697           avoids extra marshalling when it's not needed.
11699 2009-03-04  Geoff Norton  <gnorton@novell.com>
11701         * deployment.cpp: Finalizing the domain destroys all objects
11702         immediately.  Its possible that we might end up invoking more
11703         finalizers in the unref drain thta begins after dispose, so 
11704         we're going to force a full gc and finalizer run of the collected
11705         objects here and allow ~Deployment to finalize the entire domain.
11707 2009-03-04  Jeffrey Stedfast  <fejj@novell.com>
11709         * pipeline.cpp (Media::DisposeObjectInternal): Return
11710         MEDIA_SUCCESS so that control doesn't reach the end of a non-void
11711         function.
11713         * layout.cpp (TextLayout::GetCursorFromXY): Don't use
11714         g_unichar_iszerowidth().
11715         (TextLayout::GetCursor): Same.
11717 2009-03-04  Larry Ewing  <lewing@novell.com>
11719         * border.cpp, border.h: clean up the path_only drawing a
11720         little. set CanFindElement more appropriately.
11722         * panel.cpp: undo the path_only logic a bit.
11724         * frameworkelement.cpp: make FindElementInHostCoordinates a little
11725         simpler.
11727         * uielement.cpp, uielement.h: Make the CanFindElement default be
11728         false, and remove the broken in_stroke check.
11730 2009-03-04  Stephane Delcroix  <sdelcroix@novell.com>
11732         * multiscaleimage.h|cpp: generate PInvoke for Setters so the
11733         animations are used from managed Set() too
11735 2009-03-04  Stephane Delcroix  <sdelcroix@novell.com>
11737         * multiscaleimage.h|cpp: pan and zoom animation in
11738         Viewport[Origin|Width] properties Setters
11740 2009-03-04  Jeffrey Stedfast  <fejj@novell.com>
11742         * layout.cpp: Disable debug printfs unless layout debugging is
11743         enabled.
11745 2009-03-04  Jeffrey Stedfast  <fejj@novell.com>
11747         Fixes the last failing case in LineBreakBasic1.htm
11749         * layout.cpp (layout_word_wrap): When checking for last_word, use
11750         <= instead of < because inptr, at this point, is at the first byte
11751         *after* the character just gobbled up.
11753 2009-03-04  Jeffrey Stedfast  <fejj@novell.com>
11755         Fixes ActualWidth/Height extents for LineBreakBasic1.htm
11757         * layout.cpp (TextLayout::LayoutWrapWithOverflow): ActualWidth
11758         extents include trailing LWSP if-and-only-if that trailing LWSP is
11759         on the last line.
11760         (TextLayout::LayoutNoWrap): Same.
11761         (TextLayout::LayoutWrap): Same.
11763 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
11765         * layout.cpp (GenerateGlyphCluster): Don't crash if glyph->path is
11766         NULL.
11768         * font.cpp (TextFont::GetGlyphInfo): If unichar is
11769         0xFEFF (zero-width no-break space), then return a global
11770         GlyphInfo. We do this because at least some fonts won't have this
11771         glyph and we don't want to render an empty box (the default
11772         glyph).
11774 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
11776         * layout.cpp (layout_word_wrap): Silverlight ignores breaking
11777         rules for glyphs that the font doesn't contain.
11779 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
11781         * layout.cpp (layout_word_wrap): Oops, need to keep op.inptr and
11782         op.prev up-to-date if we combine chars.
11784 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
11786         Fixes a few more cases in LineBreakClasses.htm
11788         * layout.cpp (utf8_find_last_word): If a zero-width space follows
11789         a combining mark, treat the zws as part of a word and not lwsp.
11790         (layout_word_lwsp): Do NOT ignore zero-width characters, let the
11791         font metrics do the talking.
11792         (TextLayout::LayoutNoWrap): Same.
11793         (layout_word_overflow): Same combining-mark fix as above.
11794         (layout_word_wrap): Same. Also changed the way we keep track of
11795         break opportunities. After discoverign that we need to wrap, get
11796         the break-type for the follwoing character before working
11797         backwards. Try to return false if we manage to squeeze the entire
11798         word onto the line anyway.
11800 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
11802         Fixes LineBreakBasic2.htm and some parts of LineBreakClasses.htm
11804         * layout.cpp (BreakSpace): Treat tab as a BREAK_SPACE.
11805         (utf8_find_last_word): Use BreakSpace() instead of
11806         g_unichar_isspace() since that's how the rest of our breaking
11807         logic works.
11808         (FindLastWord): Same.
11809         (layout_word_lwsp): Don't canonicalize all LWSP as a SPACE, just
11810         do it for tabs.
11811         (LayoutNoWrap): Same.
11813 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
11815         * layout.cpp (TextLayout::SetTextWrapping): Default unknown values
11816         to Wrap here so that we can avoid a re-layout if the old wrapping
11817         mode was 'Wrap'.
11819 2009-03-02  Jeffrey Stedfast  <fejj@novell.com>
11821         Fixes some wrapping issues in LineBreakBasic1.htm
11823         * layout.cpp (TextLayout::LayoutWrap): Use a new 'wrapped' state
11824         variable to keep track of whether or not the layout_word_wrap()
11825         function returned. We want to keep 'linebreak' as a separate
11826         state. If we were told to wrap, but we've reached the end of the
11827         run, postpone wrapping until the next run (which might start with
11828         lwsp).
11830 2009-03-02  Jeffrey Stedfast  <fejj@novell.com>
11832         Fixes for AdobeFonts.htm
11834         * layout.cpp (TextLayoutGlyphCluster::Render): Give the underline
11835         its own Fill() so that if any glyphs have a tail that descends
11836         below the baseline into the underline, the fill doesn't negate
11837         itself where the paths overlap.
11838         (GenerateGlyphCluster): Use the font->Ascender() to get the
11839         baseline offset from the top. Height() + Descender() isn't quite
11840         right. Should probably fix other places that use that strategy as
11841         well, but one step at a time.
11843 2009-03-02  Jeffrey Stedfast  <fejj@novell.com>
11845         * textbox.cpp (TextBoxView::TextBoxView): Init selection_changed
11846         to false.
11847         (TextBoxView::Render): If the selection has changed, update the
11848         selection on the layout engine.
11849         (append_runs): Removed; no longer needed.
11850         (TextBoxView::Layout): Updated to use the new layout APIs.
11851         (TextBoxView::OnModelChanged): When the selection changes, don't
11852         set dirty to true. Instead, set selection_changed to true.
11853         (TextBoxView::SetTextBox): Set the default text attributes on our
11854         layout with the textbox as the source.
11856         * text.cpp (TextBlock::Layout): Updated to use the new text layout
11857         APIs.
11859         * layout.cpp: All new layout/rendering engine.
11861 2009-03-04  Geoff Norton  <gnorton@novell.com>
11863         * deployment.cpp: When we dispose the domain, we force a full GC
11864         run to happen, otherwise objects could retain a ref to the deployment
11865         causing ~Deployment to never be called.
11867 2009-03-04  Jackson Harper  <jackson@ximian.com>
11869         * xaml.cpp|h: Add a new method for grabbing the element_name of a
11870         xaml element instance from managed.
11872 2009-03-04  Alan McGovern  <amcgovern@novell.com>
11874         * src.mdp: Add missing files to the MD solution
11876 2009-03-03  Chris Toshok  <toshok@ximian.com>
11878         * collection.cpp (DependencyObjectCollection::AddedToCollection):
11879         add a check for PermitsMultipleParents here.
11881         * collection.h (UIElementCollection::AddWithError): remove.
11883         * dependencyobject.h (DependencyObject::PermitsMultipleParents):
11884         return true by default.
11886         * style.h (class Setter): setters don't permit multiple parents.
11888         * uielement.h (class UIElement): neither do uielements.
11890         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
11891         change the UIElement test to a PermitsMultipleParents test.
11893 2009-03-03  Chris Toshok  <toshok@ximian.com>
11895         * cbinding.h, cbinding.cpp: regen.
11896         
11897         * collection.h, collection.cpp (DependencyObjectCollection::AddedToCollection): if
11898         the parent of the DO is a collection, throw an exception.
11899         (UIElementCollection::CanAdd): remove.
11900         (DependencyObjectCollection::CanAdd): remove.
11901         (HitTestCollection::CanAdd): remove.
11903         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
11904         reinstate the multiple parents warning, but make it a MoonError,
11905         and make it only apply to visual elements (UIElement subclasses,
11906         specifically).
11908         * dependencyobject.h (GetLogicalParentIncludingCollections): add a
11909         new getter for just the logical_parent field, which is horribly
11910         named.
11911         (GetLogicalParent): add a pinvoke for this.
11913 2009-03-03  Jackson Harper  <jackson@ximian.com>
11915         * xaml.cpp|h: SetProperty now takes a Value instead of a
11916         DependencyObject, this allows us to set properties on things like
11917         enums.
11919 2009-03-03  Geoff Norton  <gnorton@novell.com>
11921         * pipeline.cpp:
11922         * pipeline-ui.cpp: Stop storing the mscodec path in the configuration
11923         file.
11925 2009-03-03  Alan McGovern  <amcgovern@novell.com>
11927         * value.cpp:
11928         * propertypath.h: Complete the implementation of PropertyPath.
11929           If it is constructed with a DependencyProperty in managed,
11930           propagate this to native.
11932         * dependencyproperty.cpp: If the property path instance was
11933           constructed with a DependencyProperty *, immediately return
11934           it.
11936 2009-03-03  Alan McGovern  <amcgovern@novell.com>
11938         * animation.h:
11939         * animation.cpp: Implement the required exceptions for managed
11940           code when starting storyboards which are missing properties
11941           or can't find the target element/property.
11943 2009-03-03  Alan McGovern  <amcgovern@novell.com>
11945         * src.mdp: Add propertypath.h to the MD solution
11947 2009-03-03  Alan McGovern  <amcgovern@novell.com>
11949         * animation.h:
11950         * animation.cpp: Storyboards should always use the surface in
11951           the current deployment when starting. They don't have to be
11952           explicitly attached to a surface - SL2 has different
11953           semantics as compared to SL1 which caused some of the 1.0
11954           tests to flag this as a regression.
11956 2009-03-03  Alan McGovern  <amcgovern@novell.com>
11958         * ChangeLog:
11959         * animation.h:
11960         * animation.cpp: Revert last change. I have the test failing
11961           locally now.
11963 2009-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11965         * pipeline-asf.cpp: Add a null check.
11967 2009-03-03  Alan McGovern  <amcgovern@novell.com>
11969         * animation.h:
11970         * animation.cpp: Storyboards should always use the surface in
11971           the current deployment when starting. They don't have to be
11972           explicitly attached to a surface.
11974 2009-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11976         * dependencyobject.cpp: EventObject::SetSurface: only warn
11977           about wrong thread if we're actually change something.
11979         * mediaplayer.cpp: Call DisposeObject on the media to dispose
11980           the frames.
11982         * pipeline.h:
11983         * pipeline.cpp: Add Media::DisposeObject to have objects
11984           disposed on the media thread.
11986 2009-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11988         * pipeline.cpp: Add a missing base call to Dispose.
11990 2009-03-02  Geoff Norton  <gnorton@novell.com>
11992         * pipeline.cpp: SetSource (uri) is not required to be called before
11993         SetSource (Downloader, PartName) from the javascript API.
11995 2009-03-02  Geoff Norton  <gnorton@novell.com>
11997         * deployment.cpp: Enable signal chaning
11999 2009-03-02  Jeffrey Stedfast  <fejj@novell.com>
12001         * textbox.cpp (TextBox::Paste): New method to paste the
12002         contents. Since pasting text is asyncronous, we have to emit our
12003         own events and can't rely on them happening inside OnKeyDown().
12004         (TextBoxView::OnModelChanged): Don't allow 'dirty' to get set to
12005         false if updating the layout returns false.
12007 2009-03-01  AndrĂ©s G. Aragoneses  <aaragoneses@novell.com>
12009         * runtime.cpp: Add an EOL at the end of a printf.
12011 2009-03-01  Jeffrey Stedfast  <fejj@novell.com>
12013         * utils.h: Mark our g_ptr_array_insert*() symbols as internal, we
12014         don't want to be exporting these symbols.
12016 2009-02-27  Stephane Delcroix  <sdelcroix@novell.com>
12018         * multiscaleimage.cpp: use the tiles containing the shared thumbs for
12019         the highest levels of DZ collections. Saves a lot of network traffic.
12021 2009-02-26  Sebastien Pouliot  <sebastien@ximian.com>
12023         * resources.cpp: Simplify (old glib) Clear and use the "right" macro
12025 2009-02-26  Chris Toshok  <toshok@ximian.com>
12027         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
12028         more tweaking of inheritance behavior.  if the parentProperty
12029         exists, check the local value, and if it exists, return that.
12030         otherwise return return GetValue.
12032 2009-02-26  Chris Toshok  <toshok@ximian.com>
12034         * border.cpp (Border::OnPropertyChanged): robustificate this a
12035         touch.
12037 2009-02-26  Chris Toshok  <toshok@ximian.com>
12039         * cbinding.h, cbinding.cpp: regen.
12041         * frameworkelement.cpp (FrameworkElement::FrameworkElement):
12042         initialize default_style_appled to false.
12043         (FrameworkElement::SetDefaultStyle): new method, so that the
12044         managed code can set the default style without going through the
12045         CLR property wrapper (and the DP system), since (stupidly, imo)
12046         the default style isn't exposed by the Style property.
12047         (FrameworkElement::Measure): I don't like doing this hear, but
12048         according to dave relyea's blog, templates are applied when
12049         Measure is called.  we could add an internal measure hook so that
12050         this code could live in control.cpp, but for now this hack will
12051         do.
12053         * frameworkelement.h: expose SetDefaultStyle (GeneratePInvoke too)
12054         and add the default_style_applied field.
12055         
12056         * control.cpp (Control::OnLoaded): only apply the default style
12057         here if we haven't already (to handle the case where the object is
12058         created programmatically).
12060         * xaml.cpp (end_element_handler): according to the blog post in
12061         the added comment, controls defined in XAML get their default
12062         style applied when the end tag is seen.
12064 2009-02-26  Jeffrey Stedfast  <fejj@novell.com>
12066         * textbox.cpp (TextBuffer::Resize): If we fail to downsize, don't
12067         return failure.
12068         (TextBuffer::Replace): Don't call Resize() if the replacement text
12069         is shorter than the old subtext because the realloc() would lose
12070         data before we had a chance to shift things into place.
12072 2009-02-26  Sebastien Pouliot  <sebastien@ximian.com>
12074         * resources.cpp: Fix crash on SLED (old glib) when clearing the 
12075         hashtable (somehow this did not crash before)
12077 2009-02-25  Jackson Harper  <jackson@ximian.com>
12079         * xaml.cpp: Remove some old code that was preventing non-dob
12080         values from being set to native properties.
12082 2009-02-25  Jeffrey Stedfast  <fejj@novell.com>
12084         * textbox.cpp (TextBuffer::Substring): New method to get a
12085         substring.
12086         (class TextBoxUndoAction*): New classes to represent different
12087         types of Undo/Redo actions.
12088         (class TextBoxUndoStack): New Undo/Redo stack class.
12089         (TextBox::TextBox): Initialize undo/redo stacks.
12090         (TextBox): Destroy undo/redo stacks.
12091         (TextBox::KeyPressBackSpace): Record an undo action.
12092         (TextBox::KeyPressDelete): Same.
12093         (TextBox::KeyPressUnichar): Here too.
12094         (TextBox::OnKeyDown): Call Undo() and Redo() when appropriate.
12095         (TextBox::OnPropertyChanged): Record undo actions for setting
12096         SelectedText and Text properties.
12097         (TextBox::Undo): Undo the most recent action.
12098         (TextBox::Redo): Redo the most recent action.
12100 2009-02-25  Stephane Delcroix  <sdelcroix@novell.com>
12102         * multiscaleimage.h|cpp: return the next tile to download
12103         in RenderSingle, RenderCollection. so the download is triggered
12104         from a single place.
12106 2009-02-25  Stephane Delcroix  <sdelcroix@novell.com>
12108         * multiscaleimage.h|cpp: split Render in RenderSingle,
12109         RenderCollection.
12111 2009-02-24  Chris Toshok  <toshok@ximian.com>
12113         * dependencyobject.cpp (EventObject::FinishEmit): if handlers are
12114         added to the list during emission, we can end up doing the Finish
12115         decrements when we didn't do the Start increments, leading to a
12116         negative events->emitting count.  This causes us to spin in
12117         unref_delayed on shutdown.  Fixes bug #479364.
12119         r: kangaroo.
12121 2009-02-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12123         * codec-version.h.in: Bump abi version.
12125         * mediaplayer.h:
12126         * mediaplayer.cpp: Handle frames with width/height set, and
12127           change our cairo surface accordingly.
12129         * pipeline.h:
12130         * pipeline.cpp: Add width/height to MediaFrame, to support
12131           frames with different sizes than the initial size specified
12132           in the stream.
12134 2009-02-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12136         * dependencyobject.cpp: Emit: Add a null check.
12138 2009-02-23  Jeffrey Stedfast  <fejj@novell.com>
12140         * textbox.cpp (TextBoxView::Paint): Try to draw a crisp
12141         1-pixel-wide line for the cursor... apparently cairo has forsaken
12142         1-pixel-wide lines.
12144 2009-02-23  Jeffrey Stedfast  <fejj@novell.com>
12146         * layout.cpp (TextLayout::GetCursor): Revert previous round()
12147         change, this isn't the right way to do it.
12149         * textbox.cpp (TextBoxView::BeginCursorBlink): Call
12150         UpdateCursor().
12151         (TextBox::OnPropertyChanged): Keep proper selection_anchor/cursor
12152         state.
12154 2009-02-23  Stephane Delcroix  <sdelcroix@novell.com>
12156         * multiscaleimage.cpp: remove some debugs, clean the render loops,
12157         cleanly dispose the hashtable and its components
12159 2009-02-23  Jeffrey Stedfast  <fejj@novell.com>
12161         * layout.cpp (TextLayout::GetCursor): Round the cursor's x
12162         position to the nearest whole number (makes the cursor look
12163         nicer).
12165         * textbox.cpp (TextBoxView::Paint): Always paint the cursor black.
12167 2009-02-23  Chris Toshok  <toshok@ximian.com>
12169         * xaml.cpp (value_from_str): handle Type::OBJECT here by just
12170         assuming the value is a string.  Fixes Tag.htm.
12172 2009-02-23  Geoff Norton  <gnorton@novell.com>
12174         * debug.cpp: Don't go poking around in managed land if we don't have
12175         a MonoDomain ()
12177 2009-02-23  Stephane Delcroix  <sdelcroix@novell.com>
12179         * multiscaleimage.cpp: Render () in relative coordinates
12181 2009-02-23  Stephane Delcroix  <sdelcroix@novell.com>
12183         * multiscaleimage.h|cpp: use filename as cache keys
12185 2009-02-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12187         * pipeline.h:
12188         * pipeline.cpp: Only decode on the media thread.
12190 2009-02-23  Alan McGovern  <amcgovern@novell.com>
12192         * uielement.h:
12193         * dependencyproperty.g.cpp: Tag is a System.Object, not a
12194           string.
12196 2009-02-22  Geoff Norton  <gnorton@novell.com>
12198         * pipeline.cpp|h: Add extra_data from managed for AudioStream too
12200 2009-02-22 Geoff Norton  <gnorton@novell.com>
12202         * cbinding.cpp|h: Regen
12203         * pipeline.cpp|h: When constructing a new VideoStream pass the
12204         extra_data from managed.
12206 2009-02-22  Geoff Norton  <gnorton@novell.com>
12208         * pipeline-asf.cpp:
12209         * pipeline.cpp|h: Add some missing codecs.
12211 2009-02-20  Jeffrey Stedfast  <fejj@novell.com>
12213         * layout.cpp (TextLayout::Layout*Wrap*): Always need to update
12214         actual_width, segment->end, etc - even if all we had was
12215         whitespace. Try to keep better track of this state as well.
12216         (TextLayout::GetCursor): The cursor height is actually the same as
12217         the line height.
12219         * textbox.cpp (TextBox::TextBox): Init inkeypress state to false.
12220         (TextBox::OnKeyDown): Set inkeypress to true at the beginning and
12221         false at the end.
12222         (TextBox::OnPropertyChanged): Check for inkeypress so we don't
12223         syncronize things too early (we want to do it in SyncAndEmit() at
12224         the end of OnKeyDown()). Also updated to keep proper emit state.
12225         (TextBox::ClearSelection): Only sync selected text if we aren't in
12226         OnKeyDown().
12227         (TextBox::Select): Same.
12229 2009-02-20  Jeffrey Stedfast  <fejj@novell.com>
12231         * textbox.cpp (TextBuffer::Resize): Return bool - true if we were
12232         able to resize or false if we failed.
12233         (TextBuffer::*): If Resize fails, return.
12234         (TextBox::CursorPrevWord): Only nagivate back so long as i >
12235         begin. Prevents us from returning -1 when begin is 0.
12236         (TextBuffer::Cut): Fixed the logic - we don't want to memmove the
12237         total number of bytes left after cutting, we only want to memmove
12238         the bytes after the cut point.
12240         * moon-path.c (moon_path_ensure_space): New function to replace
12241         the ENSURE_SPACE() macro and moon_path_expand(). Returns bool so
12242         that callers can tell if they have enough space to add the data
12243         they want. Fixed callers to check the return value and return w/o
12244         adding curves, lines, whatever. While this will mean that
12245         Moonlight won't render the path correctly, at least we won't
12246         crash.
12248 2009-02-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12250         * mediaplayer.cpp: Open: Show the first frame upon opening a
12251           video.
12253 2009-02-19  Sebastien Pouliot  <sebastien@ximian.com>
12255         * size.cpp|h: Add FromStr (copied from Point)
12256         * xaml.cpp: Parse Type::SIZE
12258 2009-02-19  Jeffrey Stedfast  <fejj@novell.com>
12260         * stylus.h (class StylusPoint): In managed-land, this class is
12261         actually a struct, so until we find a better way, mark property
12262         accessors for pinvoking.
12263         (class StylusPointCollection): Add AddStylusPoints to the list of
12264         methods to create pinvoke stubs for.
12265         (class StylusInfo): Fixed to have a managed class
12266         autogenerated (internal).
12268         * brush.cpp (VideoBrush::SetSource): Implemented.
12270 2009-02-19  Sebastien Pouliot  <sebastien@ximian.com>
12272         * dependencyobject.cpp|h: The parameter is not needed anymore
12273         since the xaml code was updated to work without using the
12274         logical parent.
12276 2009-02-19  Jackson Harper  <jackson@ximian.com>
12278         * xaml.cpp: Implement StaticResource element syntax.
12280 2009-02-18  Jeffrey Stedfast  <fejj@novell.com>
12282         * geometry.h (class PathGeometry): Don't autocreate the
12283         FiguresProperty until we can figure out why it breaks the PDC
12284         site.
12286 2009-02-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12288         * mediaelement.h: We always want OnPropertyChanged for
12289           PositionProperty. Fixes seeking to start/0.
12291         * dependencyproperty.g.cpp: Regenerated.        
12293 2009-02-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12295         * mediaelement.cpp: ctor: Initialize flags correctly.
12297 2009-02-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12299         * playlist.cpp:
12300         * pipeline.cpp:
12301         * pipeline-asf.cpp:
12302         * mediaelement.cpp: g_warn_if_failed -> g_return_if_failed to
12303           make sled (glib 2.10) happy.
12305 2009-02-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12307         * pipeline.h:
12308         * pipeline.cpp:
12309         * playlist.cpp:
12310         * mediaelement.h:
12311         * mediaelement.cpp: Initial implementation of
12312           MediaStreamSource.
12314         * cbinding.h:
12315         * cbinding.cpp: Regenerated.
12317 2009-02-18  Alan McGovern  <amcgovern@novell.com>
12319         * clock.h:
12320         * clock.cpp:
12321         * animation.h:
12322         * animation.cpp: Storyboards are considered 'children' if they
12323           ever were attached as a child of another timeline. The
12324           current status doesn't appear to matter.
12325           (StoryboardTest.RemoveChildThenStart).
12327 2009-02-18  Stephane Delcroix  <sdelcroix@novell.com>
12329         * multiscaleimage.h|cpp: remove GetViewPortHeight, fix the rendering
12330         of single images
12332 2009-02-17  Chris Toshok  <toshok@ximian.com>
12334         * text.cpp (TextBlock::TextBlock): remove this hack.
12336 2009-02-17  Chris Toshok  <toshok@ximian.com>
12338         * textbox.cpp (TextBox::OnPropertyChanged): add the same hardening
12339         to the SelectedText case, and also don't perform the remaining
12340         operations if g_utf8_to_ucs4_fast fails.
12342 2009-02-17  Jeffrey Stedfast  <fejj@novell.com>
12344         * dependencyobject.cpp: Now takes an only_changed argument; if
12345         true, then only return the properties which have been
12346         changed (plus any values which have been auto-created).
12348         * mediaelement.cpp (MediaElement::MediaElement): Set
12349         BufferingTimeProperty and PositionProperty in the ctor, we can't
12350         use DefaultValue nor AutoCreateValue for these since they need to
12351         be returned by ReadLocalValue() immediately after instantiating a
12352         new MediaElement object.
12354         * media.h (class MediaAttribute): Set managed namespaces for
12355         MediaAttribute and MediaAttributeCollection, we have internal
12356         managed implementations of these now.
12358         * text.h (class TextBlock): Changed default LineHeightProperty
12359         value from NaN to 0.0 (docs say NaN is the default, but not
12360         according to the unit tests).
12362         * textbox.h (class TextBox): Changed default TextProperty value
12363         from "" to null (docs say "" is the default, but not according to
12364         the unit tests).
12366         * media.cpp (Image::Image): Fix the SourceProperty to be
12367         autocreated.
12369         * shape.cpp (Polygon::Polygon): Don't set a point
12370         collection. We'll make it autocreated instead.
12371         (Polyline::Polyline): Same.
12373         * geometry.h (class PathFigure): Set the default value of
12374         IsFilledProperty to true.
12375         (class PathGeometry): AutoCreate the FiguresProperty.
12376         (class PolyBezierSegment): AutoCreate the PointsProperty.
12377         (class PolyLineSegment): AutoCreate the PointsProperty.
12378         (class PolyQuadraticBezierSegment): AutoCreate the PointsProperty.
12380         * deployment.h (class AssemblyPart): Set the default value of
12381         AssemblyPart::SourceProperty to "".
12383         * mediaelement.h: Set the default value of CurrentState to Closed.
12385         * mediaelement.cpp (MediaElement::MediaElement): Don't need to set
12386         Markers or Attributes properties, these are autocreated.
12388 2009-02-17  Alan McGovern  <amcgovern@novell.com>
12390         * animation.cpp: Missed out on a "!" when changing from
12391           GetIsChild to GetIsRootStoryboard
12393 2009-02-17  Alan McGovern  <amcgovern@novell.com>
12395         * cbinding.h:
12396         * cbinding.cpp: Regenerated
12398         * animation.h:
12399         * animation.cpp: Add *WithError functions so that storyboards
12400           can throw the right exceptions when they are not the root
12401           Storyboard.
12403 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12405         * mediaelement.cpp: Add some null checks.
12407 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12409         * mediaelement.h:
12410         * mediaelement.cpp: Move bitfields into our flags field.
12411           Remove allow_downloads and related methods, no longer used.
12413 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12415         * mediaelement.h:
12416         * mediaelement.cpp: Remove GetDownloaderPolicy, not used
12417           anymore.
12419 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12421         * pipeline.h:
12422         * playlist.h:
12423         * playlist.cpp:
12424         * pipeline.cpp:
12425         * mediaelement.cpp: Make SetSource (Stream) work again.
12427 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12429         * mp3.h:
12430         * mp3.cpp:
12431         * audio.h:
12432         * audio.cpp:
12433         * audio-alsa.cpp:
12434         * pipeline-ffmpeg.h:
12435         * yuv-converter.cpp:
12436         * pipeline-ffmpeg.cpp: Update according to new pipeline api.
12438         * playlist.h:
12439         * pipeline.h:
12440         * pipeline.cpp:
12441         * playlist.cpp:
12442         * mediaplayer.h:
12443         * mediaelement.h:
12444         * pipeline-asf.h:
12445         * mediaplayer.cpp:
12446         * pipeline-asf.cpp:
12447         * mediaelement.cpp:
12448         * mms-downloader.h:
12449         * mms-downloader.cpp: Rework pipeline to be async to support
12450           MediaStreamSource.
12452         * type.h:
12453         * value.h:
12454         * cbinding.h:
12455         * cbinding.cpp:
12456         * type-generated.cpp:
12457         * dependencyproperty.g.cpp: Regenerated.
12459         * codec-version.h.in: Bump codec abi.
12461         * downloader.cpp: Include uri.h.
12463         * downloader.h: Add accessor for failed_msg.
12465         * enums.h:
12466         * enums.cpp: Rename MediaElementState to MediaState.
12468         * mutex.h: Added, a pthread implementation of a mutex allowing
12469           easy c++ usage.
12471         * template.h: Inlcude xaml.h and add a forward declaration of
12472           XamlContext.
12474         * window.h: Add a forward declaration of MoonWindow.
12476         * src.mdp: Updated.
12478         * dependencyobject.h:
12479         * dependencyobject.cpp: Added EVENTHANDLER macro. Added
12480           support for emititng events from other than the main thread
12481           (by marshalling the event emission to the main thread).
12483 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12485         * deployment.cpp: Use printf instead of g_warning for a
12486           message which is always printed. Makes it less annoying to
12487           break on g_log while debugging.
12489 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12491         * type.h:
12492         * value.h:
12493         * type-generated.cpp: Regenerate.
12495 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12497         * pipeline.h:
12498         * pipeline.cpp:
12499         * mediaelement.h:
12500         * mediaelement.cpp: Remove MediaErrorEventArgs.
12502 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12504         * debug.h: Added LOG_MP3.
12506         * runtime.cpp: Surface ctor: set the surface of the current
12507           deployment to the ourself.
12509 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12511         * runtime.h: Add a VERIFY_MAIN_THREAD sanity macro.
12513         * runtime.cpp: Add support for MOONLIGHT_DEBUG=all.
12515 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12517         * runtime.h:
12518         * runtime.cpp: CreateDownloader: take an EventObject instead
12519           of UIElement.
12521 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12523         * runtime.h:
12524         * runtime.cpp: Add mp3 support to MOONLIGHT_DEBUG.
12526 2009-02-17  Atsushi Enomoto  <atsushi@ximian.com>
12528         * geometry.h, geometry.cpp, dependencyproperty.g.cpp:
12529           Fixed type of ArcSegment::Size from Point to Size.
12531 2009-02-16  Jeffrey Stedfast  <fejj@novell.com>
12533         * text.h: Default TextBlock font size seems to be 11px in SL2 as
12534         opposed to 14.667 in SL1.
12536 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12538         * brush.h:
12539         * media.cpp:
12540         * mediaelement.cpp: Move image_brush_compute_pattern_matrix
12541           from media.cpp/mediaelement.cpp to brush.h to avoid having
12542           two declarations of the same method.
12544 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12546         * brush.cpp: Include mediaplayer.h here.
12548 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12550         * dependencyobject.cpp: Change our g_error into a g_warning.
12551           Reffing an object with refcount = 0 can actually happen now.
12553 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12555         * dependencyobject.cpp: AddTickCallInternal: if we don't have
12556           a surface, get it from the deployment.
12558 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12560         * dependencyobject.cpp: EventObject. unref and null out the
12561           deployment in the dtor instead of in Dispose.
12563 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12565         * dependencyobject.h:
12566         * dependencyobject.cpp: Add
12567           DependencyObject::RemoveAllHandlers.
12569 2009-02-16  Alan McGovern  <amcgovern@novell.com>
12571         * animation.cpp: Remove the calls to ref/unref as they are
12572           unnecessary.
12574 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12576         * libmoon.h: Don't include playlist.h here. Fixes issues with
12577           the plugin when playlist.h includes expat.
12579 2009-02-16  Alan McGovern  <amcgovern@novell.com>
12581         * cbinding.h:
12582         * animation.h:
12583         * cbinding.cpp:
12584         * animation.cpp: Implement the managed side of
12585           Storyboard.GetCurrentState ().
12587 2009-02-16  Alan McGovern  <amcgovern@novell.com>
12589         * type.h:
12590         * type.h.in: The renaming changes in r126921 break the build
12591           if the generator is run because type.h.in didn't contain the
12592           CopyProperties prototype.
12594 2009-02-16  Geoff Norton  <gnorton@novell.com>
12596         * media.cpp:
12597         * downloader.h: Downloaders created in javascript can suffer the
12598         same shared-cache firefox bug, so we need to expose the buffer
12599         to the image layer in case this is the place.
12601 2009-02-14  Jeffrey Stedfast  <fejj@novell.com>
12603         * dependencyobject.cpp (DependencyObject::GetProperties): New
12604         method to get an array of all properties on the object (including
12605         currently attached properties).
12607         * type.cpp (Type::CopyProperties): Renamed from GetProperties()
12608         and changed what it does a bit. Now takes an 'inherited' argument
12609         and returns a GHashTable of properties keyed by GetHashKey().
12611 2009-02-14  Chris Toshok  <toshok@ximian.com>
12613         * dependencyobject.h, dependencyobject.cpp: rename
12614         "current_values" as "local_values".  current_values now means
12615         "local values + autocreated values".  At this point, add
12616         GetCurrentValues which returns a new hashtable containing a union
12617         of both sets, and add FreeCurrentValues to destroy it.
12619         * provider.cpp (LocalPropertyValueProvider::GetPropertyValue): use
12620         DependencyObject::GetLocalValues instead of GetCurrentValues.
12622 2009-02-13  Chris Toshok  <toshok@ximian.com>
12624         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
12625         fix a number of logical errors.  gets inlines properly inheriting
12626         text properties.
12628 2009-02-14  Jeffrey Stedfast  <fejj@novell.com>
12630         * type.cpp (Type::GetProperties): New method to get an array of
12631         DependencyProperties for a Type.
12633 2009-02-13  Geoff Norton  <gnorton@novell.com>
12635         * playlist.cpp: Check these string with g_ascii_str* as well.
12636         Also these should be case-insensitive checks.
12638 2009-02-13  Jeffrey Stedfast  <fejj@novell.com>
12640         * mediaelement.h (class MediaElement): NaturalVideoWidth/Height
12641         should be ints, not doubles.
12643         * text.h (class Glyphs): Set the DefaultValues for
12644         UnicodeStringProperty, IndicesProperty, and FontUriProperty to "".
12646         * bitmapimage.cpp (BitmapImage::BitmapImage): Don't call
12647         SetUriSource("") (it's already the DefaultValue).
12649 2009-02-13  Geoff Norton  <gnorton@novell.com>
12651         * media.cpp|h: Ensure we're comparing magics with unsigned values, and 
12652         fix a logic bug that prevented us from proplery writing progressive pixbuf
12653         loaders.
12655 2009-02-13  Jeffrey Stedfast  <fejj@novell.com>
12657         * multiscaleimage.h (class MultiScaleImage): Rename the
12658         SubImageCollectionProperty to SubImagesProperty to match
12659         Silverlight.
12661 2009-02-13  Geoff Norton  <gnorton@novell.com>
12663         * runtime.cpp|h: Add a new overload to control the gdk_pixbuf_loader
12664         behaviour.
12665         * media.cpp|h: Ensure that we only load jpeg/png images like microsoft
12666         does when running in the browser profile.
12668 2009-02-13  Alan McGovern  <amcgovern@novell.com>
12670         * value.cpp: Use the GPOINTER_TO_INT macro as suggested rather
12671           than casting to a 64bit then 32bit value.
12673 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
12675         * multiscaleimage.h|cpp: drop the friend here too
12677 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
12679         * tilesource.h: drop the friends
12681 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
12683         * Makefile.am: remove deepzoomimagetilesource.h from the
12684         include_headers. no one should code against it.
12686 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
12688         * multiscaleimage.cpp:
12689         * deepzoomimagetilesource.h|cpp: dzits no longer have any friends
12691 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
12693         * multiscaleimage.cpp: timing macros
12695 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
12697         * multiscaleimage.cpp: embed the rendering in push_group/pop_group then
12698         paint at once to avoid flickering.
12700 2009-02-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12702         * downloader.cpp: Sprinkle a few SetCurrentDeployments. Fixes
12703           a crash when downloading mms streams (due to not having
12704           deployment set).
12706 2009-02-12  Geoff Norton  <gnorton@novell.com>
12708         * playlist.cpp: Ensure that we don't poke around in random memory
12709         if we have an invalid entry in our parser.
12711 2009-02-12  Alan McGovern  <amcgovern@novell.com>
12713         * value.cpp: Add an assert in case the gchandle value is out
12714           of range.
12716 2009-02-12  Alan McGovern  <amcgovern@novell.com>
12718         * value.cpp: Fix compile error on x64 when casting a void* to
12719           a gint32.
12721 2009-02-12  Alan McGovern  <amcgovern@novell.com>
12723         * value.cpp: Managed objects are stored in native as
12724           GCHandles. Use the mono api to get the target of that
12725           GCHandle so that they can be compared correctly in
12726           value.cpp. Remove hack in ItemCollection.cs which worked
12727           around this bug.
12729 2009-02-12  Stephane Delcroix  <sdelcroix@novell.com>
12731         * multiscalesubimage.h|cpp: add id, n as ctor params, make the ctor
12732         public, drop a friend.
12733         * deepzoomimagetilesource.h|cpp: EndElement is now a class method, drop
12734         a friend.
12736 2009-02-12  Stephane Delcroix  <sdelcroix@novell.com>
12738         * deepzoomtilesource.cpp: some g_ascii love
12740 2009-02-11  Chris Toshok  <toshok@ximian.com>
12742         * text.h: Inline's fontsize default value is 11.  looks like
12743         textblock is the only case where it differs.
12745 2009-02-11  Jeffrey Stedfast  <fejj@novell.com>
12747         * eventargs.h (MouseEventArgs::GetEvent): Expose the raw GdkEvent.
12749         * textbox.cpp (TextBoxView::ConnectBlinkTimeout): Get the cursor
12750         blink timeout from the GtkSettings.
12751         (TextBox::OnKeyDown): Don't bother printing the buffer anymore,
12752         things seem to have been debugged enough now.
12753         (TextBox::CursorLineBegin): New convenience method.
12754         (TextBox::CursorLineEnd): Same.
12755         (TextBox::OnMouseLeftButtonDown): Implemented double and
12756         triple-click. Capture mouse if single-click.
12757         (TextBox::OnMouseLeftButtonUp): Release mouse capture.
12758         (TextBox::CursorPrevWord): Don't allow ourselves to go beyond the
12759         beginning of the line.
12761 2009-02-11  Alan McGovern  <amcgovern@novell.com>
12763         * text.h:
12764         * shape.h:
12765         * media.h:
12766         * panel.h:
12767         * text.cpp:
12768         * border.h:
12769         * panel.cpp:
12770         * shape.cpp:
12771         * textbox.h:
12772         * media.cpp:
12773         * border.cpp:
12774         * textbox.cpp:
12775         * uielement.h:
12776         * uielement.cpp:
12777         * mediaelement.h:
12778         * mediaelement.cpp:
12779         * multiscaleimage.h:
12780         * multiscaleimage.cpp: Switch FindElementsInHostCoordinates to
12781           use the ::Render codepaths instead of it's own custom
12782           codepath. Added an extra parameter to ::Render () to specify
12783           whether or not the paths appended to the cairo_t should be
12784           filled/stroked/clipped. This allows a whole bunch of NUnit
12785           tests to pass.
12787         * usercontrol.cpp:
12788         * frameworkelement.cpp: Add an extra parameter to ::Render ()
12789           to specify whether or not the paths appended to the cairo_t
12790           should be filled/stroked/clipped so it can be shared with
12791           the managed hittesting.
12792         Switch FindElementsInHostCoordinates to use the ::Render
12793           codepaths instead of it's own custom codepath. This allows a
12794           whole bunch of NUnit tests to pass.
12796 2009-02-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12798         * grid.h:
12799         * text.h:
12800         * clock.h:
12801         * panel.h:
12802         * shape.h:
12803         * style.h:
12804         * media.h:
12805         * popup.h:
12806         * brush.h:
12807         * canvas.h:
12808         * border.h:
12809         * stylus.h:
12810         * control.h:
12811         * trigger.h:
12812         * textbox.h:
12813         * geometry.h:
12814         * template.h:
12815         * namescope.h:
12816         * uielement.h:
12817         * animation.h:
12818         * transform.h:
12819         * collection.h:
12820         * downloader.h:
12821         * animation2.h:
12822         * deployment.h:
12823         * bitmapimage.h:
12824         * application.h:
12825         * usercontrol.h:
12826         * mediaelement.h:
12827         * contentcontrol.h:
12828         * multiscaleimage.h:
12829         * frameworkelement.h:
12830         * dependencyobject.h:
12831         * multiscalesubimage.h:
12832         * dependencyproperty.g.cpp:
12833         * deepzoomimagetilesource.h: Make DP backing fields const.
12835 2009-02-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12837         * grid.cpp:
12838         * text.cpp:
12839         * panel.cpp:
12840         * media.cpp:
12841         * shape.cpp:
12842         * popup.cpp:
12843         * brush.cpp:
12844         * border.cpp:
12845         * canvas.cpp:
12846         * stylus.cpp:
12847         * control.cpp:
12848         * textbox.cpp:
12849         * geometry.cpp:
12850         * uielement.cpp:
12851         * transform.cpp:
12852         * usercontrol.cpp:
12853         * bitmapimage.cpp:
12854         * mediaelement.cpp:
12855         * contentcontrol.cpp:
12856         * dependencyobject.h:
12857         * multiscaleimage.cpp:
12858         * dependencyobject.cpp:
12859         * frameworkelement.cpp:
12860         * deepzoomimagetilesource.cpp: PropertyChangedEventArgs: make
12861           dp and id fields private and add accessors.
12863 2009-02-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12865         * type.h:
12866         * grid.h:
12867         * text.h:
12868         * shape.h:
12869         * style.h:
12870         * clock.h:
12871         * brush.h:
12872         * media.h:
12873         * panel.h:
12874         * popup.h:
12875         * grid.cpp:
12876         * canvas.h:
12877         * xaml.cpp:
12878         * type.cpp:
12879         * border.h:
12880         * stylus.h:
12881         * text.cpp:
12882         * media.cpp:
12883         * type.h.in:
12884         * textbox.h:
12885         * shape.cpp:
12886         * panel.cpp:
12887         * trigger.h:
12888         * brush.cpp:
12889         * control.h:
12890         * template.h:
12891         * geometry.h:
12892         * stylus.cpp:
12893         * canvas.cpp:
12894         * border.cpp:
12895         * namescope.h:
12896         * uielement.h:
12897         * control.cpp:
12898         * animation.h:
12899         * textbox.cpp:
12900         * transform.h:
12901         * animation2.h:
12902         * collection.h:
12903         * provider.cpp:
12904         * geometry.cpp:
12905         * downloader.h:
12906         * deployment.h:
12907         * application.h:
12908         * transform.cpp:
12909         * bitmapimage.h:
12910         * usercontrol.h:
12911         * uielement.cpp:
12912         * animation.cpp:
12913         * mediaelement.h:
12914         * usercontrol.cpp:
12915         * mediaelement.cpp:
12916         * contentcontrol.h:
12917         * multiscaleimage.h:
12918         * contentcontrol.cpp:
12919         * frameworkelement.h:
12920         * dependencyobject.h:
12921         * multiscaleimage.cpp:
12922         * dependencyproperty.h:
12923         * multiscalesubimage.h:
12924         * frameworkelement.cpp:
12925         * dependencyobject.cpp:
12926         * dependencyproperty.cpp:
12927         * dependencyproperty.g.cpp:
12928         * deepzoomimagetilesource.h:
12929         * deepzoomimagetilesource.cpp: Change our static
12930           DependencyProperty backing fields to store an integer id
12931           instead of an instance to a DependencyProperty. This way we
12932           can have true per-deployment dependency properties.
12934 2009-02-11  Alan McGovern  <amcgovern@novell.com>
12936         * shape.cpp:
12937         * panel.cpp:
12938         * collection.h:
12939         * usercontrol.h:
12940         * usercontrol.cpp:
12941         * frameworkelement.cpp: Commit some more updates to the
12942           managed hittesting.
12944 2009-02-10  Jeffrey Stedfast  <fejj@novell.com>
12946         * layout.cpp (TextLayout::Layout*Wrap*): Kern between runs. Fixes
12947         xchatitis in TextBox.
12949 2009-02-10  Jeffrey Stedfast  <fejj@novell.com>
12951         * fontfamily.h (struct FontFamily): Implemented != operator.
12953         * text.cpp (Inline::Equals): Fixed the fontfamily check.
12955         * provider.cpp (AutoCreatePropertyValueProvider::SetSurface): Removed.
12957         * dependencyobject.cpp (DependencyObject::Dispose): Fixed to
12958         dispose autocreated values too.
12959         (DependencyObject::RemoveAllListeners): Same here.
12960         (DependencyObject::RegisterAllNamesRootedAt): And here.
12961         (DependencyObject::UnregisterAllNamesRootedAt): Here too.
12963 2009-02-10  Jeffrey Stedfast  <fejj@novell.com>
12965         * panel.cpp (Panel::GetSubtreeObject): Override UIElement's
12966         GetSubtreeObject so that we can auto-create our Children property
12967         and set it if it hasn't already been set.
12969         * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
12970         We need to clear the LocalProvider value as well, if there is
12971         one. Also, don't allow setting a Value* with a null
12972         DependencyObject if it is an autocreate property.
12973         (DependencyObject::ClearValue): Clear the LocalProvider value too.
12974         (DependencyObject::SetSurface): SetSurface on autocreated values too.
12976         * dependencyproperty.cpp (DependencyProperty::DependencyProperty):
12977         Now takes another bool arg to specify whether it is allowed to
12978         autocreate new DP values.
12979         (DependencyProperty::Register): Updated.
12980         (DependencyProperty::RegisterFull): Updated, now also takes an
12981         autocreate arg.
12983         * provider.cpp (AutoCreatePropertyValueProvider): A new provider
12984         which sits below DefaultValue.
12986         * *.cpp (*::ctor): Remove calls to SetValue()
12988         * *.h: Added AutoCreateValue where appropriate.
12990 2009-02-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12992         * color.h: fabs is in math.h.
12994 2009-02-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12996         * list.h:
12997         * list.cpp: Add a simple ArrayList implementation.
12999         * type.h:
13000         * cbinding.h:
13001         * cbinding.cpp:
13002         * type-generated.cpp:
13003         * dependencyproperty.g.cpp: Regenerated.
13005         * dependencyproperty.h:
13006         * dependencyproperty.cpp: RegisterCustom: removed, no longer
13007           used anywhere. RegisterNull: incorporated into
13008           RegisterFull. Register[Full]: take another Types* argument
13009           so that the registration doesn't have to look it up in the
13010           deployment for every call (this way we can later register
13011           dependency properties in the Types ctor). Also move any
13012           logic from the individial Register overloads to
13013           RegisterFull, this way we don't have different logic
13014           depending on the overload.
13016         * type.cpp:
13017         * type.h.in: Keep a list of all properties for all types on
13018           the Types* instance, and remove the custom properties (hash
13019           and list) on the Type* instance, keeping only one hash
13020           table for both native and custom properties.
13022 2009-02-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13024         * brush.h:
13025         * runtime.h:
13026         * window-gtk.h:
13027         * downloader.h:
13028         * usercontrol.h:
13029         * file-downloader.h: Only use G_BEGIN/END_DECLS around c
13030           methods (and in files with no c methods remove completely).
13032 2009-02-10  Jackson Harper  <jackson@ximian.com>
13034         * xaml.h|cpp: New method for getting the key of an element
13035         instance.
13036         - Pass the element instance data for the values to set property
13037         when we have one, otherwise pass NULL.
13039 2009-02-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13041         * dependencyproperty.g.cpp: Temporary fix for > 1 xap per
13042           process: don't check if DPs have been created before
13043           recreating them.
13045 2009-02-10  Alan McGovern  <amcgovern@novell.com>
13047         * border.cpp: Corner rounding is now taken into account when
13048           hittesting a Border
13050 2009-02-10  Fernando Herrera  <fherrera@novell.com>
13052         * value.cpp: Fix GetIsNull call casting in the copy
13053         constructor.
13055 2009-02-09  Chris Toshok  <toshok@ximian.com>
13057         * value.cpp: call SetIsNull everywhere so we can always check
13058         GetIsNull.
13060 2009-02-09  Alan McGovern  <alan.mcgovern@gmail.com>
13062         * border.h:
13063         * shape.cpp:
13064         * border.cpp:
13065         * frameworkelement.cpp: Three more of the NUnit tests are now
13066           passing for FindElementsInHostCoordinates
13068 2009-02-09  Alan McGovern  <alan.mcgovern@gmail.com>
13070         * panel.h:
13071         * shape.h:
13072         * shape.cpp:
13073         * panel.cpp:
13074         * uielement.h:
13075         * frameworkelement.cpp: Commit some more of the hittest code.
13077 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
13079         * type.h.in (class Types): Added a private static field to record
13080         whether or not the static DP's have already been registered.
13082 2009-02-09  Geoff Norton  <gnorton@novell.com>
13084         * deployment.cpp: Support enabling coreclr for moonlight so we
13085         can start dogfooding this.
13087 2009-02-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13089         * deployment.cpp: Remove redundant call to SetObjectType.
13091 2009-02-08  Chris Toshok  <toshok@ximian.com>
13093         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
13094         add inheritance of FrameworkElement::DataContextProperty.
13096         * frameworkelement.[cpp,h]: remove all the databinding stuff from
13097         here - it's all handled in managed code now.
13099         * dependencyproperty.[cpp,h]: add SetPropertyChangedCallback.
13101         * cbinding.[cpp,h]: regen.
13103 2009-02-07  Sebastien Pouliot  <sebastien@ximian.com>
13105         * xaml.cpp: Adjust lookup to find StaticResources defined in 
13106         a ResourceDictionary. re-fix parsing of generic.xaml for the
13107         SL toolkit (unit tests)
13109 2009-02-07  Larry Ewing  <lewing@novell.com>
13111         * border.cpp (Border::ArrangeOverride): 
13112         * usercontrol.cpp (UserControl::ArrangeOverride): Fix padding on
13113         border children.
13115         * grid.cpp (Grid::MeasureOverride): distribute the allocation
13116         across auto dimensions when it makes sense.
13117         
13118 2009-02-07  Larry Ewing  <lewing@novell.com>
13120         * grid.cpp (Grid::MeasureOverride): don't give our whole
13121         allocation to the first column.
13123 2009-02-07  Sebastien Pouliot  <sebastien@ximian.com>
13125         * stylus.cpp: Committed a variation of Geoff patch to fix
13126         the crash when running moon-unit
13128 2009-02-07  Geoff Norton  <gnorton@novell.com>
13130         * cbinding.cpp|h: Regenerate
13131         * deployment.cpp|h: API cleanup
13132         * downloader.cpp|h: Generate some code that doesn't need to be
13133         hand maintained.  Clean up some API to prevent a crash when
13134         unregistering downloaders.
13136 2009-02-07  Geoff Norton  <gnorton@novell.com>
13138         * color.h:
13139         * cornerradius.h:
13140         * point.h:
13141         * rect.h:
13142         * size.h: Account for an epsilon when comparing these structures
13143         to avoid erroneously emitting false results.
13145 2009-02-07  Jeffrey Stedfast  <fejj@novell.com>
13147         * text.cpp (TextBlock::GetTextInternal): Now takes an
13148         InlineCollection argument.
13149         (TextBlock::OnPropertyChanged): Pass args->new_value to
13150         GetTextInternal() so that we avoid unnecesary recursion in the
13151         case that we're being called as a result of a GetValue() of the
13152         InlinesProperty.
13153         (TextBlock::OnCollectionChanged): Updated.
13154         (TextBlock::OnCollectionItemChanged): Updated.
13156 2009-02-06  Larry Ewing  <lewing@novell.com>
13158         * shape.cpp (Shape::ArrangeOverride): take alignment into account
13159         when Stretch == None.
13161         * media.cpp (Image::ArrangeOverride):
13162         * mediaelement.cpp (MediaElement::ArrangeOverride): take alignment
13163         into account when Stretch == None.
13165         * grid.cpp, grid.h: keep track of the automagical w/h make handle
13166         it properly when alignment is not stretch.  Fixes leaf control
13167         placement on "the moment".
13169 2009-02-06  Larry Ewing  <lewing@novell.com>
13171         * type.cpp:
13172         * playlist.cpp:
13173         * enums.cpp (enum_from_str): use g_ascii_strcasecmp.
13175         * deepzoomimagetilesource.cpp (start_element): use g_ascii_strtod.
13177         * xaml.cpp (value_from_str): replace use g_ascii_strcasecmp
13178         everywhere.
13180 2009-02-06  Larry Ewing  <lewing@novell.com>
13182         * control.cpp (Control::Control): remove bad setting of
13183         foreground.
13185 2009-02-06  Jackson Harper  <jackson@ximian.com>
13187         * xaml.cpp|h: Add a new method for retrieving the control template
13188         parent of a xaml element instance (called from unmanaged).
13189         - quick hack to force binding expressions to be parsed in managed.
13191 2009-02-06  Jeffrey Stedfast  <fejj@novell.com>
13193         * keyboard.cpp (Keyboard::MapKeyValToKey): Map alternative names
13194         for *+/- and . to our Key enum needed for the DLR Console app.
13196 2009-02-06  Jeffrey Stedfast  <fejj@novell.com>
13198         * Reverted previous commit as I goofed the unit test on
13199         Windows. Once I fixed it, the logic I worked so hard to achieve
13200         wasn't correct :(
13202 2009-02-06  Larry Ewing  <lewing@novell.com>
13204         * frameworkelement.cpp (FrameworkElement::Arrange): don't align if
13205         we are the toplevel.
13207 2009-02-06  Jeffrey Stedfast  <fejj@novell.com>
13209         See InkPresenter's ClearValue unit test
13211         1. Calling SetValue() in ctors was gross.
13212         2. it was wrong because ReadLocalValue() on Silverlight got "Unset"
13213         3. it broke things if ClearValue was used and/or if the properties
13214            were set to null
13216         * dependencyobject.cpp (DependencyObject::GetDefaultValue): New
13217         method to query for a default property value as used by the
13218         PropertyValueProviders.
13219         (DependencyObject::ReadLocalValue): Read the value directly from
13220         the hash table.
13222         * provider.cpp (LocalValuePropertyValueProvider::GetPropertyValue):
13223         Call DependencyObject::GetDefaultValue() to try and get a default
13224         value. If successful, set it on the current_values hash table.
13226         * *.cpp: Fixed all classes that had ctors that called SetValue()
13227         to instead override GetDefaultValue().
13229 2009-02-06  Chris Toshok  <toshok@ximian.com>
13231         * uielement.cpp (UIElement::SetSurface): if we have a subtree
13232         object (which is a UIElement), set its surface too.  Fixes the
13233         ContentPresenter textblocks in ItemsControl.
13235 2009-02-06  Stephane Delcroix  <sdelcroix@novell.com>
13237         * deepzoomimagetilesource.cpp: set subimage width/height
13238         * multiscaleimage.cpp: do not download subimages .xml, we can work
13239         without them
13241 2009-02-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13243         * cbinding.h:
13244         * cbinding.cpp: Regenerated.
13246         * dependencyobject.h:
13247         * dependencyobject.cpp:
13248           DependencyObject::ProviderValueChanged: Add a MoonError
13249           argument to be able to marshal managed exceptions through
13250           native code. ClearValue: Add a MoonError argument to match
13251           the signature of ProviderValueChanged.
13253         * dependencyproperty.h: Make NativePropertyChangedHandler
13254           take a MoonError argument to be able to marshal managed
13255           exceptions through native code.
13257         * error.h:
13258         * error.cpp: Add a gchandle_ptr field to hold managed
13259           exceptions.
13261         * frameworkelement.h:
13262         * frameworkelement.cpp: Update according to ClearValue
13263           signature changes.
13265         * provider.cpp: Update according to ProviderValueChanged
13266           signature changes.
13268 2009-02-06  Stephane Delcroix  <sdelcroix@novell.com>
13270         * morton-layout-table.inc: pre-computed table for Morton Layout 
13271         indices.
13273 2009-02-06  Stephane Delcroix  <sdelcroix@novell.com>
13275         * multiscaleimage.cpp: fix the most annoying rendering issue for
13276         subimages.
13278 2009-02-06  Jackson Harper  <jackson@ximian.com>
13280         * xaml.cpp: Store a list of resource dictionaries on the xaml
13281         context, so control templates can use these to lookup resources.
13282         Also go back to using the XamlElementInstance's for walking up the
13283         tree, this allows us to parse before parenting items.
13285 2009-02-05  Geoff Norton  <gnorton@novell.com>
13287         * deepzoomimagetilesource.cpp|h: We don't want to download all of
13288         the sub images at creation time, so allow them to defer, otherwise
13289         we might fire off hundreds of downloaders at once.
13291 2009-02-05  Jackson Harper  <jackson@ximian.com>
13293         * xaml.cpp: Use the case sensitive Type::Find (fixes parsing
13294         Double).
13296 2009-02-05  Jeffrey Stedfast  <fejj@novell.com>
13298         * dependencyobject.cpp (DependencyObject::ReadLocalValue): Renamed
13299         to be more consistent with the managed API.
13301         * frameworkelement.cpp (FrameworkElement::ReadLocalValue): Same.
13303 2009-02-05  Geoff Norton  <gnorton@novell.com>
13305         * multiscaleimage.cpp|h: We must emit this event on the main thread
13307 2009-02-05  Alan McGovern  <alan.mcgovern@gmail.com>
13309         * panel.h:
13310         * shape.h:
13311         * border.h:
13312         * cbinding.h:
13313         * uielement.h:
13314         * cbinding.cpp:
13315         * uielement.cpp:
13316         * frameworkelement.h:
13317         * frameworkelement.cpp: Create an unmanaged version of
13318           FindElementsInHostCoordinates
13320 2009-02-05  Geoff Norton  <gnorton@novell.com>
13322         * cbinding.cpp|h:
13323         * dependencyproperty.g.cpp:
13324         * type-generated.cpp: Regenerate
13325         * collection.h: Generate bindings for the multiscalesubimage collection.
13326         * deepzoomimagetilesource.cpp: Trigger a download when we get our URI 
13327         * multiscaleimage.cpp|h: Hide SubImages in a internal property until
13328         we can marshal collections as ReadOnly into managed automatically.
13329         Also emit the ImageOpenSucceeded event when we're done parsing.
13331 2009-02-05  Jackson Harper  <jackson@ximian.com>
13333         * type.cpp|h|h.in: Type:Find does need to be insensitive for JS.
13334         So I've added an ignore_case flag that the parser can use.
13336 2009-02-05  Jackson Harper  <jackson@ximian.com>
13338         * type.cpp: As far as I can tell, Type::Find does not need to be
13339         case sensitive. This fixes "Double" being found when we register
13340         it as "double".
13342 2009-02-05  Jeffrey Stedfast  <fejj@novell.com>
13344         Save some additional state for an optimization I'd like to do.
13346         * layout.cpp (TextLayout::LayoutWrapWithOverflow): Keep track of
13347         character offset for each TextLine.
13348         (TextLayout::LayoutNoWrap): Same.
13349         (TextLayout::LayoutWrap): Here too.
13351 2009-02-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13353         * deployment.cpp: Fix typo.
13355 2009-02-05  Alan McGovern  <alan.mcgovern@gmail.com>
13357         * frameworkelement.cpp: Reverting r125649 as it's incorrect.
13359 2009-02-05  Jeffrey Stedfast  <fejj@novell.com>
13361         * textbox.cpp (TextBox::OnMouseLeftButtonDown): Don't use
13362         ClearSelection() because we'll be syncing the SelectedText in
13363         SyncAndEmit() anyway.
13365         * layout.cpp (TextLayout::Layout*Wrap*): Oops, fix outer loop to
13366         exit when inptr >= inend rather than when *inptr == 0.
13367         (TextLayout::GetCursorFromXY): Slightly improved.
13369 2009-02-05  Sebastien Pouliot  <sebastien@ximian.com> 
13371         * dependencyobject.cpp|h: Let GetLogicalParent optionally report
13372         a collection for it's parent. This is needed in some cases like
13373         a Style inside a ResourceDictionary that defines "{StaticResource..."
13374         that other Style needs (e.g. SL toolkit unit tests)
13375         * xaml.cpp: Adjust lookup to find StaticResources defined in 
13376         a ResourceDictionary
13378 2009-02-05  Stephane Delcroix  <sdelcroix@novell.com>
13380         * multiscaleimage.cpp: Renders subimages
13382 2009-02-05  Jeffrey Stedfast  <fejj@novell.com>
13384         Memory Optimization:
13386         * textbox.cpp (append_runs): Updated. Also fixed a bug which would
13387         sometimes append empty TextRuns to the list.
13389         * text.cpp (TextBlock::Layout): Updated. No longer need to use the
13390         retarded TextRun linebreak ctor.
13392         * layout.cpp (TextRun): Changed TextRuns a bit, all members are
13393         now private but accessors have been added to get the values. Get
13394         rid of the crlf field and ctor params. We also no longer "strdup"
13395         for the ucs4 ctor since TextBox is the only consumer of that API
13396         and it is not constructed using a temp buffer.
13397         (TextSegment): Updated a bit for TextRun changes.
13398         (TextLayout): Updated for TextRun changes.
13400 2009-02-05  Sebastien Pouliot  <sebastien@ximian.com> 
13402         * style.cpp|h: Remove "style-hack" from SetterBaseCollection 
13403         since that collection has no need to know about the style itself.
13404         Simplify the API a bit.
13405         * xaml.cpp: Introduce an hack for SetterBase tp workaround the 
13406         fact that the current parser adds elements to the collections
13407         before setting their properties (and a SetterBase would seal
13408         itself when added to a collection).
13410 2009-02-05  Jb Evain  <jbevain@novell.com>
13412         * propertypath.h: new type.
13413         * value.h.in, value.cpp: make Value deal with PROPERTYPATH.
13414         * xaml.cpp (value_from_str): parse Kind::PROPERTYPATH.
13415         * animation.h: change type of Storyboard.TargetPropertyProperty
13416         from string to PropertyPath.
13417         * animation.cpp: update accordingly.
13418         * dependecyproperty.h (resolve_property_path): now takes a PropertyPath.
13419         * dependecyproperty.cpp: update accordingly.
13420         * value.h, type-generated.cpp, type.h, dependecyproperty.h.cpp: regen.
13422 2009-02-05  Jackson Harper  <jackson@ximian.com>
13424         * xaml.cpp|h: Use the kind for getting content property names.
13426 2009-02-04  Chris Toshok  <toshok@ximian.com>
13428         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
13429         fix property inheritance to walk back up the tree (instead of just
13430         looking at the direct parent.)  Also, we can't use the parent's
13431         kind directly, we have to use parent->Is().
13433 2009-02-04  Larry Ewing  <lewing@novell.com>
13435         * grid.cpp (Grid::ArrangeOverride): make the resizing logic only
13436         apply when the final value is not equal to the measured value.
13438 2009-02-04  Jackson Harper  <jackson@ximian.com>
13440         * xaml.cpp|h: When setting properties pass in the
13441         XamlElementInstance.
13442         - Function so named items can be looked up from managed.
13443         * cbinding.cpp|h: regen.
13445 2009-02-04  Aaron Bockover  <abockover@novell.com>
13447         * color.cpp: Use double_garray_from_str to parse sc# color strings, fixing
13448         bug where the blue channel was dropped in sc#r,g,b
13450 2009-02-04  Sebastien Pouliot  <sebastien@ximian.com>
13452         * collection.cpp|h: Override AddWithError on UIElementCollection
13453         to return an error on duplicate elements
13455 2009-02-04  Jeffrey Stedfast  <fejj@novell.com>
13457         * color.cpp (read_next_double): Use g_ascii_strtod().
13458         (color_from_str): Use g_ascii_strcasecmp().
13460         * textbox.cpp (TextBox::OnKeyDown): Implemented Cut/Copy/Paste.
13462 2009-02-04  Larry Ewing  <lewing@novell.com>
13464         * grid.cpp (Grid::ArrangeOverride): thanks to the listbox test
13465         case we implement star columns in a matching manor.
13467         * mediaelement.cpp (MediaElement::Render): disable mediaelement
13468         pixel snapping for now, we'll deal with this at a higher level.
13470 2009-02-04  Chris Toshok  <toshok@ximian.com>
13472         * type.cpp (type_is_dependency_object): no need to c&p the entire
13473         method, just call Type::IsSubclassOf with the kinds.
13475 2009-02-04  Jeffrey Stedfast  <fejj@novell.com>
13477         * textbox.cpp (TextBoxView::ConnectBlinkTimeout): Use
13478         TimeManager's timeout functions instead of calling g_timeout_add()
13479         ourselves.
13481 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
13483         * multiscaleimage.cpp: prepare the rendering for subimages.
13485 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
13487         * multiscalesubimage.h|cpp: GetViewportHeight () utility method.
13489 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
13491         * deepzoomimagetilesource.cpp: set the aspect ratio for subimages on
13492         subimage creation.
13494 2009-02-04  Jeffrey Stedfast  <fejj@novell.com>
13496         * textbox.cpp (TextBox::TextBox): Initialize our 'selecting' state
13497         to false. Get rid of maxlen state, it's not needed.
13498         (TextBox::KeyPressUnichar): Use GetMaxLength() instead of a maxlen
13499         class member variable.
13500         (TextBox::SyncAndEmit): Renamed from KeyPressThaw() since it's
13501         useful for mouse events too.
13502         (TextBox::KeyPressFreeze): Removed.
13503         (TextBox::OnMouseLeftButtonDown): Set our 'selecting' state to
13504         true, get the cursor from the x,y coordinates and update the
13505         selection to be zero-length starting at the cursor position.
13506         (TextBox::OnMouseLeftButtonUp): Set 'selecting' state to false.
13507         (TextBox::OnMouseMove): If we are in the 'selecting' state,
13508         translate current mouse coordinates into a new cursor position and
13509         update selection start/length.
13510         (TextBoxView::GetCursorFromXY): New helper method.
13511         (TextBoxView::TextBoxView): Set our cursor to be the IBeam.
13513         * layout.cpp (TextLayout::GetCursorFromXY): Implemented.
13515 2009-02-04  Jackson Harper  <jackson@ximian.com>
13517         * template.cpp|h: Add a function for creating xaml template
13518         bindings.
13520 2009-02-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13522         * audio.cpp:
13523         * audio-pulse.cpp: More SetCurrentDeployments.
13525 2009-02-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13527         * audio.cpp: One more SetCurrentDeployment.
13529 2009-02-04  Alan McGovern  <amcgovern@novell.com>
13531         * frameworkelement.cpp: Fixed hit tests which didn't do what
13532           i meant them to do and added new tests. Panels should not
13533           swallow a click when hit testing, so we should never abort
13534           checking children.
13536 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
13538         * multiscalesubimage.cpp: fix the source uri in the subimage
13539         ctor. the source for the subimage is now parsed.
13541 2009-02-04  Alan McGovern  <amcgovern@novell.com>
13543         * type.h:
13544         * value.h:
13545         * cbinding.h:
13546         * uielement.h:
13547         * cbinding.cpp:
13548         * collection.h:
13549         * uielement.cpp:
13550         * collection.cpp:
13551         * type-generated.cpp: Hook up the managed hittesting code to
13552           the native hit testing code.
13554 2009-02-04  Stephane Delcroix <sdelcroix@novell.com>
13556         * multiscaleimage.cpp: iterate the collection and not the GList
13557         anymore.
13559 2009-02-04  Stephane Delcroix <sdelcroix@novell.com>
13561         * multiscalesubimage.h|cpp:
13562         * deepzoomimagetilesource.cpp: add a uri parameter to MSISI ctor
13563         so we can compute the UriSource based on parent's one
13565 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
13567         * collection.cpp: MultiScaleSubImageCollection ctor
13569 2009-02-03  Larry Ewing  <lewing@novell.com>
13571         * dirty.cpp (Surface::UpdateLayout): hack some sizing logic into
13572         the toplevel logic.
13574         * usercontrol.cpp: fix missing modification.
13576 2009-02-03  Larry Ewing  <lewing@novell.com>
13578         * frameworkelement.cpp (FrameworkElement::Arrange): shrink the
13579         clip by the margin.
13581 2009-02-03  Geoff Norton  <gnorton@novell.com>
13583         * frameworkelement.cpp (Arrange): If we have a negative margin,
13584         it moves our layout slot, instead of clipping it, as such we need
13585         to adjust the clipping path accordingly in these cases to accomodate
13586         this.
13588 2009-02-03  Jeffrey Stedfast  <fejj@novell.com>
13590         * textbox.cpp (TextBoxView::ResetCursorBlink): We don't care about
13591         ReadOnly status afterall.
13592         (TextBoxView::OnModelChanged): Same.
13593         (TextBox::OnKeyDown): If we are ReadOnly, don't allow editing of
13594         the buffer.
13596         * control.h: Control's default FontSize is 11, not 14.666 like
13597         TextBlock's.
13599 2009-02-03  Larry Ewing  <lewing@novell.com>
13601         * shape.cpp (Shape::ArrangeOverride): invalidate the path cache
13602         when we arrange.  Fixes the rectangle bg on pdc.
13604 2009-02-03  Jeffrey Stedfast  <fejj@novell.com>
13606         * textbox.cpp (TextBox::OnPropertyChanged): Set the default
13607         SelectionBackground and SelectionForeground brushes if
13608         SelectionLength gets to be >0.
13609         (TextBox::TextBox): Don't set them here. Initialize a new state
13610         variable, cursor_column to 0.
13611         (TextBox::CursorDown): Update cursor_column and fix some
13612         inconsistencies with Microsoft's logic. Renamed and c++'ified from
13613         move_down().
13614         (TextBox::CursorUp): Same idea here.
13615         (TextBox::CursorNextWord): Renamed/c++'ified from next_word().
13616         (TextBox::CursorPrevWord): Same idea.
13617         (TextBox::KeyPress*Down): Save/Restore cursor_column state after
13618         updating SelectionStart/Length properties.
13619         (TextBox::KeyPress*Up): Same.
13620         (TextBox::KeyPressHome): We can set cursor_column to 0 here.
13621         (TextBox::OnPropertyChanged): If Text, SelectedText,
13622         SelectionStart or SelectionLength chanegs, we need to reset
13623         cursor_column to -1 (aka "unknown").
13625 2009-02-03  Larry Ewing  <lewing@novell.com>
13627         * grid.cpp (Grid::ArrangeOverride): remove a bunch of the old code
13628         and apply the finalsize adjustments to the existing values.
13629         Handle the empty row/col case specially.
13631         * usercontrol.cpp: revert accicdental diabling (for now).
13633 2009-02-03  Jeffrey Stedfast  <fejj@novell.com>
13635         * textbox.cpp (TextBuffer::Replace): Do the right thing if length
13636         goes beyond the end of the buffer.
13637         (TextBuffer::Cut): Same.
13639         * layout.cpp (RenderSegment): Extend the selection line
13640         Silverlight's TextBox does if the selection crosses over the CRLF
13641         sequence at the end of a line.
13643 2009-02-03  Larry Ewing  <lewing@novell.com>
13645         * border.cpp:
13646         * usercontrol.cpp:
13647         * frameworkelement.cpp: handle the specified size case as well.
13649 2009-02-03  Jb Evain  <jbevain@novell.com>
13651         * xaml.cpp (PrimitiveNamespace::FindElement): correctly retrieve
13652         primitive types.
13654 2009-02-03  Jeffrey Stedfast  <fejj@novell.com>
13656         * textbox.cpp: Rewrote selection logic and vastly simplified
13657         cursor movement along the way.
13659 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13661         * type.h:
13662         * type.cpp:
13663         * type.h.in:
13664         * dependencyproperty.h:
13665         * dependencyproperty.cpp: Remove the need for
13666           DependencyProperty to be a friend class of Type.
13668 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
13670         * multiscalesubimage.h: DefaultValues for DPs.
13672 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
13674         * deepzoomimagetilesource.h|cpp:
13675         * multiscaleimage.h|cpp:
13676         * multiscalesubimage.h|cpp: fill the subimages on MSI
13678 2009-02-03  Sebastien Pouliot  <sebastien@ximian.com>
13680         * deployment.h: Don't use 'volatile' before glib 2.10 (e.g. sled10)
13681         because that was not part of the API before then (and it breaks
13682         compilation).
13684 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13686         * type.h:
13687         * type.cpp:
13688         * type.h.in: Type: don't make Types a friend class of Type.
13690 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13692         * animation.h:
13693         * animation.cpp: Remove animation_init, it's empty.
13695         * audio.cpp: We need to set the current deployment on the
13696           audio thread (but without touching mono at all).
13698         * cbinding.h:
13699         * cbinding.cpp:
13700         * type-generated.cpp:
13701         * dependencyproperty.g.cpp: Regenerated.
13703         * dependencyobject.h:
13704         * dependencyobject.cpp: Move object accounting and delayed
13705           unref handling to Deployment.
13707         * dependencyproperty.h: Remove DependencyProperty::Shutdown,
13708           it's empty.
13710         * deployment.cpp: Add a SetCurrent overload which allows us
13711           to specify whether the current appdomain should be updated
13712           too. GetCurrent: Never access mono if the current domain is
13713           NULL. Move object tracking and delayed unrefs here.
13715         * deployment.h: Add a SetCurrent overload which allows us to
13716           specify whether the current appdomain should be updated
13717           too. Move object tracking and delayed unrefs here.
13719         * runtime.cpp: Move object tracking reports to Deployment.
13720           Remove unnecessary static init and shutdown methods.
13722         * type.h:
13723         * type.cpp:
13724         * type.h.in: Completely remove all static Type
13725           initialization, we now rely on the Types* on the current
13726           Deployment.
13728 2009-02-03  Sebastien Pouliot  <sebastien@ximian.com>
13730         * style.cpp: Remove extra logic and comment the main "bad" hack
13731         still required not to cause regressions. Affected test cases
13732         will marked as known issues until the XAML parser issue (which
13733         is adding elements to collections before setting their properties)
13734         is fixed.
13736 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13738         * window-gtk.cpp: Add missing Deployment::SetCurrent calls.
13740 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13742         * namescope.cpp: NamScope::ObjectDestroyedEvent: upon object
13743           destruction the name might not be available anymore, so
13744           loop over the entire hash tables looking for the object to
13745           remove instead of trying to lookup with a null key. Fixes a
13746           crash while running moon-unit.
13748 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13750         * xaml.cpp: Use property accessors on Type instead of
13751           accessing the fields.
13753 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
13755         * debug.h:
13756         * runtime.h|runtime.cpp: new LOG_MSI macro.
13758 2009-02-03  Fernando Herrera  <fherrera@novell.com>
13760         * runtime.cpp:
13761         * runtime.h: Move moonlight_flags and runtime_flags to 64bits
13762         as we reached the 32bits limit for debug.
13764 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
13766         * deepzoomimagetilesource.h|cpp: Parse Collections.
13768 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
13770         * deepzoomimagetilesource.h|cpp: data structures to parse
13771         DZ images with subimages. Move the common parts of both ctors
13772         in Init ()
13774 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
13776         * tilesource.h:
13777         * deepzoomimagetilesource.h|cpp: fix some compilation warning, move
13778         some methods and fields to the private section.
13780 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
13782         * multiscalesubimage.h|cpp: re-use the tilesource to parse subimages
13784 2009-02-02  Chris Toshok  <toshok@ximian.com>
13786         * popup.h, popup.cpp: this inherits from FrameworkElement, not
13787         DependencyObject.
13789         * dependencyobject.cpp (dispose_value): this method is doing *way*
13790         too much.  we can't just blindly dispose of our values.  they
13791         could be shared across multiple elements.  don't even unref them
13792         here, as deleting the value does that.
13794         * type-generated.cpp: regen.
13796 2009-02-02  Larry Ewing  <lewing@novell.com>
13798         * mediaelement.cpp:
13799         * media.cpp (Image::UpdateSize): update horrible hacks that are
13800         used when we are part of canvas until they can be removed
13801         completely
13803 2009-02-02  Larry Ewing  <lewing@novell.com>
13805         2009-02-02  Chris Toshok  <toshok@ximian.com>
13807         * enums.cpp (keyboard_navigation_mode_map): add
13808         (initialize_enums): add TabNavigation property handling, mapping
13809         to keyboard_navigation_mode_map.
13811 2009-02-02  Geoff Norton  <gnorton@novell.com>
13813         * bitmapimage.h: 
13814         * xaml.cpp: Inject ImageSource underneath BitmapImage so that
13815         custom xaml that attaches a ImageSource can work.  Every
13816         ImageSource is a BitmapImage in SL2
13817         * type-generated.cpp:
13818         * type.h:
13819         * value.h: Regen
13821 2009-02-02  Larry Ewing  <lewing@novell.com>
13823         * border.cpp:
13824         * usercontrol.cpp:
13825         * frameworkelement.cpp (FrameworkElement::ArrangeOverride): only
13826         stretch back out to finalsize in the stretch case.
13828 2009-02-02  Jeffrey Stedfast  <fejj@novell.com>
13830         * layout.cpp (TextRun): 'crlf' is now a short rather than a 2-bit
13831         int because, duh, the range is -2 to 1, not 0 to 3 and so
13832         TextLine::crlf was being set to -2 instead of 2.
13833         (TextLayout::GetCursor): A minor tweak to get things to work if
13834         the cursor is right after the last char which is a \r.
13836         * textbox.cpp (TextBuffer::Cut): Fixed, this was totally broken
13837         before.
13838         (move_down): Need to use a loop when advancing back to the
13839         previous column so we don't go beyond EOL.
13840         (move_up): Same, but more fixes as well.
13842 2009-02-02  Jeffrey Stedfast  <fejj@novell.com>
13844         * textbox.cpp: Moved all event handling back to TextBox since
13845         that's the focusable element.
13847         * runtime.cpp (Surface::HandleMouseEvent): Loop until we find the
13848         first Control subclass that we can focus.
13850 2009-02-02  Sebastien Pouliot  <sebastien@ximian.com>
13852         * dependencyproperty.g.cpp:Regenerated
13853         * style.cpp|h: Use validators on Setter instead of overriding
13854         SetValueWithErrorImpl on SetterBase
13855         * validators.cpp|h: Addvalidator for checking sealed Setter
13857 2009-02-02  Larry Ewing  <lewing@novell.com>
13859         * border.cpp (Border::Render): don't fill the whole are with the
13860         border brush only fill the BorderThickness.  
13862 2009-02-02  Larry Ewing  <lewing@novell.com>
13864         * textbox.cpp, textbox.h: first pass at implementing arrange and
13865         measure.
13867         * text.cpp: request with padding too.
13869 2009-02-02  Chris Toshok  <toshok@ximian.com>
13871         * textbox.h (class TextBox): store the contentElement as an
13872         instance field so we can update it in OnPropertyChanged.
13874         * textbox.cpp (TextBox::OnApplyTemplate): this is seriously
13875         disgusting, and *SHOULD* be handled in the textbox template, but
13876         we can't handle it in ours in case people replace it.  if the
13877         ContentElement template child has DP's named
13878         VerticalScrollBarVisibility and HorizontalScrollBarVisibility, set
13879         them based on the value of ours.
13880         (TextBox::OnPropertyChanged): handle property changes on our
13881         VerticalScrollBarVisibility/HorizontalScrollBarVisibility
13882         properties by proxying them to our contentElement.
13884 2009-02-02  Alan McGovern  <amcgovern@novell.com>
13886         * media.cpp:
13887         * bitmapimage.cpp: Image.Source defaults to a BitmapImage
13888           with a uri of string.empty.
13890 2009-02-02  Chris Toshok  <toshok@ximian.com>
13892         * rect.h (struct Rect): we can be Grown by a negative amount. make
13893         sure we don't drop below 0 on width/height, since everything blows
13894         up when we do.
13896 2009-02-02  Alan McGovern  <amcgovern@novell.com>
13898         * bitmapimage.h:
13899         * dependencyproperty.g.cpp: The default value for
13900           Bitmap.ImageSource is an empty string.
13902 2009-02-02  Jeffrey Stedfast  <fejj@novell.com>
13904         * textbox.cpp (TextBox::OnPropertyChanged): Emit ModelChanged
13905         events when the selection or text changes. TextBoxView cannot
13906         depend on getting those events if things are changed
13907         programatically.
13908         (TextBox::KeyPressThaw): Don't ever bother with emitting
13909         ModelChanged events here, they'll be emitted in
13910         OnPropertyChanged(), now.
13911         (TextBoxView): We no longer listen to TextChanged or
13912         SelectionChanged events.
13913         (TextBoxView::ResetCursorBlink): New method to do all of the
13914         proper state checking to see if the cursor should be rendered
13915         which calls the appropriate Begin/Delay/EndCursorBlink() method.
13916         (TextBoxView::OnModelChanged): Updated to handle Text and
13917         Selection changes. Dropped CursorPosition because it is no longer
13918         necessary.
13919         (TextBoxView::OnFocusIn): Set focused to true before calling
13920         ResetCursorBlink().
13921         (append_runs): Don't forget to append the LineBreak to the Runs
13922         list.
13923         (TextBoxView::SetTextBox): Need to sync some additional state.
13925 2009-02-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13927         * runtime.cpp: ~Surface: don't call DrainUnrefs, we might
13928           already be in one, and DrainUnrefs isn't recursive anymore.
13930 2009-02-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13932         * src.mdp: Updated to use new MD features (ChangeLog and log
13933           message policy).
13935 2009-02-02  Stephane Delcroix  <sdelcroix@novell.com>
13937         * deepzoomimagetilesource.h|cpp: add a parsed_callback.
13938         * multiscaleimage.cpp: re-render on parsed_cb, starting rendering
13939         immediately.
13941 2009-02-02  Stephane Delcroix  <sdelcroix@novell.com>
13943         * deepzoomimagetilesource.h|cpp: parse DisplayRects, returns NULL
13944         in GetTileLayer for missing tiles.
13946 2009-02-02  Stephane Delcroix  <sdelcroix@novell.com>
13948         * multiscaleimage.cpp: render lower layer if the current layer
13949         contains NULL tiles.
13951 2009-02-02  Chris Toshok  <toshok@ximian.com>
13953         * frameworkelement.cpp (FrameworkElement::ArrangeOverride):
13954         correct apparent c&p error.
13956 2009-02-01  Larry Ewing  <lewing@novell.com>
13958         * control.cpp, control.h:
13959         * usercontrol.cpp, usercontrol.h: move ArrangeOverride and
13960         MeasureOverride here from control where they are only used for
13961         binding.
13963 2009-02-01  Larry Ewing  <lewing@novell.com>
13965         * thickness.cpp (Thickness::FromStr): 
13966         * cornerradius.cpp (CornerRadius::FromStr): don't pass a max value
13967         that will cause the rest to be filled with 0.  Fixes parsing of
13968         single value entries.
13970         * frameworkelement.cpp: arrange based on the adjusted rect.
13972 2009-02-01  Chris Toshok  <toshok@ximian.com>
13974         * contentcontrol.cpp (ContentControl::OnPropertyChanged): remove
13975         the ApplyTemplate gunk here, as the template doesn't change when
13976         our content does - the ContentPresenter in our control template
13977         will changed based on our content.
13979         * xaml.cpp (dependency_object_set_attributes):
13980         handle_xaml_markup_extension has three possible return states.
13981         "Need SetValue", "Don't SetValue", and "Error".  the bool return
13982         value is the first two (true == need_setvalue), and p->error_args
13983         determines the last one.
13984         (handle_xaml_markup_extension): add a comment detailing the
13985         need_setvalue return value, and make the return values consistent.
13986         TemplateBindings are weird in that they don't (for now) set a
13987         value, but require that we don't continue on with the set value
13988         machinery in dependency_object_set_attributes.
13990         Also, the TemplateBinding handling in the case of
13991         Property1={TemplateBinding Property2} was attaching things such
13992         that updates to source.Property1 would update target.Property2.
13993         This is exactly backward - it should have been source.Property2 =>
13994         target.Property1.  We got lucky in a vast number of instances
13995         because the property names were the same.
13997 2009-02-01  Sebastien Pouliot  <sebastien@ximian.com> 
13999         * style.cpp: Revert first part (always seal) of last patch due to
14000         regressions.
14002 2009-02-01  Sebastien Pouliot  <sebastien@ximian.com>
14004         * style.cpp: Always seal setters when added to collection (unit 
14005         tested) and unrelated to style (which may not be assigned, SIGSEGV)
14007 2009-01-31  Geoff Norton  <gnorton@novell.com>
14009         * animation.cpp: Its possible for a Storyboard to have TargetName
14010         and TargetProperty set, but be unresolvable, and still use a parent
14011         manual target (See Axelerate3D).
14013 2009-01-31  Chris Toshok  <toshok@ximian.com>
14015         * collection.h, collection.cpp (class UIElementCollection):
14016         UIElements can be reparented logical parent-wise, but can't have
14017         more than one *visual* parent.
14019 2009-01-31  Larry Ewing  <lewing@novell.com>
14021         * border.cpp:
14022         * control.cpp:
14023         * frameworkelement.cpp: rather than trying to fix the rendering
14024         fix the layout_xform to handle margins automatically.
14026 2009-01-31  Larry Ewing  <lewing@novell.com>
14028         * border.cpp (Border::Render): try to match the interior
14029         CornerRound behavior a littler closer.
14031 2009-01-31  Larry Ewing  <lewing@novell.com>
14033         * rect.cpp (Rect::Draw): fix typo in rect drawing.
14035 2009-01-31  Larry Ewing  <lewing@novell.com>
14037         * cornerradius.h: add == and != overloads.
14039         * uielement.cpp: don't include the layout clip if we are
14040         tranforming the bounds.  The layout clip only applies to local
14041         space.
14043         * border.cpp: restore the graphics context after clipping.
14045 2009-01-31  Larry Ewing  <lewing@novell.com>
14047         * rect.cpp, rect.h: move the rounded drawing here for now until
14048         there is a better place.
14049         
14050         * border.cpp: start drawing the borderbrush and using border
14051         thickness.
14052         
14053 2009-01-31  Larry Ewing  <lewing@novell.com>
14055         control.cpp: fix arranged size with border thickness or padding.
14057         border.cpp: fix arranged size with border thickness or
14058         padding. fix rendering with margins.
14060         panel.cpp: fix rendering with a margin.
14062 2009-01-31  Larry Ewing  <lewing@novell.com>
14064         * border.cpp (Border::Render): add corner radius rendering logic
14065         here for now.
14067 2009-01-31  Stephane Delcroix  <sdelcroix@novell.com>
14069         * multiscaleimage.h|cpp: ensure there's only one downloader running,
14070         fixes the issue where wrong images were cached.
14072 2009-01-31  Sebastien Pouliot  <sebastien@ximian.com>
14074         * contentcontrol.h: Add @CallInitialize so the event gets
14075         registred (in the managed side) and we can now track content
14076         changes.
14078 2009-01-30  Geoff Norton  <gnorton@novell.com>
14080         * textbox.cpp: FontFamily is now a FontFamily not a string.
14082 2009-01-30  Chris Toshok  <toshok@ximian.com>
14084         * xaml.cpp: fix ResourceDictionary once and for all.
14086 2009-01-30  Geoff Norton  <gnorton@novell.com>
14088         * deployment.cpp|h: Ensure that any downloaders that might
14089         call back into managed land are aborted before we throw out the
14090         domain.
14091         * downloader.cpp|h: Add a nice interface to DownloaderRequest
14092         and DownloaderResponse to save some code duplication in deployment
14094 2009-01-30  Geoff Norton  <gnorton@novell.com>
14096         * mediaelement.cpp:  If we finish downloading before we can
14097         fill the buffer, we still need to emit this event.
14099 2009-01-30  Chris Toshok  <toshok@ximian.com>
14101         * usercontrol.h (class UserControl): make managed access to
14102         ContentProperty protected internal, not just protected.
14104         * dependencyobject.h (class DependencyObject): generate a
14105         cbinding/pinvoke for SetLogicalParent.
14107         * cbinding.h, cbinding.cpp: regen.
14109 2009-01-30  Jeffrey Stedfast  <fejj@novell.com>
14111         * textbox.cpp (TextBox::KeyPressUnichar): Fixed to update
14112         SelectionStart/Length.
14114 2009-01-30  Geoff Norton  <gnorton@novell.com>
14116         * runtime.cpp: Let managed code change the fullscreen state.
14117         * cbinding.cpp|h: Regenerate
14119 2009-01-30  Chris Toshok  <toshok@ximian.com>
14121         * xaml.cpp (dependency_object_set_property): remove the ugly
14122         assumption - we know if the property type is managed now.
14124 2009-01-30  Jeffrey Stedfast  <fejj@novell.com>
14126         * textbox.cpp (TextBox::KeyPress<key>): Update an internal 'emit'
14127         state rather than returning a changed mask. Also modified to treat
14128         selection.start as the cursor position when selection.length is
14129         0. Otherwise refer to the cursor state to figure out which end of
14130         the selection the cursor is at (for growing/shrinking).
14131         (TextBox::KeyPressFreeze): Reset 'emit' state.
14132         (TextBox::KeyPressThaw): Sync and then emit our changed events.
14133         (TextBox::OnPropertyChanged): Updated for ClearSelection() API
14134         change.
14135         (TextBox::ClearSelection): Now takes a 'start' argument to set
14136         SelectionStart to (e.g. cursor position).
14137         (TextBox::Select): Now longer needs to do a freeze/thaw.
14138         (TextBoxView::OnKeyDown): Updated.
14140 2009-01-30  Chris Toshok  <toshok@ximian.com>
14142         * control.h, control.cpp: same story with InsideObject.
14144 2009-01-30  Chris Toshok  <toshok@ximian.com>
14146         * control.h, control.cpp: remove Control::Render.  handling of the
14147         background property is left to a templatebinding in the visual
14148         tree of the applied template.
14150 2009-01-30  Chris Toshok  <toshok@ximian.com>
14152         * provider.cpp (StylePropertyValueProvider::SealStyle): call
14153         ProviderValueChanged on all values in the style so the object can
14154         do things with them.
14156         * frameworkelement.cpp (FrameworkElement::OnPropertyChanged): add
14157         a comment about SealStyle calling ProviderValueChanged.
14159 2009-01-30  Chris Toshok  <toshok@ximian.com>
14161         * xaml.cpp: when parsing multiple buffers (as we do when hydrating
14162         from a template), we need to keep track of the total offset from
14163         the start of all buffers, since XML_GetCurrentByteIndex returns a
14164         value with that range, it's not the byte index into the current
14165         buffer (unless there's only 1).  Fixes templates stored inside of
14166         other templates.
14168 2009-01-30  Andreia Gaita  <avidigal@novell.com>
14170         * clock.cpp: no use stopping if it's already stopped
14172 2009-01-30  Andreia Gaita  <avidigal@novell.com>
14174         * clock.cpp: reset the state flags as well
14176 2009-01-30  Larry Ewing  <lewing@novell.com>
14178         * text.cpp (TextBlock::Render): Start taking padding into account
14179         and limit the max size to actual not to the arranged value.
14181 2009-01-30  Jeffrey Stedfast  <fejj@novell.com>
14183         * textbox.h (TextBox::GetCursor): Cursor position is aka
14184         selection.start.
14186         * textbox.cpp (TextBox::Freeze): Renamed from PreKeyPress().
14187         (TextBox::Thaw): Decrement freeze count and emit events when we
14188         reach 0.
14189         (TextBox::OnPropertyChanged): When SelectionStartProperty or
14190         SelectionLengthProperty change, call SyncSelectedText(). Fixed the
14191         selection.start/cursor positioning logic when TextProperty or
14192         SelectedTextProperty changes.
14193         (TextBoxView::OnKeyDown): Updated to sue the new Freeze()/Thaw()
14194         methods.
14196 2009-01-30  Larry Ewing  <lewing@novell.com>
14198         * grid.cpp (Grid::ArrangeOverride): fix the minimum measure size
14199         computation.
14201 2009-01-30  Sebastien Pouliot  <sebastien@ximian.com>
14203         * frameworkelement.cpp: Make sure bounds_with_children is always
14204         initialized before being used.
14206 2009-01-30  Geoff Norton  <gnorton@novell.com>
14208         * mediaelement.cpp: Emit MediaOpenedEvent as soon as we've opened the
14209         media.  Fixes the thumber moving on PDC player.
14211 2009-01-30  Jackson Harper  <jackson@ximian.com>
14213         * xaml.cpp: Fixup logic for setting both Key and Name, I was wrong
14214         about them being legal if they are equal.
14216 2009-01-30  Larry Ewing  <lewing@novell.com>
14218         * grid.cpp (Grid::ArrangeOverride): hack around spans in
14219         rebuilding the table until we understand them better.
14221 2009-01-30  Larry Ewing  <lewing@novell.com>
14223         * frameworkelement.cpp:
14224         * border.cpp:
14225         * control.cpp (Control::ArrangeOverride): use alignment properly
14226         in these places as well
14228 2009-01-30  Larry Ewing  <lewing@novell.com>
14230         * frameworkelement.cpp (FrameworkElement::Arrange): don't modify
14231         the alignment here.
14233 2009-01-30  Stephane Delcroix  <sdelcroix@novell.com>
14235         * multiscaleimage.cpp: load png too
14237 2009-01-30  Stephane Delcroix  <sdelcroix@novell.com>
14239         * multiscaleimage.cpp: change the vporigin to relative coords
14241 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14243         * dependencyobject.cpp: EventObject::unref: don't try to get the
14244         typename if there's no deployment around.
14246         * pipeline.cpp: Media::Shutdown: set the current deployment before
14247         looping over each media.
14249 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14251         * deployment.cpp: Remove dead code.
14253 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14255         * downloader.cpp: Downloader::Write: update current deployment.
14257 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14259         * mp3.cpp:
14260         * audio.cpp:
14261         * pipeline.cpp:
14262         * mediaplayer.cpp:
14263         * audio-pulse.cpp:
14264         * mediaelement.cpp:
14265         * pipeline-asf.cpp:
14266         * mms-downloader.cpp:
14267         * pipeline-ffmpeg.cpp: %llu => G_UINT64_FORMAT.
14269 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14271         * deployment.cpp: Comment out log spammer.
14273         * runtime.cpp: Add some sanity checks.
14275         * dependencyobject.cpp: Set current deployment for delayed unrefs too.
14277 2009-01-30  Stephane Delcroix  <sdelcroix@novell.com>
14279         * deepzoomimagetilesource.cpp: normalize ViewportWidth
14281 2009-01-30  Sebastien Pouliot  <sebastien@ximian.com>
14283         * cbinding.cpp|h: Regenerated
14284         * geometry.h: Get bindings/pinvoke on Geometry::GetBounds
14285         * rect.h: Add new ctor so the generator code can work
14287 2009-01-30  Stephane Delcroix  <sdelcroix@novell.com>
14289         * tilesource.h|cpp:
14290         * deepzoomimagetilesource.h|cpp:
14291         * multiscaleimage.cpp: as we can't assume there's a managed DZITS,
14292         implement the DZ parser in native code.
14294 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14296         * mediaplayer.cpp: MediaPlayer: Set object type correctly.
14298 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14300         * deployment.cpp: Allow setting the current deployment to NULL.
14302 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14304         * mediaelement.cpp: Handle MediaElementStateIndividualizing and
14305         AcquiringLicense in all switch statements to fix gcc warnings.
14307 2009-01-30  Geoff Norton  <gnorton@novell.com>
14309         * debug.cpp: Use the proper headers here, we need them anyways.
14310         * window.h: Store the deployment we were created in.
14311         * window-gtk.cpp: Ensure we set our deployment before starting
14312         to call into our heirarchy.
14314 2009-01-30  Jb Evain  <jbevain@novell.com>
14316         * deployment.h: make Deployment::Surface DP internal.
14318 2009-01-29  Geoff Norton  <gnorton@novell.com>
14320         * deployment.h: Surface is now a DP on the deployment so we 
14321         can share it with managed.
14322         * dependencyproperty.g.cpp: Regen
14323         * clock.cpp: Get the surface of the Deployment we're in so that
14324         clocks from Dispatcher timer end up on the right surface.
14326 2009-01-29  Geoff Norton  <gnorton@novell.com>
14328         * deployment.cpp: Trust the domain over the TLS slot since mono
14329         will switch that on us on any thread really.
14331 2009-01-29  Geoff Norton  <gnorton@novell.com>
14333         * clock.cpp|h: Ensure that we set the correct deployment from the 
14334         clock ticks before traversing back into our heirarchy.
14336 2009-01-29  Jackson Harper  <jackson@ximian.com>
14338         * xaml.cpp: Add support for the primitive types in mscorlib.  This
14339         will get properly formed strings, doubles, and int32s working for
14340         now, we don't handle the oddities of the SL parsing properly yet
14341         though.
14343 2009-01-29  Jackson Harper  <jackson@ximian.com>
14345         * type-generated.cpp: regen
14347 2009-01-29  Larry Ewing  <lewing@novell.com>
14349         * frameworkelement.cpp (FrameworkElement::Arrange): unref the clip
14350         geometry.
14352         * grid.cpp: unref the dummy columns we create here.
14354 2009-01-29  Jeffrey Stedfast  <fejj@novell.com>
14356         * textbox.cpp (TextBoxView::ArrangeOverride): Removed.
14358         * textbox.h: Shuffle some internal accessors/events around.
14360 2009-01-29  Larry Ewing  <lewing@novell.com>
14362         * text.cpp, text.h: implement basic layout size rules and strip
14363         the custom actual* properties.  Still a hack but passable for now.
14365         regenerate.
14367 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14369         * runtime.h:
14370         * runtime.cpp: Surface: Implement Dispose and call Dispose on the
14371         toplevel object. PaintToDrawable: Update current deployment.
14373 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14375         * uielement.cpp: Dispose: add a null-check, and only walk the visual
14376         tree if we haven't been disposed already.
14378 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14380         * namescope.h:
14381         * namescope.cpp: Namespace: Implement Dispose and remove all entries
14382         from our names hash table there.
14384 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14386         * xaml.cpp: XamlLoader::CreateFromFile: Add a ref to avoid a crash later
14387         on upon destruction.
14389 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14391         * dependencyobject.h:
14392         * dependencyobject.cpp: EventObject: Added SetCurrentDeployment: updates
14393         Deployment::Current. Emit DestroyedEvent in Dispose instead of the
14394         dtor.
14396 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14398         * mediaelement.h:
14399         * mediaelement.cpp: Implement Dispose and put most of the cleanup there
14400         instead of in the dtor. media_element_advance_frame: we need to set
14401         the current deployment here.
14403 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14405         * collection.cpp: Collection::Dispose: Post-chain Dispose instead of
14406         pre-chain. Set array's size to 0 after deleting all the values.
14408         * pipeline.cpp: Post-chain Dispose instead of pre-chain. Since there's
14409         one media thread per Media object, there's no need to set the current
14410         deployment for each work node, just set it at thread start.
14411         MediaClosure::SetContext: fix refcounting bug.
14413         * pipeline-asf.cpp: Post-chain Dispose instead of pre-chain.
14415 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14417         * deployment.h:
14418         * deployment.cpp: Deployment: Enable support managed stackframes after
14419         initializing mono. Implement Dispose, and upon destruction set
14420         current application to NULL.
14422 2009-01-29  Stephane Delcroix  <sdelcroix@novell.com>
14424         * tilesource.h|cpp: image size is long
14426 2009-01-29  Stephane Delcroix  <sdelcroix@novell.com>
14428         * deepzoomimagetilesource.cpp: set the callback to NULL in ctor
14430 2009-01-29  Stephane Delcroix  <sdelcroix@novell.com>
14432         * multiscaleimage.cpp: ElementToLogicalPoint, ZoomAboutLogicalPoint:
14433         logical is [0,1],[0,1]
14435 2009-01-28  Larry Ewing  <lewing@novell.com>
14437         * frameworkelement.cpp (FrameworkElement::MeasureOverride): 
14438         it might help to actually measure things, so do that... *sigh*
14440 2009-01-28  Larry Ewing  <lewing@novell.com>
14442         * shape.cpp (Shape::ComputeStretchBounds): remove the old
14443         width/height short circuiting when one or the other of
14444         width/height was not set simply use the lyaout clip when it is
14445         around.  Might need a little more work but it is definitely
14446         needed.
14448 2009-01-28  Larry Ewing  <lewing@novell.com>
14450         * frameworkelement.cpp, frameworkelement.h: layout and arrange
14451         children if there are any.  set IsLayoutContainer to true if we
14452         have kids.
14454 2009-01-28  Larry Ewing  <lewing@novell.com>
14456         * frameworkelement.cpp (FrameworkElement::HitTest): move the
14457         majority of the hit test logic here.  Now we only walk the
14458         children once and we only call InsideObject when we must.
14459         InsideObject now only checks the local object subtree is handled
14460         in HitTest.
14462         * panel.cpp, panel.h:
14463         * control.cpp, control.h:
14464         * border.cpp, border.h:
14465         * text.cpp, text.h: remove the old HitTest and rework InsideObject
14466         for the new rule.
14468         * uielement.cpp: make InsideClip potentially a little faster.
14470 2009-01-28  Larry Ewing  <lewing@novell.com>
14471         
14472         * uielement.cpp (UIElement::OnPropertyChanged): invalidate measure
14473         on visibility.
14475         * control.cpp:
14476         * border.cpp:
14477         * canvas.cpp: skip invisible elements.
14479 2009-01-28  Jeffrey Stedfast  <fejj@novell.com>
14481         * textbox.cpp (TextBoxView::Layout): We need to break the text
14482         apart by lines so that the TextLayout engine can handle them
14483         properly.
14485         * layout.cpp (TextLayout::LayoutWrapWithOverflow): Copy run->crlf
14486         over to line->crlf for each LineBreak.
14487         (TextLayout::GetCursor): Need to keep track of the line-ending
14488         character sequences as well.
14490         * layout.h (TextRun::IsLineBreak): New method to check if the run
14491         represents a LineBreak, cleaner than manually checking for text ==
14492         NULL.
14493         (TextRun::ctor): LineBreak version now takes a crlf argument to
14494         specify which line ending sequence it is.
14496 2009-01-28  Jeffrey Stedfast  <fejj@novell.com>
14498         * textbox.cpp (move_down): Fixed to handle any line-ending.
14499         (move_up): Same.
14500         (next_word): Same.
14501         (prev_word): Same.
14502         (TextBox::KeyPressBackSpace): Handle backspacing over any eoln
14503         sequence.
14504         (TextBox::KeyPressDelete): Same.
14505         (TextBox::KeyPressHome): Same.
14506         (TextBox::KeyPressEnd): Same.
14507         (TextBox::KeyPressRight): Same.
14508         (TextBox::KeyPressLeft): Same.
14509         (TextBoxView::OnKeyDown): Hitting Enter in a Silverlight TextBox
14510         inserts a \r character, not a \n, nor a \r\n.
14512         * text.cpp (TextBlock::Layout): Handle \r and \r\n as line-ending
14513         formats too.
14514         (TextBlock::SetTextInternal): Canonicalize line endings in our
14515         temp buffer.
14517         * layout.cpp (TextRun::TextRun): Don't worry about line endings...
14519 2009-01-28  Jackson Harper  <jackson@ximian.com>
14521         * xaml.cpp: Fix logic for setting name and key on
14522         storyboards. Rules are:
14523             1. You can set both if you set the name before the key
14524             2. You can set both if both values are equal
14525         
14526 2009-01-28  Chris Toshok  <toshok@ximian.com>
14528         * style.cpp (SetterBaseCollection::AddedToCollection): chain up to
14529         DependencyObjectCollection::AddedToCollection.
14530         (SetterBaseCollection::RemovedFromCollection): chain up to
14531         DependencyObjectCollection::RemovedFromCollection.
14533 2009-01-28  Sebastien Pouliot  <sebastien@ximian.com>
14535         * dependencyproperty.g.cpp: Regenerated
14536         * enums.cpp|h: Add MediaElementState
14537         * playlist.cpp: Use new MediaElementState enum
14538         * mediaelement.cpp|h: Use new MediaElementState enum
14540 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14542         * dependencyobject.cpp: ~EventObject: only inc objects_destroyed once.
14544 2009-01-27  Larry Ewing  <lewing@novell.com>
14546         * grid.cpp: limit the reduction in size to zero.
14548 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14550         * runtime.cpp:
14551         * dependencyobject.cpp: Fix building with object tracking.
14553 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14555         * debug.h: Surround logging macros with #if LOGGING instead of #if
14556         DEBUG.
14558 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14560         * dependencyobject.cpp: Move the OBJECT_TRACK macro here from the
14561         header, it's not used anywhere but in this file.
14563         * dependencyobject.h: Remove OBJECT_TRACKING from here, it's done at
14564         configure time now.
14566 2009-01-28  Jeffrey Stedfast  <fejj@novell.com>
14568         * textbox.cpp (TextBoxView::OnModelChanged): Handle updates to
14569         ReadOnly status.
14570         (TextBox::OnPropertyChanged): Emit ReadOnly model-changed event.
14572 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14574         * uielement.h: Make Dispose public.
14576 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14578         * codec-version.h.in:
14579         * dependencyobject.h:
14580         * dependencyobject.cpp: EventObject: Make the flags field an gint32
14581         field (to keep size consistent), put the flags at the upper bits and
14582         use the remaining lower bits for the object id. This requires a codec
14583         abi bump.
14585 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14587         * dependencyobject.cpp: Use bitfields correctly.
14589 2009-01-28  Sebastien Pouliot  <sebastien@ximian.com>
14591         * text.cpp: FontFamily can be NULL so we can't just access its
14592         source field without a check. Fix SIGSEGV when running moon-unit.
14593         * value.cpp: FontFamily is not a (managed) struct so it can have
14594         a NULL value. Fix SIGSEGV when creating a Value out of a NULL
14595         FontFamily in moon-unit.
14597 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14599         * type.h:
14600         * type-generated.cpp: Regenerated.
14602 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14604         * type.h:
14605         * type.h.in:
14606         * cbinding.h:
14607         * cbinding.cpp:
14608         * type-generated.cpp: Regenerated.
14610 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14612         * audio.h:
14613         * audio.cpp:
14614         * audio-pulse.h:
14615         * audio-alsa.cpp:
14616         * audio-pulse.cpp: Don't register any audio threads, they may interact
14617         badly with the gc and deadlock. Audio threads shouldn't be doing
14618         anything which requires the current deployment to be set anyway.
14620 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14622         * pipeline.h:
14623         * pipeline.cpp: AudioStream: call SetObjectType.
14625 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14627         * dependencyobject.h:
14628         * dependencyobject.cpp: Add an EventObject ctor overload which takes a
14629         Type::Kind. In EventObject::ref don't warn about inexistent
14630         deployments for audio objects.
14632 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14634         * dependencyobject.cpp: EventObject::GetDeployment: Fix warning.
14636 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14638         * audio.h:
14639         * audio.cpp:
14640         * audio-pulse.h:
14641         * audio-alsa.cpp:
14642         * audio-pulse.cpp: Every AudioSource already has deployment set (since
14643         they inherit from EventObject), use that to set the current
14644         deployment.
14646 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14648         * src.mdp: Updated.
14650 2009-01-27  Chris Toshok  <toshok@ximian.com>
14652         * pipeline.cpp: include codec-version.h
14654         * pipeline-ui.cpp: same.
14656         * pipeline.h: remove the MOONLIGHT_CODEC_ABI_VERSION #define from
14657         here.
14659         * codec-version.h.in: new file.  update the
14660         MOONLIGHT_CODEC_ABI_VERSION #define here when things change.
14662 2009-01-27  Larry Ewing  <lewing@novell.com>
14664         * mediaelement.cpp (MediaElement::MeasureOverride): correct
14665         argument order.
14667 2009-01-27  Larry Ewing  <lewing@novell.com>
14669         * frameworkelement.cpp, frameworkelement.h: move generic
14670         bounds_with_children computation here for now.  Make
14671         GetSubtreeBounds return bounds or bounds_with_children based on
14672         having children. Start setting the layout clip in arrange (it will
14673         probably move later).  Rework the layout_xform logic slightly.
14675         * uielement.cpp: remove the generic render warning, it is ok not
14676         to override here if there is nothing local you need to draw.  When
14677         intersecting bounds with the clip path take the layout clip into
14678         account too.
14679         
14680         * text.cpp: update for bounds changes.  Don't recompute the
14681         natural bounds every pass.
14683         * mediaelement.cpp, mediaelement.h:
14684         * media.cpp, media.h: rework arrange and measure to match shape.
14685         Remove overridden bounds logic since it is no longer needed. Only
14686         use the odd width/height setting logic when we aren're part of a
14687         layout tree. Use the layout clip when drawing.
14689         * shape.cpp: clean up the bounds logic. Use the layout clip when
14690         drawing.
14692         * control.cpp, control.h:
14693         * border.cpp, border.h: use the layout clip when rendering, remove
14694         overrides for bounds now that fe handles them.
14696         
14697 2009-01-27  Chris Toshok  <toshok@ximian.com>
14699         * Makefile.am (libmoon_include_headers): add fontfamily.h
14701         * fontfamily.h: add struct.
14702         
14703         * control.h, text.h: FontFamilyProperty is of type FontFamily now.
14705         * text.cpp: FontFamilyProperty is a FontFamily struct now, not a
14706         string.
14708         * value.cpp: add FontFamily logic, and remove FONTFAMILY from the
14709         unmarshaled bits.
14711         * value.h.in (struct Value): add FontFamily and guint32 cases.
14713         * xaml.cpp (value_from_str): add case for FONTFAMILY.
14715         * value.h, type-generated.cpp, dependencyproperty.g.cpp: regen.
14717 2009-01-27  Geoff Norton  <gnorton@novell.com>
14719         * audio-pulse.cpp|h: Use the Deployment sourced from the player
14720         * dependencyobject.cpp: Fix the warning to not use triple not
14721         negative logic
14722         * deployment.cpp: If we find the deployment from the domain,
14723         put it in the tls slot to make future lookups use the fast-path.
14725 2009-01-27  Jeffrey Stedfast  <fejj@novell.com>
14727         * textbox.cpp (TextBox::TextBox): Don't connect to KeyDown/Up
14728         events anymore. Instead of having a bool 'emit' flag, use
14729         something closer to gtk's freeze_count.
14730         (TextBox::OnKeyDown): Moved to TextBoxView.
14731         (TextBox::OnKeyUp): Same.
14732         (TextBox::SelectAll): Now returns bool to specify if the selection
14733         has changed.
14734         (TextBox::PreKeyPress): Freeze event emission for our state
14735         changes.
14736         (TextBox::PostKeyPress): Thaw them and emit the events.
14737         (TextBoxView::OnKeyDown): Before processing the KeyEvent, call
14738         textbox->PreKeyPress() and after processing, call
14739         textbox->PostKeyPress().
14741 2009-01-27  Jackson Harper  <jackson@ximian.com>
14743         * value.cpp: unmarshall fonts properly.
14745 2009-01-27  Geoff Norton  <gnorton@novell.com>
14747         * dependencyobject.cpp|h:
14748         * mediaplayer.cpp: Remove the stupidity from my last commit.
14749         * audio.cpp: We're in the right thread and Deployment here, use
14750         Deployment::GetCurrent().
14752 2009-01-27  Geoff Norton  <gnorton@novell.com>
14754         * dependencyobject.cpp|h: Add a SetDeployment() call to lazy set
14755         the deployment on a EO.
14756         * deployment.cpp: Add some more logging.
14757         * mediaplayer.cpp: Inherit our Deployment from the MediaElement
14758         who owns us.
14760 2009-01-27  Geoff Norton  <gnorton@novell.com>
14762         * audio-alsa.cpp:
14763         * audio-pulse.cpp: Register the worker-thread's with mono and set our
14764         deployment correctly.
14765         * audio.cpp|h: Inherit the deployment from the MediaPlayer and keep it
14766         around so that our audio-players can register the thread with mono.
14768 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14770         * pipeline.cpp: WorkerLoop: set the current deployment for every work
14771         item.
14773         * deployment.h:
14774         * deployment.cpp: Add RegisterThread.
14776 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14778         * deployment.cpp: Deployment: Add some logging, fix indentation and call
14779         the DependencyObject ctor which takes a Deployment instead of the
14780         default ctor.
14782 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14784         * dependencyobject.h:
14785         * dependencyobject.cpp: Add EventObject and DependencyObject ctors which
14786         take a Deployment*, and an Initialize method which is called by both
14787         ctors of each type.
14789 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14791         * deployment.h: Initialize doesn't need cbinding/pinvoke.
14793 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14795         * debug.h: Add LOG_DEPLOYMENT.
14797         * runtime.h:
14798         * runtime.cpp: Add LOG_DEPLOYMENT. Call Deployment::Initialize in
14799         runtime_init.
14801 2009-01-27  Geoff Norton  <gnorton@novell.com>
14803         * deployment.cpp|h: Lock our access to the hash.  Remove a SetCurrent()
14804         instance since its just sugar and cant be bound anyways.
14806 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14808         * dependencyobject.h:
14809         * dependencyobject.cpp: Move ref to cpp file and add some sanity checks.
14811 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14813         * dependencyobject.h:
14814         * dependencyobject.cpp: Add Deployment* and flags fields on EventObject.
14816 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14818         * collection.cpp: Collection::Dispose: Call base class Dispose too.
14820 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14822         * grid.h:
14823         * type.h:
14824         * text.h:
14825         * size.h:
14826         * popup.h:
14827         * shape.h:
14828         * value.h:
14829         * media.h:
14830         * error.h:
14831         * panel.h:
14832         * brush.h:
14833         * clock.h:
14834         * style.h:
14835         * stylus.h:
14836         * border.h:
14837         * canvas.h:
14838         * binding.h:
14839         * runtime.h:
14840         * trigger.h:
14841         * control.h:
14842         * textbox.h:
14843         * pipeline.h:
14844         * geometry.h:
14845         * template.h:
14846         * namescope.h:
14847         * uielement.h:
14848         * animation.h:
14849         * eventargs.h:
14850         * resources.h:
14851         * transform.h:
14852         * collection.h:
14853         * animation2.h:
14854         * downloader.h:
14855         * expression.h:
14856         * deployment.h:
14857         * tilesource.h:
14858         * bitmapimage.h:
14859         * usercontrol.h:
14860         * application.h:
14861         * mediaelement.h:
14862         * contentcontrol.h:
14863         * multiscaleimage.h:
14864         * dependencyobject.h:
14865         * type-generated.cpp:
14866         * frameworkelement.h:
14867         * multiscalesubimage.h:
14868         * deepzoomimagetilesource.h: Include all types derived from EventObject
14869         in the type system and remove the IncludeInKinds annotations from
14870         those classes.
14872 2009-01-27  Chris Toshok  <toshok@ximian.com>
14874         * xaml.cpp (XamlElementInstanceManaged::TrySetContentProperty):
14875         add the "XamlElementInstance* value" overload.  part of axelerate
14876         fix.
14877         (XamlElementInfoManaged::GetContentProperty): pass
14878         obj->AsDependencyObject() to GetContentPropertyName, instead of
14879         obj (which is a Value*).
14881 2009-01-26  Chris Toshok  <toshok@ximian.com>
14883         * xaml.cpp (XNamespace::IsParentResourceDictionary, SetAttribute):
14884         some behavior with x:Key/x:Name only happens when the element is a
14885         child of a ResourceDictionary.
14887 2009-01-26  Larry Ewing  <lewing@novell.com>
14889         * grid.cpp: rework proportional contribution of auto columns.
14891         * uielement.cpp: remove the slot logic from the transform here we
14892         will compute it in arrange.
14894 2009-01-26  Larry Ewing  <lewing@novell.com>
14896         * grid.cpp (Grid::ArrangeOverride): fix a an error in the loop
14897         bounds.
14899 2009-01-26  Geoff Norton  <gnorton@novell.com>
14901         * deployment.cpp: Cleanup our usage of hash a bit to avoid some
14902         senseless compare/branches.
14904 2009-01-26  Larry Ewing  <lewing@novell.com>
14906         * shape.cpp (Shape::Clip): hack back in shape clipping until the
14907         layout clip logic fixed.
14909 2009-01-26  Geoff Norton  <gnorton@novell.com>
14911         * deployment.cpp: Remove a useless null guard now that we have
14912         Deployment::Initialize.  Don't rudely nuke the TLS slot we might not
14913         own.
14915 2009-01-26  Geoff Norton  <gnorton@novell.com>
14917         * deployment.cpp|h:  Deployment now does all the domain book keeping
14918         for us, so that calls to GetCurrent will return the Deployment for 
14919         the appropriate context, it will also set the MonoDomain* appropriately
14920         where necessary.
14922 2009-01-26  Jeffrey Stedfast  <fejj@novell.com>
14924         * textbox.cpp (class TextBoxDynamicPropertyValueProvider):
14925         Removed.
14926         (TextBox::OnPropertyChanged): Guard SelectedTextProperty and
14927         TextProperty from reentrancy.
14928         (TextBox::EmitSelectionChanged): Update the value before emitting
14929         the event, this way we don't need the dynamic provider.
14930         (TextBox::EmitTextChanged): Same.
14931         (TextBox::OnKeyDown): Handle key == GDK_Return.
14933 2009-01-26  Jeffrey Stedfast  <fejj@novell.com>
14934         
14935         * textbox.cpp (class TextBoxDynamicPropertyValueProvider): We need
14936         to handle the TextProperty as well.
14937         (TextBox::TextBox): Init text_changed to false.
14938         (TextBox::EmitSelectionChanged): New helper method to set
14939         selection_changed to true and then emit the event.
14940         (TextBox::EmitTextChanged): Same idea.
14941         (TextBox::OnPropertyChanged): Use the new Emit helper methods.
14942         (TextBox::ClearSelection): Same.
14943         (TextBox::Select): Same.
14945 2009-01-26  Sebastien Pouliot  <sebastien@ximian.com>
14947         * animation.h: Change validators for TargetNameProperty and
14948         TargetNameProperty
14949         * dependencyproperty.g.cpp: Regenerated
14950         * validators.cpp|h: Add new IsTimelineValidator that check that
14951         the instance is derived from Timeline.
14953 2009-01-26  Larry Ewing  <lewing@novell.com>
14954         
14955         * border.cpp:
14956         * canvas.cpp:
14957         * dirty.cpp:
14958         * control.cpp, control.h:
14959         * frameworkelement.cpp, frameworkelement.h:
14960         * src/grid.cpp:
14961         * src/media.cpp:
14962         * src/mediaelement.cpp:
14963         * src/shape.cpp:
14964         * src/uielement.cpp:
14965         * src/usercontrol.h: Fix things to match the test results.  Still
14966         a few regressions in shapes.
14967         
14968 2009-01-26  Larry Ewing  <lewing@novell.com>
14970         * border.cpp (Border::MeasureOverride): 
14972 2009-01-26  Larry Ewing  <lewing@novell.com>
14974         * grid.cpp (Grid::MeasureOverride): handle out of bounds
14975         rows/columns the way the tests indicate.
14977 2009-01-24  Larry Ewing  <lewing@novell.com>
14979         * border.cpp (Border::MeasureOverride): Fix a width/height mixup.
14981 2009-01-24  Larry Ewing  <lewing@novell.com>
14983         * uielement.h (class UIElement): add IsLayoutContainer () to test
14984         if a given element wants to do the layout dance.  Hopefully this
14985         can be removed once the logic is more clear.
14987         * panel.h:
14988         * canvas.h:
14989         * border.h:
14990         * usercontrol.h: add IsLayoutContainer values.
14991         
14992 2009-01-26  Larry Ewing  <lewing@novell.com>
14994         * frameworkelement.cpp: tests show some really crazy behavior in
14995         the short circuit case, try to emulate that.
14997 2009-01-26  Larry Ewing  <lewing@novell.com>    
14999         * frameworkelement.cpp (FrameworkElement::Measure): remove the
15000         short circuit.
15002         * media.cpp: fix rendering.
15004 2009-01-26  Larry Ewing  <lewing@novell.com>
15005         
15006         * control.cpp: 
15007         * border.cpp: Try to get alignment working visually.
15009         * frameworkelement.cpp: hack the needed behavior in until I
15010         understand the problem better.
15012         * mediaelement.cpp, mediaelement.h:
15013         * media.cpp: use the layout values in stretching
15015 2009-01-26  Larry Ewing  <lewing@novell.com>
15017         * frameworkelement.cpp:
15018         * shape.cpp:
15019         * media.cpp:
15020         * mediaelement.cpp, mediaelement.h: fix up the bounds to use the
15021         new methods.
15023 2009-01-26  Larry Ewing  <lewing@novell.com>
15025         * media.h:
15026         * media.cpp: add bounds logic.
15028         * dirty.cpp:
15029         * control.cpp:
15030         * canvas.cpp:
15031         * border.cpp: start trying to deal with
15032         alignment.
15034         * frameworkelement.cpp: compute the layout_xform.
15035         
15036         * uielement.cpp, uielement.h: add layout_xform and use it.
15037         
15038         * shape.cpp: try something else in measure.
15040         * size.h: add == and != overrides.
15042 2009-01-26  Jeffrey Stedfast  <fejj@novell.com>
15044         * brush.cpp (VisualBrush::SetupBrush): Updated.
15046         * uielement.cpp (UIElement::Render): Render our subtree in the
15047         Region* version of this method and get rid of the old x,y,w,h
15048         version.
15050         * text.cpp (TextBlock::Render): Override the Render() that takes a
15051         Region.
15052         (Glyphs::Render): Same.
15054         * textbox.cpp (TextBoxView::Render): Same.
15056         * shape.cpp (Shape::Render): Here too.
15058 2009-01-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
15060         * src.mdp: Update.
15062 2009-01-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
15064         * type.cpp: Revert r124497.
15066 2009-01-26  Sebastien Pouliot  <sebastien@ximian.com>
15068         * transform.cpp: Add comment about a difference between SL2/ML 
15069         in caching/computing the resulting matrix value (exposed in SL2) 
15070         of a TransformGroup
15072 2009-01-26  Jackson Harper  <jackson@ximian.com>
15074         * xaml.cpp: Move this check into a function since it will be used
15075         in a few places.
15077 2009-01-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
15079         * type.cpp: Type::Find: Check for NULL deployment to avoid crashes.
15081 2009-01-26  Chris Toshok  <toshok@ximian.com>
15083         * animation2.h, animation.[cpp,h], application.[cpp,h], asf/asf.h,
15084         binding.[cpp,h], bitmapimage.[cpp,h], brush.[cpp,h],
15085         canvas.[cpp,h], clock.[cpp,h], collection.[cpp,h],
15086         contentcontrol.[cpp,h], deepzoomimagetilesource.[cpp,h],
15087         dependencyobject.[cpp,h], dependencyproperty.h,
15088         deployment.[cpp,h], downloader.[cpp,h], error.[cpp,h],
15089         eventargs.[cpp,h], expression.[cpp,h], frameworkelement.[cpp,h],
15090         geometry.[cpp,h], grid.[cpp,h], media.[cpp,h],
15091         mediaelement.[cpp,h], multiscaleimage.[cpp,h],
15092         multiscalesubimage.h, namescope.[cpp,h], pipeline.h,
15093         popup.[cpp,h], resources.[cpp,h], runtime.[cpp,h], shape.[cpp,h],
15094         size.[cpp,h], style.[cpp,h], stylus.[cpp,h], textbox.[cpp,h],
15095         text.[cpp,h], tilesource.[cpp,h], transform.[cpp,h],
15096         trigger.[cpp,h], uielement.[cpp,h], uri.h, usercontrol.cpp,
15097         usercontrol.h: move some methods (mostly ctor/dtor) to the .cpp
15098         files, and remove GetObjectType - call SetObjectType instead.  Add
15099         @IncludeInKinds everywhere on types we want in the Kinds array -
15100         nothing is implicit now.  Also, add @SkipValue on types that
15101         shouldn't automatically appear in the Value struct (As* method,
15102         etc).
15104         * border.[cpp,h], control.[cpp,h], panel.[cpp,h]: same as above,
15105         but also call SetSubtreeObject at the right times (basically
15106         whenever our subtree object changes).
15108         * template.[cpp,h]: do the GetObjectType/SetObjectType switch here
15109         too.  also, rework the control template application step - don't
15110         cache the tree and duplicate it.  just reparse.  hook up template
15111         bindings properly as well.  with this change buttons are starting
15112         to look right.
15114         * type.cpp: total_event_count = my_events +
15115         parent->total_event_count, so if my_events == 0...
15116         
15117         * xaml.cpp (start_element): reverse the subclass check.
15119         * cbinding.cpp, cbinding.h, type-generated.cpp, type.h, value.h: regen
15121         * Makefile.am: add expression.cpp, and there's no need for
15122         separate file lists anymore.
15124 2009-01-25  Chris Toshok  <toshok@ximian.com>
15126         * dependencyproperty.cpp (DependencyProperty::RegisterManagedProperty):
15127         this registers a custom property.  Fixes moon-unit failures.
15128         
15129 2009-01-25  Chris Toshok  <toshok@ximian.com>
15131         * value.cpp (Value::Value): allow ManagedTypeInfo of NULL - fixes
15132         moon-unit crash.
15134 2009-01-25  Chris Toshok  <toshok@ximian.com>
15136         * xaml.cpp: mostly just remove the NULL's we were passing to the
15137         various DependencyObject methods that used to require an
15138         additional_types arg.
15139         (dependency_object_set_attributes): one important fix here - force
15140         the loader to do the SetValue if the type is URI, or if the type
15141         of the object itself is a custom type.  Also, if we've converted
15142         the string to a valid value already, don't pass a string to the
15143         loader - this keeps us from passing "{Binding foo...}" to the
15144         loader to setvalue on a databound property.  This does uncover a
15145         failing in our managed code, though, that there's no way to deal
15146         with the unmanaged BindingExpression from managed code.
15148         * application.cpp, application.h: instead of having a
15149         MonoDomain->Application mapping, we now have a
15150         MonoDomain->Deployment mapping, so Application::GetCurrent maps to
15151         Deployment::GetCurrent()->GetCurrentApplication().
15152         
15153         * deployment.cpp, deployment.h: flesh out Deployment, along with
15154         the MonoDomain->Deployment mapping.  Also add a per-deployment
15155         Types* object, so we can look them up anywhere in the engine
15156         without having to rely on the managed layer passing
15157         additional_types.
15158         
15159         * type.h.in, type.cpp: remove additional_types from all the apis.
15160         the currently registered custom types are always available from
15161         the Current deployment, which Type::Find uses.  Also, add
15162         IsCustomType which lets us check if a type is one of our special
15163         built-in types, or if it's one that's been registered dynamically.
15165         * value.h.in, value.cpp: remove additional_types.
15167         * dependencyproperty.h, dependencyproperty.cpp: remove
15168         additional_types.
15170         * dependencyobject.h, dependencyobject.cpp: remove
15171         additional_types.
15173         * uielement.h: add cbindings/pinvokes for ElementAdded and
15174         ElementRemoved.
15176         * contentpresenter.h, contentpresenter.cpp: remove - this is 100%
15177         managed now.
15178         
15179         * Makefile.am: remove contentpresenter.{h,cpp}
15181         * type.h, type-generated.cpp, value.h, cbinding.cpp, cbinding.h:
15182         regen.
15184 2009-01-25  Sebastien Pouliot  <sebastien@ximian.com>
15186         * cbinding.cpp|h: Regenerated
15187         * transform.cpp|h: Add GetMatrix (w/bindings).
15189 2009-01-23  Geoff Norton  <gnorton@novell.com>
15191         * xaml.cpp:  This is case-insensitive here too.
15193 2009-01-23  Geoff Norton  <gnorton@novell.com>
15195         * dependencyobject.cpp:  Avoid a SIGSEGV if the parent_scope is null.
15197 2009-01-23  Jeffrey Stedfast  <fejj@novell.com>
15199         * utils.cpp (managed_stream_read_func): Fixed to do as intended.
15200         (managed_stream_write_func): Same.
15202         * textbox.cpp (next_word): Implemented.
15203         (prev_word): Implemented.
15205 2009-01-23  Andreia Gaita  <avidigal@novell.com>
15207         * clock.[h|cpp]: Add RemoveTickCall() to remove callbacks from the
15208         list in case the dispatcher gets destroyed before they are processed.
15210 2009-01-23  Geoff Norton  <gnorton@novell.com>
15212         * utils.cpp: Remove some g_error and handle ridiculously large
15213         zip files to appease glib.
15215 2009-01-23  Sebastien Pouliot  <sebastien@ximian.com>
15217         * dependencyproperty.g.cpp: regenerated
15218         * brush.h: Set default values for RadialGradientTransform points
15220 2009-01-23  Stephane Delcroix  <sdelcroix@novell.com>
15222         * multiscaleimage.cpp: add a bool so render knows if it was
15223         invalidated locally or not, and should keep rendering the upper
15224         layers or restart from the bottom.
15226 2009-01-23  Geoff Norton  <gnorton@novell.com>
15228         * pipeline.h: Move ManagedStreamCallbacks to utils so other things
15229         can use them
15230         * utils.cpp|h: Implement a minizip io-style wrapper around
15231         ManagedStreamCallbacks so that we can unzip from / to managed Stream's. 
15233 2009-01-23  Stephane delcroix  <sdelcroix@novell.com>
15235         * multiscaleimage.cpp: no longer crash on null uri
15237 2009-01-23  Sebastien Pouliot  <sebastien@ximian.com>
15239         * xaml.cpp: Fix SIGSEGV when we're parsing something that turns out
15240         to be valid (xml-wise) but not a DO (e.g. a Color).
15242 2009-01-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
15244         * src.mdp: Added new files.
15246 2009-01-22  Chris Toshok  <toshok@ximian.com>
15248         * textbox.h, textbox.cpp (class PasswordBox): move the ctor to
15249         .cpp, and call SetDefaultStyleKey to get that working.
15251 2009-01-22  Chris Toshok  <toshok@ximian.com>
15253         [ fixes to get http://www.life-silverlight.com/ to come up with
15254         exceptions ]
15256         * enums.cpp (initialize_enums): add a mapping for the property
15257         VerticaalContentAlignment using the vertical_alignment_map.
15259         * uielement.h, uielement.cpp: move SetVisualParent to the .cpp
15260         file.  Also, call SetSurface in SetVisualParent, so things like
15261         controls templates get the right surface assigned to them (they
15262         have no logical parent, only a visual one.)
15264         * contentpresenter.cpp (ContentPresenter::OnLoaded): follow the
15265         other template stuff - create a temp namescope here.  it won't be
15266         merged, so nothing to worry about.  Also, don't call
15267         PrepareContentPresenter here.  do it after we look up text and
15268         root in OnApplyTemplate.
15269         (ContentPresenter::OnApplyTemplate): prepare the content
15270         presenter.
15272 2009-01-22  Jeffrey Stedfast  <fejj@novell.com>
15274         * contentpresenter.cpp (ContentPresenter::PrepareContentPresenter):
15275         Clean up the goto.
15276         (ContentPresenter::OnLoaded): Only unref the template if it isn't
15277         null.
15279         * contentpresenter.h (ContentPresenter::GetElementRoot):
15280         Implemented temporary binding hack.
15282         * contentpresenter.cpp (ContentPresenter::PrepareContentPresenter):
15283         Implemented.
15284         (ContentPresenter::OnPropertyChanged): Call
15285         PrepareContentPresenter() instead of ApplyTemplate().
15286         (ContentPresenter::OnApplyTemplate): Implemented.
15288 2009-01-22  Chris Toshok  <toshok@ximian.com>
15290         * application.h, application.cpp: make surface a per-application
15291         thing, and add GetSurface/SetSurface.
15293         * cbinding.h, cbinding.cpp: regen.
15295 2009-01-22  Jeffrey Stedfast  <fejj@novell.com>
15297         * contentcontrol.cpp (ContentControl::ContentControl): I'm
15298         guessing this needs to call SetDefaultStyleKey as well.
15300         * textbox.cpp (TextBoxView): Get rid of the TextBoxProperty
15301         because that causes problems (the TextBox already has a logical
15302         parent). Instead, we'll just keep track of it internally
15303         ourselves.
15304         (TextBoxView::SetTextBox): Do what OnPropertyChanged() used to do
15305         when the TextBox property changed.
15307         * contentpresenter.cpp (ContentPresenter::ContentPresenter): Set
15308         the default style key.
15309         (ContentPresenter::OnLoaded): Load the default template.
15311         * contentpresenter.cpp|h: New source files. Subclass Control even
15312         though in managed-land, we technically subclass
15313         FrameworkElement. This way we can take advantage of Control's
15314         template logic.
15316 2009-01-22  Chris Toshok  <toshok@ximian.com>
15318         * xaml.cpp (dependency_object_set_attributes): commit jackson's
15319         patch (with one slight modification) so everyone can have the
15320         wonderful world of non-broken setters.
15322 2009-01-22  Rolf Bjarne Kvinge  <RKvinge@novell.com>
15324         * dependencyobject.h:
15325         * dependencyobject.cpp: Remove comment about weak refs, and #if DEBUG
15326         around object counters (we define DEBUG always anyways, and the
15327         counters are always useful).
15329 2009-01-22  Rolf Bjarne Kvinge  <RKvinge@novell.com>
15331         * dependencyobject.cpp: Protect objects_alive with a mutex.
15333 2009-01-22  Rolf Bjarne Kvinge  <RKvinge@novell.com>
15335         * dependencyobject.h:
15336         * dependencyobject.cpp: Remove the weak ref stuff, it's never been of
15337         any use.
15339 2009-01-22 Stephane delcroix  <sdelcroix@novell.com>
15341         * tilesource.h:
15342         * deepzoomimagetilesource.h|cpp: only download the deepzoomfile the
15343         first time it's needed.
15345 2009-01-21  Geoff Norton  <gnorton@novell.com>
15347         * application.cpp: If we're set to NULL remove the application 
15348         from the hash table.
15350 2009-01-21  Geoff Norton  <gnorton@novell.com>
15352         * Makefile.am: Add bitmapimage.cpp to the build
15353         * application.cpp|h: Add a new callback into Application to
15354         return a resource stream.
15355         * bitmapimage.cpp|h: Add a local buffer backed (possibly) by
15356         a managed resource stream and make this all native.
15357         * brush.cpp|h: Brush.ImageSource is now a BitmapImage
15358         * media.cpp|h: Image.Source is now a BitmapImage
15359         * xaml.cpp: BitmapImage can be constructed from a string in xaml
15360         * cbinding.cpp|h:
15361         * dependencyproperty.g.cpp: Regenerate
15363 2009-01-21  Larry Ewing  <lewing@novell.com>
15365         * grid.cpp (Grid::MeasureOverride): rework the incremental
15366         contribution logic.
15368 2009-01-21  Jeffrey Stedfast  <fejj@novell.com>
15370         * contentcontrol.cpp (ContentControl::OnPropertyChanged):
15371         Implemented by calling ApplyTemplate() when ContentTemplate or
15372         Content properties change.
15373         (ContentControl::OnPropertyChanged): Emit a ContentChangedEvent
15374         when the content changes.
15376 2009-01-21  Larry Ewing  <lewing@novell.com>
15378         * grid.cpp: store measurement info in the row and column
15379         definitions and don't allocate the arrays.
15381 2009-01-21  Larry Ewing  <lewing@novell.com>
15383         * grid.cpp, grid.h:  Hack things to handle missing row
15384         definitions and clean up some old errors.
15386 2009-01-21  Jeffrey Stedfast  <fejj@novell.com>
15388         * textbox.cpp (TextBox::OnApplyTemplate): Use SetValue() directly
15389         rather than SetContent() since SetContent() has been removed.
15390         * contentcontrol.h (class ContentControl): Updated a bit, we're
15391         going to actually use this unmanaged class now.
15392         (class ContentControl): Set PropertyType for ContentProperty to
15393         'object' and get rid of the generated accessors.
15395 2009-01-21  Jackson Harper  <jackson@ximian.com>
15397         * dependencyobject.cpp|h: When setting values, unmarshal values
15398         first.
15399         * value.h|cpp: Add unmarshal function so we can convert types
15400         coming from managed.
15401         * type.h:
15402         * cbinding.cpp|h:
15403         * type-generated.cpp: Regenerated.
15404         
15405 2009-01-21  Sebastien Pouliot  <sebastien@ximian.com>
15407         * dependencyproperty.g.cpp: Regenerated
15408         * text.cpp|h: Revert earlier change as it "turns black" too many
15409         things. DRT #47 will fail until I find the right fix :(
15411 2009-01-21  Larry Ewing  <lewing@novell.com>
15413         * grid.cpp (Grid::ArrangeOverride): make the basic cases work
15414         correctly.
15416 2009-01-21  Alan McGovern  <amcgovern@novell.com>
15418         * popup.cpp: Remove debug code from svn.
15420 2009-01-21  Alan McGovern  <amcgovern@novell.com>
15422         * popup.h:
15423         * popup.cpp:
15424         * cbinding.h:
15425         * Makefile.am:
15426         * cbinding.cpp:
15427         * type-generated.cpp: Initial attempt at trying to get Popup.Child
15428         rendering.
15430 2009-01-21  Sebastien Pouliot  <sebastien@ximian.com>
15432         * dependencyproperty.g.cpp: Regenerated
15433         * text.cpp|h: Move ForegroundProperty from a DefaultValue to a
15434         ctor initialized value. This means that GetLocalValue won't return
15435         null for this property, which makes it behave correctly for SL1/JS
15436         applications.
15437         [Fix DRT#47 failing since r123884]
15439 2009-01-20  Chris Toshok  <toshok@ximian.com>
15441         * application.h, application.cpp: switch from using a static
15442         Application* for "Current" to a hashtable mapping MonoDomain* to
15443         Application*.
15445 2009-01-20  Jackson Harper  <jackson@ximian.com>
15447         * xaml.cpp: Lookup resources in Application.Resources if we don't
15448         find the resource in the tree.
15450 2009-01-20  Chris Toshok  <toshok@ximian.com>
15452         * dependencyproperty.g.cpp, type-generated.cpp, cbinding.h,
15453         cbinding.cpp: regen.
15455         * Makefile.am (libmoon_include_headers): add application.h
15456         (libmoon_la_SOURCES): add application.cpp
15458         * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
15459         if the style was set, call Application::ApplyStyle -- doesn't
15460         actually *apply* the style, it just converts the values.
15462         * style.cpp (SetterBase::SetValueWithErrorImpl): we allow setting
15463         the ConvertedValueProperty after the setter is sealed.
15465         * style.h (class Setter): add ConvertedValueProperty.
15467         * textbox.h (class TextBox): remove @CallInitialize.
15469         * textbox.cpp (TextBox::TextBox): i hate the way this is
15470         expressed (we need a ManagedTypeInfo ctor/dtor), but set
15471         DefaultStyleKey here instead of in managed land.
15473         * provider.cpp (StylePropertyValueProvider::GetPropertyValue):
15474         return the converted property value, not the original (which may
15475         have been a string.)
15476         (StylePropertyValueProvider::SealStyle): only put setters in the
15477         hash if their converted value is non-null.
15479         * control.h (class Control): generate accessors for
15480         DefaultStyleKey.
15482         * control.cpp (Control::OnLoaded): do the default style
15483         application here.
15484         (Control::ApplyTemplate): output a little spew so we
15485         can tell if we're applying a template.
15487         * application.h, application.cpp: move Application here, and make
15488         it a full DO subclass.  It no longer maps to the managed
15489         ApplicationInternal.
15491         * deployment.h: remove Application from here.
15493 2009-01-20  Jackson Harper  <jackson@ximian.com>
15495         * xaml.cpp: When we create templates make sure we track the
15496         template ourself, we can't rely on the ControlTemplate still
15497         having a surface when it is applied.
15499 2009-01-20  Jeffrey Stedfast  <fejj@novell.com>
15501         * keyboard.cpp (Keyboard::OnKeyPress): Update modifiers.
15502         (Keyboard::OnKeyRelease): Same.
15504 2009-01-20  Jackson Harper  <jackson@ximian.com>
15506         * clock.h: Set namespace for Duration and RepeatBehavior
15508 2009-01-20  Sebastien Pouliot  <sebastien@ximian.com>
15510         * dependencyproperty.g.cpp: Regenerated
15511         * uielement.h: Re-apply default value for RenderTransformProperty
15513 2009-01-19  Larry Ewing  <lewing@novell.com>
15515         * runtime.cpp:
15516         * window.h:
15517         * window-gtk.cpp, window-gtk.h: clean up the set background
15518         clearing logic and make it general.
15520 2009-01-19  Larry Ewing  <lewing@novell.com>
15522         * window-gtk.cpp (MoonWindowGtk::InitializeCommon): clear the
15523         window to white by default.
15525 2009-01-19  Larry Ewing  <lewing@novell.com>
15526         
15527         * grid.cpp (Grid::ArrangeOverride): clean up debug spew start
15528         implementing arrangeoverride.
15530 2009-01-19  Larry Ewing  <lewing@novell.com>
15532         * dirty.cpp (Surface::UpdateLayout): make sure we layout the full
15533         screen message too.
15535 2009-01-19  Jackson Harper  <jackson@ximian.com>
15537         * uri.h:
15538         * binding.h: Get kinds generated for these guys.
15539         * type.h:
15540         * type-generated.cpp: updated
15541         
15542 2009-01-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
15544         * src.mdp: Update.
15546 2009-01-19  Jackson Harper  <jackson@ximian.com>
15548         * grid.h: GridLength lives in System.Windows.
15550 2009-01-19  Jackson Harper  <jackson@ximian.com>
15552         * color.h: Colours are in System.Windows.Media.
15554 2009-01-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
15556         * pipeline.h: Instead of overriding GetTypeName for media clases
15557         override GetObjectType so that the generator puts these classes into
15558         our type system. This will fix a lot of the "event not registered"
15559         warnings.
15561         * type.h:
15562         * value.h:
15563         * type-generated.cpp: Regenerated.
15565 2009-01-19  Alan McGovern  <amcgovern@novell.com>
15567         * type.h:
15568         * src.mdp:
15569         * popup.h:
15570         * value.h:
15571         * popup.cpp:
15572         * cbinding.h:
15573         * cbinding.cpp:
15574         * type-generated.cpp:
15575         * dependencyproperty.g.cpp: Create an unmanaged peer for the Popup class
15577 2009-01-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
15579         * type-generated.cpp: When scanning headers in src/ scan src/asf/ too.
15580         Add support for 'unsigned X' types (used in src/asf/).
15582 2009-01-18  Geoff Norton  <gnorton@novell.com>
15584         * xaml.cpp: Only unref the surface if it exists.
15586 2009-01-18  Geoff Norton  <gnorton@novell.com>
15588         * dependencyobject.cpp:  Ensure that the parent scope registration
15589         behavior is only applied to UserControl's.
15591 2009-01-18  Geoff Norton  <gnorton@novell.com>
15593         * xaml.cpp: Only ref the surface if it exists.
15595 2009-01-18  Larry Ewing  <lewing@novell.com>
15597         * dirty.cpp (Surface::UpdateLayout): pass the full size in always.
15599         * grid.cpp, grid.h (Grid::ArrangeOverride): hook up and empty
15600         arrange method for now.
15602 2009-01-18  Larry Ewing  <lewing@novell.com>
15604         * control.cpp: update invaliate/measure to look more like border
15605         (still wrong) and remove some debug spew.
15607 2009-01-18  Sebastien Pouliot  <sebastien@ximian.com>
15609         * cbinding.h|cpp, type.h, value.h: Regenerated
15610         * transform.h: Add UnmanagedMatrix (which is a DO accessible to
15611         managed code) and a new method to get the address of the matrix
15612         elements.
15613         * type-generated.cpp: Regenerated to include UNMANAGEDMATRIX
15615 2009-01-17  Larry Ewing  <lewing@novell.com>
15617         * canvas.cpp (Canvas::MeasureOverride): 
15618         * frameworkelement.cpp (Frameworkelement::MeasureOverride): simplify.
15620 2009-01-17  Jackson Harper  <jackson@ximian.com>
15622         * xaml.cpp: Dont create items for property elements. The element
15623         name for property elements can be an abstract type.
15625 2009-01-17  Jackson Harper  <jackson@ximian.com>
15627         * xaml.cpp: Don't try to set properties that are collections,
15628         they've already had the items added in add_child.
15630 2009-01-17  Jackson Harper  <jackson@ximian.com>
15632         * xaml.cpp|h: Change CreateObject to LookupObject and give it a
15633         flag for actually creating the object. This allows us to verify
15634         the type on hydrated elements without creating another instance
15635         and prevents a circular dependency when elements load themself in
15636         their LoadComponent xaml.
15638 2009-01-17  Geoff Norton  <gnorton@novell.com>
15640         * dependencyobject.cpp:  A custom UserControl has a local namescope
15641         but also needs to be locatable in its parent namescope.
15643 2009-01-16  Jeffrey Stedfast  <fejj@novell.com>
15645         * layout.cpp (TextLayout::GetCursor): Fixed to support segments of
15646         different font size (not that TextBox really needs that since all
15647         runs will be the same exact font).
15649         * textbox.cpp (TextBoxView::UpdateCursor): New convenience method
15650         to update the cursor rect.
15651         (TextBoxView::Layout): Update the cursor after we finish laying
15652         the text out.
15653         (TextBoxView::OnModelChanged): Updated to use UpdateCursor().
15654         (TextBox::OnKeyDown): Prevent character entry if buffer->len >=
15655         maxlen.
15657 2009-01-16  Jackson Harper  <jackson@ximian.com>
15659         * xaml.cpp: NULL is OK if it's being explicitly set.
15661 2009-01-16  Jeffrey Stedfast  <fejj@novell.com>
15663         * textbox.cpp (TextBoxView::OnModelChanged): Invalidate the old
15664         cursor region and the new cursor region.
15665         (TextBoxView::Paint): Paint the cursor as well.
15667         * layout.cpp (Layout::GetCursor): Implemented.
15669 2009-01-16  Larry Ewing  <lewing@novell.com>
15671         * frameworkelement.cpp (FrameworkElement::MeasureOverride):
15672         fix typo.
15673         
15674         * panel.cpp, panel.h: remove arrange override and make measure
15675         override return (0,0) always.
15676         
15677 2009-01-16  Larry Ewing  <lewing@novell.com>
15679         * panel.cpp: Make ArrangeOverride and MeasureOverride do something
15680         closer to the right thing.
15682 2009-01-16  Jeffrey Stedfast  <fejj@novell.com>
15684         * textbox.cpp (TextBox::ArrangeOverride): Removed.
15685         (TextBox::Background) needs to return NULL if not selected mode -
15686         we don't want to be redrawing the normal bg.
15688 2009-01-16  Geoff Norton  <gnorton@novell.com>
15690         * xaml.cpp|h: Allocate a GCHandle to the ManagedXamlLoader if
15691         we're going to keep it alive to apply control templates.
15693 2009-01-16  Geoff Norton  <gnorton@novell.com>
15695         * template.cpp: Add the namescope to the closure to avoid
15696         referencing random memory.
15697         * xaml.cpp: We create a new XamlLoader when applying control 
15698         templates, and inherit the callbacks.  Set vm_loaded to true in
15699         this case.
15701 2009-01-16  Jeffrey Stedfast  <fejj@novell.com>
15703         * textbox.cpp (TextBox::TextBox): Don't init the selection
15704         brushes, they must come from the style.
15706 2009-01-16  Larry Ewing  <lewing@novell.com>
15708         * border.cpp, border.h:
15709         * uielement.cpp, uielement.h:
15710         * panel.cpp, panel.h:
15711         * canvas.cpp, canvas.h:
15712         * control.cpp, control.h:  Remove GetTransformFor completely, use
15713         the layout slot x/y when computing the local transform,
15714         invalidatemeasure (for now) when updating the tranform.
15716         * dirty.cpp: hack in the intial Left/Top stuff until we can clean
15717         up the logic here.
15719 2009-01-16  Larry Ewing  <lewing@novell.com>
15721         * frameworkelement.cpp (FrameworkElement::Arrange): don't stretch
15722         unless stretch is specified.
15724 2009-01-16  Geoff Norton  <gnorton@novell.com>
15726         * mediaelement.h: The MediaElement.Source is a Uri on the managed
15727         side.
15729 2009-01-16  Jackson Harper  <jackson@ximian.com>
15731         * xaml.cpp: FindTypeName type names dont' always have a
15732         namespace/assembly.
15733         - Special case Application and don't try to find it's name since
15734         it is renamed in the managed code. (Need to figure out a better
15735         solution here).
15736         - Pass in NULL for setting propertys and let the underlying types
15737         determine whether or not that is an error.
15739 2009-01-16  Jackson Harper  <jackson@ximian.com>
15741         * xaml.cpp: Before going to managed to create an element, scan the
15742         xnamespace for the x:Class attribute and pass that in as the
15743         element name if we have one, this allows you to use abstract names
15744         for the elements as long as the x:Class is a complete type. Should
15745         also allow us to optimize out a trip into managed.
15747 2009-01-16  Jackson Harper  <jackson@ximian.com>
15749         * xaml.cpp: The xaml context needs to store the callbacks so that
15750         we can properly invoke managed code in a template.
15752 2009-01-16  Jackson Harper  <jackson@ximian.com>
15754         * dependencyproperty.cpp: This warning isn't really needed and now
15755         with managed DP lookup's, this scenario happens about a trillion
15756         times during parsing of generic.xaml.
15758 2009-01-16  Larry Ewing  <lewing@novell.com>
15760         * uielement.h (class UIElement): remove the default value from
15761         RenderTransformProperty until the bugs it introduces are resolved.
15763         * dependencyproperty.g.cpp:Regenerated.
15765 2009-01-15  Sebastien Pouliot  <sebastien@ximian.com>
15767         * dependencyproperty.g.cpp: Regenerated
15768         * grid.h: Add default values for [Column|Row]Definition Width
15769         and Height
15770         * xaml.cpp: Fix most cases (except empty) of GridLength
15772 2009-01-15  Geoff Norton  <gnorton@novell.com>
15774         * downloader.cpp|h: Add downloader_response_abort.
15776 2009-01-15  Jackson Harper  <jackson@ximian.com>
15778         * xaml.cpp|h: We need to pass a pointer to the elements parent
15779         object to managed code, this is so we can look up a Setter's
15780         Style.
15781         - Let managed handle Type::DEPEPENDENCYPROPERTY attributes.
15782         
15783 2009-01-15  Jackson Harper  <jackson@ximian.com>
15785         * dependencyproperty.cpp: Patch mostly by rolf. Allows property
15786         lookup to work on custom types that subclass custom types.
15787         * template.cpp: Now that templates work pretty well, lets reduce
15788         the spam a bit.
15790 2009-01-15  Sebastien Pouliot  <sebastien@ximian.com>
15792         * dependencyproperty.g.cpp: Regenerated to include the specified 
15793         type (and not the implied one from the default value)
15794         * uielement.h: RenderTransformProperty defaults to a empty (identity)
15795         MatrixTransform
15797 2009-01-15  Jeffrey Stedfast  <fejj@novell.com>
15799         * textbox.cpp: Removed default_*[fore,back]ground() functions as
15800         well as textbox_shutdown() since they are no longer needed.
15801         (TextBox::TextBox): Initialize the default SelectionBackground and
15802         SelectionForeground brushes.
15804         * layout.h (struct TextSelection): Removed brushes from
15805         TextSelection struct.
15807 2009-01-15  Jeffrey Stedfast  <fejj@novell.com>
15809         * mediaelement.cpp (MediaElementPropertyValueProvider::GetPropertyValue):
15810         Cannot compare a guint64 with -1, presuming the comparison was
15811         meant to be against TimeSpan_FromPTS (position) instead.
15813         * textbox.cpp: Emit SelectionChanged events with RoutedEventArgs
15814         instead of SelectionChangedEventArgs.
15816         * eventargs.cpp (RoutedEventArgs::RoutedEventArgs): New helper
15817         ctor that takes a source.
15819         * textbox.h (class SelectionChangedEventArgs): Removed, this type
15820         of EventArgs is not actually emitted by TextBox as I had
15821         originally thought. TextBox's SelectionChanged event uses
15822         RoutedEventArgs.
15824 2009-01-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
15826         * type-generated.cpp:
15827         * dependencyproperty.g.cpp: Regenerated.
15829         * mediaelement.h:
15830         * mediaelement.cpp: Inherit directly from FrameworkElement instead of
15831         MediaBase. This requires copying some code from MediaBase into
15832         MediaElement (which at some later stage would move into Media).
15834 2009-01-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
15836         * cbinding.h:
15837         * cbinding.cpp: Regenerated.
15839         * type.h:
15840         * type.cpp:
15841         * type.h.in:
15842         * type-generated.cpp:
15843         * dependencyproperty.h:
15844         * dependencyproperty.cpp: Add support for looking up custom dependency
15845         properties by name.
15847 2009-01-15  Sebastien Pouliot  <sebastien@ximian.com>
15849         * xaml.cpp: Free Value on error inside ManagedNamespace.FindElement.
15850         Add comment on value_from_str_with_typename to update NativeMethods.cs
15852 2009-01-15  Larry Ewing  <lewing@novell.com>
15854         * panel.cpp:
15855         * border.cpp:
15856         * control.cpp:
15857         * frameworkelement.cpp: start taking layout slot into account when
15858         computing bounds.
15860 2009-01-15  Jackson Harper  <jackson@ximian.com>
15862         * xaml.cpp: Storyboard are allowed to have an x:Name and an
15863         x:Key. This is for backwards compatibility because SL1 didn't have
15864         x:Key. It's also stupid.
15866 2009-01-15  Jackson Harper  <jackson@ximian.com>
15868         * xaml.cpp: Add a fake element to templates with all the imported
15869         namespaces. This allows all the namespaces imported in the main
15870         source to work in the template.
15872 2009-01-14  Jeffrey Stedfast  <fejj@novell.com>
15874         * textbox.cpp (TextBoxView::OnSelectionChanged): Force a
15875         re-layout.
15876         (TextBoxView::Layout): Build the text runs based on the selection.
15877         (TextBoxView::Paint): Updated to no longer pass the selection
15878         state to the layout engine.
15880         * layout.h (class ITextSource): Added a Background() accessor and
15881         changed the Foreground() accessor to take a bool selected
15882         argument.
15884         * layout.cpp (RenderSegment): Render the background if non-NULL.
15885         (TextRun::TextRun): Now takes a 'selected' state.
15886         (TextLayout::Render): No longer takes selection or cursor
15887         arguments.
15889 2009-01-14  Jackson Harper  <jackson@ximian.com>
15891         * xaml.cpp: Fix x:Null handling.
15893 2009-01-14 Sebastien Pouliot  <sebastien@ximian.com> 
15895         * brush.h: Add default values used by some brushes
15896         * dependencyproperty.g.cpp: Regenerated
15898 2009-01-14  Larry Ewing  <lewing@novell.com>
15900         * panel.cpp (Panel::GetTransformFor): override gettransformfor for
15901         now.
15903 2009-01-14  Jackson Harper  <jackson@ximian.com>
15905         * xaml.cpp: Add the namespaces to the xaml context.
15907 2009-01-14  Jeffrey Stedfast  <fejj@novell.com>
15909         * textbox.cpp (TextBox::CursorBackSpace): Implemented.
15910         (TextBox::CursorDelete): Implemented.
15912         * layout.cpp (RenderSegment): Split out from RenderLine().
15914 2009-01-14  Jackson Harper  <jackson@ximian.com>
15916         * xaml.cpp: Apparently there is a new NULL on the block.  Use
15917         SetIsNull instead of a NULL Value* now.
15919 2009-01-14  Jackson Harper  <jackson@ximian.com>
15921         * template.cpp: initialize xaml_context. (fixes shutdown crash)
15923 2009-01-14  Jackson Harper  <jackson@ximian.com>
15925         * type.h|h.in: typo. Don't ask me how, but somehow I accidently flipped
15926         these before my last patch.
15928 2009-01-14  Jackson Harper  <jackson@ximian.com>
15930         * xaml.cpp: Styles use their TargetType as their
15931         ResourceDictionary key.
15932         - Handle the new type MANAGEDTYPEINFO by allowing the managed code
15933         to parse it.
15934         * value.cpp|h|.h.in:
15935         * type.h|h.in: New type, ManagedTypeInfo. Contains info for
15936         loading managed types.
15937         * style.h:
15938         * control.h:
15939         * template.h: Use ManagedTypeInfo when we have a System.Type on
15940         the managed side.
15941         * dependencyproperty.g.cpp:
15942         * typegenerated.cpp: Regen
15944 2009-01-14  Jeffrey Stedfast  <fejj@novell.com>
15946         * textbox.cpp: More fixes for cursor movement & keyboard selection.
15948 2009-01-14  Sebastien Pouliot  <sebastien@ximian.com> 
15950         * grid.cpp (MeasureOverride): Free allocated arrays
15952 2009-01-14  Sebastien Pouliot  <sebastien@ximian.com>
15954         * grid.cpp: Add a bunch of NULL checks for width and height to avoid
15955         crashes when running the SDK controls unit tests.
15957 2009-01-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
15959         * dependencyobject.cpp: Fix
15960         media/video/test-reset-media-element-source.html.
15962 2009-01-14  Alan McGovern  <amcgovern@novell.com>
15964         * enums.cpp: Control.HorizontalContentAlignment should map to the
15965         HorizontalAlignment enum.
15967 2009-01-14  Stephane Delcroix  <sdelcroix@novell.com>
15969         * deepzoomtilesource.h|cpp: download the source on UriSourceProperty
15970         changed.
15972 2009-01-14  Stephane Delcroix  <sdelcroix@novell.com>
15974         * deepzoomtilesource.h: mark it with CallInitialize
15976 2009-01-14  Stephane Delcroix  <sdelcroix@novell.com>
15978         * tilesource.h|cpp: autogenerate the cbinding
15980         * deepzoomimagetilesource.h|cpp: define a downloaded cb to poke the
15981         managed side for xml parsing.
15983 2009-01-13  Chris Toshok  <toshok@ximian.com>
15985         * xaml.cpp (XamlLoader::CreateFromFileWithError): strdup the error
15986         message
15987         (XamlLoader::CreateFromStringWithError): same.
15988         (XamlLoader::HydrateFromStringWithError): same.
15989         (~XamlLoader): unref the error_args.
15990         (XamlLoader::HydrateFromString): no need to ref the object again
15991         here if it was passed in.
15993 2009-01-13  Larry Ewing  <lewing@novell.com>
15995         * uielement.cpp, uielement.h (class LayoutInformation): add
15996         LayoutInformation class to hold the layout related attached
15997         properties. (will move it later).
15999         * frameworkelement.cpp: use the new layout information and use it
16000         for invalidation.
16002         * border.cpp: fix the arrange logic.
16004 2009-01-13  Larry Ewing  <lewing@novell.com>
16005         
16006         * shape.cpp: switch over to using the computed values for stretch.
16008         * frameworkelement.cpp:
16009         * uielement.cpp: 
16010         * dirty.cpp, dirty.h:  Try to get invalidation logic close to
16011         correct.
16013 2009-01-13  Larry Ewing  <lewing@novell.com>
16015         * shape.cpp: treat rect and ellipse like normal framework elements.
16016         
16017 2009-01-13  Larry Ewing  <lewing@novell.com>
16019         * frameworkelement.cpp:
16020         * control.cpp:
16021         * canvas.cpp:
16022         * media.cpp: 
16023         * mediaelement.cpp: 
16024         * panel.cpp: Use the layout values for values we used to compute
16025         directly.
16027 2009-01-13  Larry Ewing  <lewing@novell.com>
16029         * grid.cpp (Grid::MeasureOverride): make sure we stay inside the
16030         collection while iterating.
16032 2009-01-13  Larry Ewing  <lewing@novell.com>
16034         * src/canvas.cpp
16035         * src/frameworkelement.cpp
16036         * src/media.cpp
16037         * src/panel.cpp, src/panel.h: layout updates
16039 2009-01-13  Larry Ewing  <lewing@novell.com>
16041         * canvas.cpp (Canvas::ArrangeOverride): pass in the requested
16042         size.
16044         * media.cpp, media.h: add ArrangeOverride/MeasureOverride.
16046 2009-01-13  Larry Ewing  <lewing@novell.com>
16048         * shape.cpp, shape.h: start moving cleaning up references to width
16049         and height and moving towards using the layout logic.  Remove
16050         stale LargestRect stuff
16052         * runtime.c, dirty.h: stub in an update layout function.
16054         * border.cpp, canvas.cpp: try to match some more tests.
16056 2009-01-13  Jeffrey Stedfast  <fejj@novell.com>
16058         * textbox.cpp (TextBox::CursorPageDown): Implemented.
16059         (TextBox::CursorPageUp): Implemented.
16060         (TextBox::CursorHome): Implemented.
16061         (TextBox::CursorEnd): Implemented.
16062         (TextBox::CursorDown): Implemented.
16063         (TextBox::CursorUp): Implemented.
16064         (TextBox::OnKeyDown): Implemented Select-All keybinding and
16065         stubbed out cut/copy/paste.
16067 2009-01-13  Sebastien Pouliot  <sebastien@ximian.com> 
16069         * dependencyproperty.g.cpp: Regenerated
16070         * shape.h|cpp: Remove DefaultValue for Poly[gon|line].Points and 
16071         Shape.StrokeDashArray and set them in the constructors (which is 
16072         bit ifferent and fix Polyhedra animation).
16074 2009-01-13  Sebastien Pouliot  <sebastien@ximian.com>
16076         * dependencyproperty.g.cpp: Regenerated
16077         * shape.h: Add DefaultValue for Poly[gon|line].Points and Shape
16078         StrokeDashArray since they are not NULL in SL2
16080 2009-01-13  Alan McGovern  <amcgovern@novell.com>
16082         * src.mdp: Add the provider stuff to the MD solution
16084 2009-01-13  Chris Toshok  <toshok@ximian.com>
16086         * provider.cpp (StylePropertyValueProvider::SealStyle): only
16087         insert the setter into the hash if the setter's value matches the
16088         type of the setter's property.  Fixes
16089         StyleTest.InvalidValueProgrammatically.
16091 2009-01-13  Jackson Harper  <jackson@ximian.com>
16093         * xaml.cpp|h: Add the ability to lookup full uri's based on local
16094         prefixes. This is so managed can convert something like
16095         'local:' into 'clr-namespace=Foo;assembly=bar'
16097 2009-01-13  Jackson Harper  <jackson@ximian.com>
16099         * xaml.cpp|h: Pass the ParserInfo to every callback, this will
16100         allow us to call back into unmanaged to do extra stuff.
16102 2009-01-13  Stephane Delcroix  <sdelcroix@novell.com>
16104         * tilesource.h|cpp: add a callback and a method to set the callback
16105         so we can poke the managed GetTileLayers.
16107 2009-01-12  Chris Toshok  <toshok@ximian.com>
16109         * style.cpp, style.h (Style::GetPropertyValue): remove this.  it's
16110         been replaced by the hash lookup in the style provider.
16112         * dependencyobject.cpp (DependencyObject::ClearValue): i hate this
16113         change... apparently there's something that happens to lower
16114         precedence providers after you call ClearValue, but *only if the
16115         local value was actually cleared*.  yuck.
16117         * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
16118         remove the Style sealing from SetValueWithErrorImpl, and move it
16119         here where it should have been all along.  Also, do the sealing
16120         via the Style value provider, so it can make things a bit more
16121         efficient.
16123         * provider.cpp (StylePropertyValueProvider::SealStyle): new
16124         method, called by FWE::OnPropertyChanged when the style is
16125         initially set.  we cache the setters (keyed by DP) in a hashtable.
16126         (StylePropertyValueProvider::RecomputePropertyValue): this is the
16127         magic method that DependencyObject::ClearValue calls, which causes
16128         the style provider to refresh its cache for the listed property.
16130 2009-01-12  Jackson Harper  <jackson@ximian.com>
16132         * xaml.cpp: Fix typo, makes ControlTemplates inside of
16133         ControlTemplates work properly.
16135 2009-01-12  Jackson Harper  <jackson@ximian.com>
16137         * xaml.cpp: Add MOON_NOFAIL_MISSING_PROPS, this is a temp hack so
16138         we can load some sites and see which properties are missing, right
16139         now it will only work for attributes. Intentionally not using the
16140         debug flags stuff, because i don't want this hack to stay around
16141         for very long.
16143 2009-01-12  Jackson Harper  <jackson@ximian.com>
16145         * xaml.cpp: Stop trying to set attributes once we hit the first
16146         error.
16148 2009-01-12  Jeffrey Stedfast  <fejj@novell.com>
16150         * collection.cpp (InlineCollection::Equals): New convenience
16151         method to replace text.cpp's inlines_simple_text_equal().
16153         * textbox.h (class TextBox): Now implements ITextSource.
16155         * text.cpp (Inline::UpdateFontDescription): New convenience method
16156         to populate the cached TextFontDescription since we can no longer
16157         rely on doing so from within OnPropertyChanged().
16158         (Inline::Equals): Base comparison method used by
16159         InlineCollection::Equals().
16160         (Run::Equals): Compare the Text property as well.
16161         (TextBlock::Layout): Call UpdateFontDescription() on each Inline
16162         as we iterate through them. Also updated for TextRun ctors.
16163         (TextBlock::OnCollectionItemChanged): Simplified a bit. The basic
16164         premise is that we do not want to force a layout calculation to be
16165         redone, we just need to invalidate if all that changed was a
16166         foreground brush.
16167         (inlines_simple_text_equal): Removed, use
16168         InlineCollection::Equals() instead.
16169         (TextBlock::SetTextInternal): Updated to use
16170         InlineCollection::Equals().
16172         * text.h (class Inline): Now implements the ITextSource
16173         interface. Moved the local TextFontDescription and autogen state
16174         into the private section and added accessors for them.
16176         * layout.cpp|h (class ITextSource): New interface sued by TextRuns
16177         and the internal Layout logic to grab a run's foreground brush and
16178         text decorations.
16179         (TextRun::ctor): No longer take TextDecoration,
16180         TextFontDescription, or Brush arguments, instead takes an
16181         ITextSource that it can query for those properties when it needs
16182         to.
16183         (RenderLine): Updated to get the decorations and foreground brush
16184         from the ITextSource.
16186 2009-01-12  Alan McGovern  <amcgovern@novell.com>
16188         * validators.h:
16189         * validators.cpp:
16190         * mediaelement.h:
16191         * dependencyproperty.g.cpp: Add range validation to TimeSpan
16193 2009-01-12  Jackson Harper  <jackson@ximian.com>
16195         * xaml.cpp: Moved nameditem lookup into the parser info so we can
16196         use the parser context data to lookup resources.  This allows
16197         templates to reference StaticResources.
16199 2009-01-12  Alan McGovern  <amcgovern@novell.com>
16201         * clock.cpp: Minimum FPS is clamped at 1.
16202         
16203 2009-01-12  Jackson Harper  <jackson@ximian.com>
16205         * xaml.cpp|h: Create a xaml context object so we can save some
16206         state information for buffered templates.
16207         * template.h|cpp: Updated xaml methods.
16209 2009-01-12  Alan McGovern  <amcgovern@novell.com>
16211         * animation.h:
16212         * validators.h:
16213         * validators.cpp:
16214         * dependencyproperty.g.cpp: Add correct validator for
16215         Storyboard.TargetName and Storyboard.TargetProperty
16217 2009-01-12  Sebastien Pouliot  <sebastien@ximian.com>
16219         * grid.h: Hide RowDefinitionCollection ctor from managed code
16220         * frameworkelement.cpp, provider.cpp: Even is Is(Type::Style)
16221         returns true the Style value can still be NULL (fix two new crash
16222         in SDK control unit tests)
16224 2009-01-12  Andreia Gaita  <avidigal@novell.com>
16226         * stackpanel.cpp|h: removed, stackpanel is now done in managed
16227           land
16229         * cbinding.cpp|h, dependencyproperty.g.cpp,
16230           type-generated.cpp, type.h,
16231           value.h: regen
16232     
16233         * Makefile.am, src.mdp: update build
16235 2009-01-11  Chris Toshok  <toshok@ximian.com>
16237         * layout.h, layout.cpp (RenderLine): default_fg is unnecessary
16238         now.  the run fg will always be initialized.
16239         (TextRun::TextRun): the fg pointer is Brush*, not Brush**.
16240         (TextLayout::Render): no need to pass in the default foreground.
16242         * runtime.cpp (runtime_shutdown): text_shutdown is gone.
16244         * text.h, text.cpp: stop caching the foreground.  and there's no
16245         need to create the default foreground brush in code.  it's simply
16246         the default value of the Foreground dependency property.
16247         (inlines_simple_text_equal): this needed fixing up since the font
16248         flags really aren't used for inheritance anymore - we need (and
16249         really, always needed to) compare the actual values, not just if
16250         they're set.
16251         (text_shutdown): no need for this anymore.
16252         
16253         * textbox.cpp (TextBoxView::Paint): same.  no more default_fg
16254         needed.
16256 2009-01-11  Chris Toshok  <toshok@ximian.com>
16258         * dependencyobject.h, dependencyobject.cpp: make DO's freezable.
16259         if a DO is frozen, any SetValue() call raises an
16260         UnauthorizedAccessException.  We use this for default values of
16261         DependencyProperties.
16263         * dependencyproperty.cpp (DependencyProperty::DependencyProperty):
16264         freeze the default value.
16266 2009-01-11  Andreia Gaita  <avidigal@novell.com>
16268         * clock.h|cpp (DispatcherTimer): Don't destroy the clock on Stop(), 
16269         it could be called in the middle of a tick. Instead, just reset and 
16270         reuse the clock on every tick. Track if the timer is stopped during 
16271         a tick so the clock is not relaunched. Set a default duration so 
16272         it's never automatic.
16274 2009-01-11  Chris Toshok  <toshok@ximian.com>
16276         * text.h, text.cpp (class Inline): generate accessors for
16277         FontFamily, FontSize, and TextDecoration.
16278         (class Inline, class TextBlock): add an internal DP for the font
16279         filename.
16280         (Inline::OnPropertyChanged): the only case that's needed at the
16281         moment is foreground, but that's slated for the axe as well.
16282         
16283         * dependencyproperty.g.cpp: regen.
16285         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
16286         make sure we inherit properly across the logical tree if the node
16287         doesn't have a visual parent (this fixes inheritance for non
16288         UIElement's, like Runs).  Also, add the FontFilename property to
16289         the list of things that inherit.
16291         * dependencyobject.h,
16292         dependencyobject.cpp (DependencyObject::ProviderValueChanged): new
16293         method.  Providers can call this whenever the value at their
16294         precedence level has changed.  It contains all the smarts to
16295         correctly generate OnPropertyChanged method calls in the face of
16296         all the provider levels.
16298 2009-01-10  Jeffrey Stedfast  <fejj@novell.com>
16300         * textbox.cpp (TextBox::OnKeyDown): Changed a bit. We need to emit
16301         TextChangedEvent and SelectionChangedEvent. Don't combine those
16302         into the ModelChangedEvent that is only meant for TextBoxView.
16303         (TextBox::OnPropertyChanged): Emit TextChangedEvent and
16304         SelectionChangedEvent appropriately.
16305         (TextBoxView::OnSelectionChanged): New event callback handler.
16306         (TextBoxView::OnTextChanged): Same.
16307         (TextBoxView::OnModelChanged): Don't handle text/selection change
16308         notification here anymore, because those 'change' enum types have
16309         been dropped.
16310         (TextBoxView::OnPropertyChanged): Need to listen to more events.
16312 2009-01-10  Jeffrey Stedfast  <fejj@novell.com>
16314         * value.cpp (Value::Value): the const char* ctor now takes a bool
16315         argument specifying whether to take ownership of the string
16316         buffer.
16318         * textbox.cpp (class TextBoxDynamicPropertyValueProvider): We
16319         don't need to keep a char* selection, we only need it temporarily
16320         while creating the Value*.
16321         (TextBox::OnKeyDown): Check for AcceptsReturn when Enter is
16322         pressed.
16323         (TextBox::ClearSelection): Don't set the TextProperty value
16324         anymore. Also don't bother with the setvalue state variable
16325         anymore.
16326         (TextBox::OnPropertyChanged): Don't worry about setvalue state
16327         here anymore.
16328         (TextBox::TextBox): Get rid of 'setvalue' state.
16330 2009-01-10  Geoff Norton  <gnorton@novell.com>
16332         * media.cpp: surface->filename might be NULL, so we need to guard
16333         against this in our cleanup accordingly.
16335 2009-01-09  Chris Toshok  <toshok@ximian.com>
16337         * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
16338         oops.  we still need to seal the style if that's the thing we're
16339         setting.
16341 2009-01-09  Chris Toshok  <toshok@ximian.com>
16343         * Makefile.am (libmoon_include_headers): add provider.h
16344         (libmoon_la_SOURCES): add provider.cpp
16346         * provider.h, provider.cpp: clean up this some.  the only provider
16347         really not being used right now is the Animation value provider,
16348         since the animation code assumes it can just set local values.
16349         
16350         * shape.cpp (Shape::OnPropertyChanged): no need to look up the
16351         default value - GetValue will return it now.
16353         * textbox.h, textbox.cpp (class
16354         TextBoxDynamicPropertyValueProvider): new custom provider class to
16355         replace the ::GetValue override.  Install it in the ctor.
16357         * text.h, text.cpp (class TextBlockDynamicPropertyValueProvider):
16358         new custom provider class to replace the ::GetValue override.
16359         Install it in the ctor.
16360         (GetBoundingWidth, GetBoundingHeight): don't use
16361         GetValueNoDefault.
16362         (SetActualHeight, SetActualWidth): no longer needed.
16363         (textblock_property): no longer needed.
16364         (Inline::GetDefaultValue): no longer needed.  the inherited
16365         property provider handles it.
16366         (TextBlock::OnPropertyChanged): no need to deal with
16367         Actual{Height,Width}Property here anymore.
16368         
16369         * frameworkelement.cpp (FrameworkElement::FrameworkElement):
16370         remove styles initialization.
16371         (FrameworkElement): remove styles destruction.
16372         (FrameworkElement::ClearValue): this doesn't need any styles stuff
16373         anymore - just clear the binding if we have one, and otherwise
16374         chain up.
16375         (FrameworkElement::GetLocalValue): I'm not sure why this was
16376         looking things up via a style, as styles are a lower priority than
16377         local values.  if there's a binding return that, otherwise chain
16378         up.
16379         (FrameworkElement::SetValueWithErrorImpl): remove the styles stuff
16380         here.
16381         (FrameworkElement::UpdateFromStyle): remove.  the style lookup is
16382         done in the style provider.
16385         * style.h, style.cpp (SetterBaseCollection::SetStyle): remove the
16386         public Style* field and use SetStyle to set it.
16387         (Style::GetPropertyValue): new method.  this should probably be a
16388         hash lookup instead of the linear lookup, but for now this will
16389         work.
16390         (SetterBaseCollection::ValidateSetter): make this a static method
16391         on the class instead of just a C function.
16393         * dependencyobject.h: add a couple more GetValue overrides to deal
16394         with precedence levels.  Remove GetDefaultValue, as it's no longer
16395         needed - we can finally use DependencyProperty::GetDefaultValue as
16396         it's meant to be used.
16398         * dependencyobject.cpp (DependencyObject::GetLocalValue): change
16399         this to just call the LocalValue provider.
16400         (DependencyObject::GetValue (DependencyProperty* property)): call
16401         the overload that lets us specify a starting precedence (start at
16402         the highest precedence level).
16403         (DependencyObject::GetValue (DependencyProperty *property,
16404         PropertyPrecedence startingAtPrecedence)): new method.  loop over
16405         the providers until one of them gives us a value.
16406         (DependencyObject::GetValueSkippingPrecedence): we need this for
16407         looking up the value of FrameworkElement::StyleProperty from
16408         inside the style provider.
16409         (DependencyObject::GetValueNoDefault): reimplement this for the
16410         time being using the providers.
16411         (DependencyObject::DependencyObject): register all the default
16412         providers.  we leave a DynamicValue slot open for subclasses who
16413         want to implement "computed" properties.
16414         (DependencyObject): free all the providers.
16416         * dependencyproperty.g.cpp: regen
16418 2009-01-09  Geoff Norton  <gnorton@novell.com>
16420         * media.cpp: Remove a unnecessary synthesized PropertyChangedEvent
16422 2009-01-09  Geoff Norton  <gnorton@novell.com>
16424         * media.cpp: Ensure that we actually do change the value of the 
16425         Source property when we call MediaBase::SetSource (char*)
16427 2009-01-09  Jeffrey Stedfast  <fejj@novell.com>
16429         * text.cpp (TextBlock::OnPropertyChanged): Update our TextLayout
16430         with layout-hint changes (including TextWrapping hints).
16431         (TextBlock::Layout): Don't pass 'hints' to layout->Layout()
16432         anymore. Also no need to set the wrapping mode here anymore as it
16433         is set in OnProeprtyChanged() now.
16435         * layout.cpp (TextLayout): Move TextLayoutHints into TextLayout,
16436         it doesn't make sense to have them separate.
16438         * textbox.cpp (class TextBox): Get rid of TextLayoutHints state,
16439         we'll pass changes directly to the View as they get updated.
16440         (TextBox::OnPropertyChanged): If the layout hints change, set
16441         changed to the appropriate TextBoxModelChanged hint enum. Also
16442         pass the PropertyChangedEventArgs to the ModelChangedEventArgs
16443         ctor so that TextBoxView can grab the new value to update its
16444         state.
16445         (TextBoxView::OnModelChanged): Handle the new enums.
16446         (TextBoxView::OnPropertyChanged): Sync our layout-hints state when
16447         a new TextBox gets set.
16449 2009-01-09  Alan McGovern  <amcgovern@novell.com>
16451         * dependencyproperty.cpp: 'validator' should never be null - it should
16452         be default_validator instead. Regression caused by previous change to
16453         generator.
16455 2009-01-09  Alan McGovern  <amcgovern@novell.com>
16457         * validators.cpp: Validator only converts -1 to null. All other values
16458         appear to be left the same
16460 2009-01-09  Alan McGovern  <amcgovern@novell.com>
16462         * validators.h:
16463         * mediaelement.h:
16464         * validators.cpp: Add a validator to AudioStreamIndex. This converts
16465         negative values to null, as the unit tests show.
16467 2009-01-09  Alan McGovern  <amcgovern@novell.com>
16469         * dependencyproperty.h:
16470         * dependencyproperty.cpp:
16471         * dependencyproperty.g.cpp: Make it possible to use validators with
16472         Nullable properties.
16474 2009-01-08  Jeffrey Stedfast  <fejj@novell.com>
16476         * text.cpp (Glyphs::SetFill): Removed, autogenerated now.
16477         (Glyphs::GetFill): Same.
16479         * text.h (class Glyphs): GenerateAccessors for FillProperty too.
16481         * textbox.cpp (TextBox::CursorRight): Implemented.
16482         (TextBox::CursorLeft): Implemented.
16483         (TextBox::GetValue): New override to set the SelectedText property
16484         if the selection has been changed since the last request.
16486         * eventargs.cpp (KeyEventArgs::IsModifier): Work around gtk < 2.10.
16488         * text.cpp (TextBlock::Layout): Fix bug #435798 in a slightly
16489         different way so that we don't have to use GetValueNoDefault().
16491 2009-01-08  Larry Ewing  <lewing@novell.com>
16493         * text.cpp (TextBlock::Layout): use nan logic for FE:Width here.
16495         * geometry.h, geometry.cpp (class RectangleGeometry): remove
16496         GetRadius logic everything is handled property by the properties
16497         these days.
16499 2009-01-08  Jeffrey Stedfast  <fejj@novell.com>
16501         * textbox.cpp (TextBox::OnKeyDown): Updated a bit to use the new
16502         KeyEventArgs APIs.
16504         * keyboard.cpp (Keyboard::KeyIsChar): Removed.
16505         (Keyboard::KeyToChar): Removed.
16506         (Keyboard::KeyIsMovement): Removed.
16508         * eventargs.cpp (KeyEventArgs::GetModifiers): Renamed from
16509         GetState() to make the purpose clearer.
16510         (KeyEventArgs::IsModifier): New helper method.
16511         (KeyEventArgs::GetKeyVal): New helper method.
16512         (KeyEventArgs::GetUnicode): New helper method.
16514         * textbox.cpp (TextBox::OnPropertyChanged): Get rid of the 'dirty'
16515         state, all places that set dirty=true are now handled by
16516         TextBoxView instead. Only call Invalidate() when appropriate. For
16517         selection state changes, check setvalue state to see if we need to
16518         do anything.
16519         (TextBox::ClearSelection): New helper method to clear the
16520         selection.
16521         (TextBox::OnKeyDown): Properly clear the selection using
16522         ClearSelection() so that the DP values get updated.
16524 2009-01-08  Larry Ewing  <lewing@novell.com>
16526         * shape.cpp, shape.h: remove all the GetValueNoDefault logic,
16527         replace it with proper NAN state.  Remove MixedWidthAndHeight for
16528         c&p checks that will be removed in the layou code.
16529         
16530         * frameworkelement.cpp: more nan cleanup.
16532         * border.cpp:
16533         * control.cpp: handle nan.
16535 2009-01-08  Alan McGovern  <amcgovern@novell.com>
16537         * style.h:
16538         * value.h:
16539         * value.h.in:
16540         * frameworkelement.cpp:
16541         * dependencyproperty.g.cpp: Add the ability to map a DependencyProperty
16542         to/from native. This removes a hack in Style where DP's used to be
16543         looked up by name, which couldn't be done with properties registered
16544         through C#. Fixes 2 NUnit tests.
16546 2009-01-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
16548         * validators.h:
16549         * validators.cpp: Added DoubleGreaterThanZeroValidator.
16551         * mediaelement.h: Use double validator instead of int validator for
16552         double properties.
16554         * dependencyproperty.g.cpp: Regenerated.
16556 2009-01-08  Alan McGovern  <amcgovern@novell.com>
16558         * dependencyobject.cpp: *Warning - Changing default values* When
16559         DO.ClearValue is called, we always return 'NULL' as the new value.
16560         This is incorrect as the pattern: do.ClearValue (property),
16561         do.GetValue (property) will actually return do.GetDefaultValue
16562         (DependencyProperty*). This change fixes a failing assertion in
16563         StyleTest.cs - ModifyAfterBinding.
16565 2009-01-08  Sebastien Pouliot  <sebastien@ximian.com>
16567         * cbinding.h|cpp, collection.h, type.h, type-generated.cpp, value.h:
16568         Regenerated for ITEM_COLLECTION
16570 2009-01-08  Alan McGovern  <amcgovern@novell.com>
16572         * text.cpp:
16573         * dependencyobject.h:
16574         * dependencyobject.cpp: Reinstate GetDefaultValue as it was actually
16575         overridden by Inlines
16577 2009-01-07  Larry Ewing  <lewing@novell.com>
16579         * frameworkelement.cpp, frameworkelement.h:
16580         move all the various duplicate versions GetTransformOrigin here.
16582         * mediaelement.cpp: fix GetTransformOrigin for new default values.
16583         
16584         * shape.cpp, shape.h:
16585         * canvas.cpp, canvas.h:
16586         * media.cpp, media.h:
16587         * shape.cpp, shape.h:
16588         * stackpanel.cpp, stackpanel.h: remove c&p code from all over.
16590         Fixes run-tests 27
16592 2009-01-07  Geoff Norton  <gnorton@novell.com>
16594         * collection.cpp: Ensure that we call any AddWithError overrides
16595         that might exist in a subclass (like TimelineMarkerCollection) as
16596         it could affect the integer returned.
16598 2009-01-07  Geoff Norton  <gnorton@novell.com>
16600         * xaml.cpp, file-downloader.cpp: TextStream::Open has been renamed
16601         to TextStream::OpenFile
16602         * utils.h|cpp: Refactor TextStream to read in-memory and file buffers
16603         * downloader.cpp: GetResponseText needs to ensure it returns data in
16604         UTF-8, and doesn't handle zip files.
16606 2009-01-07  Jeffrey Stedfast  <fejj@novell.com>
16608         * textbox.cpp (TextBox::OnKeyDown): Added support for keyboard
16609         input a bit. Cutting a lot of corners for now, but oh well.
16610         (TextBoxView::TextBoxView): Hooked up some cursor blinking
16611         action. We don't actually render the cursor yet tho.
16613         * keyboard.cpp (Keyboard): Moved into it's own source file from
16614         eventargs.cpp. I have a sneaking suspicion that this logic will
16615         get large and complicated someday soon.
16617 2009-01-07  Sebastien Pouliot  <sebastien@ximian.com>
16619         * dependencyobject.cpp (set_surface): Add null check since the 
16620         hashtable can contain Value with a NULL DependencyObject
16622 2009-01-07  Larry Ewing  <lewing@novell.com>
16624         * canvas.cpp:
16625         * frameworkelement.cpp:
16626         * shape.cpp: Quick hacks to get test 0 passing after the default
16627         value changes.
16629 2009-01-07  Chris Toshok  <toshok@ximian.com>
16631         * textbox.h (class TextBox): add @CallInitialize so we can set the
16632         DefaultStyleKey.
16634         * control.cpp (Control::OnLoaded): move FrameworkElement::OnLoaded
16635         call to before ApplyTemplate(), as the template isn't applied
16636         until after the Loaded event is fired.
16638 2009-01-07  Geoff Norton  <gnorton@novell.com>
16640         * downloader.h|cpp: Work around mozilla bug #444160 by keeping an in
16641         memory cache of all downloads <= 64KB that are streamed in 1 shot.
16643 2009-01-07  Sebastien Pouliot  <sebastien@ximian.com>
16645         * contentcontrol.h|cpp: Remove properties that are not in SL2 final
16646         * dependencyproperty.g.cpp: Regenerated.
16648 2009-01-07  Alan McGovern  <amcgovern@novell.com>
16650         * uielement.h:
16651         * validators.h:
16652         * validators.cpp:
16653         * dependencyproperty.g.cpp: If C# passes a null cursor to C++, convert
16654         it to the default cursor instead.
16656 2009-01-06  Larry Ewing  <lewing@novell.com>
16658         * uielement.h (class UIElement): add a default value to
16659         UIElement::CusorProperty, fixes a crossing event crash.
16661         * uielement.cpp (UIElement::ElementRemoved): remove the element
16662         from the dirty list since it is an orphan now.
16664         * runtime.cpp (Surface::PaintToDrawable): add some logging.
16666 2009-01-06  Jeffrey Stedfast  <fejj@novell.com>
16668         * textbox.cpp (TextBox::OnKeyDown): Added some keyboard keypress
16669         callbacks so that we can eventually make TextBox receive keyboard
16670         input. Currently the events never seem to fire, tho.
16672 2009-01-06  Sebastien Pouliot  <sebastien@ximian.com>
16674         * enums.h: Add enums values for MouseCursorSize[NS|WE]
16675         * window-gtk.cpp: Display MouseCursorSize[NS|WE] cursors
16677 2009-01-06  Alan McGovern  <amcgovern@novell.com>
16679         * frameworkelement.cpp:
16680         * dependencyobject.cpp: Fixes so that StyleTests.NullLocalValue passes
16681         again after my previous commit changing the handling of
16682         GetValue/GetLocalValue.
16684 2009-01-06  Alan McGovern  <amcgovern@novell.com>
16686         * cbinding.h:
16687         * cbinding.cpp:
16688         * dependencyobject.h:
16689         * dependencyobject.cpp: Nuke DO.GetDefaultValue as it just wraps the
16690         DP.GetDefaultValue function. Fixed the implementation of 'null'
16691         Value*. Now a Value* with GetIsNull () == true will be returned as
16692         'NULL' for calls to GetValue or GetValueNoDefault. This makes
16693         Value.GetIsNull opaque to native code so existing null checks will
16694         work as they should. The only function which is aware of GetIsNull is
16695         GetLocalValue, and this correctly handles this case.
16697 2009-01-06  Alan McGovern  <amcgovern@novell.com>
16699         * textbox.h:
16700         * validators.h:
16701         * validators.cpp:
16702         * dependencyproperty.g.cpp: Ensure correct exception is thrown when a
16703         null string is passed to PasswordBox.Password. Use correct range
16704         validation for MaxLength.
16706 2009-01-06  Alan McGovern  <amcgovern@novell.com>
16708         * frameworkelement.h:
16709         * frameworkelement.cpp:
16710         * dependencyproperty.g.cpp: Default value for FE.Height and FE.Width is
16711         NAN.
16713 2009-01-06  Alan McGovern  <amcgovern@novell.com>
16715         * style.h:
16716         * style.cpp:
16717         * frameworkelement.cpp: Implement proper validation of Setters and also
16718         correctly implement behaviour of sealed/unsealed styles. They are now
16719         passing all the NUnit tests except for one.
16721 2009-01-05  Chris Toshok  <toshok@ximian.com>
16723         * frameworkelement.h, frameworkelement.cpp: remove all reference
16724         to template_namescope.
16726         * template.cpp (ControlTemplate::Apply): remove call to
16727         FrameworkElement::SetTemplateNameScope - just set it as the
16728         namescope on the root of the applied template.  This way name
16729         references within the template resolve correctly.
16731         * control.cpp (Control::GetTemplateChild): with the above change,
16732         this just becomes template_root->FindName ()
16734 2009-01-05  Sebastien Pouliot  <sebastien@ximian.com>
16736         * runtime.cpp: Add a null check in Surface::FocusElement since both
16737         the C bindings and the MouseLeftButtonDown event can call it with a
16738         NULL value causing a SIGSEGV.
16740 2009-01-05  Jeffrey Stedfast  <fejj@novell.com>
16742         * textbox.cpp (TextBox::OnApplyTemplate): Override. Insert a
16743         TextBoxView in the appropriate place.
16745         * control.cpp (Control::GetTemplateChild): Now takes a const
16746         char*.
16748 2009-01-05  Alan McGovern  <amcgovern@novell.com>
16750         * uielement.h: Cursor shouldn't have a default value in SL2.
16752         * template.cpp:
16753         * dependencyobject.h:
16754         * dependencyobject.cpp:
16755         * dependencyproperty.g.cpp: DO.Name defaults to String.Empty. Modify
16756         code calling NameScope::[Un]RegisterName to ignore empty names just
16757         like it ignores null names.
16759 2009-01-05  Alan McGovern  <amcgovern@novell.com>
16761         * validators.h:
16762         * validators.cpp:
16763         * frameworkelement.h:
16764         * frameworkelement.cpp:
16765         * dependencyproperty.h:
16766         * dependencyproperty.cpp:
16767         * dependencyproperty.g.cpp: We need a reference to the current
16768         DependencyProperty so that write-once properties can be properly
16769         validated. Moved validation of StyleProperty from
16770         FrameworkElement.SetValue into the new StyleValidator.
16772 2009-01-05  Alan McGovern  <amcgovern@novell.com>
16774         * validators.h:
16775         * validators.cpp:
16776         * dependencyobject.cpp:
16777         * dependencyproperty.h:
16778         * dependencyproperty.cpp: When validating the Value we need a reference
16779         to the current DependencyObject as some properties are
16780         write-once/read-only
16782 2009-01-02  Jeffrey Stedfast  <fejj@novell.com>
16784         * textbox.cpp (TextBox): No longer maintains a TextLayout nor a
16785         dirty flag. TextBox is basically just a model now. Also added a
16786         ModelChanged event.
16787         (TextBox::Render): Removed.
16788         (TextBox::GetValue): Removed, dunno why it was ever overridden.
16789         (TextBox::OnPropertyChanged): Emit a ModelChangedEvent when the
16790         view needs to be updated.
16791         (TextBoxView): New class that renders the contents of a TextBox
16792         control.
16794         * value.cpp (Value::GetIsNull): Fixed compiler warning.
16796         * pipeline.h (class MediaMarker): dtor needs to be virtual.
16798 2009-01-02  Sebastien Pouliot  <sebastien@ximian.com>
16800         * validators.cpp: Remove the printf calls (that won't compile under
16801         SLED10 without changing includes).
16803 2008-12-22  Alan McGovern  <amcgovern@novell.com>
16805         * border.h:
16806         * validators.h:
16807         * validators.cpp:
16808         * dependencyproperty.g.cpp: Add validators for the Border class
16810         * value.h:
16811         * value.cpp:
16812         * value.h.in: unused_padding is now used as a bitfield. Currently used
16813         to indicate whether an object is null or not
16815         * frameworkelement.cpp: the styles hashtable only indicates if the
16816         current value comes from a style. It does not show if a dp has been
16817         bound to a style. If the current value is cleared, we need to update
16818         from the style to repopulate the styles hashtable and correctly set
16819         the style value. This can be optimised by passing the current dp to
16820         UpdateFromStyle.
16822         * dependencyobject.cpp: When do.SetValue (dp, null) is called, correctly
16823         set the null value as opposed to calling do.ClearValue(dp).
16825 2008-12-22  Andreia Gaita  <avidigal@novell.com>
16827         * cbinding.h|cpp, type-generated.cpp, type.h, value.h:
16828         Regenerated for DispatcherTimer
16830         * animation.h: Move Completed events to the timeline
16832         * clock.h|cpp: Add DispatcherTimer class, a timeline to drive a
16833         clock whose duration is the timer Interval property. The timeline's
16834         completed event is a tick of the timer, and the clock gets restarted
16835         when it completes.
16836         Save the current time when a clock starts so that clocks that are
16837         set to be started on the next tick with BeginOnTick include the time
16838         between the BeginOnTick call and the actual Begin in their elapsed
16839         time. Also, clocks beneath the time manager root clock now track time
16840         since they were started, and not since the time manager started.
16842 2008-12-20  Larry Ewing  <lewing@novell.com>
16844         * mediaelement.cpp (MediaElement::UpdateProgress): 
16845         * media.cpp (Image::UpdateProgress): Change the delta from 0.0005
16846         to 0.05 which appears to be what the docs actually say.
16848 2008-12-19  Sebastien Pouliot  <sebastien@ximian.com>
16850         * cbinding.cpp|h: Regenerated for read-only DP.
16851         * dependencyproperty.h: Expose IsReadOnly. Add read_only parameter 
16852         to RegisterManagedProperty.
16854 2008-12-19  Alan McGovern  <amcgovern@novell.com>
16856         * src.mdp:
16857         * animation.h:
16858         * dependencyproperty.g.cpp: Add validation + tests for
16859         Storyboard.TargetNameProperty and TargetPropertyProperty
16861 2008-12-18  Chris Toshok  <toshok@ximian.com>
16863         * control.h, text.h, frameworkelement.h, grid.h, mediaelement.h,
16864         textbox.h: decorate properties with @Validator attributes which
16865         the generator uses to generate the proper call to
16866         DependencyProperty::RegisterFull.
16868         * control.h, text.h, frameworkelement.h, grid.h, mediaelement.h,
16869         textbox.cpp: Remove the calls to
16870         DependencyProperty::SetValueValidator.  They're generated by the
16871         generator now from our metadata.
16873         * dependencyproperty.cpp, dependencyproperty.h: add new parameter
16874         to RegisterFull prototypes so we can supply a validator at
16875         registration time.
16877         * dependencyproperty.g.cpp: regen.
16878         
16879 2008-12-18  Chris Toshok  <toshok@ximian.com>
16881         * validators.cpp, validators.h: move these into a class instead of
16882         static C methods, and don't include C methods into every file.  we
16883         were getting warnings every time they went unused, and namespacing
16884         with C++ is better than #including them all over the place.
16886         * grid.cpp, control.cpp, text.cpp, mediaelement.cpp, textbox.cpp,
16887         dependencyproperty.cpp, frameworkelement.cpp: track change above.
16888         
16889 2008-12-18  Chris Toshok  <toshok@ximian.com>
16891         * xaml.cpp (class XamlElementInstanceManaged): this instance can
16892         be a DependencyObject sometimes.  we need an instance field to
16893         tell.
16894         (XamlElementInstanceManaged::XamlElementInstanceManaged): when
16895         @obj, set is_dependency_object to true.  This fixes setting x:
16896         namescope properties on managed DependencyObject subclasses, as in
16897         '<Button x:Name="foo" />'.
16898         (dependency_object_add_child): remove the template case from here.
16899         it'll be handled differently (being parsed at application time,
16900         essentially).
16902 2008-12-18  Alan McGovern  <amcgovern@novell.com>
16904         * text.cpp:
16905         * control.cpp:
16906         * validators.h:
16907         * mediaelement.cpp:
16908         * multiscaleimage.h:
16909         * multiscaleimage.cpp:
16910         * frameworkelement.cpp: Add validation to DPs
16912 2008-12-18  Alan McGovern  <amcgovern@novell.com>
16914         * mediaelement.cpp: Add validation for NaturalVideoHeight and
16915         NaturalVideoWidth.
16917 2008-12-18  Alan McGovern  <amcgovern@novell.com>
16919         * src.mdp:
16920         * grid.cpp:
16921         * textbox.h:
16922         * textbox.cpp:
16923         * Makefile.am:
16924         * dependencyobject.h:
16925         * frameworkelement.h:
16926         * frameworkelement.cpp:
16927         * dependencyproperty.cpp: Move parameter validation for DP's to use the
16928         new ValueValidator callback.
16930         * validators.h: All validators are defined in this header file so they
16931         can be easily reused for different DPs.
16933 2008-12-18  Alan McGovern  <amcgovern@novell.com>
16935         * grid.cpp: Correctly set the validators - forgot to revert changes
16936         before committing.
16938 2008-12-18  Alan McGovern  <amcgovern@novell.com>
16940         * grid.cpp:
16941         * dependencyobject.cpp:
16942         * dependencyproperty.h:
16943         * dependencyproperty.cpp: Add the ability to validate the value for a
16944         DependencyProperty before setting it.
16946 2008-12-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16948         * text.h, text.cpp: Remove some useless code.
16950 2008-12-16  Alan McGovern  <amcgovern@novell.com>
16952         * cbinding.h:
16953         * cbinding.cpp:
16954         * dependencyproperty.h: If a default value has been set in native code,
16955         propagate that to managed code.
16957 2008-12-15  Chris Toshok  <toshok@ximian.com>
16959         * template.cpp (ControlTemplate::Apply): make sure we clear the
16960         toplevel namescope from the template tree.  instead we keep a
16961         different namescope around (full of the duplicated elements) which
16962         is populated during DuplicateObject.
16964 2008-12-15  Jeffrey Stedfast  <fejj@novell.com>
16966         * xaml.cpp: Macroize the static tables.
16967         (create_binding_expression_from_markup): Got rid of
16968         BindingExtension::path.
16969         (xaml_markup_parse_binding): Update the markup pointer before a
16970         successful return.
16972 2008-12-15  Jackson Harper  <jackson@ximian.com>
16974         * xaml.cpp: fix typo.
16975         - remove sneaky debug
16977 2008-12-15  Jackson Harper  <jackson@ximian.com>
16979         * xaml.cpp: Always check if we are in buffering mode. (Otherwise
16980         we'll get cdata content at the end of a template or a namespace
16981         handler during a template).
16983 2008-12-15  Alan McGovern  <amcgovern@novell.com>
16985         * grid.h:
16986         * dependencyproperty.g.cpp: ShowGridLines is true by default.
16988 2008-12-15  Alan McGovern  <amcgovern@novell.com>
16990         * control.cpp: Default foreground brush is black
16992 2008-12-12  Jackson Harper  <jackson@ximian.com>
16994         * xaml.cpp: Remove some old code.
16996 2008-12-12  Jackson Harper  <jackson@ximian.com>
16998         * xaml.cpp: Still need to call setproperty on non managed
16999         attributes, they could be events.
17001 2008-12-12  Jackson Harper  <jackson@ximian.com>
17003         * xaml.cpp: A little cleanup so that we only try setting non-dp
17004         attributes on managed objects. (previously we would try but fail,
17005         so the results are basically the same, just less waste).
17007 2008-12-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17009         * runtime.h: Make DetachDownloaders public so that the plugin can call
17010           it.
17012 2008-12-12  Alan McGovern  <amcgovern@novell.com>
17014         * textbox.cpp: Add bounds checking to SelectionStartProperty too
17016 2008-12-12  Alan McGovern  <amcgovern@novell.com>
17018         * textbox.h:
17019         * textbox.cpp: Add range checking for MaxLengthProperty and
17020         SelectionLengthProperty
17022 2008-12-11  Sebastien Pouliot  <sebastien@ximian.com>
17024         * dependencyobject.h: Name setter is public in SL2 final.
17026 2008-12-11  Chris Toshok  <toshok@ximian.com>
17028         * control.h, control.cpp: hook up TemplateApplied event.
17030         * type-generated.cpp: regen.
17032 2008-12-11  Chris Toshok  <toshok@ximian.com>
17034         * control.h (class Control): generate cbinding/pinvoke for
17035         GetTemplateChild.
17037         * cbinding.h, cbinding.cpp: regen.
17039 2008-12-11  Alan McGovern  <amcgovern@novell.com>
17041         * textbox.cpp: Unbreak the build.
17043 2008-12-11  Alan McGovern  <amcgovern@novell.com>
17045         * textbox.cpp: It should not be possible to set a null value as the
17046         password.
17048 2008-12-11  Alan McGovern  <amcgovern@novell.com>
17050         * textbox.h:
17051         * dependencyproperty.g.cpp: Fix several issues with default values for
17052         TextBox and PasswordBox
17054 2008-12-11  Andreia Gaita  <shana@jitted.com>
17056         * cbinding.h|cpp, clock.h: Framerate accessors
17058 2008-12-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17060         * audio.cpp: Enqueue: don't enqueue anything if we've reached EOF. Also
17061           remove some stale code.
17063 2008-12-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17065         * mediaplayer.cpp, mediaplayer.h: Added locking to accesses to the
17066           audio field. Added comments/explicit verification in every method
17067           describing which methods must be thread-safe and which aren't.
17069 2008-12-10  Jeffrey Stedfast  <fejj@novell.com>
17071         * xaml.cpp (parser_error): Now takes varargs to simplify
17072         things. Fixed all callers to not strdup/g_strdup_printf (and leak)
17073         the message argument.
17074         (create_binding_expression_from_markup): Check that the source is
17075         a DO before casting.
17077 2008-12-10  Alan McGovern  <amcgovern@novell.com>
17079         * type.h:
17080         * textbox.h:
17081         * type-generated.cpp:
17082         * dependencyproperty.g.cpp: PasswordCharProperty should be a char. This
17083         is represented by an int32 in unmanaged code.
17085 2008-12-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17087         * audio-pulse.cpp: Fix int->enum conversion.
17089 2008-12-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17091         * audio-pulse.h, audio-pulse.cpp: PulsePlayer: Use enum instead of
17092           random constants for the connected variable.
17094 2008-12-10  Jackson Harper  <jackson@ximian.com>
17096         * xaml.cpp: Add a buffering mode to the parser, this mode is used
17097         for templates and simply buffers all the text without doing
17098         any real parsing. So everything between a
17099         <DataTemplate>..</DataTemplate> block is turned into a string.
17101 2008-12-10  Alan McGovern  <amcgovern@novell.com>
17103         * textbox.h:
17104         * textbox.cpp: Implement the SelectAll function and raise an event when
17105         the Password changes
17107         * type.h:
17108         * value.h:
17109         * cbinding.h:
17110         * cbinding.cpp:
17111         * type-generated.cpp:
17112         * dependencyproperty.g.cpp: Commit the files from the generator.
17114 2008-12-10  Alan McGovern  <amcgovern@novell.com>
17116         * textbox.h: Partial implementation of the PasswordBox control
17118 2008-12-09  Chris Toshok  <toshok@ximian.com>
17120         * template.h, template.cpp: add DataTemplates.
17122         * cbinding.h, cbinding.cpp, value.h, type.h, type-generated.cpp:
17123         regen.
17124         
17125 2008-12-09  Jeffrey Stedfast  <fejj@novell.com>
17127         * xaml.cpp (create_binding_expression_from_markup): Converter can
17128         also take a StaticResource.
17130         * playlist.cpp: Don't use ctype is*() with a char argument, these
17131         functions are meant to take unsigned char values cast to an
17132         int. Use the g_ascii_is*() functions instead.
17134         * xaml.cpp (create_binding_expression_from_markup):
17135         ConverterParameter can either be a string or a StaticResource. If
17136         it is a StaticResource, lookup the resource object.
17138         * binding.cpp (BindingExpressionBase::SetConverterParameter): Now
17139         takes a Value* since we need to handle either string or
17140         DependencyObject.
17142 2008-12-09  Jackson Harper  <jackson@ximian.com>
17144         * xaml.cpp: Don't use the cpp initializers.
17145         - More consistent naming.
17147 2008-12-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17149         * audio-pulse.cpp, audio-pulse.h: Improve locking while waiting for
17150           pulseaudio to initialize - keep waiting if we get spurious wakeups.
17152 2008-12-09  Jeffrey Stedfast  <fejj@novell.com>
17154         * xaml.cpp (create_binding_expression_from_markup): Lookup the
17155         StaticResource property for Source.
17157         * binding.cpp (BindingExpressionBase::SetSourceName): Removed. No
17158         longer needed.
17159         (BindingExpressionBase::*): No longer do dynamic lookup of the
17160         source_name.
17162 2008-12-09  Sebastien Pouliot  <sebastien@ximian.com>
17164         * usercontrol.cpp|h: Remove @CallInitialize and set IsTabStop to 
17165         false in C++ constructor.
17167 2008-12-09  Jeffrey Stedfast  <fejj@novell.com>
17169         * xaml.cpp (handle_xaml_markup_extension): Lots more refactoring
17170         action.
17171         (xaml_markup_parse_binding): Fixed to handle
17172         "Source={StaticResource ...}" syntax.
17174 2008-12-08  Sebastien Pouliot  <sebastien@ximian.com>
17176         * usercontrol.h: Tag with @CallInitialize since IsTabStop is false
17177         for UserControl while it's true for Control
17179 2008-12-08  Jeffrey Stedfast  <fejj@novell.com>
17181         * xaml.cpp: A bit of refactoring...
17183         * binding.cpp (BindingExpressionBase::SetConverterParameter):
17184         Added.
17185         (BindingExpressionBase::SetConverterCulture): Same.
17186         (BindingExpressionBase::SetConverter): Same.
17187         (BindingExpressionBase::SetSourceName): Same.
17188         (BindingExpressionBase::AttachListener): Lookup the source by name
17189         if we don't already have it.
17190         (BindingExpressionBase::GetValue): Same.
17191         (BindingExpressionBase::UpdateSource): Same.
17193         * xaml.cpp (binding_expression_from_str): Finished implementing.
17195 2008-12-07  Jeffrey Stedfast  <fejj@novell.com>
17197         Fixes bug #444872
17199         Patches by Argiris Kirtzidis
17201         * dependencyobject.h: Fix forward declarations of classes declared
17202         struct.
17204         * multiscaleimage.cpp (MultiScaleImage::RenderLayer): Use floating
17205         point constant to make sure we get the correct overload in MSVC.
17207         * playlist.cpp (duration_from_asx_str): Same.
17209         * value.cpp (Value::FreeValue): Free corner radius.
17211 2008-12-05  Geoff Norton  <gnorton@novell.com>
17213         * audio-pulse.cpp: PulseAudio sometimes gives us errors sync, 
17214         and sometimes async.  Lets ensure we can actually connect before
17215         continuing on.
17217 2008-12-05  Jeffrey Stedfast  <fejj@novell.com>
17219         * runtime.cpp (Surface::FocusElement): Removed #if SL_2_0 check.
17221         * dependencyobject.cpp (DependencyObject::IsValueValid): Removed
17222         #if SL_2_0 check.
17224         * binding.h (class Binding): Added more bool members.
17226         * xaml.cpp (binding_expression_from_str): New method to
17227         parse {Binding} markup syntax into a BindingExpression.
17228         (handle_xaml_markup_extension): Parse Binding markup extensions.
17230 2008-12-05  Chris Toshok  <toshok@ximian.com>
17232         * deepzoomimagetilesource.h (class DeepZoomImageTileSource): fix
17233         the GenerateAccessors thing the right way.
17235         * dependencyproperty.g.cpp: regen.
17236         
17237 2008-12-05  Jackson Harper  <jackson@ximian.com>
17239         * xaml.cpp: Move the markup extension handler out of
17240         set_attributes, ideally each markup extension will get it's own
17241         function eventually.
17243 2008-12-05  Jeffrey Stedfast  <fejj@novell.com>
17245         * binding.cpp (Binding::SetPropertyPath): Fixed to take a const
17246         char *
17248         * xaml.cpp: Conditionally define DEBUG, which I guess is a
17249         temporary thing, in a way which will not spew gcc warnings.
17251 2008-12-05  Jackson Harper  <jackson@ximian.com>
17253         * xaml.cpp: Let managed code own it's Value pointers.
17255 2008-12-04  Jackson Harper  <jackson@ximian.com>
17257         * xaml.cpp: We can store the Value* in the base element instance
17258         now, since they all use a Value.
17260 2008-12-05  Fernando Herrera  <fherrera@novell.com>
17262         * playlist.cpp:
17263         * playlist.h: Don't check duration at playlist level but let MediaPlayer
17264         handle it. Don't do a delayed element->Play() for repeats because that
17265         can broke js doing "e.Play();e.Stop()"
17267 2008-12-04  Fernando Herrera  <fherrera@novell.com>
17269         * playlist.cpp (Playlist::Open): Check duration properly.
17271 2008-12-04  Jeffrey Stedfast  <fejj@novell.com>
17273         * binding.cpp: Get rid of excessive use of 'this' keyword.
17275 2008-12-04  Geoff Norton  <gnorton@novell.com>
17277         * playlist.cpp: 100ms not 10s should be when we start playing the
17278         playlist entries.
17280 2008-12-04  Larry Ewing  <lewing@novell.com>
17282         * layout.cpp (RenderLine): do all the filling in one pass rather
17283         than adding a stroke at the end.  Tidy up the path creation and
17284         modification logic.
17286 2008-12-04  Jeffrey Stedfast  <fejj@novell.com>
17288         We only support vector fonts, so get rid of the TextFont::Render()
17289         API that is only useful as an abstraction over rendering as bitmap
17290         vs pathing. Leave the *Path() APIs which are the only ones
17291         actually used.
17293         * layout.cpp (RenderLine): Don't bother checking IsScalable(), all
17294         fonts are scalable for now.
17296         * font.cpp (TextFont::RenderGlyphPath): Removed.
17297         (TextFont::Render): Same.
17299 2008-12-04  Sebastien Pouliot  <sebastien@ximian.com>
17301         * control.h: Changed my mind and moved DefaultStyleKeyProperty and
17302         IsEnabledProperty to the managed world
17303         * dependencyproperty.g.cpp: regenerated
17305 2008-12-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17307         * pipeline.cpp: IMediaDemuxer::GetBufferedSize: Only calculate buffered
17308           size using video and audio streams. Fixes #456154.
17310 2008-12-04  Jackson Harper  <jackson@ximian.com>
17312         * xaml.cpp: The element instance now has ownership of the Value
17313         objects.
17315 2008-12-03  Jackson Harper  <jackson@ximian.com>
17317         * xaml.cpp: Cleanup managed namespaces when we shutdown.
17318         - Reduce the number of Value's we are creating. These still aren't
17319         being freed properly, but at least there isn't as many of them.
17321 2008-12-03  Geoff Norton  <gnorton at novell.com>
17323         * media.cpp: Ensure we null our reference to the image loader in
17324         all the failure cases to avoid a possible double free/unref.
17326 2008-12-03  Alan McGovern  <amcgovern@novell.com>
17328         * binding.h:
17329         * frameworkelement.h:
17330         * frameworkelement.cpp: If a Binding has bound to a datacontext, refresh
17331         the binding when the context is altered.
17333 2008-12-03  Alan McGovern  <amcgovern@novell.com>
17335         * frameworkelement.h:
17336         * dependencyproperty.g.cpp: DataContext should take 'object'
17338 2008-12-03  Jackson Harper  <jackson@ximian.com>
17340         * xaml.cpp: Call setproperty for all the children in the property
17341         block, this is needed because we aren't doing as much magic
17342         collection handling in addchild anymore.
17344 2008-12-02  Sebastien Pouliot  <sebastien@ximian.com>
17346         * control.h: Add DefaultStyleKeyProperty and IsEnabledProperty
17347         * dependencyproperty.g.cpp: regenerated
17349 2008-12-02  Jackson Harper  <jackson@ximian.com>
17351         * xaml.cpp: Map in enumerations in 2.0. So you can do something
17352         like <Visibility>Collapsed</Visibility>
17353         * enums.h|cpp: Expose a function so we can check if a certain enum
17354         exists.
17356 2008-12-02  Jackson Harper  <jackson@ximian.com>
17358         * xaml.cpp: We can map in non-DO managed elements now, so check to
17359         make sure it's actually a dependency object.
17360         - Pass NULL for the property name if we weren't able to query for
17361         a content property name.  The managed backing might be able to
17362         find a name some other way.
17364 2008-12-02  Jackson Harper  <jackson@ximian.com>
17366         * xaml.cpp: Return false if the base content property setter didnt
17367         work.
17369 2008-12-02  Alan McGovern  <amcgovern@novell.com>
17371         * cbinding.h:
17372         * cbinding.cpp:
17373         * dependencyproperty.h:
17374         * dependencyproperty.cpp: Ensure the default value of a CustomDP is
17375         propagated to the unmanaged
17377 2008-12-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17379         * dependencyobject.cpp: We need to raise changed events when clearing
17380           values too.
17381         * cbinding.cpp, cbinding.h: Regenerated.
17383 2008-12-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17385         * dependencyproperty.h: Added a IsNullable setter (instead of adding
17386           yet another parameter to the Register methods).
17388 2008-12-02  Andreia Gaita  <shana@jitted.com>
17390         * Makefile.am, stackpanel.cpp|h: Add StackPanel implementation
17392 2008-12-02  Andreia Gaita  <shana@jitted.com>
17394         * panel.cpp: Fix debugging messages
17396 2008-12-01  Larry Ewing  <lewing@novell.com>
17398         * brush.cpp, brush.h: add Fill and Stroke methods to brush so that
17399         we can handle image and video brush opacity properly.
17401         * src/control.cpp
17402         * src/layout.cpp
17403         * src/panel.cpp
17404         * src/shape.cpp
17405         * src/text.cpp: use the new Fill and Stroke methods when using
17406         brushes.  Fixes test-imagebrush-opacity* when the masters are
17407         correctly updated.
17409 2008-12-01  Chris Toshok  <toshok@ximian.com>
17411         * frameworkelement.h: add decl for ClearBindingExpression.
17412         
17413         * frameworkelement.cpp (FrameworkElement::ClearBindingExpression):
17414         factor out the 2 operations (Detach + hash_remove) here since
17415         we'll be calling it in a couple places.
17416         (binding_destroy): this should delete value, not call ValueFree.
17417         (FrameworkElement::SetBindingExpression): call
17418         ClearBindingExpression if there's a current one, and don't ref the
17419         expression.  Value will hold one.
17420         (FrameworkElement::ClearValue): a couple of changes.
17421         
17422         1. Call ClearBindingExpression instead of just removing the
17423         binding from the hash (and not detaching it...)
17425         2. don't remove the style value from the style has.
17427         3. instead of looping over all the setters in the style just set
17428         the value back to the value in the styles hash.
17429         
17430         4. if we're going to be resetting the value to the style, don't
17431         notify listeners in UIElement::ClearValue.  it'll happen in
17432         SetValue.
17434 2008-12-01  Geoff Norton  <gnorton@novell.com>
17436         * audio.cpp: Fix a logic error that prevented falling back to alsa when
17437         built with both pulse and alsa support.
17439         r: toshok
17441 2008-12-01  Chris Toshok  <toshok@ximian.com>
17443         * template.cpp, template.h: when copying the tree over, register
17444         the template element names to their instantiated counterparts.
17445         and build up a NameScope object as we go.
17447         * frameworkelement.cpp: add a "template_namescope" which maps
17448         names that were registered in the template itself to elements in
17449         the instantiated visual tree.
17451         * control.cpp (Control::GetTemplateChild): look the child up in
17452         the template namescope, not against the visual tree.
17454 2008-12-01  Jackson Harper  <jackson@ximian.com>
17456         * xaml.cpp: Value types can not have properties set on them.
17458 2008-12-01  Fernando Herrera  <fherrera@novell.com>
17460         * mediaelement.cpp:
17461         * mediaplayer.cpp:
17462         * pipeline.cpp:
17463         * playlist.cpp:
17464         * playlist.h: Implement Server side playlists. Still missing duration based
17465         constraints.
17467 2008-12-01  Alan McGovern  <amcgovern@novell.com>
17469         * border.h: ChildProperty should not be exposed
17471 2008-12-01  Alan McGovern  <amcgovern@novell.com>
17473         * frameworkelement.cpp: If a null value is being set to a DP when using
17474         databinding, clear the value instead. Makes test pass. (left this out
17475         of the last commit)
17477 2008-11-28  Alan McGovern  <amcgovern@novell.com>
17479         * binding.h:
17480         * cbinding.h:
17481         * binding.cpp:
17482         * cbinding.cpp:
17483         * frameworkelement.cpp: DataBinding now works for one-way, one-time and
17484         two-way bindings with managed objects.
17486 2008-11-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17488         * audio.cpp: Remove a print_stack_trace.
17490 2008-11-27  Andreia Gaita  <shana@jitted.com>
17492         * runtime.cpp: enable debug #if that was disabling the D key.
17494 2008-11-27  Alan McGovern  <amcgovern@novell.com>
17496         * frameworkelement.cpp: Fix some build breakage under the SL1 profile.
17498 2008-11-27  Alan McGovern  <amcgovern@novell.com>
17500         * binding.h:
17501         * cbinding.h:
17502         * binding.cpp:
17503         * cbinding.cpp:
17504         * frameworkelement.cpp: Allow the Binding class to be mapped between
17505         managed and unmanaged code.
17507 2008-11-26  Larry Ewing  <lewing@novell.com>
17509         * shape.cpp (Shape::IsCandidateForCaching): add more logic to
17510         avoid the cache in special cases.
17512 2008-11-26  Jackson Harper  <jackson@ximian.com>
17514         * xaml.cpp|h: clean up the managed/plugin interface, use Values
17515         for most things instead of expected DependencyObjects.
17516         * deepzoomimagetilesource.h|cpp: Add the uri property and a public
17517         constructor so we can parse these from attributes.
17518         * cbinding.h|cpp:
17519         * dependencyproperty.g.cpp: regen
17521 2008-11-26  Alan McGovern  <amcgovern@novell.com>
17523         * frameworkelement.cpp: Store a Value * rather than
17524         BindingExpressionBase in the bindings hashtable to allow
17525         GetLocalValue to work.
17527 2008-11-26  Alan McGovern  <amcgovern@novell.com>
17529         * frameworkelement.h:
17530         * dependencyobject.h:
17531         * frameworkelement.cpp: Styles are now used/ignored correctly when local
17532         values are set/unset. Added tests for this.
17534         * dependencyobject.cpp: GetLocalValueWithError should call GetLocalValue
17536         * shape.cpp: args->new_value will be null if DO.ClearValue has been
17537         called. In this case use DP.DefaultValue
17539 2008-11-26  Alan McGovern  <amcgovern@novell.com>
17541         * binding.h:
17542         * cbinding.h:
17543         * binding.cpp:
17544         * cbinding.cpp:
17545         * frameworkelement.h:
17546         * dependencyobject.h:
17547         * frameworkelement.cpp:
17548         * dependencyobject.cpp: Implement a basic ReadLocalValue equivalent for
17549         unmanaged code. Only handles databindings.
17551 2008-11-26  Alan McGovern  <amcgovern@novell.com>
17553         * binding.h:
17554         * cbinding.h:
17555         * binding.cpp:
17556         * cbinding.cpp:
17557         * frameworkelement.cpp: Rename the members of BidningExpressionBase to
17558         better reflect their actual usage.
17560 2008-11-26  Alan McGovern  <amcgovern@novell.com>
17562         * style.h:
17563         * style.cpp:
17564         * collection.h:
17565         * collection.cpp: InsertWithError should return a bool to match Insert
17567         * media.h:
17568         * media.cpp: Fix regression introduced in r119963 when changing which
17569         collection functions were virtual
17571 2008-11-25  Larry Ewing  <lewing@novell.com>
17573         * uielement.cpp (UIElement::FrontToBack): enable ftb on 90 degress
17574         rotations as well.
17576         * media.cpp (Image::GetCoverageBounds): be slightly smarter about
17577         computing coverage.
17579 2008-11-25  Geoff Norton  <gnorton@novell.com>
17581         * cbinding.(cpp|h): Regenerate
17582         * downloader.h: Expose the status code and status text to the
17583         DownloaderResponse object.
17585 2008-11-25  Alan McGovern  <amcgovern@novell.com>
17587         * style.h:
17588         * error.h:
17589         * style.cpp:
17590         * cbinding.h:
17591         * cbinding.cpp:
17592         * collection.h:
17593         * dependencyproperty.g.cpp: Added full support for sealing styles.
17595 2008-11-25  Stephane Delcroix  <sdelcroix@novell.com>
17597         * multiscaleimage.h: element_to_logical_point
17599 2008-11-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17601         * cbinding.cpp, cbinding.h: Regenerated.
17603 2008-11-24  Larry Ewing  <lewing@novell.com>
17605         * media.cpp (MediaBase::SetSource): only queue a tick if we need
17606         to, fixes regression on mediaelement downloaders.
17608         r:toshok
17610 2008-11-24  Larry Ewing  <lewing@novell.com>
17612         * mediaelement.cpp (MediaElement::GetCoverageBounds): be more
17613         precise about the coverage bounds.  Use the coveragebounds when
17614         invalidating based on position so that we don't invalidate a lot
17615         more area than we need to.  Only use CAIRO_FILTER_FAST when
17616         playing use the default when in other states.
17618 2008-11-24  Geoff Norton  <gnorton@novell.com>
17620         * media.cpp: If we do a SetSource on a image element with a 
17621         completed downloader, short circuit the async call, as the downloader
17622         theoretically can be immediately reused in javascript after the call.
17623         Also remove the internal completed event after its been fired, for the
17624         same reason (downloader reuse).  Fixes halo3
17625         
17626         r: lewing
17628 2008-11-24  Larry Ewing  <lewing@novell.com>
17630         * media.cpp, media.h: hide USE_OPT_RGB24 inside MOON_FORMAT_* use
17631         them where appropriate.
17633         * mediaplayer.cpp: use MOON_FORMAT_RGB.
17635 2008-11-24  Larry Ewing  <lewing@novell.com>
17637         * brush.cpp, brush.h: add IsAnimating member to indicate if the
17638         brush is expected to change each render tick.
17640         * shape.cpp: don't cache animating brushes.
17642 2008-11-22  Jeffrey Stedfast  <fejj@novell.com>
17644         * frameworkelement.cpp (FrameworkElement::SetBindingExpression):
17645         Set the destination element and property on the binding expression
17646         so that we can easily get at them in the callback when the source
17647         property changes. Instead of passing 'this' as the user_data
17648         argument to the property change handler, pass the expression.
17649         (FrameworkElement::BoundPropertyChanged): No longer need to
17650         iterate thru the hash table, we now are able to get all the info
17651         we need from the binding expression.
17652         (FrameworkElement::bound_property_changed): Updated.
17654 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
17656         * frameworkelement.cpp (FrameworkElement::BoundPropertyChanged):
17657         Implemented properly (I think/hope).
17659 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
17661         * binding.cpp (BindingExpressionBase::AttachListener): Now takes a
17662         callback and user data.
17663         (BindingExpressionBase::DetachListener): Now takes a callback.
17665         * frameworkelement.cpp (FrameworkElement::BoundPropertyChanged):
17666         Moved here from binding.cpp.
17667         (FrameworkElement::SetBindingExpression): Made protected instead
17668         of public.
17669         (FrameworkElement::GetBindingExpression): Same.
17671 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
17673         * frameworkelement.cpp: Fixed to build w/o SL2 support.
17675 2008-11-21  Larry Ewing  <lewing@novell.com>
17677         * brush.cpp (VideoBrush::SetupBrush): make sure we use the fast
17678         filter in videobrush when scaling.
17680         r: kangaroo
17682 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
17684         * binding.cpp (changed_cb): Implemented... but it's
17685         wrong. Committing anyay with a big FIXME explaining why it's
17686         wrong.
17688         * frameworkelement.cpp (FrameworkElement::SetBindingExpression):
17689         New method to set a binding expression for a property.
17690         (FrameworkElement::GetBindingExpression): Get the binding
17691         expression for a property.
17692         (FrameworkElement::SetValueWithErrorImpl): Cleaned up the binding
17693         stuff to make the logic a bit clearer.
17695 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
17697         * binding.cpp (BindingExpressionBase::AttachListener): We want to
17698         use AddPropertyChangeHandler(), not AddPropertyChangeListener() -
17699         we want to provide our own callback, not re-use
17700         OnSubPropertyChanged() for a purpose it wasn't meant for.
17702         * frameworkelement.cpp (FrameworkElement::OnSubPropertyChanged):
17703         #if 0'd out, we might not need this afterall.
17705         * panel.cpp (Panel::OnSubPropertyChanged): Reverted back to only
17706         chaining up if the property change wasn't handled.
17708         * text.cpp (Inline::OnSubPropertyChanged): Same.
17709         (TextBlock::OnSubPropertyChanged): Same.
17710         (Glyphs::OnSubPropertyChanged): Same.
17712 2008-11-21  Larry Ewing  <lewing@novell.com>
17714         * shape.cpp: disable custom layout code as it seems to have
17715         changed in 2.0 final.
17717 2008-11-21  Alan McGovern  <amcgovern@novell.com>
17719         * frameworkelement.cpp: If a style is already set, you cannot set it
17720         again.
17722 2008-11-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17724         * value.cpp, value.h, value.h.in: Added a npobj field and Value ctor to
17725           create such a Value.
17727 2008-11-21  Alan McGovern  <amcgovern@novell.com>
17729         * frameworkelement.cpp: Implement initial support for using a Style when
17730         it is present.
17732 2008-11-20  Jeffrey Stedfast  <fejj@novell.com>
17734         * text.cpp (Inline::OnSubPropertyChanged): Always chain up.
17735         (TextBlock::OnSubPropertyChanged): Always chain up.
17736         (Glyphs::OnSubPropertyChanged): Always chain up.
17738         * geometry.cpp (Geometry::OnSubPropertyChanged): Always chain up.
17740         * brush.cpp (Brush::OnSubPropertyChanged): Always chain up.
17742         * panel.cpp (Panel::OnSubPropertyChanged): Always chain up.
17744         * binding.cpp (BindingExpressionBase::GetValue): Implemented, but
17745         might not be correct.
17747         * frameworkelement.cpp (FrameworkElement::OnSubPropertyChanged):
17748         Stubbed out.
17750 2008-11-20  Jeffrey Stedfast  <fejj@novell.com>
17752         * binding.cpp (BindingExpressionBase::AttachListener): Now takes
17753         an FE argument as the listener.
17754         (BindingExpressionBase::DetachListener): Same.
17756         * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
17757         Fixed up a bit.
17759 2008-11-20  Alan McGovern  <amcgovern@novell.com>
17761         * src.mdp:
17762         * binding.h:
17763         * binding.cpp:
17764         * frameworkelement.cpp: Add more support code for databinding.
17766 2008-11-19  Geoff Norton  <gnorton@novell.com>
17768         * audio.cpp: If we fail to initialize pulseaudio, lets try alsa before
17769         giving up on media entirely.
17771         r: toshok
17773 2008-11-19  Jeffrey Stedfast  <fejj@novell.com>
17775         Note: the way this is abstracted will probably go thru several
17776         iterations of change.
17778         * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
17779         Do special handling if setting a binding expression or if the
17780         value is replacing a binding expression.
17782         * dependencyobject.cpp (DependencyObject::IsValueValid): Made
17783         protected, no reason for this to be public.
17784         (DependencyObject::SetValueWithErrorImpl): New virtual method, has
17785         all the code logic of the old SetValueWithError().
17786         (DependencyObject::SetValueWithError): Call IsValueValid() and
17787         then SetValueWithErrorImpl().
17789 2008-11-19  Jeffrey Stedfast  <fejj@novell.com>
17791         * frameworkelement.cpp (FrameworkElement::IsValueValid):
17792         Overridden so that we can check if the Value is a
17793         BindingExpression. All DependencyProperties of FrameworkElements
17794         may be data-bound.
17796 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17798         * mediaplayer.h, mediaplayer.cpp: Make MediaPlayer use MediaElement's
17799           Rendered/DroppedFramesPerSecond DP.
17800         * pipeline.cpp: Fix warning.
17802 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17804         * dependencyproperty.g.cpp: Regenerated.
17805         * grid.h: ColumnDefinitionCollection doesn't have a public ctor.
17806         * mediaelement.h: Add RenderedFramesPerSecond, DownloadProgressOffset
17807           and DroppedFramesPerSecond.
17809 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17811         * cbinding.cpp, cbinding.h, dependencyproperty.g.cpp, text.h, type.h,
17812           type-generated.cpp, value.h: Added InputMethod.
17814 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17816         * geometry.cpp: Fix breakage in r119300.
17818 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17820         * dependencyproperty.g.cpp, transform.h: Corcompare.
17821         * geometry.h: Move FillRule from Geometry to
17822           PathGeometry/GeometryGroup.
17824 2008-11-18  Jeffrey Stedfast  <fejj@novell.com>
17826         * expression.h, binding.cpp|h: added to the build
17828 2008-11-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17830         * animation2.h, dependencyproperty.g.cpp: Corcompare fixes.
17832 2008-11-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17834         * uielement.h: Define UseLayoutRounding accessors to unbreak build.
17836 2008-11-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17838         * dependencyproperty.g.cpp, frameworkelement.h, style.h, trigger.h,
17839           uielement.h: More corcompare work.
17841 2008-11-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17843         * cbinding.cpp, cbinding.h, trigger.h, type.h, type-generated.cpp,
17844           value.h: Add TriggerBase, make EventTrigger inherit from it and
17845           regenerate.
17847 2008-11-17  Jeffrey Stedfast  <fejj@novell.com>
17849         * enums.cpp (initialize_enums): Map BindingMode in unmanaged land.
17851 2008-11-17  Michael Dominic K.  <mdk@mdk.am>
17853         * clock.cpp: Fixing seek-test-multiple-repeat.html (a problem with multiple 
17854         repeats when seeking anims with RepeatBehavior >= 2.0).
17856 2008-11-17  Michael Dominic K.  <mdk@mdk.am>
17858         * clock.cpp: When running without idle hint (runtime init) do not apply it 
17859         here. Makes the idle hint switch actually do something and makes debugging
17860         easier.
17862 2008-11-14  Michael Dominic K.  <mdk@mdk.am>
17864         * animation.cpp:
17865         * animation.h: The KeySpline quadratics used to generate interpolation
17866         values are generated dynamically = faster and less mem.
17868 2008-11-14  Michael Dominic K.  <mdk@mdk.am>
17870         * animation.cpp:
17871         * animation.h: Slightly more nice value caching.
17873 2008-11-14  Geoff Norton  <gnorton@novell.com>
17875         * pipeline-ui.cpp:
17876         * codec-url.h:  Update to the final URLs for beta 1
17878         r: miguel
17880 2008-11-14  Geoff Norton  <gnorton@novell.com>
17882         * pipeline-ui.(cpp|h): Rework the pipeline for codec installation to 
17883         handle the pango markup we're using.
17885         r: miguel
17887 2008-11-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17889         * mediaelement.cpp: SetMedia: when getting the playlist for an
17890           asxdemuxer, set the media for it. Fixes a memory leak (the media
17891           should get disposed with the playlist gets disposed).
17892         * pipeline.cpp, pipeline.h: Implement ASXDemuxer::Dispose.
17893         * playlist.cpp, playlist.h: Implement Playlist[Entry]::GetTypeName, and
17894           add a parameter to PlaylistEntry::SetMedia to specify whether the
17895           entry should start playing the media or not.
17897 2008-11-13  Sebastien Pouliot <sebastien@ximian.com>
17899         * runtime.cpp (running_on_nvidia): Fix leak of Display
17900         r: kangaroo
17902 2008-11-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17904         * mediaelement.cpp: MediaElement::Play: we want to queue a PlayNow
17905           request even if we're currently playing, there might be a PauseNow
17906           request already queued.
17908 2008-11-11  Sebastien Pouliot <sebastien@ximian.com>
17910         * pipeline-asp.cpp: Fix case where get_audio_data returns NULL
17911         r: fer
17913 2008-11-11  Geoff Norton  <gnorton@novell.com>
17915         * Makefile.am: Only build the appropriate pipeline-ui based on wether
17916         we're building on a os/arch combo that supports the SMP.
17917         * codec-url.h: Set the appropriate CODEC_URL for our target platform
17918         * pipline-nocodec-ui.(cpp|h): New UI for unsupported OS/Arch targets
17919         of the codec install pipeline.
17921 2008-11-11  Geoff Norton  <gnorton@novell.com>
17923         * debug.h: Its unlikely that debug flags will be set.
17925         r: spouliot
17927 2008-11-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17929         * pipeline.cpp: IMediaStream::Dispose: delete our queue of frames.
17930           Plugs a memory leak.
17932 2008-11-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17934         * playlist.cpp: Playlist::Dispose: dispose all the items in our entries
17935           too.
17937 2008-11-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17939         * pipeline.cpp, pipeline.h: Plug a memory leak.
17941 2008-11-10  Geoff Norton  <gnorton@novell.com>
17943         * runtime.cpp: Do not enable debug features by default, and remove a 
17944         superflous warning.
17945         r: toshok
17947 2008-11-10  Geoff Norton  <gnorton@novell.com>
17949         * runtime.cpp: Force NVIDIA binary driver to go to the image backend
17950         to work around serious performance problems when we use accelerated
17951         rendering with it.
17952         r: toshok
17954 2008-11-10  Chris Toshok  <toshok@ximian.com>
17956         * runtime.cpp (copy_input_list_from_node): rename
17957         copy_input_list_with_visibility_check to this method.  the
17958         caller (HandleMouseEvent) already walks over the list to determine
17959         if an element has total render or hittest visibility == false.  By
17960         definition, everything before that in the input list (the input
17961         list is ordered from most deeply nested to the root) also has
17962         those == false, so we can short circuit things by traversing from
17963         the tail of the list, and then only copying the nodes we've seen
17964         before (but which come after) the offending one.
17966 2008-11-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17968         * mediaplayer.cpp, mediaelement.cpp, playlist.cpp, playlist.h,
17969           pipeline.cpp: Instead of calling Media::Dispose in MediaElement,
17970           move that to Playlist(Entry) and Dispose of the playlist instead.
17971           This makes re-playing already played content in playlists work
17972           again.
17974 2008-11-10  Michael Dominic K.  <mdk@mdk.am>
17976         * animation.cpp:
17977         * animation.h: Cache some vals internally in *Animation for better 
17978         performance in loop-called routines.
17980 2008-11-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17982         * audio.cpp, audio.h, mediaelement.cpp, mediaplayer.cpp, mediaplayer.h:
17983           Implement MediaElement.AudioStreamIndex.
17985 2008-11-07  Michael Dominic K.  <mdk@mdk.am>
17987         * clock.cpp: Fixing one broken block in the AnimationMatrix2 test. 
17988         It was broken but diff was too small to be picked by the test runner.
17990 2008-11-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17992         * pipeline-ffmpeg.cpp: FfmpegDecoder::DecodeFrame: for audio packets we
17993           need to keep decoding until the entire input has been consumed.
17995 2008-11-06  Geoff Norton  <gnorton@novell.com>
17997         * pipline(-ui).cpp: Move the codec location on more time.
17998         r: miguel
18000 2008-11-05  Michael Dominic K.  <mdk@mdk.am>
18002         * animation.cpp:
18003         * animation.h: Fixing one more mem-leak case. Fixes #436068.
18005 2008-11-06  Stephane Delcroix  <sdelcroix@novell.com>
18007         * downloader.h: change the signature of downloaderRequestFinishedHandler
18008         to pass the resulting uri.
18010         * downloader.cpp: validate the returned uri against redirection policies
18012         r:gnorton
18014 2008-11-05  Jeffrey Stedfast  <fejj@novell.com>
18016         Patches by Argiris Kirtzidis to fix bug #441687
18018         * audio.cpp: Use g_alloca() to create dynamically sized arrays on
18019         the stack rather than relying on g++ features.
18021         * clock.cpp: Applied MSVC portability patch which implements
18022         gettimeofday().
18024 2008-11-04  Fernando Herrera  <fherrera@novell.com>
18026         * mediaplayer.cpp: Add logging information about selected streams
18027         properties.
18029 2008-11-03  Jeffrey Stedfast  <fejj@novell.com>
18031         See tests/xaml/test-textblock-actualheight.html and
18032         test-textblock-hittest.html as compared with Microsoft
18033         Silverlight.
18035         * layout.cpp (TextLayout::Layout*): trailing LineBreak elements
18036         actually do count toward ActualHeight metrics.
18038 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18040         * audio-pulse.cpp: OnContextStateChanged: always print an error message
18041           if we fail to connect to pa daemon.
18043 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18045         * mediaelement.h, mediaelement.cpp: Add a MissingCodecs flag and don't
18046           invalidate when that flag is set.
18048 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18050         * runtime.cpp: get_flags: take the default flags as an argument, this
18051           way the environment variables can disable flags which are enabled
18052           by default.
18054 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18056         * pipeline-ui.cpp, runtime.h, runtime.cpp, pipeline.cpp: Only enable ms
18057           codecs by default for browsers.
18059 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18061         * mediaplayer.cpp: FrameCallback: If the frame couldn't be retrieved
18062           because of a buffer underflow and we're waiting for the initial
18063           frame, enqueue a request for another frame. Fixes #440317.
18065 2008-11-03  Larry Ewing  <lewing@novell.com>
18067         * rect.h (struct Rect): clamp the intersection w/h to 0 fixes some
18068         extreme exposure issues in popfly.
18070 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18072         * runtime.h: Remove #include <config.h> from headers
18074 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18076         * mp3.h, mp3.cpp: Mp3FrameReader::TryReadFrame: if we don't succeed in
18077           reading a header, try to sync to one. FindMpegHeader: Return proper
18078           error code (MEDIA_NO_MORE_DATA) if we can't read more data. Fixes
18079           #426440 (slideshow doesn't go beyond the first slide).
18081 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18083         * mediaelement.h, mediaelement.cpp: When a AutoPlay=False media is
18084           opened, the final state is Stopped, not Paused. When media finish,
18085           the final state is Paused, not Stopped. Fixes #365827.
18087 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18089         * audio-alsa.cpp: Add another dlopened symbol, fixes an unresolved
18090           external reference.
18092 2008-11-03  Fernando Herrera  <fherrera@novell.com>
18094         * audio-alsa.cpp:
18095         * audio-pulse.cpp:
18096         * audio.cpp:
18097         * audio.h:
18098         * debug.cpp:
18099         * debug.h:
18100         * dependencyobject.cpp:
18101         * downloader.cpp:
18102         * font.cpp:
18103         * http-streaming.cpp:
18104         * layout.cpp:
18105         * media.cpp:
18106         * mediaelement.cpp:
18107         * mediaplayer.cpp:
18108         * mms-downloader.cpp:
18109         * pipeline-asf.cpp:
18110         * pipeline-ffmpeg.cpp:
18111         * pipeline-ui.cpp:
18112         * pipeline.cpp:
18113         * playlist.cpp:
18114         * runtime.cpp:
18115         * runtime.h:
18116         * text.cpp:
18117         * textbox.cpp:
18118         * xaml.cpp:
18119         * yuv-converter.cpp: Change debug macros to runtime conditionals based
18120           on MOONLIGHT_DEBUG env variable of compile time. Checks are only
18121           enabled if configured with --with-debug=yes option.
18123 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18125         * debug.cpp: Don't dlopen mono, just link with it if -with-debug is
18126           specified.
18128 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18130         * pipeline-ffmpeg.cpp: Revert r117547 and related.
18132 2008-11-02  Chris Toshok  <toshok@ximian.com>
18134         * text.cpp (TextBlock::InsideObject): textblocks are hit only in
18135         their ActualWidth/ActualHeight, not in the full bounding
18136         rectangle.  Fixes bug #434258.
18138 2008-10-31  Chris Toshok  <toshok@ximian.com>
18140         * runtime.h, runtime.cpp: remove transparency from properties of
18141         the surface
18142         (Surface::PaintToDrawable): add a @transparent argument to this
18143         method.
18145         * window-gtk.cpp (MoonWindowGtk::expose_event): pass the window's
18146         transparency to Surface::PaintToDrawable.
18148         * window.h: move the idea of transparency here from Surface.
18150 2008-10-31  Jeffrey Stedfast  <fejj@novell.com>
18152         Portability patch by Argiris Kirtzidis.
18154         * *.cpp: s/#if false/#if 0/g and s/#if true/#if 1/g
18156         * xaml.cpp (start_element): strchr() returns const.
18157         (repeat_behavior_from_str): Same.
18159 2008-10-31  Larry Ewing  <lewing@novell.com>
18161         * runtime.cpp (Surface::PaintToDrawable): instead of the content
18162         type check if active_window is fullscreen. This is uglier but the
18163         mozilla hands us rgb drawables not rgba drawables so until we have
18164         a better plan this will solve the problem.
18166 2008-10-31  Larry Ewing  <lewing@novell.com>
18168         * runtime.cpp (Surface::PaintToDrawable): only follow the
18169         transparent path if our target supports it.
18171 2008-10-31  Sebastien Pouliot  <sebastien@ximian.com>
18173         * pipeline-asp.cpp (ASFDemuxer::ReadHeader): Fix logic when skipping
18174         a bad stream so we dont include NULL holes streams[]
18176 2008-10-31  Michael Dominic K.  <mdk@mdk.am>
18178         * runtime.cpp: Reverting for now the recent crossing events 
18179         changes -- causes issues with Ink Journal.
18181 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18183         * pipeline.h, pipeline.cpp: Added IMediaStream::GetMediaTypeName.
18184         * mediaplayer.cpp: Use IMediaStream::GetMediaTypeName instead of
18185           complex ifs on the GetType return value.
18187 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18189         * debug.cpp: dlopen libmono too for our stack walking methods.
18191 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18193         * pipeline-ffmpeg.cpp: Don't use ffmpeg version defines which aren't
18194           present in older ffmpeg version (r10885).
18196 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18198         * pipeline-ffmpeg.cpp: DecodeFrame: free the frame after error
18199           conditions.
18201 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18203         * pipeline-ffmpeg.cpp: dlopen ffmpeg.
18205 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18207         * pipeline.cpp: Fix warning (variable might be used uninitialized).
18209 2008-10-30  Jeffrey Stedfast  <fejj@novell.com>
18211         Fix for bug #435815.
18213         * stylus.cpp (StrokeCollection::AddedToCollection): Override so
18214         that we can avoid aborting if a stroke already has a logical
18215         parent (not an error for strokes).
18217         * error.h (MoonError::Clear): New convenience method.
18219 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18221         * libmoon.h: Fix build.
18223 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18225         * audio.cpp, brush.cpp, cbinding.h, dependencyproperty.g.cpp,
18226           Makefile.am, media.cpp, media.h, mediaelement.cpp, mediaelement.h,
18227           mediaplayer.cpp, mediaplayer.h, pipeline.cpp, type-generated.cpp,
18228           src.mdp, playlist.cpp: Split MediaElement out from media.[cpp|h]
18229           into its own mediaelement.[cpp|h].
18231 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18233         * type-generated.cpp, Makefile.am, media.h, mediaplayer.cpp,
18234           mediaplayer.h, mplayer.cpp, mplayer.h, src.mdp: Rename
18235           mplayer.[cpp|h] -> mediaplayer.[cpp|h].
18237 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18239         * cbinding.cpp, cbinding.h: Regenerated.
18241 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18243         * audio.cpp, audio-pulse.cpp, media.cpp, mms-downloader.h, mp3.cpp,
18244           mplayer.h, pipeline.cpp, pipeline.h, pipeline-asf.cpp,
18245           pipeline-asf.h, src.mdp, xaml.cpp: Move asf related bits from
18246           pipeline.[h|cpp] to pipeline-asf.[h|cpp].
18248 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18250         * pipeline.h: IMediaDemuxer: Add Source getter.
18251         * pipeline.cpp: IMediaDemuxer::GetLastAvailablePts: don't take into
18252           account streams which aren't selected. IMediaStream::AppendFrame:
18253           update last available pts with the frame's pts.
18254         * media.cpp: MediaElement::CalculateBufferingProgress: never use last
18255           available pts to calculate buffering progress for streams which can
18256           seek to directly to the requested pts. Fix math to check for
18257           negative values to avoid weird results.
18259 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18261         * media.cpp, media.h: MediaElement: fix buffering progress after
18262           seeking regression - don't only use the buffer level in the
18263           pipeline to report buffering progress, but take into accout the
18264           point from where we seek.
18265         * mp3.h, mp3.cpp: Store the AudioStream in the frame reader and update
18266           the stream's LatestAvailablePts field whenever we read a frame.
18267           Also rename the previous 'stream' (IMediaSource*) field to 'source'
18268           to avoid confusion with AudioStream.
18269         * pipeline.cpp, pipeline.h: Add a last_available_pts field to
18270           IMediaStream and the corresponding GetLastAvailablePts to
18271           IMediaDemuxer, enabling the calculation of correct buffering
18272           progress after a seek. This also requires a codec abi version bump.
18274 2008-10-29  Sebastien Pouliot  <sebastien@ximian.com>
18276         * clock.h: Change MilliSeconds_[From|To]Pts to use the new
18277         PTS_PER_MILLISECOND define.
18278         * mplayer.cpp: Rework fix on GetTimeoutInterval to avoid a division
18279         resulting in zero (and the endless loop of #439631).
18281 2008-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18283         * mplayer.cpp: GetTimeoutInterval: Calculate timeout correctly. Fixes
18284           #439631.
18286 2008-10-28  Jeffrey Stedfast  <fejj@novell.com>
18288         * downloader.cpp (scheme_is): Check protocol non-null.
18289         (same_scheme): Same.
18291         * uri.cpp (Uri::Parse): If no protocol is found, init to NULL
18292         instead of file. Also make sure to parse the path in all valid
18293         cases.
18295 2008-10-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18297         * mplayer.cpp: LoadVideoFrame: if target_pts is invalid, set 0 as
18298           target_pts.
18299         * media.cpp: AdvanceFrame: handle cases where position = -1 and don't
18300           do anything.
18302 2008-10-27  Jeffrey Stedfast  <fejj@novell.com>
18304         * uri.cpp (Uri::Parse): Do a bit better than just strchr() for ':'
18305         to parse out the uri scheme.
18307 2008-10-27  Jeffrey Stedfast  <fejj@novell.com>
18309         Performance optimization patch for bug #409793
18311         * stylus.cpp (Stroke::AddStylusPointToBounds): Modified to take a
18312         Rect bounds argument so that we can update a bounds of our
18313         choosing.
18314         (Stroke::ComputeBounds): Updated.
18315         (Stroke::OnCollectionChanged): Update our new 'dirty' bounds.
18316         (Stroke::OnCollectionItemChanged): Same.
18317         (InkPresenter::PostRender): Reset stroke dirty regions.
18318         (InkPresenter::OnCollectionItemChanged): Invalidate only the
18319         stroke's dirty region.
18321 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18323         * media.cpp: TryOpen: Don't try to open anything if downloaded_file is
18324           null.
18326 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18328         * mplayer.cpp: LoadVideoFrame: Don't check if buflen = 0, makes things
18329           work with ffmpeg.
18330         * pipeline-ffmpeg.cpp, pipeline-ffmpeg.h: CleanState: Properly clean
18331           up/reset codec. DecodeFrame: ffmpeg might delay output one frame,
18332           i.e. the decoder output is the input of the previous time we called
18333           avcodec_decode_video, so keep track of pts from previous frame and
18334           properly set pts of the decoded frame.
18336 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18338         * mplayer.cpp: LoadVideoFrame: show the frame if the end pts of the
18339           frame is above the target pts (previously we only showed the frame
18340           if the start pts was above the target pts, causing us to show one
18341           frame too late). Fixes test-asf-demuxer-shuffled-payloads.html.
18343 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18345         * media.cpp: MediaElement::Play: Call Play when in Opening state too.
18347 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18349         * mplayer.cpp: AdvanceFrame/GetCurrentPts: if the audio isn't playing
18350           we should just work as if there's no audio at all. The video might
18351           play after the audio has stopped if the a/v streams have different
18352           length.
18354 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18356         * pipeline.cpp: Media::ClearQueue: delete the list nodes with the
18357           queue_mutex unlocked, since the node dtor may cause unrefs, causing
18358           other dtors to be called, and it may all end up in Media::Dispose
18359           which will then try to lock the mutex again (and deadlock).
18361 2008-10-24  Jeffrey Stedfast  <fejj@novell.com>
18363         * font.cpp (style_info_parse): Tokenize the style string so that
18364         the individual sub-parsers can be a bit smarter than than
18365         strstr().
18366         (style_width_parse): Made smarter - now handles lwsp between
18367         multi-word width specifiers (or no lwsp at all).
18368         (style_weight_parse): Same.
18370 2008-10-23  Larry Ewing  <lewing@novell.com>
18372         * media.cpp: remove compute bounds since it mirrors
18373         FrameworkElement now.
18375 2008-10-23  Larry Ewing  <lewing@novell.com>
18377         * shape.cpp, shape.h: remove origin fixup GetOriginPoint and
18378         GetSizeForBrush.
18380 2008-10-23  Jeffrey Stedfast  <fejj@novell.com>
18382         * textbox.cpp (TextBox::Paint): Updated.
18384         * text.cpp (TextBlock::Paint): Updated.
18386         * layout.cpp (TextLayout::Render): Swapped origin & offset
18387         arguments which feels more natural to me.
18389 2008-10-23  Sebastien Pouliot  <sebastien@ximian.com>
18391         * pipeline.cpp: (ASFDemuxer::ReadHeader): Don't allow video height or
18392         width over 2048 pixels since this is likely to be corrupted values.
18393         * pipeline.h: Define MAX_VIDEO_[HEIGHT|WIDTH] to 2048 (I'm sure that
18394         someday people will laugh at me for proposing such a small value)
18396 2008-10-23  Larry Ewing  <lewing@novell.com>
18398         * layout.cpp, layout.h: Change the Render api to drop the uielement argument. 
18400         * textbox.cpp:
18401         * text.cpp: call layout with the new arguments.
18402         
18403 2008-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18405         * mplayer.cpp: Pause: Don't set the SeekSynched flag. This would cause
18406           fast-forwarding video when seeking to a position which hadn't been
18407           downloaded (since we automatically pause the video then). Fixes
18408           #435908.
18410 2008-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18412         * mplayer.h, mplayer.cpp: Implement RenderedFramesPerSecond and
18413           DroppedFramesPerSecond. Only in SL 2.0, but very useful for
18414           debugging 1.0 too.
18416 2008-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18418         * pipeline.h, pipeline.cpp: Increase codec ABI version (IMediaStream
18419           changed size). IMediaStream: Remove msec_per_frame, it's already in
18420           VideoStream. VideoStream: make msec_per_frame be pts_per_frame to
18421           loose less precision.
18422         * mplayer.cpp: Calculate advance frame timeout based on video fps.
18424 2008-10-22  Chris Toshok  <toshok@ximian.com>
18426         * runtime.cpp (Surface::HandleUICrossing): disable the crossing
18427         check from r116528 in the case of a windowless plugin (where
18428         event->window == NULL).  Also, active_window->GetGdkWindow should
18429         never be trusted to return the actual window - it's use is
18430         strictly to find the screen/monitor for full-screening.  In the
18431         windowless case it returns the toplevel netscape window.
18433 2008-10-22  Larry Ewing  <lewing@novell.com>
18435         * brush.cpp, brush.h: remove the uielement references from the api
18436         pass the required information as a rect to SetupBrush instead.
18438         * shape.cpp, shape.h:
18439         * panel.cpp:
18440         * layout.cpp:
18441         * text.cpp:
18442         * uielement.cpp:
18443         * control.cpp:
18444         * broder.cpp: update SetupBrush callers for the new signature.
18446 2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18448         * audio.h, audio.cpp: AudioSource: Initialize last_write_pts and
18449           last_current_pts to their max value, to detect when they haven't
18450           been set yet. Properly reinitialize these variables (to their max
18451           values) in Stop, and make GetCurrentPts return G_MAXUINT64 for this
18452           case.
18453         * mplayer.cpp: AdvanceFrame: the audio might return G_MAXUINT64 for
18454           current pts, handle this. Fixes fast-forwarding issue in #435908.
18456 2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18458         * mp3.cpp: Mp3Demuxer::SeekInternal: Initialize result so that we don't
18459           use random memory if we don't have a reader.
18461 2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18463         * mms-downloader.cpp: Add logging methods.
18465 2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18467         * media.cpp: Sprinkle Dispose calls to plug leaks.
18469 2008-10-20  Chris Toshok  <toshok@ximian.com>
18471         * pipeline.cpp (Media::RegisterMSCodecs): free libmscodecs_path
18472         before reassigning (and reallocating memory for) it.
18474         * dependencyobject.h, dependencyobject.cpp: add an optional
18475         argument to all the EventObject::AddHandler* overloads, called
18476         data_dtor, which is invoked just before the EventClosure is
18477         destroyed so that the data can be freed.
18479 2008-10-20  Chris Toshok  <toshok@ximian.com>
18481         * window-gtk.h, window-gtk.cpp: move the Surface conversion from
18482         MouseCursor -> GtkCursor here.
18484         * runtime.h, runtime.cpp: surface only deals with MouseCursors
18485         anymore.  the gtk support is in window-gtk now.
18486         
18487         * window.h: remove SetCursor (GdkCursor) and add
18488         SetCursor (MouseCursor), so subclasses of MoonWindow can do their
18489         own thing.
18491 2008-10-20  Jeffrey Stedfast  <fejj@novell.com>
18493         * media.cpp (MediaElement::MediaOpened): If the stream decoder is
18494         null, use null for the decoder_name. Fixes a segfault.
18496 2008-10-20  Sebastien Pouliot  <sebastien@ximian.com>
18498         * pipeline.cpp (ASFDemuxer::ReadHeader): Don't count invalid streams
18499         since a lot of loops don't handle NULL values.
18501 2008-10-20  Michael Dominic K.  <mdk@mdk.am>
18503         * runtime.cpp: More fixes to crossing events: when entering fullscreen
18504         ignore the crossing events coming from previous window. Otherwise we get
18505         double enter/leave pair.
18507 2008-10-20  Michael Dominic K.  <mdk@mdk.am>
18509         * window-gtk.cpp: GetGdkWindow () - handle the fullscreen window case 
18510         correctly (no parent window).
18512 2008-10-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18514         * debug.h, pipeline.cpp, audio.cpp: #define print_stack_trace to
18515           nothing if not DEBUG is set, removing the need for surrounding all
18516           print_stack_trace calls with #if DEBUG.
18518 2008-10-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18520         * pipeline.cpp: Remove debugging code.
18522 2008-10-17  Michael Dominic K.  <mdk@mdk.am>
18524         * animation.cpp:
18525         * animation.h:
18526         * applier.h: Fixing one more osbcure case of Storyboard transitions where
18527         stopping a prev sboard makes the next one starting from bad base value.
18529 2008-10-17  Michael Dominic K.  <mdk@mdk.am>
18531         * runtime.cpp: Make sure we get the new pointer motion notify when 
18532         entering/leaving fullscreen. This fixes the fullscreen-enter-leave test 
18533         but interestingly doesn't fix the original problem of #434267.
18535 2008-10-17  Sebastien Pouliot  <sebastien@ximian.com>
18537         * runtime.cpp (Surface::PaintToDrawable): Don't leak cairo context
18538         when using "backend=image".
18540 2008-10-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18542         * pipeline.cpp: NullDecoder::OpenVideo: Fix comment (logo is centered
18543           now, not tiled), and fix inner loop, we were including one pixel
18544           too many for width and height.
18546 2008-10-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18548         * pipeline.cpp: RegisterMSCodecs: if there's no codec in
18549           ~/.mozilla/plugins, use just the filename of the codec library and
18550           make dlopen search for it. This makes it easier to run parallell
18551           tests from different revisions without having the codecs from each
18552           revision overwrite eachother in user's home.
18554 2008-10-16  Geoff Norton  <gnorton@novell.com>
18556         * pipeline.cpp: Dont tile our logo, it looks like ass.  Lets
18557         center it in the available window instead.
18559 2008-10-16  Geoff Norton  <gnorton@novell.com>
18561         * pipeline-ui.cpp: Avoid a resize when realizing which causes an
18562         annoying flicker in the codec window.
18564 2008-10-16  Geoff Norton  <gnorton@novell.com>
18566         * pipeline.cpp: Unbreak the world.
18568 2008-10-16  Geoff Norton  <gnorton@novell.com>
18570         * pipeline(-ui).cpp: Use the updated mscodec name and location.
18572 2008-10-16  Fernando Herrera  <fherrera@novell.com>
18574         * playlist.cpp: Fix a segfault parsing ASX3 malformed files.
18576 2008-10-16  Sebastien Pouliot  <sebastien@ximian.com> 
18578         * text.cpp (TextBlock::Layout): Delay allocation of List so that we
18579         don't leak when TextBlock::TextProperty is NULL.
18581 2008-10-16  Sebastien Pouliot  <sebastien@ximian.com>
18583         * runtime.cpp (Surface::SetCursor): Unref cursors once they are set
18584         on the window. Fix one more leak.
18586 2008-10-16  Jb Evain  <jbevain@novell.com>
18588         * collection.cpp: TriggerCollection, UIElementCollection, InlineCollection:
18589         mark managed constructor internal.
18591 2008-10-16  Jb Evain  <jbevain@novell.com>
18593         * collection.cpp (RemoveAtWithError): throw an ArgumentOutOfRangeException
18594         instead of an ArgumentException when providing an out of range index.
18596 2008-10-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18598         * window-gtk.cpp, window.h: Add file header and fix copy-paste error.
18600 2008-10-15  Chris Toshok  <toshok@ximian.com>
18602         * runtime.cpp (Surface::HandleUIKeyPress): check to see if the key
18603         is already down, and if so, don't emit another event.  (really?
18604         there's a test for this?  ugh.).  also, let Keyboard know the key
18605         is down.
18606         (Surface::HandleUIKeyRelease): let Keyboard know the key is up.
18608         * eventargs.h, eventargs.cpp (class Keyboard): augment Keyboard
18609         quite a bit -- it might soon deserve its own file.  It now
18610         maintains a static hashtable of keys that are pressed/released
18611         inside the moonlight plugin, and has logic to map a gdk keyval to
18612         Key, and query if a particular key is pressed.
18614 2008-10-15  Larry Ewing  <lewing@novell.com>
18616         * uielement.cpp: fix the transform ordering.
18618         * canvas.cpp, canvas.h: handle the toplevel canvas correctly.
18620 2008-10-15  Larry Ewing  <lewing@novell.com>
18622         * uielement.cpp, uielement.h: remove UpdatePosition and
18623         ComputePosition, all transform changes are handled in
18624         ComputeTransform now.
18626         * shape.cpp, shape.h: update for the new transform api.
18627         
18628         * dirty.cpp, dirty.h: remove DirtyPostion is it no longer needed.
18629         
18630         * canvas.cpp: Use UpdateTransform. 
18632         * point.h: add a (lame) == operator.
18633         
18634 2008-10-15  Larry Ewing  <lewing@novell.com>
18636         * geometry.cpp, geometry.h: add shape bounds caching to all
18637         geometry classes apply the transform when retrieving the bounds.
18638         Make GetBounds the public bounds interface and make the
18639         computation interface protected.
18641         * shape.cpp, uielement.cpp: call use GetBounds not ComputeBounds.
18643 2008-10-14  Larry Ewing  <lewing@novell.com>
18645         * geometry.cpp, geometry.h: remove unused arguments to
18646         ComputeBounds remove caching from PathGeometry.
18648         * uielement.cpp, shape.cpp: call with correct arguments.
18650 2008-10-14  Larry Ewing  <lewing@novell.com>
18652         * uielement.cpp, uielement.h: make ComputeTransform virtual and
18653         have it return a bool.
18655         * shape.cpp, shape.h: override ComputeTransform and optimize the
18656         bounds computations.  Use a general ComputeShapeBounds for actual
18657         drawn bounds compuations for now.
18658         
18659         * dirty.cpp (Surface::ProcessDownDirtyElements): add a short
18660         circuit path to DirtyTransform for elements that can recompute
18661         without updating bounds.
18663 2008-10-13  Larry Ewing  <lewing@novell.com>
18665         * geometry.cpp, geometry.h: remove unused arguments from function
18666         prototypes.
18667         
18668         * uielement.cpp, shape.cpp: update calls.
18669         
18670 2008-10-15  Jeffrey Stedfast  <fejj@novell.com>
18672         Fix for bug #435798
18674         * text.cpp (TextBlock::TextBlock): Let OnPropertyChanged() know
18675         that we are setting the default brush/inlines.
18676         (TextBlock::Layout): If no Text value has yet been set, use 0.0 as
18677         the actualHeight.
18679 2008-10-14  Chris Toshok  <toshok@ximian.com>
18681         * window-gtk.h, window-gtk.cpp (MoonWindowGtk::GetGdkWindow): ref
18682         the return value.
18683         (MoonWindowGtk::InitializeFullScreen): unref the return value of
18684         GetGdkWindow.
18686         * cbinding.h, cbinding.cpp: regen so we don't have to use void*
18687         for the parent parameter to MoonWindowGtk.
18689 2008-10-14  Sebastien Pouliot  <sebastien@ximian.com>
18691         * applier.cpp|h: Add a readonly flag to ensure nothing gets added in
18692         the hashtable while we're flushing it on shutdown. Add a few more
18693         checks and avoid re-creating the hashtable on flush.
18695 2008-10-14  Geoff Norton  <gnorton@novell.com>
18697         * pipeline-ffmpeg.cpp:  FFMpeg changed the API with version #52, no
18698         longer requiring the bits_per_pixel.
18700 2008-10-14  Stephane Delcroix  <sdelcroix@novell.com>
18702         * window.h: GetGdkWindow () method
18704         * window-gtk.h|.cpp: implement GetGdkWindow, new ctor signature
18705         taking the parent window reference. Only go fullscreen on the monitor
18706         moonlight is running on.
18708         * runtime.cpp: call the new MoonWindowGtk ctor
18710 2008-10-14  Fernando Herrera  <fherrera@novell.com>
18712         * pipeline-ui.cpp: Override codecs download URL with
18713         MOONLIGHT_CODEC_URL env variable if present.
18715 2008-10-13  Jeffrey Stedfast  <fejj@novell.com>
18717         * xaml.cpp (XamlLoader::CreateFromFile): Since we use the nread
18718         variable expecting it to be the value returned from read(), don't
18719         modify it inside the loop, use another variable for that. Before
18720         eating leading whitespace, make sure we have data.
18722 2008-10-13  Fernando Herrera  <fherrera@novell.com>
18724         * audio.cpp: Fix AudioSources::GetNext iteration for next playing
18725         source logic. Fixes bug #433267
18727 2008-10-13  Jeffrey Stedfast  <fejj@novell.com>
18729         * media.cpp (MediaElement::Play): Don't add a TickCall to start
18730         playing if we haven't even opened the media yet. Fixes bug
18731         #434462.
18733 2008-10-13  Michael Dominic K.  <mdk@mdk.am>
18735         * dependencyproperty.cpp: Fixing a mem leak.
18737 2008-10-13  Michael Dominic K.  <mdk@mdk.am>
18739         * animation.cpp: Reverting the whole attaching-to-prev storage in Begin. 
18740         This fixes some recent problems in PopFly.
18742 2008-10-10  Jeffrey Stedfast  <fejj@novell.com>
18744         * downloader.cpp (validate_policy): Made static so we don't export
18745         this symbol.
18747 2008-10-10  Sebastien Pouliot  <sebastien@ximian.com>
18749         * dependencyproperty.cpp (detach_target_func): Fix bad function 
18750         signature for GHFunc.
18751         * dependencyobject.cpp (unref_object): Fix bad function signature
18752         for GFunc.
18754 2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18756         * pipeline.h, pipeline.cpp: Media: Add a BufferingEnabled flag, don't
18757           start buffering until this is set to true (starts out as false).
18758         * media.cpp: Only enable buffering on the media after reading the
18759           markers, otherwise we may loose markers in the beginning of the
18760           media. Fixes test-asf-demuxer-big-markers.html. Also don't add a
18761           tick call to notify the MediaElement that a marker has been added,
18762           always check in AdvanceFrame.
18763         * mplayer.cpp: Add a null check in a printf.
18765 2008-10-10  Larry Ewing  <lewing@novell.com>
18767         * media.cpp (Image::DownloaderComplete): handle the case where the
18768         sureface uri and the new uri are the same.
18770 2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18772         * pipeline-logo.cpp: New logo.
18774 2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18776         * media.cpp: MediaElement::Reinitialize: Dispose the media to break
18777           cyclic refs.
18778         * mplayer.cpp: AdvanceFrame: don't decode here anymore, we shouldn't
18779           get non-decoded frames anymore. Open: Handle null demuxers,
18780           shouldn't happen, but at least we won't crash if it happens.
18781         * pipeline.cpp, pipeline.h: Media::~Media: move cleanup to Dispose.
18782           Media::Open: unref the decoder after giving it to the stream, the
18783           stream now take a ref on the decoder. Media::EnqueueWork:
18784           queued_requests might be nothing if we're disposed. IMediaStream:
18785           move cleanup to dispose and take a ref on the decoder. Add decoder
18786           getter/setters, and update code to use them.
18788 2008-10-10  Sebastien Pouliot  <sebastien@ximian.com>
18790         * applier.cpp: Fix another bad function signatures for GFunc.
18792 2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18794         * audio.cpp, pipeline-ffmpeg.cpp, pipeline.h, mplayer.cpp: Remove
18795           FRAME_COPY_DECODED_DATA and always copy decoded data. Fixes video
18796           stuttering when using ffmpeg.
18798 2008-10-09  Jackson Harper  <jackson@ximian.com>
18800         * runtime.cpp: The resize event is only emitted when switching
18801         from fullscreen to non fullscreen.
18803 2008-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18805         * pipeline.cpp, pipeline.h: Properly ref/unref MediaMarkers instead of
18806           deleting them.
18808 2008-10-09  Jackson Harper  <jackson@ximian.com>
18810         * runtime.cpp: When we change to/from fullscreen there should be a
18811         resize event.
18813 2008-10-09  Sebastien Pouliot  <sebastien@ximian.com>
18815         * media.cpp (Image::CreateSurface): Protect against a NULL
18816         filename (valid value). This will avoid crash like bug #433810
18817         even if, in this case, the problem lies elsewhere (bad downloader
18818         which looks related to #433814).
18820 2008-10-09  Jeffrey Stedfast  <fejj@novell.com>
18822         * font.cpp (FontFace::LoadDefaultFace): Pass the families to
18823         LoadDefaultFont() for font name comparison, we need to match the
18824         font names exactly or fall back to the next font.
18826 2008-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18828         * audio.cpp: Add a nullcheck.
18830 2008-10-08  Sebastien Pouliot  <sebastien@ximian.com>
18832         * media.cpp (Image::IsSurfaceCached): Don't leak (actually 
18833         don't dupe) uri.
18835 2008-10-08  Jeffrey Stedfast  <fejj@novell.com>
18837         * font.cpp: Add fallback for Liberation fonts.
18839         * pipeline.cpp (Media::Warning): Replacement for both
18840         Media::AddMessage() methods.
18842 2008-10-08  Sebastien Pouliot  <sebastien@ximian.com>
18844         * applier.cpp: Fix function signatures for GFunc and GHFunc.
18845         Fix random crash when closing silverlight world #433461
18847 2008-10-08  Larry Ewing  <lewing@novell.com>
18848         * window-gtk.cpp (MoonWindowGtk::realized): make sure we remove
18849         any existing render_cb attachments before adding new ones in case
18850         our realize wordering is out of sync.
18852         Fixes the rest of b.n.c #432975
18854 2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18856         * mp3.cpp: Fix boolean->MediaResult logic.
18858 2008-10-08  Jackson Harper  <jackson@ximian.com>
18860         * playlist.cpp|h: When we encounter invalid characters in an
18861         attribute try to patch them and reparse the document.
18863 2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18865         * mp3.h, mp3.cpp: Fix mpeg_frame_duration to use the static array of
18866           block sizes instead of hard-coded almost-matching values. Make
18867           mpeg_frame_length return a floating point value, and in ReadHeader
18868           calculate total duration using floating point. Fixes
18869           test-mp3-media-properties.html
18871 2008-10-08  Stephane Delcroix  <stephane@delcroix.org>
18873         * runtime.cpp: CAIRO_VERSION_XXX symbols no longer available in cairo
18874         1.8.0, changing the error msg.
18876 2008-10-08  Sebastien Pouliot  <sebastien@ximian.com>
18878         * xaml.cpp (XamlElementInstanceNative::SetProperty): Avoid SIGSEGV
18879         on bad XAML input when no (NULL) dependecy property is returned.
18881 2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18883         * pipeline.h, pipeline.cpp: Add a marker field to MediaFrame and make
18884           MediaMarker refcounted. Fix a couple of crashing leakfixes, and
18885           simplify cleanup code a tiny bit.
18887 2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18889         * audio-pulse.h: Remove unused method definition.
18891 2008-10-07  Jeffrey Stedfast  <fejj@novell.com>
18893         * animation.cpp (AnimationStorage::AttachToPrevStorage): Delete
18894         the old baseValue before allocating a new one.
18896         * mms-downloader.cpp (MmsDownloader::ProcessHeaderPacket): Need to
18897         delete dx_info when we're done with it. Also get rid of the
18898         unneeded parser pointer since we're just using this->parser
18899         anyway.
18901 2008-10-07  Sebastien Pouliot  <sebastien@ximian.com>
18903         * runtime.cpp (Surface::SetCursor): Don't create the GdkPixmap and
18904         GdkColor unless we need them. Unref the pixmap after the call to
18905         gdk_cursor_new_from_pixmap.
18907 2008-10-06  Jeffrey Stedfast  <fejj@novell.com>
18909         * pipeline.h (IMediaStream::dtor): Delete the frame. This prevents
18910         a MediaFrame leak-per-node whenever the queue is cleared.
18912         * pipeline.cpp (ASFMarkerDecoder::DecodeFrame): Free the
18913         frame->bufefr before updating it to point to a new malloc'd
18914         buffer.
18915         (ASFDemuxer::TryReadFrame): Delete the frame on error.
18916         (IMediaStream::PopFrame): After getting the node's frame, set the
18917         node->frame to NULL.
18919 2008-10-06  Larry Ewing  <lewing@novell.com>
18921         * media.cpp, media.h: rework image code to skip using a downloader
18922         when a cached image surface is available.  Fix a crash where
18923         multiple loading errors occur for a single image.  Rewrite
18924         existing SetSourceAsync ticks when the source changes again before
18925         the initial tick was processed.  
18927         The goal here is to greatly reduce the work we do in cases where
18928         existing sources are moved between images. Future work should
18929         consist of moving things to the ImageSource model internally.
18931 2008-10-06  Sebastien Pouliot  <sebastien@ximian.com> 
18933         * text.cpp (Glyphs::Layout): Handle NULL values coming from 
18934         GetGlyphInfo. Avoid crash in DRT #177 (not sure why it did 
18935         not come up before today or why it now fails anyway).
18937 2008-10-06  Jeffrey Stedfast  <fejj@novell.com>
18939         * brush.cpp (ImageBrush::TargetLoaded): Don't bother with g_atomic
18940         stuff, it's too expensive for what we need.
18941         (ImageBrush::TargetUnloaded): Same.
18943 2008-10-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18945         * dependencyobject.h, dependencyobject.cpp: Fix SLED10.
18947 2008-10-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18949         * pipeline.cpp: Reorganize some code.
18951 2008-10-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18953         * audio.cpp, audio.h: Access the Media directly to enqueue frames,
18954           avoiding the need for a tick call on the main thread. If audio
18955           underflowed and we don't have more data available, set buffer
18956           underflow flag on the media player.
18957         * playlist.cpp, playlist.h: Playlist::Parse: until the source has all
18958           the data available, return MEDIA_NOT_ENOUGH_DATA.
18959         * downloader.cpp, downloader.h: Remove RequestPosition methods, no
18960           longer needed.
18961         * mms-downloader.h, mms-downloader.cpp: Added Set|GetRequestedPts, and
18962           use that value to determine if we should seek or not.
18963         * mplayer.cpp, mplayer.h: Add a BufferUnderflow flag, set when
18964           audio/video needs more data, but the buffer is empty.
18965         * pipeline.cpp, pipeline.h: Media: Change how buffering works: we now
18966           have an in-memory buffer of demuxed frames (one queue for frames
18967           for each stream), and calculate buffer size from that.
18968           ProgressiveSource: open an additional file descriptor for writing,
18969           makes locking unnecessary. Change al io to return failure if there
18970           is not enough data, this allows us to remove all the
18971           blocking/waiting logic. MemoryQueueSource: push seeks to
18972           MmsDownloader, instead of waiting for MmsDownloader to check for
18973           pending seeks. FileSource: don't reinvent the wheel and use stdio
18974           to get buffered io instead of having buffering logic ourselves.
18975         * mp3.h, mp3.cpp: Implemented non-blocking reading to support buffer
18976           underruns correctly.
18977         * media.cpp: MediaElement: Retrieve buffer size from the demuxer
18978           instead of calculating it. Handle MEDIA_NOT_ENOUGH_DATA errors when
18979           trying to open media and retry later on.
18981 2008-10-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18983         * src.mdp: Updated.
18985 2008-10-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18987         * dependencyobject.cpp: Use atomic operations with
18988           objects_created|destroyed.
18990 2008-10-02  Chris Toshok  <toshok@ximian.com>
18992         * resources.cpp (glib_is_stupid): we need to cast value in order
18993         to delete it.
18995 2008-10-02  Geoff Norton  <gnorton@novell.com>
18997         * media.cpp,pipeline-ffmpeg.cpp,yuv-converter.cpp,mplayer.cpp:
18998         Add some headers needed to compile when #undef DEBUG
19000 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com> 
19002         * xaml.cpp:  Fix mixup between delete and g_free
19004 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com>
19006         * value.cpp: Fix == for KeyTime (padding too). Add comments and
19007         indent method correctly.
19009 2008-10-02  Jeffrey Stedfast  <fejj@novell.com>
19011         * xaml.cpp: Move the definition of XamlElementInfo to the top so
19012         that g++ doesn't complain about deleting an incomplete type inside
19013         the XamlElementInstance dtor. Also gets rid of other g++ compiler
19014         warnings.
19016         * list.cpp (List::InsertAfter): New convenience function to sort
19017         of balance the API.
19019         * font.cpp (FontFace::Load): Don't ref the default face, it is
19020         returned to us with a ref already.
19022 2008-10-02  Jackson Harper  <jackson@ximian.com>
19024         * xaml.cpp: Now that Info's aren't shared, Instance's can free
19025         them.  Also properties need to free their name.
19027 2008-10-02  Larry Ewing  <lewing@novell.com>
19029         * geometry.cpp (Geometry::OnSubPropertyChanged): move
19030         OnSubPropertChanged to Geometry to pick up transform changes until
19031         a better solution is devised.  Fixes updated
19032         test-clip-invalid-update.htm.
19034 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com>
19036         * value.cpp: Fix == for Duration and RepeatBehavior. We can't
19037         use memcmp to compare them since they include (unassigned)
19038         padding. Both structs overrides their == operator so we use that.
19040 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com> 
19042         * resources.cpp: Free the values (not only their content) when
19043         the hash table is destroyed. Correctly (delete) free the value
19044         when compiled against glib < 2.12 (e.g. SLED10).
19046 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com>
19048         * geometry.cpp: Remove last patch to GeometryGroup::Draw as this
19049         mess clipping. Add similar fill rule setting code in Geometry::Draw
19050         because Shape::Fill is not called for clipping (but the fill rule
19051         still applies). Comment both so I don't mess with them again :)
19053 2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
19055         * font.cpp (FontFace::LoadGlyph): We need to force the font size
19056         if we don't own it, since we don't know what the current size is
19057         set to.
19058         (FontFace::Kerning): Same.
19059         (FontFace::GetExtents): Here too.
19061 2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
19063         Attempt #2 at fixing bug #430766.
19065         * font.cpp (FontFace::LoadFontFace): Don't load non-scalable fonts
19066         - this helps us do better fallback for bug #430766.
19067         (FontFace::LoadDefaultFace): Do manual fallback of fonts. First
19068         try to use the Microsoft Lucida Sans font if available. If not,
19069         fall back to GNOME's Bitstream Vera Sans font. Then fallback to
19070         DejaVu Sans and finally to X.Org's Luxi Sans font (which doesn't
19071         render many of the glyphs in bug #430766, hence why it is last
19072         choice). If the user doesn't have the X.Org fonts, he's SOL.
19074 2008-10-01  Sebastien Pouliot  <sebastien@ximian.com>
19076         * value.h[.in],value.cpp: Fix operator == to work for non-DO and
19077         non-string values. This fix the issue of removing stuff from a
19078         ResourceDictionary (while a copy still exists in the underlying
19079         Collection).
19081 2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
19083         Attempt #1 at fixing bug #430766.
19085         * font.cpp (FontFace::LoadDefaultFace): Pass NULL as the families
19086         argument to LoadFontFace() so that we don't fail when matching the
19087         loaded family name.
19089 2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
19091         * font.cpp (FontFace::OpenFontDirectory): Now a static class
19092         method.
19093         (FontFace::LoadFontFace): New static method which tries to load an
19094         FT_Face given an FcPattern and a list of families.
19095         (FontFace::FontFace): No longer tries to load an FT_Face, instead
19096         we have it passed to us as an argument.
19097         (FontFace::LoadDefaultFace): New static method to load a global
19098         FT_Face representing the default system font.
19099         (FontFace::GetDefault): Instantiates a new FontFace using the
19100         global system default FT_Face.
19101         (FontFace::Load): Now takes only a TextFontDescription (much
19102         cleaner/simpler). If we are loading the default system font or if
19103         loading the requested font fails, simply return a new FontFace
19104         based on the global system default FT_Face.
19105         (TextFont::TextFont): Now takes fewer arguments (cleaner API,
19106         yay!).
19107         (TextFont::Load): Now only takes a TextFontDescription argument to
19108         make the API simpler/cleaner.
19109         (TextFontDescription::CreatePattern): Now public and takes a
19110         'sized' argument specifying whether or not the created pattern
19111         should include the size field. This is needed because TextFont
19112         caches based on all attributes while FontFace caches on everything
19113         but size. Also, don't include weight, width, or slant if our font
19114         family is the default (Portable User Interface is not allowed to
19115         have any of those attributes).
19116         (TextFontDescription::IsDefault): New method to decide if our
19117         family is the default or not.
19118         (TextFontDescription::GetFamilies): New convenience method to
19119         strsplit the family string into an array.
19120         (TextFontDescription::SetFamily): If the value "Portable User
19121         Interface" is set, set our family to NULL instead.
19123 2008-10-01  Sebastien Pouliot  <sebastien@ximian.com>
19125         * geometry.cpp (GeometryGroup::Draw): Make sure the original
19126         fill rule is still in effect at the end of drawing the group.
19128 2008-10-01  Chris Toshok  <toshok@ximian.com>
19130         * geometry.cpp (GeometryGroup::Draw): reinstate the call to
19131         cairo_set_fill_rule removed in r105643.  This fixes
19132         http://mapul.com/Tutorials.html.
19134 2008-10-01  Sebastien Pouliot  <sebastien@ximian.com>
19136         * shape.cpp: (Shape::InsideObject) Move cairo_save after the 
19137         extents.PointInside check since there was no cairo_restore
19138         if false was returned. Looks likely that false was not much
19139         returned (if ever).
19141 2008-09-30  Chris Toshok  <toshok@ximian.com>
19143         * stylus.cpp (Stroke::OnCollectionItemChanged): we need to
19144         recompute our bounds when an item (can only be a stylus point)
19145         changes its properties.  Fixes stroke bounds in the face of
19146         dragging text in inkjournal.
19148 2008-10-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19150         * audio-pulse.cpp, audio-pulse.h: Don't use callbacks with
19151           pa_stream_[cork|trigger|flush|drain] since the audio source might
19152           have gotten deleted by the time the callback is called.
19154 2008-09-30  Chris Toshok  <toshok@ximian.com>
19156         * dirty.cpp (Surface::ProcessDownDirtyElements): use
19157         AddDirtyElement instead of |= to set flags, since it might require
19158         dirty list manipulation.
19160 2008-09-30  Sebastien Pouliot  <sebastien@ximian.com>
19162         * xaml.cpp: Fix (again) the leaks in dependency_object_add_child, 
19163         this time with new/delete to make it work with non-DO.
19165 2008-09-30  Sebastien Pouliot  <sebastien@ximian.com> 
19167         * xaml.cpp: Better fix for the leaks in dependency_object_add_child.
19169 2008-09-30  Sebastien Pouliot  <sebastien@ximian.com>
19171         * xaml.cpp: Fix leak in dependency_object_add_child when AddWithError
19172         returns false.
19174 2008-09-30  Stephane Delcroix  <sdelcroix@novell.com>
19176         * downloader.cpp: fix the leak in validate_policy.
19178 2008-09-30  Sebastien Pouliot  <sebastien@ximian.com>
19180         * debug.cpp: Make sure allocated 'binary' is freed in every case
19181         inside addr2line_offset.
19183 2008-09-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19185         * audio-alsa.cpp: Close the pcm in the dtor, not in Close. Refcounting
19186           ensures that the dtor won't be called while playing or that we'll
19187           be playing destructed sources, but Close might be called at any
19188           time.
19190 2008-09-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19192         * pipeline.cpp: NullDecoder::DecodeAudioFrame: protected against int
19193           underflows and /0 errors.
19195 2008-09-29  Chris Toshok  <toshok@ximian.com>
19197         * dependencyobject.cpp (DependencyObject::RegisterAllNamesRootedAt):
19198         if during the course of traversing the tree, we come across a temp
19199         namescope, merge that up instead of recursing down even further.
19200         (DependencyObject::SetLogicalParent): only clear the namescope if
19201         we're merging ourselves into a parent namescope.
19203         * canvas.cpp (Canvas::Canvas): remove the temp namescope creation
19204         here.  the parser does it for us if we're parsing an element, and
19205         programmatically created objects don't seem to have them.
19207 2008-09-29  Jeffrey Stedfast  <fejj@novell.com>
19209         * media.cpp (MediaBase::GetDownloaderPolicy): New virtual method
19210         to get the download policy based on the uri. By default, returns
19211         MediaPolicy.
19212         (MediaElement::GetDownloaderPolicy): Return StreamingPolicy if
19213         mms://
19214         (MediaBase::SetAllowDownloads): Use GetDownloaderPolicy() instead
19215         of hardcoding mms:// check.
19216         (MediaBase::OnPropertyChanged): Same.
19218         * brush.cpp (ImageBrush::SetSurface): Remove previous hack.
19219         (ImageBrush::TargetLoaded): Call SetAllowDOwnloads(true) on our
19220         image once we have at least 1 target which is loaded in the visual
19221         tree.
19222         (ImageBrush::TargetUnloaded): Disallow image downloads once our
19223         loaded_count falls back to 0.
19224         (ImageBrush::AddTarget): Listen to the target's Loaded/Unloaded
19225         events.
19226         (ImageBrush::RemoveTarget): Remove our listeners for the Loaded
19227         and Unloaded events placed on the target object.
19229         * uielement.cpp (UIElement::ClearLoaded): Emit an UnloadedEvent.
19231         * dependencyobject.cpp (DependencyObject::SetValueWithError): Call
19232         AddTarget()/RemoveTarget() on DO property values as they are
19233         set/unset.
19234         (DependencyObject::AddTarget): New virtual method which gets
19235         called on DependencyObject property values when they are set on a
19236         target.
19237         (DependencyObject::RemoveTarget): Same but when unset.
19239         * media.cpp (MediaBase::SetAllowDownloads): New method to handle a
19240         state-change of allowing new downloads vs not.
19241         (MediaBase::OnLoaded): Call SetAllowDownloads(true).
19243 2008-09-29  Jeffrey Stedfast  <fejj@novell.com>
19245         * brush.cpp (ImageBrush::SetSurface): Update the image's Loaded
19246         state. Fixes some regressions introduced by moving the async
19247         downloading logic from MediaBase::SetSurface() into
19248         ImageBase::OnLoaded().
19250 2008-09-29  Sebastien Pouliot  <sebastien@ximian.com>
19252         * pipeline-ffmpeg.cpp: Free extradata, if allocated, on failure.
19254 2008-09-28  Chris Toshok  <toshok@ximian.com>
19256         * xaml.cpp (XNamespace::SetAttribute): don't both RegisterName and
19257         SetValue (NameProperty) - just set the NameProperty, it'll update
19258         the proper namescope automatically.
19259         (get_parent): remove.
19260         (set_parent): remove.  we no longer need to maintain a temporary
19261         chain while parsing.  there's also no need for set_parent(NULL)
19262         anywhere.
19263         (XamlElementInstance::TrySetContentProperty): if there was an
19264         error in DependencyObject::SetValueWithError or
19265         Collection::AddWithError, raise a parser error.
19266         (dependency_object_add_child): call
19267         Collection/ResourceDictionary::AddWithError, and raise a
19268         parser_error if it fails.  also, remove set_parent (NULL) calls.
19270         * dependencyobject.h,
19271         dependencyobject.cpp (DependencyObject::MergeNameScopes): remove.
19272         (DependencyObject::RegisterAllNamesRootedAt): this now takes a
19273         MoonError argument so we can signal when there's been a conflict.
19274         (DependencyObject::SetLogicalParent): this also now takes a
19275         MoonError argument, and this is where ALL the namescope merging
19276         code lives.  It's been removed from everywhere else.  Also, this
19277         change means we can no longer be setting/clearing the parent in
19278         xaml.cpp, as it destroys temp namescopes.
19280         * namescope.h, namescope.cpp (NameScope::MergeTemporaryScope): add
19281         a MoonError parameter, so we can communicate back an
19282         error (conflicting names) properly.
19283         (NameScope::Dump): new method.
19284         
19285         * collection.h, collection.cpp (Collection::AddWithError): new
19286         method, generate a binding for this instead of Add.  This allows
19287         us to check for name conflicts when a DOCollection is updated.
19288         (Collection::InsertWithError): same.  Also, this method has
19289         something quirky about it - it calls AddedToCollection *before*
19290         the collection is modified.  suck, but the logic in that code
19291         needs to be run before the change occurs.
19292         (Collection::AddedToCollection): add a MoonError arg so we can
19293         properly pass errors back up.
19294         (DependencyObjectCollection::RegisterAllNamesRootedAt): add the
19295         MoonError arg.
19296         (DependencyObjectCollection::AddedToCollection,
19297         DependencyObjectCollection::RemovedFromCollection): remove
19298         namescope handling from here.
19299         
19300         * animation.h,
19301         animation.cpp (KeyFrameCollection::AddedToCollection): track api
19302         change to Collection::AddedToCollection.
19304         * resources.h, resources.cpp: track changes to AddedToCollection,
19305         RegisterAllNamesRootedAt, and AddWithError.  Also, remove
19306         namescope handling code from here.
19308         * cbinding.cpp, cbinding.h, type-generated.cpp: regen.
19309         
19310 2008-09-28  Chris Toshok  <toshok@ximian.com>
19312         * geometry.cpp (Geometry::OnPropertyChanged): this method was
19313         never chaining up to DependencObject::OnPropertyChanged, which it
19314         must do for properties whose ownerType != Geometry.
19316 2008-09-28  Chris Toshok  <toshok@ximian.com>
19318         * media.cpp (TimelineMarkerCollection::Add): no need to check the
19319         element type of the value, by the time it makes it here it should
19320         already be the right type.
19322 2008-09-26  Jeffrey Stedfast  <fejj@novell.com>
19324         * media.cpp (MediaBase::OnLoaded): Logic moved here from
19325         SetSurface().
19326         (MediaBase::OnPropertyChanged): Check IsLoaded() to see if we
19327         should start the downloader yet.
19329         * xaml.cpp: Revert the hydrating check for SetSurface() from the
19330         previous commit. This is causing a bunch of failures :(
19332 2008-09-26  Jeffrey Stedfast  <fejj@novell.com>
19334         * xaml.cpp (XamlLoader::HydrateFromString): Properly initialize
19335         parser_info->hydrating and parser_info->hydrate_expecting based on
19336         whether or not we are really doing a HydrateFromString() vs
19337         CreateFromString().
19338         (create_element_info_from_imported_managed_type): Only
19339         SetSurface() if we are hydrating.
19340         (XamlElementInstanceNative::CreateItem): Same.
19341         (XamlElementInfoManaged::CreateElementInstance): Here too.
19342         (XamlElementInfoManaged::CreateWrappedElementInstance): And here.
19343         (XamlElementInfoManaged::CreatePropertyElementInstance): And here...
19344         (XamlElementInfoImportedManaged::CreateElementInstance): Same.
19345         (XamlElementInfoImportedManaged::CreateWrappedElementInstance): And here.
19346         (XamlElementInfoImportedManaged::CreatePropertyElementInstance): Here too.
19348 2008-09-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19350         * dependencyobject.cpp, dependencyobject.h: Make objects_created and
19351           objects_destroyed thread-safe. Added MOONLIGHT_OBJECT_TRACK_TYPE to
19352           track a specific type, might be useful when the id varies from run
19353           to run. Make Dispose public.
19354         * media.cpp: Reinitialize: Dispose the downloaded_file if we're being
19355           destructed.
19356         * pipeline.cpp, pipeline.h: Implement MemoryQueueSource::Dispose, and
19357           cleanup properly there instead of in the dtor. This breaks a
19358           circular reference between ASFPacket/ASFDemuxer/MemoryQueueSource.
19360 2008-09-26  Stephane Delcroix  <sdelcroix@novell.com>
19362         * downloader.cpp: use StreamingPolicy for streaming
19364 2008-09-25  Jeffrey Stedfast  <fejj@novell.com>
19366         * runtime.cpp (Surface::ShowFullScreenMessage): Don't use
19367         g_str_has_prefix() on NULL strings.
19369 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19371         * pipeline.cpp: RegisterMSCodecs: Don't duplicate that much code, and
19372           only print messages to stdout if MOONLIGHT_OVERRIDES=codecs=debug.
19374 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19376         * downloader.cpp: validate_policy: Fix boolean logic according to
19377           comment, fixes crash.
19379 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19381         * media.cpp: Plug one more leak.
19383 2008-09-25  Stephane Delcroix  <sdelcroix@novell.com>
19385         * downloader.cpp: neforce security policies on Open ()
19387 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19389         * pipeline.cpp, pipeline.h: Added Media::IsMSCodecsInstalled, and look
19390           for the mp3 codecs in libmscodecs.so, libmscodecs-mp3.so doesn't
19391           exist anymore.
19393 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19395         * pipeline-ui.cpp: AdaptToParentWindow: free the toplevels list.
19397 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19399         * downloader.cpp: Fix a potential leak.
19401 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19403         * dependencyobject.cpp: DependencyObject::RemoveListener: We need to
19404           delete the listener link, not only remove it. Plugs a leak.
19406 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19408         * audio-pulse.h, clock.h, layout.h, pipeline.h, template.h,
19409           yuv-converter.h: Sprinkle virtual on some destructors.
19411 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19413         * internal-downloader.h, file-downloader.h, mms-downloader.h: Fix
19414           another leak.
19416 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19418         * audio-pulse.cpp: Another leak plugged.
19420 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19422         * debug.cpp: Fix stack traces.
19424 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19426         * audio-pulse.cpp: Add a missing unref.
19428 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19430         * pipeline-ui.cpp: Store libmscodecs.so in ~/.mozilla/plugins.
19432 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19434         * pipeline-ui.cpp: Hush.
19436 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19438         * pipeline.cpp, pipeline.h: Added an abi_version to codec registration
19439           functions.
19441 2008-09-24  Aaron Bockover  <abockover@novell.com>
19443         * pipeline-ui.cpp: 
19444         * pipeline-ui.h: Redesigned the dialog to conform to the GNOME HIG 
19445         in regards to header messages, detail messages, spacing, padding, and
19446         button layout; use a GtkDialog instead of a GtkWindow, and take all
19447         input through the dialog's response signal; require the user to explicitly
19448         tell us that they never want to see the installer again instead of 
19449         assuming on cancel; fix crash when cancelling while downloading
19451 2008-09-24  Jeffrey Stedfast  <fejj@novell.com>
19453         * dependencyproperty.cpp (resolve_property_path): Fixicated.
19455 2008-09-24  Sebastien Pouliot  <sebastien@ximian.com>
19457         * pipeline.cpp: Fix a valgrind complaint when a NULL parameter is 
19458         given to g_file_test 
19460 2008-09-24  Jeffrey Stedfast  <fejj@novell.com>
19462         * dependencyproperty.cpp (resolve_property_path): Cleaned up the
19463         code, robustified, and fixed bug #429396.
19465 2008-09-24  Sebastien Pouliot  <sebastien@ximian.com>
19467         * dependencyproperty.cpp: Fix SIGSEGV when parsing something that
19468         does not exists.
19469         [Fix bug #429396]
19471 2008-09-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19473         * pipeline-ui.cpp, pipeline-ui.h: UI to download and install codecs.
19474         * pipeline-logo.cpp, pipeline-logo.inc: Renamed pipeline-logo.inc to
19475           pipeline-logo.cpp and made it an extern variable to avoid
19476           duplicating the entire image in the binary for every time we want
19477           to use it.
19478         * pipeline.cpp, pipeline.h: RegisterMSCodecs: Read the path to ms
19479           codecs from our configuration, and always register ms codecs first
19480           in the list. NullDecoder: fix a buffer overrun and update according
19481           to pipeline-logo changes.
19482         * moonlightconfiguration.cpp, moonlightconfiguration.h: Added: a class
19483           to store our configuration.
19484         * media.cpp: MediaElement::MediaOpened: if any of the streams is
19485           handled by a nulldecoder, it means we don't have ms codecs
19486           installed. If so, show the codec downloader UI.
19487         * Makefile.am, src.mdp: Updated.
19489 2008-09-23  Chris Toshok  <toshok@ximian.com>
19491         * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
19492         back out (#if false) this change for now.
19494 2008-09-23  Stephane Delcroix  <sdelcroix@novell.com>
19496         * runtime.h|cpp: Surface::GetSourceLocation()
19498 2008-09-23  Sebastien Pouliot  <sebastien@ximian.com>
19500         * uielement.cpp: Delete the temporary region before returning on an
19501         invisible element (common in defiwind).
19503 2008-09-22  Chris Toshok  <toshok@ximian.com>
19505         * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
19506         another case we hadn't addressed - if the object we're merging
19507         *from* doesn't have a namescope, we iterate over the entire tree,
19508         registering names into our (possibly temporary, if it didn't exist
19509         before) namescope.  Fixes firstfloorsoftware.com (bug #425268).
19511         * xaml.cpp (XamlElementInstanceNative::CreateItem): fix memory
19512         leak.
19514 2008-09-22  Jeffrey Stedfast  <fejj@novell.com>
19516         * dependencyobject.cpp (merge_namescope): Return the parent_ns so
19517         that our caller doesn't have to call FindNameScope() in case it
19518         was created.
19519         (DependencyObject::MergeTemporaryNameScopes): Adjust for above API
19520         change.
19522 2008-09-22  Larry Ewing  <lewing@novell.com>
19524         * geometry.cpp (Geometry::Draw): fix the transform brokeness that
19525         crept in.  Fixes test-geometry-transform.xaml
19527 2008-09-22  Michael Dominic K.  <mdk@mdk.am>
19529         * animation.cpp:
19530         * clock.cpp:
19531         * clock.h: 0-time animations are valid (as in: passing the timeline
19532         validation test) but do nothing. Fixes the clock11 test.
19534 2008-09-22  Michael Dominic K.  <mdk@mdk.am>
19536         * animation.cpp:
19537         * animation.h: Attach storage only once. Fixes a crash in clock21.html.
19539 2008-09-19  Jeffrey Stedfast  <fejj@novell.com>
19541         Fix for bug #427560
19543         * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
19544         Use FindNameScope() to get the scope to merge into, and only call
19545         this once - don't re-get it ever loop.
19547 2008-09-19  Jeffrey Stedfast  <fejj@novell.com>
19549         * dependencyobject.cpp (EventObject::AddXamlHandler): New method
19550         to add a handler from XAML so that we can force the listener token
19551         to be 0, like Silverlight does.
19553 2008-09-19  Michael Dominic K.  <mdk@mdk.am>
19555         * animation.cpp:
19556         * animation.h: Attach the storage to the prev storage on the
19557         partuclar AnimationClock/Storage Begin, not when the parent
19558         storyboard begins. That fixes: #412074 .
19560 2008-09-19  Stephane Delcroix  <sdelcroix@novell.com>
19562         * src/downloader.cpp:
19563         * src/downloader.h: DownloadAccessPolicy enum, used as dl.Open
19564         argument. Drop downloder_open method.
19565         * src/media.cpp:
19566         * src/playlist.cpp:
19567         * src/deepzoomimagetilesource.cpp:
19568         * src/text.cpp: use the new Open with the corresponding policy.
19570 2008-09-19  Sebastien Pouliot  <sebastien@ximian.com>
19572         * media.cpp: Reduce the pixbuffer leaks on popfly.com. The biggest
19573         offenders are gone now but it's still leaking in a few cases.
19575 2008-09-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19577         * pipeline.cpp: MediaFrame::~MediaFrame: Free the buffer before calling
19578           any custom Cleanup methods (allowing the Cleanup method to free
19579           buffer if g_free isn't the way to do it).
19581 2008-09-18  Jeffrey Stedfast  <fejj@novell.com>
19583         Fixes bug #410619.
19585         * dependencyobject.cpp (class EventLists): Init current_token to
19586         1. Popfly uses a token of 0 to mean no-listener (sorta like gtk
19587         apps use 0 to mean that a g_signal is not connected).
19589 2008-09-18  Geoff Norton  <gnorton@novell.com>
19591         * media.cpp: Stop leaking pixbuf loaders.
19593 2008-09-18  Sebastien Pouliot  <sebastien@ximian.com>
19595         * mp3.cpp: Need to g_strdup the "mp3" string or we could crash when
19596         g_free-ing it later.
19598 2008-09-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19600         * pipeline.cpp: Check for register_mswmv in libmscodecs.so, and honor
19601           RUNTIME_INIT_CODECS_DEBUG.
19602         * runtime.h, runtime.cpp: Add a runtime init flag to print codec debug
19603           info.
19605 2008-09-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19607         * src.mdp: Updated.
19608         * pipeline.cpp, pipeline.h: Add a generic null decoder, shows a
19609           moonlight logo for video and plays silence for audio.
19610         * mp3.cpp, mp3.h: Remove NullMp3Decoder, no longer needed.
19611         * mplayer.cpp: RenderFrame: take stride into account when blitting rgb
19612           data.
19613         * pipeline-logo.inc: Added.
19615 2008-09-17  Larry Ewing  <lewing@novell.com>
19617         * border.cpp:
19618         * control.cpp:
19619         * grid.cpp:
19620         * frameworkelement.cpp: start filling in InvalidateArrange and
19621         InvalidateMeasure calls.
19623         * panel.cpp:
19624         * panel.h:
19625         * canvas.h:
19626         * canvas.cpp (Canvas::OnCollectionItemChanged): move the ZIndex
19627         change handling here from panel since it is a Canvas property.
19629 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19631         * pipeline.h: Remove some dead code.
19633 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19635         * runtime.h, runtime.cpp: Instead of having a flag to enable ms codecs,
19636           add flags to disable both ffmpeg and ms codecs and include them by
19637           default.
19638         * pipeline.cpp: register_mscodecs: look for libmscodecsmp3.so too
19639           (until it gets integrated in libmscodecs.so), and register the mp3
19640           codec. Media::Initialize: Update according to runtime init flag
19641           changes, and always register null encoders.
19643 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19645         * pipeline.cpp, runtime.cpp, runtime.h: Add a runtime override to not
19646           delete downloaded media files.
19648 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19650         * dependencyobject.cpp: Add TODO.
19652 2008-09-17  Jackson Harper  <jackson@ximian.com>
19654         * xaml.cpp: Don't try setting the content prop in managed if there
19655         is no cdata content (we're just dealing with spaces).
19657 2008-09-17  Larry Ewing  <lewing@novell.com>
19659         * grid.cpp (Grid::MeasureOverride): fix the span accumulators to
19660         use the right index value.
19662 2008-09-17  Sebastien Pouliot  <sebastien@ximian.com>
19664         * frameworkelement.cpp: Fix moon-unit SIGSEGV when unreferencing
19665         SizeChangedEventArgs.
19667 2008-09-17  Michael Dominic K.  <mdk@mdk.am>
19669         * clock.cpp:
19670         * clock.h: Separate raising events from raising completed events. 
19671         In certain clock hierarchies this would cause us to emit completed event
19672         before raising animation setter events.
19674         * applier.cpp: Enabling the applier again.
19675         * applier.h: Animation resets don't have INSTANT precedence. The just 
19676         have higher precedence than normal animation setters.
19678 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19680         * audio-pulse.cpp: Remove stray characters.
19682 2008-09-16  Chris Toshok  <toshok@ximian.com>
19683         
19684         * dirty.h, dirty.cpp: add DirtyMeasure/DirtyArrange.
19686         * frameworkelement.h, frameworkelement.cpp
19687         (FrameworkElement::UpdateLayout): override
19688         UIElement::UpdateLayout, and if that base class method returns
19689         true, emit LayoutUpdatedEvent.
19691         * uielement.h, uielement.cpp (UIElement::InvalidateMeasure): add
19692         DirtyMeasure.
19693         (UIElement::InvalidateArrange): add DirtyArrange.
19694         (UIElement::DoMeasure): this should drive the measure process -
19695         needs filling in, though.
19696         (UIElement::DoArrange): this should drive the arrange
19697         process. same.
19698         (UIElement::UpdateLayout): change return type to bool.  call
19699         DoMeasure and DoArrange synchronously, and return true if we
19700         arrange.
19702         * runtime.cpp (Surface::Attach): call InvalidateMeasure on the new
19703         toplevel.
19705         * cbinding.h, cbinding.cpp: regen.
19707 2008-09-16  Larry Ewing  <lewing@novell.com>
19709         * clock.cpp: make AddTimeout take a priority. Make the render
19710         timeout slightly lower than default so that we process gdk events
19711         before rendering.
19713         * media.cpp: raise the priority of the media timeout so that it
19714         doesn't drop below default or the render tick.
19716 2008-09-16  Chris Toshok  <toshok@ximian.com>
19718         * dirty.h, dirty.cpp: add a priority queue-like setup for the
19719         dirty lists, where priority == level in the visual hierarchy.
19720         Processing the down dirty list proceeds from lower "priority" to
19721         higher, and the up dirty list proceeds from higher to lower.
19722         * runtime.h, runtime.cpp: use the new dirty lists.
19724         * uielement.h, uielement.cpp: add a visual_level field, which is
19725         updated when the element is added to the
19726         hierarchy (this->visual_level = parent->visual_level + 1).
19728 2008-09-16  Jackson Harper  <jackson@ximian.com>
19730         * xaml.cpp: keys should be a property of the instance.
19732 2008-09-16  Fernando Herrera  <fherrera@novell.com>
19734         * pipeline.cpp: Register MS codecs if MOONLIGHT_OVERRIDES
19735           has codecs=microsoft.
19736         * runtime.h: Do not default to RUNTIME_INIT_MICROSOFT_CODECS
19737           in RUNTIME_INIT_BROWSER.
19739 2008-09-16  Jackson Harper  <jackson@ximian.com>
19741         * xaml.cpp: Move cdata handling code into the content property
19742         setters, allow managed content property setters to set values from
19743         strings.
19745 2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19747         * audio-pulse.cpp: dlsym another method previously forgotten.
19749 2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19751         * multiscaleimage.h, textbox.h: Use quotes to include our headers.
19753 2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19755         * audio-alsa.cpp: Use dlopen/dlsym to access all alsa methods, and
19756           don't link with alsa anymore
19758 2008-09-16  Jb Evain  <jbevain@novell.com>
19760         * template.h (TemplateBinding): decorate with a SLVersion=2.
19762 2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19764         * audio-pulse.cpp: Use dlopen/dlsym to access all pa methods, and don't
19765           link with pulseaudio anymore. Hopefully fixes #425560.
19767 2008-09-16  Fernando Herrera  <fherrera@novell.com>
19769         * asf/asf-structures.h:
19770         * asf/asf.cpp:
19771         * asf/asf.h:
19772         * mplayer.h:
19773         * pipeline.h: Don't use relative paths in #includes.
19774         * Makefile.am: Add -Iasf
19776 2008-09-15  Michael Dominic K.  <mdk@mdk.am>
19778         * src/applier.cpp: Disabling the applier for now, it seems there are still
19779         some tiny 'issues' with it.
19781 2008-09-15  Chris Toshok  <toshok@ximian.com>
19783         * dependencyobject.h, dependencyobject.cpp: add real
19784         PropertyChange callbacks (so we can implement listeners without
19785         the listener being a dependencyobject - which is nice for
19786         TemplateBindings, which don't need all that overhead.)
19787         
19788         * template.h, template.cpp: switch over to using this new listener
19789         interface.
19791 2008-09-15  Chris Toshok  <toshok@ximian.com>
19793         * xaml.cpp (dependency_object_set_attributes): add the
19794         TemplateBinding to the item, not the containing template.
19796 2008-09-15  Larry Ewing  <lewing@novell.com>
19798         * applier.h: really disable the applier to make changes instant,
19799         fixes page turn and the test regressions.
19801         * applier.cpp: ref and unref the object to avoid crashes on
19802         popfly.
19804 2008-09-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19806         * src.mdp: Updated with new files.
19808 2008-09-12  Larry Ewing  <lewing@novell.com>
19810         * grid.cpp (Grid::Measure): accumulate colspan width and pass
19811         pixel size restrictions on to the children.
19813 2008-09-11  Michael Dominic K.  <mdk@mdk.am>
19815         * animation.cpp:
19816         * applier.cpp:
19817         * applier.h: Adding some defines for applier precedences + a way
19818         to instant apply with precedence == 0.
19820 2008-09-10  Michael Dominic K.  <mdk@mdk.am>
19822         * clock.cpp: Properly emit the Completed event after the properties have
19823         been applied.
19825 2008-09-09  Michael Dominic K.  <mdk@mdk.am>
19827         * animation.cpp:
19828         * applier.cpp: Removing debug messages, adding proper free code.
19830 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
19832         * animation.cpp:
19833         * animation.h:
19834         * applier.cpp: Do not set the values, instead move them to applier. 
19836 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
19838         * applier.cpp:
19839         * clock.cpp:
19840         * clock.h:
19841         * runtime.cpp:
19842         * runtime.h: Moving the Applier instance to TimeManager.
19844 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
19846         * runtime.cpp:
19847         * runtime.h: Adding Applier to Surface.
19849 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
19851         * applier.cpp:
19852         * applier.h: Adding a basic Flush method, totally bad for now.
19854 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
19856         * applier.cpp:
19857         * applier.h: Adding basic Apply function that applies all the changes
19858         to objects.
19860 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
19862         * applier.cpp:
19863         * applier.h: Adding basic method to add property to apply on object.
19865 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
19867         * Makefile.am:
19868         * applier.cpp:
19869         * applier.h: Introducing the applier helper class. Will be used 
19870         to apply property changes in order.
19872 2008-09-11  Jackson Harper  <jackson@ximian.com>
19874         * xaml.cpp: Move some of the content property setting logic into
19875         the XamlElementInstance's.
19877 2008-09-11  Stephane Delcroix  <sdelcroix@novell.com>
19879         * multiscaleimage.cpp: draw a pattern that should look like
19880         a MSI (currently still wrong)
19882 2008-09-10  Jeffrey Stedfast  <fejj@novell.com>
19884         * text.h (class Run): Apparently Run's TextProperty is internal in
19885         managed-land.
19887 2008-09-10  Larry Ewing  <lewing@novell.com>
19889         * border.cpp:
19890         * frameworkelement.cpp:
19891         * shape.cpp, shape.h:
19892         * canvas.cpp: update to pass the new more extensive tests.
19894 2008-09-10  Larry Ewing  <lewing@novell.com>
19896         * size.h:  Tweak to match updated tests.
19898 2008-09-09  Chris Toshok  <toshok@ximian.com>
19900         * style.h (class Setter): make ValueProperty's PropertyType
19901         'object' instead of 'Managed'.
19903         * template.cpp (FrameworkTemplate::AddXamlBinding): make this a
19904         little more bulletproof.
19905         (ControlTemplate::DuplicateObject): XamlTemplateBinding can return
19906         NULL, don't create a TemplateBindingNode (and add it to the list)
19907         in that case.
19909         * type.h.in (class Type): remove OBJECT - it gets autogenerated
19910         now.
19912         * xaml.cpp (start_element): we need to set inst->parent before
19913         setting the attributes, as the attributes might include a
19914         StaticResource (or TemplateBinding) that requires us to walk back
19915         up the tree.
19916         (XamlElementInfoNative::CreateElementInstance): create a
19917         XamlElementInstanceTemplate if the type is a subclass of
19918         FRAMEWORKTEMPLATE.
19919         (dependency_object_set_attributes): return out of this after
19920         adding the templatebinding (so we don't end up in the managed xaml
19921         loader code trying to set properties to "{TemplateBinding ...}"
19922         Also, if the property type is OBJECT, call into the loader (like
19923         we do with MANAGED), and fix the logic check on
19924         p->loader->SetAttribute in that case.
19926         * type.h, type-generated.cpp: regen.
19928 2008-09-09  Sebastien Pouliot  <sebastien@ximian.com>
19930         * xaml.cpp: Don't unref NULL collections. Fix regression when
19931         parsing invalid points (or doubles).
19933 2008-09-08  Chris Toshok  <toshok@ximian.com>
19935         * xaml.h, xaml.cpp: stopgap before jackson gets the completely
19936         managed approach to managed object parsing going.  a few key
19937         changes:
19939         1) xaml_load_managed_object takes an out bool
19940         parameter (is_dependency_object) so the managed code can create
19941         non-DO subclasses, and then the parser will pass that GCHandle
19942         back to managed code in set_attribute.
19944         2) added an add_child callback to the loader so that managed DO
19945         subclasses (and non-subclasses) can deal with collection
19946         properties.  theres no ContentProperty handled in managed code,
19947         yet.
19949 2008-09-08  Geoff Norton  <gnorton@novell.com>
19951         * audio-*.(cpp|h): The Alsa code requires us to join the play
19952         thread before we remove the audio sources otherwise we can 
19953         end up in a race accessing closed pcm's when shutting down.
19955 2008-09-08  Geoff Norton  <gnorton@novell.com>
19957         * audio.cpp: Ensure that we dont enter an infinite loop before
19958         we actually start playing a source.
19960 2008-09-08  Larry Ewing  <lewing@novell.com>
19962         * frameworkelement.cpp: make things 1.0 safe.
19964 2008-09-08  Larry Ewing  <lewing@novell.com>
19966         * frameworkelement.cpp (FrameworkElement::Arrange): rework to
19967         match some of the Measure logic
19969         * border.cpp:
19970         * canvas.cpp, canvas.h:
19971         * control.cpp, control.h: rework arrange implementation to match
19972         the measure logic and the current thinking on arrange.
19974         * uielement.cpp, uielement.h: expose render_size accessor.
19976 2009-09-08  Stephane Delcroix  <sdelcroix@novell.com>
19978         * tilesource.h|cpp: keep the source and tiles info on the c++ side
19980         * multiscaleimage.cpp: draw a cairo pattern instead of nothing
19982 2008-09-08  Larry Ewing  <lewing@novell.com>
19984         * grid.cpp: Chain collection changed up properly.
19986 2008-09-07  Larry Ewing  <lewing@novell.com>
19988         * thickness.h (struct Thickness): add +/-/- to thickness to clean
19989         up some of the other code.
19991         * rect.h: remove ShrinkBy now that we can negate thickness
19993         * size.h: clean things and make GrowBy stop at 0 now that we can
19994         deal with thickness addition outside of things.
19996         * canvas.cpp:
19997         * frameworkelement.cpp: 
19998         * control.cpp:
19999         * border.cpp: subtract the padding and border thickness from
20000         available size before passing it to children.  Handle some corner
20001         cases in measure with ugly hacks.
20002         
20003 2008-09-07  Larry Ewing  <lewing@novell.com>
20005         * canvas.cpp, canvas.h:         
20006         * control.cpp, control.h:
20007         * border.cpp:
20008         * grid.cpp:
20009         * panel.cpp, panel.h: refactor MeasureOverride to return the size of the
20010         actual contents.
20012         * frameworkelement.cpp: Make measure pre and post condition the
20013         output rather than doing it in the overrides themselves.
20015         * size.h: make sure min/max will never set a known size to NAN.
20017 2008-09-07  Chris Toshok  <toshok@ximian.com>
20019         * type.h.in: add OBJECT kind.
20021         * type.h, cbinding.h, cbinding.cpp, type-generated.cpp: regen.
20023 2008-09-06  Chris Toshok  <toshok@ximian.com>
20025         * value.cpp (Value::CreateUnref): don't use 'Foo foo = Foo(args);'
20026         - instead use 'Foo foo(args)'.  the former creates 2 objects to
20027         the latter's 1.
20029         * media.cpp (MediaElement::GetValue): same.
20031         * uielement.cpp: same.
20033         * error.h, error.cpp (class MoonError): make this a class instead
20034         of a struct, add a default ctor, remove Dispose and use ~MoonError
20035         instead, add FillIn methods that take a "code" as well as an
20036         ErrorType to support the parser.
20038         * dependencyobject.h, dependencyobject.cpp: some api cleanup - get
20039         rid of GError and use MonoError exclusively, move the internal
20040         EventLists/EventList types to the .cpp file.  Also, remove a few
20041         redundant methods on DependencyObject.  The hit at call sites is
20042         negligable (one additional line, perhaps), and the call sites are
20043         few and far between.
20045         * xaml.cpp (dependency_object_set_attributes)
20046         (dependency_object_set_property): call
20047         DependencyObject::SetValueWithError.
20049         * animation.cpp (KeyFrameCollection::GetKeyFrameForTime): look up
20050         the property here.  the DO api is gone.
20052 2008-09-06  Chris Toshok  <toshok@ximian.com>
20054         * grid.h, grid.cpp: flesh out some of the
20055         OnPropertyChanged/OnSubPropertyChanged/OnCollectionChanged stuff.
20056         Also add in a completely broken and unfinished MeasureOverride
20057         implementation.  It passes some of the tests, but not for the
20058         right reasons :) Lastly, move the GridUnitType enum to enums.h
20060         * enums.h: move GridUnitType here, and rename its elements to have
20061         a "GridUnitType" prefix.
20063         * xaml.cpp: track GridUnitType enum references.
20065         * dependencyproperty.g.cpp: fix up attached properties getters to
20066         return default values if there is one.
20068 2008-09-05  Jeffrey Stedfast  <fejj@novell.com>
20070         * text.cpp (TextBlock::OnPropertyChanged): TextAlignment doesn't
20071         actually change the lauout, so no need to set the dirty flag when
20072         it changes.
20073         (TextBlock::Layout): Updated to handle Silverlight 2.0 TextBlock's
20074         Padding property.
20075         (TextBlock::Paint): Same.
20077 2008-09-05  Larry Ewing  <lewing@novell.com>
20079         * uielement.cpp: use render bounds rather than bounds to determine
20080         if we have something to draw.
20082         * stylus.h, stylus.cpp: remove the EmptyBackground method.
20084         Fixes the annotation regression in page turn (again).
20085         
20086 2008-09-04  Larry Ewing  <lewing@novell.com>
20088         * uielement.h (class UIElement): generate managed accessors for
20089         the subtree hack.
20091 2008-09-04  Chris Toshok  <toshok@ximian.com>
20093         * xaml.cpp (dependency_object_add_child): add code here for
20094         FrameworkTemplate, call SetVisualTree with the child.
20096         * control.cpp (Control::Control): init bindings.
20097         (Control::~Control): unref applied_template and delete bindings.
20098         (Control::ApplyTemplate): make sure we return false here from a
20099         few error places (NULL template, a template with a NULL
20100         visual_tree.)
20102         * template.cpp (FrameworkTemplate::FrameworkTemplate): init
20103         visual_tree to NULL.
20104         (FrameworkTemplate::~FrameworkTemplate): unref visual_tree.
20105         (FrameworkTemplate::SetVisualTree): new method, set visual_tree
20106         and ref it.
20107         (ControlTemplate::DuplicateObject): we need to special case a
20108         couple of classes (collections, templates) in order to traverse
20109         them.. ugh.
20110         (ControlTemplate::Apply): if the visual_tree is null, don't try to
20111         copy it.
20113         * template.h (class FrameworkTemplate): add SetVisualTree method
20114         for the parser.
20116 2008-09-04  Larry Ewing  <lewing@novell.com>
20118         * uielement.cpp, uielement.h: new methods GetSubtreeObject and
20119         ElementAdded ElementRemoved.
20121         * dependencyobject.h: remove ContentAdded, ContentRemoved.
20122         
20123         * collection.cpp, collection.h: rename ContentWalker to
20124         VisualTreeWalker use GetSubtreeObject () rather than content for walking.
20126         * template.cpp, template.h: make Apply return the newly created
20127         tree.
20129         * panel.cpp, panel.h:
20130         * control.cpp, control.h: add template_root child that isn't
20131         hooked into the normal tree.  Start implementing ApplyTemplate and
20132         GetTemplateChild.
20134         * usercontrol.cpp: mess around with Content a little in making it
20135         use the ElementAdded ElementRemoved logic since UserControl
20136         doesn't really support template changes.
20137         
20138         * border.h: implement GetSubtreeObject. 
20140         * stylus.cpp:
20141         * dirty.cpp:
20142         * frameworkelement.cpp:
20143         * canvas.cpp, canvas.h: update for new treewalker.
20145 2008-09-04  Jeffrey Stedfast  <fejj@novell.com>
20147         * layout.cpp (TextLayout::Render): Added some new arguments which
20148         aren't actually used yet but will be eventually (assuming I
20149         continue with this approach).
20151         * textbox.cpp (TextBox::Paint): Don't bother painting the
20152         background, control does this for us.
20154 2008-09-04  Stephane Delcroix  <sdelcroix@novell.com>
20156         * tilesource.h, deepzoomimagetilesource.h|.cpp: move the dzits in its
20157         own file, implement the downloader.
20159 2008-09-03  Chris Toshok  <toshok@ximian.com>
20161         * dependencyobject.h: as much as i hate this, add
20162         GetCurrentValues() for the template stuff.
20164         * xaml.cpp: add XamlElementInstanceTemplate and initial support
20165         for TemplateBindings.
20167         * template.h, template.cpp: add a bunch of stuff for templates.
20169         * control.h, control.cpp: add OnLoaded and OnPropertyChanged to
20170         watch for template property changes, and apply the template in
20171         OnLoaded (or if we're already loaded).  Also, add accessors for
20172         TemplateProperty.
20174         * dependencyproperty.g.cpp: regen.
20176 2008-09-03  Larry Ewing  <lewing@novell.com>
20178         * frameworkelement.cpp (FrameworkElement::MeasureOverride): use
20179         the new Size methods.
20181         * border.cpp, border.h: add some initial (broken) rendering
20182         support, rework measure to use some of the new rect and size
20183         methods.
20185 2008-09-03  Jeffrey Stedfast  <fejj@novell.com>
20187         * textbox.cpp (TextBox::OnPropertyChanged): When the AcceptsReturn
20188         property chanegs, no need to re-layout or invalidate - according
20189         to my little test program, Silverlight 2 Beta 2 does not change
20190         the rendered text when this property changes - any newlines in the
20191         input text stay there.
20193 2008-09-03  Sebastien Pouliot  <sebastien@ximian.com> 
20195         * resources.cpp: (ContainsKey) Don't crash if a null key is
20196         supplied. (Remove) same. (Add) same.
20198 2008-09-03  Jeffrey Stedfast  <fejj@novell.com>
20200         * enums.cpp (initialize_enums): Map Horizontal and
20201         VerticalScrollBarVisibility properly.
20203         * textbox.cpp (TextBox::CalcActualWidthHeight): Removed, I don't
20204         think we need this for TextBox controls since their
20205         ActualWidth/Height aren't based on the text extents afaik.
20206         (TextBox::Paint): Implemented, sorta.
20208 2008-09-03  Chris Toshok  <toshok@ximian.com>
20210         * resources.cpp (ResourceDictionary::Clear): add pre-glib 2.12
20211         code.
20213 2008-09-03  Larry Ewing  <lewing@novell.com>
20215         * uielement.cpp, uielement.h: 
20216         (UIElement::FrontToBack): Make FrontToBack non-virtual and move
20217         the generic logic here.
20219         * control.cpp, control.h:
20220         * panel.cpp, panel.h: Remove ftb logic, everything is handled in
20221         uielement now.
20223 2008-09-03  Larry Ewing  <lewing@novell.com>
20225         * uielement.cpp, uielement.h: 
20226         * media.cpp, media.h:
20227         * panel.cpp, panel.h:
20228         * shape.cpp, shape.h: Add GetCoverageBounds virtual method
20229         to let elements compute their own opaque coverage.
20231 2008-09-03  Stephane Delcroix  <sdelcroix@novell.com>
20233         * multiscaleimage.h|.cpp: new MultiScaleImage type
20235 2008-09-02  Chris Toshok  <toshok@ximian.com>
20237         * resources.h, resources.cpp: constify this.
20238         (ResourceDictionary::Remove): fix g_hash_table_lookup_extended
20239         logic.
20241         * xaml.cpp (XamlElementInstance::LookupNamedResource): implement
20242         resource lookups.
20243         (dependency_object_set_attributes): add support for StaticResource
20244         lookups.  going to refactor all this to add support for
20245         TemplateBinding.
20247 2008-09-02  Jeffrey Stedfast  <fejj@novell.com>
20249         * eventargs.h (class CollectionChangedEventArgs): Implemented
20250         accessor methods to get/set the event arg values.
20252         * trigger.cpp (EventTrigger::SetTarget): Fixed to not need to
20253         strdup the event_name string and also updated to use an accessor
20254         method to prevent a possible NULL dereference.
20256 2008-09-02  Michael Dominic K.  <mdk@mdk.am>
20258         * animation.cpp:
20259         * animation2.h: Reworking the animation hookup storage fix. Checking for
20260         subclass is plain dumb. Just make an exception for ObjectAnimation.
20262 2008-09-02  Michael Dominic K.  <mdk@mdk.am>
20264         * animation.cpp: Fixing a problem in animation hookup 
20265         storage -- the type/kind that the animation generates has to be the subclass
20266         of the type/kind the target property is ready to accept.
20268 2008-09-01  Stephane Delcroix  <sdelcroix@novell.com>
20270         * multiscalesubimage.h: fixing code generation decorators
20272 2008-09-01  Stephane Delcroix  <sdelcroix@novell.com>
20274         * multiscalesubimage.h: new type
20276 2008-08-29  Jeffrey Stedfast  <fejj@novell.com>
20278         * layout.cpp (TextLayout::LayoutWrap): Keep track of when 'words'
20279         end so that we can fall back to that position as the line
20280         width (we don't want to include trailing spaces unless
20281         underlined).
20282         (TextLayout::Render): If the line width is greater than the
20283         allowable width, keep the line left-aligned like Silverlight does.
20285 2008-08-29  Chris Toshok  <toshok@ximian.com>
20287         * resources.cpp (ResourceDictionary::Clear): call
20288         Collection::Clear after we've cleared the hash so the hash will be
20289         empty in event handlers.
20291 2008-08-29  Jeffrey Stedfast  <fejj@novell.com>
20293         * layout.cpp (TextLayout::Layout): Do a slightly better job of
20294         keeping track of line->width - still not 100% correct.
20296 2008-08-28  Chris Toshok  <toshok@ximian.com>
20298         * Makefile.am: add resources.h and resources.cpp
20300         * xaml.cpp (class XamlElementInfo): add x:Key field (since this
20301         can't set a field on the object -- it might be a value type).
20302         (class XamlElementInstanceValueType): remove the empty
20303         implementation of SetAttributes.  we'll define it later.
20304         (XNamespace::SetAttribute): handle name/key behavior here.  Only
20305         allow one of them to be set on an object. Also, only attempt to
20306         set DependencyObject::NameProperty on an item if it's not a value
20307         type.
20308         (start_element): don't add value type children to their parent in
20309         start_element (as we haven't read the data that will allow us to
20310         create the value typed object.)  we need to push this off to the
20311         end_element handler.  also return early if there are problems
20312         setting attributes.
20313         (end_element_handler): if we're creating a value typed ELEMENT,
20314         add the child to the parent here.
20315         (dependency_object_add_child): add some ResourceDictionary
20316         validation here (if there's no key, etc), and actually call
20317         dict->Add(key, child).
20318         (XamlElementInstanceNative::CreateItem): don't crash if we failed
20319         to create an item.  (fixes one of the crashes caused by the
20320         ResourceDictionaryTests - ParseDouble)
20321         (XamlElementInstanceValueType::SetAttributes): call
20322         value_type_set_attributes.
20323         (value_type_set_attributes): stripped down version of
20324         dependency_object_set_attributes, as there are only a handful (is
20325         it really only x:Name and x:Key?) attributes we handle on value
20326         types.
20327         (globally): always call set_parent as opposed to
20328         ->SetLogicalParent.  we might not be dealing with a DO-subclass.
20330         * xaml.h (class XamlLoader): remove the explicit C api calls
20331         xaml_create_from_file, xaml_create_from_str, and
20332         xaml_hydrate_from_str.  Replace them with instance methods on
20333         XamlLoader (CreateFromFile, CreateFromString, and
20334         HydrateFromString, respectively) Add WithError variants of the
20335         these, and have the generator generate bindings for them so we can
20336         throw parse exceptions into managed code.
20338         * error.h (struct MoonError): add XAML_PARSE_EXCEPTION.
20340         * value.h.in (struct Value): add Is overload with
20341         additional_types.
20343         * uielement.h: include resources.h.
20345         * collection.h, collection.cpp: change the api in a few ways to
20346         make ResourceDictionary easier to write - make Count virtual,
20347         remove all the type checks for element type from methods, and add
20348         that check to Collection::CanAdd.  ResourceDictionary overrides
20349         that and always returns true.  Make Clear return a bool.
20351         * animation.h, animation.cpp: track collection changes.
20353         * stylus.h, stylus.cpp: track Collection::CanAdd change, and move
20354         implementations to the .cpp file.
20356         * resources.h, resources.cpp: split out the code for
20357         ResourceDictionary here.  ResourceDictionary is an odd fish.  In
20358         1.0 land, it provides the same api as a collection, and things can
20359         be looked up by name via findName.  In 2.0 land, items in
20360         ResourceDictionaries have to have either an x:Key or x:Name
20361         attribute.  If both are lacking it's an error.  If the former is
20362         specified you can only get at it through Resources["name"].  If
20363         the latter is specified, you can use both Resources["name"] or
20364         findName("name").
20366         * dependencyobject.cpp, dependencyobject.h: add Is and GetType
20367         overloads that take additional_types.  Make IsValueValid take an
20368         additional_types parameter too.  Expose ClearValue to managed code
20369         so we can actually clear the Value* to null without using
20370         the (unsupported from the generator) old method of passing
20371         IntPtr.Zero (Value* now maps to "ref Value" in generated
20372         pinvokes.)  Lastly add a SetValueWithError method so we can throw
20373         exceptions in managed code.
20375         * border.h: add defaults for Padding and BorderThickness.
20377         * border.cpp: simplify things a bit since we don't have to worry
20378         about padding/border thickness being NULL.
20380         * depenencyproperty.g.cpp, value.h, type-generated.cpp: regen.
20382 2008-08-28  Jeffrey Stedfast  <fejj@novell.com>
20384         * layout.cpp (TextLayout::Render): Respect TextAlignment.
20386 2008-08-26  Chris Toshok  <toshok@ximian.com>
20388         * dependencyobject.cpp (DependencyObject::SetLogicalParent): get
20389         rid of this g_assert, it's crashing the moon-unit tests.  just
20390         warn and bail.
20391         (DependencyObject::SetSurface): don't do anything if the surface
20392         is already set to the same value.
20394         * animation.cpp (Storyboard::SetSurface): don't do anything if
20395         GetSurface() == surface.
20397         * text.cpp (Glyphs::SetSurface): same.
20399         * uielement.cpp (UIElement::SetSurface): same.
20401         * brush.cpp (ImageBrush::SetSurface): same.
20403         * media.cpp: same.
20405         * collection.cpp (DependencyObjectCollection::SetSurface): same.
20406         (Collection::RemoveAtWithError): this (against logic) raises
20407         ArgumentException, not ArgumentOutOfRangeException.
20409 2008-08-25  Chris Toshok  <toshok@ximian.com>
20411         * rect.h, rect.cpp: rename the w/h fields to width/height, since
20412         every other instance of similar fields are named that.
20414         * value.cpp, border.cpp, window-gtk.cpp, control.cpp, runtime.cpp,
20415         uielement.cpp, geometry.cpp, shape.cpp, frameworkelement.cpp,
20416         brush.cpp: track rect change.
20418 2008-08-25  Chris Toshok  <toshok@ximian.com>
20420         * border.h, border.cpp: implement ArrangeOverride, and fix up some
20421         test failures in MeasureOverride.
20423         * frameworkelement.cpp (FrameworkElement::Arrange): it seems we
20424         also set the desired size here (to the final size we get from
20425         ArrangeOverride.)
20427 2008-08-25  Michael Dominic K.  <mdk@mdk.am>
20429         * animation2.h: Advertise self (ObjectAnimationUsingKeyFrames) as providing
20430         proper kinds of values (TYPE::DEPENDENCY_OBJECT).
20432 2008-08-25  Michael Dominic K.  <mdk@mdk.am>
20434         * animation.cpp:
20435         * animation2.h: Properly guard 2.0 stuff with if SL_2_0 .
20436         Also adding validation methods.
20438 2008-08-25  Michael Dominic K.  <mdk@mdk.am>
20440         * animation.cpp:
20441         * animation2.h: Base work for ObjectAnimationUsingKeyFrames 
20442         implementation.
20444 2008-08-24  Geoff Norton <gnorton@novell.com>
20445         
20446         * media.h: Add a new overload to set the SourceProperty from managed land.
20447         * media.cpp: Support async source changing downloader creation for ImageSource
20448         * cbinding.(cpp|h): Regen
20450 2008-08-23  Geoff Norton  <gnorton@novell.com>
20452         * mplayer.cpp: Only ref the audio if we have it as well.
20454 2008-08-23  Geoff Norton  <gnorton@novell.com>
20456         * bitmapimage.h: Add to the build
20458 2008-08-23  Geoff Norton  <gnorton@novell.com>
20460         * cbinding.cpp|h, dependencyproperty.g.cpp, type-generated.cpp,
20461           type.h, value.h: Regenerated
20462         * downloader.cpp|h: Return failure state for downloader->GetResponse
20463         * runtime.h: Generate C bindings for IsMainThread.
20465 2008-08-23  Larry Ewing  <lewing@novell.com>
20467         * animation.cpp, animation.h: make ControlPoint1 and ControlPoint2
20468         properties.  Move the quadratic generation into
20469         GenerateQuadratics.
20471         Regenrate and remove the managed wrappers.
20472         
20473 2008-08-23  Larry Ewing  <lewing@novell.com>
20474         
20475         * xaml.cpp (value_from_str): fixed crossed commits with Auto
20476         parsing.
20478         * collection.cpp (ContentWalker::Step): add some debug logic to
20479         protect against an error case for now.
20481 2008-08-23  Chris Toshok  <toshok@ximian.com>
20483         * Makefile.am (libmoon_la_SOURCES): add cornerradius.cpp
20485         * thickness.h, thickness.cpp: rename thickness_from_str to
20486         Thickness::FromStr, and make it return a bool instead of a
20487         pointer, as Point and Rect do.
20489         * cornerradius.h, cornerradius.cpp: add CornerRadius::FromStr.
20491         * xaml.cpp (value_from_str): use the CornerRadius parsing method,
20492         and track the change to the Thickness one.
20494 2008-08-23  Larry Ewing  <lewing@novell.com>
20496         * xaml.cpp (value_from_str): quick auto hack so we can test
20497         controls more.
20499         * runtime.cpp (RenderNode::Render): fix typo in merge
20501 2008-08-23  Larry Ewing  <lewing@novell.com>
20503         * uielement.cpp, uielement.h: move basic ftb logic here from
20504         panel.  Start storing extents allong with bounds.
20506         * panel.cpp, panel.h: move most ftb logic to uielement.cpp.  Use
20507         content walker.
20509         * stylus.cpp, stylus.h: rework the PostRender hack by chaining up
20510         to uielement in front_to_back mode unconditionaly.
20512         * runtime.cpp, runtime.h: make RenderNode members private and move
20513         the ftb override logic here and out of the PostRender call.
20514         
20515         * shape.cpp|h, frameworkelement.cpp|h, media.cpp, text.cpp: store
20516         extents.
20518         * control.cpp, control.h: implement basic functionality.
20520 2008-08-22  Chris Toshok  <toshok@ximian.com>
20522         * color.h, rect.h, point.h: remove the copy ctors.  we don't need
20523         them, and they were causing crashes (!)
20525 2008-08-22  Chris Toshok  <toshok@ximian.com>
20527         * frameworkelement.cpp (FrameworkElement::MeasureOverride): always
20528         take the margins into account, even when we're childless.
20530         * panel.h, panel.cpp: add MeasureOverride which always returns
20531         0,0.
20533         * border.h (class Border): add property accessors for everything.
20535         * border.cpp (Border::MeasureOverride): new implementation.
20537         * value.h.in, value.cpp: add CornerRadius support, and remove the
20538         unnecessary casts (and in the Rect/Point cases, calls to the copy
20539         ctor)
20541         * value.h, dependencyproperty.g.cpp: regenerate.
20542         
20543 2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
20545         * textbox.h (class SelectionChangedEventArgs): Added
20546         Text/SelectionChangedEventArgs.
20548 2008-08-22  Chris Toshok  <toshok@ximian.com>
20550         * frameworkelement.cpp (FrameworkElement::Measure): instead of
20551         always calling MeasureOverride here, we call the registered manage
20552         callback if there is one.  So, we proxy into managed code here,
20553         invoke the virtual method FWE.MeasureOverride, and if there's no
20554         subclass override (or if it chains up for some reason), we end up
20555         in MeasureOverride by virtue of the pinvoke in
20556         FrameworkElement.cs.
20557         (FrameworkElement::MeasureOverride): move all the logic for the
20558         default MeasureOverride implementation here.  it's pretty
20559         braindead - takes margins into account, measures our child, makes
20560         sure our size is between Min/Max.  That's about it.
20561         (FrameworkElement::Arrange): same drill as ::Measure.
20562         (FrameworkElement::ArrangeOverride): still (incorrectly) return
20563         finalSize.
20565 2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
20567         * textbox.h: Made ArrangeOverride() virtual and added
20568         SelectionChangedEvent.
20570 2008-08-22  Chris Toshok  <toshok@ximian.com>
20572         * dependencyobject.cpp (DependencyObject::GetContent): guard
20573         against the value being NULL.
20575 2008-08-22  Larry Ewing  <lewing@novell.com>
20577         * collection.cpp (ContentWalker::ContentWalker): make
20578         ContentWalker understand directions (Logical, ZForward, ZReverse).
20580 2008-08-22  Larry Ewing  <lewing@novell.com>
20582         * runtime.cpp (Surface::PaintToDrawable): restore the x/y offsets
20583         when drawing in the image backend.
20585 2008-08-22  Chris Toshok  <toshok@ximian.com>
20587         * frameworkelement.h, frameworkelement.cpp: add in the layout foo
20588         - provide implementations of Measure and Arrange that just call
20589         MeasureOverride and ArrangeOverride.  These are virtual and meant
20590         to be overridden either in unmanaged code (by simply overriding
20591         them), or in managed code (RegisterManagedOverrides is called in
20592         FWE.Initialize.)  Decorate the class with @CallInitialize so the
20593         managed ctor calls it.
20595         * uielement.h, uielement.cpp: remove the PInvoke/CBinding for the
20596         ctor, and add the layout methods.  Measure and Arrange are pure
20597         virtual.
20599         * cbinding.h, cbinding.cpp, type-generated.cpp: regen.
20600         
20601 2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
20603         * textbox.cpp (TextBox::Layout): Implemented rough layout.
20605         * layout.cpp (TextRun::TextRun): New ctor for use with TextBox.
20607 2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
20609         * textbox.cpp (TextBox::ArrangeOverride): Added.
20611         * frameworkelement.h (class FrameworkElement): Changed default
20612         Width/Height values to NAN.
20614         * textbox.cpp: Initial implementation of TextBox, Layout and
20615         Rendering logic still missing.
20617 2008-08-22  Larry Ewing  <lewing@novell.com>
20619         * usercontrol.cpp (UserControl::OnPropertyChanged): make sure the
20620         values are there.
20622 2008-08-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20624         * audio-alsa.cpp: Call Underflowed () when we run out of data.
20626 2008-08-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20628         * mplayer.h, mplayer.cpp: Remove the Eof state and add two separate
20629           VideoEnded and AudioEnded states. Implement handling of VideoEnded
20630           state, and call MediaElement::MediaEnded when both states have been
20631           reached.
20632         * media.h, media.cpp: Rename AudioFinished to MediaFinished and handle
20633           all media finished (both video and audio) logic there.
20635 2008-08-21  Larry Ewing  <lewing@novell.com>
20637         * uielement.cpp (UIElement::ComputeLocalTransform): clean up
20638         accumulated transform logic.  Keep the parent TransformFor out of
20639         the local_transform.
20641 2008-08-21  Larry Ewing  <lewing@novell.com>
20643         * uielement.cpp (UIElement::Dispose): add logic removed from
20644         panel.
20646         * dirty.cpp (Surface::PropagateDirtyFlagToChildren): use
20647         ContentWalker.
20649 2008-08-21  Chris Toshok  <toshok@ximian.com>
20651         [ fixes annotations not showing up in pageturn due to a NULL
20652         background on the ink presenter ]
20654         * stylus.h, stylus.cpp (class InkPresenter): add an override of
20655         EmptyBackground().  If we have a non-empty stroke bounding
20656         rectangle, return false.  Otherwise fall back to
20657         Panel::EmptyBackground.
20659         * panel.h, panel.cpp (class Panel): add EmptyBackground() virtual
20660         method.  the panel implementation returns true if GetBackground()
20661         returns NULL.  Use this virtual method instead of an explicit
20662         GetBackground() call in Panel::FrontToBack.
20664 2008-08-21  Jeffrey Stedfast  <fejj@novell.com>
20666         * enums.cpp: Added ScrollBarVisibility enum
20668         * text.cpp (TextBlock::OnPropertyChanged): Er... we need to
20669         invalidate if the TextWrappingProperty changes too.
20671 2008-08-21  Chris Toshok  <toshok@ximian.com>
20673         * border.h, border.cpp, cornerradius.h: add new
20674         types.
20676         * Makefile.am: add border/cornerradius to the file list.
20678         * type.h, value.h, cbinding.cpp, cbinding.h, type-generated.cpp,
20679         dependencyproperty.g.cpp: regen.
20681 2008-08-21  Jeffrey Stedfast  <fejj@novell.com>
20683         * textbox.h (class TextBox): The TextBox namespace should be
20684         System.Windows.Controls
20686         * stackpanel.h (class StackPanel): #include panel.h
20688 2008-08-21  Jeffrey Stedfast  <fejj@novell.com>
20690         * textbox.h: Initial implementation of the TextBox class (just
20691         stubs atm).
20693         * value.h.in (struct Value): Don't use int32_t or uint64_t,
20694         etc. Be consistent and use the glib types.
20696         * layout.cpp (TextLayout::Layout): Fixed
20697         LineStackingStrategy/LineHeight issues. If we are using
20698         BlockLineHeight & the specified LineHeight is not Auto, then we
20699         need to use 0.0 as the descender.
20701 2008-08-21  Chris Toshok  <toshok@ximian.com>
20703         * animation.h: make KeyFrame::Get/SetKeyTime pure virtual, and add
20704         accessors to all the subclasses.  They're autogenerated from the
20705         respective class's DP's.
20707         * animation2.h: same.
20709         * animation.cpp: remove KeyFrame::Get/SetKeyTime implementations.
20711         * control.h (class Control): add some more GenerateAccessors.
20713         * control.cpp: and remove the manual implementations here.
20715         * dependencyproperty.g.cpp: regen.
20717 2008-08-21  Larry Ewing  <lewing@novell.com>
20719         * animation.cpp (KeyFrameCollection::OnSubPropertyChanged): remove
20720         debug spew.
20722         * xaml.cpp (value_from_str): unref the collections we create after
20723         setting them.
20725 2008-08-21  Jackson Harper  <jackson@ximian.com>
20727         * xaml.cpp: Can't rely on the type for getting a managed element's
20728         name, we have to pull it from the element name provided to the
20729         XamlElementInfo.
20731 2008-08-21  Chris Toshok  <toshok@ximian.com>
20733         * dependencyobject.cpp (DependencyObject::HasProperty): pass
20734         additional_types to IsSubclassOf.
20736         * type.h, type.cpp: add IsSubclassOf variants that take
20737         additional_types.  Fixes lookup problems of non-custom DP's on
20738         managed subclasses.
20740 2008-08-21  Chris Toshok <toshok@ximian.com>
20742         * value.h.in (struct Value): make all single arg primitive value
20743         typed ctors "explicit" so c++ won't do any magic implicit
20744         conversion from value type to Value.
20746         * value.h: regen
20748         * runtime.cpp (Surface::ShowFullScreenMessage): need to create the
20749         Value()'s explicitly.
20751         * collection.cpp (DoubleCollection::FromStr): same.
20753 2008-08-20  Larry Ewing  <lewing@novell.com>
20755         * dependencyobject.cpp (create_temp_namescope): don't leak the
20756         temporary namescope we create.  Also don't create it over and over
20757         again.
20759 2008-08-20  Larry Ewing  <lewing@novell.com>
20761         * dependencyobject.cpp|h: Add ContenAdded and ContentRemoved
20762         virtual methods so that we can begin to simplify content rules.
20764         * dirty.cpp (Surface::PropagateDirtyFlagToChildren): use
20765         GetContent to handle the children in a generic way.
20767         * uielement.cpp|h: start moving generic uielement content logic
20768         here.  Implement OnLoaded and deal with content directly.
20769         
20770         * canvas.cpp|h: remove obsolete methods. Move most of zindex
20771         property logic from panel to here.
20773         * panel.cpp|h: move ZIndex logic to canvas and move OnLoaded logic
20774         to uielement.
20776         * control.cpp|h: generate accessors, start remove OnLoaded and
20777         SetSurface.
20779         * dependencyproperty.g.cpp: regen.
20780         
20781 2008-08-20  Chris Toshok  <toshok@ximian.com>
20783         * text.cpp, text.h: generate accessors for Glyph properties.
20785         * geometry.cpp, grid.cpp, media.cpp, panel.cpp, runtime.cpp,
20786         shape.cpp, stylus.cpp, transform.cpp, trigger.cpp, uielement.cpp,
20787         xaml.cpp: make another pass through files switching to C++
20788         accessors from GetValue(FooClass::FooProperty)->AsFoo().
20790         * dependencyproperty.g.cpp: regen.
20792 2008-08-20  Chris Toshok  <toshok@ximian.com>
20794         * animation.cpp, animation.h, brush.cpp, brush.h, canvas.cpp,
20795           canvas.h, clock.cpp, clock.h, collection.cpp, collection.h,
20796           frameworkelement.cpp, frameworkelement.h, geometry.cpp,
20797           geometry.h, grid.h, media.cpp, media.h, namescope.cpp,
20798           namescope.h, panel.cpp, panel.h, playlist.cpp, shape.cpp,
20799           shape.h, stackpanel.h, style.h, stylus.cpp, stylus.h, text.cpp,
20800           text.h, transform.cpp, transform.h, trigger.h, uielement.cpp,
20801           uielement.h, xap.cpp, xap.h:
20803           mostly, decorate almost all DependencyProperties with
20804           @GenerateAccessors, add in lots of new ones that weren't present
20805           before (to the .h), and remove all those implementations from
20806           the .cpp files.
20808           Also, don't use #if SL_2_0 in the headers.  we can't depend on
20809           that being defined (especially once we install).  Any
20810           2.0-specific behavior needs to be done in the .cpp files.  There
20811           are still a few things that are wrong wrt
20812           this (dependencyproperty.g.cpp needs to define the DP's
20813           regardless of version, they can just be NULL in the 1.0 case for
20814           2.0 properties, for instance.)
20816         * cbinding.cpp, cbinding.h, dependencyproperty.g.cpp: regen
20818 2008-08-20  Chris Toshok  <toshok@ximian.com>
20820         * uielement.h (ClearLoaded): use &=, not |=, here.  fixes tests.
20822 2008-08-20  Jeffrey Stedfast  <fejj@novell.com>
20824         * layout.cpp (TextLayout::Layout): Updated to take a
20825         TextLayoutHints argument for providing hints like text alignment
20826         and line stacking/height.
20828         * text.cpp (class TextBlock): Updated a bit for Silverlight
20829         2.0. All of the properties added in 2.0 are now there, although
20830         only 2 of them are respected at the moment (line stacking strategy
20831         & line height).
20833         * enums.cpp|h: Added LineStackingStrategy and TextAlignment enums.
20835 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20837         * audio.cpp: NULL out the player instance after deleting it.
20839 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20841         * audio-pulse.cpp, audio-pulse.h: Close: Detect if Close has been
20842           called and if so, do nothing.
20844 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20846         * audio.cpp: We only support 1 or 2 channels for the moment.
20848 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20850         * media.cpp, media.h: Fix buffering progress to take into account that
20851           the first pts isn't necessarily 0 (happens for live media).
20853 2008-08-20  Chris Toshok  <toshok@ximian.com>
20855         * runtime.cpp (Surface::HandleMouseEvent): make sure not to emit
20856         Focus events on click in a 1.0 context.
20858 2008-08-20  Jackson Harper  <jackson@ximian.com>
20860         * xaml.cpp|h: Setting properties requires the xaml namespace so it
20861         can lookup managed types. TODO: It also needs the default
20862         assembly, but I am thinking of moving that to the loader.
20864 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20866         * mplayer.cpp: Properly ref/unref the AudioSource.
20868 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20870         * media.h: Remove G_BEGIN/END_DECLS and two unnecessary #includes.
20872 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20874         * media.cpp, media.h, runtime.cpp: Remove media_init, just make
20875           runtime_init call Media::Initialize directly.
20877 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20879         * media.h, media.cpp: Remove media_element_advance_frame from header,
20880           no need to make it public.
20882 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20884         * mplayer.cpp: AdvanceFrame: only return true if we actually processed
20885           any frames. SeekCallback: clear the queue of audio frames as well.
20886         * media.h, media.cpp: Removed SetPreviousPosition, no longer needed.
20887           Don't change previous_position while we're seeking, and don't make
20888           it go backwards.
20889         * audio.cpp, audio.h: Added AudioSource::ClearFrames.
20891 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20893         * runtime.cpp: Fix 1.0 build. No idea if the fix is correct.
20895 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20897         * cbinding.cpp, cbinding.h, xap.h: Mark Xap as 2.0 only for the
20898           generator.
20900 2008-08-20  Stephane Delcroix  <sdelcroix@novell.com>
20902         * canvas.h, canvas.cpp:
20903         * uielement.h, uielement.cpp: move the ZIndexProperty and Get/Set-ers
20904         from uielement to Canvas. Drop the non-static Get/Set-Top/Left ()
20906         * panel.cpp, collection.cpp: related changes.
20908 2008-08-20  Stephane Delcroix  <sdelcroix@novell.com>
20910         * uielement.h: change the generator instructions so the 
20911         NameProperty is generated in FrameworkElement.
20913 2008-08-19  Chris Toshok  <toshok@ximian.com>
20915         * dependencyobject.h,
20916         dependencyobject.cpp (DependencyObject::GetContent): ripped this
20917         out of a hack, should prove useful for the work coming up.
20919 2008-08-19  Chris Toshok  <toshok@ximian.com>
20921         * runtime.cpp (Surface::FocusElement): fix the IsTabStop check.
20923 2008-08-19  Chris Toshok  <toshok@ximian.com>
20925         * control.h, control.cpp (class Control): generate a binding for
20926         Control::InitializeFromXaml and drop the 2 manual C bindings.
20928         * cbinding.h, cbinding.cpp: regen.
20930 2008-08-19  Chris Toshok  <toshok@ximian.com>
20932         * xap.h, xap.cpp (class Xap): rename xap_unpack to Xap::Unpack.
20933         autogenerate our binding for it.
20935         * cbinding.h, cbinding.cpp: regen.
20937 2008-08-19  Chris Toshok  <toshok@ximian.com>
20939         * eventargs.h, eventargs.cpp (class Keyboard): make this more of a
20940         real class, and remove the implementation of
20941         keyboard_get_modifiers.  instead, provide a c++ method (both a
20942         getter and setter) and annotate the Getter with
20943         GenerateCBinding/GeneratePInvoke.
20945         * collection.h, collection.cpp: reorder the class decls (why do
20946         people put private first?) and make CollectionIterator a real
20947         class, with annotated methods.  Also, move
20948         double_collection_from_str and point_collection_from_str to
20949         DoubleCollection::FromStr and PointCollection::FromStr
20950         respectively.  move double_garray_from_str out of here (to
20951         utils.h/utils.cpp)
20953         * utils.h, utils.cpp: new (hopefully last) home for
20954         double_garray_from_str.
20956         * point.h, point.cpp (struct Point): rename point_from_str to
20957         Point::FromStr.  no reason to have a C method for that.
20959         * rect.h, rect.cpp (struct Rect): same thing with Rect::FromStr.
20961         * window-gtk.h (class MoonWindowGtk): mark the ctor and
20962         GetWidget() with GenerateCBinding/GeneratePInvoke.
20964         * window-gtk.cpp: and remove their implementations.
20966         * xaml.cpp: convert over to all the new ::FromStr methods.
20968         * thickness.cpp: track new home of double_garray_from_str.
20970         * cbinding.h, cbinding.cpp: regen.
20972 2008-08-19  Chris Toshok  <toshok@ximian.com>
20974         * uielement.h, uielement.cpp: make almost all data
20975         private/protected.  Add a couple of methods to aid in
20976         this (IsLoaded, ClearLoaded, TransformPoint).  Get rid of the
20977         cbinding for transform_point - it's never used.  Also, re-order
20978         the header to put public things first, then protected then
20979         private.
20981         * runtime.cpp: use IsLoaded.
20983         * panel.cpp: use ClearLoaded.
20985         * text.cpp, shape.cpp, eventargs.cpp, frameworkelement.cpp: use
20986         TransformPoint.
20988 2008-08-19  Chris Toshok  <toshok@ximian.com>
20990         * runtime.cpp (Surface::HandleMouseEvent): don't compare the input
20991         lists, as we will almost always have identical lists.  compare the
20992         head of the new list to focused_element to determine if focus
20993         changes.
20995 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20997         * pipeline.cpp: Beautify error messages.
20999 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21001         * media.cpp: test-inexistent-media(s) were failing due to ISP's
21002           tendency to return search pages for failed dns lookups. Fixed tests
21003           after testing with sane DNS settings and did the appropiate change
21004           in code (raise correct error message/number).
21006 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21008         * runtime.h: Make RUNTIME_INIT values sequential.
21010 2008-08-19  Chris Toshok  <toshok@ximian.com>
21012         * xaml.cpp (xaml_hydrate_from_str): make sure to set the surface
21013         of the object before parsing so that objects don't switch from the
21014         loader's surface to NULL as they're added to the hierarchy while
21015         being parsed.
21017 2008-08-19  Larry Ewing  <lewing@novell.com>
21019         * shape.cpp (Shape::InsideObject): check the extents first, then
21020         reorder the stroke/fill tests to test for the most likely first.
21022         Helps speed up sliverlight.net/world a bit.
21024 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21026         * mplayer.h, pipeline.h: No need to surround GetTypeName with
21027           OBJECT_TRACKING anymore.
21029 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21031         * audio.cpp, audio.h, audio-alsa.cpp, audio-alsa.h, audio-pulse.cpp,
21032           audio-pulse.h: Added, our new audio abstraction/implementation.
21033         * Makefile.am, src.mdp, type-generated.cpp: Updated.
21034         * mplayer.cpp, mplayer.h: Moved audio code into its own file(s).
21035         * runtime.cpp, runtime.h: Add runtime overrides for audio.
21037 2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
21039         * xap.cpp (xap_unpack): Fixed compiler warning.
21041 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21043         * media.cpp: Include headers mplayer.h doesn't include anymore.
21044           MediaElement::SetMedia: only set audio data on the MediaPlayer if
21045           the media has audio. TImelineMarkerCollection::Add: don't call the
21046           base class' Add, call base's Insert instead. Fixes a stack overflow
21047           since base class' Add calls Insert, which TimelineMarkerCollection
21048           overrides to call Add.
21050 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21052         * enums.cpp: Wrap 2.0-only code in SL_2_0.
21054 2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
21056         * zip/unzip.c: Get rid of unused variable.
21058         * value.cpp (Value::ToString): Get rid of unused variable.
21060 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21062         * dependencyobject.h: EventObject::ref: print a stack trace before the
21063           abort if we can, and fix typo in the abort message.
21065 2008-08-19  Geoff Norton  <gnorton@novell.com>
21067         * xap.cpp: Ensure we can actually enter the directory we're creating.
21069 2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
21071         * mplayer.cpp: Silence the compile warning.
21073         * color.cpp (color_from_str): Got rid of unused variable.
21075         * xaml.cpp (dependency_object_set_attributes): Don't need to use
21076         strlen(str) == 0 to figure out if the string is empty, just check
21077         the first char.
21078         (wrap_type): Removed. Doesn't seem to be used any longer.
21079         (get_type_for_property_name): Same.
21080         (panel_add_child): Same.
21081         (dependency_object_set_property): Made static.
21082         (dependency_object_set_attributes): Same.
21083         (dependency_object_hookup_event): Same.
21084         (dependency_object_missed_property): Same.
21086         * dependencyproperty.cpp (resolve_property_path): Use proper
21087         integer types and avoid calling strlen if all we care to know is
21088         if the string is empty.
21090         * runtime.cpp (Surface::Paint): Get rid of an annoying debug
21091         printf.
21092         (Surface::HandleMouseEvent): Removed unused variable.
21094 2008-08-19  Chris Toshok  <toshok@ximian.com>
21096         * trigger.cpp (EventTrigger::SetTarget): make the 2.0 case more
21097         robust - handle Type.Event notation, making sure that the type is
21098         valid for the target.
21100 2008-08-19  Larry Ewing  <lewing@novell.com>
21102         * runtime.cpp|h: add override to use sofware fallbacks for
21103         rendering.
21105 2008-08-19  Chris Toshok  <toshok@ximian.com>
21107         * trigger.cpp (EventTrigger::SetTarget): do the AddHandler in both
21108         1.0 and 2.0 cases.  big oops.
21110 2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
21112         * dependencyobject.cpp (DependencyObject::GetObjectType): Get rid
21113         of a warning that is no longer valid.
21115 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21117         * downloader.h, downloader.cpp: Add a request field to
21118           DownloaderResponse, and a response field to DownloaderRequest. When
21119           a request is aborted, also abort the response. This fixes a crash
21120           when we aborted the request before receiving a response, the
21121           response had no idea the request had been aborted (since the
21122           request didn't store the response after creating it, it couldn't
21123           notify the response of the abort), and happily accessed deleted
21124           objects.
21126 2008-08-18  Chris Toshok  <toshok@ximian.com>
21128         * runtime.cpp (Surface::CreateArgsForEvent): new method, create
21129         the right kind of args for a given event.  we should probably
21130         autogenerate this.
21131         (Surface::EmitEventOnList): use CreateArgsForEvent.  Only create
21132         one instance of the event args that we use to bubble along the
21133         element list.  If it's a RoutedEventArgs subclass, set the source
21134         to be the first element in the list, and check the "Handled"
21135         attribute after every emit to see if we should finish early (this
21136         provides for 2.0 semantics).
21137         (Surface::FocusElement): unfortunately the event generation is
21138         async, so add a tick call if we need to.  if we already have a
21139         tick call (meaning >= 1 focus change has happened already in this
21140         tick), we drop the intervening change(s).  This is likely wrong.
21141         (Surface::GenerateFocusChangeEvents): emit GotFocus/LostFocus on
21142         the proper element lists.
21143         (Surface::HandleUIKeyPress, Surface::HandleUIKeyRelease): if we're
21144         silverlight2 (and we have a focused element), emit the event on
21145         the list of elements from the focused element back up to the root.
21146         Otherwise just emit it on the toplevel.
21148         * runtime.h (class Surface): add GetFocusedElement/FocusElement
21149         methods, which are used to implement
21150         FocusManager.GetFocusElement() and Control.Focus().
21152         * uielement.h, uielement.cpp (class UIElement): remove a bunch of
21153         Emit$Event() methods that were never used.
21155         * trigger.cpp: in 2.0, you can put other events in RoutedEvent,
21156         not just "Loaded".  there are parsing rules that we can't make use
21157         of here, so more work will likely have to happen in the parser.
21159         * trigger.h (class EventTrigger): add registered_event_id.
21161         * cbinding.h, cbinding.cpp: regenerate.
21163 2008-08-18  Geoff Norton  <gnorton@novell.com>
21164         
21165         * type-generated.cpp, cbinding.cpp|h: Rengerated
21166         * dependencyobject.h: Bind DependencyObject .ctor
21168 2008-08-18  Geoff Norton  <gnorton@novell.com>
21170         * deployment.h: Move CrossDomainAccess to
21171         * enums.h|cpp: Register CrossDomainAccess so that AppMainfest
21172         can specify values from the enum.
21174 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21176         * cbinding.cpp, cbinding.h, uielement.h: Mark
21177           UIElement::GetTransformToUIElement as 2.0, fixes 1.0 build.
21179 2008-08-18  Larry Ewing  <lewing@novell.com>
21181         * panel.cpp|h: remove SetSurface override, the
21182         DependencyObjectCollection::SetSurface does the work already.
21184 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
21186         * uielement.cpp: Autogenerate more of the bindings, make
21187         desired_size private, etc.
21189 2008-08-18  Geoff Norton  <gnorton@novell.com>
21190         
21191         * eventargs.cpp|h: Change the return type to int, fix the build.
21193 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
21195         * uielement.cpp (uielement_get_surface): Removed.
21196         (uielement_invalidate): Removed.
21197         (uielement_set_transform_origin): Removed.
21199         * transform.cpp: Removed manual c-bindings.
21201         * text.cpp: Removed manual c-bindings for property accessors.
21203 2008-08-18  Geoff Norton  <gnorton@novell.com>
21205         * type-generated.cpp, cbinding.cpp|h: Rengerated
21206         * uielement.cpp|h, type.h, value.h: Keyboard->Key
21207         * runtime.cpp|h: Move key translation to eventargs, and pass the
21208         raw GdkEventKey to KeyEventArgs.
21209         * eventargs.cpp|h: Implement KeyEventArgs bound to the managed stuff
21210         and remove the old KeyboardEventArgs.
21212 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
21214         * stylus.h: Moved required manual c-bindings into G_*_DECLS block.
21216         * size.cpp: Removed manual ctor c-binding.
21218         * shape.cpp: Removed manual c-bindings for property accessors.
21220 2008-08-18  Geoff Norton  <gnorton@novell.com>
21222         * media.cpp|h, cbinding.cpp|h: Implement support for generating Image's
21223         from managed Streams.
21225 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
21227         * runtime.cpp: Removed manual c-bindings for Surface and renamed
21228         Get/SetTrans() to Get/SetTransparent().
21230         * panel.cpp: Removed manual c-bindings for property accessors.
21232         * media.cpp: Removed manual c-bindings for property accessors and
21233         other methods that are now autogenerated.
21235 2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21237         * dependencyobject.h: Make the generator happy.
21239 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
21241         * geometry.cpp: Removed manual c-bindings for property accessors.
21243 2008-08-18  Michael Dominic K.  <mdk@mdk.am>
21245         * runtime.h: Caller is "in main thread" also when the main_thread
21246         pointer equals NULL (no surface has been created).
21248 2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21250         * debug.cpp: Fix a leak found by valgrind.
21252 2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21254         * dependencyobject.h: Make GetTypeName virtual if we're tracking
21255           objects, enables better output of lost objects.
21257 2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21259         * dependencyobject.cpp: DrainUnrefs: since unreffing objects may cause
21260           more objects to be enqueued for unref, loop until there are none
21261           left.
21263 2008-08-17  Geoff Norton  <gnorton@novell.com>
21265         * downloader.cpp|h: Add a method for DownloaderResponse to 
21266         support a Header Visitor.
21268 2008-08-17  Geoff Norton  <gnorton@novell.com>
21270         * uielement.h: Expose desired_size as public to fix the build.
21272 2008-08-17  Chris Toshok  <toshok@ximian.com>
21274         * uielement.h, frameworkelement.h: can't use SL_2_0 in headers.
21276 2008-08-17  Chris Toshok  <toshok@ximian.com>
21278         * Makefile.am (libmoon_include_HEADERS): INCLUDE_MONO_RUNTIME ->
21279         INCLUDE_MANAGED_CODE.
21281 2008-08-15  Larry Ewing  <lewing@novell.com>
21283         * clock.cpp|h: add methods Jeff removed back. 
21285 2008-08-15  Chris Toshok  <toshok@ximian.com>
21287         * stylus.h (class DrawingAttributes): all managed DP fields are
21288         private.
21289         (class Stroke): DrawingAttributesProperty and StylusPointsProperty
21290         are private in managed-land.
21292 2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
21294         * grid.h: Autogenerate bindings for GetActualWidth/Height
21296         * grid.cpp: Removed manual c-bindings.
21298         * frameworkelement.cpp: Removed manual c-bindings.
21300 2008-08-15  Chris Toshok  <toshok@ximian.com>
21302         * eventargs.h (enum CollectionChangedAction): change Reset to
21303         Cleared, and add Clearing to handle the old functionality in
21304         DependencyObject::OnCollectionClear.
21306         * dependencyobject.h (class DependencyObject): remove
21307         OnCollectionClear.  we handle that case in OnCollectionChanged
21308         now.
21310         * panel.h, panel.cpp (Panel::OnCollectionChanged): move
21311         OnCollectionClear code to here.
21313         * uielement.cpp (UIElement::OnCollectionChanged): add
21314         ActionClearing code here.
21316         * stylus.cpp, text.cpp: track CollectionChangedAction enum change.
21318         * collection.cpp (Collection::Clear): use
21319         EmitChanged (CollectionChangedActionClearing,...) instead of
21320         OnCollectionClear.
21322 2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
21324         * eventargs.cpp|h: Same.
21326         * control.cpp: Same.
21328         * contentcontrol.cpp: Removed manual property accessor c-bindings.
21330         * clock.cpp: Removed manual c-bindings for things that can be
21331         autogenerated.
21333         * brush.cpp|h: Removed manual c-bindings for property accessors.
21335         * animation.cpp|h: Added some convenience c++ property accessors and
21336         got rid of all of the manual c-bindings. Fixed them to be
21337         auto-generated.
21339         * stylus.cpp: Added c++ property accessors and updated the code to
21340         use them (cleans up some code) and also got rid of the c binding
21341         accessors. We'll autogenerate these.
21343 2008-08-15  Sebastien Pouliot  <sebastien@ximian.com>
21345         * layout.cpp: Don't add kerning before a dot (.). This match SL
21346         behavior (i.e. it's not a "sliding dot" algorithm like I expected)
21347         and the effect is visible in a few DRT (like #184).
21349 2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
21351         * uielement.cpp (UIElement::GetTriggers): Added for convenience.
21352         (UIElement::Dispose): Use the new convenience method.
21354 2008-08-15  Chris Toshok  <toshok@ximian.com>
21356         * panel.cpp (Panel::ChildRemoved): queue a ZIndex re-sort here.
21357         (Panel::ChildAdded): call item->OnLoaded if we're loaded, and
21358         queue a re-sort.
21359         (Panel::OnCollectionChanged): simplify this since the code moved
21360         to ChildAdded/ChildRemoved.
21362         * panel.h, panel.cpp (Panel::Dispose): loop over our children
21363         setting their visual parent to NULL.
21365         * uielement.h, uielement.cpp (UIElement::Dispose): loop over the
21366         trigger collection removing ourselves as the target.
21367         (UIElement::OnPropertyChanged): handle TriggersProperty here -
21368         remove target from the old triggers and set target on the new
21369         ones.
21370         (UIElement::OnCollectionChanged): new method, handle
21371         TriggersCollection.
21373         * dependencyobject.cpp: be consistent in our treatment of
21374         LogicalParent - clear it in every place we're removing a DO.  Warn
21375         if we're setting it again on the same DO.
21377         * collection.h, collection.cpp: remove triggercollection's
21378         added/removedfromcollection, adn remove uielementcollection's
21379         removedfromcollection.  Also, stop using a separate closure.  The
21380         collection's LogicalParent always has the same value - use that.
21382 2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
21384         * clock.cpp (TimeManager::SourceTick): Instead of always using up
21385         to 1/30 of a second for flushing the async queue, use only the
21386         time remaining in our render pass to flush it.
21388 2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21390         * animation.h: KeyTimeProperty isn't nullable in managed code.
21392 2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21394         * cbinding.cpp, cbinding.h: Regenerated.
21395         * media.cpp, media.h: Add a MediaElement::SetStreamSource, and hack it
21396           to at least open the source.
21397         * pipeline.cpp, pipeline.h: Added ManagedStreamSource.
21399 2008-08-15  Jackson Harper  <jackson@ximian.com>
21401         * xaml.cpp: Need to advance after F.
21403 2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21405         * animation.h, dependencyproperty.g.cpp: KeyTime is nullable. Fixes MS
21406           DRT#114.
21408 2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21410         * dependencyproperty.g.cpp: Regenerated.
21412 2008-08-14  Larry Ewing  <lewing@novell.com>
21414         * animation.h (class KeyFrame): remove the KeyTime DP and make
21415         the ctor private this is an abstract class.
21417         * animation.cpp: retrieve the property via name.
21419 2008-08-14  Jeffrey Stedfast  <fejj@novell.com>
21421         * clock.cpp (TimeManager::SourceTick): Call InvokeTickCall() as
21422         many times as we can in 1/30th of a second. Major visual
21423         performance improvement for bug #395160.
21425 2008-08-14  Jackson Harper  <jackson@ximian.com>
21427         * xaml.cpp|h: We need to pass a pointer to the top level control
21428         when hooking up a managed event, the managed code uses this to
21429         find the method to invoke.
21431 2008-08-14  Jeffrey Stedfast  <fejj@novell.com>
21433         * uielement.cpp: Implemented property accessors for ZIndex
21435         * collection.cpp (UIElementZIndexComparer): Use
21436         UIElement::GetZIndex(). If, in the future, we make GetZIndex()
21437         return a cached value, now we'll automagically benefit from it.
21439 2008-08-14  Jeffrey Stedfast  <fejj@novell.com>
21441         ZIndex sorting optimization for bug #395160
21443         * panel.cpp (Panel::UpdateTotalHitTestVisibility): Don't iterate
21444         over the z_sorted list, it might not yet be
21445         populated (e.g. ResortZIndex() may not have been called yet).
21446         (Panel::OnPropertyChanged): Set a DirtyChildrenZIndices bit if the
21447         new collection is non-null.
21448         (Panel::OnCollectionChanged): Queue ZIndex resorts as appropriate.
21449         (Panel::OnLoaded): Queue a resort here too.
21451         * collection.cpp (UIElementCollection::AddedToCollection):
21452         Removed. We don't want to do the zindex sortign here anymore. Too
21453         slow. Instead, we'll have Panel::OnCollectionChanged() set the
21454         DirtyChildrenZIndices dirty flag so that the renderer forces a
21455         resort.
21456         (UIElementCollection::Insert): Removed, no need to override
21457         anymore since we won't be resorting by zindex here anymore.
21458         (UIElementCollection::ResortByZIndex): Now that z_sorted isn't
21459         maintained as items are added/inserted, we need to always init the
21460         z_sorted array here even if we only have 1 item.
21462 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21464         * xaml.cpp, pipeline.cpp: Don't use base_unref, call unref on the
21465           instance.
21466         * playlist.cpp: Use DependencyObject::SetName instead of the C method.
21467         * dependencyobject.h, dependencyobject.cpp: Generate all c methods, as
21468           well as Name accessors.
21469         * cbinding.h, dependencyproperty.g.cpp, cbinding.cpp: Regenerated.
21470         * runtime.cpp: Updated according to new method names.
21472 2008-08-14  Jackson Harper  <jackson@ximian.com>
21474         * xaml.cpp: We now create property instances from the property's
21475         type info not the property's parent type. This will allow us to
21476         have a managed attached property on a native object.
21478 2008-08-14  Chris Toshok  <toshok@ximian.com>
21480         * Makefile.am (libmoon_la_SOURCES): add thickness.cpp
21482         * thickness.h, thickness.cpp: add thickness_from_str.
21484         * xaml.cpp: add thickness parsing.
21486 2008-08-14  Jackson Harper  <jackson@ximian.com>
21488         * xaml.cpp: Need to lookup property element name's in their
21489         namespace so that managed attached properties can be set.
21491 2008-08-14  Jackson Harper  <jackson@ximian.com>
21493         * xaml.cpp: If there is a dot in the element name we can assume
21494         it's a property (or at least not an element).  This should prevent
21495         some extra calls into managed code to try to create types from
21496         property names.
21498 2008-08-13  Geoff Norton  <gnorton@novell.com>
21500         * runtime.cpp|h, clock.cpp|h: Move the g_idle_idd and g_timeout
21501         calls into the time manager.
21503 2008-08-13  Geoff Norton  <gnorton@novell.com>
21505         * runtime.cpp|h: Add a binding for g_idle_add.
21507 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21509         * cbinding.cpp, cbinding.h, eventargs.cpp, eventargs.h: Generate two
21510           MouseEventArgs methods.
21512 2008-08-14  Jackson Harper  <jackson@ximian.com>
21514         * type-generated.cpp: Value types.
21516 2008-08-13  Jackson Harper  <jackson@ximian.com>
21518         * xaml.cpp: Make sure we set content properties.
21520 2008-08-13  Jackson Harper  <jackson@ximian.com>
21522         * xaml.cpp: Add support for parsing value types.
21524 2008-08-13  Chris Toshok  <toshok@ximian.com>
21526         * panel.cpp (Panel::OnCollectionChanged): we only need to call
21527         OnLoaded on the new child.
21529 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21531         * stylus.h: StylusInfo doesn't have a managed equivalent.
21533 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21535         * dependencyproperty.h: Generate CBinding and PInvoke for IsAttached.
21536         * cbinding.cpp, cbinding.h: Regenerated.
21538 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21540         * type.cpp: Remove spew.
21541         * dependencyobject.cpp: GetValue*WithError: Fix error messages to say
21542           we're trying to get values, not set them.
21544 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21546         * dependencyproperty.g.cpp: Regenerated.
21547         * geometry.h: Added IsFilled property.
21549 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21551         * brush.h: Set correct managed DP access and property types.
21553 2008-08-13  Jeffrey Stedfast  <fejj@novell.com>
21555         * *.h: Added GeneratePInvoke attribute to each ctor
21557 2008-08-13  Jeffrey Stedfast  <fejj@novell.com>
21559         * text.cpp: s/Inlines/InlineCollection/g
21561         * xaml.cpp: s/Inlines/InlineCollection/g
21563         * collection.h (class InlineCollection): Renamed from Inlines.
21565         * trigger.h (class TriggerAction): Generate C Binding for ::Fire()
21566         and also the ctor. Needed to prevent a crash in test-props.html
21568 2008-08-13  Geoff Norton  <gnorton@novell.com>
21570         * runtime.cpp|h: Reuse the old html_timer infrastructure for the
21571         intial DispatcherTimer implementation.
21573 2008-08-13  Jeffrey Stedfast  <fejj@novell.com>
21575         * media.h (class MediaElement): Make MarkersProperty internal for
21576         managed-side.
21578         * grid.h (class Grid): Make Column/RowDefinitionsProperties
21579         internal for managed-side.
21581         * text.h (class TextBlock): Make InlinesProperty internal for
21582         managed-side.
21584         * panel.h (class Panel): Update ChildrenProperty managed property
21585         access.
21587         Also added newlines to the end of some files to silence compile
21588         warnings.
21590 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21592         * dependencyproperty.g.cpp, type.h, type-generated.cpp, value.h,
21593           cbinding.cpp, cbinding.h: Regenerated.
21594         * geometry.h: Annotation fix.
21595         * Makefile.am, src.mdp: Added tilesource.h
21596         * tilesource.h: Added.
21598 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21600         * src.mdp, Makefile.am: Added animation2.h
21601         * type.h, type-generated.cpp, value.h, cbinding.cpp, cbinding.h,
21602           dependencyproperty.g.cpp: Regenerated.
21603         * animation.h: Added missing 2.0 DPs and more annotations.
21604         * animation2.h: Added, contains 2.0 animation classes.
21605         * clock.h: There are no managed equivalent of TimelineGroup and
21606           ParallelTimeline, remove their Namespace annotation.
21608 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21610         * shape.h: Fix warning.
21612 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21614         * shape.h: The managed Shape class must be constructable, so make all
21615           pure virtual methods from the native Shape class just virtual.
21616         * cbinding.cpp, cbinding.h, type-generated.cpp: Regenerated.
21618 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21620         * animation.h, brush.h, cbinding.cpp, cbinding.h, clock.h,
21621           dependencyproperty.g.cpp, frameworkelement.h, geometry.h, panel.h,
21622           text.h, transform.h, type-generated.cpp, usercontrol.h: Added more
21623           annotations to make gui-compare happier.
21625 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21627         * control.h, dependencyobject.h, deployment.h, frameworkelement.h,
21628           style.h, template.h, trigger.h, uielement.h: Gui-compare annotation
21629           tweaking.
21631 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21633         * stackpanel.h, src.mdp, Makefile.am, cbinding.cpp, cbinding.h,
21634           dependencyproperty.g.cpp, enums.cpp, enums.h, type.h,
21635           type-generated.cpp, value.h: Added a native StackPanel class and
21636           generate the managed StackPanel.
21638 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21640         * brush.h, contentcontrol.h, deployment.h, downloader.h, media.h,
21641           namescope.h, stylus.h, transform.h: Tweak some annotations.
21643 2008-08-12  Chris Toshok  <toshok@ximian.com>
21645         * style.h (class Style): make the "Setters DP" field private.
21647         * template.h (class ControlTemplate): add TargetType DP
21649         * dependencyproperty.g.cpp: regen.
21651 2008-08-12  Chris Toshok  <toshok@ximian.com>
21653         * style.h (class Setter): hack for the DependencyProperty valued
21654         property.  we need to parse a string DP name in a context where we
21655         don't know the type to apply to it, so we need to have a string
21656         backed property.
21658         * dependencyproperty.g.cpp: regen.
21660 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21662         * collection.h: Annotate Collection.
21664 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21666         * animation.h, clock.h, collection.h, error.h, eventargs.h, media.h,
21667           size.h, style.h, template.h, trigger.h: Add @Namespace annotations.
21669 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21671         * src.mdp: Updated.
21673 2008-08-12  Chris Toshok  <toshok@ximian.com>
21675         * collection.cpp (Collection::Clear): make a temporary copy of the
21676         array so we can zero out the ptrarray before calling
21677         RemovedFromCollection.
21679 2008-08-12  Jackson Harper  <jackson@ximian.com>
21681         * xaml.h:
21682         * xaml.cpp: Hydrate now passes in the default assembly name and
21683         path (we can probably do away with path's I think that's just a
21684         holdover from 1.1).  If no assembly name is specified in the
21685         custom xmlns, the default's are used.
21687 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21689         * trigger.h, control.h, deployment.h, text.h, dependencyproperty.g.cpp,
21690           style.h, uielement.h, grid.h, media.h: Tweaked annotations to
21691           support managed DP accessor generation.
21693 2008-08-12  Jeffrey Stedfast  <fejj@novell.com>
21695         * collection.cpp (Collection::SetCount): Convenience function.
21696         (Collection::Clear): Use SetCount().
21697         (Collection::Insert): Same.
21698         (Collection::RemoveAt): Same.
21700         * media.cpp (TimelineMarkerCollection::Add): Chain up to direct
21701         parent class rather than base class - while the
21702         DependencyObjectCollection might not currently override Add/Insert
21703         methods, if at some later point overrides are added, then we need
21704         to do no work here.
21706         * collection.cpp (DependencyObjectCollection::SetValueAt):
21707         Removed (not used anywhere).
21708         (Collection::SetValueAtWithError): This needs to call
21709         SetValueAt(), not GetValueAt().
21710         (Collection::SetValueAt): Delete the removed Value after emitting
21711         the event so we don't leak it.
21713 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21715         * animation.h, brush.h, clock.h, control.h, dependencyobject.h,
21716           deployment.h, downloader.h, frameworkelement.h, media.h, text.h,
21717           trigger.h, uielement.h: Use string instead of char* as
21718           @PropertyType.
21720 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21722         * animation.h, brush.h, canvas.h, clock.h, collection.h,
21723           contentcontrol.h, control.h, dependencyobject.h, deployment.h,
21724           downloader.h, frameworkelement.h, geometry.h, grid.h, media.h,
21725           namescope.h, panel.h, shape.h, style.h, stylus.h, text.h,
21726           transform.h, trigger.h, uielement.h, usercontrol.h: Added
21727           @Namespace annotations, and changed @PropertyType which were
21728           declared as gint32 (and are enums) to use the actual enum type.
21729         * dependencyproperty.g.cpp: Updated.
21731 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21733         * src.mdp: Updated.
21735 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21737         * dependencyproperty.h, type.h, type-generated.cpp, value.h: Added
21738           DependencyProperty to the Kind enum.
21740 2008-08-11  Chris Toshok  <toshok@ximian.com>
21742         * deployment.h (class Application): add ResourceProperty.
21744         * style.h: add ValueProperty.
21746         * cbinding.h, cbinding.cpp: hm, looks like I forgot to regen these
21747         after adding the Version=2.0 stuff to the collection api.
21749         * dependencyproperty.g.cpp: regen.
21751 2008-08-11  Chris Toshok  <toshok@ximian.com>
21753         * error.h, error.cpp: add an enum to MoonError that lets us
21754         specify which exception to raise.
21755         
21756         * collection.h, collection.cpp: a few changes:
21758         1. make most methods take Value* now instead of Value, to ease the
21759         autogenerated bindings.  Leave in Add/Remove taking (Value v) so
21760         we can let c++ do some implicit conversion lifting for us.  Leave
21761         the (Value) variants as non-virtual, and make the Value* ones
21762         virtual.
21764         2. Make ::Add call ::Insert, instead of duplicating all the code.
21766         3. Move all calls of AddedToCollection and RemovedFromCollection
21767         to *after* the work has been done (they're past-tense, so do what
21768         their name implies.)  This means subclasses can assume the item is
21769         already in the array (or removed from it) when those methods are
21770         called.  The one holdout to this utopian ideal is Clear().  we
21771         need to fix that.
21773         4. Switch from overriding GetValue to handle CountProperty (and
21774         leaking a Value* every time we get it) to setting the
21775         CountProperty whenever we need to (in Insert/RemoveAt).
21777         5. Add special GetValueAtWithError, SetValueAtWithError, and
21778         RemoveAtWithError methods, that allow us to effectively raise
21779         exceptions from the unmanaged code.  Use the new
21780         MoonError::ErrorKind enum to specify which exception.
21782         6. remove a bunch of C api, which is now autogenerated.
21783         
21784         * dependencyproperty.g.cpp (dependency_property_g_init): regen to
21785         pick up Collection::CountProperty's default value.
21787         * cbinding.h, cbinding.cpp: autogen'ed collection api.
21789         * stylus.h, media.h, media.cpp: track collection changes.
21791         * dependencyobject.cpp: track MoonError enum change.
21793 2008-08-11  Chris Toshok  <toshok@ximian.com>
21795         * dependencyproperty.g.cpp: regen.
21797         * control.h (class Control): add StyleProperty.
21799 2008-08-11  Sebastien Pouliot  <sebastien@ximian.com>
21801         * layout.cpp: Compute line's height with more precision. This 
21802         removes the cumulative difference (over multiple lines) with
21803         Silverlight implementation. Fix DRT#209 (enough to PASS) and 
21804         improve several other ones (already passing but imperfect).
21806 2008-08-11  Chris Toshok  <toshok@ximian.com>
21808         * style.h: comment out 2 problematic DP's for now.
21810         * dependencyproperty.g.cpp: regen
21812 2008-08-11  Chris Toshok  <toshok@ximian.com>
21814         * style.h, style.cpp: add Style, SetterBase, Setter, and
21815         SetterBaseCollection unmanaged types.
21817         * Makefile.am: add them to the 2.0 build.
21819         * type.h, type-generated.cpp, value.h, cbinding.h, cbinding.cpp,
21820         dependencyproperty.g.cpp: regenerate from style.h/style.cpp.
21821         
21822 2008-08-11  Jeffrey Stedfast  <fejj@novell.com>
21824         * shape.cpp (Polyline::OnCollectionChanged): Invalidate the path
21825         cache.
21826         (Polygon::OnCollectionChanged): Same.
21828         * text.cpp (TextBlock::OnPropertyChanged): Set dirty to true when
21829         the TextDecorationsProperty changes too. Fixes the "underline
21830         hyperlinks" portion of bug #412986.
21832 2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21834         * xaml.cpp: Remove debug spew.
21836 2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21838         * array.cpp, array.h: Removed, no longer needed.
21839         * collection.cpp, collection.h: Moved double_garray_from_str to
21840           collection.cpp|h.
21841         * geometry.cpp, libmoon.h, Makefile.am, point.cpp, point.h, rect.cpp,
21842           shape.cpp, src.mdp, type.h, value.cpp, value.h, value.h.in,
21843           xaml.cpp: Remove the double and point arrays, no longer needed.
21844         * type-generated.cpp: Remove the double and point arrays, no longer
21845           needed. Implement support for 2.0 events.
21847 2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21849         * runtime.cpp: Fix a crash (xaml parser tries to access the NULL loader
21850           during parsing).
21852 2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21854         * dependencyproperty.g.cpp: Surround 2.0 DP declarations in #if SL_2_0.
21856 2008-08-09  Jeffrey Stedfast  <fejj@novell.com>
21858         * *.h: Removed *_new() prototypes which are autogenerated in
21859         cbinding.h
21861 2008-08-08  Chris Toshok  <toshok@ximian.com>
21863         * template.h, template.cpp: new file, stub implementations for
21864         FrameworkTemplate and ControlTemplate.
21866         * Makefile.am: add template.h/cpp.
21868         * control.h: add Template property.
21870         * frameworkelement.h: add some 2.0 events.
21872         * cbinding.h, cbinding.cpp, type.h, dependencyproperty.g.cpp,
21873         value.h, type-generated.cpp: regenerate.
21874         
21875 2008-08-08  Chris Toshok  <toshok@ximian.com>
21877         * xaml.h, xaml.cpp: we need to propagate the 2.0-ness of the
21878         parser around in various methods (starting from the public
21879         xaml_set_property_from_str and value_from_str*) in order to get it
21880         down to where it's needed for the enum_* calls.
21882         * enums.h, enums.cpp: add a "sl2" argument so we can resolve
21883         sl1/sl2 specific enum values, and add the 2.0 specific
21884         Horizontal/VerticalAlignment mappings.
21886 2008-08-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21888         * runtime.cpp: Remove comments to self :)
21890 2008-08-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21892         * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
21893           control.h, deployment.h, text.h, trigger.cpp, dependencyobject.h,
21894           canvas.cpp, transform.h, downloader.cpp, transform.cpp,
21895           animation.h, grid.cpp, shape.h, animation.cpp, deployment.cpp,
21896           control.cpp, runtime.cpp, text.cpp, clock.h, contentcontrol.h,
21897           clock.cpp, uielement.h, collection.h, geometry.h,
21898           contentcontrol.cpp, frameworkelement.h, uielement.cpp, grid.h,
21899           collection.cpp, geometry.cpp, shape.cpp, dependencyobject.cpp,
21900           frameworkelement.cpp, namescope.cpp, brush.h, panel.h, stylus.h,
21901           namescope.h, media.cpp, brush.cpp, usercontrol.h: Remove DP
21902           registration from *_init methods, and remove *_init methods which
21903           turned out to be empty after that.
21905 2008-08-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21907         * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
21908           control.h, deployment.h, text.h, trigger.cpp, dependencyobject.h,
21909           canvas.cpp, transform.h, downloader.cpp, transform.cpp,
21910           animation.h, grid.cpp, downloader.h, shape.h,
21911           dependencyproperty.g.cpp, animation.cpp, deployment.cpp,
21912           control.cpp, runtime.cpp, text.cpp, dependencyproperty.h,
21913           Makefile.am, clock.h, contentcontrol.h, dependencyproperty.cpp,
21914           clock.cpp, uielement.h, collection.h, geometry.h,
21915           contentcontrol.cpp, frameworkelement.h, src.mdp, uielement.cpp,
21916           grid.h, collection.cpp, geometry.cpp, shape.cpp,
21917           dependencyobject.cpp, frameworkelement.cpp, namescope.cpp, media.h,
21918           brush.h, panel.h, stylus.h, namescope.h, media.cpp, brush.cpp,
21919           usercontrol.h: Generate dependency property registration.
21921 2008-08-07  Chris Toshok  <toshok@ximian.com>
21923         * collection.h, collection.cpp (double_collection_from_str): new
21924         method.
21925         (point_collection_from_str): new method.
21927         * xaml.cpp (value_from_str): add support for
21928         DoubleCollection/PointCollection properties.  leave
21929         DoubleArray/PointArray in for now, although nothing should use it.
21931         * shape.h, shape.cpp, geometry.h, geometry.cpp: switch all
21932         PointArray/DoubleArray properties to using
21933         PointCollection/DoubleCollection.  This is unfortunately a
21934         necessity due to the 2.0 changes, but it should be transparent for
21935         everything else.
21937 2008-08-07  Larry Ewing  <lewing@novell.com>
21939         * shape.cpp (Shape::ShiftPosition): add an unfortunate restriction
21940         on ShiftPosition interaction with the shape cache to fix the
21941         droppings we were seeing in AnimationMatrix and
21942         StoryBoard_ModifyProperty.htm.
21944 2008-08-07  Geoff Norton  <gnorton@novell.com>
21946         * media.cpp: When the MediaElement source changes set the
21947         BufferingProgress back to 0 otherwise we may never emit a 
21948         BufferingProgressChangedEvent for the new source.
21950 2008-08-07  Sebastien Pouliot  <sebastien@ximian.com>
21952         * layout.cpp: Handle negative horiBearingX correctly. This gives
21953         better visual results in DRT #47 (same width value, up to 2 
21954         decimal) and #209 (not enough to make it PASS but I doubt the 
21955         master is ok, since I can't duplicate its output).
21957 2008-08-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21959         * dependencyobject.cpp: HasProperty: accept attached properties for
21960           now.
21962 2008-08-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21964         * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
21965           control.h, deployment.h, text.h, thickness.h, trigger.cpp,
21966           canvas.cpp, transform.h, color.h, downloader.cpp, eventargs.cpp,
21967           transform.cpp, animation.h, grid.cpp, downloader.h, eventargs.h,
21968           shape.h, animation.cpp, size.h, deployment.cpp, control.cpp,
21969           text.cpp, clock.h, contentcontrol.h, clock.cpp, uielement.h,
21970           point.h, collection.h, geometry.h, contentcontrol.cpp,
21971           frameworkelement.h, uielement.cpp, grid.h, collection.cpp,
21972           geometry.cpp, shape.cpp, frameworkelement.cpp, media.h, brush.h,
21973           rect.h, panel.h, stylus.h, media.cpp, brush.cpp, usercontrol.h: Add
21974           instructions to generate c constructors in headers and remove *_new
21975           implementations from cpp files.
21976         * dependencyobject.h: Typedef function pointer to avoid making the
21977           generator understand function pointer syntax. Update comments to
21978           new syntax.
21979         * cbinding.h, value.h, src.mdp, cbinding.cpp: Updated.
21980         * type.h, type.h.in: Updated comments to new syntax.
21981         * mms-downloader.h: Use C++ syntax.
21982         * dependencyproperty.h, dependencyproperty.cpp: Make
21983           dependency_property_register_managed_property a method on the type
21984           and update comments to new syntax.
21985         * type-generated.cpp: Updated by new generator, which did actually
21986           catch a few errors.
21988 2008-08-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21990         * dependencyproperty.cpp: DP: Comment out the duplicate DP warning
21991           until it's fixed.
21993 2008-08-06  Geoff Norton  <gnorton@novell.com>
21995         * dependencyproperty.cpp: When registering a clashing DP
21996         return the original so that the code can act on it as it
21997         expects.  Fixes about 18 DRT regressions.
21999 2008-08-06  Chris Toshok  <toshok@ximian.com>
22001         * uielement.h, uielement.cpp: add GetTransformToUIElement, the
22002         unmanaged equivalent to the managed UIElement.TransformToVisual.
22004         Also change the signature of HitTest to take a Point, not two
22005         doubles.  Add a HitTest overload that takes a Rect in
22006         preparation for 2.0.
22008         * panel.h, panel.cpp: track HitTest signature change.
22010         * control.h, control.cpp: track HitTest signature change.
22012 2008-08-06  Chris Toshok  <toshok@ximian.com>
22014         * transform.h, transform.cpp: add a convenience ctor for Matrix
22015         that takes a cairo_matrix_t*.
22017 2008-08-06  Chris Toshok  <toshok@ximian.com>
22019         * type-generated.cpp (type_infos): fix ctors for UIElement and
22020         UIElementCollection.
22022 2008-08-06  Chris Toshok  <toshok@ximian.com>
22024         * frameworkelement.h, frameworkelement.cpp: add
22025         DataContextProperty.
22027 2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22029         * type.cpp: Fix for old glib in sled.
22031 2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22033         * dependencyproperty.cpp, type.cpp, type.h, type.h.in,
22034           type-generated.cpp: Add custom properties to a GSList instead of
22035           the hash table given that several custom properties can be
22036           registered on the same type with the same name.
22038 2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22040         * src.mdp: Make src and plugin projects build.
22042 2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22044         * src.mdp: Updated.
22046 2008-08-05  Chris Toshok  <toshok@ximian.com>
22048         * transform.h, transform.cpp, brush.cpp: Add GeneralTransform as a
22049         superclass of Transform, and move all the current Transform stuff
22050         there.
22052         * type.h, type-generated.cpp, value.h: resync
22054 2008-08-05  Chris Toshok  <toshok@ximian.com>
22056         * uielement.h, uielement.cpp, frameworkelement.h,
22057         frameworkelement.cpp: move the UIElement DPs back - the move to
22058         FrameworkElement breaks tests.
22060         * collection.cpp (TriggerCollection::AddedToCollection): quiet
22061         this down.
22062         (TriggerCollection::RemovedFromCollection): same.
22064 2008-08-05  Chris Toshok  <toshok@ximian.com>
22066         * frameworkelement.h, frameworkelement.cpp: add in the 2.0-only
22067         DependencyProperties.  we need a way to limit access to these to
22068         only the 2.0 case.
22070         * uielement.h, uielement.cpp: CursorProperty, ResourcesProperty,
22071         TagProperty, TriggersProperty are moved to
22072         frameworkelement.h/.cpp.
22073         
22074         * runtime.cpp (Surface::UpdateCursorFromInputList): CursorProperty
22075         moved from UIElement to FrameworkElement.
22077         * size.h, size.cpp: add SizeChangedEventArgs.
22079         * thickness.h: move this type here
22081         * control.h: #include thickness.h
22083         * type.h, value.h, type-generated.cpp: regenerate for
22084         SIZECHANGEDEVENTARGS.
22085         
22086 2008-08-05  Chris Toshok  <toshok@ximian.com>
22088         * Makefile.am (libmoon_la_SOURCES): enums.c => enums.cpp
22090         * enums.h: add comment about keeping MouseCursors enum in sync
22091         with Cursor.cs.
22093         * enums.cpp: make all the mappings use symbols instead of integer
22094         constants.  Also, rename enums.c to enums.cpp so it can include
22095         the .h files for enums not in enums.h.
22097 2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22099         * src.mdp: Remove visual.cpp|h from here too.
22101 2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22103         * brush.cpp, brush.h, dirty.cpp, panel.cpp, panel.h, type.h,
22104           type-generated.cpp, uielement.cpp, uielement.h, value.h,
22105           visual.cpp, visual.h, collection.h, collection.cpp, Makefile.am,
22106           libmoon.h: Deleted Visual (moved content into UIElement), and
22107           renamed VisualCollection to UIElementCollection.
22109 2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22111         * cbinding.cpp, cbinding.h, dependencyobject.cpp, dependencyobject.h:
22112           GetValueWithError: Add a parameter to specify the exact type
22113           (including managed subclassing) of the object. HasProperty: use
22114           that parameter to determine if the type has the specified property
22115           or not.
22116         * dependencyproperty.cpp, dependencyproperty.h: DependencyProperty: Add
22117           a is_custom field to determine if the property is our own or not.
22119 2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22121         * cbinding.cpp, cbinding.h: Updated.
22122         * dependencyobject.h, dependencyobject.cpp, dependencyproperty.cpp,
22123           dependencyproperty.h, runtime.cpp, runtime.h, type.cpp, type.h,
22124           type.h.in, type-generated.cpp: Create a Types class which may
22125           contain additional types. Change the DP/DO/Type overloads
22126           containing a Surface to take a Types argument instead.
22128 2008-08-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22130         * dependencyobject.cpp: Implement Get[No[Default]]ValueWithError.
22132 2008-08-04  Michael Dominic K.  <mdk@mdk.am>
22134         * animation.cpp:
22135         * clock.cpp:
22136         * clock.h: Adding method to store a manual target (instead of a named target)
22137         for a timeline. This will be used to bind a Storyboard.SetTarget 2.0 method.
22139 2008-08-04  Michael Dominic K.  <mdk@mdk.am>
22141         * animation.cpp:
22142         * animation.h: A little bit of C API for KeySpline.
22144 2008-08-04  Michael Dominic K.  <mdk@mdk.am>
22146         * runtime.cpp: _get_surface can only be called from the main thread.
22148 2008-08-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22150         * src.mdp, cbinding.h, cbinding.cpp: Updated.
22151         * Makefile.am: Include error.cpp.
22152         * error.h, error.cpp: Added MoonError.
22153         * dependencyproperty.h: Make RegisterFull 2.0 only.
22154         * dependencyobject.h, dependencyobject.cpp: Added and implemented
22155           Get[[No]Default]ValueWithError and a HasProperty method which takes
22156           into account properties registered on a surface.
22158 2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22160         * canvas.cpp, grid.cpp: Use C++ binding instead of C binding.
22161         * media.cpp: Use property accessors instead of GetValue.
22163 2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22165         * cbinding.cpp, cbinding.h: Update.
22166         * dependencyproperty.cpp: RegisterFull: Only wrap method code in
22167           SL_2_0, fixed 1.0 build.
22169 2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22171         * dependencyproperty.h: Make GetName return a const char*, and rename
22172           parameters from readonly to read_only (to not conflict with C#
22173           keywords).
22175 2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22177         * src.mdp: Updated.
22178         * dependencyproperty.cpp, dependencyproperty.h, Makefile.am: Generate
22179           DependencyProperty's C methods.
22180         * cbinding.cpp, cbinding.h: Added.
22181         * typegen, typegen/typegen.cs, typegen/typegen.sh: Moved typegen to
22182           moon/generators, and add methodgen to generate pinvokes, and cgen
22183           to generate c bindings.
22185 2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22187         * dependencyobject.cpp, dependencyproperty.cpp, dependencyproperty.h:
22188           Implement property changed callbacks.
22190 2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22192         * contentcontrol.h, control.h: Fix includes.
22194 2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22196         * pipeline-ffmpeg.cpp: Fix warning.
22198 2008-08-01  Jeffrey Stedfast  <fejj@novell.com>
22200         * dependencyobject.cpp (EventObject::Dispose): Call
22201         SetSurface (NULL)
22202         (EventObject::unref): Don't call SetSurface() here anymore.
22204 2008-08-01  Michael Dominic K.  <mdk@mdk.am>
22206         * runtime.cpp|h: Adding few utility functions to modify the flags
22207         at runtime -- provided that there are no surfaces currently
22208         present. Would be nice to be able to somehow do it before calling
22209         runtime_init ().
22211 2008-08-01  Michael Dominic K.  <mdk@mdk.am>
22213         * runtime.cpp|h: Adding an expose handoff custom
22214         function that can be set on surface.  It's called just after
22215         render_cb when something has been updated on the screen.
22217 2008-08-01  Michael Dominic K.  <mdk@mdk.am>
22219         * runtime.cpp|h: Adding a global surface list and an
22220         ability to access it.  I have a bad feeling we need some locking
22221         in the _get_surface_list function.
22223 2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22224         
22225         * src.mdp: Updated.
22227 2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
22229         This is the proper fix for bug #412443
22231         * visual.cpp (VisualCollection::Dispose): Implement Dispose()
22232         method.
22233         (VisualCollection::RemovedFromCollection): Now that we know we are
22234         disposing, we can unset VisualParent here instead of in our
22235         dtor/Dispose() method, saving us from having to interate over our
22236         children twice.
22238         * collection.cpp (Collection::Dispose): Implement a Dispose()
22239         method which does what the dtor used to do.
22241         * dependencyobject.cpp (EventObject::unref): Call Dispose() just
22242         before deleting the object.
22244 2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
22246         * dependencyobject.cpp (struct Listener): Comment out the listener
22247         reffing from previous commit. I don't think this is correct.
22249         * visual.cpp (VisualCollection): Set z_sorted to NULL after
22250         freeing it so that parent class dtor calling
22251         RemovedFromCollection() will not poke at free'd memory.
22253 2008-07-31  Geoff Norton  <gnorton@novell.com>
22255         * Makefile.am: Undo part of the recent Makefile changes as they broke 
22256         the 1.0 build.
22258 2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
22260         Fixes bug #412443
22262         * dependencyobject.cpp (DependencyObject::AddPropertyChangeListener):
22263         Ref the listener.
22264         (DependencyObject::RemovePropertyChangeListener): Unref the listener.
22266 2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
22268         * animation.cpp (KeyFrameCollection::RemovedFromCollection): Oops,
22269         this needs to chain up to
22270         DependencyObjectCollection::RemovedFromCollection() rather than
22271         AddedToCollection(). Duh.
22273 2008-07-30  Jeffrey Stedfast  <fejj@novell.com>
22275         * contentcontrol.cpp|h: Added.
22277         * enums.h: Moved some font/text enums here from font.h
22279 2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22281         * dependencyproperty.cpp: Fix build.
22283 2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22285         * runtime.cpp: Fix 1.0 build.
22287 2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22289         * dependencyproperty.cpp, dependencyproperty.h, runtime.cpp, runtime.h,
22290           type.cpp, type.h, type.h.in, typegen/typegen.cs,
22291           type-generated.cpp: Store DependencyProperties in the Type* instead
22292           of a hashtable keyed on the kind.
22294 2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22296         * dependencyobject.cpp: IsValueValid: treat all MANAGED types as valid,
22297           given that since we might not have access to the surface where the
22298           type was registered, it's not possible to do any type checking 
22299         * dependencyproperty.cpp, dependencyproperty.h, runtime.cpp, runtime.h:
22300           Implement registration of managed properties on a surface.
22301         * type.cpp, type.h, type.h.in: Implement a Type::Find which can look in
22302           types registered on a surface, added a Type::MANAGED enum value.
22303         * typegen/typegen.cs, type-generated.cpp, value.h, value.h.in: Add a
22304           MANAGED type.
22306 2008-07-29  Jeffrey Stedfast  <fejj@novell.com>
22308         * text.cpp (inline_new): Added.
22310 2008-07-29  Jackson Harper  <jackson@ximian.com>
22312         * xaml.cpp: Add a set_parent call, I need to do some fanagling
22313         there so collection items don't have their parents set.
22314         - Managed items that are being hydrated or created using x:Class
22315         need to get content properties from the managed world.
22316         
22317 2008-07-28  Chris Toshok  <toshok@ximian.com>
22319         * value.cpp, value.h.in, value.h, type.h, typegen/typegen.cs,
22320         type-generated.cpp: Add Size foo.
22322 2008-07-28  Jeffrey Stedfast  <fejj@novell.com>
22324         * value.cpp (Value::FreeValue): Oops, free Thickness.
22326 2008-07-28  Chris Toshok  <toshok@ximian.com>
22328         * control.h (struct Thickness): reorder fields to match managed
22329         struct.
22331 2008-07-28  Jeffrey Stedfast  <fejj@novell.com>
22333         * typegen/typegen.cs: Added Thickness.
22335         * value.h.in, type.h.in: Added Thickness.
22337         * value.cpp: Implemented Thickness value ctor/etc.
22339         * enums.h: Added more 2.0-specific enums.
22341         * control.cpp|h: Implemented property accessors/bindings and
22342         Thickness struct.
22344 2008-07-28  Michael Dominic K.  <mdk@mdk.am>
22346         * animation.cpp: When starting an SB that has been started already make sure to
22347         remove the Completed handler before the teardown. Fixes #405518.
22349 2008-07-28  Chris Toshok  <toshok@ximian.com>
22350         
22351         * collection.cpp (collection_iterator_next): move the check for
22352         index-in-range to after the increment of it.  that way managed
22353         code doesn't step off the end of the list.
22355 2008-07-26  Chris Toshok  <toshok@ximian.com>
22357         * eventargs.h, eventargs.cpp: some 2.0 event stuff.  Make the
22358         MouseEventArgs and KeyboardEventArgs classes subclasses of a new
22359         class - RoutedEventArgs.  Also, add a "Handled" field to both
22360         MouseEventArgs and KeyboardEventArgs.  Lastly add a "Keyboard"
22361         class to map to the 2.0 static Keyboard class.  it exposes nothing
22362         but a Modifiers property, which isn't updated at present, but will
22363         be by the Surface code (in the key event handler).
22365         * type.h, value.h, type-generated.cpp: sync - new ROUTEDEVENTARGS
22366         type/value.
22368 2008-07-26  Chris Toshok  <toshok@ximian.com>
22370         * enums.h (enum ModifierKey): 2.0 specific enum for use by the
22371         Keyboard class.
22373 2008-07-26  Jackson Harper  <jackson@ximian.com>
22375         * xaml.cpp: If there isn't a managed content property, try looking
22376         for an unmanaged one.
22378 2008-07-26  Jackson Harper  <jackson@ximian.com>
22380         * xaml.h|cpp: Create elements for imported managed namespaces.
22381         
22382 2008-07-25  Chris Toshok  <toshok@ximian.com>
22384         * runtime.h, runtime.cpp: reformat the class decl to put public:
22385         stuff first.  add "bool silverlight2" to the surface ctor so we
22386         can start to use it for behavioral differences (routed event
22387         handlers, key events, focus, etc).
22389 2008-07-25  Jeffrey Stedfast  <fejj@novell.com>
22391         * stylus.h (StrokeCollection::CanAdd): Strokes can exist in
22392         multiple StrokeCollections at a time but they cannot be added to
22393         the same collection multiple times. Do not default to
22394         DependencyObjectCollection::CanAdd()'s behavior because it checks
22395         that the logical parent is unset (which will not be accurate for
22396         strokes).
22397         (StylusPointCollection): Same as StrokeCollection.
22399         * xaml.cpp (dependency_object_add_child): Set the logical parent
22400         of items to NULL before adding them to a collection.
22402         * collection.h (class Collection): Removed 'unique' field, it's
22403         not necessary afterall.
22404         (Collection::CanAdd): New virtual method to check if the value can
22405         be added to the collection (by default always returns true).
22406         (DependencyObjectCollection::CanAdd): Override CanAdd() by
22407         checking if the object being added has a logical parent. If it
22408         already has a parent, it cannot be added (this is how Silverlight
22409         behaves).
22411         * collection.cpp (Collection::Add): There's no such thing as
22412         'unique' anymore. Don't check if the value is already contained
22413         within our collection like the old code used to do, instead call
22414         our new virtual method CanAdd() to see if we can add it.
22415         (Collection::Insert): Check CanAdd().
22416         (Collection::SetValueAt): Check CanAdd().
22418 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
22420         * collection.cpp (collection_add): Fixed.
22422         * collection.h: Get rid of convenience wrappers that aren't even
22423         used. Also removes the need for previous commit.
22425 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
22427         * collection.h (class DependencyObjectCollection): Add virtual
22428         Add(), Clear() and Insert(). This makes it possible for subclasses
22429         to chain up if they need to override any of these.
22430         (class DoubleCollection): Same.
22431         (class PointCollection): Here too.
22433         * visual.cpp (VisualCollection::Clear): Chain up to
22434         DependencyObjectCollection::Clear() rather than
22435         Collection::Clear().
22436         (VisualCollection::Insert): Don't bother resizing the z_sorted
22437         array here, it will be done inside ResortByZIndex() anyway.
22438         (VisualCollection::Insert): Chain up to
22439         DependencyObjectCollection::Insert() rather than
22440         Collection::Insert()
22442 2008-07-24  Geoff Norton  <gnorton@novell.com>
22444         * downloader.cpp: When a downloader is reused reset the completed
22445         state when we get the new Open call.
22447 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
22449         * text.cpp (inlines_simple_text_equal): Fixed a stupid typo.
22451         * collection.cpp (DependencyObjectCollection::RemovedFromCollection):
22452         Unregister the NameScope the same way the old Collection::Remove()
22453         way did it. This way seems the most correct (RemoveAt() was
22454         totally broken and SetVal() doesn't seem right afterall).
22456 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
22458         * collection.cpp: Added c-wrappers for creating new
22459         collections. Also changed the c-bindings for
22460         setting/adding/inserting/etc items to the collection to take
22461         Value* instead of Value. Should make it simpler for the managed
22462         code to pass that.
22464 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
22466         * collection.cpp (DependencyObjectCollection::RemovedFromCollection):
22467         Unregister the NameScope the same way it was done in the more
22468         common case in the old code (why were there different ways?).
22470         * text.cpp (TextBlock::OnCollectionChanged): Chain up.
22471         (TextBlock::OnCollectionItemChanged): Same.
22473         * brush.cpp (GradientBrush::OnCollectionChanged): Chain up.
22474         (GradientBrush::OnCollectionItemChanged): Chain up and notify
22475         listeners.
22477         * geometry.cpp (GeometryGroup::OnCollectionChanged): Chain up.
22478         (GeometryGroup::OnCollectionItemChanged): Chain up and notify
22479         listeners.
22480         (PathGeometry::OnCollectionChanged): Chain up.
22481         (PathGeometry::OnCollectionItemChanged): Chain up and notify
22482         listeners.
22483         (PathFigure::OnCollectionChanged): Chain up.
22484         (PathFigure::OnCollectionItemChanged): Chain up and notify
22485         listeners.
22487         * shape.cpp (Polygon::OnCollectionChanged): Chain up.
22488         (Polygon::OnCollectionItemChanged): Same.
22489         (Polyline::OnCollectionChanged): Same.
22490         (Polyline::OnCollectionItemChanged): Same.
22492         * stylus.cpp (Stroke::OnCollectionItemChanged): Need to
22493         call NotifyListersOfPropertyChange().
22495         * transform.cpp (TransformGroup::OnCollectionItemChanged): Need to
22496         call NotifyListersOfPropertyChange().
22498 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
22500         * collection.cp|h: Reworked Collections a lot. Collection is now a
22501         generic collection of Values. Added 3 new collections:
22502         DependencyObjectCollection (which holds DO's like the old
22503         Collection class did), DoubleCollection and PointCollection.
22505         * dependencyobject.h (DependencyObject::OnCollectionChanged):
22506         Changed the way this works to reflect the managed API.
22508         *.cpp|h: Updated to reflect above changes.
22510 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
22512         * utils.cpp (g_ptr_array_insert): New utility function.
22513         (g_ptr_array_insert_sorted): Call g_ptr_array_insert() once we
22514         find the index where we want to add the item.
22516 2008-07-23  Chris Toshok  <toshok@ximian.com>
22518         * panel.cpp, xaml.cpp, stylus.cpp, usercontrol.cpp, canvas.cpp,
22519         transform.cpp, grid.cpp, animation.cpp, text.cpp,
22520         dependencyproperty.h, dependencyproperty.cpp, uielement.cpp,
22521         geometry.cpp, shape.cpp, dependencyobject.cpp,
22522         frameworkelement.cpp, media.cpp, brush.cpp: a couple of
22523         DependencyPropertyChanges:
22525         1. switch to the Silverlight/WPF naming of the two Types.
22526         type/value_type change to owner_type/property_type.
22528         2. go all gtk-3.0, and make things private with accessors.
22530 2008-07-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22532         * animation.cpp, brush.cpp, canvas.cpp, clock.cpp, collection.cpp,
22533           dependencyobject.cpp, dependencyobject.h, dependencyproperty.cpp,
22534           dependencyproperty.h, deployment.cpp, downloader.cpp,
22535           frameworkelement.cpp, geometry.cpp, grid.cpp, media.cpp,
22536           namescope.cpp, panel.cpp, runtime.cpp, shape.cpp, stylus.cpp,
22537           text.cpp, transform.cpp, trigger.cpp, uielement.cpp,
22538           usercontrol.cpp, xaml.cpp: Move Register(Full|Nullable) and
22539           GetDependencyObject from DependencyObject to DependencyProperty.
22541 2008-07-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22543         * dependencyobject.h, dependencyproperty.h, Makefile.am,
22544           dependencyproperty.cpp, src.mdp, dependencyobject.cpp: Move
22545           DependencyProperty to its own file before it grows bigger.
22547 2008-07-21  Jackson Harper  <jackson@ximian.com>
22549         * xaml.cpp: Add back in the ability to create elements from
22550         managed elements using the x:Class syntax.
22552 2008-07-21  Jackson Harper  <jackson@ximian.com>
22554         * user-control.h:
22555         * type-generated.cpp: The UserControl's Content Property name is
22556         Content not ContentProperty.
22558 2008-07-21  Jeffrey Stedfast  <fejj@novell.com>
22560         * collection.cpp (collection_add): Fixed to return int.
22562 2008-07-21  Jackson Harper  <jackson@ximian.com>
22564         * xaml.cpp: Add support for parsing GridLength attribute values.
22566 2008-07-19  Geoff Norton  <gnorton@novell.com>
22568         * mms-downloader.(cpp|h):  Ensure that we always stream-select a marker
22569         stream when there is one available.  Fixes drt #2.
22570         Refactor some code duplication into a utility method.
22572 2008-07-19  Jackson Harper  <jackson@ximian.com>
22574         * xaml.cpp: We can't blindly assume an object has a content
22575         property.
22577 2008-07-19  Jackson Harper  <jackson@ximian.com>
22579         * type-generated.cpp: UserControl has a content property.
22580         * value.h|.h.in|.cpp: Add GridLength to Value.
22582 2008-07-18  Geoff Norton  <gnorton@novell.com>
22584         * media.cpp: Revert InitialBuffer work around as it has some unexpected
22585         consequences. :(
22587 2008-07-18  Geoff Norton  <gnorton@novell.com>
22589         * media.cpp: Clear the InitialBuffer state when we seek as well, as that will
22590         get a new burst from the mms server with AccelBW.
22592 2008-07-18  Geoff Norton  <gnorton@novell.com>
22594         * media.cpp: If we're using a mms source we can attempt to start playing the 
22595         first time before the entire 5s buffer is full due to AccelBW/AccelDuration.
22596         Fixes c9 stream start lag.
22598 2008-07-18  Geoff Norton  <gnorton@novell.com>
22599         
22600         * mms-downloader.cpp: Set LinkBW, AccelBW and AccelDuration so we can fill
22601         our initial buffer quickly.
22603 2008-07-18  Geoff Norton  <gnorton@novell.com>
22605         * pipeline.(cpp|h), mp3.(cpp|h): Break mp3 out into its own files.
22606         * Makefile.am: Add mp3.(cpp|h) to the build.
22607         * pipeline-ffmpeg.cpp: MP3 streamed over asf will bunch multiple frames
22608         together, so we need to split them up and pass them to avcodec_decode_audio2
22609         one at a time.  Its also possible that we could get a partial frame, so we need
22610         to buffer that data. Fixes mms+mp3.
22612 2008-07-18  Jeffrey Stedfast  <fejj@novell.com>
22614         Fix for bug #410206
22616         * text.h (TextBlock::GetBoundingHeight): Return the larger of the
22617         2 values.
22618         (TextBlock::GetBoundingWidth): Same.
22620 2008-07-18  Chris Toshok  <toshok@ximian.com>
22622         * Makefile.am (libmoon_include_HEADERS): add window.h and
22623         window-gtk.h
22624         (libmoon_la_SOURCES): add window-gtk.cpp
22626         * window.h: abstract class for windows, that surface will use to
22627         deal with window/widget level operations.
22629         * window-gtk.h, window-gtk.cpp: MoonWindow implementation using
22630         gtk widgets.
22632         * runtime.h, runtime.cpp: factor out all the widget stuff from
22633         this file, along with all "width" and "height" fields.  now
22634         Surface knows nothing about widgets or windowless.  It speaks to
22635         MoonWindow implementations instead.  Add several public methods
22636         that the window implementations can call (anything HandleUI*) to
22637         communicate events back to the surface.
22639         * canvas.cpp: surface->Get{Width,Height} ==>
22640         surface->GetWindow()->Get{Width,Height}.
22641         
22642 2008-07-18  Michael Dominic K.  <mdk@mdk.am>
22644         * clock.cpp:
22645         * media.cpp: Reverting prev change, different solution: process the tick calls
22646         before processing the render.
22648 2008-07-18  Michael Dominic K.  <mdk@mdk.am>
22650         * media.cpp: If the downloader is already completed, don't do an extra async 
22651         call when setting source. Fixes the downloader-set-source... testcase.
22653 2008-07-18  Michael Dominic K.  <mdk@mdk.am>
22655         * media.cpp: Fixing a crasher in case bad parameters passed from js.
22657 2008-07-18  Jackson Harper  <jackson@ximian.com>
22659         * xaml.h: New delegates and functions for the loader.  We need to
22660         call back into managed code when we import a xaml namespace so
22661         that it knows which objects are available and we need a new
22662         function for creating those objects.
22664 2008-07-18  Jackson Harper  <jackson@ximian.com>
22666         * usercontrol.cpp|h: Add C functions for accessing the Content
22667         element.
22669 2008-07-17  Jackson Harper  <jackson@ximian.com>
22671         * type.h:
22672         * value.h:
22673         * type-generated.cpp:
22674         * deployment.cpp|h: Add an Application type.  This doesnt directly
22675         map to the managed Application because it inherits from
22676         DependencyObject, but it allows us to parse Application XAML files
22677         and then we can pull the values we need.
22679 2008-07-17  Jackson Harper  <jackson@ximian.com>
22681         * libmoon.h: Add usercontrol.h, I want access to this in the
22682         plugin debug code.
22684 2008-07-17  Jackson Harper  <jackson@ximian.com>
22686         * xaml.cpp: Had a backwards IsSubclassOf here causing
22687         UserControl's content property to not get set (and I imagine many
22688         other content properties).
22689         * usercontrol.h: Add the ContentProperty metadata.
22691 2008-07-17  Stephane Delcroix  <sdelcroix@novell.com>
22693         * downloader.h|cpp: provide hooks for DownloadeRequest
22695 2008-07-17  Jeffrey Stedfast  <fejj@novell.com>
22697         * pipeline.cpp (FileSource::ReadInternal): EOF isn't an error.
22699         * runtime.cpp (surface_create_downloader): We need to actually
22700         return the downloader here or our caller will just get garbage ;-)
22702 2008-07-17  Michael Dominic K.  <mdk@mdk.am>
22704         * clock.cpp: When _USE_IDLE_HINT is not sent, don't do idle hinting.
22706         * runtime.h: On desktop and browser by default use idle hinting.
22708 2008-07-17  Michael Dominic K.  <mdk@mdk.am>
22710         * runtime.cpp: Adding "idlehint" to moonlight overrides that will 
22711         control the use of idle hint in the clocks.
22713 2008-07-17  Stephane Delcroix  <sdelcroix@novell.com>
22714         
22715         * runtime.h|cpp: add surface_get_downloader
22717 2008-07-16  Larry Ewing  <lewing@novell.com>
22719         * runtime.cpp: try to get the resize logic correct for all cases,
22720         including popfly, ControlState.htm and fullscreen tests.
22722         Fixes the (non)rendering issues in the popfly game creator.
22724 2008-07-16  Geoff Norton  <gnorton@novell.com>
22726         * mplayer.cpp: Its possible that extremely small audio files will
22727         never fill the sound buffer enough causing us to never call snd_pcm_open.
22728         Ensure that we open the buffer to play the sound before shutting down
22729         the player.
22731 2008-07-16  Geoff Norton  <gnorton@novell.com>
22733         * pipeline.cpp: Update to be able to build with LOG_PIPELINE still
22735 2008-07-16  Sebastien Pouliot  <sebastien@ximian.com>
22737         * layout.cpp: (TextLayout::LayoutWrap) Don't let actualWidth be 
22738         greater than Width. Fix MS DRT#184 and #208. ALso makes #206 
22739         looks better (but it already passed)
22741 2008-07-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22743         * pipeline.cpp, pipeline.h: ProgressiveSource: clean up a bit, this
22744           class doesn't do anything live/mms anymore. LiveSource: removed
22745           completely, never used. Added MemoryNestedSource to wrap another
22746           MemorySource without messing with its current position pointer.
22747           MemoryQueueSource: store already parsed packets instead of
22748           MemorySources in the queue, saves a memory allocation and prevents
22749           parsing each packet twice when buffering (once for the code which
22750           determines the last available pts, and again for the normal
22751           demuxing code path).
22752         * mms-downloader.cpp: Updated to not delete asf parser, unref it
22753           instead.
22754         * mplayer.cpp: Enqueue 3 audio frames instead of 10, makes the pipeline
22755           wait a bit longer before ending up waiting for more data (which
22756           causes the MediaElement to go into buffering mode).
22757         * media.cpp: ProgressiveSource ctor doesn't take any bool arguments
22758           anymore.
22760 2008-07-15  Larry Ewing  <lewing@novell.com>
22762         * dirty.cpp (Surface::AddDirtyElement): quick patch from toshok to
22763         fix a regression in the fullscreen message code.
22765 2008-07-15  Jb Evain  <jbevain@novell.com>
22767         * deployment.cpp|h: start updating Deployment to sl2b2.
22769 2008-07-15  Jb Evain  <jbevain@novell.com>
22771         * deployment.h: remove SupportedCulture and SupportedCultureCollection
22772         as they no longer exist.
22773         * value.h, type.h, type-generated.cpp: regenerate.
22775 2008-07-15  Jb Evain  <jbevain@novell.com>
22777         * deployment.cpp|h: rename RuntimeVersion DP to RuntimeVersionProperty.
22779 2008-07-15  Jb Evain  <jbevain@novell.com>
22781         * list.cpp: set pointers to NULL instead of 0.
22783 2008-07-14  Geoff Norton  <gnorton@novell.com>
22785         * mplayer.cpp: If we've already reached the EOF in the audio stream
22786         don't keep processing GetNextBuffer.  This was causing us to emit
22787         MediaEnded more than once, causing failures in the test suite.
22789 2008-07-14  Geoff Norton  <gnorton@novell.com>
22791         * downloader.cpp:  Change completed to check a bool instead of 
22792         filename, as filename can now be set before the downloader is in fact
22793         completed.
22795 2008-07-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22797         * media.cpp: Initialize Media with our downloader.
22798         * pipeline.cpp: Media::Open: Check if the source has ended while
22799           waiting for an asfparser. Remove print_stack_traces.
22801 2008-07-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22803         * internal-downloader.h: Add InternalDownloader::GetType to allow the
22804           derived internal downloader to tell what kind of internal
22805           downloader it is.
22806         * file-downloader.h: Implement InternalDownloader::GetType.
22807         * downloader.h: Make the internal downloader publicly accessible. Add a
22808           Downloader::IsAborted method.
22809         * mms-downloader.h, mms-downloader.cpp: Implement
22810           InternalDownloader::GetType. Store the ASFParser we create in the
22811           class instance, so that the pipeline can get it. No need to write
22812           the header packet to the stream anymore.
22813         * media.cpp: Don't unref in AddTickCall callbacks anymore. Fix
22814           calculation of buffering progress to take into account that the
22815           currently available pts might be before the last played pts.
22816         * mplayer.cpp, mplayer.h, downloader.cpp: Don't unref in AddTickCall
22817           callbacks anymore.
22818         * pipeline.cpp, pipeline.h: Make the Media ctor take a Downloader
22819           argument and access the internal mms downloader on that Downloader
22820           to get the asf parser. Remove Read/Seek support from
22821           MemoryQueueSource, and just add a Pop method which returns a
22822           MemorySource for the next packet in the queue. Also add support to
22823           return all the packets in the queue as an array so that the
22824           ASFParser can easily determine the last pts available.
22825         * clock.cpp, clock.h: Use our own thread-safe Queue instead of GList +
22826           g_mutex. Also make TickCall take a ref to the data parameter until
22827           the tick call has been made. This also ensures that the data
22828           parameter gets unreffed correctly when the tick call is never made
22829           (such as when we skip calls due to the TimeManager getting shut
22830           down).
22831         * dependencyobject.cpp: Don't ref in AddTickCall anymore.
22833 2008-07-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22835         * playlist.cpp: Fix warning.
22837 2008-07-11  Sebastien Pouliot  <sebastien@ximian.com>
22839         * font.cpp: (FontFace::LoadGlyph) Use linearHoriAdvance instead 
22840         of horiAdvance since the later is rounded to an integer. FixMS
22841         DRT#45 and get better results (less differences) on many font
22842         related tests.
22844 2008-07-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22846         * http-streaming.cpp, playlist.cpp: Add missing #include <config.h>
22848 2008-07-11  Sebastien Pouliot  <sebastien@ximian.com>
22850         * font.cpp: (font_conic_to) Directly use moon_quad_curve_to 
22851         instead of doing it's own second to third order calculation.
22853 2008-07-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22855         * mplayer.cpp: Don't store target pts from audio thread if we're paused
22856           (audio thread might not have gotten the pause request yet).
22858 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22860         * pipeline.cpp: Don't Signal more than once. I have no idea why the
22861           waiting thread doesn't wake up though.
22862         * mplayer.cpp: Comment out a printf, and always break the play loop
22863           when we're doing rw access.
22865 2008-07-10  Sebastien Pouliot  <sebastien@ximian.com>
22867         * geometry.cpp|h: Remove useless code for computing bounds on
22868         PathFigure (now all handled at PathGeometry level).
22870 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22872         * mplayer.cpp: Fix a couple of leaks.
22874 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22876         * pipeline.cpp: There's no need to call AudioPlayer::Initialize
22877           anymore.
22878         * runtime.cpp, runtime.h: Added
22879           RUNTIME_INIT_AUDIO_NO_MMAP/audio=mmap|rw to runtime flags.
22880         * mplayer.cpp, mplayer.h: Implement support for using RW access mode in
22881           addition to the already supported MMAP access mode for alsa. This
22882           also required a major refactoring to only call alsa on the audio
22883           thread due to buggy pulseaudio hanging us (and the rest of the
22884           machine) otherwise.
22886 2008-07-10  Sebastien Pouliot  <sebastien@ximian.com>
22888         * shape.cpp|h: (ComputeStretchBounds) Move shape-specific code
22889         inside each type (and out of the general case).
22891 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22893         * dependencyobject.cpp: Fix leak.
22895 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22897         * debug.cpp: Make valgrind happy.
22899 2008-07-09  Geoff Norton  <gnorton@novell.com>
22901         * media.cpp: Ensure that we clear our old loader when we set
22902         a new source.
22904 2008-07-09  Fernando Herrera  <fherrera@novell.com>
22906         * pipeline.cpp: Always set MemoryQueueSource element's size
22907         based to offset+n even for live sources.
22909 2008-07-09  Jeffrey Stedfast  <fejj@novell.com>
22911         Fixes for bug #406934
22913         * text.cpp (Glyphs::SetSurface): Override so that we can start
22914         downloading the font as soon as the element gets (re)attached.
22915         (Glyphs::OnPropertyChanged): If we aren't attached, set
22916         uri_changed to true so that when we are (re)attached, we can start
22917         the download.
22919         * media.cpp (MediaBase::MediaBase): Init new state variable
22920         'source_changed' to false.
22921         (MediaBase::SetSurface): If source_changed and we are being
22922         attached to a surface, initiate a download.
22923         (MediaBase::SetSource): Set source_changed to false.
22924         (MediaBase::OnPropertyChanged): Handle SourceProperty changes for
22925         our subclasses.
22926         (MediaElement::OnPropertyChanged): Don't handle SourceProperty
22927         changes anymore, let MediaBase do that for us.
22928         (Image::OnPropertyChanged): Same.
22930 2008-07-09  Geoff Norton  <gnorton@novell.com>
22932         * mms-downloader.cpp: Remove the guard we had against copying
22933         random memory and provide the correct amount of data to the 
22934         pipeline from each packet.
22936 2008-07-09  Geoff Norton  <gnorton@novell.com>
22937         
22938         * downloader.(cpp|h): NotifyFinished is now the finished
22939         event.  The filename will be set (if available) in SetFilename.
22940         * media.(cpp|h): Change to progressivly loading the image
22941         where available (fixes popfly).  We still fallback to file loading
22942         for the JS downloader case for now.
22944 2008-07-09  Larry Ewing  <lewing@novell.com>
22946         * runtime.cpp (Surface::motion_notify_callback): don't call
22947         get_pointer when in windowless mode, I don't think we can trust
22948         the results.
22950         * runtime.h (class Surface): make widget public so that we can
22951         peek at it in windowless mode.
22953 2008-07-08  Sebastien Pouliot  <sebastien@ximian.com>
22955         * xaml.cpp: Always do a move after closing a path. Fix DRT test
22956         #138 (even if it was passing too!) for a bad (extra) arc.
22958 2008-07-08  Larry Ewing  <lewing@novell.com>
22960         * runtime.cpp, runtime.h: remove a bunch of code rot relating to
22961         temporary cairo surfaces that is no longer used.
22963 2008-07-08  Sebastien Pouliot  <sebastien@ximian.com>
22965         * shape.cpp: Consider PenLineCap when computing bounds using
22966         cairo. Fix (even if it was passing) some corners in DRT test #7
22968 2008-07-08  Jeffrey Stedfast  <fejj@novell.com>
22970         * xaml.h: Reorganized a bit.
22972 2008-07-07  Chris Toshok  <toshok@ximian.com>
22974         * dirty.cpp (Surface::AddDirtyElement): don't add elements to the
22975         list if they lack a visual parent (and aren't the toplevel.)
22976         Fixes bug #406935.
22978 2008-07-07  Larry Ewing  <lewing@novell.com>
22980         * shape.cpp (Rectangle::BuildPath): handle some special case
22981         degenerates slightly differently.
22983         Fixes most of test-shape-rectangle-matrix.xaml.
22985 2008-07-07  Larry Ewing  <lewing@novell.com>
22987         * shape.cpp (Ellipse::BuildPath): a thickness equal to a width
22988         degenerates in drawing, use the workaround there too.
22990         Fixes shape #5 in test/xaml/assorted/stroke-thickness-test.html
22992 2008-07-03  Larry Ewing  <lewing@novell.com>
22994         * geometry.cpp (RectangleGeometry::ComputeBounds): simplify the
22995         rectangle geometry computation.  It matches in the sl
22996         implementation now.
22998         * shape.cpp: simplify rectangle and ellipse drawing and bounds so
22999         that they match the sl implementation and deal with degenerate
23000         cases better.  Try to avoid setting up a clip rectangle when it
23001         isn't needed.
23003 2008-07-07  Chris Toshok  <toshok@ximian.com>
23005         [ fixes the media element not showing up in flowers-for-you, bug
23006         #382490. ]
23007         * media.h, media.cpp: move Image::use_img_{width,height} and
23008         Image::updating into MediaBase and rename then
23009         use_media_{width,height} and updating_size_from_media.
23010         (MediaElement::OnPropertyChanged) duplicate the
23011         WidthProperty/HeightProperty stuff here (c&p from
23012         Image::OnPropertyChanged - this should probably just be refactored
23013         to MediaBase.  will do this later).
23014         (MediaBase::ComputeBounds): we don't need the subclass
23015         ComputeBounds methods.  Just put it here, as they share the same
23016         behavior.
23017         (MediaElement::SetMedia): remove the call to ComputeBounds here,
23018         since the new block of use_media_{width,height} checks will call
23019         UpdateBounds if they need to.
23020         
23021 2008-07-07  Fernando Herrera  <fherrera@novell.com>
23023         * media.cpp:
23024         * pipeline.cpp:
23025         * pipeline.h: Implement MemoryQueueSource::NotifyFinished so
23026         we don't wait for new packets when the downloader has finished.
23027         Also calculate size based on offset + n for mms streams, so the
23028         ASFReader can check Eof based on positions.
23030 2008-07-05  Chris Toshok  <toshok@ximian.com>
23032         * dirty.cpp: remove the down_dirty_node_succ and
23033         up_dirty_node_pred code from here.  it arguably helped speed up
23034         insertions into the dirty lists, but at the cost of lots of
23035         dangling pointers.  we always walk up the tree looking for a
23036         down/up node.  works, and is much simpler.  and fixes bug #362561.
23038         * uielement.h, uielement.cpp: remove the down_dirty_node_succ and
23039         up_dirty_node_pred code.
23040         
23041 2008-07-04  Sebastien Pouliot  <sebastien@ximian.com>
23043         * xaml.cpp: Avoid a SIGSEGV in dependency_object_set_attributes
23044         when the atchname is invalid.
23046 2008-07-04  Chris Toshok  <toshok@ximian.com>
23048         * runtime.cpp (Surface::EmitEventOnList): don't leak the event
23049         args here.
23051 2008-07-03  Chris Toshok  <toshok@ximian.com>
23053         * animation.h, animation.cpp: the *KeyFrame KeySplineProperty
23054         values need to be initialized in the ctors, not in animation_init.
23056 2008-07-03  Sebastien Pouliot  <sebastien@ximian.com>
23058         * shape.cpp: Add back the cairo_[save|restore] in ::Draw methods
23059         since they are needed for stretching.
23061 2008-07-03  Jeffrey Stedfast  <fejj@novell.com>
23063         * text.cpp (TextBlock::Render): Check to see if we need to
23064         calculate layout before painting.
23066 2008-07-03  Sebastien Pouliot  <sebastien@ximian.com>
23068         * moon-path.c|h: Draw ellipse clockwise to match Silverlight.
23069         Also remove the closing point since it's not needed (but that was
23070         not the problem, just a small memory saving).
23071         [Re-fix bug #391684]
23073 2008-07-02  Jeffrey Stedfast  <fejj@novell.com>
23075         * text.h (TextBlock::GetBoundingWidth/Height): Use
23076         GetValueNoDefault() so we don't get 0.0 for the width/height if
23077         unset.
23079         Fixes for bug #404858
23081         * runtime.cpp: Added SHOW_TEXTBOXES bit flag.
23083         * layout.cpp: Don't keep track of bbox_width and height anymore,
23084         it was never actually set to anything other than
23085         actual_width/height anyway.
23087         * text.cpp (TextBlock::Paint): If SHOW_TEXTBOXES, render a green
23088         bounding box around the text (this is to aid in debugging text
23089         which may have a transform applied to it).
23091         * text.h (class TextBlock): Removed bbox_width and
23092         bbox_height. These were never anything other than
23093         actual_width/height respectively anyway.
23094         (TextBlock::GetBoundingWidth): Return the FrameworkElement::Width
23095         if set, else the ActualWidth.
23096         (TextBlock::GetBoundingHeight): Same.
23098 2008-07-02  Sebastien Pouliot  <sebastien@ximian.com>
23100         * shape.cpp: Remove cairo_save|restore from [Shape|Path]::Draw
23101         since their callers already do this. Simplify a bit Shape::
23102         InsideObject to check ret only if a Clip is present (instead of
23103         always checking it).
23105 2008-07-02  Chris Toshok  <toshok@ximian.com>
23107         * runtime.h, runtime.cpp: get rid of the cursor_func,
23108         invalidate_func, render_func stuff.  Instead use 3 virtual
23109         methods: SetCursor(GdkCursor*), Invalidate(Rect), and
23110         ProcessUpdates().  That way the plugin can instantiate a
23111         WindowlessSurface which overrides those methods instead of having
23112         the stupid callback mechanism we had.
23114 2008-07-02  Chris Toshok  <toshok@ximian.com>
23116         * runtime.h, runtime.cpp: virtualize SetCursor so the plugin can
23117         override the behavior.
23119 2008-07-02  Sebastien Pouliot  <sebastien@ximian.com>
23121         * moon-path.c: Revert ordering change I made in r105586 to fix
23122         a clipping issue (fillrule bug) as this breaks stroke dash (which
23123         confirm the original behaviour was the correct one).
23124         [Fix most of #404858]
23126 2008-07-01  Jeffrey Stedfast  <fejj@novell.com>
23128         Fixes for bug #405514.
23130         * text.cpp (TextBlock::Layout): If the Text property is empty,
23131         default the actualHeight to the font's height.
23132         (TextBlock::OnPropertyChanged): If the FrameworkElement::Width
23133         property changes, we need to set dirty to true (in most cases) so
23134         that the actual width/height values are recalculated.
23136 2008-06-30  Sebastien Pouliot  <sebastien@ximian.com>
23138         * shape.cpp|h: Use Cairo by default to ComputeBounds. In effect 
23139         this change Polyline and Polygon to use Cairo instead of (faster
23140         but less acurate) custom code. In reality PathGeometry (PML) is 
23141         much more used than those Poly[line|gon] and (upcoming) caching 
23142         negate much of the impact.
23143         * geometry.cpp: Use the more precise (and surviving) 
23144         calc_line_bounds function that accept PenLineCap.
23146 2008-06-30  Jeffrey Stedfast  <fejj@novell.com>
23148         * shape.cpp (Shape::OnPropertyChanged): If the Stroke property
23149         chanegs between null and an actual brush (in either direction),
23150         invalidate the cached path because the shape may need to
23151         recalculate the stroke offsets.
23153 2008-06-30  Sebastien Pouliot  <sebastien@ximian.com>
23155         * xaml.cpp: Move reading the first point of C|Q beziers into the 
23156         loop. Fix quite a few misrendering for http://xmldocs.net/ball
23157         [Partial fix for #404858]
23159 2008-06-30  Chris Toshok  <toshok@ximian.com>
23161         * dirty.cpp: add all the ordering smarts to keep the two dirty
23162         lists partially sorted.  hopefully this won't be a huge
23163         performance hit.
23165         * uielement.h, uielement.cpp: add 2 new dirty pointers.  a "succ"
23166         pointer for the down dirty list, and a "pred" for the up dirty
23167         list.
23169 2008-06-30  Jeffrey Stedfast  <fejj@novell.com>
23171         * list.cpp (List::InsertBefore): Handle a NULL @before.
23173 2008-06-30  Geoff Norton  <gnorton@novell.com>
23175         * mms-downloader.cpp: Rework Fernando's incomplete packet guard to be a little
23176         more sane while we determine how to fix this properly.
23178 2008-06-30  Jeffrey Stedfast  <fejj@novell.com>
23180         * shape.cpp (Shape::ComputeShapeBounds): Reverted my previous fix,
23181         it's not correct.
23182         (Ellipse::ComputeShapeBounds): Same.
23184 2008-06-30  Michael Dominic K.  <mdk@mdk.am>
23186         * animation.cpp: Make sure our default KeySplines parameters are correct
23187         to generate a linear dynamics curve as Silverlight. Fixes #404850.
23189 2008-06-30  Fernando Herrera  <fherrera@novell.com>
23191         * pipeline.cpp: don't use g_queue_clear as is present only in glib >= 2.14
23193 2008-06-30  Fernando Herrera  <fherrera@novell.com>
23195         * pipeline.h:
23196         * pipeline.cpp: Implement the packet writer MemoryQueueSource.
23197         * asf/asf.h:
23198         * asf/asf.cpp: 
23199         * media.h:
23200         * media.cpp: Use MemoryQueueSource for all mms streams
23201         * mms-downloader.cpp: Don't try to parse/write incomplete data packets.
23203 2008-06-29  Chris Toshok  <toshok@ximian.com>
23205         * panel.cpp (Panel::OnCollectionChanged): when the ZIndex of a
23206         child changes, invalidate them here.
23208         * dirty.cpp (Surface::ProcessDownDirtyElements): and remove the
23209         subtree invalidate from the zindex processing here.
23211 2008-06-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23213         * pipeline-ffmpeg.cpp: Add debug spew.
23214         * media.cpp: Remove debug spew.
23216 2008-06-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23218         * media.cpp, media.h: Add streamed markers to the media element on the
23219           main thread.
23221 2008-06-28  Geoff Norton  <gnorton@novell.com>
23223         * downloader.h: The finished event raises a success condition now
23224         so that we can notify failure on unsuccessful downloads.
23226 2008-06-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23228         * mplayer.h: Add AudioPlayer::Drain to drain whatever data the audio
23229           has stored, now called by the MediaPlayer when seeking. Execute the
23230           'seeking complete' logic on the main thread (marshalling
23231           SeekCallback to the main thread). Always use the thread-safe
23232           AddTickCallSafe instead of AddTickCall, and override
23233           EventSurface::SetSurface to lock/unlock the required locks.
23234         * mplayer.cpp: Add AudioPlayer::Drain to drain whatever data the audio
23235           has stored, now called by the MediaPlayer when seeking. Execute the
23236           'seeking complete' logic on the main thread (marshalling
23237           SeekCallback to the main thread), and set the previous_position on
23238           the MediaElement to the seeked-to position when the seek is
23239           finished. Always use the thread-safe AddTickCallSafe instead of
23240           AddTickCall, and override EventSurface::SetSurface to lock/unlock
23241           the required locks.
23242         * dependencyobject.cpp, dependencyobject.h: Split AddTickCall into a
23243           thread-safe version (AddTickCallSafe) and don't do any locking in
23244           AddTickCall. Add SetSurfaceLock/Unlock so that types overriding
23245           SetSurface can do the proper locking.
23246         * media.cpp, media.h: CheckMarkers: Don't try to detect seeking by
23247           comparing to/from pts, MediaPlayer will now set previous_position
23248           correctly when seeking. AdvanceFrame: only check markers if we
23249           advanced or if we're not seeking. SetSurface: add proper locking,
23250           and use AddTickCallSafe where appropiate.
23252 2008-06-27  Larry Ewing  <lewing@novell.com>
23254         * uielement.cpp (UIElement::OnPropertyChanged): opcacity mask
23255         affects the subtree as well.
23257 2008-06-27  Larry Ewing  <lewing@novell.com>
23259         * uielement.cpp (UIElement::OnPropertyChanged): on things that can
23260         potentially be trapped by the Invalidate visibility check we need
23261         to invalidate the whole subtree before we start processing the
23262         dirty lists to avoid ordering issues.
23264         Fixes test/xaml/assorted/rendering-glitches2.html.
23266 2008-06-27  Chris Toshok  <toshok@ximian.com>
23268         * panel.cpp (Panel::FrontToBack): add a special case for
23269         non-translucent (but NULL background) panels - we don't render
23270         them at all.
23272 2008-06-27  Larry Ewing  <lewing@novell.com>
23274         * panel.cpp (Panel::FrontToBack): treat opacity specially for
23275         panel since we need the right subtree render region in PreRender.
23277 2008-06-27  Jeffrey Stedfast  <fejj@novell.com>
23279         * downloader.cpp (dummy_downloader_create_web_request): Return
23280         NULL to fix a compile warning about control reaching the end of a
23281         non-void function.
23283 2008-06-27  Stephane Delcroix  <sdelcroix@novell.com>
23285         * downloader.[h|cpp]: move browserrequest/response from the plugin
23286         as downloaderrequest/response.
23288 2008-06-26  Chris Toshok  <toshok@ximian.com>
23290         * runtime.h (RUNTIME_INIT_DESKTOP, RUNTIME_INIT_BROWSER): enable
23291         the shape cache.
23293         * shape.h, shape.cpp (Shape::IsCandidateForCaching): remove the
23294         condition that was keeping small surfaces from being cached, so
23295         bubblemark gets a win from this (from ~38 to 70+ fps on my
23296         laptop).
23297         (Shape::ShiftPosition): if we have a cached surface, set the
23298         device offset to mirror the new bounds x/y.
23300 2008-06-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23302         * clock.h, clock.cpp, dependencyobject.h, downloader.cpp,
23303           dependencyobject.cpp, mplayer.h, media.h, mplayer.cpp, media.cpp:
23304           Change AddTickCall to take a TickCallHandler (EventObject*)
23305           function pointer and a EventObject * tick_data instead of untyped
23306           function pointer/tick_data.
23308 2008-06-26  Chris Toshok  <toshok@ximian.com>
23310         * dependencyobject.h,
23311         dependencyobject.cpp (DependencyProperty::DependencyProperty):
23312         convert the name to downcase prior to registering and prior to
23313         calling g_hash_table_lookup to remove the casecmp overhead from
23314         our key comparisons.  store the converted name in DP::hash_key.
23316         * runtime.h, runtime.cpp: remove strcase_equal (use g_strcasecmp)
23317         and strcase_hash.
23319         * type.cpp: strcase_equal -> g_strcasecmp.
23321         * playlist.cpp (PlaylistParser::OnStartElement): same.
23323 2008-06-26  Jeffrey Stedfast  <fejj@novell.com>
23325         * pipeline.cpp (ASXDemuxerInfo::Supports): Fix broken boolean
23326         logic/compiler warning and at the same time simplified.
23328         * shape.cpp (Shape::ComputeShapeBounds): Need to take stroke
23329         thickness into consideration. Fixes bug #400657.
23330         (Ellipse::ComputeShapeBounds): Same.
23332 2008-06-26  Chris Toshok  <toshok@ximian.com>
23334         * dirty.cpp (Surface::ProcessDownDirtyElements): add code to
23335         re-sort the children by zindex.
23337         * dirty.h (enum DirtyType): add DirtyChildrenZIndices.
23339         * panel.cpp (Panel::OnCollectionChanged): don't resort-by-zindex
23340         here.  just add it to the dirty list.
23342         * transform.h, transform.cpp: move the OnSubPropertyChanged method
23343         to MatrixTransform, so we can notify our listeners with the right
23344         property.
23346 2008-06-26  Chris Toshok  <toshok@ximian.com>
23348         * transform.h, transform.cpp (Transform::OnSubPropertyChanged): we
23349         need this to deal with sub-dependencyobjects of transforms (in
23350         this case, MatrixTransform's Matrix object.)  when you set
23351         properties on these subobjects, we need to update the transform.
23353 2008-06-26  Chris Toshok  <toshok@ximian.com>
23355         * brush.h, brush.cpp (Brush::OnSubPropertyChanged): add this (i
23356         think it used to be there and was removed by me in a flurry of
23357         propertychanged event fixing way back) to take care of brushes
23358         properly causing the uielement to invalidate when the Brush's
23359         transform/relativetransform changes.
23361 2008-06-26  Sebastien Pouliot  <sebastien@ximian.com>
23363         * geometry.h: #ifdef out GeometryFlags until we start using it.
23364         * shape.cpp: Remove unused global variable.
23366 2008-06-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23368         * mplayer.cpp: AudioFinished: Check if we still have audio when the
23369           callback is reached. Fixes test-double-stop.html.
23371 2008-06-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23373         * mplayer.cpp: When calculating start_time take into account current
23374           position. Fixes test-video-only-seek.html (and fox seeking without
23375           audio).
23377 2008-06-25  Jeffrey Stedfast  <fejj@novell.com>
23379         * mms-downloader.cpp: Got rid of overuse of this-> and some int vs
23380         uint comparisons.
23382 2008-06-25  Sebastien Pouliot  <sebastien@ximian.com>
23384         * geometry.cpp: Cache bounds, both logical and "physical" for
23385         PathFigure. This reduce the number of time we need to call 
23386         cairo_[path|stroke|fill]_extents functions and speed up many
23387         sites.
23388         * geometry.h: Add stuff needed for geometry.cpp changes.
23389         * xaml.cpp: Change geometry_from_str to directly create a 
23390         moon_path and avoid the PathFigure[Collection] DO. This match
23391         how Silverlight handle Path Markup Language (PML) and reduce
23392         memory requirements when huge PML are used.
23394 2008-06-24  Chris Toshok  <toshok@ximian.com>
23396         * shape.cpp (calc_offsets): we don't want to divide by the sin,
23397         because as angle approaches either 0, PI, or PI/2, the sin will
23398         approach 0, and therefore the deltas will grow very, very large.
23399         Turns out multiplying is what we want.
23401 2008-06-24  Larry Ewing  <lewing@novell.com>
23403         * runtime.cpp (Surface::Resize): set the width and height properly
23404         in the windowless case, let the widget resize logic handle it
23405         otherwise.
23406         (Surface:render_cb): don't process dirty elements if we are in a
23407         zombie state, just clear the dirty lists and move on.  Fixes a
23408         crash we were seeing when calling ForceRender on a zombie plugin.
23410 2008-06-24  Chris Toshok  <toshok@ximian.com>
23412         * runtime.cpp: in the switch from function pointer to integer in
23413         the HandleMouseEvent stuff, I didn't catch that C++ apparently
23414         doesn't flag NULL as different from 0.  This was causing the
23415         "HandleMouseEvent (NULL" to become effectively become
23416         "HandleMouseEvent (UIElement::DestroyedEvent" which of course
23417         breaks all sorts of things.  In bug 401884 it was causing the
23418         namescope to drop the named item from its hashtable, causing the
23419         tattoo needle to not move vertically.
23421 2008-06-23  Chris Toshok  <toshok@ximian.com>
23423         * uielement.cpp (UIElement::PreRender): comment from the code is
23424         changelog-worthy:
23425         
23426         we need this check because ::PreRender can (and will) be called
23427         for elements with empty regions.
23428         
23429         The region passed in here is the redraw region intersected with
23430         the render bounds of a given element.  For Panels with no
23431         width/height specified in the xaml, this region will be
23432         empty. (check panel.cpp::FrontToBack - we insert the ::PreRender
23433         calling node if either the panel background or any of the children
23434         intersect the redraw region.)  We can't clip to the empty region,
23435         obviously, as it will keep all descendents from drawing to the
23436         screen.
23438 2008-06-23  Chris Toshok  <toshok@ximian.com>
23440         * uielement.h, uielement.cpp (UIElement::ShiftPosition): virtualize
23441         the "bounds.x = p.x; bounds.y = p.y" code, since subclasses have
23442         other, more specialized bounds that also need updating.
23444         * panel.h, panel.cpp (Panel::ShiftPosition): new method, chain up
23445         to UIElement::ShiftPosition and also update bounds_with_children.
23447         * stylus.h, stylus.cpp (InkPresenter::ShiftPosition): new method,
23448         chain up to Canvas::ShiftPosition, and also update render_bounds.
23450 2008-06-23  Chris Toshok  <toshok@ximian.com>
23452         * canvas.cpp (Canvas::OnSubPropertyChanged): allow switching
23453         between UpdatePosition and UpdateTransform according to the
23454         updatepos=yes/no override.
23456         * runtime.h, runtime.cpp: add updatepos=yes/no override.
23457         
23458 2008-06-23  Michael Dominic K.  <mdk@mdk.am>
23460         * clock.cpp: Fixing a problem with repeating animations. Fixes #401983.
23462 2008-06-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23464         * media.cpp: Don't check markers if from > to, no markers will ever be
23465           found in that interval. Also detect forward seeks by checking the
23466           difference between from and to, if difference > 1s, behave as a
23467           seek (and don't emit markers in that interval). 
23468         * pipeline-ffmpeg.cpp: Give more missing information to ffmpeg.
23470 2008-06-20  Jeffrey Stedfast  <fejj@novell.com>
23472         * animation.h: Added "Property Accessor" comments and grouped the
23473         property accessors, etc.
23475         * dependencyobject.cpp (EventObject::SetSurface): Reworded debug
23476         printf.
23477         (EventObject::AddTickCall): Same.
23479         * dependencyobject.h (EventObject::GetSurface): Don't amke this
23480         virtual, nothing overrides it currently.
23482 2008-06-20  Michael Dominic K.  <mdk@mdk.am>
23484         * animation.cpp:
23485         * animation.h:
23486         * clock.cpp:
23487         * clock.h: When detaching/reattaching to Surface execute a special
23488         handler on clocks that (in case of animation clocks) removes the update
23489         property handler. This fixes the (regressed some time ago)
23490         StoryboardEnterLeave semantics test.
23492 2008-06-19  Jackson Harper  <jackson@ximian.com>
23494         * animation.h: 
23495         * type-generated.cpp: Make sure the content property is set.
23497 2008-06-19  Larry Ewing  <lewing@novell.com>
23499         * uielement.cpp (UIElement::PreRender): work around what appears
23500         to be a bug in the ftb logic by not clipping to the render region.
23502         * clock.cpp (SystemTimeSource::Start): make the timer priority
23503         DEFAULT again since otherwise we can get into starvation
23504         situations.
23506         * uielement.cpp (UIElement::PreRender): don't save/restore around
23507         the clip changes, they restrict the group bounds and speed up
23508         opacity related masking substantially.  (See bubblemark).
23510 2008-06-19  Jeffrey Stedfast  <fejj@novell.com>
23512         * font.cpp (FontFace::GetExtents): Only set face pixel size if the
23513         requested size is not what we already have set.
23514         (FontFace::LoadGlyph): Same.
23515         (FontFace::Kerning): Need to set pixel sizes here or our kerning
23516         could be off.
23518 2008-06-19  Chris Toshok  <toshok@ximian.com>
23520         * canvas.cpp (Canvas::OnSubPropertyChanged): call
23521         ui->UpdatePosition instead of UpdateTransform.  Since
23522         UpdateTransform calls UpdateBounds, this should save us a
23523         sometimes costly (in the case of Shape's) trip through
23524         ComputeBounds.
23526         * uielement.h, uielement.cpp: Add UpdatePosition (adds the dirty
23527         node) and ComputePosition (called from ProcessDownDirtyElements.)
23528         (UIElement::ComputePosition): Apply the inverse absolute transform
23529         to the bounds x/y, compute the new transform, then reapply it to
23530         the bounds x/y to compute our new position.
23531         (UIElement::UpdateTransform): clear the DirtyPosition flag.
23532         (UIElement::UpdatePosition): only add the DirtyPosition flag if
23533         the Dirty*Transform flags aren't already set.
23535         
23536         * dirty.cpp (Surface::ProcessDownDirtyElements): add blocks for
23537         Clip, LocalClip, and Position (only Position is implemented).
23539         * dirty.h: clean up the enum some, and add 3 new passes (only one
23540         of which, DirtyPosition, is implemented).
23542 2008-06-19  Jeffrey Stedfast  <fejj@novell.com>
23544         * transform.cpp: Started adding property accessor methods.
23546         * canvas.cpp (Canvas::[G,S]etLeft): Implemented.
23547         (Canvas::[G,S]etTop): Same.
23549         * uielement.cpp (UIElement::[G,S]etLeft): Moved to Canvas.
23550         (UIElement::[G,S]etTop): Same.
23552 2008-06-19  Chris Toshok  <toshok@ximian.com>
23554         * rect.h: add Get{Top,Bottom}{Left,Right} methods.
23556         * point.h, point.cpp: add Transform method.
23558 2008-06-19  Michael Dominic K.  <mdk@mdk.am>
23560         * animation.cpp: In a *AnimationUsingKeyFrames if we don't have any
23561         keyframes specified the duration is 0, not Automatic. This fixes the 
23562         http://www.etonline.com/silverlight/grammys50/ website.
23564 2008-06-18  Sebastien Pouliot  <sebastien@ximian.com>
23565         
23566         * geometry.cpp: Use the new moon-path functions for ArcSegment
23567         and QuadraticBezierSegment
23568         * moon-path.c: Change some validation to use g_return_if_fail
23570 2008-06-18  Jeffrey Stedfast  <fejj@novell.com>
23572         * runtime.cpp (Surface::ShowFullScreenMessage): Simplified to use
23573         SetLeft().
23575         * control.cpp (Control::GetTransformFor): Simplified.
23577         * uielement.cpp (UIElement::SetLeft): Added for setting
23578         Canvas.Left property.
23579         (UIElement::GetLeft): Same.
23580         (UIElement::SetTop): Same.
23581         (UIElement::GetTop): Same.
23583         * canvas.cpp (Canvas::GetTransformFor): Simplified.
23585 2008-06-18  Sebastien Pouliot  <sebastien@ximian.com>
23587         * shape.cpp: When possible (i.e. if we won't change the bounds
23588         anyway) avoid the second pass inside Shape::ComputeStretchBounds.
23589         This reduce (but does not eliminate) a BIG bottleneck for SL
23590         applications with many path using stretch (e.g. SL world).
23592 2008-06-18  Geoff Norton  <gnorton@novell.com>
23594         * media.cpp: The state when Seeking should not be changed to Stopped.
23595         Fixes another test.
23597 2008-06-17  Jeffrey Stedfast  <fejj@novell.com>
23599         Partial fix for bug #400657.
23601         * dependencyobject.cpp (DependencyObject::IsValueValid): If the
23602         value is a null dependency object, don't check that the types
23603         match - it doesn't matter.
23605         * color.cpp (color_to_string): New convenience utility function to
23606         aid in debugging. Returns a pointer to a static string buffer, so
23607         be careful...
23609 2008-06-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23611         * playlist.cpp, playlist.h: Only unref/null out the media in
23612           PlaylistEntry::Stop if we're a playlist and not if we're a single
23613           file.
23615 2008-06-17  Sebastien Pouliot  <sebastien@ximian.com>
23617         * moon-path.c|h: Add moon_quad_curve_to and moon_arc_to so they
23618         can be reused without a PathFigure-derived instance. Refactor
23619         code to expand/realloc paths to reduce duplication.
23621 2008-06-16  Chris Toshok  <toshok@ximian.com>
23623         * uielement.cpp (UIElement::OnPropertyChanged): call
23624         Invalidate(GetSubtreeBounds()) and UpdateBounds() directly instead
23625         of FullInvalidate.
23626         (UIElement::OnSubPropertyChanged): same.
23628 2008-06-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23630         * playlist.cpp: When Merging items only merge duration if the source
23631           has duration.
23632         * media.cpp: MediaElement::MediaOpened: when setting the media on the
23633           current item in the playlist, make sure we set the media on a
23634           PlaylistEntry, not on a (nested) Playlist.
23636 2008-06-16  Jeffrey Stedfast  <fejj@novell.com>
23638         * yuv-converter.cpp (YUVConverter::YUVConverter): Replace
23639         g_error() with g_warning(). There's really nothing else we can do
23640         here...
23641         (YUVConverter::Convert): Check if rgb_uv is NULL, if it is try
23642         allocating it again? Maybe some resources have been released since
23643         the ctor was called?
23645         * pipeline-ffmpeg.cpp (FfmpegDecoder::DecodeFrame): Replace
23646         g_error() with a g_warning() and return MEDIA_OUT_OF_MEMORY error.
23648         * mplayer.cpp (MediaPlayer::Open): Change g_error() into a
23649         g_warning() and return fail.
23651 2008-06-16  Michael Dominic K.  <mdk@mdk.am>
23652         
23653         * clock.cpp: Don't do the ExtraRepeat action when seeking.
23655 2008-06-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23657         * media.cpp, media.h: Move Play/Pause due to AutoPlay logic into one
23658           method.
23659         * playlist.cpp: When we stop, clear out our media. This fixes an issue
23660           where we didn't correctly download a file if it was stopped after
23661           it was opened, but before fully downloaded, and then restarted.
23663 2008-06-13  Jeffrey Stedfast  <fejj@novell.com>
23665         * dependencyobject.cpp (include): stdlib.h for strtol()
23667         Fix for jumping to the last page in PageTurn.
23669         * uielement.cpp (UIElement::OnSubPropertyChanged): Need to call
23670         UpdateTotalRenderVisibility() when the clip changes.
23672 2008-06-13  Michael Dominic K.  <mdk@mdk.am>
23674         * animation.cpp:
23675         * moon-curves.c:
23676         * moon-curves.h: Cleaning up the KeySpline curve implementation a bit.
23678 2008-06-13  Michael Dominic K.  <mdk@mdk.am>
23680         * Makefile.am:
23681         * animation.cpp:
23682         * animation.h:
23683         * moon-curves.c:
23684         * moon-curves.h: First version of the new algho for calculating the "y
23685         at x" for KeySplines, now with 200% more accuracy guaranteed! Fixes the
23686         AnimationMatrix2 test.
23688 2008-06-12  Jackson Harper  <jackson@ximian.com>
23690         * xaml.cpp: Remove some cruft.
23691         - Rename Custom to Managed
23692         - We don't need element maps for the namespaces anymore
23693         - Deploy can go into the default list of namespaces.
23695 2008-06-12  Fernando Herrera  <fherrera@novell.com>
23697         * playlist.cpp: Parse ASX2 files using GKeyFile API to have sane NULL
23698         terminated strings. Also keep any uri paramson the mms Ref.
23700 2008-06-12  Jackson Harper  <jackson@ximian.com>
23702         * xaml.cpp: Use the new stuff for creating wrapped types.
23703         - make XamlElementInstance pure virtual.
23705 2008-06-12  Jackson Harper  <jackson@ximian.com>
23707         * xaml.cpp: Clean up API for creating wrapped dependency objects.
23709 2008-06-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23711         * type.cpp: Fix type verification to not check 2.0 types for 1.0
23712           builds.
23714 2008-06-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23716         * media.cpp, media.h: Don't AutoPlay playlists which have already been
23717           autoplayed. Make Play/Pause/Stop/Seek async.
23718         * playlist.cpp, playlist.h: Add a AutoPlayed field to Playlist.
23720 2008-06-12  Chris Toshok  <toshok@ximian.com>
23722         * control.cpp, control.h, deployment.h, frameworkelement.h,
23723         grid.h, runtime.cpp, size.h, type-generated.cpp, type.h,
23724         uielement.h, value.h, xaml.cpp: I was a little too aggressive.  we
23725         can't use SL_2_0 in most places in headers (or rather, shouldn't).
23726         It might be a good idea to remove all references to it, but this
23727         at least gets the ms-tests running and passing again --with-mono.
23728         Switch to using SL_2_0 around the #includes in the .cpp files, and
23729         in value.h/type.h just include the 2.0 types.
23731         * usercontrol.h, usercontrol.cpp: split out the code from
23732         control.h, control.cpp here.
23734         * Makefile.am: add usercontrol.[h,cpp]
23736         * typegen/typegen.cs: fix up the header emission.
23738 2008-06-12  Sebastien Pouliot  <sebastien@ximian.com>
23740         * geometry.cpp|h: Refactor work between PathGeometry and PathFigure
23741         ComputeBounds to avoid creating/destroying a new cairo context for
23742         each figure (it's now shared). Refactor PathFigure::Build not to scan
23743         the path list twice and rely on moon-path automatic size increase.
23744         Also avoid cairo_fill_extents if the path can't be filled or no fill
23745         brush is present.
23747 2008-06-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23749         * runtime.cpp: CreateDownloader: don't allow creating downloaders if we
23750           can't get a surface, nor if the surface is a zombie.
23751         * text.cpp, playlist.cpp, media.cpp: Surface::CreateDownloader may
23752           return NULL now, add a null check.
23754 2008-06-11  Jackson Harper  <jackson@ximian.com>
23756         * xaml.cpp: Move GetKind to the info.  Doesn't make sense for
23757         Instances to have a kind (they can access their kind from their
23758         info).
23760 2008-06-11  Sebastien Pouliot  <sebastien@ximian.com>
23762         * geometry.cpp: Remove unneeded cairo_save|restore inside Draw 
23763         methods (since Shape::Draw already does it) and remove
23764         cairo_set_fill_rule (since Shape::Fill does it).
23766 2008-06-11  Jackson Harper  <jackson@ximian.com>
23768         * xaml.cpp: Clean up the namespace map when destroying the parser.
23770 2008-06-11  Sebastien Pouliot  <sebastien@ximian.com>
23772         * geometry.h: Fix GeometryGround::ComputeBounds so it does
23773         not always returns 0,0,0,0 (from Geometry).
23775 2008-06-11  Geoff Norton <gnorton@novell.com>
23777         * downloader.cpp: Only Abort if we have a surface.
23778         * runtime.cpp: Detach the downloaders when we zombify.
23780 2008-06-11  Sebastien Pouliot  <sebastien@ximian.com>
23782         * moon-path.c: Reorder ellipse points so the fill rule can be 
23783         applied correcly (e.g. filling or clipping).
23785 2008-06-11  Michael Dominic K.  <mdk@mdk.am>
23787         * clock.cpp: Fixing seeking on nested storyboards. Fixes
23788         seek-test-nested-storyboard.xaml in assorted and one more
23789         AnimationMatrix2 block. Now only one left to fix...
23791 2008-06-10  Geoff Norton  <gnorton@novell.com>
23793         * mms-downloader.cpp: Reset our internal state after seeking so
23794         we can resume the stream in the right place.
23796 2008-06-10  Geoff Norton  <gnorton@novell.com>
23798         * mms-downlodaer.cpp: Remove some improperly commited debug code
23800 2008-06-10  Chris Toshok  <toshok@ximian.com>
23802         * control.h, control.cpp, deployment.h, uielement.h,
23803         uielement.cpp, frameworkelement.h, value.h, grid.h, size.h, xap.h,
23804         runtime.cpp: wrap everything SL2.0 with INCLUDE_MONO_RUNTIME (for
23805         now.  I'll be changing that ifdef soon.)  Also, mark all 2.0
23806         specific types with the following typegen pragma: /*
23807         @SilverlightVersion="2" */ so that the generated files contain the
23808         proper ifdefs as well.
23810         * type-generated.cpp, type.h, value.h: resync with new ifdefs.
23812 2008-06-10  Jackson Harper  <jackson@ximian.com>
23814         * dependencyobject.cpp: Add todo for Name validation.
23816 2008-06-11  Fernando Herrera  <fherrera@novell.com>
23818         * xaml.cpp: Accept numbers and strings representing numbers as
23819         values for BOOL properties. Also accept "true" and "false" case
23820         variants.
23821         * playlist.cpp: ASX2 files can use ?MSWMExt=.asf and &MSWMExt=.asf
23822         ending uris, so just check for "MSWMExt=.asf".
23823         Fixes hsn.tv, bug #362328.
23825 2008-06-10  Jackson Harper  <jackson@ximian.com>
23827         * xaml.cpp: ContentProperty should be on the ElementInfo not the
23828         ElementInstance, since you can only have one content property per
23829         a type.
23831 2008-06-10  Geoff Norton  <gnorton@novell.com>
23832         
23833         * mms-downloader.cpp: Fix some looping logic when seeking (partially
23834         fixed).  Fix a typo when enumerating the streams array to not exceed
23835         the bounds.
23837 2008-06-10  Jackson Harper  <jackson@ximian.com>
23839         * xaml.cpp: Remove default prefix override check.  This must have
23840         only been in one of the early versions of SL because I can't get
23841         SL to do it anymore.  This helps fix video page turn.
23843 2008-06-10  Jackson Harper  <jackson@ximian.com>
23845         * xaml.cpp: Remove x:Code since this isn't used in SL 2.0.
23847 2008-06-10  Chris Toshok  <toshok@ximian.com>
23849         * dependencyobject.h, dependencyobject.cpp: split the Emit()
23850         machinery up into 3 methods.  StartEmit, DoEmit, and FinishEmit.
23851         StartEmit returns a context object passed to the other two
23852         methods.
23854         * runtime.h, runtime.cpp: use the new
23855         EventObject::{Start,Do,Finish}Emit methods to make event bubbling
23856         more transactional - any changes made to the listener list for the
23857         event we're bubbling up, for any element in our input list, are
23858         delayed until after the event has propagated.  Fixes our test id
23859         191 (test-bubbling.html) as well as bug #351568.
23861 2008-06-10  Sebastien Pouliot  <sebastien@ximian.com>
23863         * shape.cpp|h: Don't call ComputeShapeBounds(true) unless we need
23864         its value (i.e. Stretch != None). Make Shape::ComputeShapeBounds
23865         reuse it's physical bounds for logical instead of computing it 
23866         twice.
23868 2008-06-10  Michael Dominic K.  <mdk@mdk.am>
23870         * animation.cpp:
23871         * animation.h:
23872         * clock.cpp:
23873         * clock.h: Replacing CreateClock with AllocateClock implementation and
23874         making sure the latter is called for Storyboards. That fixes the nested
23875         storyboards inside other storyboards...
23876         test-animation-nested-storyboard.xaml and one step more for
23877         AnimationMatrix2.
23879 2008-06-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23881         * dependencyobject.h: Another greppable comment.
23883 2008-06-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23885         * dependencyobject.cpp: Add comment to assert which shows up while
23886           grepping.
23888 2008-06-06  Geoff Norton  <gnorton@novell.com>
23890         * file-downloader.h: Fix a bug between argument sending and class
23891         variables that was causing us to free and strdup the free'd pointer.
23893 2008-06-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23895         * mms-downloader.cpp: Return NULL from GetDownloadedFilename and
23896           GetResponseText.
23898 2008-06-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23900         * src.mdp: Updated.
23902 2008-06-06  Jeffrey Stedfast  <fejj@novell.com>
23904         * xaml.cpp: Don't use the c++ ctor initializer stuff, it breaks if
23905         members change order (like it did recently).
23906         (wrap_dependency_object): Get rid of unused variables.
23908         * media.cpp (Image): Made bools share a single int.
23910 2008-06-06  Jackson Harper  <jackson@ximian.com>
23912         * xaml.cpp: Use the Type system for looking up elements, make
23913         things a little more OOP so we can easily add some of the 2.0
23914         features.  Note:  This is going to break x:Code and deployment
23915         temporarily.
23916         
23917 2008-06-05  Geoff Norton  <gnorton@novell.com>
23919         * downloader.cpp, downloader.h: More refactoring to hide the zip related
23920         details in the FileDownloader.  NOTE: The exposure of the file downloader
23921         to the Text side is ugly and should be cleaned up.
23922         * text.cpp: Access obfuscated font details thru the FileDownloader API.
23923         * file-downloader.cpp, mms-downloader.cpp, internal-downloader.h: Expose
23924         the filename thru the downlodaer api.
23925         * downloader.cpp: No longer leak InternalDownloaders.
23927 2008-06-05  Geoff Norton <gnorton@novell.com>
23929         * mms-downloader.cpp, mms-downloade.h: Implement time measuring of
23930         the $P packet pair, and implement and initial algorithm to do proper
23931         bandwidth stream selection.
23933 2008-06-05  Geoff Norton <gnorton@novell.com>
23934         
23935         * downloader.cpp:  Remove some left over unused variables, and the
23936         is_valid_mms_type inline.
23938 2008-06-05  Geoff Norton <gnorton@novell.com>
23940         * Makefile.am: Add file-downloader and mms-downloader to the build.
23941         * file-downloader.(cpp|h): This class is a implementation of the new
23942         InternalDownloader class utilized by the downloader to differentiate
23943         between MMS and regular requests.  We should move the zip logic here.
23944         * mms-downloader.(cpp|h): This class is the MMS implementation of the
23945         InternalDownloader class.
23946         * internal-downloader.h: Route callbacks from the plugin thru this class
23947         to their appropriate file (NPStream) / MMS based implementations.
23948         * downloader.cpp: Update the API to call the InternalDownloader based
23949         representation instead of large if (mms) branches.
23951 2008-06-05  Geoff Norton  <gnorton@novell.com>
23953         * downloader.cpp, downloader.h:  Initial implementation of MMS inside
23954         libmoon.  The API has been extended to register two additional callbacks
23955         to set HTTP headers, and the HTTP body.
23957 2008-06-05  Michael Dominic K.  <mdk@mdk.am>
23959         * xaml.cpp: Removing the "broken parsing" of RepeatBehavior in
23960         --with-compatibility-bugs mode. It looks like the parsing is fine. The
23961         bug is now "implemented" in clock.cpp.
23963 2008-06-05  Michael Dominic K.  <mdk@mdk.am>
23965         * clock.cpp: In ComputeNewTime when we're going over our duration time
23966         and we're AutoReversed, check actually how big the diff is cause it
23967         might be that we need to "wrap around self" and switch to forward time
23968         direction anyways (such is the case with seeking). 
23970         In other words, allow to seek into particular interation of
23971         RepeatBehavior="XXXx", not only the first one. Fixes one more
23972         AnimationMatrix2 block and seek-test-multiple-repeat.xaml in assorted.
23974         This prolly needs a littlbe bit more work still, similiar mechanism
23975         needs to be present in DoRepeat etc.
23977 2008-06-05  Stephane Delcroix  <sdelcroix@novell.com>
23979         * stylus.cpp: fixing a bug. stupid me.
23981 2008-06-05  Stephane Delcroix  <sdelcroix@novell.com>
23983         * rect.h: new Rect (Point, Point) ctor, new ExtendTo (point) and
23984         ExtendTo (double, double) methods.
23986         * stylus.h|cpp: new StylusPointCollection::GetBounds (), check for
23987         intersection of bounds and StylusPointCollection::GetBounds in HitTest
23988         to avoid checking for stroke intersection in most of the cases. Speed
23989         up erasing in inkJournal.
23991 2008-06-04  Michael Dominic K.  <mdk@mdk.am>
23993         * clock.cpp: Interesting -- looks like in SL the timespan-based 
23994         RepeatBehavior is scaled by the SpeedRatio. Ie. 00:00:10 with SpeedRatio
23995         0.5 becomes 00:00:05. I wonder if it's a bug or intended feature?
23996         Anyways, implementing this and fixing two more blocks in
23997         AnimationMatrix2.
23999 2008-06-04  Michael Dominic K.  <mdk@mdk.am>
24001         * clock.cpp: Slightly reworking the seek offsett calculations to include
24002         the SpeeRatio multiplier but do not apply it to BeginTime. Fixes one
24003         more block in AnimationMatrix2 and the test-seek-spee-ratio-begin.xaml
24004         assorted test.
24006 2008-06-04  Michael Dominic K.  <mdk@mdk.am>
24008         * clock.cpp: When seeking include the SpeedRatio calculations. Fixes the
24009         test-seeking-speed-ratio.xaml from assorted tests and one more block in
24010         the AnimationMatrix2 test. 
24012 2008-06-03  Jeffrey Stedfast  <fejj@novell.com>
24014         * control.cpp (user_control_new): %p does what %x was trying to do
24015         in this case, but without compile warnings :)
24017 2008-06-03  Jeffrey Stedfast  <fejj@novell.com>
24019         Glyphs rendering optimization.
24021         * text.cpp (Glyphs::Layout): Accumulate the glyph paths here
24022         instead of re-looping this logic again in Glyphs::Render().
24023         (Glyphs::Render): Just blit the path.
24025 2008-06-03  Chris Toshok  <toshok@ximian.com>
24027         * dependencyobject.cpp (DependencyObject::SetValue): Simplify this
24028         a bunch and remove all the redundant checks.
24029         
24030         (DependencyObject::MergeTemporaryNameScopes): merge both DO and
24031         Collection versions into the same method to reduce code
24032         duplication.
24034         * dependencyobject.h: no need to provide multiple overloads for
24035         MergeTemporaryNameScopes.
24037 2008-06-03  Jeffrey Stedfast  <fejj@novell.com>
24039         Text rendering optimization via reduction of font loading.
24041         * font.cpp (FontFace): A new abstraction for FT_Face which is
24042         meant to prevent Moonlight from ahving to load the same font face
24043         multiple times just because the FontSize attributes don't match.
24044         (TextFont): Greatly simplified this class by using FontFace.
24046 2008-06-02  Jackson Harper  <jackson@ximian.com>
24048         * xaml.cpp: Make sure we don't try to look up Content Properties
24049         on anything but elments.  Property elements are given the
24050         XamlElementInfo of their parent so GetContentProperty on a
24051         PROPERTY element will return the parent's content property.
24053 2008-06-02  Michael Dominic K.  <mdk@mdk.am>
24055         * clock.cpp: If we have duration-based RepeatBehavior set the
24056         repeat_count to 1 in bug-mode (--with-compatibility-bugs).
24058 2008-06-02  Michael Dominic K.  <mdk@mdk.am>
24059         
24060         * xaml.cpp: SL seems to correctly parse 0:0:0 TimeSpans in "bug-mode"
24061         even.
24063         * clock.cpp: Remove the RepeatBehavior=1.0 forcing in Validate when
24064         RepeatBehavior=0:0:0.
24066 2008-06-02  Michael Dominic K.  <mdk@mdk.am>
24068         * clock.cpp: Even more timeline validation rules.
24070 2008-06-02  Sebastien Pouliot  <sebastien@ximian.com>
24072         * font.cpp: Use the existing DOUBLE_FROM_26_6 instead of dividing
24073         by 64.0 since this makes it clear why we're doing it.
24075 2008-05-30  Michael Dominic K.  <mdk@mdk.am>
24077         * clock.cpp: Don't validate animations that have Duration of "00:00:00"
24078         and RepeatBehavior="Stop". That is what SL does. Fixes the clock41.xaml
24079         test.
24081 2008-05-30  Michael Dominic K.  <mdk@mdk.am>
24083         * xaml.cpp: Adding a compatibility option
24084         (--with-compatibility-bugs=yes) that introduces a Silverlight 1.0
24085         RepeatBehavior bug.
24087 2008-05-30  Michael Dominic K.  <mdk@mdk.am>
24089         * clock.cpp: Ceil the delta and ret_time. This is a very poor-man's
24090         protection against the desync's coming from integers (TimeSpan) being
24091         multiplied by floating values (SpeedRatio). Better to be non-precise
24092         forward than backward.
24094 2008-05-30  Michael Dominic K.  <mdk@mdk.am>
24096         * clock.cpp: The initial ticking difference needs to be multiplied by
24097         the SpeedRatio as well. This fixes few timing desyncs. Fixes
24098         clock40.xaml, test-animation-hold-stop-speed.xaml and the RoyalBlue
24099         block from the AnimationMatrix2.
24101 2008-05-29  Jeffrey Stedfast  <fejj@novell.com>
24102         
24103         * media.cpp (Image::OnPropertyChanged): Just like MediaElement, if
24104         you set an Image's Source property to an empty string (or null),
24105         it stops rendering the image.
24107 2008-05-29  Stephane Delcroix  <sdelcroix@novell.com>
24109         * stylus.cpp: fix intersect_line_2d to fix the inkJournal thing.
24111 2008-05-29  Jeffrey Stedfast  <fejj@novell.com>
24113         * layout.cpp|h (TextRun::IsUnderlined): Replacement for
24114         TextLayout::IsUnderline().
24115         (TextLayout::IsUnderline): Removed.
24117         * font.h (enum TextDecorations): Add a comment explaining that
24118         this is meant to be used as bit flags and not a normal
24119         enumeration.
24121 2008-05-29  Sebastien Pouliot  <sebastien@ximian.com>
24123         * font.h: Revert TextWrapping change as it regress DRT tests
24124         (it's possible that the value were right, but did not match
24125         the managed value used by Silverlight 1.1).
24127 2008-05-29  Jackson Harper  <jackson@ximian.com>
24129         * type.cpp: INVALID types don't have content properties.
24130         * dependencyobject.h: Content properties are stored on the Type so
24131         we don't need to store them here.
24132         * xaml.cpp: Get content properties from the Type system instead of
24133         the parser's internal type map.
24134         - We don't need to do any special handling in the start_element
24135         handler for content properties anymore.
24136         * control.cpp|h: We don't need to expose the content property
24137         anymore.
24138         - Mark the content property for controls.
24139         
24140 2008-05-29  Sebastien Pouliot  <sebastien@ximian.com>
24142         * font.h: Fix enum values for TextWrapping
24143         * layout.cpp: Fix regression (in earlier commit) for wrapping.
24145 2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24147         * debug.cpp: Fix an invalid read issue found with valgrind.
24149 2008-05-29  Sebastien Pouliot  <sebastien@ximian.com>
24151         * layout.h|cpp: Handle invalid values for TextDecorations and
24152         TextWrapping like Silverlight does.
24154 2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24156         * runtime.cpp: When setting the background color delete any previoys
24157           background color.
24159 2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24161         * uielement.cpp: Fix minor leak.
24163 2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24165         * src.mdp: Updated.
24167 2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24169         * http-streaming.cpp: Handle quoted feature strings.
24171 2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24173         * downloader.cpp: Null out request_position in the ctor.
24175 2008-05-28  Michael Dominic K.  <mdk@mdk.am>
24177         * clock.cpp: Reverting the change that invalidates the timelines which
24178         have 00:00:00 duration. It is actually supported by SL. 
24180 2008-05-28  Michael Dominic K.  <mdk@mdk.am>
24182         * clock.cpp: In Clock::ComputeNewTime all those checks are useless.
24183         Multiply always instead of recursing down into properties.
24185 2008-05-28  Michael Dominic K.  <mdk@mdk.am>
24187         * animation.cpp: If "To" and "By" are not specified use the
24188         defaultOriginValue always instead of "start" (which might be "From").
24189         Fixes the test-animation-only-from.xaml and the green block in
24190         AnimationMatrix2.
24192 2008-05-28  Michael Dominic K.  <mdk@mdk.am>
24194         * clock.cpp: When Validating the timeline, if RepeatBehavior is
24195         incorrect make it 1.0 instead of marking the timeline as invalid.
24197 2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24198         
24199         * downloader.cpp: Fix typo.
24201 2008-05-28  Sebastien Pouliot  <sebastien@ximian.com>
24203         * enums.c: Fix None value in style_simulations_map and remove
24204         unneeded one (they exists only in WPF but SL parser does not like
24205         them).
24206         * font.cpp|h: Fix FontStyle and FontWeigth properties when the 
24207         supplied value are invalid. Add new constants specific to SL.
24208         * text.h: Add simulation_none. Share an integer between all bool
24209         flags.
24210         * text.cpp: Invalid values for StyleSimulation does not render
24211         the Glyphs.
24212         * runtime.cpp: Invalid MouseCursor values hides the cursor.
24214 2008-05-27  Jeffrey Stedfast  <fejj@novell.com>
24216         Fixes the Legend (Space Invaders) demo without breaking
24217         storyboard_EnterLeaveSemantics.htm.
24219         * clock.cpp|h (Clock::Completed): New virtual method which gets
24220         called when a clock completes.
24221         (Clock::ComputeNewTime): If a clock completes (has no more
24222         repeats, etc) then call ::Complete().
24223         (ClockGroup::ClockGroup): Changed the name of emitted_complete to
24224         emit_completed which has also changed the meaning a bit.
24225         (ClockGroup::Begin): Updated.
24226         (ClockGroup::RaiseAccumulatedEvents): If emit_completed is true,
24227         then emit the Completed event and reset emit_completed back to
24228         false so we don't re-emit.
24229         (ClockGroup::Completed): Set emit_completed to true.
24231 2008-05-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24233         * media.cpp: MediaElement: Fix refcounting for our 'media' field. In
24234           DownloaderComplete only emit DownloadProgressChangedEvent if we
24235           have a surface.
24237 2008-05-27  Michael Dominic K.  <mdk@mdk.am>
24239         * xaml.cpp: Adding a comment/explanation about the RepeatBehavior and
24240         Silverlight 1.0/2.0 situation.
24242 2008-05-26  Michael Dominic K.  <mdk@mdk.am>
24244         * clock.cpp: Don't validate timelines that have specified duration of
24245         00:00:00. Fixes the test-animation-zero-duration test.xaml.
24247 2008-05-26  Michael Dominic K.  <mdk@mdk.am>
24249         * clock.cpp:
24250         * clock.h: When Validating the Timeline also make sure that the
24251         RepeatBehavior is correct, otherwise don't start the anim. Fixes the
24252         test-animation-zero-repeat-behavior test and brings us closer with
24253         AnimationMatrix2 test.
24255 2008-05-26  Michael Dominic K.  <mdk@mdk.am>
24257         * clock.cpp: When Validating TimelineGroup don't forget to call parent's
24258         base validation method.
24260 2008-05-26  Michael Dominic K.  <mdk@mdk.am>
24262         * xaml.cpp: Reverting spouliot's commit from 2008-05-08. It looks like
24263         SL supports the RepeatBehavior="XX:XX:XX" just fine. This fixes the
24264         test-aniamtion-repeat-behavior.xaml test.
24266 2008-05-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24268         * src.mdp: Updated.
24270 2008-05-23  Sebastien Pouliot  <sebastien@ximian.com>
24272         * text.cpp: (Glyphs::InsideObject) Avoid expensive, and unneeded,
24273         cairo_save/cairo_restore since we don't use the context.
24275 2008-05-23  Stephane Delcroix  <sdelcroix@novell.com>
24277         * dependencyobject.[h|cpp]: merge namescopes on SetValue.
24279 2008-05-23  Jeffrey Stedfast  <fejj@novell.com>
24281         * font.cpp (TextFont::PixelsPerEM): Removed, the logic was broken.
24283         * text.cpp (Glyphs::Layout): Reverted previous commit and go back
24284         to the magic math.
24285         (Glyphs::Render): Same.
24287 2008-05-22  Chris Toshok  <toshok@ximian.com>
24289         * stylus.h, stylus.cpp (Stroke::HitTest): correct our width/height
24290         code.  Only include the +2 to each side if the outline color is
24291         non-transparent.
24292         (Stroke::AddStylusPointToBounds): same.
24293         (Stroke::OnPropertyChanged): new method.  we need to recompute the
24294         bounds if our DrawingAttributes change.
24295         (Stroke::OnSubPropertyChanged): same, if width/height/online-color
24296         of the drawing attributes change.
24298 2008-05-22  Sebastien Pouliot  <sebastien@ximian.com>
24300         * brush.cpp: Fix defaults when wrong values are being used for
24301         enumerations from Javascript.
24302         [Fix part of #340799]
24304 2008-05-22  Jackson Harper  <jackson@ximian.com>
24306         * dependencyobject.cpp: Only merge temp namescopes.
24308 2008-05-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24310         * dependencyobject.cpp, dependencyobject.h: EventObject: instead of
24311           surrounding event emission with ref/unref, set a flag specifying
24312           that we're doing event emission, and catch unrefs which would cause
24313           object destruction replacing them with a delayed unref.
24315 2008-05-21  Chris Toshok  <toshok@ximian.com>
24317         * collection.cpp (Collection::Add): remove the check for AddToList
24318         returning -1.  It never will.  Also, call SetSurface() on the new
24319         child *before* we create the Collection::Node for it, so we can
24320         tell (in SetSurface) if it's being added individually to the
24321         surface, or as part of a subtree.  This is required to fix
24322         storyboard_EnterLeaveSemantics.
24324         * animation.cpp (Storyboard::SetSurface): resume the clock when
24325         we're reattached to the surface, but *only* if we're being added
24326         as part of a subtree (that is, we already have a logical parent
24327         when we hit this method.)
24329         * clock.cpp (Clock::Begin): revert the previous
24330         change (has_started needs to be initialized to false).  Required
24331         to fix storyboard_EnterLeaveSemantics.htm.  We'll need to figure
24332         out another way to fix the site (or a better way that fixes one
24333         without breaking the other.)
24335 2008-05-21  Jeffrey Stedfast  <fejj@novell.com>
24337         * text.cpp (Glyphs::Layout): Use PixelsPerEM() instead of
24338         hard-coding the EM units ourselves.
24339         (Glyphs::Render): Same.
24341         * font.cpp (TextFont::PixelsPerEM): New convenience function.
24343         * clock.cpp (Clock::Begin): Init has_started to true. Fixes
24344         http://www.tek.co.jp/Legend
24346         * animation.cpp (Storyboard::storyboard_completed): Merged
24347         teardown_clockgroup() and invoke_completed() into a single
24348         callback. Also makes it so that we don't have to remove 2
24349         CompletedEvent handlers (which we were not doing properly afaict
24350         in Storyboard::Stop).
24351         (Storyboard::Stop): After unregistering the CompletedEvent handler
24352         and stopping the root_clock, tear down the clock group.
24354 2008-05-21  Larry Ewing  <lewing@novell.com>
24356         * shape.cpp (Ellipse::BuildPath): try to shape our degenerate
24357         ellipses a little better.
24358         (Shape::ComputeStretchBounds): modify the needs_clip logic a
24359         little to catch the degenerate ellipse cases we were running into.
24361         Fixes test-shape-ellipse-stroke*.xaml.
24363 2008-05-21  Michael Dominic K.  <mdk@mdk.am>
24365         * clock.cpp: Include the offsett coming from the BeginTime in the
24366         seek_time calculations. Fixes seek-test-begin-time and
24367         seek-test-wrapping-set tests. Brings us closer with AnimationMatrix2.
24369 2008-05-21  Michael Dominic K.  <mdk@mdk.am>
24371         * clock.cpp: Actually do set the seek_time before using it.
24373 2008-05-21  Michael Dominic K.  <mdk@mdk.am>
24375         * clock.cpp: When seeking ClockGroup, don't seek children as weel
24376         (results in cumulative behavior).
24378 2008-05-21  Sebastien Pouliot  <sebastien@ximian.com>
24380         * font.cpp: (TextFont::Path) Avoid expensive save of cairo 
24381         context since only the transform is changed (current point 
24382         location is not part of the context).
24384 2008-05-20  Larry Ewing  <lewing@novell.com>
24386         * runtime.cpp (Surface::motion_notify_callback): always return
24387         true in the windowed motion handler otherwise we something steals
24388         mouse events from us.
24390         Fixes most of MouseInput.htm
24392 2008-05-20  Michael Dominic K.  <mdk@mdk.am>
24394         * clock.cpp: Fixing a problem where timeline with BeginTime set do not
24395         respond at all to Seek. Brings us closer with AnimationMatrix2.
24397 2008-05-19  Jackson Harper  <jackson@ximian.com>
24399         * xaml.cpp: Only do the type wrapping if we are dealing with
24400         collection types, otherwise we just ignore the property decl.
24402 2008-05-19  Jackson Harper  <jackson@ximian.com>
24404         * xaml.cpp: When we wrap a property we need to ignore the property
24405         element so that the children get added to the wrapped object
24406         properly.
24407         * dependencyobject.cpp: We also need to merge the collection's
24408         namescope because collections can be created with their own temp
24409         namescope using createFromXaml.
24410         
24411 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
24413         * animation.cpp:
24414         * animation.h:
24415         * clock.cpp:
24416         * clock.h: Changing ExtraRepeatHandler to ExtraRepeatAction to avoid
24417         confusion.
24419 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
24421         * animation.cpp:
24422         * animation.h: Adding an implementation for ExtraRepeatHandler to
24423         AnimationClock that fetches target value and sets it on
24424         AnimationStorage. Fixes clock37.xaml test.
24426 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
24428         * animation.cpp:
24429         * animation.h: Adding helper methods to get target value out of the
24430         given AnimationTimeline. We're still missing implementations for
24431         keyframe-based anims. Coming soon.
24433 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
24435         * animation.cpp:
24436         * animation.h: Adding two helper methods to AnimationStorage:
24437         GetStopValue (get's current base or (if set) stop value) and
24438         UpdatePropertyWithValue to manually force prop to a given state.
24440 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
24442         * clock.cpp:
24443         * clock.h: Addin a virtual ExtraRepeatHandler to Clock class fired on
24444         repeat. By default does nothing.
24446 2008-05-19  Jackson Harper  <jackson@ximian.com>
24448         * xaml.cpp: When createFromXaml ('<some property>...</property>')
24449         is called, we need to create and return an object that represents
24450         that property.  ie createFromXaml ('<Canvas.Triggers>...); should
24451         return a ResourceDictionary object.
24453 2008-05-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24455         * downloader.cpp: Fix warnings.
24457 2008-05-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24459         * clock.cpp: Added comment.
24461 2008-05-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24463         * runtime.cpp: Destroy EventObject::objects_alive upon runtime
24464           shutdown.
24466 2008-05-16  Miguel de Icaza  <miguel@novell.com>
24468         * dependencyobject.h (DependencyObject::GetContentProperty):
24469         returns a DependencyProperty that is the target for the content of
24470         a XAML content assignment. 
24472         * xaml.cpp (XNamespace::SetAttribute): while hydrating, ignore the
24473         Class attribute as the object has already been created. 
24475         (start_element): Add support for the ContentPropertyAttribute on
24476         DependencyObjects to the XAML parser.       This is very primitive
24477         support at this point, and does not support collections, or type
24478         conversions as specified on the docs. 
24480         * control.cpp (Control::SetContent): Refactor setting the
24481         real_object into its own routine.     Currently takes a Surface
24482         parameter, not clear that this is even needed, but kept for
24483         compatibility with the old code. 
24485         (UserControl::OnPropertyChanged): Hook up setting the Content
24486         property.
24488         * runtime.cpp (Surface::Attach): Let the widget be UIElement.
24490 2008-05-16  Larry Ewing  <lewing@novell.com>
24492         * shape.cpp: draw ellipses with no width/height specified as the
24493         ms tests indicate.
24495         Fixes StretchAndShapes.xaml.
24497 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24499         * media.cpp: Abort the downloader when we emit MediaFailed, and always
24500           emit a DownloadProgressChangedEvent with 1.0 when we're finished
24501           downloading (we won't get any writes if the file has already been
24502           downloaded and mozilla just gives us the filename).
24504 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24506         * src.mdp: Updated.
24508 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24510         * downloader.cpp: Don't emit any events if we don't have a surface. Add
24511           warnings to Send(Internal) when we have no surface (the plugin is
24512           already checking for it, so if the warning is printed we're doing
24513           something else wrong).
24514         * runtime.h, runtime.cpp: Surface: keep a list of the downloaders we
24515           create, and when the toplevel canvas changes or the surface is
24516           destroyed clear the downloader's surface pointer.
24518 2008-05-16  Jeffrey Stedfast  <fejj@novell.com>
24520         * downloader.cpp (Downloader::Abort): Set download progress to 0.
24522 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24524         * downloader.cpp: Don't emit nor set DownloadProgress(ChangedEvent) in
24525           NotifySize, mozilla calls NotifySize for every write.
24527 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24529         * type.cpp, type.h, type.h.in: Added Type::LookupEventName.
24531 2008-05-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24533         * playlist.cpp: If we're stopping a playlist, reopen the first entry.
24534         * media.h: MediaElement: Make EmitMediaOpened and Reinitialize public
24535           so that Playlist can call them.
24537 2008-05-15  Larry Ewing  <lewing@novell.com>
24539         * runtime.cpp (Surface::button_press_callback): stop firefox from
24540         stealing our focus in the widget case by always returning true on
24541         button press events.  There may be a better way to handle this by
24542         only returning true if the press lands on and element but this at
24543         least improves the situation.
24545         Fixes FullScreenKey.htm.
24547 2008-05-15  Michael Dominic K.  <mdk@mdk.am>
24549         * clock.cpp: Also apply the idle_hint when the ClockGroup itself goes to
24550         Filling state, this makes the idle optimization cover all the cases. Big
24551         perf boost expected.
24552         
24553 2008-05-14  Jeffrey Stedfast  <fejj@novell.com>
24555         Fix for tests/xaml/test-directory-in-zip.html
24557         * media.cpp (Image::Image): Initialize some new state variables to
24558         keep track of whether or not the FrameworkElement::Width and
24559         Height values are ever manually set.
24560         (Image::DownloaderComplete): Properly set the Width/Height
24561         property values based on whether a particular Width/Height have
24562         been requested. Use the image's native width/height if not.
24563         (Image::OnPropertyChanged): Listen for changes to Width/Height
24564         properties.
24566 2008-05-14  Larry Ewing  <lewing@novell.com>
24568         * src/uielement.cpp (UIElement::PostRender): clear any existing
24569         paths when rendering the bounds rectangle.
24571 2008-05-14  Jeffrey Stedfast  <fejj@novell.com>
24573         * media.cpp (MediaElement::MediaOpened): Use GetAutoPlay() instead
24574         of the more complex GetValue API.
24576         * pipeline.cpp (IMediaSource::ReadSome): Don't return false on
24577         error, return -1 (since this is an int32 return value, not bool).
24579 2008-05-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24581         * media.cpp, media.h: Added MediaElement::IsLive, and move
24582           initialization of this field to before our MediaPlayer is opened.
24583         * mplayer.cpp, mplayer.h: For live sources the first frame might not
24584           come with pts = 0, so store that pts so that later we can correctly
24585           calculate how much we've actually played.
24587 2008-05-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24589         * mplayer.cpp, mplayer.h: Add support for Duration tags in ASX files.
24590         * playlist.h, playlist.cpp: Added a PlaylistEntry::HasDuration method,
24591           and skip entries with zero duration.
24593 2008-05-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24595         * dependencyobject.cpp: EventObject::AddTickCall: make sure we release
24596           the read lock if don't have a surface or timemanager.
24598 2008-05-14  Michael Dominic K.  <mdk@mdk.am>
24600         * clock.cpp: No need to SoftStop the ClockGroup itself (unlike the
24601         children) on DoRepeat (). Fixes a small regression in clock21.xaml
24602         introduced with last commit.
24604 2008-05-14  Michael Dominic K.  <mdk@mdk.am>
24606         * clock.cpp:
24607         * clock.h: Fixing a case for Clock when the clock has RepeatBehavior but
24608         it doesn't start from 00:00:00. Fixes #388745 (clock22.xaml test).
24610 2008-05-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24612         * runtime.cpp: Don't call Attach (NULL) in Surface::Zombify, it causes
24613           crashes when javascript removes the plugin in an eventhandler.
24615 2008-05-13  Jeffrey Stedfast  <fejj@novell.com>
24617         * media.cpp (MediaElement::DownloaderFailed): Make this more
24618         easily extensible.
24620 2008-05-13  Fernando Herrera  <fherrera@novell.com>
24622         * media.cpp: Fix mms:// and rtsp:// fallback uri rewrite.
24624 2008-05-13  Jeffrey Stedfast  <fejj@novell.com>
24626         * media.cpp (MediaBase::SetSourceAsyncCallback): Prevent memory
24627         corruption of the source.* variables by creating local references
24628         to them and setting source.* to NULL before calling
24629         SetSourceInternal().
24631 2008-05-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24633         * clock.cpp, clock.h: Remove InvokeOnMainThread.
24634         * dependencyobject.cpp, dependencyobject.h: EventObject: added
24635           AddTickCall. Requred when adding ticks from other than the 
24636           main thread.
24637         * downloader.cpp: Send: use a TimeManager to add the timeout.
24638         * media.cpp, media.h, mplayer.h, mplayer.cpp: Don't use
24639           TimeManager::InvokeOnMainThread anymore, add the timeouts using a
24640           TimeManager instance.
24642 2008-05-12  Jeffrey Stedfast  <fejj@novell.com>
24644         * list.cpp (List::List): Init length to 0.
24645         (List::Clear): Reset length to 0.
24646         (List::Append): length++
24647         (List::Prepend): length++
24648         (List::Insert): length++
24649         (List::InsertBefore): length++
24650         (List::Unlink): length--
24651         (List::Length): Fixed to be O(0) instead of O(n)
24653         * stylus.cpp (StrokeCollection::HitTest): Use List::IsEmpty()
24654         instead of comparing List::Length() to 0.
24655         (Stroke::HitTest): Same.
24657 2008-05-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24659         * media.cpp: Set the MediaOpenedEmitted flag before emitting the event,
24660           prevents us from emitting the event again as a consequence of what
24661           any of the event handlers do.
24663 2008-05-12  Michael Dominic K.  <mdk@mdk.am>
24665         * animation.cpp:
24666         * dependencyobject.cpp: Fix a crash due to bad destroy recursion.
24668 2008-05-12  Michael Dominic K.  <mdk@mdk.am>
24670         * animation.cpp:
24671         * animation.h:
24672         * dependencyobject.cpp:
24673         * dependencyobject.h: Float the AnimationStorage only when it's the
24674         current storage.
24676 2008-05-12  Michael Dominic K.  <mdk@mdk.am>
24678         * animation.cpp:
24679         * animation.h: Introduce floating state for animation storage that has
24680         it's clock destroyed but it hasn't been stopped before. We need to keep the
24681         animation storage (reffed from the DependencyProperty hash) around to be
24682         able to get proper value for the next (continous) Storyboard on same
24683         property. Fixes #383879 and #375275.
24685 2008-05-09  Geoff Norton <gnorton@novell.com>
24687         * mplayer.cpp, pipeline.cpp, pipeline.h:  When iterating streams
24688         ensure that we select the stream with the highest available bit
24689         rate, opposed to the first stream that we come across.
24691 2008-05-09  Jeffrey Stedfast  <fejj@novell.com>
24693         * dependencyobject.cpp (DependencyObject::FindName): Don't need
24694         nested if/elses.
24696         * namescope.cpp (NameScope::FindName): Simplify.
24698 2008-05-08  Larry Ewing  <lewing@novell.com>
24700         * shape.cpp: silence some warnings.
24702 2008-05-08  Larry Ewing  <lewing@novell.com>
24704         * shape.h: remove ClipOnWidthAndHeight method, replace with
24705         needs_clip variable.
24706         
24707         * shape.cpp (Shape::ComputeStretchBounds): set needs_clip based on
24708         the actual size of the object before and after the stretch and the
24709         stretch flags.  
24711         Speeds up Sprawl and a lot of other applications that use stretch
24712         extensively.
24714 2008-05-08  Larry Ewing  <lewing@novell.com>
24716         * runtime.cpp (Surface::expose_to_drawable): fill the background
24717         instead of painting and don't create the clip until the rendering
24719 2008-05-08  Miguel de Icaza  <miguel@novell.com>
24721         * xaml.cpp (xaml_hydrate_from_str): New method to hydrate an
24722         existing DependencyObject with the contents of a XAML string.  
24724         Needed for Silverlight 2.0 support, for the new model:
24725         create object then do LoadComponent on it.
24727 2008-05-08  Sebastien Pouliot  <sebastien@ximian.com>
24729         * xaml.cpp: RepeatBehavior does not use the (documented) 0:0:0
24730         notation.
24732 2008-05-07  Jeffrey Stedfast  <fejj@novell.com>
24734         * font.cpp: Removed old layout code.
24735         (TextFont::GetGlyphInfo): Updated to use some handy Fixed->Double
24736         conversion macros to make understanding the code easier. Also,
24737         added FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH bit flag to fix layout
24738         of broken fixed-width CJK fonts.
24740         * clock.cpp (TimeManager::Stop): Added for convenience.
24741         (SystemTimeSource::SystemTimeSource): Init frequency to -1 so we
24742         can make sure it is init'd properly via SetTimerFrequency() before
24743         Start()ing.
24745         * runtime.cpp (Surface::Attach): Call our time_manager's Start(),
24746         not it's source's Start(). We need things like frequency to be
24747         setup and other values to be initialized properly.
24748         (Surface::Attach): After calling canvas->OnLoaded(), check that we
24749         are not zombied - if we are, return.
24751 2008-05-07  Larry Ewing  <lewing@novell.com>
24753         * runtime.cpp (Surface::Zombify): call Attach (NULL) to notify the
24754         objects that the surface is undead.
24756 2008-05-06  Jeffrey Stedfast  <fejj@novell.com>
24758         * animation.cpp (animation_shutdown): Renamed from
24759         animation_destroy().
24761         * text.cpp (text_shutdown): Renamed from text_destroy().
24763         * clock.cpp: Don't include gtk.h for just gtk_timeout_add(),
24764         include glib.h and use g_timeout_add() instead.
24765         (SystemTimeSource::SystemTimeSource): Init the timeout_id to 0,
24766         not -1 (the timeout ids are uint, not int).
24767         (SystemTimeSource::SetTimerFrequency): Updated.
24768         (SystemTimeSource::Start): Updated.
24769         (SystemTimeSource::Stop): Updated.
24771         * list.cpp (List::Remove): Don't need to search for the node, we
24772         already have a pointer to it.
24774 2008-05-07  Larry Ewing  <lewing@novell.com>
24776         * runtime.cpp (Surface::Resize): handle a resize in windowless mode
24777         gracefully.
24779         Fixes part of windowless resizing.
24780         
24781 2008-05-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24783         * media.cpp: Handle the rtsp protocol too.
24784         * playlist.cpp, playlist.h: Store base and source_name as Uris.
24785           Implement GetFullSourceName better, and do some uri validation.
24786         * uri.h, uri.cpp: Added a allow_trailing_sep flag to Uri::Parse,
24787           disables canonicalization of trailing directory separators since
24788           asx playlists may treat urls differently depending on the presence
24789           or absence of any trailing directory separators. Added Clone ().
24791 2008-05-06  Michael Dominic K.  <mdk@mdk.am>
24793         * animation.cpp:
24794         * animation.h: When attaching new animation storage and previous storage
24795         exist, flag it as non-resetable (meaning that the storage will never
24796         reset animated property to base/stop value). This fixes the
24797         storyboard-stopping-two.html test.
24799 2008-05-06  Michael Dominic K.  <mdk@mdk.am>
24801         * dependencyobject.cpp:
24802         * dependencyobject.h: DependencyProperty::AttachAnimationStorage now
24803         returns the previously attached AnimationStorage.
24805         * animation.cpp:
24806         * animation.h: When attaching new animation storage try to inherit the
24807         resetValue from the previously attached storage. Reset value is the
24808         value that we reset to when storyboard is stopped (originally it always
24809         used to be the base value of the current AnimationStorage). 
24811         This replicates the bahavior of SL where starting a new (second)
24812         storyboard on a property renders the prev storyboard useless
24813         (non updating the prop) but keeps it's "starting value" for storyboard
24814         reset. In other words we can say that starting a new storyboard on a
24815         prop makes this new storyboard a "continuation" of the prev storyboard.
24817 2008-05-05  Larry Ewing  <lewing@novell.com>
24819         * runtime.cpp (Surface::render_cb): only call ForceRender if we
24820         dirtied something.
24822 2008-05-05  Larry Ewing  <lewing@novell.com>
24824         * runtime.cpp: update the (almost unused) frame count where it can
24825         get hit in windowless.  Clear existing paths before rendering the
24826         expose box.
24828         Minor cleanups to help with debugging the expose regions.
24830 2008-05-05  Jeffrey Stedfast  <fejj@novell.com>
24832         * clock.cpp (TimeManager::Shutdown): Renamed from
24833         TimeManager::Stop() and also updated to remove all registered
24834         timeouts.
24836         * runtime.cpp (Surface): We no longer keep track of signal ids, we
24837         simply remove all signals on the widgets with 'this' as the user
24838         data.
24840         * clock.cpp (TimeManager::Stop): Added. New method to stop the
24841         time manager.
24843         * runtime.cpp (Surface::Zombify): Stop the time manager, prevents
24844         emission of timeout events.
24846 2008-05-05  Michael Dominic K.  <mdk@mdk.am>
24848         * src/shape.cpp: Reverting sde's stretch thing for now, breaks a lot of
24849         other stuff.
24851 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24853         * media.cpp, media.h, playlist.cpp, playlist.h: MediaElement: when
24854           playing playlists, we only emit MediaEnded if we're playing the
24855           last entry in the playlist. Call Playlist::OnEntryEnded manually
24856           instead of letting the playlist rely on the MediaEnded event, since
24857           the MediaEnded event isn't raised for all entries. Playlist: Added
24858           IsCurrentEntryLastEntry.
24860 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24862         * media.cpp: MediaElement::UpdateProgress: Don't call BufferingComplete
24863           until the pipeline got all the data it was waiting for.
24865 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24867         * media.cpp, media.h: Add an EmitMediaOpened method and emit
24868           MediaOpened somewhat more aggressively, but only once.
24870 2008-05-05  Jeffrey Stedfast  <fejj@novell.com>
24872         * text.cpp (Glyphs::GetSizeForBrush): Use this->width and
24873         this->height for the brush size - fixes TextTransforms.xaml once
24874         again.
24876 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24878         * media.cpp: Don't emit any BufferingProgressChanged events in
24879           OnPropertyChanged.
24881 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24883         * pipeline-ffmpeg.cpp: Give more information to ffmpeg, otherwise
24884           ffmpeg won't decode any wma audio.
24886 2008-05-05  Stephane Delcroix  <sdelcroix@novell.com>
24888         * shape.cpp: draw the line caps with the stretch_transform matrix.
24889         Finetune the stretch computation again.
24891 2008-05-05  Miguel de Icaza  <miguel@novell.com>
24893         * src/control.cpp: Add a skeleton UserControl, to get a bit
24894         further on the loading of a Silverlight 2 application. 
24896         See the TODO, there are still many limitations.
24898 2008-05-04  Larry Ewing  <lewing@novell.com>
24900         * runtime.cpp: restrict invalidations to the active windowless
24901         bounds.
24903         Fixes massive drawing issues on http://my.liveatedu.com/ where
24904         were creating invalidations with a negative coords.
24906 2008-05-04  Miguel de Icaza  <miguel@novell.com>
24908         * xap.cpp: Expose xap_unpack, include when Mono runtime is
24909         included. 
24911         * deployment.cpp: Small fixups.
24913         * xaml.cpp (deploy_namespace): New namespace used to parse
24914         AppManifest.xaml files that start with a <Deployment> tag on the
24915         http://schemas.microsoft.com/client/2007/deployment namespace. 
24916         
24917         (xaml_init): Register the deployment classes.
24919         * type.cpp (type_is_dependency_object): Add new helper method
24920         to determine if a Kind is a DEPENDENCYOBJECT, the list is no
24921         longer separated in value-types and DependencyObjects, so its not
24922         possible to do a fast lookup from managed code. 
24924 2008-05-04  Chris Toshok  <toshok@ximian.com>
24926         [ fixes #361906, while simultaneously keeping halo3,
24927         ControlLife.htm, and ControlState.htm happy ]
24928         
24929         * runtime.h, runtime.cpp, type-generated.cpp: move back to the
24930         LoadEvent instead of the broken Attaching event, reverting
24931         r102288.
24933         * panel.h, panel.cpp: add a "emitting_loaded" guard around the
24934         body of OnLoaded so we don't end up re-entering this method.
24935         Also, revert r102196 as the ordering of parent-to-child was
24936         correct originally, there were just other ordering constraints we
24937         weren't handling.
24939         * control.h, control.cpp: same.
24941         * dependencyobject.h, dependencyobject.cpp: add a count field to
24942         EventClosure so we can support the "only_unemitted" arg in
24943         EventObject::Emit.  The idea is that the Loaded event seems to
24944         only be emitted on those events that haven't yet been emitted.
24945         This may also be implemented just by making Loaded event handlers
24946         one-shot (removing themselves after they fire), but this is easy
24947         enough and works.  The only event with this odd behavior (that I
24948         know of) is Loaded.
24950         * uielement.cpp (UIElement::OnLoaded): set the IS_LOADED
24951         flag (which may actually be useless now, given the Emit change)
24952         but don't emit Loaded only when the flag is unset.
24954         * collection.cpp: remove the last bit of closure access from
24955         VisualCollection.  The OnLoaded call now happens in
24956         Panel::OnCollectionChanged, in 1 spot as opposed to 3 different
24957         spots in VisualCollection.
24959 2008-05-02  Sebastien Pouliot  <sebastien@ximian.com>
24961         * text.cpp|h: Adjust Glyphs::InsideObject with bounds changes.
24962         [Complete the fix for #383870]
24964 2008-05-02  Jeffrey Stedfast  <fejj@novell.com>
24966         * text.cpp (Glyphs::Layout): Take negative vOffset attr's for
24967         glyphs into account when calculating extents. Fix usage of OriginX
24968         and OriginY as far as extents goes.
24969         (Glyphs::GetOriginPoint): Don't leak the TextFont.
24970         (Glyphs::GetTransformOrigin): Always use 0.0,0.0 as the
24971         RenderTransformOrigin, Microsoft's implementation for Glyphs
24972         doesn't seem to take into account the width/height of the bounding
24973         box.
24974         (Glyphs::Layout): Use OriginX,OriginY as the bounding box origin
24975         rather than MIN (OriginX, 0), Min (OriginY, 0)
24977 2008-05-02  Sebastien Pouliot  <sebastien@ximian.com>
24979         * text.cpp|h: Add Glyphs::InsideObject so Mouse events will work.
24980         [Partial fix for #383870, bounds are not always correct]
24982 2008-05-02  Jeffrey Stedfast  <fejj@novell.com>
24984         * text.cpp (Glyphs::Render): Cache the glyph string in a moon-path
24985         rather than copying it from the cairo context for the same reason
24986         we did this for TextBlock segment path caching.
24988 2008-05-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24990         * playlist.h, playlist.cpp: Implemented ClientSkip.
24991         * media.cpp: Handle playlists entry with ClientSkip set correctly.
24993 2008-05-02  Michael Dominic K.  <mdk@mdk.am>
24995         * animation.cpp:
24996         * animation.h: For the KeySpline: getting rid of the ugly lookup-table
24997         with x -> y values and instead using a two-way curve approximation
24998         methodology for calculating the Spline progress. This is not 100% accurate
24999         (same as original bezier) for fine-grained values but removes all the
25000         precision problems and greatly improves the quality for long KeySpline
25001         animations (no more jags). 
25003 2008-05-01  Larry Ewing  <lewing@novell.com>
25005         * uielement.cpp (UIElement::OnPropertyChanged): go ahead and
25006         invalidate here as changes in the upstream opacity could make us
25007         unable to invalidate later.
25009         Fixes invalidation of last hex in a sprawl run.
25011 2008-05-01  Larry Ewing  <lewing@novell.com>
25013         * runtime.cpp: Fix a bunch of rendering bugs in windowless mode.
25014         Previously there were no time manager handlers listening to events
25015         in windowless mode so we were missing expose events.  Make all
25016         invalidations go throw Invalidate so that they get picked up in
25017         windowless.  Take into account that exposes go to a full size
25018         window in windowless mode so we don't need to subtract the device
25019         offsets.
25021         Fixes most of the issues with
25022         http://silverlight.r2musings.com/weatherwidget/default.aspx and
25023         fixes the harness failure on ZIndex.htm.
25024         
25025 2008-05-01  Chris Toshok  <toshok@ximian.com>
25027         * runtime.h, runtime.cpp: remove the LoadEvent and instead add an
25028         AttachingEvent, which is emitted after the toplevel control is set
25029         on the surface, but before UIElement::LoadedEvent is emitted on
25030         it.  Used by the plugin for hooking up the plugin onLoad handler.
25032 2008-05-01  Jeffrey Stedfast  <fejj@novell.com>
25034         * layout.cpp (RenderLine): Instead of grabbing the cairo_path_t
25035         from the cairo_t after pathing out all of the glyphs for a segment
25036         of text, keep our own moon_path for caching. Apparently the path
25037         gotten from cairo_copy_path() has whatever transforms are on the
25038         context pre-applied which is the cause for the breakage in bug
25039         #375279.
25041         * font.cpp (TextFont::AppendPath): New method to append a glyph's
25042         path to a moon_path for caching purposes.
25044 2008-04-30  Fernando Herrera  <fherrera@novell.com>
25046         * media.cpp: at MediaElement::DownloaderFailed if the uri was a mms://
25047         stream, fallback to http:// uri
25049 2008-04-30  Michael Dominic K.  <mdk@mdk.am>
25051         * panel.cpp:
25052         * panel.h: Adding the panel_add_child helper method used by the ancient
25053         demo. It actually makes sense.
25055 2008-04-30  Michael Dominic K.  <mdk@mdk.am>
25057         * Makefile.am:
25058         * collection.h:
25059         * text.cpp:
25060         * xaml.cpp: Include the utils.h locally in .cpp file and remove it from
25061         the install. This way we don't need to bundle the zip includes.
25063 2008-04-30  Stephane Delcroix  <sdelcroix@novell.com>
25065         * shape.cpp: calc_line_bounds: compute the start|end caps in the
25066         bounds.
25068 2008-04-30  Sebastien Pouliot  <sebastien@ximian.com>
25070         * panel.cpp: Emit Loaded on Canvas before it's child.
25071         [Fix part #361906 - i.e. back to original issue]
25073 2008-04-30  Fernando Herrera  <fherrera@novell.com>
25075         * downloader.cpp:
25076         * downloader.h: export downloader_get_downloaded_file without the
25077         partName.
25079 2008-04-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25081         * pipeline.cpp: Mp3FrameReader/Demuxer: Calculate frame duration
25082           correctly, and calculate file duration as MS seems to be doing it.
25083           SkipFrame: when seeking don't take into account the size of the
25084           mpeg header, since we only peaked it. 
25086 2008-04-29  Michael Dominic K.  <mdk@mdk.am>
25088         * shape.cpp: Clipping is not taken into account with cairo_in_*
25089         functions therefore do the hit-test in two steps -- first check if
25090         within clipping bounds and then check if within shape bounds. Fixes
25091         #383894 and test-shape-cursor-clipping.xaml test. 
25093 2008-04-28  Chris Toshok  <toshok@ximian.com>
25095         * runtime.cpp (Surface::Attach): emit the canvas's Loaded event
25096         before we emit our own Load event (and trigger the plugin's onLoad
25097         handler).
25099 2008-04-28  Chris Toshok  <toshok@ximian.com>
25101         * runtime.cpp (Surface::Attach): always emit Resize on Attach.
25102         fixes ControlState.htm.
25104 2008-04-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25106         * typegen/typegen.cs: Minor fix to support C constructors immediately
25107           prepended with *.
25108         * type-generated.cpp: Regenerated (includes a lot more C constructors
25109           now).
25111 2008-04-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25113         * geometry.h: Include glib.h before using glib macros.
25115 2008-04-28  Michael Dominic K.  <mdk@mdk.am>
25117         * xaml.cpp: Silently skip the attributes that are empty instead of
25118         throwing an error. Fixes the test-parser-empty-property.xaml and
25119         #383904.
25121 2008-04-28  Michael Dominic K.  <mdk@mdk.am>
25123         * brush.cpp: Make sure to use proper width for image stretching params.
25124         Fixes the image-brush-stretch-set.html and bug #383938.
25126 2008-04-25  Jeffrey Stedfast  <fejj@novell.com>
25128         * shape.cpp: Added property accessors.
25130 2008-04-25  Chris Toshok  <toshok@ximian.com>
25132         * type-generated.cpp: add the Surface Loaded event.
25134         * runtime.cpp (Surface::widget_destroyed): null out s->widget if
25135         it matches too.  no more dangling pointers.
25137         * runtime.h, runtime.cpp: give the Surface class a Load
25138         event (used to run the JS OnLoad event in the plugin) and an
25139         IsLoaded accessor.
25141         * xaml.cpp (dependency_object_hookup_event): raise a parser error
25142         if an event is specified with a javascript: prefix.
25143         
25144 2008-04-25  Larry Ewing  <lewing@novell.com>
25146         * stylus.cpp (InkPresenter::OnCollectionChanged): wrap the stroke
25147         changed logic inside a type check.
25149 2008-04-25  Jeffrey Stedfast  <fejj@novell.com>
25151         * xaml.cpp (geometry_from_str): Use the new gemoetry property
25152         accessor methods.
25154         * geometry.cpp: Added property accessor methods
25156 2008-04-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25158         * media.cpp: Always emit DownloadProgressEvents, even if we're
25159           buffering.
25161 2008-04-25  Stephane Delcroix  <sdelcroix@novell.com>
25163         * stylus.cpp: InkPresenter::OnCollectionChanged: call the parent 
25164         method, so the Canvas.Top, Canvas.Left properties are read. Fixes
25165         inkJournal.
25167 2008-04-25  Geoff Norton  <gnorton@novell.com>
25169         * pipeline-ffmpeg.cpp, pipeline-ffmpeg.h:  Support using ffmpeg's
25170         new libavcodec/avcodec.h
25172 2008-04-25  Jeffrey Stedfast  <fejj@novell.com>
25174         * runtime.cpp (runtime_init): No longer need to call
25175         assembly_part_init().
25177         * deployment.cpp (assembly_part_init): Moved into
25178         deployment_init().
25180         * deployment.h: Added missing virtual dtors.
25182         * collection.cpp (Collection::GetCount): Added.
25184 2008-04-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25186         * media.cpp: Set DownloadProgress to 0 when media fails to load.
25188 2008-04-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25190         * media.cpp: MediaElement::CheckMarkers: if the marker is from a live
25191           stream, emit it even if we missed it by up to 0.1 s. Refactored
25192           parts of UpdateProgress into GetBufferedSize. Emit MediaOpened only
25193           after we've either started playing or finished buffering. Emit
25194           MediaFailed/InvalidFileFormat if we failed to initialize the media.
25195           Reinitialize the media synchronously in SetSource.
25196         * media.h: Added
25198 2008-04-25  Michael Dominic K.  <mdk@mdk.am>
25200         * runtime.cpp:
25201         * uielement.cpp:
25202         * uielement.h: Also include the IsHitTestVisible status when checking
25203         our input_list after handling the mouse event. This fixes the
25204         mouse-enter-leave-hit-test-visibility.html test.
25206 2008-04-25  Stephane Delcroix  <sdelcroix@novell.com>
25208         * runtime.cpp: move the hotspot for the eraser, Fixes bnc 375213.
25210 2008-04-24  Jeffrey Stedfast  <fejj@novell.com>
25212         * clock.cpp: Added property accessor methods for TimelineMarker
25213         and added c-bindings.
25215         * downloader.cpp: Same.
25217         * media.cpp: Added property accessors so that it isn't
25218         necessary to use long-winded c-function names to get property
25219         values. Also made all c-wrappers call the c++ property accessor
25220         methods.
25222 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25224         * mplayer.cpp: When a video-only media reaches its end, set target_pts
25225           to the last rendered pts, since that's what is reported as our
25226           current position.
25228 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25230         * mplayer.cpp: When a video-only media reaches its end, set target_pts
25231           to the last rendered pts, since that's what is reported as our
25232           current position.
25234 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
25236         * runtime.cpp:
25237         * uielement.cpp:
25238         * uielement.h: Renaming UIElement::GetActualRenderVisibility to
25239         UIElement::GetActualTotalRenderVisibility for better name matching.
25241 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
25243         * runtime.cpp: Another perf fix for the fix -- make it a corner case
25244         when the new_input_list needs to be copied. In most cases we can just
25245         reuse it. 
25247 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
25249         * runtime.cpp:
25250         * uielement.cpp:
25251         * uielement.h: Ooops, so my prev fix was correct but *totally* dumb from
25252         the perf/sanity point of view. Here goes a better refactor.
25254         Adding UIElement::GetActualRenderVisibility which returns the visibility
25255         (like UIElement::ComputeTotalRenderVisibility) without setting the
25256         flags.
25258 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
25260         * runtime.cpp: After emitting the events make sure to update our
25261         input_list since it can be changed -- as a result of somebody ie.
25262         changing element's visibility in the enter/leave callback. Fixes the
25263         #375220 (Microsoft downloads index chars).
25265 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
25267         * animation.cpp: Do a slightly more precise generation of key-spline
25268         tables. Improves smoothness ie. in test-animation-slow-keyspline.xaml.
25270 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25272         * media.cpp, media.h: MediaElement: add a handler for DownloaderFailed
25273           and raise MediaFailed.
25275 2008-04-24  Stephane Delcroix  <sdelcroix@novell.com>
25277         * geometry.h:
25278         * geometry.cpp:
25279         * shape.cpp:
25280         * shape.h: override some Compute[Shape]Bounds method to pass a matrix
25281         argument. Allows measuration of transformed Pathes and a 2nd pass to 
25282         refines the guesses we're doing for Stretches.
25284 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25286         * src.mdp: Updated.
25288 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25290         * media.cpp, pipeline.cpp, pipeline.h: Addded
25291           ProgressiveSource::NotifyFinished to notify that the download has
25292           finished. This is required for streaming downloads which download 0
25293           bytes, otherwise the pipeline will hang waiting for data.
25295 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25297         * collection.cpp, collection.h: TimelineMarkerCollection needs to be
25298           sorted at all times, added a virtual Collection::AddToList method
25299           which appends the item to the list (and overriden by
25300           TimelineMarkerCollection to add it in the correct position to keep
25301           the collection ordered).
25303 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25305         * clock.cpp, clock.h: Added property accessors to TimelineMarker.
25307 2008-04-23  Jeffrey Stedfast  <fejj@novell.com>
25309         * panel.cpp: Add property accessors and added c-bindings.
25311 2008-04-23  Geoff Norton  <gnorton@novell.com>
25313         * Makefile.am: Fix make dist when building with ffmpeg.
25315 2008-04-23  Jeffrey Stedfast  <fejj@novell.com>
25317         * frameworkelement.cpp: Added property accessors so that it isn't
25318         necessary to use long-winded c-function names to get property
25319         values. Also made all c-wrappers call the c++ property accessor
25320         methods.
25322         * text.cpp: Added property accessors to all text classes so that
25323         it isn't necessary to use long-winded c-function names to get
25324         property values. Also made all c-wrappers call the c++ property
25325         accessor methods.
25326         (TextBlock::LayoutSilverlight): Removed, logic moved into
25327         ::Layout().
25329         * animation.h: Make sure all c-API _new() functions take void as
25330         argument.
25332         * uielement.cpp: Added some property accessors.
25334         * text.cpp: Use the new SolidColorBrush ctor.
25336         * brush.cpp: Added property accessors to all brush classes so that
25337         it isn't encessary to use long-winded c-function names to get
25338         property values. Also made all c-wrappers call the c++ property
25339         accessor methods.
25340         (SolidColorBrush::SolidColorBrush): New .ctor to make life
25341         simpler.
25343 2008-04-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25345         * mplayer.cpp: AudioPlayer: prevent calling SetTargetPts on the
25346           MediaPlayer with a negative pts.
25348 2008-04-23  Geoff Norton  <gnorton@novell.com>
25350         * libmoon.h: Drop mango.h
25351         
25352 2008-04-23  Geoff Norton  <gnorton@novell.com>
25354         * runtime.cpp: Remove pango support.
25355         
25356 2008-04-23  Geoff Norton  <gnorton@novell.com>
25358         * Makefile.h, text.cpp, text.h, mango.cpp, mango.h:  Remove pango 
25359         support.
25360         
25361 2008-04-23  Geoff Norton  <gnorton@novell.com>
25363         * swscale-converter.cpp, pipeline-ffmpeg.cpp, Makefile.am: Only
25364         include swscale and ffmpeg cpp files in the build if their configure
25365         flags are set.
25366         
25367 2008-04-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25369         * type.cpp: When looking for types use case-insensitive type
25370           comparison. Fixes #375230 and #375231.
25372 2008-04-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25374         * pipeline.cpp, pipeline.h: MediaClosure: add SetContextUnsafe which
25375           don't take a ref to the context, and add a context_refcounted field
25376           to keep track of refcounting. This is required for long-living
25377           closures which would otherwise cause circular references. Add and
25378           implemetn a ASFMarkerDecoderInfo class, and implement notification
25379           of found markers back to listeners.
25380         * src.mdp: Updated.
25381         * downloader.cpp, downloader.h: Downloader: Add a streaming_features
25382           field, so that the plugin can return information about mms streams.
25383         * http-streaming.cpp, http-streaming.h: Added
25384           parse_http_streaming_features.
25385         * mplayer.h: Add property accessors for CanSeek and CanPause, and
25386           implement them. Select any marker streams.
25387         * media.h, media.cpp: MediaElement: store the marker closure in the
25388           instance, so that we can delete it upon destruction. Read the
25389           streaming features from the downloader in order to set
25390           CanSeek/CanPause properly. TryOpen: if we don't have a filename,
25391           but we do have a downloaded file, use the downloaded file as the
25392           source (might happen if streaming stops before TryOpen is called).
25393         * mplayer.cpp: Add property accessors for CanSeek and CanPause, and
25394           implement them. Select any marker streams. Don't check if we can
25395           pause in Pause (), since MediaElement implements Buffering calling
25396           Pause on us. MediaElement is already checking if media can be
25397           paused or not.
25398         * Makefile.am: Added http-streaming.h|cpp.
25400 2008-04-22  Stephane Delcroix  <sdelcroix@novell.com>
25402         * rect.h: overrides for Union and IsEmpty to take a logical bool,
25403         allowing logical bounds computation.
25404         * geometry.cpp: use the overrided Union () in Computebounds
25405         * shape.cpp: This is the stretches' Holy Grail !
25407 2008-04-22  Jeffrey Stedfast  <fejj@novell.com>
25409         * eventargs.cpp (MouseEventArgs::GetStylusPoints): Make sure
25410         event->device non-NULL.
25412 2008-04-22  Larry Ewing  <lewing@novell.com>
25414         * playlist.h: remove expat references from public symbols.
25415         * playlist.cpp: Wrap XML_Parser in simple class to hide the symbol
25416         from the plublic headers.
25418         Start cleaning things up for ff3.
25420 2008-04-22  Chris Toshok  <toshok@ximian.com>
25422         * runtime.h, runtime.cpp: add Zombify() which sets the zombie
25423         flag.  basically this allows us to unwind gracefully from an event
25424         that has caused the surface to be destroyed.  when the flag is
25425         set, we basically stop emitting UI events that we're in the
25426         process of emitting.
25427         (Surface::widget_destroyed) simplify this, and zero out the
25428         widgets here so we don't destroy them again in ~Surface().
25429         
25430         * dependencyobject.h, dependencyobject.cpp: make unref_delayed
25431         public again, and don't warn about calling it on the main thread.
25432         we need it in the plugin.
25434 2008-04-22  Jeffrey Stedfast  <fejj@novell.com>
25436         * shape.cpp (Shape::DoDraw): Cast extents to int for
25437         AddToCacheSizeCounter().
25438         (Shape::IsCandidateForCaching): Same for
25439         VerifyWithCacheSizeCounter().
25441 2008-04-22  Michael Dominic K.  <mdk@mdk.am>
25443         * animation.cpp: Safely allow now the KeyTime property to be nullable.
25444         Fixes the Animation_NegativeTst.htm test.
25446 2008-04-22  Michael Dominic K.  <mdk@mdk.am>
25448         * animation.cpp:
25449         * animation.h: Making the Storyboard::Begin return bool (true if
25450         storyboard started correctly, false otherwise).
25452 2008-04-22  Michael Dominic K.  <mdk@mdk.am>
25454         * animation.cpp:
25455         * animation.h:
25456         * clock.cpp:
25457         * clock.h: Adding a 'bool Validate ()' virtual to Timeline which is used
25458         to validate the Timeline before starting it. Timelines are always valid
25459         by default except for KeyFrame-based animations where we perform a
25460         check on the keyframes. 
25462         Storyboard doesn't start if any of it's timelines are not valid. This
25463         fixes the test-animation-invalid-keyframe-keytime.xaml test.
25465 2008-04-22  Michael Dominic K.  <mdk@mdk.am>
25467         * animation.cpp: Don't initialize the KeyTime for KeyFrame to a default
25468         value, make it be NULL by default. This currently causes a segfault in
25469         the just-added test-animation-invalid-keyframe-keytime.xaml which is
25470         fine.
25472 2008-04-22  Fernando Herrera  <fherrera@novell.com>
25474         * pipeline.h:
25475         * pipeline.cpp: set the new read position after Seeking to pts.
25476         Added ProgressiveSource::SeekInternal that refuses to Seek to a
25477         non-filled position.
25479 2008-04-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25481         * dependencyobject.cpp, dependencyobject.h: Added another SetValue
25482           overload, to enable calling all SetValues with stack objects.
25483         * xaml.cpp: Fix a Value leak.
25485 2008-04-21  Jeffrey Stedfast  <fejj@novell.com>
25487         Fixes a double-destroy bug in FullScreen.htm
25489         * runtime.cpp (Surface::Surface): Initialize normal_widget - never
25490         let it be NULL unless we are in windowless mode.
25491         (Surface::.dtor): Don't call DestroyWidget on 'widget', call it on
25492         'widget_normal' instead, this way we can't accidently destroy the
25493         fullscreen widget twice (e.g. if we are in fullscreen mode).
25494         (Surface::ConnectEvents): Record the unrealize signal id so that
25495         we can later disconnect from it.
25496         (Surface::DestroyWidget): Now takes a SignalIds argument so that
25497         we can disconnect from unrealize/destroy signals which may fire in
25498         response to destroying the widget.
25499         (Surface::InitializeWidget): Now takes a SignalIds argument so
25500         that we can save the destroy signal id.
25502 2008-04-21  Geoff Norton  <gnorton@novell.com>
25504         * runtime.cpp: Guard against freeing a list in a sub-event
25505         loop when crossings are invoked.  Fixes bug#378902
25506         
25507 2008-04-20  Miguel de Icaza  <miguel@roxanne.site>
25509         * deployment.cpp: new dependency property objects for the
25510         Deployment class.
25512         * xap.cpp: XAP loader, unpacks and instantiates deployment, but
25513         does not load assemblies in VM.  Not sure if this should be done
25514         here (and add a VM dependency) or in the plugin and later as well
25515         on mopen.
25517         * runtime.cpp: Deployment initialization.
25519         * downloader.cpp Moved some code from here into utils.cpp: Expose
25520         CreateTempDir instead of MakeTempDir that takes care of creating
25521         the directory with a unique signature.
25523 2008-04-21  Geoff Norton  <gnorton@novell.com>
25525         * yuv-converter.cpp: Emit a warning on unaliged memory and fall back
25526         to the C implementation.
25528 2008-04-18  Larry Ewing  <lewing@novell.com>
25530         * dirty.cpp (Surface::ProcessDownDirtyElements): When visibility
25531         changes invalidate our parents bounds to notify them that their
25532         subtree may have changed.
25534         Fixes the status boxes on MouseInput.htm
25536 2008-04-18  Jeffrey Stedfast  <fejj@novell.com>
25538         * runtime.cpp (Surface::ConnectEvents): Connect to focus-in-event
25539         and focus-out-event.
25540         (Surface::focus_in_callback): If we have a toplevel canvas, emit a
25541         GotFocus event on it.
25542         (Surface::focus_out_callback): If we have a toplevel canvas, emit
25543         a LostFocus event on it.
25544         (Surface::Attach): If our widget has focus, emit GotFocus event on
25545         our canvas right after we emit the Loaded event.
25547         * uielement.cpp (UIElement::EmitGotFocus): New method.
25548         (UIElement::EmitLostFocus): New method.
25550 2008-04-18  Geoff Norton  <gnorton@novell.com>
25552         * yuv-converter.cpp:  It seems that ffmpeg will occasionally
25553         over-pad the YUV buffers with a SIMD aligned amount (see
25554         timecode-*.wmv)
25555         
25556 2008-04-18  Michael Dominic K.  <mdk@mdk.am>
25558         * animation.cpp: Make sure we always return targetValue when
25559         progress >= 1.0 for Spline*KeyFrame's.
25561         This fixes the clock36.xaml test and PopFly bug of "line dirt
25562         leftovers" when collapsing block list or tutorial list.
25564 2008-04-17  Larry Ewing  <lewing@novell.com>
25566         * xaml.cpp (xaml_init): register MouseEventArgs as a dependency object.
25568 2008-04-17  Larry Ewing  <lewing@novell.com>
25570         * src/eventargs.cpp:
25571         * src/eventargs.h: 
25572         * src/type-generated.cpp:
25573         * src/value.h: add a default ctor for MouseEventArgs.
25575 2008-04-17  Larry Ewing  <lewing@novell.com>
25577         * typegen/typegen.cs: don't require an svn repo for proper
25578         functioning, try to make the error messages functional still.
25580 2008-04-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25582         * media.cpp: MediaElement::MediaOpened: Advance state to Buffering
25583           before trying to play/pause, otherwise nothing will happen (if
25584           coming from the Opening state). Fix printf.
25586 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25588         * dependencyobject.cpp, dependencyobject.h: Add an always_change flag
25589           for DependencyProperty, if a property has this flag, it will always
25590           be changed, even if the new value is the same as the old value.
25591           DependencyObject::SetValue: honor the new always_change flag.
25592         * media.cpp: Set the always_change flag to true for
25593           MediaBase::SourceProperty.
25595 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25597         * media.cpp: MediaElement: Move the Play/Pause/AutoPlay logic to
25598           MediaOpened, so that it also happens when TryLoadFinished opens the
25599           media. Fixes media not starting to play when the media was
25600           downloaded between the moment we tried to open it and it was
25601           successfully opened.
25603 2008-04-17  Jeffrey Stedfast  <fejj@novell.com>
25605         * color.cpp (color_from_str): Handle uint32 color values that are
25606         not hex.
25608 2008-04-17  Larry Ewing  <lewing@novell.com>
25610         * dependencyobject.cpp (DependencyProperty::DependencyProperty):
25611         initialize is_nullable.
25613         Fixes random failure of ParserErrors.htm.
25615 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25617         * media.cpp: MediaElement::TryOpen: always unref the FileSource we
25618           create when we're done with it.
25620 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25622         * dependencyobject.cpp, dependencyobject.h: EventObject: we need to
25623           remember how many events the current type has, since in our
25624           destructor we can't get that information anymore. Add a new
25625           EventLists class which does the book-keeping.
25627 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25629         * media.cpp: MediaElement::Reinitialize: don't call SetValue if we're
25630           in the destructor. MediaElement::SetMedia: call ComputeBounds at
25631           the end. Fixes xaml/test-canvas-no-size.html
25633 2008-04-17  Michael Dominic K.  <mdk@mdk.am>
25635         * animation.cpp: It turns out that KeyFrames doesn't have default Value
25636         of NULL but rather 0/Black/etc.  
25638         This fixes the the test-animation-null-defaults-*.xaml tests and the bug
25639         in PopFly where clicking the block list collapser wouldn't do anything
25640         (it collapses now properly like the tutorial right pane). 
25642 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25643         
25644         * src.mdp: Updated.
25646 2008-04-16  Larry Ewing  <lewing@novell.com>
25648         * type.cpp: avoid an infinite recursion in LookupEvent.
25650         Fixes a crash in RuntimeErrors.htm.
25652 2008-04-16  Larry Ewing  <lewing@novell.com>
25654         * shape.cpp (Shape::ComputeStretchBounds): get another test working.
25656 2008-04-16  Larry Ewing  <lewing@novell.com>
25658         * shape.cpp (Shape::ComputeStretchBounds): an incomplete fix to
25659         try to resolve the regression in stretch that had crept in.  Still
25660         working on a more complete patch.
25662 2008-04-16  Larry Ewing  <lewing@novell.com>
25664         * geometry.cpp (RectangleGeometry::ComputeBounds): rectangles have
25665         a logical size.
25667 2008-04-16  Jeffrey Stedfast  <fejj@novell.com>
25669         * dependencyobject.cpp (free_value): value argument may be NULL.
25671 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25673         * dependencyobject.cpp: DependencyObject: Emit DestroyedEvent before
25674           decreasing refcount, so that ref in event emission doesn't abort.
25675           Reenable ref/unref in event emission.
25677 2008-04-16  Jeffrey Stedfast  <fejj@novell.com>
25679         * dependencyobject.cpp (set_surface): value argument can be NULL.
25680         (DependencyObject::IsValueValid): Fixed compile warnings.
25682         * downloader.cpp: Properly set/reset Status and StatusText
25683         properties.
25684         (Downloader::Open): Properly reinitialize all state.
25685         (Downloader::Write): Clamp progress to 1.0 (altho it should never
25686         go above, especially not that I've fixed resetting 'total' state).
25688         * enums.c (initialize_enums): Don't cast arrays using
25689         GINT_TO_POINTER(), doesn't make any sense.
25691 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25693         * collection.cpp: Collection::EmitChanged: don't create a
25694           ChangeEventArgs if we don't need one, and unref it when we're
25695           finished with it.
25697 2008-04-16  Michael Dominic K.  <mdk@mdk.am>
25699         * clock.cpp: Add protection against division by 0.
25701 2008-04-16  Michael Dominic K.  <mdk@mdk.am>
25703         * animation.cpp:
25704         * animation.h: Don't detach the ClockGroup from parent on the Completed
25705         event. This is now finally no longer needed. While keeping the
25706         clockgroup means little perf difference it makes the whole thing much
25707         more simple to read (there is just one place that explains why Filling
25708         groups are no longer processed after Completed).
25710 2008-04-16  Larry Ewing  <lewing@novell.com>
25712         * shape.cpp: tweak the origin tweak again.  This should pass
25713         test-shape-path-stretch[34].xaml.
25715 2008-04-16  Jeffrey Stedfast  <fejj@novell.com>
25717         Fix for OMPackagingSource.htm
25719         * media.cpp (MediaElement::OnPropertyChanged): If the new source
25720         is empty, Invalidate().
25721         (MediaElement::Render): Render nothing if our downloader is NULL.
25723 2008-04-16  Larry Ewing  <lewing@novell.com>
25725         * shape.cpp: don't adjust the origin unless we are adjusting that
25726         axis.
25728 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25730         * playlist.cpp: Simplify printf.
25732 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25734         * src.mdp: Updated to (mostly) compile.
25736 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25738         * src.mdp: Updated.
25740 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25742         * typegen/typegen.sh: Updated to work correctly independently of
25743         the current directory when executed.
25745 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25747         * animation.cpp, animation.h, brush.cpp, brush.h, clock.cpp, clock.h,
25748           collection.cpp, collection.h, dependencyobject.h, downloader.cpp,
25749           downloader.h, Makefile.am, media.cpp, media.h, runtime.cpp, runtime.h,
25750           type.cpp, type.h, type.h.in, typegen/typegen.cs, type-generated.cpp,
25751           uielement.cpp, uielement.h: Initialize our type system statically.
25752         * dependencyobject.cpp: Initialize our type system statically. Comparing a
25753           Kind value to another to determine type hierarchy isn't supported
25754           anymore, use Value::Is or Type::IsSubclassOf, which are doing the right
25755           thing.
25756         * src.mdp: Updated.
25757         * type.cpp.in: Removed, no longer required.
25758         * value.cpp, value.h, value.h.in: Comparing a Kind value to another to
25759           determine type hierarchy isn't supported anymore, use Value::Is or
25760           Type::IsSubclassOf, which are doing the right thing.
25762 2008-04-16  Larry Ewing  <lewing@novell.com>
25764         * shape.cpp (Shape::ComputeStretchBounds): fix typo.
25766 2008-04-16  Larry Ewing  <lewing@novell.com>
25768         * shape.cpp (Shape::ComputeStretchBounds): fix the centering logic
25769         that got accidentally lost when fixing other bits.
25771         Fixes regression in StretchAndShapes.xaml.
25773 2008-04-16  Jackson Harper  <jackson@ximian.com>
25775         * xaml.cpp: {x:Null} evaluates to NULL, if we encounter this value
25776         we need to check if the property is Nullable and raise an error if
25777         it isn't.
25779 2008-04-16  Jackson Harper  <jackson@ximian.com>
25781         * dependencyobject.h|cpp: SetValue now validates values and
25782         returns false with a GError when invalid values are used.
25783         Subclasses can (and should) override IsValidValue to do their own
25784         value validation.
25785         * xaml.cpp: Use new SetValue that returns errors.
25786         
25787 2008-04-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25789         * media.cpp: MediaBase::SetSourceAsyncCallback: don't do anything if we
25790           don't have a surface anymore. We're probably executing after the surface
25791           has been destroyed.
25793 2008-04-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25795         * src.mdp: Updated to include typegen/*.
25796         * type.cpp, type.cpp.in, type.h, type.h.in: Added type_get_name, and fix
25797           Behaviour/Behavior inconsistency.
25799 2008-04-15  Jeffrey Stedfast  <fejj@novell.com>
25801         * media.cpp (MediaElement::OnPropertyChanged): Moved the
25802         PositionProperty seek logic into here so we could get rid of
25803         MediaElement::SetValue() overload.
25805         * dependencyobject.h (class DependencyObject): SetValue() is no
25806         longer a virtual method.
25808 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
25810         * clock.cpp: ret_time is 0 when reaching repeat_count == 0. Fixes the
25811         clock35.xaml test.
25813 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
25815         * clock.cpp: Clock::ComputeNewTime - make sure to take the speed ratio 
25816         into account also when moving back in time. 
25818         Fixes the clock34.xaml test.
25820 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
25822         * animation.cpp: Make sure to clamp the progress to 0.0 - 1.0 when we're
25823         calculating it ourselves (instead of using the CalcProgress). Otherwise
25824         we're bypassing the clamping and extending animations/values beyond
25825         their bounds. 
25827         This is a real fix for the Popfly #378390 (cannot configure the box in
25828         Popfly). Also fixes the clock34.xaml test-case.
25830 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
25832         * clock.cpp: Since we're at it, small fix in Clock::Tick -- Clamp time
25833         when previous OR current state is Clock::Active.
25835 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
25837         * clock.cpp: Reverting the change that was supposed to fix popfly. It's
25838         actually totally bad. I knew I was too fast with this one.
25840 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
25842         * clock.cpp: The time needs to be clamped always. Fixes #378390 (cannot
25843         configure the box in Popfly). Whoah, that was a nasty one.
25845 2008-04-14  Chris Toshok  <toshok@ximian.com>
25847         * runtime.cpp (Surface::Attach): don't clear the up/down dirty
25848         lists here.  Calling toplevel->SetSurface(NULL) ensures that all
25849         elements from the previous tree have their dirty elements removed,
25850         so what's left will correspond to 1) things that are about replace
25851         the current hierarchy, or 2) things that haven't actually been
25852         added to the hierarchy yet, but need to be associated with a
25853         surface.
25855         * collection.cpp (Collection::Clear): emit
25856         CollectionChangeTypeChanging event before we do the actual change
25857         so the owner can do something with the children if it needs to.
25858         (VisualCollection::VisualAdded, VisualCollection::VisualRemoved):
25859         nuke.
25860         (VisualCollection::Add): remove call to VisualAdded.  that
25861         behavior will be handled by Panel in its OnCollectionChanged
25862         method.
25863         (VisualCollection::SetVal): same.
25864         (VisualCollection::Insert): same.
25865         (VisualCollection::Remove): same, but with VisualRemoved.
25866         (VisualCollection::RemoveAt): same.
25867         (VisualCollection::Clear): remove the loop calling VisualRemoved.
25868         this will be handled by the additional
25869         CollectionChangeTypeChanging handling in panel.cpp.
25871         * enums.h (enum CollectionChangeType): add
25872         CollectionChangeTypeChanging.
25874         * panel.h, panel.cpp (Panel::OnPropertyChanged): handle the case
25875         where the ChildrenProperty is changed, by calling ChildRemoved on
25876         all the old children, and ChildAdded on all the new ones.
25877         (Panel::ChildAdded): new home for VisualCollection::VisualAdded.
25878         (Panel::ChildRemoved): new home for
25879         VisualCollection::VisualRemoved.
25880         (Panel::OnCollectionChanged): add support for
25881         CollectionChangeTypeChanging, so we can remove all children.  this
25882         change type is generated by Collection::Clear.
25884         * stylus.cpp (Stroke::OnCollectionChanged): add empty handler for
25885         CollectionChangeTypeChanging.
25886         (InkPresenter::OnCollectionChanged): same.
25888 2008-04-14  Jeffrey Stedfast  <fejj@novell.com>
25890         * media.cpp (Image::CreateSurface): Robustification of image
25891         loading.
25893 2008-04-14  Michael Dominic K.  <mdk@mdk.am>
25895         * clock.cpp:
25896         * clock.h: When calculating the new time in DoRepeat use modulo on new
25897         value. Otherwise we're 'losing' a little bit of time on every repeat and
25898         end time doesn't match with parent. This fixes a few more "jags" on
25899         animations ie. clock13.xaml.
25901 2008-04-11  Larry Ewing  <lewing@novell.com>
25903         * xaml.cpp (value_from_str): make sure we propogate the error if
25904         color_from_string returns NULL.
25906         * color.cpp (color_from_str): return NULL on invalid color values
25907         rather than simply returning black.
25909         Add an error condition to color_from_string so that we pass the
25910         color tests in ParserErrors test.
25911         
25912 2008-04-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25914         * dependencyobject.cpp: Surround event emission with ref/unref of ourselves.
25916 2008-04-11  Jeffrey Stedfast  <fejj@novell.com>
25918         * playlist.cpp: Disable debugging spew unless DEBUG_PLAYLISTS is
25919         defined.
25921         * downloader.cpp (Downloader::Send): Use
25922         TimeManager::InvokeOnMainThread() here like Rolf did in
25923         MediaBase. Simplifies things by not needing a surface.
25925         * text.cpp (TextBlock::SetFontSource): Now takes a Downloader
25926         object as opposed to a DependencyObject.
25928 2008-04-11  Michael Dominic K.  <mdk@mdk.am>
25930         * clock.cpp: in Clock, make sure we CalcProgress on the last tick before
25931         we go Filling/Stopped. Without this we never "finish off" our animations
25932         and depending on the framerate we get "jags". Fixes the clock32.xaml
25933         test.
25935 2008-04-11  Jeffrey Stedfast  <fejj@novell.com>
25937         * runtime.cpp: Make the dot and eraser cursors const to avoid
25938         compiler warnings.
25940 2008-04-11  Michael Dominic K.  <mdk@mdk.am>
25942         * enums.c: Removing bolox comment and behavior. Always return -1 on
25943         fail.
25945         * xaml.cpp: Push a g_warning when we're hitting bad enums on bad props.
25946         Should make it a little bit easier to spot problems.
25948 2008-04-11  Michael Dominic K.  <mdk@mdk.am>
25950         * dependencyobject.cpp: When calling RegisterAllNamesRootedAt be
25951         actually recursive (I'm not sure why this was commented out? Toshok?). 
25952         Fixes the sprawl end-game animation, #378748.
25954 2008-04-11  Stephane Delcroix  <sdelcroix@novell.com>
25956         * runtime.cpp: create the stylus and eraser cursors from xpm. Fixes 
25957         bnc #375213. Implemented the MouseCursorNone too.
25959 2008-04-10  Larry Ewing  <lewing@novell.com>
25961         * xaml.cpp (start_element): throw an error if there is an xml
25962         attribute on a dependency property.
25964 2008-04-10  Larry Ewing  <lewing@novell.com>
25966         * enums.c (enum_from_str): return -1 on an invalid enum string so
25967         that we can catch it as a ParserError fixes
25968         Parser_Invalid_Enum.xaml.
25970 2008-04-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25972         * media.cpp: MediaBase::SetSource: no need to get a
25973           Surface/TimeManager instance to do an asynchronous call, just
25974           call TimeManager::InvokeOnMainThread.
25976 2008-04-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25978         * mplayer.h, mplayer.cpp: Added MediaPlayer::AudioFinished, called
25979           by the audio thread when the audio finishes.
25981         * media.h, media.cpp: Added MediaElement::AudioFinished, called by
25982           the media player when the audio finishes. Enables us to raise
25983           MediaEnded for audio-only media.
25985 2008-04-10  Jeffrey Stedfast  <fejj@novell.com>
25987         * brush.cpp|media.cpp: All SetSource() entry points now take
25988         Downloader objects rather than DependencyObject arguments - the
25989         same as MSDN defines.
25991         * media.cpp (SetSourceInternal): More cleanup /
25992         simplification. Since *::SetSource() already takes steps to be
25993         async, no need to use Downloader::Send() which would introduce
25994         another delay in downloading. It should be plenty safe to call
25995         Downloader::SendNow() in all ::SetSourceInternal()
25996         implementations. Also, we now need to handle NULL downloader which
25997         we get called with if the original SetSource() was passed a NULL
25998         downloader.
25999         (Image::SetSource): Don't cleanup the surface here, do that in
26000         SetSourceInternal() so that we delay until appropriate.
26001         (Image::SetSourceInternal): If there is a downloader, delay
26002         CleanupSurface() even longer until the new image has been
26003         downloaded.
26004         (Image::DownloaderComplete): Call CleanupSurface() here.
26006 2008-04-10  Jeffrey Stedfast  <fejj@novell.com>
26008         * media.cpp: Consolidated Image and MediaElement downloader bits
26009         by putting them into MediaBase.
26011 2008-04-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26013         * dependencyobject.cpp: Guard against calling closures which have
26014           been removed during emission of previous events in the same
26015           event list: when we're emitting and a closure is removed, mark
26016           the closure as pending removal, don't call it anymore, and only
26017           remove it when we're finished emitting.
26019         * dependencyobject.h: Guard against calling closures which have
26020           been removed during emission of previous events in the same
26021           event list.
26023 2008-04-10  Michael Dominic K.  <mdk@mdk.am>
26025         * downloader.cpp:
26026         * downloader.h:
26027         * media.cpp: A straight-forward fix for "gray flashes" in comic and
26028         slideshow (#375275). It's circumventing a change to make downloaders
26029         async for Image. Jeff, maybe you can figure more?
26031         (The commit that broke the the slideshow was r99065, Jeff from
26032         2008-03-26).
26034 2008-04-10  Michael Dominic K.  <mdk@mdk.am>
26036         * shape.cpp: Little fix for new stretching algho by Stephane. Fixes the
26037         Showcase and test-shape-path-stretch2.xaml.
26039 2008-04-09  Chris Toshok  <toshok@ximian.com>
26041         * stylus.cpp (Stroke::HitTestEndcapSegment): don't fail if root_1
26042         is invalid, as root_2 might be.
26044 2008-04-09  Chris Toshok  <toshok@ximian.com>
26046         [ Fixes some odd behavior in
26047           http://www.thedatafarm.com/silverink/, and also fixes bug
26048           #375229 ]
26049         
26050         * panel.cpp (Panel::FrontToBack): Kind of a screwy change - we
26051         intersect the expose region with our RenderBounds, not our normal
26052         Bounds.  This forces us to add the ink presenter to the render
26053         list even when the exposed area is just going to redraw a stroke,
26054         not the actual canvas rectangle.  When we go to subtract, however,
26055         we still only subtract the canvas rectangle.
26057         * stylus.cpp (InkPresenter::OnPropertyChanged): invalidate the old
26058         stroke collection's bounds as well as the new stroke collection's
26059         bounds.
26060         (InkPresenter::OnCollectionChanged): when the collection has
26061         changed, we can't just use Invalidate() since that only
26062         invalidates the canvas bounds.  We need to invalidate our render
26063         bounds to get rid of strokes that are outside the canvas bounds.
26064         Also, make sure to also invalidate the new bounds of the stroke
26065         collection (it will usually be empty, but do it anyway).
26066         (InkPresenter::ComputeBounds): add logic to compute the
26067         render_bounds here.
26068         (InkPresenter::GetRenderBounds): new method.
26070         * stylus.h (class InkPresenter): add GetRenderBounds, and also add
26071         an OnPropertyChanged method so we can deal with the stroke
26072         collection being assigned to something else.
26074         * uielement.h (class UIElement): as much as I hate to do this, add
26075         yet another type of bounds (RenderBounds).  this is only here for
26076         the special case of the inkpresenter, which has the normal canvas
26077         bounds (the rectangle), the subtree bounds (which unions the
26078         canvas bounds with the bounds of strokes and children) and render
26079         bounds (which unions canvas bounds and stroke bounds.)
26081 2008-04-09  Jeffrey Stedfast  <fejj@novell.com>
26083         * dependencyobject.cpp (resolve_property_path): Alias TextElement
26084         to TextBlock to work around some buggy beta versions of Blend.
26086 2008-04-09  Stephane Delcroix  <sdelcroix@novell.com>
26088         * shape.cpp: Shape::ComputeStretchBounds: compute the stretch assuming
26089         the logical/shape bounds diff stays the same. It's IMHO as close as we
26090         can go without drawing and recalculating.
26092 2008-04-08  Jeffrey Stedfast  <fejj@novell.com>
26094         * xaml.cpp: Cleaned up some of the debugging printf's and and
26095         wrapped them in d() to declutter console spewage when unneeded.
26096         (xaml_create_from_str): ctype functions take int arguments, where
26097         normal char values are in the range 0-255 - in order to work with
26098         non-GNU, need to cast from char to unsigned char.
26100         * error.h (class ParserErrorEventArgs): Avoid using the c++ ctor
26101         initializer stuff to be consistent with other classes.
26103 2008-04-08  Sebastien Pouliot  <sebastien@ximian.com>
26105         * xaml.cpp: Fix (yesterday's fix) on parsing properties. Thanks 
26106         to Jackson.
26108 2008-04-08  Michael Dominic K.  <mdk@mdk.am>
26110         * clock.cpp:
26111         * clock.h: SkipToFill the automatic duration clock groups except if 
26112         this is the root of all roots clock (the TimeManager's clock). Due to
26113         the idle_hint optimization, we don't process those clocks anyways.
26115 2008-04-08  Michael Dominic K.  <mdk@mdk.am>
26117         * value.h: 
26118         * animation.cpp:
26119         * animation.h:
26120         * dependencyobject.cpp:
26121         * dependencyobject.h: Making sure that each property is animated only by
26122         a single animation at a time (the last one started). 
26123         From Silverlight forums:
26125         "Keep in mind Silverlight only supports a single animation on a
26126         property at a time, so if you begin multiple animations on the same
26127         property, the last one will prevail."
26129         This prevents us from overriding Filling/HoldEnd animations by sb's
26130         started before. 
26132         The implementation is: for each prop we create a hash table (when
26133         needed) which stores objects (keys) + last AnimationStorage attached
26134         (values). When new AnimationStorage is attached to a prop, the last one
26135         is notified to stop updating the target (we don't touch the clock
26136         structure). And then there is some magic to handle destroy's etc. 
26138         This fixes PopFly mouse enter/leave problems in the toolbox and the 
26139         http://www.designwithsilverlight.com/tutorials/photoGallery/gallery.html
26140         problems. Fixes #375231, #362363.
26142 2008-04-07  Jeffrey Stedfast  <fejj@novell.com>
26144         Fixes needed for Zombomatic
26146         * downloader.cpp (Downloader::GetDownloadedFilePart): When
26147         creating the full pathname for parts we are extracting, convert
26148         everything to lowercase since we need to treat archived filenames
26149         case-insensitively.
26150         (Downloader::GetUnzippedPath): Convert filenames from the zip
26151         archive to lowercase so that it is easier for us to find them
26152         case-insensitively on the filesystem once they are extracted.
26154 2008-04-07  Sebastien Pouliot  <sebastien@ximian.com>
26156         * xaml.cpp: Fix parsing properties by ensure they start with the 
26157         element name (and not something else). Fix crasher.
26159 2008-04-07  Michael Dominic K.  <mdk@mdk.am>
26161         * src/shape.cpp:
26162         * src/shape.h: Compute the origin point as a separate step after
26163         computing the shape bounds and the stretch bounds. This fixes the
26164         recently broken sprawl.
26166         I think it also fixes other things. Before, given the way code was,
26167         the stretch_bounds would affect the origin *only* in the case of Path,
26168         in other cases (Line, Polygon, Polyline...) they would be ignored.
26170 2008-04-04  Chris Toshok  <toshok@ximian.com>
26172         * stylus.cpp (Stroke::HitTestEndcapSegment): fix this method.  it
26173         was missing a bunch of tests (basically it was intersecting
26174         infinite lines with ellipses, not segments), and some of the math
26175         was wrong.
26177 2008-04-04  Jeffrey Stedfast  <fejj@novell.com>
26179         Intended to fix bug #373462, but something else is preventing that
26180         site from working now...
26182         * media.cpp (MediaElement::SetSourceInternal): PartName is no
26183         longer a const char * argument, which means we take ownership of
26184         the PartName string.
26185         (MediaElement::SetSourceAsyncCallback): New method which is the
26186         async callback for SetSource().
26187         (MediaElement::SetSource): Reinitialize() right away.
26188         (MediaElement::SetSource): Clear out any pending SetSource async
26189         data, replacing it with the new downloader/part name info.
26190         (MediaElement::SetSource): Allow a NULL downloader object but make
26191         sure we don't crash in that case either.
26193 2008-04-04  Sebastien Pouliot  <sebastien@ximian.com>
26195         * dependencyobject.cpp (resolve_property_path): Avoid crash on 
26196         invalid syntax and leaks in other error cases. Fix #377039 (more
26197         test cases coming soon).
26199 2008-04-04  Jeffrey Stedfast  <fejj@novell.com>
26201         * animation.cpp (KeyFrameCollection::GetKeyFrameForTime): Return
26202         immediately if the array len is 0, prevents a crash accessing
26203         sorted_list->pdata[0] when working backwards in the second
26204         for-loop. Fixes one of the crashes I found while investigating bug
26205         #362561.
26207 2008-04-04  Sebastien Pouliot  <sebastien@ximian.com>
26209         * runtime.cpp: Don't crash in strcase_hash if the hashtable 
26210         contains NULL values.
26212 2008-04-03  Chris Toshok  <toshok@ximian.com>
26214         * runtime.cpp (Surface::InitializeWidget): disable the
26215         GDK_POINTER_MOTION_HINT_MASK stuff for now.  we're not passing
26216         tests with it enabled.
26217         (Surface::motion_notify_callback): force the emission of a motion
26218         event.
26220 2008-04-03  Jeffrey Stedfast  <fejj@novell.com>
26222         * runtime.cpp (Surface::SetCursor): Stylus cursor should map to
26223         the pencil cursor. Also updated Hand (which should be a
26224         left-pointing hand, not right-pointing) and also Eraser (we need
26225         to make our own icon for this, but I suck at art so I'll pass for
26226         now).
26228 2008-04-03  Michael Dominic K.  <mdk@mdk.am>
26230         * shape.cpp:
26231         * shape.h: Calculate the logical extents when computing the shape bounds
26232         and pass them to the ComputeStretchBounds. They're currently not used in
26233         any way.
26235 2008-04-03  Michael Dominic K.  <mdk@mdk.am>
26237         * shape.cpp: Don't init the stretch matrix to identity on each
26238         Shape::ComputeShapeBounds. We want to be able to call it freely.
26240 2008-04-02  Michael Dominic K.  <mdk@mdk.am>
26242         * geometry.cpp: Use the cairo_path_extents to calculate the logical
26243         bounds instead of faking small stroke.
26245 2008-04-02  Michael Dominic K.  <mdk@mdk.am>
26247         * shape.cpp:
26248         * shape.h: Adding new parameter (bool logical) to all the
26249         Shape::ComputeShapeBounds functions and overrides. See prev commit for
26250         explanation of what is logical bounds.
26252         Currently all clients use logical == false. Just adding this
26253         functionality.
26255 2008-04-02  Michael Dominic K.  <mdk@mdk.am>
26257         * geometry.cpp:
26258         * geometry.h:
26259         * shape.cpp:
26260         * uielement.cpp: Adding new parameter (bool logical) to all the
26261         Geometry::ComputeBounds functions and overrides. Calculating logical
26262         bounds means calculating bounds without stroke included. Ie. a line
26263         (0,0) - (100, 0) has logical bounds of width=100, height=0, no matter
26264         what the stroke is. 
26266         Not used right now, will be used in just a few commits (all current
26267         ComputeBounds clients call it will logical == false).
26269 2008-04-02  Michael Dominic K.  <mdk@mdk.am>
26271         * shape.cpp: Don't automatically compute the stretch bounds when
26272         computing shape bounds. Instead, compute it as a separate step in
26273         Shape::ComputeBounds.
26275 2008-04-03  Chris Toshok  <toshok@ximian.com>
26277         * uielement.cpp (UIElement::EmitMouseLeave): turns out that,
26278         contrary to msdn2, MS *is* indeed emitting this event with
26279         non-null eventargs.  it's just an EventArgs object, not a
26280         MouseEventArgs.
26282 2008-04-03  Jeffrey Stedfast  <fejj@novell.com>
26284         * dependencyobject.cpp (EventObject::Emit): Unref the calldata
26285         even in the "no such event" exception case.
26287 2008-04-03  Larry Ewing  <lewing@novell.com>
26289         * xaml.cpp: (expat_parser_error): translate XML_ERROR_NO_ELEMENTS
26290         into appropriate error code.
26292 2008-04-03  Larry Ewing  <lewing@novell.com>
26294         * xaml.cpp: Generate errors when trying to set readonly properties.
26296 2008-04-03  Larry Ewing  <lewing@novell.com>
26298         * xaml.cpp: make sure we set an error if the property name isn't
26299         valid.
26301         * runtime.cpp: make it legal to attach to a NULL toplevel, hook up
26302         the needed events.
26304 2008-04-03  Larry Ewing  <lewing@novell.com>
26306         * runtime.cpp (Surface::expose_to_drawable): make sure we take
26307         allocation.x and allocation.y into account when deciding not to
26308         draw.  Should fix the disappearing gtksilver widget reported on irc.
26310 2008-04-02  Larry Ewing  <lewing@novell.com>
26312         * xaml.cpp: flush character data at the end of property elements
26313         too.
26315 2008-04-02  Jackson Harper  <jackson@ximian.com>
26317         * xaml.cpp: Add the element name for this error.
26319 2008-04-02  Chris Toshok  <toshok@ximian.com>
26321         * stylus.cpp (Stroke::HitTestEndcapSegment): fix up some math.
26322         (Stroke::HitTestEndcapPoint): same.
26323         (point_gte_line): new method.
26324         (point_lte_line): new method.
26325         (Stroke::HitTestSegmentPoint): use point_gte_line and
26326         point_lte_line to determine if the point is inside the segment.
26327         (global): wrap all spew in DEBUG_HITTEST.
26328         
26329 2008-04-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26331         * pipeline.cpp, mplayer.cpp, pipeline.h: Remove SeekToStart completely, it's
26332           just plain broken.
26334 2008-04-02  Jeffrey Stedfast  <fejj@novell.com>
26336         * media.cpp (MediaElement::UpdatePlayerPosition): Cast to same
26337         integer type when comparing.
26339         * playlist.cpp (Playlist::OnMediaEnded): Prevent a segfault in the
26340         debugging printfs. Fixes bug #375273.
26342 2008-04-01  Chris Toshok  <toshok@ximian.com>
26344         * xaml.cpp: back out the SetSurface call removal.
26346         * dependencyobject.cpp (EventObject::unref): instead,
26347         SetSurface(NULL) here before we delete the object.
26349 2008-04-01  Chris Toshok  <toshok@ximian.com>
26351         * control.cpp (Control::InitializeFromXaml): make sure to call
26352         SetSurface(NULL) on the old real_object since we're detaching it
26353         from the tree.  Call SetSurface on ourselves (really, should just
26354         be the real_object, right?) before calling the real_object methods
26355         that would cause dirty stuff to happen.
26357         * xaml.cpp (create_custom_element): don't call SetSurface here, it
26358         will cause problems if there's a parser error (since elements
26359         can/will be on the surface's dirty list after they're destroyed.)
26360         (default_create_element_instance): same.
26362 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26364         * playlist.cpp, playlist.h: A lot of fixes according to the tests.
26365         * mplayer.h, mplayer.cpp: Initialize the rgb buffer. Add a start_pts to
26366           specify where in the stream we start and (playlists can specify a
26367           starting point which isn't in the beginning), and set the duration from
26368           the playlist (if the playlist has it).
26369         * media.cpp: MediaElement::SetMedia: Handle the case if mplayer returns
26370           false from MediaPlayer::Open. MediaElement::MediaOpened: Handle the case
26371           if the recursive playlist couldn't be replaced.
26373 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26375         * media.h: Added MediaElement::GetPlaylist.
26377 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26379         * type.cpp, type.cpp.in, type.h, type.h.in, value.cpp, value.h, value.h.in:
26380           Remove Type::NPOBJ, it's not needed.
26382 2008-04-01  Michael Dominic K.  <mdk@mdk.am>
26384         * animation.cpp: Since now the clocks are synced we don't need to
26385         recursively check the states in the teardown on completed.
26387 2008-04-01  Michael Dominic K.  <mdk@mdk.am>
26389         * clock.cpp:
26390         * clock.h: Getting rid of the nasty clock desyncing (setting ClockGroup
26391         manually to Stopped but not touching the state of children).
26393         We do this by introducing a new idle_hint on ClockGroup. If idle_hint is
26394         set, we don't tick the ClockGroup no matter what the state is. Idle_hint
26395         is set when all children of ClockGroup have state != Active (ie. are
26396         filling). This can be seen as "optimization" -- not to dumbly process
26397         filling clocks which keep setting same value all the time (it creates
26398         insane recursion ie. in Showcase making it unusable). Silverlight seems
26399         to do something very similiar.
26401         Before this commit a same effect was achieved by the said "desyncing" --
26402         forcing the ClockGroup to Stopped. This approach however is a bit more
26403         clean. 
26405 2008-04-01  Michael Dominic K.  <mdk@mdk.am>
26407         * animation.cpp: Chain to parent's Clock::Stop in AnimationClock::Stop.
26409 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26411         * pipeline.cpp: Use base_unref, base_unref_delayed doesn't exist anymore.
26413 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26415         * value.cpp: Remove a few warnings which might give false positives now.
26417 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26419         * dependencyobject.h, dependencyobject.cpp: EventObject::unref: check if
26420           we're being unreffed on the main thread, if not, call unref_delayed.
26422 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26424         * runtime.cpp, runtime.h: Added a Surface::InMainThread.
26426 2008-04-01  Fernando Herrera  <fherrera@novell.com>
26428         * media.cpp: Remove the request position function when aborting the
26429         downloader.
26431 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26433         * media.cpp, media.h, mplayer.cpp, mplayer.h: Add a dtor parameter to
26434           MediaElement::Reinitialize and MediaPlayer::Close to specify if we're
26435           being called from the destructor, and if so, null out the element field
26436           of the MediaPlayer, so that we don't access a destructed media element.
26437           Add an async version of MediaPlayer::EnqueueFrames, so that the audio
26438           threads can request more data in a thread-safe manner.
26440 2008-04-01  Fernando Herrera  <fherrera@novell.com>
26442         * asf/asf.cpp:
26443         * pipeline.h: Support for live mms streams, that have packet_count as
26444         0 and return false for CanSeekToPts.
26446 2008-03-31  Chris Toshok  <toshok@ximian.com>
26448         * namescope.h, namescope.cpp: make no semblance of having a
26449         superior namescope implementation (where they get transported
26450         around with the subtree they're attached to when it's
26451         removed/re-added to the hierarchy.)  Instead follow MS's broken
26452         implementation where temporary namescopes are completely removed
26453         when merged into another one.
26455         * collection.h, collection.cpp (Collection::MergeNames): factor
26456         out some common code from Add, Insert, and SetVal. Also, deal with
26457         the fact that merging namescopes now really adds all the names to
26458         the parent namescope, so clear the old namescope.
26459         (Collection::SetVal): don't just unregister the old toplevel name,
26460         but all the names in the subtree.
26461         (Collection::Remove): same.
26462         (Collection::Clear): same.
26463         (Collection::UnregisterAllNamesRootedAt): override DO's method,
26464         recursing into all our children.
26465         (Collection::RegisterAllNamesRootedAt): same.
26466         (VisualCollection::VisualRemoved): clear the IS_LOADED flag so
26467         UIElement::OnLoaded is called again, and <BeginStoryboard>
26468         elements restart when the subtree is added to the hierarchy again.
26470         * control.h, control.cpp (Control::UnregisterAllNamesRootedAt):
26471         override and forward onto real_object.
26472         (Control::RegisterAllNamesRootedAt): same.
26473         
26474         * dependencyobject.cpp (DependencyObject::ClearValue): add a
26475         parameter to allow us to specify *not* to notify listeners of the
26476         property change.  we do this with the NameScope property, which
26477         noone should be listening too.  It was causing a tremendous
26478         performance hit when merging a lot of namescopes (as we do in
26479         inkStylusPointCount.htm)
26480         (DependencyObject::UnregisterAllNamesRootedAt): used when a DO is
26481         removed from the hierarchy, we need to unregister all the names
26482         beneath it.
26483         (DependencyObject::RegisterAllNamesRootedAt): used when a DO is
26484         added to the hierarchy, if it doesn't have a temporary
26485         namescope (in which case we just merge it).
26487 2008-03-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26489         * pipeline.cpp, pipeline.h: MemorySource: Add a value specifying if the
26490           MemorySource owns the memory or not (if it will be freed upon
26491           destruction or not).
26493 2008-03-31  Jeffrey Stedfast  <fejj@novell.com>
26495         * stylus.cpp (Stroke::HitTestEndcap): Fixed a bug where the
26496         for-loop would only use every other point as a starting point for
26497         a segment. E.g. if you had points a, b, c, d and e - the code only
26498         checked segments ab, cd, and e when it should have been checking
26499         ab, bc, cd, and de.
26501 2008-03-31  Fernando Herrera  <fherrera@novell.com>
26503         * downloader.cpp: Check if aborted before cheking for requested
26504         position.
26506 2008-03-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26508         * pipeline.cpp, pipeline.h: Moved locking down to IMediaSource from
26509           ProgressiveSource.
26510         * playlist.cpp: Updated according to pipeline changes.
26511         * mplayer.h: Fix SetState to not overwrite current bits, only current state.
26512         * media.h, media.cpp: Rework buffering progress to use the available time of
26513           media available (pts) instead of doing some funny math on file
26514           positions.
26515         * mplayer.cpp: Don't allow SetTargetPts if we're waiting for a seek.
26517 2008-03-31  Michael Dominic K.  <mdk@mdk.am>
26519         * animation.cpp: Don't Stop the Storyboard root_clock before begining
26520         the Storyboard again, just silently tear it down.
26522         Calling Stop resets the property values to base which is something we
26523         don't want. When Begin () is called on Sb in SL, the last animated
26524         values are used. 
26526 2008-03-31  Michael Dominic K.  <mdk@mdk.am>
26528         * animation.cpp:
26529         * animation.h: Adding Storyboard::DetachClockGroupFromParent () that
26530         works similar to Teardown but doesn't destroy the clock/animation
26531         hierarchy. We need this hierarchy to ie. reset prop values to base when
26532         Storyboard::Stop is called manually. 
26534         When Storyboard is completed, call DetachClockGroupFromParent (if not
26535         Teardown). Otherwise the Storyboard will ghostly change state with parent 
26536         state changes.
26538 2008-03-31  Michael Dominic K.  <mdk@mdk.am>
26540         * animation.cpp: Slightly reworking the clock_is_fully_stopped_recursive
26541         to check for NULL and report stopped == true when both ClockGroup state
26542         is Stopped and all children are Stopped. 
26544         To be honest, this never currently reports Stopped == true as we do
26545         intentional state desync when storyboard reaches end -- setting the
26546         ClockGroup state to Stopped but keeping the children in Active/Filling.
26547         This *has* to go away.
26549 2008-03-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26551         * src.mdp: Updated.
26553 2008-03-28  Jeffrey Stedfast  <fejj@novell.com>
26555         * utils.cpp (TextStream::Read): Better handling of iconv() failure
26556         cases.
26558 2008-03-28  Chris Toshok  <toshok@ximian.com>
26560         * animation.cpp, animation.h: remove Storyboard::FindSurface -
26561         EventObject::GetSurface() always returns the right thing.
26562         Override SetSurface to check whether we're being detached from or
26563         attached to a surface, and pause or resume the clock in response.
26564         This fixes some issues in storyboard_EnterLeaveSemantics.
26566 2008-03-28  Chris Toshok  <toshok@ximian.com>
26568         * dependencyobject.h,
26569         dependencyobject.cpp (DependencyObject::SetSurface): new method,
26570         set the surface for all our DependencyObject subclassed property
26571         values.
26573         * collection.h, collection.cpp (Collection::Add): SetSurface work.
26574         (Collection::Insert): same.
26575         (Collection::SetVal): same.
26576         (Collection::Remove): same.
26577         (Collection::RemoveAt): same.
26578         (Collection::Clear): same.
26579         (Collection::SetSurface): new method, iterate over all children
26580         setting the surface.
26581         (VisualCollection): remove surface logic here.
26582         (VisualCollection::VisualAdded): same.
26583         (VisualCollection::VisualRemoved): same.
26585 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26587         * mplayer.cpp: Clear all queues after a seek has completed.
26589 2008-03-28  Jeffrey Stedfast  <fejj@novell.com>
26591         * text.cpp (deobfuscate_font): Updated for CopyFileTo() rename.
26593         * downloader.cpp (Downloader::CleanupUnzipDir): Updated for
26594         RemoveDir() rename.
26595         (create_unzipdir): Updated for MakeTempDir() rename.
26597         * utils.cpp (MakeTempDir): Renamed from make_tmpdir() to try and
26598         be more consistent with moonlight API naming convensions.
26599         (RemoveDir): Renamed from moon_rmdir().
26600         (CopyFileTo): Renamed from moon_copy_file()
26602 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26604         * debug.cpp: Fix warning.
26606 2008-03-28  Michael Dominic K.  <mdk@mdk.am>
26608         * clock.cpp: Fixing the clock repeat for duration-based
26609         RepeatBehavior. 
26610         
26611         Fixes the clock14.xaml and clock31.xaml tests. All 31 clock tests are
26612         passing now (same behavior as in SL).
26614 2008-03-28  Michael Dominic K.  <mdk@mdk.am>
26616         * clock.cpp: In ComputeNewTime: when we're moving backward and hitting
26617         the bound decrease the repeat_count no matter what (if auto-reversed or
26618         not). This makes the auto-reversed storyboard work.
26620         Fixes the clock7.xaml and clock30.xaml. The only clock test broken now
26621         is clock14.xaml.
26623 2008-03-28  Michael Dominic K.  <mdk@mdk.am>
26625         * animation.cpp: Teardown the storyboard in Completed only if the root
26626         clock is stopped AND all the children are stopped too. After teardown we
26627         loose the ability to reset-back the values and Completed is
26628         fired always, even if the clock is filling (a filling clock should reset
26629         on Stop).
26630         
26631         This ie. fixes http://www.idcorporate.com.ar/ and other sites that use
26632         the popular methodology of beginning a filling Storyboard on MouseEnter
26633         and stopping it on MouseLeave.
26635 2008-03-27  Michael Dominic K.  <mdk@mdk.am>
26637         * runtime.cpp: Ignore the enter/leave crossing events coming as a 
26638         result of grab/press started/finished.
26640 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26642         * uielement.cpp, pipeline.h, media.cpp, brush.cpp: Update according to
26643           MediaPlayer changes.
26644         * mplayer.cpp, mplayer.h: Major cleanup in MediaPlayer: make all fields
26645           private, and add public accessors when required. Remove all boolean
26646           fields and add a single bit/state field with its corresponding enum and
26647           public accessors. Removed IncTargetPts, StopThreads and PauseInternal,
26648           no longer used. Removed unused defines. Made video and audio structures
26649           nested inside MediaPlayer instead of pointers (and queue inside
26650           video/audio), avoids pointer accesses and additional malloc/frees, since
26651           they were always created anyways. Don't seek to anywhere in Stop if
26652           we're stopping because we're closing, since it may cause crashes if
26653           we're closing because the MediaElement is being destructed (it may cause
26654           the MediaElement to be resurrected). Made public methods private
26655           whenever possible.
26657 2008-03-28  Fernando Herrera  <fherrera@novell.com>
26659         * asf/asf.cpp: Use the pts == 0 optimization before trying to
26660         SeekToPts.
26662         * downloader.cpp:
26663         * downloader.h: Add functions to allow request a remote postition.
26665         * media.cpp:
26666         * media.h:
26667         * pipeline.cpp:
26668         * pipeline.h: Implement SeekToPts for mms:// sources.
26670 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26671         
26672         * dependencyobject.h: Detect an unrecoverable error condition with
26673           refcounting (reffing an object with refcount of 0), and abort instead of
26674           crashing randomly and insecurely later on.
26676 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26678         * mplayer.h, mplayer.cpp: Remove more unused fields in MediaPlayer.
26680 2008-03-27  Jeffrey Stedfast  <fejj@novell.com>
26682         * downloader.cpp (Downloader::GetResponseText): Use the new
26683         TextStream class.
26685         * utils.cpp (TextStream::Open): Fixed the BOM checking, had LE/BE
26686         reversed.
26688         * xaml.cpp (xaml_create_from_file): Oops, if we read 0 bytes, make
26689         sure to exit the loop ;-)
26691 2008-03-27  Jeffrey Stedfast  <fejj@novell.com>
26693         * xaml.cpp (xaml_create_from_file): Use the new TextStream class
26694         instead of doing things the hard way. Might be more performant,
26695         definitely won't malloc/free nearly as much. Also fixed a bug
26696         where leading lwsp might be larger than our read buffer.
26698         * utils.cpp (TextStream): New class for reading text input
26699         streams, converting them to UTF-8 as they are read.
26701         * downloader.cpp (Downloader::Send): Handle the case where the
26702         attached surface is NULL.
26703         (Downloader::GetResponseText): Handle zero-length files. Also,
26704         nul-terminate the returned buffer (which is now a char* rather
26705         than a void*) since it is clear that the javascript expects to be
26706         able to use this value as a string buffer.
26708 2008-03-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26709         
26710         * mplayer.h, mplayer.cpp: Don't create any audio threads until we're
26711           requested to play audio. Don't hold the lock when polling.
26713 2008-03-26  Jeffrey Stedfast  <fejj@novell.com>
26715         * downloader.cpp (Downloader::SendInternal): New method that is
26716         basically the same as the old ::Send().
26717         (Downloader::Send): Queue the SendInternal() call via
26718         TimeManager's TickCall API.
26720 2008-03-26  Chris Toshok  <toshok@ximian.com>
26722         * dependencyobject.h, dependencyobject.cpp (class EventObject):
26723         add RemoveMatchingHandlers variants that let you pass in a
26724         predicate to test event handlers with.
26726 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26728         * pipeline.cpp, pipeline.h: ASFDemuxer: updated according to asf
26729           changes.  Added a MemoryStream.
26731         * media.cpp: Updated according to API changes.
26733 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26735         * mplayer.cpp, mplayer.h: Add a new state to the audio:
26736           WaitingForData, in which case we don't poll on that audio
26737           node (since the hardware will just tell us it's ready to recieve
26738           data). Fixes audio using 100% cpu after when it runs out of
26739           data (either because of network hiccup or the stream finished).
26741 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26743         * pipeline.cpp, mplayer.cpp, pipeline.h: Made
26744           IMediaStream::selected private and add accessors.
26746 2008-03-26  Stephane Delcroix  <sdelcroix@novell.com>
26748         * shape.h:
26749         * shape.cpp: set the dash caps for all the shapes, draw start/end caps
26750         on line and polylines.
26752 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26754         * mplayer.cpp: Remove unused fields.
26756 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26758         * debug.cpp: Correctly compute base addresses of libraries, and use a
26759           thread-safe version of strtok.
26761 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26763         * runtime.h, runtime.cpp, pipeline.cpp: Reverse the meaning of our YUV flag
26764           - it's now necessary to explicitly disable it in order to get rid of it
26765           instead of relying on a default flag to have the right value in order to
26766           get it. Makes video work with mopen again.
26768 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26770         * pipeline.cpp: Fix a crash.
26772 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26774         * mplayer.cpp: Remove Instance (), it's redundant.
26775         * mplayer.h: AudioPlayer: Remove Instance (), it's redundant. Synchronize
26776           everything in the audio player with one semaphore, it simplifies things
26777           and removes a couple of problems helgrind found.
26778         * pipeline.cpp: ~Media: Add a nullcheck. Media::Initialize: Initialize the
26779           audio player as well. Use delayed unreffing in destructors which may be
26780           called on worker threads.
26782 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26784         * runtime.cpp, runtime.h: Remove the pending unref stuff from Surface.
26785         * dependencyobject.cpp: Remove the surface-based delayed unloading, it's not
26786           thread-safe and making it thread-safe isn't worth it. Also use a pthread
26787           mutex instead of a glib mutex, since helgrind reports a lot of false
26788           positives for glib mutexes. Hold the mutex for the smallest amount of
26789           time possible, making it unnecessary to use a recursive mutex.
26791 2008-03-26  Michael Dominic K.  <mdk@mdk.am>
26793         * shape.cpp: Reverting the clip changes, it was bolox.
26795 2008-03-25  Jeffrey Stedfast  <fejj@novell.com>
26797         * pipeline.cpp (Mp3FrameReader::EstimatePtsPosition): Get rid of
26798         the assert - it was only needed during implementation to make sure
26799         the bsearch worked correctly.
26800         (Mp3FrameReader::Seek): Same.
26802 2008-03-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26804         * media.cpp: Don't access any TimeManager instance from another thread, just
26805           call the static TimeManager::InvokeOnMainThread.
26807 2008-03-25  Michael Dominic K.  <mdk@mdk.am>
26809         * src/shape.cpp: Shape is empty always when it's bounds are <= 0.0, even
26810         if Width/Height was specified. Fixes a bogus warning about infinity
26811         transformations.
26813 2008-03-25  Michael Dominic K.  <mdk@mdk.am>
26815         * src/shape.cpp: When setting the clipping for the shape also include
26816         the transformations coming from stretching. This fixes
26817         test-shape-line-stretch3 test and the missing stripes on Silverlight
26818         showcase.
26820 2008-03-24  Chris Toshok  <toshok@ximian.com>
26822         * runtime.h (class Surface): add
26823         Surface::PropagateDirtyFlagToChildren.
26825         * dirty.cpp (Surface::PropagateDirtyFlagToChildren): factor this
26826         duplicated code out of ProcessDownDirtyElements.
26828 2008-03-24  Chris Toshok  <toshok@ximian.com>
26830         * panel.cpp (Panel::FrontToBack): remove the tree walking
26831         code (where we walked up the hierarchy looking for cases where we
26832         shouldn't subtract.)  Instead, we always subtract if the local
26833         state says we can.  Instead of forcing all leaf elements to walk
26834         up to their parent panel, we assume they'll operate on local state
26835         as well, and give them a copy of the region to subtract their
26836         bounds from, instead of the real region.  We are sneaky.
26838         * uielement.cpp (UIElement::FrontToBack): Operate on our local
26839         state only, no walking up the tree.
26841 2008-03-24  Jeffrey Stedfast  <fejj@novell.com>
26843         * pipeline.cpp (mpeg_parse_header): Fix the MPEG layer parsing, it
26844         was seemingly getting layer 1 and layer 2 backwards.
26845         (mpeg_frame_length): Seems like we are never supposed to add 2
26846         bytes for 16bit crc?
26848         * layout.cpp (TextLayout::LayoutWrap): If the glyph advance is 0,
26849         then don't bother applying kerning. Fixes 2 cases in
26850         LineBreakClasses.htm
26851         (TextLayout::LayoutWrap): Disable breaking after a
26852         G_UNICODE_BREAK_AFTER if we can break before the word as this
26853         seems to fix the last test case in LineBreakBasic1.htm
26854         (TextLayout::LayoutWrap): Reverted a fix that introduced a
26855         regression but didn't fix any known test cases.
26857 2008-03-21  Michael Dominic K.  <mdk@mdk.am>
26859         * src/runtime.cpp: When calling gdk_window_get_pointer in
26860         motion_notify_ to pop more hints actually use the results as they're
26861         more valid than x,y in the event passed. Without doing so, we're not
26862         getting the last mouse coords.
26864         Fixes the nasty problem that MouseEnter/Leave is not called once in a
26865         while.
26867 2008-03-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26869         * brush.cpp, media.cpp, mplayer.cpp, mplayer.h: Refcount MediaPlayer. Rename
26870           MediaPlayer::GetSurface to GetCairoSurface so that it doesn't conflict
26871           with EventObject::GetSurface.
26873 2008-03-20  Jeffrey Stedfast  <fejj@novell.com>
26875         * font.cpp (TextFont::GetGlyphInfo): Comment out the fixed-width
26876         font hack for now.
26878         * text.cpp (deobfuscate_font): New helper function used by
26879         TextBlock and Glyphs.
26880         (TextBlock::DownloaderComplete): Check for obfuscated fonts.
26881         (Glyphs::DownloaderComplete): Same.
26883         * font.cpp (DecodeObfuscatedFontGUID): New function to decode the
26884         GUID from a string.
26885         (DeobfuscateFontFileWithGUID): Deobfuscate a font file in-place.
26886         (TextFont::OpenFontDirectory): Renamed from OpenZipArchiveFont()
26887         since we no longer get passed zip files. Instead of extracting
26888         fonts from a zip archive, we now index the fonts in the
26889         directory (if they haven't already been indexed) and then try to
26890         find the best matching font from the indexed fonts.
26891         (IndexFontDirectory): New function to index all fonts in a
26892         directory (and all subdirs).
26893         (TextFont::TextFont): Changed for other API changes.
26895 2008-03-20  Jeffrey Stedfast  <fejj@novell.com>
26897         * downloader.cpp (Downloader::IsDeobfuscated)
26898         (Downloader::SetDeobfuscated, Downloader::SetDeobfuscatedFile):
26899         Some new methods for replacing the original downloaded file with
26900         another tmp file that will need to be unlinked when the downloader
26901         is destroyed or a new file is requested.
26903         * utils.cpp (moon_copy_file): New convenience function.
26905 2008-03-20  Jeffrey Stedfast  <fejj@novell.com>
26907         * downloader.cpp (Downloader::Downloader): Initialize the unzipdir
26908         and unzipped state variables. Get rid of part_hash, no longer
26909         needed.
26910         (Downloader::CleanupUnzipDir): New method to cleanup the files
26911         extracted from any zip files we downloaded.
26912         (Downloader): Call CleanupUnzipDir ().
26913         (Downloader::GetDownloadedFile): New method that gets the original
26914         untouched downloaded file path.
26915         (Downloader::DownloadedFileIsZipped): New method to check to see
26916         if the downloaded file is a zip archive.
26917         (Downloader::GetDownloadedFilePart): A new method that replaces
26918         the old GetResponseFile() API, behaves the same as the old API.
26919         (Downloader::GetUnzippedPath): New method to get the unzip
26920         directory path (and unzip the downloaded file if it hasn't already
26921         been unzipped).
26922         (Downloader::Open): Cleanup any extracted zip files.
26924         * utils.cpp (moon_rmdir): New convenience function.
26926 2008-03-20  Larry Ewing  <lewing@novell.com>
26928         * runtime.cpp (Surface::ShowFullScreenMessage): make sure we set
26929         the surface first so that the changes to the properties cause
26930         invalidations.
26932 2008-03-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26934         * src.mdp: Added new files.
26936 2008-03-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26938         * pipeline.h: Added CanSeekToPts and SeekToPts to IMediaStream.
26940 2008-03-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26942         * pipeline.h: Added two more error conditions.
26944 2008-03-19  Jeffrey Stedfast  <fejj@novell.com>
26946         * font.cpp (TextFont::GetGlyphInfo): Use a different approach to
26947         caching glyphs. Try to take full advantage of the pre-allocated
26948         glyphs array before clobbering previously loaded glyphs.
26950 2008-03-19  Michael Dominic K.  <mdk@mdk.am>
26952         * src/dependencyobject.cpp: Making the prop resolving a bit more
26953         gracefull (smart) in case of common mistakes. 
26955         Solves test-crash-gracefull-prop-resolving.xaml.
26957 2008-03-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26959         * pipeline.cpp: We need to unlock the mutex before joining the
26960         thread. Fixes a dead-lock.
26962 2008-03-19  Geoff Norton  <gnorton@novell.com>
26964         * yuv-converter.cpp:  Use xmm0 to store a load value to avoid a
26965         repeated load.
26967 2008-03-19  Geoff Norton  <gnorton@novell.com>
26968         
26969         * yuv-converter.cpp:  More 64-bit fixes
26971 2008-03-19  Geoff Norton  <gnorton@novell.com>
26972         
26973         * yuv-converter.cpp:  Fix the test/cmp on x86-64
26975 2008-03-18  Geoff Norton  <gnorton@novell.com>
26977         * yuv-converter.cpp:  Fold RESTORE_COLOR_MODIFIERS into
26978         CALC_COLOR_MODIFIERS and prepare our own branches rather than trusting
26979         gcc.  The aligned load/store version of CALC_COLOR_MODIFIERS was
26980         clobbering (x)mm3 (green coefficient) when processing the high order
26981         pels.  I've reordered the method to remove some useless load/calc
26982         patterns that were there simply for readability and fixed the
26983         clobbering.
26984         
26985 2008-03-18  Jeffrey Stedfast  <fejj@novell.com>
26987         * font.cpp (TextFontDescription::CreatePattern): Always return the
26988         original pattern.
26989         (TextFont::Load): No longer takes a fromFile argument.
26990         (TextFont::TextFont): Cache using the original pattern (which is
26991         what we really wanted to do originally, but were caching the
26992         "closest-match" pattern before which was wrong).
26993         (TextFont::GetGlyphInfo): Use FT_Get_Char_Index() rather than
26994         FcFreeTypeCharIndex(). Doesn't fix any bugs, just avoids use of
26995         wrapper API that is unnecessary.
26996         (TextFont::GetGlyphInfo): Added a gross hack for *Che fonts.
26998 2008-03-18  Geoff Norton  <gnorton@novell.com>
27000         * yuv-converter.cpp: 768bits != 768bytes.  Implement prefetching the 
27001         cache lines for the Y plane.
27002         
27003 2008-03-18  Andrew Jorgensen  <ajorgensen@novell.com>
27005         * plugin-ffmpeg.cpp: Remove avformat dependency (not needed anymore)
27006         * plugin-ffmpeg.h: Fix conditional swscale inclusion
27008 2008-03-18  Michael Dominic K.  <mdk@mdk.am>
27010         * animation.cpp:
27011         * animation.h: Adding a new virtual method GetValueKind to Animation
27012         that returns the kind/type of values that given animation generates
27013         (doubles, points, etc.).
27015         Modyfying the HookupStorage to check if the animation type matches the
27016         type that the animated property expects. If it doesn't, bail out with a
27017         helpfull warning in the style of:
27019         "Ellipse.Fill property value type is 'Brush' but animation type is
27020         'Color'"
27022         This fixes a crash in test-crash-color-anim-on-solid.xaml and all
27023         crashes where we try to animate ie. a color property using doubles.
27025 2008-03-18  Michael Dominic K.  <mdk@mdk.am>
27027         * animation.cpp: Even more smoothing for KeySpline.
27029 2008-03-18  Michael Dominic K.  <mdk@mdk.am>
27031         * dependencyobject.cpp: Enabling back the inheritance test for property
27032         resolving but only when dealing with non-attached properties. 
27034 2008-03-17  Geoff Norton  <gnorton@novell.com>
27036         * Makefile.am:
27037         * pipeline-ffmpeg.cpp:
27038         * pipeline-ffmpeg.h:
27039         * swscale-converter.cpp:
27040         * swscale-converter.h:  Refactor the swscale based yuv2rgb converter
27041         out to a seperate file so it can be included optionally in the build.
27043 2008-03-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27045         * mplayer.cpp: Show error message, not only error number, upon thread
27046           creation failure.
27048 2008-03-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27050         * playlist.cpp, playlist.h: Add a way to determine if the playlist was
27051           created to play a single file, or if it was created from an asx file
27052           (IsSingleFile).
27054 2008-03-17  Chris Toshok  <toshok@ximian.com>
27056         * dependencyobject.cpp (EventObject::EventObject): reorder things
27057         to quiet g++.
27059 2008-03-17  Geoff Norton  <gnorton@novell.com>
27061         * yuv-converter.cpp: __attribute ((aligned ())) can be ignored
27062         for locals.  Use posix_memalign and share the instance for the 
27063         lifespan of the converter.
27064         
27065 2008-03-17  Jeffrey Stedfast  <fejj@novell.com>
27067         * font.cpp (FontPackFileFace::FontPackFileFace): Now takes an
27068         index argument, apparently FreeType2 always set face->face_index
27069         to 0 for these type fonts, so don't rely on it being accurate.
27070         (FontPack::CacheFileInfo): Pass the index value as an argument to
27071         FontPackFileFace's ctor.
27072         (TextFont::TextFont): Do hash lookups based on the matched
27073         pattern, not the original pattern passed in.
27075 2008-03-17  Jeffrey Stedfast  <fejj@novell.com>
27077         * text.h: Added #include "layout.h"
27079         * font.cpp: Removed font.cpp's layout logic which has been
27080         rewritten in layout.cpp.
27081         (TextFont::HasGlyph): It seems that Silverlight may wrap text
27082         differently depending on whether the glyph is in the font?
27084         * layout.cpp (TextLayout::LayoutWrap): More tweaking action...
27086 2008-03-17  Geoff Norton  <gnorton@novell.com>
27088         * yuv-converter.cpp: Ensure that our pointer alignment checks are
27089         64-bit safe.
27091 2008-03-17  Michael Dominic K.  <mdk@mdk.am>
27093         * animation.cpp: Interpolate linearly between keyspline values. This
27094         fixes the jags in test-animation-slow-keyspline.xaml.
27096 2008-03-17  Michael Dominic K.  <mdk@mdk.am>
27098         * animation.cpp: Fixes to the way we generate the KeySpline values to be
27099         more smooth an precise.
27101 2008-03-17  Larry Ewing  <lewing@novell.com>
27103         * runtime.cpp: go ahead and invalidate the toplevel before
27104         cleaning everything up. remove the disconnect call in
27105         DestroyWidget, all the handlers should be ok with getting called
27106         on fullscreen or the normal widget.
27108 2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
27110         * layout.cpp (TextLayout::LayoutWrap): Added some improved unicode
27111         line breaking logic.
27113 2008-03-14  Geoff Norton  <gnorton@novell.com>
27114         
27115         * yuv-converter.cpp: Remove some dead code.
27117 2008-03-14  Geoff Norton  <gnorton@novell.com>
27119         * mplayer.cpp: We actually need to align % 64 bytes on a 16 byte 
27120         bounary.  Each pel will expand to 4 bytes.  Since we process 16
27121         pels at a time in SSE2 we need 64 output bytes per iteration.
27123         * yuv-converter.cpp: Remove the rest of the unaligned move/stores
27125 2008-03-14  Sebastien Pouliot  <sebastien@ximian.com>
27127         * xaml.cpp: (flush_char_data) free data inside GString since the
27128         Value constructed around it creates it's own copy.
27130 2008-03-14  Geoff Norton  <gnorton@novell.com>
27132         * pipeline-ffmpeg.cpp: Use posix_memalign for the YUV data buffers
27133         to get a 16byte alignment for SSE2.
27134         * yuv-converter.cpp: Remove most of our unaligned load/stores.
27136 2008-03-14  Larry Ewing  <lewing@novell.com>
27138         * collection.h:
27139         * error.h:     
27140         * eventargs.h, enventargs.cpp:
27141         * type.h, type.cpp: make EventArgs a subclass of DependencyObject
27142         and all that entails.  Still need to look over the properties.
27144         * runtime.cpp, runtime.h: expose EmitError for now.
27145         
27146 2008-03-14  Larry Ewing  <lewing@novell.com>
27148         * mplayer.cpp (MediaPlayer::Open): use posix_memalign to allocate
27149         with a a 16bit alignment for the yuv converter.
27151 2008-03-14  Sebastien Pouliot  <sebastien@ximian.com>
27153         * xaml.cpp: (expat_parser_error) ParserErrorEventArgs free it's 
27154         own copy of the message.
27156 2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
27158         * font.cpp (TextRun::TextRun): Can't drop non-printable chars
27159         because soft-hyphen is apparently non-printable.
27161 2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
27163         * text.cpp (Glyphs::Layout): Check for NULL glyphs (which can
27164         happen now if the glyph does not exist in the font).
27165         (Glyphs::Render): Same.
27167         * font.cpp (TextFont::GetGlyphInfo): Added a new GetGlyphInfo
27168         which takes a unichar and index. This is now the main
27169         implementation that the other GetGlyphInfo() and
27170         GetGlyphInfoByIndex() use. The glyph table is now indexed by index
27171         rather than unichar.
27173 2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
27175         * text.cpp (Glyphs::Layout): Don't error out on (1:1) clusters
27176         without a specified index, these are ok.
27178 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
27180         * brush.cpp: In ImageBrush, if the image has not been downloaded
27181         yet, draw nothing like SL does -- instead of the grayish shadow.
27183 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
27185         * dependencyobject.cpp: Check the types of objects when
27186         resolving_property_paths and some more verbosity to the error
27187         reporting. Now test-crash-non-existing-animation-target-prop3
27188         fails with the proper warning.
27190         Also, terminate first on first error found.
27192 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
27194         * dependencyobject.cpp: Even more verbose error reporting in the
27195         resolve_property_path ().
27197 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
27199         * animation.cpp: Making the warning report proper error when can't
27200         resolve property on object. Now we're getting:
27202         "No property named
27203         (UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)
27204         on object ball, which has type Ellipse!"
27206 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
27208         * animation.cpp: Check correctly if we have object and property
27209         before trying to hookup storage.
27211         Fixes the crash in test-crash-non-existing-animation-target-prop.xaml
27212         but the warning message is still incorrect:
27214                 "No object named ball!"
27216         The object named "ball" exists but it doesn't have the requested
27217         property.
27219 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
27221         * animation.cpp: Changing few printf's to g_warnings.
27223 2008-03-14  Stephane Delcroix  <sdelcroix@novell.com>
27225         * shape.cpp: Deal with different [start|end|dash] caps for lines 
27226         and polylines.
27228 2008-03-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27230         * mplayer.cpp: Comment out printf.
27232 2008-03-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27234         * mplayer.cpp: AudioNode::Play: property calculate the delay between the
27235           play position in the hardware and the pts we just sent to alsa, and
27236           subtract it from that pts.
27238 Thu Mar 13 23:25:41 CET 2008 Paolo Molaro <lupus@ximian.com>
27240         * clock.cpp: use a monotonic clock if available to avoid issues with
27241         the system time changing.
27243 2008-03-13  Jeffrey Stedfast  <fejj@novell.com>
27245         * layout.cpp (TextRun::TextRun): Don't drop non-printable
27246         chars... somehow soft-hyphen (0xAD) is non-printable according to
27247         glib and so breaks the LineBreakBasic1.htm test.
27248         (TextLayout::LayoutNoWrap): Keep appending words to the line until
27249         a line ends beyond max_width, we don't care where it begins (it
27250         could begin way beyond max_width for all we care).
27252 2008-03-13  Chris Toshok  <toshok@ximian.com>
27254         * text.cpp (~Glyphs): don't unref the fill, since we don't take a
27255         ref on it.
27257 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27259         * mplayer.cpp: Make this build on SLED until I find a proper workaround.
27261 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27263         * media.cpp: Update according to MediaPlayer changes.
27265 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27267         * mplayer.cpp, mplayer.h, pipeline.cpp: Play audio on a single
27268         thread. Fixes #326902.
27270 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27272         * Makefile.am: Set our G_LOG_DOMAIN.
27274 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27276         * xaml.cpp: default_create_element_instance: Set the surface as soon as
27277           possible.
27279 2008-03-13  Michael Dominic K.  <mdk@mdk.am>
27281         * animation.cpp: Modyfying the KeyFrameCollection::GetKeyFrameForTime
27282         behavior. When getting the keyframe for time additionally crawl back (if
27283         needed) to find the last non-null keyframe and non-null previous
27284         keyframe. By doing so we silently ignore the frames without values set
27285         and don't crash on nullable types.
27287         Fixes the crash in AnimationMatrix2.html/xaml and in the
27288         test-animation-null-keyframe.xaml test.
27290         Remving the XXX warnings about nullabled types from file since they
27291         don't apply anymore.
27293 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27295         * visual.h, uielement.cpp, visual.cpp: Remove the 'surface' field from
27296           Visual, we're already storing the surface in the EventObject.
27297         * dependencyobject.cpp: EventObject::unref_delayed: remove the #if false,
27298           and comment out the warning, since with the current code it's entirely
27299           possible to unref a dependecyobject with no surface.
27301 2008-03-13  Stephane Delcroix  <sdelcroix@novell.com>
27303         * brush.cpp: compute relative transform as it's done in SL. We used to
27304         derelativize transform to match the absolute ones. Now we map the brush
27305         to a 1x1 square, apply the transform, and unmap back. It simplify the 
27306         computation a lot too. Fixes bnc #354892 and a bad gradient in 
27307         brushes.xaml.
27309 2008-03-12  Chris Toshok  <toshok@ximian.com>
27311         * media.cpp (expand_rgb_to_argb): use a different codepath if the
27312         rowstride isn't padded out to be divisible by 4 (or else we read
27313         off the end by a byte).
27315 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27317         * pipeline.cpp: ASFDemuxer: Only seek in the selected streams.
27319 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27321         * pipeline.cpp, pipeline.h: Break all media threads upon media shutdown.
27322         * pipeline-ffmpeg.cpp: Don't check if we've been registered before, the
27323           pipeline correctly removes registered infos upon shutdown, so if we're
27324           initialized again we should also register again.
27325         * runtime.cpp: Call Media::Shutdown do shut down the media threads before
27326           doing anything else.
27328 2008-03-12  Jeffrey Stedfast  <fejj@novell.com>
27330         * font.cpp (TextRun::TextRun): Fixed canonicalization logic.
27332         * text.cpp (TextBlock::LayoutSilverlight): When creating a list of
27333         TextRun's, if the Run contains \n's, break the text into
27334         non-linebreak and linebreak TextRun elements. Allows the
27335         TextLayout::Layout() logic to be simplified considerably.
27337 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27339         * dependencyobject.cpp: DependencyObject: Initialize our surface field to
27340           NULL.
27342 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27344         * pipeline.h, pipeline.cpp: Add logging macros. Use ErrorEventArgs for error
27345           reporting so that the errors can easily be bubbled up the pipeline. Add
27346           a 'selected' field to IMediaStream, whether the media player is using
27347           that stream or not.
27348         * error.h: Add a MediaErrorEventArgs class.
27350 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27352         * pipeline.cpp: Propagate the surface from the media element to the media.
27354 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27356         * mplayer.cpp, pipeline.cpp, pipeline.h: Add a 'selected' field to the
27357           IMediaStream, indicates whether the stream is being played or not.
27359 2008-03-12  Sebastien Pouliot  <sebastien@ximian.com>
27361         * dependencyobject.cpp: Add NULL check in method 
27362         RemovePropertyChangeListener since a bad XAML input can cause a
27363         NULL entry in the list.
27365 2008-03-12  Michael Dominic K.  <mdk@mdk.am>
27367         * runtime.cpp:
27368         * runtime.h:
27369         * shape.cpp: Properly calculate the shape cache depending on our bpp etc.
27371 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27373         * xaml.cpp: xaml_create_from_file: if there was some error loading the file,
27374           don't crash, print an error message. Dup all strings put into
27375           namespace_map, and free them all upon its destruction.
27377 2008-03-11  Larry Ewing  <lewing@novell.com>
27378         
27379         * collection.cpp (VisualCollection::VisualAdded): make sure we set
27380         the surface as the first step, dirty processing depends on it.
27381         Fixes OM_RemoveClearRemoveAt.htm regression.
27383 2008-03-11  Larry Ewing  <lewing@novell.com>
27385         * canvas.h:
27386         * canvas.cpp (Canvas::OnPropertyChanged): listen to changes on Top
27387         and Left when we are toplevel so that we can recompute our
27388         transform.
27390         * uielement.cpp: if we don't have a parent call GetTransformFor on
27391         ourself so that Top and Left are taken into account on toplevel
27392         canvases.  Fixes test-canvas-toplevel.xaml
27394 2008-03-11  Chris Toshok  <toshok@ximian.com>
27396         * clock.h, clock.cpp: a few changes, the most important
27397         being (ifdefed for now) code to put the timemanager to sleep when
27398         it's not needed for animations, rendering, or tick calls.  To do
27399         this we need a couple of changes to the clock code.  1) propagate
27400         the time_manager out to all clocks, so we can force it to tick the
27401         clock hierarchy the first time whenever a storyboard is started.
27402         2) make Clock/ClockGroup::Tick return a bool, which means "i'll be
27403         in need of another tick."  Do the same for the tick call stuff,
27404         where the bool return value means "we have more tick calls
27405         pending."  Also, add a couple of methods to the
27406         TimeManager (NeedRedraw, NeedClockTick) which will start up the
27407         timemanager if it's asleep, and set the proper flag so it'll do
27408         the right work on the next tick.
27411         * uielement.cpp: notify the timemanager that we have a redraw to
27412         process.
27413         
27414         * runtime.cpp (Surface::realized_callback): tell the time manager
27415         to redraw us to get the process moving.
27417 2008-03-11  Sebastien Pouliot  <sebastien@ximian.com>
27419         * xaml.cpp: Work around the fact that it's not always safe to 
27420         call some expat functions, like XML_GetCurrentLineNumber, if the
27421         parsing failed early.
27423 2008-03-11  Chris Toshok  <toshok@ximian.com>
27425         * namescope.h, namescope.cpp: switch from reffing the objects to
27426         using the DestroyedEvent.  Otherwise our toplevel canvas has a ref
27427         cycle with its namescope.  Also, short circuit out if we're
27428         registering the same object twice.  keeps us from having too many
27429         DestroyedEvents (since RemoveHandler only removes one).
27431         * dependencyobject.h, dependencyobject.cpp: move
27432         GetSurface/SetSurface to EventObject, and add unref_delayed as a
27433         method.  If the event object has a surface associated with it, add
27434         it to the surface's pending list of unrefs.  otherwise warn us and
27435         add it to the global list.  The warnings should be fixed as the
27436         global list really should go away.
27438         Also, before we free a value, make sure to remove our handler and
27439         unset the closure.
27441         Also, get rid of OBJECT_TRACK_ID.  use an environment variable for
27442         this.  So if you compile with OBJECT_TRACKING on, nothing new
27443         happens unless you set the "MOONLIGHT_OBJECT_TRACK_ID" environment
27444         variable to the id of the object you want to track.  Makes the
27445         turnaround time a little quicker.
27447         shift some things around in the header file while I'm making this
27448         change.
27450         * runtime.h, runtime.cpp: move some more methods to the .cpp from
27451         the .h, and also add the per-surface pending unrefs list.  This is
27452         basically a c&p of the global list from dependency.cpp.
27454         * downloader.h, downloader.cpp: remove Get/Set Surface in favor of
27455         using EventObject's.
27456         
27457 2008-03-11  Sebastien Pouliot  <sebastien@ximian.com>
27459         * xaml.cpp: Add NULL check in dependency_object_add_child since
27460         parent->parent->item may be NULL in malformed XAML files.
27462 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27464         * pipeline.h, media.cpp, pipeline.cpp: Rename GetPositionOfPts to
27465           EstimatePtsPosition and remove the estimate parameter, it's never used.
27467 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27469         * runtime.cpp: No need to scream in printfs.
27471 2008-03-11  Jeffrey Stedfast  <fejj@novell.com>
27473         * font.cpp (TextLayout::Layout): More fixes, this is getting
27474         gross.
27476 2008-03-11  Sebastien Pouliot  <sebastien@ximian.com>
27478         * xaml.cpp: Avoid crashing if the PML does not start with a 
27479         M(ove) instruction.
27481 2008-03-11  Michael Dominic K.  <mdk@mdk.am>
27483         * src/: Moving implementations from .h to .cpp, leaving only
27484         setters/getters + simple constructors in .h.
27486 2008-03-11  Larry Ewing  <lewing@novell.com>
27488         * xaml.cpp (dependency_object_set_property): throw an error if we
27489         get here without a DependencyObject.  Fixes
27490         test-property-parsing.xaml
27492 2008-03-10  Larry Ewing  <lewing@novell.com>
27494         * panel.cpp:
27495         * uielement.cpp: add more checks to the parent tree.
27497 2008-03-10  Chris Toshok  <toshok@ximian.com>
27499         * dependencyobject.cpp (~DependencyObject): use
27500         g_hash_table_foreach_remove, so the dtor of one value can't access
27501         an already destroyed DO from another value.
27503 2008-03-10  Chris Toshok  <toshok@ximian.com>
27505         * namescope.cpp: don't explicitly unref the object when removing
27506         it.  instead use base_unref as the value-dtor for the GHashTable.
27507         This will cause unrefs when the hash table is destroyed in the
27508         dtor (a case we were missing before.)
27510         * collection.h, collection.cpp (class Collection): factor out the
27511         body of Collection::Clear into a non-virtual method that we can
27512         call from the dtor.
27514 2008-03-10  Larry Ewing  <lewing@novell.com>
27516         * uielement.cpp:
27517         * panel.cpp: make sure we don't subtract the region unless non of
27518         our anscestors have a slip mask.  This should be implemented in a
27519         more efficient way.
27521 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27523         * playlist.cpp, playlist.h: Move PlaylistContent info PlaylistEntry.
27525 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27527         * dependencyobject.h, dependencyobject.cpp: Enable object counting when
27528           DEBUG is defined.
27529         * runtime.cpp: Show a message if we leak objects and DEBUG is defined.
27530         * pipeline.cpp: Remove printfs.
27532 2008-03-10  Larry Ewing  <lewing@novell.com>
27534         * geometry.h:
27535         * geometry.cpp: make IsBuilt check for actual path data as well
27536         then use it everywhere we need it.  Invalidate the path if the
27537         figures change.  Fixes test-transform-clip.htm.
27539 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27541         * playlist.cpp: Playlist::AddEntry: unref the entry after adding it.
27543 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27545         * mplayer.cpp: When stopping, we need to seek to the beginning again. Fixes
27546           #368461.
27548 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27550         * media.cpp: Update according to pipeline changes. TryOpen: our
27551           downloaded_file field may change when we call MediaOpened, so save a
27552           local copy before calling MediaOpened. Unref our playlist upon
27553           destruction, and 
27554         * mplayer.cpp: Update according to changes in the pipeline.
27555         * pipeline.cpp, pipeline.h: Delete all but one of GetNextFrameAsync, the
27556           rest aren't used. Make the remaining method take the stream as a
27557           parameter, and the resulting frame will be put in the closure. Also
27558           handle the case when the codec returns MEDIA_CODEC_DELAYED, in which
27559           case just try again with the next frame. Make MediaWork ref/unref the
27560           fields that can be ref counted. 
27561         
27562 2008-03-10  Chris Toshok  <toshok@ximian.com>
27564         [ Fixes bug #368460 ]
27565         * collection.cpp (Collection::SetVal): make sure to unregister the
27566         name of the object(s) we remove from the collection.
27567         (Collection::Remove): same.
27568         (Collection::RemoveAt): same.
27569         (Collection::Clear): same.
27571         * namescope.cpp (NameScope::RegisterName): ref the object.
27572         (NameScope::UnregisterName): unref the object.
27574 2008-03-10  Jeffrey Stedfast  <fejj@novell.com>
27576         * font.cpp (TextLayout::Layout): More line-wrap fixes - implement
27577         Silverlights TextWrapping="Wrap" bug where it doesn't ever break
27578         the last word.
27580 2008-03-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27582         * src.mdp: Updated.
27584 2008-03-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27586         * dependencyobject.h: Make the OBJECT_TRACKING stuff public.
27587         * runtime.cpp: Use GetRefCount, not refcount.
27589 2008-03-10  Chris Toshok  <toshok@ximian.com>
27591         * runtime.h, runtime.cpp: add surface_get_time_manager.
27593         * downloader.h, downloader.cpp: add downloader_get_surface.
27594         
27595 2008-03-10  Michael Dominic K.  <mdk@mdk.am>
27597         * runtime.cpp:
27598         * runtime.h:
27599         * shape.cpp: Making the shape-caching a runtime parameter
27600         (shapecache=yes). Turned off right now.
27602 2008-03-10  Michael Dominic K.  <mdk@mdk.am>
27604         * shape.cpp: Tiny refactoring to the surface-size calculation code.
27606 2008-03-10  Michael Dominic K.  <mdk@mdk.am>
27608         * runtime.h:
27609         * shape.cpp: Adding functionality to limit the amount of caching
27610         happening on one surface. Currently set to ~6mb. 
27612 2008-03-09  Larry Ewing  <lewing@novell.com>
27614         * mplayer.cpp: fix another place that used the wrong stride.
27616 2008-03-09  Geoff Norton  <gnorton@novell.com>
27618         * yuv-converter.cpp: Make sure we emms after finishing sse/mmx 
27619         instrucitons.
27621 2008-03-09  Geoff Norton  <gnorton@novell.com>
27623         * yuv-converter.cpp: Detect the CPU features at runtime.  We
27624         should now be able to distribute a 32-bit SSE2/MMX build to
27625         non SSE2/MMX machines
27627 2008-03-09  Geoff Norton  <gnorton@novell.com>
27629         * yuv-converter.cpp: Implement runtime fallbacks in the Convert
27630         function (TODO: Still need to runtime detect SSE2/MMX) 
27632 2008-03-09  Larry Ewing  <lewing@novell.com>
27634         * mplayer.cpp (MediaPlayer::Open): make the stride % 16 for now.
27636 2008-03-09  Larry Ewing  <lewing@novell.com>
27638         * mplayer.cpp (MediaPlayer::Open): use the proper stride
27639         calculation functions.
27641 2008-03-08  Geoff Norton  <gnorton@novell.com>
27643         * yuv-converter.cpp:  Implement a SSE2 version of the YUV2RGB
27644         codepath along with some code cleanup.  Still some more cleanup
27645         to do for runtime detection of CPU features.
27647 2008-03-08  Geoff Norton  <gnorton@novell.com>
27649         * yuv-converter.cpp:  Fix some erroneous math.  U' != U.
27650         These coefficients are far more sane now and our lum change is 
27651         reflected properly.
27653 2008-03-08  Chris Toshok  <toshok@ximian.com>
27655         * clock.cpp (TimeManager::SourceTick): larry gets credit for
27656         spotting this problem and suggesting the fix.  remove the
27657         hysteresis code, and *always* set a new timeout, based on what our
27658         idea of the timeout and the amount of time we spent rendering the
27659         previous frame.  This smooths things out immensely, removes (for
27660         me) the animation stutters induced by audio in sprawl, and results
27661         in fewer dropped frames.
27663 2008-03-08  Geoff Norton  <gnorton@novell.com>
27665         * yuv-converter.cpp: Fix the luminance problem (Y needs shift;
27666         and b was pulling the wrong l/h value.
27668 2008-03-08  Chris Toshok  <toshok@ximian.com>
27670         * value.cpp (Value::CreateUnrefPtr): use GetRefCount() instead of
27671         accessing dob->refcount.
27672         (Value::CreateUnref): same.
27674         * dependencyobject.h, dependency.cpp (class EventObject): reorder
27675         this class definition so that we don't have multiple
27676         public/protected/private areas.  confusing as hell :) Also, move
27677         the implementations of the non-performance critical things into
27678         the .cpp file, as they were making the .h rather cluttered (ctor,
27679         dtor, weak ref/unref.)  Lastly, make almost everything private
27680         instead of public (most importantly the refcount.)
27682         * debug.h, debug.cpp: random code cleanup.  we don't need to be
27683         concerned with adding some additional stack methods to the plugin
27684         in the DEBUG case, so go ahead and just use DEBUG here instead of
27685         STACK_DEBUG.
27687 2008-03-08  Chris Toshok  <toshok@ximian.com>
27689         * uielement.cpp, text.cpp, clock.cpp, mplayer.cpp: remove the
27690         extern guint32 moonlight_flags.
27692         * pipeline.cpp: if RUNTIME_INIT_CONVERTER_YUV, use the yuv
27693         converter, otherwise use ffmpeg.
27695         * runtime.h: add RUNTIME_INIT_CONVERTER_YUV to the list of init
27696         flags, and (my god) put the extern moonlight_flags here.
27698         * runtime.cpp: add yuv converter options. use
27699         MOONLIGHT_OVERRIDES=converter=yuv to enable it.  default is
27700         "converter=ffmpeg".
27702 2008-03-08  Geoff Norton  <gnorton@novell.com>
27704         * yuv-converter.cpp: Clear the mmx state when we're done
27705         processing.  Fixes most problems on x86_32.
27707 2008-03-08  Geoff Norton  <gnorton@novell.com>
27709         * pipeline.cpp: Disable YUV converter, its crashing on x86_32
27710         currently.
27712 2008-03-08  Geoff Norton  <gnorton@novell.com>
27713         
27714         * pipeline-ffmpeg.cpp:  Dont register YUV converter here.
27715         * pipeline.cpp: Register YUV converter here.
27717 2008-03-08  Geoff Norton  <gnorton@novell.com>
27719         * yuv-converter.cpp:  Remove some code duplication and refactor
27720         to support register starved implementations.
27722 2008-03-08  Geoff Norton  <gnorton@novell.com>
27724         * Makefile.am: Add yuv-converter.cpp to the build
27725         * yuv-conveter.*: Our YUV2RGB 420P converter.  Replaces
27726         libswscale.
27727         * pipeline-ffmpeg.cpp: Use YUVConverter instead of libswscale.
27729 2008-03-08  Chris Toshok  <toshok@ximian.com>
27731         * clock.h, clock.cpp, animation.cpp: a few clock related changes.
27733         1. Revert the change that uses "forward" to tell if we're moving
27734         forward or not.  This isn't the only indicator, as a parent clock
27735         might be ticking backward, so we really do need to use "our_delta"
27737         2. Also, we need to not clamp the time of the clock (on either
27738         end) when we're filling, as if the parent's duration is longer
27739         than ours and they autoreverse, there needs to be some padding in
27740         the reverse direction before we start again.
27742         3. Only call ComputeBeginTime() on a newly created clock if the
27743         timeline has a begin time specified.  Otherwise, use
27744         BeginOnTick/GetBeginOnTick to make it begin on the next tick.
27745         This fixes the chess animation breakage.  The problem was caused
27746         by us computing the begin time immediately in Storyboard::Begin,
27747         which would calculate the clock's begin time relative to the
27748         *previous* tick.  on the next tick, the clock was almost always at
27749         1.0 progress, which caused the animations to skip directly to the
27750         end.
27752 2008-03-08  Chris Toshok  <toshok@ximian.com>
27754         * value.cpp, type.cpp, type.cpp.in, trigger.cpp, runtime.cpp,
27755         dirty.cpp, dependencyobject.cpp: more assert removal.  we can't
27756         assert in a plugin (even if people are running a debug build it's
27757         not exactly nice to bring down their browser.)
27759 2008-03-07  Chris Toshok  <toshok@ximian.com>
27761         * value.cpp (Value::CreateUnrefPtr): don't assert here.
27762         (Value::CreateUnref): same.
27764 2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27766         * type.cpp.in, typegen.cs, type.cpp: If the type system is accessed when
27767           it's not initialized, print a warning and re-initialize it.
27769 2008-03-08  Fernando Herrera  <fherrera@novell.com>
27771         * pipeline.cpp:
27772         * playlist.cpp:
27773         * playlist.h: Add support for ASX2 playlist files returned by
27774         mediaservers when requesting a mmsh file over plain http. Fixes
27775         http://channel9.msdn.com.
27777 2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27779         * pipeline.cpp: Add a couple of null checks in ~Media. Detect ASX files
27780           case-insensitively.
27782 2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27784         * pipeline.h, pipeline.cpp: Refcount IMediaObject, and make dtors in all
27785           derived classes protected.
27786         * media.cpp: Update according to pipeline changes. TryOpen: our
27787           downloaded_file field may change when we call MediaOpened, so save a
27788           local copy before calling MediaOpened.
27790 2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27792         * clock.cpp, clock.h: Added TimeManager::InvokeOnMainThread.
27793         * mplayer.cpp: Use TimeManager::InvokeOnMainThread instead of finding a
27794           TimeManager instance to add the timeout to.
27796 2008-03-07  Sebastien Pouliot  <sebastien@ximian.com>
27798         * downloader.cpp: Fix access to Status from JScript.
27800 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27802         * mplayer.cpp: LoadVideoFrame: if we got the last frame, don't request any
27803           more frames.
27805 2008-03-07  Sebastien Pouliot  <sebastien@ximian.com> 
27807         * brush.cpp: Fix default value for ColorInterpolationMode (js
27808         unit tests)
27809         * parsertest.cpp: Adapt to API change.
27810         * xaml.cpp|h: Change value_from_str[_with_typename] to return a
27811         bool since NULL can be a valid Value in some cases (e.g. empty
27812         stuff that should not reset the DO default values).
27814 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27816         * mplayer.cpp: Add a null check before accessing any time managers.
27818 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27820         * brush.cpp, uielement.cpp: Use MediaElement::GetMediaPlayer instead of
27821           accessing the field.
27822         * media.cpp, media.h: Use MediaElement::GetMediaPlayer instead of accessing
27823           the field. Update according to pipeline changes.
27824         * mplayer.cpp, mplayer.h: Update according to pipeline changes.
27825         * pipeline.cpp, pipeline.h: Make Media inherit from EventObject so that it
27826           can be ref counted. Make MediaClosure more intelligent by ref/unreffing
27827           the context and media fields. All variations of MediaWork has a closure,
27828           so move the closure field out of the union. This simplifies
27829           Media::WorkerLoop a bit. Add a Media::SeekToStart, which is required to
27830           not cause any reads/seeks which may block. Remove SetQueueCallback, the
27831           request takes a closure now. Implement an ASXDemuxer to read ASX files.
27832         * sizes.cpp: Updated.
27833         * playlist.h, playlist.cpp: First part of the new playlist support.
27835 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27837         * dependencyobject.cpp: Make the output in EventObject::Track print
27838           atomically. Really avoids a lot of confusion if several threads are
27839           printfing at the same time.
27841 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27843         * debug.cpp: Add a couple of null checks.
27845 2008-03-06  Jeffrey Stedfast  <fejj@novell.com>
27847         * font.cpp (TextLayout::Layout): Don't wrap on a space char, ever.
27848         (TextLayout::Layout): Don't include trailing lwsp in the line
27849         width calculation unless it is the last line.
27850         (TextLayout::Layout): Don't include trailing empty lines in the
27851         height calculation.
27853 2008-03-06  Chris Toshok  <toshok@ximian.com>
27855         * clock.h, clock.cpp: some changes to make TimeManager a
27856         per-surface item, instead of a singleton/global.  The time manager
27857         creates a root clock group, just like Surface used to, which is
27858         the parent of all storyboards for a surface.
27859         
27860         * dirty.h, dirty.cpp: remove the method prototypes and globals -
27861         switch everything to be Surface:: methods.
27862         
27863         * runtime.h, runtime.cpp: get rid of our ClockGroup and Timeline
27864         for the root clock, and create a TimeManager instead.  Also, add
27865         the dirty methods/fields to Surface, even though the
27866         implementation still lives in dirty.cpp.  Also, call
27867         toplevel->SetSurface(NULL) early in our dtor so that elements can
27868         react before, e.g., the time manager has been destroyed.
27870         * media.h, media.cpp: use the surface's TimeManager instead of a
27871         global one.  Also override SetSurface so we can tell if we're
27872         losing access to it, and remove our timeout accordingly.
27874         * mplayer.cpp: use the media element's TimeManager.
27876         * visual.h, visual.cpp: add GetTimeManager() method, which just
27877         does GetSurface()->GetTimeManager().
27879         * dependencyobject.cpp (base_unref_delayed): as much as I hate to
27880         do this, use a g_idle instead of a tick call here, since we have
27881         no access to the surface.
27883         * animation.cpp (Storyboard::Begin): the surface no longer has the
27884         root clock group, the surface's TimeManager does.
27886         * panel.h, panel.cpp (SetSurface): recursively call SetSurface on
27887         our children.
27889         * uielement.h, uielement.cpp: translate global dirty calls into
27890         surface calls, and override SetSurface to remove ourselves from
27891         the dirty list if we're losing our surface.
27893         * eventargs.cpp: translate global dirty calls into surface calls.
27894         
27895 2008-03-06  Michael Dominic K.  <mdk@mdk.am>
27897         * src/clock.cpp: In ClockGroup Clamp the time *before* ticking on
27898         child clocks. Othewise children always get a small delta and keep
27899         going beyond the parent Duration bounds. Fixes the contrained
27900         storyboard examples.
27902         Also making the forward/backward ComputeNewTime behavior depend on
27903         'forward' instead of out_delta (which can be 0 if hitting bounds).
27905 2008-03-06  Sebastien Pouliot  <sebastien@ximian.com>
27907         * transform.cpp: Fix Matrix default values to match identity 
27908         matrix (and fix one js unit test).
27910 2008-03-05  Larry Ewing  <lewing@novell.com>
27912         * shape.cpp: drop the code that checks stretch when building the
27913         paths for polyline and polygon.  Fix the condition for translation.
27915 2008-03-05  Larry Ewing  <lewing@novell.com>
27917         * shape.h:
27918         * shape.cpp: refactor the stretch code slightly and fix the
27919         original stretch tests (that passed the harness but are clearly
27920         wrong).
27922 2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27924         * media.h: Made destructors in objects deriving from EventObject protected,
27925           preventing 'delete obj' and stack-allocation for these objects.
27926         
27927         * playlist.cpp: Can't delete downloaders anymore, unref it.
27929 2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27931         * animation.h, brush.h, canvas.h, clock.h, collection.h, control.h,
27932           dependencyobject.h, downloader.h, frameworkelement.h, geometry.h,
27933           namescope.h, panel.h, runtime.h, shape.h, stylus.h, text.h, transform.h,
27934           trigger.h, uielement.h, visual.h: Made destructors in objects deriving
27935           from EventObject protected, preventing 'delete obj' and stack-allocation
27936           for these objects.
27937         * demo.cpp, runtime.cpp: Can't delete a surface anymore, unref it.
27938         * dirty.h: Added header.
27940 2008-03-05  Chris Toshok  <toshok@ximian.com>
27942         * runtime.h (RUNTIME_INIT_DESKTOP, RUNTIME_INIT_BROWSER): make
27943         front-to-back rendering the default.
27945 2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27947         * clock.h, playlist.h, trigger.h, text.h, clock.cpp, playlist.cpp,
27948           trigger.cpp, dependencyobject.h, downloader.cpp, dependencyobject.cpp,
27949           media.h, animation.h, brush.h, runtime.h, media.cpp, animation.cpp,
27950           runtime.cpp, text.cpp: Updated event handling to take an EventArgs*
27951           calldata instead of a gpointer.
27952         * error.h: Added EventArgs, a base class for all *EventArgs.
27953         * collection.h: Make ChangeEventArgs inherit from EventArgs.
27954         * uielement.cpp: Create all *EventArgs on the heap and simply the code a
27955           bit.
27956         * collection.cpp: Don't allocate Collection::ChangeEventArgs on the stack.
27957         * eventargs.cpp, eventargs.h: Added EventArgs, a base class for all
27958           *EventArgs. Added MarkerReachedEventArgs.
27959         * brush.cpp: Updated event handling to take an EventArgs* calldata instead
27960           of a gpointer. ~ImageBrush: don't delete, unref.
27962 2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27964         * value.cpp: Fix warning.
27966 2008-03-05  Larry Ewing  <lewing@novell.com>
27968         * shape.cpp: Fix line, polyline and polygon to apply stretches
27969         properly (modulo pesimistic shape bounds bugs).  Mostly fixes
27970         test-shape-line-stretch2.xaml, test-shape-polyline-stretch2.xaml
27971         and test-shape-polygon-stretch2.xaml. 
27973         * shape.h: move stretch transform out of Path and into Shape.
27975         * stylus.h:
27976         * stylus.cpp: include the strokes in the subtree bounds so that we
27977         will get invalidations and update bounds when the collection
27978         changes.  There are still potential bounds issues point changes,
27979         those are being looked into.  Fixes invalidation issues in
27980         test-inkpresenter-position and test-inkpresenter-scale.
27982 2008-03-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27984         * xaml.cpp: Add a null at the end of the namespace array.
27986 2008-03-05  Jeffrey Stedfast  <fejj@novell.com>
27988         * font.cpp (TextRun::TextRun): Drop \r's and convert non-new-line
27989         white space into a simple space.
27990         (TextLayout::Layout): Treat embedded \n's as LineBreaks
27991         (TextLayout::Layout): When calculating the width of a line that
27992         ends in a space, don't include the width of the space char -
27993         Silverlight doesn't seem to.
27994         (TextLayout::Layout): Don't pad the height. Don't pad the width
27995         either, altho it seems like a padding of +2.0 is about right but
27996         ONLY if the text is in a canvas? See OMTextInline.htm's
27997         actualWidth/Height measurements as well as the out-of-tree
27998         measurement.
28000         * xaml.cpp (char_data_handler): Always create the GString cdata,
28001         we need to note leading lwsp which the old implementation didn't.
28002         (flush_char_data): Try to emulate Silverlight's chug/chomp
28003         behavior more closely.
28005 2008-03-05  Chris Toshok  <toshok@ximian.com>
28007         * canvas.cpp (Canvas::OnSubPropertyChanged): make sure to chain up
28008         to panel's OnSubPropertyChanged if we don't handle it.
28010         * dependencyobject.cpp (DependencyObject::NotifyListenersOfPropertyChange):
28011         make sure we don't call this method with NULL args.  Also, remove
28012         larry's g_warning (which wasn't the case, i tested with sprawl!),
28013         and also remove the check for matching property/parent type for
28014         attached properties.  this will break controls.
28016         * transform.h, transform.cpp: it used to be that logical parents
28017         of children could rely on OnSubPropertyChanged being invoked for
28018         any property change.  This is no longer the case - the only
28019         instance where it still happens is if there's an attached property
28020         involved.  All other cases have to use OnCollectionChanged.  So,
28021         switch OnSubPropertyChanged to OnCollectionChanged here.
28023 2008-03-05  Jeffrey Stedfast  <fejj@novell.com>
28025         * text.cpp (TextBlock::OnCollectionChanged): We need to update
28026         bounds/text even if element_args is NULL (because adding/removing
28027         an item still changes our text).
28028         (Inline::OnPropertyChanged): Use args->new_value.
28030 2008-03-05  Chris Toshok  <toshok@ximian.com>
28032         * transform.h, transform.cpp: remove
28033         TransformCollection::OnSubPropertyChanged.  it was gumming up the
28034         works.
28036 2008-03-05  Larry Ewing  <lewing@novell.com>
28038         * shape.cpp: disable the shape caching code for now unless
28039         USE_OPT_SHAPE_SURFACE_CACHING=1.
28041 2008-03-05  Michael Dominic K.  <mdk@mdk.am>
28043         * Makefile.am:
28044         * enums.c:
28045         * enums.h:
28046         * xaml.cpp: Taking out all the enum->str (and vice versa) code from
28047         xaml.cpp and putting it into a new file -> enum.c + some utilities. 
28049         The enum<->str code is not specific to xaml and is usefull from plugin as
28050         well.
28052 2008-03-05  Stephane Delcroix  <sdelcroix@novell.com>
28054         * media.cpp: close the pixbuf_loader to load the small images too.
28056 2008-03-04  Chris Toshok  <toshok@ximian.com>
28058         * runtime.cpp (Surface::expose_to_drawable): re-enable the
28059         clearing of the cairo surface, but only if we have a
28060         widget (i.e. not in the windowless plugin case.)  Should fix
28061         translucent desklets without breaking the plugin.
28063 2008-03-04  Chris Toshok  <toshok@ximian.com>
28065         [ rather large change, reworking much of the property change event
28066         system to be a little smaller api surface-wise, and also cleaning
28067         up uses of it to remove some of the accumulated cruft that we'd
28068         developed over the past 10 months.]
28069         
28070         * dependencyobject.h, dependencyobject.cpp: A few key changes:
28072         1. Attach -> AddPropertyChangeListener
28073            Detach -> RemovePropertyChangeListener
28074            NotifyAttachersOfPropertyChange -> NotifyListenersOfPropertyChange
28076            This was done to remove the confusion between "attached"
28077            properties and our use of the word "attach" to mean "listen for
28078            property changes".  Attached properties are those which
28079            implicitly notify the parent when they're changed.
28080         
28081            OnChildPropertyChanged is gone.  Canvas (the only user of it)
28082            now uses OnSubPropertyChanged to deal with child property
28083            changes.
28085         2. *PropertyChanged methods take a
28086            structure (PropertyChangedEventArgs) that contains the
28087            DependencyProperty, as well as the old and new values of it.
28088            This was to remove the need for almost every
28089            OnPropertyChangedMethod to immediately call GetValue on the
28090            property.  Passing the old value requires changing the
28091            current_values hash to not have a value destructor, so we have
28092            to manually delete values again.
28094         3. Reordered the args for
28095            AddPropertyChangeListener/RemovePropertyChangeListener so that
28096            the listener comes first and the second arg defaults to NULL.
28097            Cleans up a bit of the use of this method globally.
28099         * animation.h, animation.cpp: track OnSubPropertyChanged changes.
28101         * brush.h, brush.cpp (SolidColorBrush::OnPropertyChanged,
28102         LinearGradientBrush::OnPropertyChanged,
28103         RadialGradientBrush::OnPropertyChanged): remove, unnecessary.
28105         also lots of changes to use args->new_value instead of calling
28106         GetValue(property).
28108         Clear up confusion regarding the meaning of the property passed to
28109         AddPropertyChangeListener.
28111         * canvas.h, canvas.cpp: switch OnChildPropertyChanged to
28112         OnSubPropertyChanged.
28113         
28114         * collection.h, collection.cpp (Node::Node): don't add parent as a
28115         listener for every property change here.  We handle this
28116         specifically (and automatically) in
28117         DependencyObject::NotifyListenersOfPropertyChange, but only for
28118         attached properties.
28119         (Node::~Node): don't remove the listener here either.
28121         lots of tracking the DO api changes here too.
28123         * control.h, control.cpp: track On*PropertyChanged changes.
28125         * font.cpp: fix some warnings
28127         * frameworkelement.h, frameworkelement.cpp: track
28128         On*PropertyChanged changes.
28129         
28130         * geometry.h, geometry.cpp: track On*PropertyChanged changes.
28131         
28132         * media.h, media.cpp (MediaElement::OnPropertyChanged): remove a
28133         lot of the empty blocks here - there's nothing to do for these
28134         properties, so we might as well not bloat the code.  Also, use
28135         new_value when we can.
28136         (Image::DownloaderComplete): add a (I hope) suitably nasty comment
28137         about calling brush->OnPropertyChanged directly.  code shouldn't
28138         do this, we should figure out if we can just set the property, and
28139         if so, do that.  otherwise something else is broken.
28140         (Image::OnPropertyChanged): use new_value where we can.
28142         * panel.h, panel.cpp: remove the cached background field.  It
28143         wasn't used except to Attach/ref + Detach/unref it, and that's
28144         handled automatically by the DependencyProperty machinery.
28145         Otherwise just track the On*PropertyChanged api changes.
28147         * shape.h, shape.cpp: similarly, we don't need to ref/attach our
28148         cached stroke and fill fields.  They're populated for us (and
28149         ref'ed/unref'ed as needed), so we don't need anything additional
28150         here.  Use new_value instead of GetValue in OnPropertyChanged.
28151         Also, factor out some redundant code from all the subclass
28152         OnPropertyChanged methods that was nearly the same as the
28153         Shape::OnPropertyChanged code for it.
28155         * stylus.h, stylus.cpp: On*PropertyChanged api changes.
28157         * text.h, text.cpp: mostly On*PropertyChanged api changes, and
28158         lots of using new_value instead of GetValue, but also get rid of
28159         the cached TextBlock foreground instance field.  It's easy enough
28160         to fetch when we need it in the ::Paint method, and the
28161         dependencyobject stuff already refs and attaches to it.
28163         * transform.h, transform.cpp: lots of On*PropertyChanged api
28164         changes, and using new_value instead of GetValue.
28166         * uielement.h, uielement.cpp: remove the cached opacityMask
28167         field (it wasn't used except for attach/detach, which is handled
28168         for us.)  The usual On*PropertyChanged changes as well as using
28169         new_value instead of GetValue.
28170         
28171 2008-03-04  Jeffrey Stedfast  <fejj@novell.com>
28173         * xaml.cpp (style_simulations_map): There's only one
28174         StyleSimulation value, and that is None.
28176         * font.cpp (TextLayout::Layout): In Wrap mode, if we overflow the
28177         width and the text is not part of the first run on a line, break
28178         at the beginning of the Run. This seems to be what Silverlight
28179         does in OMTextInline.htm.
28181 2008-03-04  Larry Ewing  <lewing@novell.com>
28183         * eventargs.cpp: update the dirty list before trying calculating
28184         relative locations.
28185         
28186         * runtime.cpp (Surface::HandleMouseEvent): process dirty elements
28187         here so that our hit testing has up to date bounds.
28190         * dirty.h: remove the prototypes for up/down since it isn't safe
28191         to split the up/down passes.
28193         * src/uielement.cpp: remove dirty processing.
28194         
28195 2008-03-04  Stephane Delcroix  <sdelcroix@novell.com>
28197         * media.cpp: use a pixbuf_loader instead of the pixbuf_new_from_file to
28198         create the pixbuf from a file, allowing partial rendering of broken
28199         imagefiles, like in Image.htm
28201 2008-03-04  Jeffrey Stedfast  <fejj@novell.com>
28203         * text.cpp (Inline::GetDefaultValue): Implemented.
28205 2008-03-04  Michael Dominic K.  <mdk@mdk.am>
28207         * src/uielement.cpp: When calling uielement_transform_point, make sure our
28208         transforms are up-to-date (not dirty).
28210         Since we're updating the transform matrices only in the expose (dirty)
28211         callback it can happen that two ie. mouse events arrive before we get to
28212         the expose. If the first mouse event invalidated the transform and the
28213         second one relies on the transform (ie. tries to obtain relative mouse
28214         position) it'd get bogus values since the transform has not been
28215         regenerated yet.
28217         Fixes the drag & drop behaviour in SL ink journal (the selection tool).
28218         Fixes: #362227.
28220 2008-03-04  Michael Dominic K.  <mdk@mdk.am> 
28222         * src/dirty.cpp:
28223         * src/dirty.h: Splitting the process_dirty_elements () into two individual
28224         chunks -- process_down_dirty_elements () and process_up_dirty_elements ().
28225         process_dirty_elements () now calls both. 
28227         The point here is that we need to process down dirty elements (call
28228         process_down_dirty_elements ()) from other contextes as well.
28230 2008-03-03  Larry Ewing  <lewing@novell.com>
28232         * uielement.cpp:  Call FullInvalidate when clip changes so that
28233         our subtree bounds are updated and invalidated.  Make sure we
28234         don't reset the forced invalidate flag.
28235         
28236         * dirty.cpp: invalidate subtree bounds on forced invalidations.
28237         Fixes test-clip-invalid-update.htm.
28238         
28239 2008-03-03  Jeffrey Stedfast  <fejj@novell.com>
28241         * text.cpp (TextBlock::GetText): New method to generate a string
28242         representing the Text property from the inlines.
28243         (TextBlock::SetText): New method (split out from the old
28244         ::SetValue code) to parse the newly set text string into a list of
28245         Inlines and update out InlinesProperty if changed. Returns whether
28246         or not the inlines property changed.
28247         (TextBlock::OnPropertyChanged): Call SetText() to update out
28248         Inlines if the TextProperty value was changed by an outside
28249         source. If the InlinesProperty was changed by an outside source,
28250         update our TextProperty.
28251         (TextBlock::OnCollectionChanged): Update our TextProperty if an
28252         Inline was added or removed or if a Run element had its
28253         TextProperty changed.
28255 2008-03-03  Chris Toshok  <toshok@ximian.com>
28257         * animation.cpp: plug a memory leak in the 3
28258         UsingKeyFrames::GetCurrentValue methods.
28260 2008-03-03  Chris Toshok  <toshok@ximian.com>
28262         * transform.h, transform.cpp: Make Matrix::GetUnderlyingMatrix
28263         return a cairo_matrix_t instead of a pointer to the
28264         internal (mutable) field, and update its only use.
28266 2008-03-03  Jeffrey Stedfast  <fejj@novell.com>
28268         * media.cpp (media_element_get_audio_stream_index): Fixed to
28269         handle nullable value.
28270         (media_element_set_audio_stream_index): Same.
28271         (media_init): Register the AudioStreamIndex property as being
28272         nullable.
28273         (MediaElement::Reinitialize): Set the CurrentStateProperty to
28274         "Closed".
28276 2008-03-03  Jeffrey Stedfast  <fejj@novell.com>
28278         * media.cpp (media_init): Register AudioStreamCount,
28279         BufferingProgress, CanPause, CanSeek, CurrentState,
28280         NaturalDuration, NaturalVideoWidth, NaturalVideoHeight properties
28281         as being read-only.
28283         * text.cpp (text_init): Register ActualWidth and ActualHeight
28284         properties as ReadOnly.
28286         * transform.cpp (Matrix::GetValue): Removed.
28287         (Matrix::SetValue): Removed.
28288         (Matrix::OnPropertyChanged): Implemented.
28290 2008-03-01  Larry Ewing  <lewing@novell.com>
28292         * shape.cpp (Shape::DoDraw): refactor slightly.
28294         * geometry.cpp: fix extents calculation when there is only a fill
28295         on the shape.  Fixes test-path-stretch-fill-extents.xaml.
28296         
28297         * shape.cpp (Shape::ComputeShapeBounds): make sure shapes with
28298         negative widths or heights have no bounds.
28299         (Shape::DoDraw): Silence warning.
28301 2008-02-29  Larry Ewing  <lewing@novell.com>
28303         * shape.cpp (Shape::ComputeShapeBounds): tweak shape bounds to
28304         match StretchAndShapes.xaml.
28306         * collection.cpp (VisualCollection::Remove): don't fire
28307         VisualRemoved unless we are going to actually remove the item.
28308         Fixes OM_RemoveClearRemoveAt.htm.
28310 2008-02-29  Jeffrey Stedfast  <fejj@novell.com>
28312         * collection.cpp (VisualCollection::ResortByZIndex): Reinitialize
28313         the z_sorted array before sorting so that we can be sure the end
28314         result will be a stable sort.
28315         (VisualCollection::Insert): Don't use g_ptr_array_insert_sorted()
28316         because we need to take index into account. Instead, grow our
28317         array and call ResortByZIndex().
28319 2008-02-29  Jeffrey Stedfast  <fejj@novell.com>
28321         * text.cpp (TextBlock::GetValue): Revert memleak fix, it created
28322         an even more fun memory corruption bug.
28324 2008-02-29  Larry Ewing  <lewing@novell.com>
28325         
28326         src/control.cpp:
28327         src/frameworkelement.cpp:
28328         src/geometry.cpp:
28329         src/media.cpp:
28330         src/rect.cpp:
28331         src/rect.h:
28332         src/shape.cpp:
28333         src/text.cpp:
28334         src/uielement.cpp: Fix Rect::Transform, replace all occurances of
28335         bounding_rect_for_transformed_rect with Rect::Transform.
28337 2008-02-29  Larry Ewing  <lewing@novell.com>
28339         * geometry.cpp: apply transform to all bounds calculations.  Fixes
28340         test-geometry-bounds.xaml.
28342 2008-02-29  Larry Ewing  <lewing@novell.com>
28344         * geometry.cpp: Make sure geometry groups draw their children
28345         rather than just copying the paths so that local transforms are
28346         applied correctly.
28348 2008-02-29  Jeffrey Stedfast  <fejj@novell.com>
28350         * text.cpp (TextBlock::GetValue): Fixed memory leak.
28352         * media.cpp (MediaElement::GetValue): Fixed compile warning.
28354         * text.cpp (Inline::OnPropertyChanged): Use GetValueNoDefault()
28355         rather than calling inline_get_*() which use GetValue().
28357         * font.cpp (TextFont::TextFont): Don't let the underline thickness
28358         be < 1.0
28360         * dependencyobject.cpp (DependencyObject::GetValueNoDefault):
28361         Simplified.
28362         (DependencyObject::GetValue): Simplified.
28363         (DependencyObject::GetDefaultValue): New method to get the default
28364         value for a property (now used by GetValue()).
28366 2008-02-29  Larry Ewing  <lewing@novell.com>
28368         * geometry.cpp (PathGeometry::ComputeBounds): take the geometry
28369         transform into account when computing bounds.  Fixes
28370         CGeometry_AddToRenderList.xaml
28372 2008-02-29  Larry Ewing  <lewing@novell.com>
28374         * shape.h:
28375         * shape.cpp: export calc_line_bounds.
28377         * geometry.cpp: use calc_line_bounds from shape.h.  Fixes bounds
28378         problems on Animation_TargetingAndHandoff.xaml.
28380 2008-02-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28382         * pipeline.cpp: Add a missing const modifier.
28384 2008-02-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28386         * mplayer.cpp: Use the first streams found in the media, not the last.
28388 2008-02-28  Stephane Delcroix  <sdelcroix@novell.com>
28390         * stylus.cpp: if there's an outline, draw a line of at least 2px.
28392 2008-02-28  Stephane Delcroix  <sdelcroix@novell.com>
28394         * brush.cpp: No longer ignore out-of-bounds offest in
28395         SetupGradient. Add the bounds stop with linearinterpolation
28396         between the nearest stop and the outofbounds one. Handle the
28397         degenerated case with only outofbounds stops.
28399 2008-02-28  Michael Dominic K.  <mdk@mdk.am>
28401         * shape.cpp: Commenting a left-over debug g_warning.
28403         Additionally adding a protection against NULL in cache-size reporting (as
28404         experienced by rolf). However, if GetSurface () returns NULL in the Render
28405         callback... I guess we're screwed anyways.
28407 2008-02-28  Michael Dominic K.  <mdk@mdk.am>
28409         * xaml.cpp:
28410         * xaml.h: Adding convert_property_value_to_enum_str function to
28411         check/convert if the value for the given property can be represented by an
28412         enum string. 
28414         It would be nicer to mover all the enums tables/resolving to a separate
28415         place in future instead of gluing it to xaml.cpp.
28417 2008-02-28  Stephane Delcroix  <sdelcroix@novell.com>
28419         * shape.h|cpp: override GetSizeForBrush for Rectangle to honor the
28420         Stretch property.
28422 2008-02-27  Jeffrey Stedfast  <fejj@novell.com>
28424         * text.cpp (Glyphs::Render): Use horiBearingX for the first char
28425         in the Glyphs string just like we do for TextBlock rendering.
28427 2008-02-27  Jeffrey Stedfast  <fejj@novell.com>
28429         Fixes the last remaining issue in the TextRegressions.htm test.
28431         * xaml.cpp (flush_char_data): Only preserve LWSP in CDATA between
28432         non-autogenerated <Run>'s.
28434         * text.cpp (TextBlock::SetValue): Mark the Inlines auto-generated
28435         from the TextBlock's Text property as being auto-generated.
28437 2008-02-27  Larry Ewing  <lewing@novell.com>
28439         * shape.cpp: change the shape surface cache to cache in device
28440         coordinates and rework the candidate restrictions to reject
28441         huge shapes and allow scaled caches.
28443 2008-02-27  Larry Ewing  <lewing@novell.com>
28445         * shape.cpp: center the filled image within the new bounds.
28447 2008-02-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28449         * media.h, media.cpp: When a media is opened, seek to the current
28450         position.
28452         * value.cpp: ToString: Return 'NULL' if we're null.
28454 2008-02-27  Michael Dominic K.  <mdk@mdk.am>
28456         * src/animation.cpp: When storyboard is completed, Teardown the clocks
28457         only if we're realling stopping (not holding). Fixes the
28458         StoryBoard_ModifyProperty test.
28460 2008-02-27  Michael Dominic K.  <mdk@mdk.am>
28462         * clock.cpp: Make sure we actually hit the our_delta < 0 code 
28463         path. Fixes the AutoReversed/Repeated animations.
28465 2008-02-27  Michael Dominic K.  <mdk@mdk.am>
28467         * shape.cpp: More cases to invalidate (free mem) of the surface cache.
28469 2008-02-26  Jeffrey Stedfast  <fejj@novell.com>
28471         * font.cpp (TextFont::TextFont): Precalculate underline position
28472         and thickness. Also, we need to adjust the position based on 1/2
28473         the underline thickness.
28474         (TextLayout::Layout): Only adjust by the horiBearingX if < 0.
28475         (TextLayout::RenderLine): Same.
28477 2008-02-26  Chris Toshok  <toshok@ximian.com>
28479         * runtime.cpp (runtime_cairo_create): take the visual too, so the
28480         plugin can send ours in - we can't rely on the pixmap having a
28481         visual associated with it, because it's initialized with the
28482         _foreign api which doesn't fill in the colormap. yay.
28483         (Surface::Surface): if we're windowless don't create the widget.
28484         also, init render/render_data and invalidate/invalidate_data to
28485         NULL.
28486         (Surface::ConnectEvents): exit early if we're windowless.
28487         (Surface::Invalidate): call through the invalidate function if
28488         there is one.  otherwise, default behavior (if we have a widget).
28489         (Surface::Paint): exit early if no toplevel.
28490         (Surface::render_cb): call through the render function if there is
28491         on.
28492         (Surface::expose_to_drawable): this is most of the guts of
28493         expose_callback, changed to handle the case where we're already
28494         drawing to the backbuffer (in the windowless case) and therefore
28495         don't need the temporary pixmap.  Also, commented out some code
28496         that clears the contents - do we actually need this?  The comment
28497         for it is enormous...
28498         (Surface::expose_event_callback): just call expose_to_drawable
28499         with the widget's window.
28501         * runtime.h (class Surface): we need to make the gtk callbacks
28502         public since the plugin will be invoking them directly.  Also,
28503         switch the event methods to returning bools, and add a new method
28504         called expose_to_drawable, so the plugin can direct rendering to a
28505         pixmap in the windowless case.
28507         * uielement.h, uielement.cpp: change all the Emit* methods to
28508         return bool.
28510         * dependencyobject.h, dependency.cpp: make EventObject::Emit
28511         return true if there were handlers for the event, and false
28512         otherwise.
28514 2008-02-26  Jeffrey Stedfast  <fejj@novell.com>
28516         * text.cpp (TextBlock::TextBlock): Removed the useless
28517         text_block_set_text() call. This was just a broken hack meant to
28518         do what MDK's previous commit fixed the right way.
28520         * font.cpp (TextFont::UnderlinePosition): Fixed to take font
28521         y_scale metrics into consideration.
28522         (TextFont::UnderlineThickness): Same.
28524 2008-02-26  Michael Dominic K.  <mdk@mdk.am>
28526         * src/text.cpp: TextBlock when constructed by default has an empty
28527         Inlines collection instead of NULL. Along with all the previous
28528         commits fixes the OM_CreateAddInsert.htm test.
28530 2008-02-26  Michael Dominic K.  <mdk@mdk.am>
28532         * src/collection.cpp: Don't allow collection insert at negative
28533         position.
28535 2008-02-26  Michael Dominic K.  <mdk@mdk.am>
28537         * src/collection.cpp: Don't add the object to the collection if it
28538         already contains the object (return -1 instead).
28540 2008-02-26  Michael Dominic K.  <mdk@mdk.am>
28542         * src/animation.cpp:
28543         * src/animation.h:
28544         * src/collection.cpp:
28545         * src/collection.h: The "Add" method of collections returns int (index of
28546         the element added), not bool. As explained in:
28548         http://msdn2.microsoft.com/en-us/library/system.windows.media.visualcollection.add.aspx
28550 2008-02-25  Jeffrey Stedfast  <fejj@novell.com>
28552         * font.cpp (TextFont::OpenZipArchiveFont): Since we aren't going
28553         through FontConfig, we need to parse the font's family name to
28554         extract styleistic info so we can do proper font name matching and
28555         style matching (e.g. "Myriad Pro Cond Black Italic" should match
28556         "Myriad Pro, Condensed Black Italic").
28558 2008-02-25  Chris Toshok  <toshok@ximian.com>
28560         * runtime.h, runtime.cpp: s/drawing_area/widget and
28561         s/DrawingArea/Widget
28563         * demo.cpp: same.
28565 2008-02-25  Michael Dominic K.  <mdk@mdk.am>
28567         * src/uielement.h: Adding a virtual CacheInvalidateHint () function that
28568         can be called on the element to give it a hint that it should free it's
28569         cache for the time being.
28571         * src/collection.cpp:
28572         * src/panel.cpp:
28573         * src/panel.h: Forward CacheInvalidateHint to all children.
28575         * src/shape.cpp:
28576         * src/shape.h: Destroy the surface and path cache when hinted.
28578         In total improves our memory usage with surface/path caching, ie. in the
28579         Showcase.
28581 2008-02-22  Michael Dominic K.  <mdk@mdk.am>
28583         * src/runtime.cpp:
28584         * src/runtime.h:
28585         * src/shape.cpp:
28586         * src/shape.h: Adding functionality to report the cache size usage. By
28587         default it's turned off. MOONLIGHT_OVERRIDES="cache=show" to turn it on. 
28589 2008-02-22  Michael Dominic K.  <mdk@mdk.am>
28591         * src/shape.cpp: RoundOut to pixels the extents of the shapes. Causes us
28592         to expose a few more pixels but helps with surface caching.
28594 2008-02-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28596         * downloader.cpp: downloader_get_response_file: remove any directory
28597           components from the part name, otherwise the creation of the tmp file
28598           fails. If we're aborted, don't call any callbacks.
28599         * media.cpp: If we have a downloader and SetSource is called with a new
28600           downloader, abort the previous download, not only unref it, otherwise
28601           our callbacks and events may still get called from the old downloader.
28603 2008-02-21  Jeffrey Stedfast  <fejj@novell.com>
28605         * font.cpp (TextFont::TextFont): Simplified the fallback code.
28607 2008-02-21  Jeffrey Stedfast  <fejj@novell.com>
28609         Fixes Glyphs.xaml
28611         * text.cpp (Glyphs::SetIndices): Fixed to properly parse glyph
28612         cluster mappings.
28613         (Glyphs::Layout): Properly handle glyph clusters.
28614         (Glyphs::Render): Same.
28616 2008-02-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28618         * media.cpp: When aborting a downloader, null out the write
28619         functions too.
28621 2008-02-21  Michael Dominic K.  <mdk@mdk.am>
28623         * src/clock.cpp: Emit the Completed event when Filling as
28624         well. Together with prev commit fixes: #359024 and #324935.
28626 2008-02-21  Michael Dominic K.  <mdk@mdk.am>
28628         * src/animation.cpp:
28629         * src/animation.h: Detach the AnimationStorage update handler from the
28630         clock when the clock is stopped -- prevents us from overriding the (just
28631         reset) base value with another update.
28633 2008-02-21  Michael Dominic K.  <mdk@mdk.am> 
28635         * src/value.cpp: Implementing ToString () for DOUBLE.
28637 2008-02-21  Michael Dominic K.  <mdk@mdk.am>
28639         * src/color.cpp: A slightly more relaxed/tolerant way of parsing
28640         the colors... it's the web and it's broken by default. Fixes:
28641         #362287 (the US candidates website).
28643 2008-02-21  Stephane Delcroix  <sdelcroix@novell.com>
28645         * text.h|cpp: compute GetOriginPoint and fix GetSizeForBrush
28647 2008-02-20  Jeffrey Stedfast  <fejj@novell.com>
28649         Fixes the TextBlockFontDownloads.htm test.
28651         * font.cpp (TextFontDescription::Set*): If the new value is not
28652         the same as the old, invalidate the loaded TextFont.
28653         (TextFont::TextFont): Always compare family names unless we're
28654         requesting the "Sans" (e.g. last) fallback font.
28655         (TextFont::TextFont): If the requested family name does not match
28656         the specified font file, fall back to a system font of the same
28657         name (we were doing this for zip archievs before, but not for
28658         specified ttf font files).
28660         * text.cpp (TextBlock::SetFontSource): If the downloader is null,
28661         set the font filename to null and invalidate the textblock.
28663 2008-02-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28665         * media.cpp: Add a printf to inform when we're trying to load an
28666         mms stream.  Helps a lot when trying to identify sites depending
28667         on mms/streaming support.
28669         * runtime.cpp: Unref debug_selected_element upon
28670         destruction. Fixes a leak.
28672 2008-02-20  Michael Dominic K.  <mdk@mdk.am>
28674         * src/shape.cpp: Fixing the shape caching to work also with
28675         Path/Geometry.  Fixes: #362021.
28677 2008-02-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28679         * media.cpp: MediaElement/Image: Remove event handlers when we abort the
28680           downloader, otherwise the handlers might be called after we're
28681           destroyed.
28683 2008-02-19  Jeffrey Stedfast  <fejj@novell.com>
28685         * uri.cpp (Uri::ToString): Now takes a 'flags' argument to let us
28686         know which, if any, parts of the URI to hide.
28687         (Uri::Parse): If we don't have a protocol, don't simply assume
28688         that the entire string is the filename. We might have a fragment
28689         attached, for example.
28691         * text.cpp (Glyphs::OnPropertyChanged): Decode the URI here and
28692         get the font index (if a fragment is set). Also, use the parsed
28693         Uri's ::ToString() method to hide the fragment so that requesting
28694         the file actually works.
28695         (Glyphs::DownloaderComplete): Don't need to parse the URI here
28696         anymore, we've already got the index from OnPropertyChanged().
28698 2008-02-19  Jackson Harper  <jackson@ximian.com>
28700         * xaml.cpp: Parser error if we can't find the owner type or
28701         property name when setting properties.
28703 2008-02-19  Sebastien Pouliot  <sebastien@ximian.com> 
28705         * geometry.cpp|h: #if out GetOriginPoint which calls moon_get_origin
28707 2008-02-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28709         * pipeline-ffmpeg.cpp: Comment out error message which just shows ffmpeg's
28710           shortcomings.
28711         * media.cpp: Remove printf.
28713 2008-02-19  Sebastien Pouliot  <sebastien@ximian.com>
28715         * moon-path.c: #if out moon_get_origin since it's not used 
28716         anymore. Change cairo_path_display output to be easier to read 
28717         with negative numbers.
28719 2008-02-18  Michael Dominic K.  <mdk@mdk.am>
28721         * src/media.cpp:
28722         * src/media.h: Load images slightly faster by skipping one pixbuf blit and
28723         doing the expansion + conversion in one step.
28725         Also fixing an ugly memory leak where all RGBA images loaded were leaked
28726         (two times in memory).
28728 2008-02-15  Michael Dominic K.  <mdk@mdk.am> 
28730         * src/clock.cpp: Before processing dirty enter/leave gdk threads. We're
28731         being called from a timeout (unprotected) and we're potentially calling
28732         gdk_ invalidation functions. I think it only matters (in this case) 
28733         on non-X backends though. 
28735 2008-02-15  Michael Dominic K.  <mdk@mdk.am> 
28737         * src/uielement.cpp: Moving the debug timers for rendering slightly and
28738         uncommenting them so that they work when TIMERS is enabled.
28740 2008-02-15  Michael Dominic K.  <mdk@mdk.am> 
28742         * src/runtime.cpp:
28743         * src/runtime.h: Adding an extra DEBUG_MARKER_KEY define (disabled by
28744         default) that changes your 'd' key into a special debug key. When pressed,
28745         a message is printed to the console (region start). When pressed again,
28746         another message is printed (region end). This is usefull to see what
28747         happens in a particular part of the program timeline (ie. after click). 
28749         Makes sense obviously only with timers debugging on and stuff.
28751 2008-02-14  Michael Dominic K.  <mdk@mdk.am>
28753         * src/clock.cpp: Changing max/default FPS to 50. Empirical experience
28754         shows that SL runs by default at something around that. Also, with the
28755         recent fixes some sites are suffering from 24 (can run/look much better
28756         at higher fps).
28758 2008-02-14  Michael Dominic K.  <mdk@mdk.am> 
28760         * src/shape.cpp:
28761         * src/shape.h: Adding surface caching for shapes. The strategy
28762         is to cache big surfaces that have little transformations (such as
28763         ie. backgrounds, fade overlays, etc.). Improves performance greatly
28764         for many sites (ie. Showcase).
28766 2008-02-14  Michael Dominic K.  <mdk@mdk.am> 
28768         * src/uielement.cpp: Commenting out the timer in post-pre render as it's
28769         broken and blocks the compilation with timers on.
28771 2008-02-12  Michael Dominic K.  <mdk@mdk.am> 
28773         * src/animation.cpp:
28774         * src/animation.h: Massive fix for our KeySpline animation calculation
28775         routines (which were broken and giving wrong values). According to:
28777         http://msdn2.microsoft.com/en-us/library/ms533119(VS.85).aspx
28779         "...think of the horizontal axis as the pace with which the interpolation
28780         proceeds along the timing interval. The vertical axis is the resulting
28781         value for the animation's progress, yielded by the function that underlies
28782         the keySplines property. Another way of describing this is that the
28783         horizontal axis is the input unit time for the interval, and the vertical
28784         axis is the output unit time."
28786         Therfore, we need to perform an "Y for X" bezier lookup. The current fix is
28787         a little bit ugly -- we waste 256 bytes per KeySpline to store
28788         pre-calculated values in a lookup table. But maybe it's not soo bad, since
28789         balf function (from prev implementation) was coming up top in the
28790         profiles anyways.
28792         The only other way I can (currently) think of would be to solve a cubic
28793         equation each time we poll the KeySpline for a value. That would be,
28794         however, a *massive* performance hit. 
28796         Hence the lookup solution for now (note: the generation of the table is
28797         very fast, no cubics involved).
28799 2008-02-11  Michael Dominic K.  <mdk@mdk.am>
28801         * src/runtime.h: Fixing our debug-timing routine. It reported 10x as much
28802         as it should... yes, our redraws are slow, but not *that* slow ;)
28804 2008-02-09  Michael Dominic K.  <mdk@mdk.am> 
28806         * src/mplayer.cpp: If we have no audio devices present in the system,
28807         launch a special audio loop variant to still read/fetch audio (and discard
28808         it) so that the video playback is not blocked. Fixes: #341835.
28810 2008-02-08  Jeffrey Stedfast  <fejj@novell.com>
28811         
28812         * font.cpp (TextFont::TextFont): If the loaded font's family_name
28813         doesn't match the requested family name, fall back to the default
28814         font (it means the requested font doesn't exist on the system).
28815         (TextLayout::Layout): Added a 'first_char' state variable that can
28816         be used to figure out if if the current char is the first char on
28817         a line. This is needed for the wrapping logic.
28819 2008-02-08  Jeffrey Stedfast  <fejj@novell.com>
28821         Fixes some text layout bugs in TextBlockFontFamilies.xaml
28823         * xaml.cpp (flush_char_data): Now takes a string 'next_element'
28824         argument rather than a bool 'start' argument so that we can make
28825         sure that the previous and next element types are <Run>'s because
28826         lwsp between a <LineBreak/> and a <Run> or a </Run> and a
28827         <LineBreak/> should be ignored. Also, never g_strchomp() this
28828         cdata.
28829         (start_element_handler): Pass the name of the next element to
28830         flush_char_data().
28831         (end_element_handler): Pass NULL to flush_char_data() as the
28832         next_element argument.
28834 2008-02-08  Chris Toshok  <toshok@ximian.com>
28836         * media.cpp (MediaElement::Render): reorder things so that we're
28837         calculating the brush pattern matrix with the snapped pixels.
28839 2008-02-08  Stephane Delcroix  <sdelcroix@novell.com>
28841         * brush.cpp: fix Image|Video|VisualBrushes for Shapes.
28843 2008-02-07  Chris Toshok  <toshok@ximian.com>
28845         * media.cpp (MediaElement::Render): snap to the pixel grid if
28846         we're not rotated/skewed.
28848 2008-02-07  Sebastien Pouliot  <sebastien@ximian.com>
28850         * shape.cpp: Add comment about (missing) Path::ComputeLargestRectangle
28852 2008-02-07  Larry Ewing  <lewing@novell.com>
28854         * brush.cpp (GradientBrush::SetupGradient): treat stops > 1.0 the
28855         same as out of bounds stops.
28857         * shape.cpp: cache the results of CompouteShapeBounds in
28858         extents rect, use that value in GetSizeForBrush.
28860 2008-02-07  Jeffrey Stedfast  <fejj@novell.com>
28862         Fixes a rendering glitch for xaml similar to:
28864         <TextBlock>
28865            <Run FontStyle="Italic">This </Run>is Dodger Blue
28866         </TextBlock>
28868         * xaml.cpp (flush_char_data): Don't g_strchomp() the cdata when
28869         setting the value of a content_property (e.g. a Run).
28871 2008-02-07  Michael Dominic K.  <mdk@mdk.am>
28873         * src/color.cpp: Added support to parse scRGB-style color specificators
28874         (sc#), see #345931. The scRGB -> sRGB conversion is a bit simplified but
28875         should produce accurate-enough colors for most uses.
28877         http://silverlight.net/quickstarts/silverlight10/controls.aspx now works.
28879 2008-02-07  Sebastien Pouliot  <sebastien@ximian.com>
28881         * shape.cpp|h: Split ComputeBounds to avoid calling functions 
28882         bounding_rect_for_transformed_rect and IntersectBoundsWithClipPath
28883         inside each shape. This will enable us to reuse the non-transformed
28884         value elsewhere too. This also fix (for me) the origin point that
28885         caused problems for some brushes. Started implementing methods 
28886         ComputeLargestRectangle[Bounds] to optimize drawing.
28888 2008-02-06  Chris Toshok  <toshok@ximian.com>
28890         * frameworkelement.cpp (FrameworkElement::GetSizeForBrush): we
28891         want the untransformed size of the element.  otherwise we end up
28892         with a pattern matrix that scales things too large given that
28893         we're also scaling the element.  Fixes fullscreen mode in halo3
28894         and /fox video players (bug #335845).
28896 2008-02-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28898         * mplayer.cpp: AdvanceFrame: Create a target_pts range, if we're within the
28899           range, draw the current frame. If we're ahead of the range, do nothing
28900           (fixes some video/audio sync problems), and if we're behind drop frames.
28901           The range makes sure that we paint every frame even when the audio loop
28902           doesn't update the target pts as often as we're drawing video.
28904 2008-02-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28906         * panel.cpp, runtime.cpp: Fix warnings.
28908 2008-02-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28910         * mplayer.cpp: Simplify our advance frame loop: don't lock the queue during
28911           the entire loop, only when fetching packets. This allows packets to
28912           arrive from the pipeline while in the loop (especially noticable when
28913           decoding the video inside the loop).
28915 2008-02-06  Chris Toshok  <toshok@ximian.com>
28917         * uielement.cpp (UIElement::FrontToBack): use the media state
28918         accessors, and don't exclude Buffering state - we could be
28919         buffering with a frame rendered.
28921 2008-02-06  Sebastien Pouliot  <sebastien@ximian.com>
28923         * shape.cpp|h: Keep track if a rectangle has radii or not.
28924         * uielement.h: Add a flag for radii
28926 2008-02-06  Chris Toshok  <toshok@ximian.com>
28928         * uielement.cpp (UIElement::FrontToBack): make sure
28929         media_element_get_current_state != NULL before we strcmp it.
28931 2008-02-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28933         * src.mdp: Updated.
28935 2008-02-06  Stephane Delcroix <sdelcroix@novell.com>
28937         * brush.cpp: fix the radialgradientbrush setup.
28939 2008-02-05  Chris Toshok  <toshok@ximian.com>
28941         * collection.cpp (Collection::EmitChanged): new method.  Emit the
28942         Changed event and then call closure->OnCollectionChanged.  Also
28943         replace all references to closure->OnCollectionChanged to
28944         EmitChanged.
28946         * collection.h (class Collection): add ChangeEventArgs struct, and
28947         an EmitChanged method declaration.
28949         * type.h.in, type.cpp.in (Type::~Type): no need to free all the
28950         events explicitly.
28951         (Type::HideEvent): remove the event name from the hash so it's
28952         inaccessible from javascript.
28953         (Type::RegisterEvent): use g_hash_table_new_full so we can specify
28954         a destroy function for keys instead of doing the _foreach in the
28955         dtor.
28956         (types_init_manually): add the #if 0 here instead of type.cpp.
28957         oops.
28958         (types_init_register_events): register a Changed event for
28959         Collections.
28961 2008-02-05  Jeffrey Stedfast  <fejj@novell.com>
28963         * downloader.cpp (Downloader::ll_downloader_get_response_file):
28964         Simplified by using the new ExtractFile utility function from
28965         utils.cpp.
28967         * font.cpp: Moved ExtractFile() and make_tmpdir() into utils.cpp
28969         * utils.cpp: New collection of utility functions.
28971 2008-02-05  Jeffrey Stedfast  <fejj@novell.com>
28973         * font.cpp: If a font is requested from a zip archive, extract the
28974         contents and try to figure out which font is the closest match to
28975         the one requested. Fixes bug #356044.
28977 2008-02-05  Chris Toshok  <toshok@ximian.com>
28979         * uielement.cpp (UIElement::FrontToBack): enable the rectangle
28980         code, and make sure to round in the bounds we're subtracting.
28981         this was causing the flashing white border on silverlight.net/fox.
28983 2008-02-05  Sebastien Pouliot  <sebastien@ximian.com>
28985         * shape.cpp: Use existing MIN macro. Use local variables when
28986         available.
28988 2008-02-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28990         * fullscreen.cs, fullscreen.sh: Tool to generate fullscreen.h
28992 2008-02-05  Chris Toshok  <toshok@ximian.com>
28994         * runtime.h, runtime.cpp: add support for a "selected" element
28995         when in debug mode.  Also, make use of the Region methods instead
28996         of using region->gdkregion, which is private now.
28998 2008-02-05  Chris Toshok  <toshok@ximian.com>
29000         * region.h, region.cpp (class Region): add Offset().
29002 2008-02-05  Sebastien Pouliot  <sebastien@ximian.com>
29004         * geometry.cpp|h: PathGeometry does a Build (not a Draw) to 
29005         populate it's moon_path (like others) so the data can always be 
29006         used.
29007         * moon-path.c|h: Add moon_get_origin to get the minimal X and Y
29008         from a moon_path (Stephane) and moon_merge to merge a subpath into
29009         a main path.
29011 2008-02-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29013         * pipeline-ffmpeg.cpp: Remove another printf.
29015 2008-02-02  Jeffrey Stedfast  <fejj@novell.com>
29017         * pipeline.cpp (FileSource::Peek): Only memmove() if we have data
29018         to move.
29019         (FileSource::Peek): Slightly better fix.
29021 2008-02-01  Jeffrey Stedfast  <fejj@novell.com>
29023         * pipeline.cpp (Mp3Demuxer::GetPositionOfPts): Reimplemented to
29024         estimate the stream position if not known rather than reading data
29025         to find out as we don't have to return an exact stream position.
29027 2008-02-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29029         * pipeline.h: Update comment.
29031 2008-02-01  Stephane Delcroix  <sdelcroix@novell.com>
29033         * uielement.h:
29034         * shape.h:
29035         * shape.cpp: rename GetOringin into GetOriginPoint
29037         * brush.cpp: implement a bad origin computation (based on bounds)
29038         for Shape::Path
29040 2008-02-01  Jeffrey Stedfast  <fejj@novell.com>
29042         * pipeline.cpp (Mp3Demuxer::GetPositionOfPts): Implemented.
29043         (FileSource::Peek): As before, only read as much as we need - but
29044         don't clobber what we had prebuffered, only clobber as much as w
29045         need to in order to make room for the new data - this way we make
29046         it more efficient to seek backward later (if need be).
29048 2008-02-01  Stephane Delcroix  <sdelcroix@novell.com>
29050         * shape.h:
29051         * shape.cpp: define GettOrigin at the Shape level, compute GetOrigin
29052         from the path data instead of from bounds.
29054         * brush.cpp: translate the brushes with a translation matrix.
29056 2008-02-01  Larry Ewing  <lewing@novell.com>
29058         * brush.cpp: Make sure we use the brush opacity when computing the
29059         color stops.
29061 2008-02-01  Jeffrey Stedfast  <fejj@novell.com>
29063         * pipeline.cpp (FindMpegHeader): Now checks for Xing and
29064         Fraunhofer VBRI headers.
29066 2008-01-31  Chris Toshok  <toshok@ximian.com>
29068         * uielement.h: include region.h
29070         * point.h: don't assume the right headers have been included
29071         before this file - include glib.h to make sure
29072         G_BEGIN_DECLS/G_END_DECLS is there.
29074         * region.h, region.cpp: split out the region code from
29075         rect.h/rect.cpp.
29077         * rect.h, rect.cpp: remove region code.
29079         * Makefile.am: add region.h/region.cpp
29081 2008-01-31  Chris Toshok  <toshok@ximian.com>
29083         * runtime.h, runtime.cpp: remove runtime_cairo_region (we can just
29084         use Region::Draw instead).
29086         * panel.cpp: remove references to runtime_cairo_region, and switch
29087         to the new Region* copy ctor.  also, use Region::IsEmpty instead
29088         of gdk_region_empty.
29090         * uielement.cpp: more region cleanup, removing references to
29091         GdkRegion in favor of our Region class.  Also, commit (ifdef'ed
29092         out until the rendering glitch is fixed) the rectangle back to
29093         front special case code.
29095 2008-01-31  Chris Toshok  <toshok@ximian.com>
29097         * rect.cpp (Region::Region): new overload which takes a Region*,
29098         so we don't have to access ->gdkregion everywhere when we copy a
29099         region.
29101         * rect.h (struct Rect): add a GrowBy method that takes both x and
29102         y deltas, and have the 1 parameter version call it.
29103         (class Region): add a copy ctor that takes a Region*.
29105 2008-01-31  Chris Toshok  <toshok@ximian.com>
29107         * panel.h, panel.cpp: rename use_back_to_front to UseBackToFront
29108         and add it to the class, protected so subclasses can get at it.
29110         * stylus.cpp (InkPresenter::PostRender): given the ordering
29111         required, we have to c&p some of Panel::PostRender here to render
29112         the children.  Chaining up to Canvas::PostRender at the start of
29113         the method would have caused the translucency/opacity mask code in
29114         UIElement::PostRender to be executed *before* we rendered our
29115         strokes.
29117 2008-01-31  Chris Toshok  <toshok@ximian.com>
29119         * stylus.h, stylus.cpp (InkPresenter::PostRender): rename
29120         RenderChildren to this, and chain up to Canvas::PostRender here,
29121         which will do the RenderChildren call if it needs to.
29123 2008-01-31  Chris Toshok  <toshok@ximian.com>
29125         * panel.cpp (Panel::FrontToBack): simplify this a bunch with
29126         Brush::IsOpaque.
29128         * brush.h (class Brush): remove GetTotalOpacity() which wasn't
29129         being used anywhere, and add IsOpaque() so that we can use it from
29130         the new front-to-back stuff (instead of duplicating code in Panel
29131         and Shape handling parts).
29133 2008-01-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29135         * media.cpp: Update.
29137 2008-01-31  Chris Toshok  <toshok@ximian.com>
29139         * media.cpp (MediaElement::MediaElement): fix build.
29140         (Image::Image): fix initialization order to quiet g++.
29142 2008-01-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29144         * mplayer.cpp, mplayer.h: Render: removed, not used. LoadVideoFrame:
29145           implemented again. Added an ugly caught_up_with_seek value, used to
29146           determine if video is late due to a seek, in which case it shouldn't
29147           show any frames (fixes #356053).
29148         * pipeline.cpp, pipeline.h: Added IMediaDecoder::CleanState and
29149           HasDelayedFrame.
29150         * pipeline-ffmpeg.cpp: Implemented FfmpegDecoder::CleanState and
29151           HasDelayedFrame. Use a mutex to serialize access to avcodec_open.
29152         * pipeline-ffmpeg.h: Implemented FfmpegDecoder::CleanState and
29153           HasDelayedFrame.
29155 2008-01-31  Jeffrey Stedfast  <fejj@novell.com>
29157         * pipeline.cpp (mpeg_parse_samplerate): Doh, need to bitshift the
29158         value.
29159         (FindMpegHeader): Now takes an MpegFrameHeader argument, no sense
29160         having our caller re-parse the header.
29161         (Mp3Demuxer::ReadHeader): Updated.
29163 2008-01-31  Stephane Delcroix  <sdelcroix@novell.com>
29165         * brush.cpp: apply the correct offset to RadialGradientBrushes too.
29167 2008-01-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29169         * clock.h: Added macros to convert between pts, milliseconds and timespans.
29170         * media.cpp, media.h: MediaElement: Updated to normalized pts (starting at
29171           0). Use the new macros when converting between time formats. Remove the
29172           AdvanceFrame timeout upon reinitialization. Implement a better buffering
29173           algorithm (and honor the BufferingTime property).
29174         * mplayer.cpp, mplayer.h: Remove initial_pts, everything coming from the
29175           pipeline is now normalized to start at 0. Use the new macros when
29176           converting between time formats.
29177         * pipeline.cpp, pipeline.h: Normalize all pts to start at 0, and remove
29178           start_time/initial_pts handling. Added Demuxer::GetPositionOfPts to
29179           estimate the position of a pts. ProgressiveSource::CancelWait: only
29180           cancel if we're waiting, and then wait until actually cancelled.
29182 2008-01-31  Stephane Delcroix  <sdelcroix@novell.com>
29184         * shape.cpp:
29185         * shape.h: GetOrigin for Polyline and Polygon
29187 2008-01-31  Stephane Delcroix  <sdelcroix@novell.com>
29189         * uielement.h: add a GetOrigin ()
29191         * shape.cpp:
29192         * shape.h: implement GetOrigin for Path
29194         * brush.cpp: use GetOrigin as offset, fix the Crystal test.
29196 2008-01-30  Chris Toshok  <toshok@ximian.com>
29198         * mplayer.h (class MediaPlayer): add rendered_frame.
29200         * mplayer.cpp (MediaPlayer::MediaPlayer): init rendered_frame to
29201         false.
29202         (MediaPlayer::Close): reset rendered_frame.
29203         (render_frame): set rendered_frame to true if we've successfully
29204         copied data into the video surface.
29206         * media.cpp (Image::CreateSurface): set CachedSurface::has_alpha
29207         to the pixbuf's has_alpha if USE_OPT_RGB24.
29209         * media.h (class Image): make the CachedSurface type and the
29210         instance field "surface" public, so the front to back stuff can
29211         get at it.  Also, add "has_alpha" to it, since once the xlib
29212         surface has been created, we lose that information.
29214         * control.cpp (Control::FrontToBack): nothing to do but call
29215         FrontToBack on real_object.
29217         * control.h (class Control): add override for FrontToBack.
29219         * panel.cpp (Panel::FindStartingElement): get rid of this crap.
29220         it was broken and the wrong way to implement it.
29221         (Panel::Render): remove the RenderChildren call here, we do it in
29222         PostRender (and only if we're not rendering front to back)
29223         (Panel::PostRender): if we aren't rendering front to back, call
29224         RenderChildren.
29225         (Panel::RenderChildren): remove references to FindStartingElement.
29226         (Panel::FrontToBack): this method is a little more complicated
29227         than UIElement::FrontToBack owing to the fact that we're
29228         flattening things to a list.  We need to prepend a "cleanup node"
29229         first, before calling FrontToBack on our children, to do the
29230         Panel::PostRender stuff after our children have been rendered.  We
29231         remove this cleanup node if none of the children have added
29232         themselves to the list, and our bounds (without the children)
29233         don't intersect the expose region.  We apply the same logic to
29234         removing our rectangular bounds as the UIElement code does, but
29235         also have to take into account our background brush.  We punt if
29236         any part of it is transparent, and only handle SolidColorBrush and
29237         GradientBrush subclasses.
29239         * panel.h (class Panel): override UIElement:: FrontToBack,
29240         PreRender, and PostRender.
29242         * uielement.cpp (UIElement::DoRender): factor out most of the guts
29243         of this method so it can be used in either front-to-back or
29244         back-to-front.  Make sure to pass "false" as the front-to-back arg
29245         for PreRender and PostRender.
29246         (UIElement::FrontToBack): calculate the intersection of the expose
29247         region and our bounds.  Add this region to the front of the render
29248         list, and then do some calculating to decide if we should remove
29249         it from consideration by elements lower than us in the display.
29250         Things like "are we opaque", "have we been rotated or skewed, such
29251         that our rectangular shape no longer fills the bounds entirely",
29252         stuff like that.  We further limit subtracting in element type
29253         specific ways - right now just for MediaElement and Image with
29254         certain constraints (images can't have alpha, media elements must
29255         have a frame rendered, both types must fill their rectangle, etc).
29256         If everything passes, we remove our bounds from the expose region.
29257         (UIElement::PreRender): new method, do the things that DoRender
29258         used to do before calling Render.
29259         (UIElement::PostRender): new method, do the things that DoRender
29260         used to do after calling Render.
29262         * uielement.h: move the IS_TRANSLUCENT/IS_INVISIBLE #defines here
29263         so they can be used in panel.cpp.  Also, add 3 new virtual
29264         methods (FrontToBack, PreRender, PostRender) as well as two
29265         callback methods to invoke the 2 latter ones.
29267         * runtime.cpp (overrides): add "render=ftb" and "render=btf"
29268         overrides (with btf the default) corresponding to
29269         RUNTIME_INIT_RENDER_FRONT_TO_BACK.
29270         (Surface::Paint): add support for front-to-back rendering.  If
29271         it's enabled, make a FrontToBack pass on the fullscreen message
29272         and the toplevel element.  This populates the render list with a
29273         back to front ordered list of elements to paint, along with the
29274         regions they need repainted.  If the render list is empty for some
29275         reason (or if the user didn't select ftb rendering), we fall back
29276         to back to back-to-front rendering at the toplevel.
29277         (RenderNode::RenderNode): add ctor/dtor for RenderNode.
29279         * runtime.h: add the RenderNode class, used by the front to back
29280         rendering.
29282         * rect.h, rect.cpp: add IsEmpty() and two overloads of Subtract()
29283         to Region.
29285 2008-01-30  Jackson Harper  <jackson@ximian.com>
29287         * xaml.cpp: Strip leading whitespace from xaml files.
29288         
29289 2008-01-30  Jackson Harper  <jackson@ximian.com>
29291         * xaml.cpp: Handle more names for the default namespace.
29293 2008-01-30  Jackson Harper  <jackson@ximian.com>
29295         * xaml.cpp: Add support for ucs4.
29297 2008-01-29  Jackson Harper  <jackson@ximian.com>
29299         * xaml.cpp: pull in unistd.h
29301 2008-01-29  Jackson Harper  <jackson@ximian.com>
29303         * xaml.cpp: Properly handle utf-16, converting it to utf-8 so
29304         expat doesn't choke.
29306 2008-01-28  Chris Toshok  <toshok@ximian.com>
29308         * brush.cpp (VisualBrush::SetupBrush): RoundOut doesn't update
29309         inplace, it returns the new rect.
29311         * uielement.cpp (UIElement::DoRender): same change.
29313 2008-01-28  Jeffrey Stedfast  <fejj@novell.com>
29315         * pipeline.cpp (FindMpegHeader): Validate that the sequence is
29316         actually an mpeg frame header by parsing it and calculating its'
29317         length and checking that another frame header starts where we
29318         expect it.
29319         (Mp3DemuxerInfo::Supports): We need to use FindMpegHeader() here
29320         too.
29322 2008-01-28  Jeffrey Stedfast  <fejj@novell.com>
29324         * pipeline.cpp (FindMpegHeader): Scan over binary garbage and find
29325         an MPEG sync header.
29326         (Mp3Demuxer::ReadHeader): Use FindMpegHeader() and also use
29327         IMediaSource's new GetSize() method to help calculate media
29328         duration as opposed to seeking to the end.
29330 2008-01-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29332         * media.cpp, media.h: Open the media async.
29333         * pipeline.cpp, pipeline.h: Add and implement OpenAsync.
29335 2008-01-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29337         * media.cpp: MediaElement::AdvanceFrame: Only stop if the media player
29338           reached eof and couldn't advance.
29339         * mplayer.cpp, mplayer.h: Add a seeking flag, allows us to skip frames we
29340           get while we're waiting for a seek to happen. Implement a better pause
29341           algorithm, the previous one was flawed and dead-locked once in a while.
29342         * pipeline.cpp, pipeline.h: Media: Add a callback to async seek. ASFDemuxer:
29343           Create one frame reader for each stream.
29345 2008-01-27  Jeffrey Stedfast  <fejj@novell.com>
29347         * media.cpp (MediaElement::UpdateProgress): Check (pos +
29348         buffering_size) > size, not < size. Duh.
29350         * pipeline.cpp: IMediaDemuxer ctors now take an IMediaSource
29351         argument to use in place of media->GetSource().
29352         (Media::Open): Don't set this->source unless we successfully open
29353         the source.
29355 2008-01-26  Jeffrey Stedfast  <fejj@novell.com>
29357         * media.cpp (MediaElement::TryOpen): In the DownloadComplete case,
29358         set the state to Buffering so that calling Play() will actually
29359         start playing the media (if the file was local, then we'll be in
29360         the Opening state which means that calling Play() will only note
29361         that a Play action was requested, but won't actually play the
29362         media).
29363         (MediaElement::SetState): Don't check for downloaded_file == NULL,
29364         it might fail in the above case.
29366 2008-01-26  Jackson Harper  <jackson@ximian.com>
29368         * xaml.cpp: Set the encoding when we are reading files also.
29370 2008-01-25  Jeffrey Stedfast  <fejj@novell.com>
29372         * pipeline.cpp (WaitForPosition): Only update wait_pos if it is
29373         greater than the current wait_pos.
29375         * media.cpp (UpdateProgress): Use the buffering_start position
29376         rather than the current write position to calculate buffer_size.
29378 2008-01-25  Jeffrey Stedfast  <fejj@novell.com>
29380         * media.cpp (TryOpen): When download is complete and we
29381         successfully open the media, don't set the state to Paused - this
29382         breaks Halo3 if the video is cached.
29384         * media.cpp|h: Consolidated all of the bool state variables into a
29385         single bitfield.
29387 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29389         * pipeline.h, pipeline.cpp: ProgressiveSource: Make the position we're
29390           waiting for publicly available.
29391         * media.cpp: UpdateProgress: use the position the file is waiting for to
29392           calculate the buffer size (if it would exceed the default buffer size).
29394 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29396         * media.h: Add some descriptive comments.
29398 2008-01-25  Sebastien Pouliot  <sebastien@ximian.com>
29400         * shape.cpp: Merge UIElement::InsideClip inside Shape::InsideObject
29401         instead of calling it since it can reduce some heavy cairo calls 
29402         (cairo_in_*), if there's a clip, otherwise it won't affect 
29403         performance.
29405 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29407         * media.cpp: Initialize play_pending, and when buffering is
29408           finished, only play if autoplay or play_pending is true.
29410 2008-01-25  Jeffrey Stedfast  <fejj@novell.com>
29412         * mplayer.cpp: Get rid of some unused variables and cleaned up
29413         some code.
29415 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29417         * pipeline.cpp, media.cpp: More printfs removed.
29419 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29421         * src.mdp: Updated.
29423         * pipeline-ffmpeg.cpp: Commented out printf.
29425         * pipeline.h, pipeline.cpp: Removed some dead code. Made all
29426         interfaces inherit from IMediaObject, and put the media field
29427         there. Commented out printfs.
29429         * mplayer.h, mplayer.cpp: Unified Mute and UnMute into SetMuted to
29430         simplify code a bit. Encapsulated target_pts handling into
29431         separate methods.
29433         * media.h, media.cpp: Create one and only one MediaPlayer for the
29434         life-time of the MediaElement. If not AutoPlay is set, then pause
29435         instead of play.
29437 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29439         * pipeline.cpp, pipeline.h: Media: Don't create the worker thread upon first
29440           usage, but on construction, and finish it upon destruction. Fixes race
29441           between creating and destructing the thread.
29443 2008-01-24  Chris Toshok  <toshok@ximian.com>
29445         * stylus.cpp (Stroke::HitTestEndcapSegment): implement.
29446         (calc_perpendicular_intersection_points): new method.
29447         (Stroke::HitTestSegmentSegment): use
29448         calc_perpendicular_intersection_points to give us the end points
29449         of the outer line segments, and use those for hit testing.
29451 2008-01-24  Jeffrey Stedfast  <fejj@novell.com>
29453         * media.cpp (UpdateProgress): When switching to Buffering mode,
29454         save the position where we're currently at in the file so that we
29455         can use that as a reference point when calculating progress. Also,
29456         pause the MPlayer so that audio won't continue to play while we're
29457         waiting for buffering to complete. Fixes bug #356051.
29459 2008-01-24  Sebastien Pouliot  <sebastien@ximian.com>
29461         * shape.cpp: Avoid calls to cairo_in_[stroke|fill] if no stroke 
29462         (or fill) are present for the shape.
29464 2008-01-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29466         * pipeline.cpp, pipeline.h: Create a more general worker thread,
29467         and use unions to save some space in WorkItem. In the ASFDemuxer,
29468         when seeking, we need to seek to the audio stream, since that's
29469         what we're using to sync against (if we have audio).
29470           
29471         * list.cpp, list.h: Added List::InsertBefore.
29473 2008-01-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29475         * media.cpp: MediaElement::SetSource: only trigger the download
29476         after we've attached to the CompletedEvent.
29478 2008-01-23  Chris Toshok  <toshok@ximian.com>
29480         * runtime.cpp (Surface::HandleMouseEvent): don't crash when we
29481         re-enter HandleMouseEvent, which can happen when that stupid JS
29482         timeout dialog pops up.
29484 2008-01-23  Chris Toshok  <toshok@ximian.com>
29486         * runtime.cpp (Surface::SetMouseCapture): this fails not only if
29487         there's an existing capture, but also if there's a pending
29488         capture (so if both a parent and child capture on the same event,
29489         the child gets it.)  Fixes dragging things around in ink journal.
29491 2008-01-23  Chris Toshok  <toshok@ximian.com>
29493         * stylus.cpp, stylus.h: initial hit testing stuff.  right now the
29494         only tests that are implemented are endcap (ellipse) vs. point,
29495         and segment vs. segment (although this one isn't the full test, as
29496         we're using the stroke line, as opposed to the exterior lines
29497         created by the ellipse pen tracing that line).
29499         * rect.h: add PointInside (Point p).
29500         
29501 2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
29503         * pipeline-ffmpeg.cpp: Don't #include "asf/asf-ffmpeg.h" anymore,
29504         it's no longer part of the build.
29506 2008-01-23  Sebastien Pouliot  <sebastien@ximian.com>
29508         * shape.cpp|h: Add support for different PenLineCap on Line (part 
29509         of #345888). Fix Polyline when a single segment is used (removed 
29510         TODO). Avoid extra work when a start/end PenLineCap is Flat (default)
29512 2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
29514         * media.cpp (SetSource): Initialize the ProgressiveSource.
29516         * pipeline.cpp (ProgressiveSource::Seek): Simplified by calling
29517         parent class's implementation.
29519 2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
29521         * pipeline.cpp|h: ProgressiveSource now inherits from FileSource.
29523 2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
29525         * pipeline.cpp (FileSource::Read): Optimized a bit more for cases
29526         where the caller is trying to read a block larger than our
29527         internal buffer.
29528         (FileSource::Seek): Fixed 'n' to be an int64_t rather than a
29529         uint64_t (which is needed in the case of seeking backwards).
29531 2008-01-22  Larry Ewing  <lewing@novell.com>
29533         * shape.cpp, shape.h: Move the stretch logic out of geometry.cpp
29534         and into Path.cpp as a transform not by modifying the data.
29536         * geometry.cpp, geometry.h: remove stretch logic.
29538 2008-01-22  Jeffrey Stedfast  <fejj@novell.com>
29540         * pipeline.cpp (FileSource::Seek): Also optimize seeking backwards
29541         if within our pre-buffered bounds.
29542         (ProgressiveSource::Write): When restoring position state, use the
29543         proper offset (e.g. the offset of the end of our pre-buffered
29544         block).
29546 2008-01-22  Chris Toshok  <toshok@ximian.com>
29548         * collection.cpp (UIElementZIndexComparer): the magnitude of the
29549         return value doesn't matter, only the sign.
29551 2008-01-22  Chris Toshok  <toshok@ximian.com>
29553         * media.cpp (Image::InsideObject): if we have no surface (the
29554         image hasn't been loaded), we aren't HitTestVisible.
29556         * media.h (class Image): add InsideObject override.
29558 2008-01-22  Chris Toshok  <toshok@ximian.com>
29560         * panel.cpp (Panel::OnCollectionChanged): remove the fix for
29561         #353954 as its redundant after the previous commit.
29563 2008-01-22  Chris Toshok  <toshok@ximian.com>
29565         * garray-ext.cpp (bsearch): fix this so the g_array_insert_sorted
29566         function works.
29568 2008-01-22  Jeffrey Stedfast  <fejj@novell.com>
29570         * media.cpp (TryOpen): Don't leak Media objects. Also make sure to
29571         call Initialize() on the file source.
29573         * pipeline.cpp (IMediaSource): Read() now returns the number of
29574         bytes read rather than true/false and does nto guarantee that all
29575         of the data was read. Added a ReadAll() method which does what the
29576         old Read() method did.
29577         (FileSource): Rewritten to do our own buffering which allows for
29578         nice optimizations for Peek() and Seek().
29579         (ProgressiveSource): Also rewritten.
29581         * asf/asf.cpp: Updated to use IMediaSource::ReadAll()
29583         * asf/asf-guids.h: Moved all of the guids into asf-guids.cpp and
29584         just made them extern in the ehader, this way we don't duplicate
29585         those values in each source file that includes this header.
29587 2008-01-22  Sebastien Pouliot  <sebastien@ximian.com>
29589         * shape.cpp|h: First part of DoDraw refactoring. Pass all 
29590         regression tests from harness (moon versus moon) but it's possible
29591         that some degenerated cases (without test cases) regress.
29593 2008-01-22  Larry Ewing  <lewing@novell.com>
29595         * clock.cpp: initalize the smoothing to max framerate, the first
29596         frame is quite likely the slowest frame we'll ever draw.  Bump
29597         error delta back up to 1/50th.
29599 2008-01-22  Chris Toshok  <toshok@ximian.com>
29601         * media.cpp (MediaElement::Render): a little cairo cleanup, and
29602         remove the USE_OPT_REGION_CLIP block.
29604 2008-01-22  Andrew Jorgensen  <ajorgensen@novell.com>
29606         * pipeline.cpp: include unistd.h, fixes a build error introduced in
29607         r93311 when building without-ffmpeg
29609 2008-01-22  Larry Ewing  <lewing@novell.com>
29611         * clock.cpp: reduce delta to 1/100 of a second and fix a bug in
29612         previous commit.
29614 2008-01-22  Larry Ewing  <lewing@novell.com>
29616         * clock.cpp: Tweak clock timing and smoothing.  Increase timer
29617         priority so that ticks get deliver when we want them this doesn't
29618         change the smoothing calculation but it can raise the actual fps
29619         by assuring all our clocks are delivered.  Change smoothing alpha
29620         from 0.3 to 0.03 to improve noise immunity.  Don't reset the timer
29621         unless our new calculated timeout differs from our old by at least
29622         1/50 of a second.  Resetting the clock on every tick had the
29623         effect adding the drawing time to the tick time for every tick
29624         since the timeout starts over at zero.
29626 2008-01-21  Jeffrey Stedfast  <fejj@novell.com>
29628         * pipeline.cpp (Mp3FrameReader::ReadFrame): If the bitrate was
29629         unspecified, encode the bitrate back into the header so that if we
29630         are using the NullMp3Decoder, it will know how to handle
29631         it. Probably also needed for any actual Mp3 decoders as well since
29632         it won't reliably be able to keep track of variable-bitrate
29633         streams otherwise since it wouldn't know if/when we seek.
29634         (NullMp3Decoder::DecodeFrame): Implemented.
29636 2008-01-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29638         * pipeline.cpp: Remove printf.
29640 2008-01-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29642         * src.mdp: Remove mplayer2.cpp from here too.
29644 2008-01-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29646         * mplayer.cpp, mplayer2.cpp, Makefile.am: Deleted mplayer.cpp and moved
29647           mplayer2.cpp to mplayer.cpp.
29649 2008-01-21  Jeffrey Stedfast  <fejj@novell.com>
29651         * downloader.cpp (ll_downloader_get_response_file): Fixed to use
29652         mkstemp() rather than tmpnam_r() and also simplified.
29654         * pipeline.cpp: Fixed various things about the progressive stream.
29656 2008-01-19  Jeffrey Stedfast  <fejj@novell.com>
29658         * mplayer2.cpp (audio_play): Get rid of the 'play' argument. Also
29659         don't memmove() data unless we don't have enough to play a single
29660         frame. Instead, what we'll do is keep progressing audio->outbuf as
29661         we play it.
29663 2008-01-19  Chris Toshok  <toshok@ximian.com>
29665         * uielement.cpp (UIElement::OnPropertyChanged): remove the
29666         handling of TriggersProperty and ResourcesProperty's closure.
29668         * trigger.cpp, trigger.h: remove EventTrigger's OnPropertyChanged
29669         method.
29671         * transform.cpp (TransformGroup::OnPropertyChanged): remove
29672         handling of ChildrenProperty's closure.
29674         * text.cpp, text.h: remove Run::OnPropertyChanged, and also remove
29675         the handling of Inlines->closure from TextBlock.
29677         * stylus.cpp, stylus.h: remove a couple of OnPropertyChanged
29678         methods (InkPresenter and Stroke).
29680         * panel.cpp (Panel::OnPropertyChanged): remove handling of the
29681         ChildProperty's closure here.
29683         * media.cpp, media.h: remove the unnecessary
29684         MediaBase::OnPropertyChanged.
29686         * geometry.cpp, geometry.h: remove a few OnPropertyChanged
29687         methods (GeometryGroup, PathGeometry, and PathSegment.)
29689         * clock.cpp, clock.h: remove TimelineGroup::OnPropertyChanged.
29691         * brush.cpp, brush.h: remove the unnecessary
29692         Brush::OnPropertyChanged and GradientBrush::OnPropertyChanged.
29694         * animation.cpp, animation.h: remove all the
29695         *AnimationUsingKeyFrames::OnPropertyChanged methods, since all
29696         they did was deal with collection closures.
29698         * dependencyobject.cpp (DependencyObject::SetValue): factor out
29699         the "collection->closure" setting code from all the
29700         OnPropertyChanged methods sprinkled around and put it here.  Also,
29701         set collection->closure to NULL on the old value (something the
29702         old code didn't do).
29704 2008-01-19  Chris Toshok  <toshok@ximian.com>
29706         * animation.cpp: the remaining macros (SET_NULLABLE_FUNC and
29707         NULLABLE_{PRIM_}GETSET_IMPL) are moved here, right before their
29708         use.
29710         * animation.h: clean this file up by removing all those disgusting
29711         macros.  for the DECL macros, just expand them here, as having the
29712         methods listed in the class declaration is a good thing.
29714         * collection.cpp (collection_new): remove the switch statement
29715         from here and use Type::CreateInstance instead.  this largely
29716         removes the need to be including extra headers (like animation.h).
29718 2008-01-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29720         * media.cpp, mplayer.cpp, mplayer2.cpp, Makefile.am, pipeline.h: Remove all
29721           MOON_MEDIA ifdefs and completely disable the old mplayer.cpp
29722         * src.mdp: Updated.
29724 2008-01-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29726         * media.h, media.cpp: MediaElement: make this a state machine to follow the
29727           behaviour specified in MSDN. Implement buffering of media files.
29728           MediaSource (and derived): take a IMediaSource instead of a filename.
29729         * mplayer.h, mplayer2.cpp: Make Open take a Media instead of a filename.
29730           Remove all MOON_MEDIA ifdefs, too many changes to support both versions
29731           now. Make seeking async.
29732         * pipeline.cpp, pipeline.h: Changed the FrameReaderLoop into a more general
29733           worker thread, seeking can now be done there too. Implement
29734           ProgressiveSource.
29735         * playlist.cpp: Change IsPlaylistFile to peek the file instead of checking
29736           the file extension. MediaSource (and derived): take a IMediaSource
29737           instead of a filename.
29738         * playlist.h: MediaSource (and derived): take a IMediaSource instead of a
29739           filename.
29741 2008-01-18  Larry Ewing  <lewing@novell.com>
29743         * uielement.cpp: compute total_opacity for invalidation logic but
29744         use local_opacity for drawing.  This fixes monotones grid.xaml and
29745         some hit test regressions.
29747 2008-01-18  Jackson Harper  <jackson@ximian.com>
29749         * xaml.cpp: KeyFrameCollections can be specified in the xaml if
29750         they are in a property element.
29751         - When searching for collections, use is subclass instead of
29752         making them be the same type, so derivied collections can be used.
29753         
29754 2008-01-17  Chris Toshok  <toshok@ximian.com>
29756         * pipeline.h (class IMediaDemuxer): initializer streams and
29757         stream_count so we don't crash on ltbennett.com.
29759 2008-01-17  Jeffrey Stedfast  <fejj@novell.com>
29761         * pipeline.cpp (Mp3FrameReader::ReadFrame): If we fail to read an
29762         MPEG header, set MediaFrame->event to EOF. Same if we can't read
29763         the frame data.
29764         (Media::GetNextFrame): Don't try to decode the frame if it is an
29765         event.
29766         (ASFDemuxer::ReadFrame): If we reach EOF, set MediaFrame->event to
29767         EOF.
29769         * mplayer2.cpp (media_player_callback): pts is allowed to be 0.
29770         (AdvanceFrame): Handle EOF frame events.
29771         (audio_loop): Handle EOF frame events.
29773 2008-01-17  Chris Toshok  <toshok@ximian.com>
29775         * stylus.cpp (InkPresenter::OnCollectionChanged): we need to
29776         invalidate the old bounds of the stroke for ItemRemoved as well as
29777         ItemChanged.
29779 2008-01-17  Chris Toshok  <toshok@ximian.com>
29781         * rect.h (Rect::Transform): new method, allows for transforming a
29782         rectangle by a cairo_matrix_t, used with transforming the stroke
29783         bounds back to screen space using the InkPresenter's
29784         absolute_xform.
29786         * stylus.cpp, stylus.h: deal with collection changed notifications
29787         on Stroke::StylusPointsProperty and on
29788         InkPresenter::StrokesProperty, and correctly invalidate a stroke's
29789         bounds.  The bounds of a stroke needs to be looked at - right now
29790         it's in the coordinate space of the InkPresenter, and so it needs
29791         to be transformed back to screen space before invalidating.  Need
29792         to check if MS uses screen space for a stroke's bounds (seems
29793         likely they do, but this was easier to code.)
29795 2008-01-17  Jeffrey Stedfast  <fejj@novell.com>
29797         * mplayer2.cpp: Updated for MediaFrame changes.
29799         * pipeline-ffmpeg.cc: Updated for MediaFrame changes.
29801         * pipeline.cpp: Instead of having a compressed_data and
29802         uncompressed_data field, simply have a 'buffer' field that gets
29803         reused by both the demuxer and the decoder. The decoder will set
29804         the buffer to the compressed data and the decoder will, once
29805         finished decoding, free the buffer and then update it to point to
29806         the decoded data. This reduces memory overhead.
29808 2008-01-17  Chris Toshok  <toshok@ximian.com>
29810         * uielement.cpp (UIElement::InsideClip): use
29811         uielement_transform_point instead of duplicating it.
29813         * shape.cpp (Shape::InsideObject): use uielement_transform_point
29814         instead of duplicating it.
29816         * text.cpp (TextBlock::InsideObject): use
29817         uielement_transform_point instead of duplicating it.
29819 2008-01-17  Larry Ewing  <lewing@novell.com>
29820         
29821         * shape.cpp (Rectangle::BuildPath): fix the origin calculation for
29822         unstroked rectangles (see test-rectangle-aliasing.xaml).  Suggest
29823         more rectangle testing after this.
29825 2008-01-17  Jackson Harper  <jackson@ximian.com>
29827         * xaml.cpp: After setting a property stop walking up the element
29828         tree.
29830 2008-01-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29832         * pipeline-ffmpeg.cpp: Comment out a couple of confusing printfs.
29834 2008-01-17  Jeffrey Stedfast  <fejj@novell.com>
29836         * mplayer2.cpp (audio_decode): Removed as it is no longer really
29837         needed.
29838         (audio_loop): We can't assume that an entire decoded audio packet
29839         will fit into the audio output buffer in a single shot, break it
29840         up if needed.
29842 2008-01-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29844         * mplayer2.cpp: Max out video frame rate at 60fps.
29846 2008-01-17  Fernando Herrera  <fherrera@novell.com>
29848         * panel.cpp: Reorder based on ZIndex when a new item is added.
29849         Fixes bug #353954
29851 2008-01-17  Larry Ewing  <lewing@novell.com>
29853         * runtime.cpp (Surface::InitializeDrawingArea): disable extended
29854         input devices until the remaining issues can be resolved.
29856 2008-01-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29858         * mplayer2.cpp, pipeline-ffmpeg.cpp: Plug a leak.
29860 2008-01-16  Larry Ewing  <lewing@novell.com>
29862         * uielement.cpp, uielement.h: 
29863         * panel.cpp, panel.h: 
29864         * collection.cpp, control.cpp: remove Compute/UpdateTotalOpacity.
29865         Combine the opacity visibility check into the total render
29866         visibility.  Make sure we compute/invalidate in all the same
29867         places.
29869         * dirty.cpp, dirty.h: remove all references to DirtyOpacity.
29871         * uielement.cpp (UIElement::DoRender): make sure we don't reset
29872         the coordinate system when setting up the clip calls in the
29873         opacity and opacity mask cases.  Go back to using the brush
29874         directly when rendering masks.  Should speed things up a little
29875         and fixes http://mycomix.wintellect.com/Spotlight.aspx?Item=1041
29877 2008-01-16  Chris Toshok  <toshok@ximian.com>
29879         * stylus.h, stylus.cpp: a few changes.  Move the
29880         StylusPointCollection and StrokeCollection classes here from
29881         collection.h/collection.cpp.  I didn't like the addition of
29882         stylus.cpp logic in two places.  Convert Stroke::GetBounds use use
29883         the new DrawingAttributes::ComputeBounds{WithoutDrawingAttributes}
29884         methods, and build up the bounds for the StrokeCollection by
29885         unioning all the Stroke bounds (these should be cached, but aren't
29886         yet.)  StrokeCollection::HitTest has been implemented, just
29887         looping over the strokes.  Stroke::HitTest is missing its guts at
29888         the moment, since hit testing is going to be a little bit of a
29889         pain for it.
29891         * collection.h, collection.cpp: remove StylusPointCollection and
29892         StrokeCollection.
29894 2008-01-16  Larry Ewing  <lewing@novell.com>
29896         * uielement.cpp, uielement.h: Rework the way we handle opacity to
29897         operate like the reference platform by removing the concept of
29898         TotalOpacity and instead using push/pop group and paint_with
29899         alpha.  See test-sibling-opacity.xaml for an example.  Handle
29900         clipping in DoRender rather than in every subclass because we want
29901         the clip path active before calling push/pop so that the temporary
29902         surface is bounded.
29903         * brush.cpp, panel.cpp: remove GetTotalOpacity references.
29904         * media.cpp, media.h: cleanup the complicated render logic now
29905         that things are handled in uielement.
29906         * shape.cpp, text.cpp: remove RenderClipPath calls.
29908         * rect.cpp, rect.h: add draw methods.
29910 2008-01-16  Jeffrey Stedfast  <fejj@novell.com>
29912         * pipeline.cpp: Implemented mpeg seeking support for
29913         Mp3FrameReader and, thusly, Mp3Demuxer.
29914         (Mp3Demuxer::ReadHeader): Calculate the duration of the stream.
29916 2008-01-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29918         * mplayer2.cpp: Remove a superfluous variable from Audio.
29920 2008-01-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29922         * mplayer2.cpp: Remove superfluous variables from Video.
29924 2008-01-16  Sebastien Pouliot  <sebastien@ximian.com>
29926         * moon-path.c: Fix typo (but was same value).
29928 2008-01-15  Jeffrey Stedfast  <fejj@novell.com>
29930         * pipeline.cpp: Implemented mp3 demuxer.
29932 2008-01-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29934         * mplayer2.cpp: Don't crash if Seek is called before Open.
29936 2008-01-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29938         * mplayer2.cpp: Remove dead code and variables, and only request
29939         audio/video frames if we have audio/video.
29941 2008-01-15  Jeffrey Stedfast  <fejj@novell.com>
29943         * mplayer2.cpp: Get rid of extra member variables in Packet.
29945 2008-01-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29947         * mplayer2.cpp: Implement audio decoding on the main thread as well.
29949 2008-01-14  Jeffrey Stedfast  <fejj@novell.com>
29951         * pipeline.cpp: Partially implemented an mp3 demuxer.
29953 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29955         * media.cpp, media.h, mplayer2.cpp, pipeline.cpp, pipeline.h: Make markers
29956           work again with the new pipeline.
29958 2008-01-14  Sebastien Pouliot  <sebastien@ximian.com>
29960         * shape.cpp|h: It looks like we stopped needing consider_fill a 
29961         while ago.
29963 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29965         * mplayer.h: We don't need io_tread anymore, so remove it.
29966         * mplayer2.cpp: We don't need io_tread anymore, so remove it. Add support
29967           for doing the decoding on the main thread with easy (in-code) switch.
29968           Comment out printfs, and remove dead/old/commented-out code.
29969         * pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp: Add support for doing the
29970           decoding on the main thread with easy (in-code) switch.
29971         * runtime.cpp: Don't print entire object tracking output if nothing leaked.
29973 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29975         * xaml.cpp: Unref a matrix object when we are done with it.
29976         * mplayer2.cpp: Remove printf.
29978 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29980         * mplayer2.cpp: Remove printfs.
29981         * pipeline.cpp, pipeline.h: Remove printfs and only print messages if they
29982           are errors.
29983         * pipeline-ffmpeg.cpp: Free context->extradata upon destruction.
29985 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29987         * pipeline.cpp: Fix crash with several web-sites (when seeking before
29988           reading anything).
29990 2008-01-11  Chris Toshok  <toshok@ximian.com>
29992         * clock.h (class Clock): add an instance
29993         field (calculated_natural_duration).
29995         * clock.cpp (Clock::ComputeBeginTime): don't include the parent's
29996         current time here.  this was inflating animation begin time's in
29997         some cases to be either very close to the parent's calculated
29998         duration (or even after it).
29999         (ClockGroup::ComputeBeginTime): don't chain up to
30000         Clock::ComputeBeginTime.  clock groups in our system need to
30001         include their parent time in their begin time.  There are only two
30002         levels of clockgroups - storyboards, and the clockgroup we have
30003         associated with a given surface (Which will be the parent of all
30004         the storyboards running on that surface.)
30005         (output_clock): print out the BeginTime of the clock.
30006         (TimeManager::AddChild): I don't really like this, but we need to
30007         force the calculation of the natural duration of the clock when
30008         it's added to the hierarchy.
30009         (ClockGroup::AddChild): same here.
30010         (Clock::Clock): don't calculate the natural duration of the clock
30011         here - when we instantiated a ClockGroup it was calculating the
30012         duration before the child clocks were added.
30014 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30016         * pipeline.cpp: Seek on the frame reader, not on the source.
30017         * mplayer2.cpp, mplayer.h: Change all use of audio/video->stream != NULL to
30018           HasAudio/Video (). Fix seeking to actually work.
30020 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30022         * mplayer2.cpp, mplayer.h: Move the media variable from audio/video into
30023           mplayer.h where it belongs.
30024         * pipeline.cpp, pipeline.h: Implement seeking.
30025         * pipeline-ffmpeg.cpp: Copy decompressed data instead of using ffmpeg's data
30026           directly, since ffmpeg uses one single memory location for all decoded
30027           frames, causing us to always show the last decoded frame.
30029 2008-01-11  Sebastien Pouliot  <sebastien@ximian.com>
30031         * shape.cpp: Add support for PenLineCapTriangle with a patched cairo.
30032         See bug #345892 for the required cairo patch.
30034 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30036         * media.cpp: Initialize Media too upon initialization.
30037         * pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp, pipeline-ffmpeg.h,
30038           mplayer2.cpp, mplayer.cpp: Implement registration of components, making
30039           it possible to completely remove ffmpeg.
30041 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30043         * pipeline.cpp: Remove stray character.
30045 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30047         * mplayer2.cpp, pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp,
30048           pipeline-ffmpeg.h: Code-cleanup.
30050 2008-01-10  Larry Ewing  <lewing@novell.com>
30052         * runtime.cpp (Surface::InitializeDrawingArea): realize the widget
30053         before setting the extension events (lame api) and disable the
30054         cursor test.
30056 2008-01-10  Chris Toshok  <toshok@ximian.com>
30058         * runtime.cpp (Surface::InitializeDrawingArea): activate all
30059         devices that have a cursor associated with them.
30061 2008-10-10  Andrew Jorgensen  <ajorgensen@novell.com>
30063         * pipeline.cpp: include config.h (fixes an ffmpeg-related build error)
30065 2008-01-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30067         * mplayer.cpp: Surround with ifdef to conditionally include the new
30068           MediaPlayer or not.
30069         * Makefile.am: Added pipeline* and mplayer2.cpp.
30070         * pipeline-ffmpeg.h, pipeline-ffmpeg.cpp: Added, support for using ffmpeg in
30071           the pipeline.
30072         * pipeline.cpp, pipeline.h: Added.
30073         * mplayer2.cpp: Added, a MediaPlayer that uses the new pipeline.
30075 2008-01-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30077         * panel.cpp: Delete leaked region.
30079 2008-01-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30081         * src.mdp: Added.
30083 2008-01-09  Chris Toshok  <toshok@ximian.com>
30085         * stylus.h, stylus.cpp, collection.h, collection.cpp: fix
30086         _get_bounds.
30088 2008-01-09  Chris Toshok  <toshok@ximian.com>
30090         * collection.h, collection.cpp: add C wrappers for
30091         StrokeCollection::GetBounds and ::HitTest.
30093         * stylus.h, stylus.cpp: same deal for Stroke::
30094         
30095 2008-01-09  Chris Toshok  <toshok@ximian.com>
30097         * collection.h, collection.cpp: add empty implementations of
30098         StrokeCollection::GetBounds and StrokeCollection::HitTest.
30100         * stylus.h, stylus.cpp: add empty implementations of
30101         Stroke::GetBounds and Stroke::HitTest.
30103 2008-01-09  Chris Toshok  <toshok@ximian.com>
30105         * uielement.h, uielement.cpp: change all the Emit* methods that
30106         deal with mouse events to take a GdkEvent instead of state/x/y,
30107         and also change their calldata to a heap allocated MouseEventArgs,
30108         which we unref after the emit.  This is because the pointer itself
30109         is wrapped by the managed MouseEventArgs, and will be unref'ed in
30110         ~MouseEventArgs at some later time.
30112         * runtime.h, runtime.cpp: change all the mouse events to pass
30113         around the actual GdkEvent instead of the state/x/y.  This is due
30114         to the fact that our MouseEventArgs class now wraps the GdkEvent,
30115         so we can get at all the stylus/extension event stuff.
30117         * stylus.h, stylus.cpp: remove stylus_get_current, as it's no
30118         longer required.  We correctly create a StylusInfo instance from
30119         the MouseEventArgs.
30121         * Makefile.am (libmoon_la_SOURCES): add eventargs.cpp
30122         (libmooninclude_headers): add eventargs.h
30124         * libmoon.h: add eventargs.h.
30126         * eventargs.h, eventargs.cpp: new files, splitting out the
30127         KeyboardEventArgs and MouseEventArgs from uielement.h, and flesh
30128         out MouseEventArgs, making it a refcounted object with enough
30129         smarts to handle both the managed case and plugin case.  Include
30130         all the stylus related code as well, so this *should* make all the
30131         stylus requiring demos work.
30133 2008-01-09  Jeffrey Stedfast  <fejj@novell.com>
30135         * geometry.cpp (path_get_bounds): My fix the other day wasn't
30136         quite ideal. Instead of using a 0.1 line thickness when the
30137         shape's StrokeThickness is 0, continue using that 0 thickness but
30138         use cairo_fill_extents() instead. Also, when shape is null, ise a
30139         0.0 thickness & cairo_fill_extents() as well.
30141         * shape.cpp (DoDraw): Removed the if (thickness == 0) optimization
30142         that breaks Paths with a StrokeThickness of 0. Fixes bug #352188.
30144         * runtime.cpp (EmitEventOnList): Changed to take double x,y
30145         coordinate arguments rather than int.
30146         (HandleMouseEvent): Same.
30148 2008-01-09  Jeffrey Stedfast  <fejj@novell.com>
30150         * list.cpp (List::~List): Added a dtor that deletes all nodes
30151         currently in the list. This is doable now that List::Nodes are
30152         classes where the node dtors can be overloaded.
30154 2008-01-09  Jackson Harper  <jackson@ximian.com>
30156         * xaml.cpp: If a property is a collection, don't assume that the
30157         collection is already initialized (they used to always be), and
30158         initialize the collection if needed. This fixes BNC 350893.
30160 2008-01-09  Stephane Delcroix  <sdelcroix@novell.com>
30162         * brush.cpp: fix (useless) derelativization for MappingmodeAbsolute
30163         on LinearGradientBrush. Fixes bnc 346308 and lineargrad.xml.
30165 2008-01-08  Chris Toshok  <toshok@ximian.com>
30167         * animation.cpp (Storyboard::Begin): simple change to fix a nasty
30168         bug.  we need to add the teardown handler before the completed
30169         handler.  otherwise cases where people were using a storyboard as
30170         a timer would break - the completed handler would fire, the JS
30171         would restart the storyboard, then the teardown handler would free
30172         the new clock hierarchy.  Fixes the page animation in pageturn,
30173         and gets the bubbles moving again in the SilverlightCLRBalls demo.
30175 2008-01-07  Jeffrey Stedfast  <fejj@novell.com>
30177         * geometry.cpp (path_get_bounds): Cairo seems to break if the line
30178         thickness is 0.0, so if the shape's thickness is set to 0.0, use
30179         0.1 like we do if shape is null. Fixes bug #351575.
30181 2008-01-07  Sebastien Pouliot  <sebastien@ximian.com>
30183         * shape.cpp|h: Add NeedsLineCaps and NeedsLineJoin so some shapes,
30184         that ignore those properties, can avoid setting them on the cairo
30185         context.
30187 2008-01-04  Chris Toshok  <toshok@ximian.com>
30189         * runtime.cpp: mostly switch all emit_* calls to take doubles, and
30190         pass doubles around for button x/y.
30191         (Surface::motion_notify_callback): if we're gtk > 2.12, use
30192         gdk_event_request_motions (falling back to gdk_window_get_pointer
30193         if not).  also, we can use the mouse_event_x/y from the event,
30194         even when it's a hint.
30196         * runtime.h: switch back to using doubles for everything mouse
30197         event related.  Change MoonlightEventEmitFunc to take doubles.
30199 2008-01-04  Jeffrey Stedfast  <fejj@novell.com>
30201         * runtime.cpp|h: Make mouse_event_x/y ints rather than doubles
30202         since the events that use them want them as ints anyway.
30203         (button_release_callback): Cast the button->x/y doubles to int.
30204         (button_press_callback): Same.
30205         (motion_notify_callback): Cast event->x/y to int.
30206         (crossing_notify_callback): Same.
30208         * dependencyobject.cpp: EventObjects now use a List class for
30209         event_lists rather than GSList which is far more costly for
30210         appends.
30211         (Emit): Reduce the number of linked-list iterations from 5 to 2.
30213 2008-01-04  Chris Toshok  <toshok@ximian.com>
30215         * runtime.h, runtime.cpp: completely overhaul the way we handle
30216         mouse events.  Instead of doing both hit testing and event
30217         dispatch in one recursive tree traversal, we build up a list of
30218         all elements that will bubble the event, and then use that list
30219         along with the previous one to generate Enter/Leave events for the
30220         elements that require it.  Also fix the way capture is done (it's
30221         not handled until the end) and fix the Enter event dispatch when
30222         you release mouse capture.
30224         * uielement.h, uielement.cpp: rename the mouse events to match the
30225         names used in C# and JS, as it's been singularly annoying to
30226         remember that ButtonPressEvent -> MouseLeftButtonDown, etc.  Also
30227         rename all the Handle* event methods to Emit*, as that's all they
30228         do.  Make them nonvirtual, as the traversal and emission of the
30229         events now happens in runtime.cpp.  Add a new virtual
30230         method (HitTest), that is overridden by the container elements,
30231         which appends elements that are going to bubble the event to the
30232         list.
30234         * panel.h, panel.cpp: remove all the Handle* methods, implement
30235         HitTest.
30237         * control.h, control.cpp: remove all the Handle* methods,
30238         implement HitTest.
30240 2008-01-04  Jeffrey Stedfast  <fejj@novell.com>
30242         * media.cpp (UpdateProgress): Don't SetValue() unless the delta
30243         was large enough - otherwise we could get into a situation where
30244         we never emit a progress changed event in a case where the data
30245         trickles in at < 0.05%.
30247 2008-01-04  Chris Toshok  <toshok@ximian.com>
30249         * animation.cpp (Storyboard::HookupAnimationsRecurse): look back
30250         up the clock hierarchy for the target property like we do with the
30251         target name.
30253 2008-01-04  Chris Toshok  <toshok@ximian.com>
30255         * media.h: add Image::DownloaderFailed.
30257         * media.cpp (Image::UpdateProgress): make sure to qualify the
30258         DownloadProgressProperty we lookup on the Downloader, since
30259         without the Downloader:: it'll try to get
30260         Image::DownloadProgressProperty, which will always return 0.0.
30261         (Image::SetSource): use the static qualifier for
30262         events (Downloader:: instead of downloader->).
30263         (Image::DownloaderFailed): new method, emit our ImageFailedEvent.
30265         * brush.cpp (ImageBrush::image_progress_changed): make sure to set
30266         our ImageBrush::DownloadProgressProperty before emitting the
30267         changed event.
30268         (brush_init): lookup the ImageBrush::ImageFailedEvent.
30270 2008-01-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30272         * runtime.cpp: Free background_color upon surface
30273           destruction. Fixes a minor leak.
30275         * clock.cpp|h: Free the tick_call_mutex upon destruction.
30277 2008-01-03  Jeffrey Stedfast  <fejj@novell.com>
30279         Fix for bug #350962
30281         * media.cpp (MediaBase::OnPropertyChanged): Don't emit
30282         DownloaderProgressChanged events anymore, leave that up to Image
30283         and MediaElement classes so that we don't emit events when an
30284         outside source changes the value.
30285         (MediaElement::UpdateProgress): Emit the DownloaderProgressChanged
30286         event if the proper download delta has occured.
30287         (Image::UpdateProgress): Same.
30289 2008-01-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30291         * dependencyobject.h: Remove warning.
30293 2007-12-31  Jeffrey Stedfast  <fejj@novell.com>
30295         * runtime.h (CreateDownloader): Simplified.
30297 2007-12-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30299         * collection.cpp: Upon destruction on VisualCollection, remove the visual
30300           parent of all items.
30301         * dependencyobject.h: Add weak_ref/unref and a comment explaining when and
30302           how to use them.
30303         * dirty.cpp: Don't take a ref in DirtyNode.
30305 2007-12-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30307         * media.cpp: Add const modifier 
30309 2007-12-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30311         * downloader.cpp: Null-initialize a field.
30312         * dirty.cpp: Make DirtyNode keep a reference to the element it wraps.
30314 2007-12-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30316         * pipeline.h: Added, the start of the new media pipeline.
30318 2007-12-20  Sebastien Pouliot  <sebastien@ximian.com>
30320         * collection.cpp|h: Add missing method AddStylusPoints for 
30321         StylusPointCollection
30323 2007-12-20  Sebastien Pouliot  <sebastien@ximian.com> 
30325         * geometry.h: Remove hack for PathGeometry::FiguresProperty
30326         * xaml.cpp: If a collection is null by default then we must call
30327         parent->SetValue(dp, collection) or the collection, and it's 
30328         contents, won't be available. Fix (correctly) Chess.
30330 2007-12-19  Sebastien Pouliot  <sebastien@ximian.com> 
30332         * geometry.cpp: Fix Draw and ComputeBound to deal with the fact that
30333         there's no default Figure collection. Fix Chess crasher.
30334         * xaml.cpp: Fix unit test were empty string are parsed as 0.0,
30335         foir doubles, and as an "empty" (but not NULL) Value for 
30336         DOUBLE_ARRAY.
30338 2007-12-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30340         * media.cpp, media.h: Implement support for markers as a separate stream
30341           (the demuxer will call a callback when it encounters any streamed
30342           markers).
30344 2007-12-19  Sebastien Pouliot  <sebastien@ximian.com>
30346         * xaml.cpp: Add create_item_func for PathFigureCollection. This is 
30347         now needed since it defaults to null and not an empty collection.
30349 2007-12-19  Stephane Delcroix  <sdelcroix@novell.com>
30351         * uielement.[h|cpp]: set a default value (0,0) for RenderTransformOrigin.
30353 2007-12-18  Sebastien Pouliot  <sebastien@ximian.com>
30355         * color.cpp: Handle empty string correctly in color_from_str. Unit 
30356         tests shows this return 0 (and not transparent).
30358 2007-12-18  Stephane Delcroix  <sdelcroix@novell.com>
30360         * xaml.cpp: fix for bnc 348581.
30362 2007-12-18  Sebastien Pouliot  <sebastien@ximian.com> 
30364         * brush.cpp: Fix default color values for SolidColorBrush::Color and
30365         GradientStop::Color properties (see js unit tests).
30366         * geometry.cpp|h: Remove default collection from PathGeometry. Fix
30367         testPathGeometry unit test.
30369 2007-12-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30371         * media.cpp: ReadASFMarkers: Read markers as well as script commands.
30372           Subtract the preroll value from the pts before adding the marker. Unref
30373           the created collection and markers when finished with them.
30374           AdvanceFrame: Always call CheckMarkers, even if we couldn't advance the
30375           frame (might be necessary if the last frame has a marker).
30377 2007-12-17  Jb Evain  <jbevain@novell.com>
30379         * xaml.cpp: fix testMatrixWithZeroItem test case.
30381 2007-12-17  Jb Evain  <jbevain@novell.com>
30383         * type.cpp|h(.in), value.cpp|h(.in): remove the Matrix
30384         value type, has SL exposes it as a DependencyObject.
30386         * transform.cpp|h: define and implement the
30387         Matrix DependencyObject type.
30389         * xaml.cpp: create a Matrix DO on a Matrix xaml element.
30390         Also create such an object with the <MatrixTransform Matrix='...'>
30391         syntax.
30393 2007-12-17  Sebastien Pouliot  <sebastien@ximian.com>
30395         * xaml.cpp: Return an "empty" Value (not NULL) if no POINT_ARRAY
30396         is provided. Fix testAllowEmptyPointsOnPoly[gon|line] JS tests.
30398 2007-12-14  Jeffrey Stedfast  <fejj@novell.com>
30400         * runtime.cpp (fps_report_default): Default printf FPS report
30401         callback.
30402         (Surface::render_cb): Use instance-local variables for keeping
30403         track of FPS and use the report func if RUNTIME_INIT_SHOW_FPS bit
30404         is set.
30406         * runtime.h: Added a RUNTIME_INIT_SHOW_FPS flag
30407         (class Surface): New method to set the FPS report callback for a
30408         surface.
30410 2007-12-14  Chris Toshok  <toshok@ximian.com>
30412         * type.cpp.in, type.cpp (types_init_register_events): need to
30413         register DownloadProgressChanged and ImageFailed events on
30414         imagebrushes.
30416         * brush.h, brush.cpp: same, and hook up the events from
30417         ImageBrush's embedded image so that we can re-emit the events.
30418         
30419 2007-12-14  Jeffrey Stedfast  <fejj@novell.com>
30421         * downloader.cpp (Downloader::Abort): Don't abort if we've already
30422         been aborted or been notified that we've failed (needed protection
30423         for the Plugin downloader).
30424         (Downloader::Send): Set aborted = false.
30425         (Downloader::NotifyFailed): Don't do anything if we've already
30426         been notified of failure for this download request.
30428         * downloader.h (class Downloader): Keep track of aborted state as
30429         well.
30431 2007-12-14  Stephane Delcroix  <sdelcroix@novell.com>
30433         * brush.cpp: Fix for bnc 346204: Set both Width and Height for Image if
30434         only one (Width XOR Height) is provided.
30436 2007-12-14  Sebastien Pouliot  <sebastien@ximian.com> 
30438         * shape.cpp: Fix Path::GetBrushSize to ensure the geometry has
30439         been built before calling cairo_stroke_extents. This fix sample
30440         http://designwithsilverlight.com/tutorials/photoGalleryWall/default.html
30442 2007-12-13  Sebastien Pouliot  <sebastien@ximian.com> 
30444         * shape.cpp|h: Shortcut path bounds calculation when both Width
30445         and Height are specified. Add same clipping rules to Line, 
30446         Polyline and Polygon classes.
30448 2007-12-13  Sebastien Pouliot  <sebastien@ximian.com>
30450         * geometry.cpp: Resume using cairo_stroke_extents in some cases
30451         because we need very precise bounds for Fill to work properly.
30452         This fix Sprawl's cowboy hat ribbon :-)
30454 2007-12-12  Stephane Delcroix  <sdelcroix@novll.com>
30456         * brush.cpp: Fix RelativeTransform for RadialGradientBrush'es too.
30458 2007-12-11  Jeffrey Stedfast  <fejj@novell.com>
30460         * downloader.cpp|h: Made the ::Write() method take the same
30461         int-type args as the NPP_Write() function (which means int32 for
30462         both offset and nbytes).
30464 2007-12-11  Sebastien Pouliot  <sebastien@ximian.com>
30466         * stylus.cpp: Fix JS unit tests for Stroke properties by having
30467         a default DrawingAttributes inside the Stroke.
30469 2007-12-10  Chris Toshok  <toshok@ximian.com>
30471         * dependencyobject.h, dependencyobject.cpp: more event changes.
30472         events keep a integer "token" per event, that starts at 0, that is
30473         returned from the plugin's addEventListener method, and can be can
30474         be passed to the plugin's removeEventListener method.
30476 2007-12-10  Sebastien Pouliot  <sebastien@ximian.com>
30478         * shape.cpp: Fix Shape::GetSizeForBrush to adjust to the Stretch
30479         property of the Shape. Fix bug #346018
30481 2007-12-10  Jeffrey Stedfast  <fejj@novell.com>
30483         * runtime.cpp (InitializeDrawingArea): Removed the call to
30484         gtk_widget_set_size_request() - we now call it elsewhere (since
30485         going fullscreen requiers us to call set_size_request() /before/
30486         calling gtk_window_fullscreen(). When going to fullscreen mode,
30487         this was causing the FullScreenMessage item to appear in the
30488         upper-left corner rather than centered like it should have been.
30489         (Surface): Make the call to gtk_widget_set_size_request() here now
30490         that it no longer is called inside InitializeDrawingArea().
30492 2007-12-07  Sebastien Pouliot  <sebastien@ximian.com> 
30494         * geometry.cpp: Set SHAPE_EMPTY if only Height or Width is specified.
30495         * shape.cpp|h: Add Shape and Path NeedsClipping methods. Adjust the
30496         bounds calculation on paths when Height *and* Width are present.
30498 2007-12-07  Sebastien Pouliot  <sebastien@ximian.com>
30500         * shape.cpp: In Shape::ComputeBounds don't compute half thickness
30501         unless the value is needed.
30503 2007-12-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30505         * xaml.cpp: Plug more leaks.
30507 2007-12-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30509         * animation.cpp, geometry.cpp: Fix a couple of memory leaks,
30510           detected by the javascript tests.
30512 2007-12-06  Jeffrey Stedfast  <fejj@novell.com>
30514         * media.cpp (media_element_get_attributes): Added.
30515         (media_element_set_attributes): Added.
30516         (MediaElement): Set an empty list of attributes as per the spec.
30518 2007-12-06  Stephane Delcroix  <sdelcroix@novell.com>
30520         * media.cpp:
30521         * brush.cpp: implement RelativeTransform for image brushes and 
30522         LinearGradientBrush. RadialGradientBrush still missing.
30524 2007-12-06  Chris Toshok  <toshok@ximian.com>
30526         * dependencyobject.h, dependencyobject.cpp: make
30527         EventObject::AddHandler return the id (when using the event_name
30528         variant).
30530 2007-12-06  Chris Toshok  <toshok@ximian.com>
30532         * xaml.cpp (xaml_init): register the right constructors for
30533         PathSegmentCollection, GeometryCollection, and
30534         TransformCollection.
30536 2007-12-05  Chris Toshok  <toshok@ximian.com>
30538         * animation.cpp, animation.h: a couple of fixes.  Move away from
30539         watching the clock state in AnimationStorage and resetting the
30540         property value there.  instead, just override Clock::Stop in
30541         AnimationClock and call ResetPropertyValue on the storage.
30543         Also, when a storyboard's clock group is stopped, free it and
30544         remove it from the parent clock's list of children.  This should
30545         keep us from growing the number of clocks over time for
30546         storyboards which don't have Begin() called again (the only
30547         circumstance under which we destroy the clock).
30549         * clock.cpp, clock.h: handle the case where a clock can be started
30550         and then stopped before the next clock tick.  This happens when
30551         you move the mouse very quickly over the thumbnails in pageturn.
30553 2007-12-05  Sebastien Pouliot  <sebastien@ximian.com>
30555         * geometry.cpp: Fix crash when EllipseGeometry is used for clipping
30556         (no path provided). Fix Build/ComputeBounds when no center point
30557         is provided.
30559 2007-12-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30561         * uielement.h, visual.h, uielement.cpp, collection.cpp, control.cpp,
30562           dirty.cpp: Move UIElement::parent to Visual, rename it to visual_parent,
30563           and make it a real property with accessors.
30565 2007-12-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30567         * xaml.cpp, dependencyobject.h, collection.cpp, dependencyobject.cpp,
30568           animation.cpp: Rename DependencyObject::parent/SetParent/GetParent to
30569           logical_parent/SetLogicalParent/GetLogicalParent.
30571 2007-12-04  Larry Ewing  <lewing@novell.com>
30573         * media.cpp (Image::Render): fix the conditions for the opacity
30574         stability count.
30576 2007-12-03  Larry Ewing  <lewing@novell.com>
30578         * src/media.cpp (Image::Render): use paint_with_alpha if opacity
30579         is changing, use the old buffered alpha if it is not.
30581 2007-12-04  Jb Evain  <jbevain@novell.com>
30583         * stylus.cpp|h: add stylus_info_get_current function.
30584         Right now, it's an hack which always return a StylusInfo
30585         of type Mouse, not inverted.
30587 2007-12-03  Chris Toshok  <toshok@ximian.com>
30589         * clock.h, clock.cpp: rename ClampTimeToDuration to ClampTime, as
30590         it now clamps to [0,duration_timespan].  This fixes the Simon
30591         "button flying off the screen" bug.
30593 2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
30595         * clock.cpp (RaiseEnqueuedEvents): Optimized a bit by not
30596         iterating thru the list 6 times :)
30597         (ClockGroup::RaiseAccumulatedEvents): Make a copy of the
30598         child_clocks list here too, or we end up corrupting memory.
30600 2007-12-03  Larry Ewing  <lewing@novell.com>
30602         * media.cpp (Image::Render): wrap the region clipping in a #define
30603         for testing.
30605 2007-12-03  Larry Ewing  <lewing@novell.com>
30607         * media.cpp (Image::Render): remove accumulated drawing cruft.
30609 2007-12-03  Chris Toshok  <toshok@ximian.com>
30611         * animation.cpp: put back in the calls to ComputeBeginTime that I
30612         accidentally committed a few days ago (and lewing reverted to fix
30613         the build).  they're needed with the new clock changes.
30615 2007-12-03  Chris Toshok  <toshok@ximian.com>
30617         * clock.cpp, clock.h: rework the clock code a bunch.  There are a
30618         couple of large changes.
30620         Get rid of the stupid new_ and current_ fields.  Just update the
30621         field immediately.  This cuts down on logic in if checks, and also
30622         makes subclocks update much faster in relation to their parent
30623         clock (we used to have to wait 1 tick per level in the tree for
30624         state to propagate).
30626         Abstract out all the QueueEvent calls into setters in clock.h.
30628         Break up Clock::Tick some, so more of the code is reusable from
30629         ClockGroup::Tick without having to call Clock::Tick and then work
30630         behind its back.
30632 2007-12-03  Sebastien Pouliot  <sebastien@ximian.com>
30634         * brush.cpp: Fix breakage introduced in r90549 (the matrix is 
30635         already set on the pattern).
30637 2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
30639         * dependencyobject.cpp (RemoveHandler): Simplified a little.
30641         * animation.cpp (Stop): Remove the CompletedEvent root_clock
30642         handler. Fixes Simon's GAME OVER! textblock storyboard.
30644 2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
30646         * runtime.cpp: Added clipping/bounding-box override values.
30648         * uielement.cpp (DoRender): Changed optional bounding-box/clipping
30649         debugging drawing based on runtime settable bitflags.
30651 2007-12-03  Larry Ewing  <lewing@novell.com>
30653         * uielement.cpp: Clean up the debug rendering code for bounding
30654         boxes and clip regions.
30656 2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
30658         Fixes a bug pointed out by Larry when rendering lines beginning
30659         with a 'J', where the tail escapes the bounding box.
30661         * font.cpp (Layout): Use the horiBearingX font metric.
30662         (RenderLine): Same.
30664 2007-12-03  Larry Ewing  <lewing@novell.com>
30666         * brush.cpp (RadialGradientBrush::SetupBrush): add debug spew
30667         if we can't invert the matrix but still draw someting.
30669 2007-11-29  Larry Ewing  <lewing@novell.com>
30671         * panel.cpp (Panel::ComputeBounds): clip the clip the subpath
30672         bounds to the clip region as well.
30674         * control.cpp (Control::ComputeBounds): differenciate between our
30675         bounds and our subpath bounds.
30677         * control.h: add bounds_with_children and GetSubpathBounds ().
30679 2007-11-29  Jeffrey Stedfast  <fejj@novell.com>
30681         * font.cpp (TextFont::GetGlyphInfoByIndex): If we reach the end of
30682         the font face charmap, use unichar = 0 rather than returning NULL.
30684 2007-11-28  Chris Toshok  <toshok@ximian.com>
30686         * runtime.cpp (Realloc): when we Realloc(), we need to tell the
30687         toplevel canvas to update its bounds.  This *may* be wrong, but it
30688         definitely fixes matrix.
30689         (UpdateFullScreen): we need to stop the timesource when emitting
30690         the fullscreenchangeevent.  otherwise we can end up stuck in a
30691         nested glib mainloop and never return from the emit (actually we
30692         never even invoke the JS callback in matrix.  the nested loop
30693         happens somewhere deep in the bowels of NPN_Invoke).
30695 2007-11-28  Jeffrey Stedfast  <fejj@novell.com>
30697         * media.cpp (MediaElement::UpdateProgress): Got rid of a hardcoded
30698         hack that forced the assumption of a streaming (vs progressive)
30699         media download. Also fixed to emit a DownloadProgressChanged event
30700         at progress == 1.0 (which is what th Silverlight book says we're
30701         supposed to do).
30703 2007-11-28  Larry Ewing  <lewing@novell.com>
30705         * src/uielement.cpp (UIElement::DoRender): make sure we don't
30706         leave a path on the cairo context when clipping.
30708 2007-11-28  Chris Toshok  <toshok@ximian.com>
30710         * uielement.cpp (UIElement::UIElement): compute the initial total
30711         hit test visibility.
30713         * dirty.cpp (process_dirty_elements): don't invalidate/update
30714         bounds when the hit test visibility changes.
30716         * frameworkelement.(h,cpp): calculate the bounds here using
30717         width/height.
30719         * panel.cpp: chain up to frameworkelement.
30720         
30721 2007-11-27  Jeffrey Stedfast  <fejj@novell.com>
30723         * text.cpp (TextBlock::SetValue): Check the resulting Inlines
30724         collection formed from the Text property being set against the old
30725         Inlines - if no change, don't set the new Inlines collection,
30726         simply keep using the old. The idea is to prevent unnecessary
30727         layout re-calculations and invalidates.
30729 2007-11-27  Chris Toshok  <toshok@ximian.com>
30731         * dirty.[cpp,h] panel.[cpp,h], control.[cpp,h], uielement.[cpp,h],
30732         canvas.cpp, collection.cpp, shape.cpp:
30734         rather large change - don't use a large rectangular bounding box
30735         encompassing both the panel's frameworkelement bounds as well as
30736         the bounds of all its children.  Instead, only worry about the
30737         frameworkelement bounds, and let the children invalidate
30738         themselves.  but do all this in a way that we still use the
30739         subtree's bounding box to prune rendering and hit testing.
30741         since we won't be invalidating the entire box surrounding all
30742         children, we need to propagate visibility information down the
30743         tree as we do opacity.
30745         This should really speed up most animations (such as those in
30746         sprawl and airlines) since we'll be invalidating far smaller
30747         areas.
30748         
30749         (this code was stupidly hard for lewing and me to get right.  yay
30750         for jet lag.)
30752 2007-11-23  Larry Ewing  <lewing@novell.com>
30754         * runtime.cpp: add show=expose to toggle expose display.
30756 2007-11-22  Jb Evain  <jbevain@novell.com>
30758         * xaml.cpp (XamlElementInstantce::ClearSetProperties): avoid
30759         a glib warning if set_properties is NULL.
30761 2007-11-21  Chris Toshok  <toshok@ximian.com>
30763         * media.cpp (MediaElement::UpdateProgress): only set 1 of
30764         DownloadProgressProperty and BufferingProgressProperty.  The
30765         former is used if we're playing progressively, the latter if we're
30766         buffering before playing.  This fixes the buffering animation on
30767         the halo site.
30768         
30769 2007-11-21  Chris Toshok  <toshok@ximian.com>
30771         * runtime.cpp (Surface::Invalidate): add the int case around the
30772         complete expression to quiet gcc.
30774 2007-11-20  Larry Ewing  <lewing@novell.com>
30776         * runtime.cpp (Surface::expose_event_callback): take allocation
30777         offsets into account when invalidating and drawing.  Fixes
30778         #339010.
30780 2007-11-20  Chris Toshok  <toshok@ximian.com>
30782         * xaml.cpp (XamlElementInstance::ClearSetProperties): in glib <
30783         2.12, destroy the hash table and set it to NULL so we'll recreate
30784         it.
30786 2007-11-20  Chris Toshok  <toshok@ximian.com>
30788         * collection.cpp (VisualRemoved): switch from using
30789         item->parent->ChildInvalidated(UIElement), use
30790         item->parent->Invalidate (item->GetBounds()).
30792         * uielement.h, uielement.cpp: change ChildInvalidated(Region *) to
30793         Invalidate (Region*) and update calls to it.  Remove
30794         ChildInvalidated(UIElement*).  Also, remove all references to the
30795         children_dirty_region field.  everything goes through dirty_region
30796         now.
30798         * dirty.cpp: switch to using item->parent->Invalidate instead of
30799         item->parent->ChildInvalidated, and remove references to
30800         children_dirty_region.
30802 2007-11-20  Chris Toshok  <toshok@ximian.com>
30804         * dependencyobject.cpp: add a ctor for EventClosure, and do a deep
30805         copy before emitting an event.
30807 2007-11-20  Jeffrey Stedfast  <fejj@novell.com>
30809         * runtime.cpp (surface_get_toplevel): Removed.
30811         * uielement.cpp (uielement_get_isloaded): Removed.
30813 2007-11-20  Jb Evain  <jbevain@novell.com>
30815         * downloader.h (Downloader): override SetSurface and GetSurface
30816         to work on a custom surface field.
30817         * downloader.cpp (Downloader::Downloader): initialize
30818         surface to NULL.
30819         * runtime.h (Surface::CreateDownloader): initialize the surface
30820         of the downloader.
30821         * collection.cpp: when removing an UIElement from an UIElementCollection,
30822         clear out its surface to NULL.
30823         * visual.cpp: remove null check preventing to set the surface to NULL.
30824         * dependencyobject.cpp: (DependencyObject::FindName): if the
30825         current DO has no parent, fallback to its surface to try
30826         FindName on its top level element (needed to call FindName
30827         on a downloader for instance). Fixes #335018.
30829 2007-11-20  Jackson Harper  <jackson@ximian.com>
30831         * xaml.cpp: If we need to reparse the attributes for an element
30832         (because we loaded a class and the props need to be set on the new
30833         class) we have to clear out the hash of properties that are marked
30834         as already set. Otherwise we get a property already set error.
30836 2007-11-20  Jackson Harper  <jackson@ximian.com>
30838         * xaml.cpp: Add new function to create a value from a string
30839         without having the Kind available (you still need to have the type
30840         in string form).
30841         - SetAttribute now ensures that the attribute was set properly
30842         - If the object we are trying to set an attribute on is a managed
30843         object and there is no DependencyProperty for the attribute, we
30844         try setting the attribute on the object.
30846 2007-11-20  Sebastien Pouliot  <sebastien@ximian.com>
30848         * uielement.cpp: Ensure the default value for VisibilityProperty
30849         is VisibilityCollapsed even if the value is invalid (for Javascript
30850         compatibility, since 1.1 should throw an exception). See #340799
30852 2007-11-20  Stephane Delcroix  <sdelcroix@novell.com>
30854         * uielement.cpp: FullInvalidate on setting Viibility to Visible.
30855         Fixes bnc #342662.
30857 2007-11-19  Larry Ewing  <lewing@novell.com>
30859         * uielement.cpp: setup the clip before push/pop group so that
30860         we reduce the temp surface size.
30862 2007-11-16  Sebastien Pouliot  <sebastien@ximian.com>
30864         * transform.cpp: Use cairo_matrix_init_translate instead of 
30865         cairo_matrix_init + cairo_matrix_translate where possible (which
30866         avoid the multiplication with the identity matrix).
30868 2007-11-16  Jeffrey Stedfast  <fejj@novell.com>
30870         * runtime.cpp (surface_get_toplevel): New function needed by the
30871         managed land to implement a bit of a hack for the Resize
30872         event (when someone connects to the Resize event, if the toplevel
30873         canvas is already loaded, we want to immediately call the
30874         handler).
30876         * uielement.cpp (uielement_get_isloaded): Same.
30878 2007-11-15  Jackson Harper  <jackson@ximian.com>
30880         * Makefile.am:
30881         * parsertest.cpp: Some tests I use for checking the parsing
30882         functions.
30884 2007-11-15  Jackson Harper  <jackson@ximian.com>
30886         * color.h: Add equality operators.
30888 2007-11-15  Jackson Harper  <jackson@ximian.com>
30890         * xaml.cpp: use isalpha for determining whether or not an int32 is
30891         an enum.  This allows things like -1 to work.
30893 2007-11-15  Jackson Harper  <jackson@ximian.com>
30895         * xaml.cpp: Make sure the entire string is validate ie no 25.0XXXX
30896         for doubles.
30898 2007-11-15  Jackson Harper  <jackson@ximian.com>
30900         * point.h|cpp:
30901         * rect.h|cpp: Update signatures to allow for error checking when
30902         creating types from strings.
30903         * xaml.h|cpp: Consolidate code to create values from strings, add
30904         some error checking.  Update most of the parsing methods so it is
30905         possible to return errors when parsing.
30906         * playlist.cpp: Sig update.
30907         
30908 2007-11-15  Jackson Harper  <jackson@ximian.com>
30910         * stylus.h|cpp: Initialize these collections so we don't get NULLs
30911         for GetValue on them.
30913 2007-11-14  Chris Toshok  <toshok@ximian.com>
30915         * runtime.cpp (strcase_hash): swap this out for mono's eglib
30916         implementation, augmented with g_ascii_tolower, to remove the
30917         malloc/free and 2 passes over the string.
30919 2007-11-14  Chris Toshok  <toshok@ximian.com>
30921         * dependencyobject.cpp: move the strcase_hash/equals functions...
30922         
30923         * runtime.cpp: here.
30925         * runtime.h: and make them public.
30927         * type.cpp.in, type.cpp (RegisterEvent): and use them here
30928         (RegisterType): and here.
30930 2007-11-14  Jb Evain  <jbevain@novell.com>
30932         * media.cpp|h: remove specific Image and MediaElement
30933         accessors for progress property now that the code
30934         moved to MediaBase.
30936 2007-11-14  Jb Evain  <jbevain@novell.com>
30938         * type.cpp.in, type.cpp, media.h, media.cpp: Move
30939         DownloadProgressProperty and DownloadProgressChangedEvent
30940         to MediaBase so it gets shared for both Image and MediaElement.
30941         Fixes #325255.
30943 2007-11-14  Jb Evain  <jbevain@novell.com>
30945         * value.h.in: update code template to match current value.h.
30947 2007-11-14  Sebastien Pouliot  <sebastien@ximian.com> 
30949         * openfile.cpp: Added support for Filter and FilterIndex.
30951 2007-11-14  Sebastien Pouliot  <sebastien@ximian.com>
30953         * animation.cpp: Replaced g_assert_not_reached with g_warning.
30954         At least until #340799 (enum validation) is fixed. Part of #335413
30955         * shape.cpp: Add g_warning to replace the g_assert_not_reached 
30956         removed earlier. At least until #340799 (enum validation) is fixed.
30957         * uielement.cpp: Replaced g_assert_not_reached with g_warning.
30958         At least until #340799 (enum validation) is fixed. Part of #335413
30960 2007-11-13  Miguel de Icaza  <miguel@novell.com>
30962         * value.cpp (Value::ToString): Add method to help debug some
30963         apps. 
30965 2007-11-13  Jeffrey Stedfast  <fejj@novell.com>
30967         * text.cpp (SetValue): Get rid of \r's and treat \n's as LineBreak
30968         elements.
30970 2007-11-13  Sebastien Pouliot  <sebastien@ximian.com>
30972         * brush.cpp|h: Do not compute brush bounds for a SolidColorBrush 
30973         as this is unrequired (API wise) and can be expensive (it was enough
30974         to add custom bound calculation code to shapes and geometries).
30976 2007-11-12  Sebastien Pouliot  <sebastien@ximian.com>
30978         * shape.cpp: Removed g_assert_not_reached and, if any bad value is
30979         supplied (should be catched well before that, #340799), use the 
30980         default value. Fix part of #335413
30982 2007-11-09  Chris Toshok  <toshok@ximian.com>
30984         * dirty.cpp, uielement.h, uielement.cpp: glib was hurting my head.
30985         convert this over to using our List class.  Also fix a bug where
30986         elements with down dirty flags weren't being inserted propertly
30987         into the up dirty list.
30989 2007-11-09  Sebastien Pouliot  <sebastien@ximian.com>
30991         * animation.cpp: Fix crash on empty BeginStoryboard (#340384)
30993 2007-11-09  Miguel de Icaza  <miguel@novell.com>
30995         * value.h (struct Value): Cope with NULL strings.
30997 2007-11-09  Jackson Harper  <jackson@ximian.com>
30999         * xaml.cpp: Closepath needs to draw a line to the path's starting
31000         point and needs to create a new path figure element at the
31001         starting point.
31003 2007-11-09  Jackson Harper  <jackson@ximian.com>
31005         * type.cpp|h.in: Add an accesor for the ContentProperty name.
31006         
31007 2007-11-09  Jackson Harper  <jackson@ximian.com>
31009         * xaml.cpp: Rework to allow unparented properties.  createFromXaml
31010         ("<Canvas.Background><SolidColorBrush></Canvas.Background") will
31011         basically ignore the property and will return the SolidColorBrush
31012         as the top element. This fixes 335865.
31014 2007-11-08  Chris Toshok  <toshok@ximian.com>
31016         [ may go a long way toward fixing #337714, if it doesn't fix it
31017         outright ]
31018         
31019         * uielement.h, uielement.cpp: add an overload of ChildInvalidated
31020         that takes a UIElement* instead of a region.  The implementation
31021         just invalidates the entire bounds of the child in the parent.
31023         * collection.h, collection.cpp: we weren't breaking the
31024         item->parent link when removing visuals from a VisualCollection.
31025         Add VisualRemoved, which invalidates the child's region (and stop
31026         using child->Invalidate, since that won't work once the link to
31027         the parent is broken) and breaks the parent link.  Call
31028         VisualRemoved from everywhere we remove/replace a visual in our
31029         collection.  Also, rename VisualUpdated to VisualAdded, since
31030         that's more indicative of why the method is being called.
31031         
31032 2007-11-08  Jeffrey Stedfast  <fejj@novell.com>
31034         * runtime.cpp (Attach): Emit the Resize event.
31035         (drawing_area_size_allocate): Emit the Resize event.
31037 2007-11-07  Chris Toshok  <toshok@ximian.com>
31039         * clock.cpp (Clock::Begin): guard against division by zero.
31041 2007-11-07  Chris Toshok  <toshok@ximian.com>
31043         * runtime.cpp, runtime.h: make GetWidth()/GetHeight() return the
31044         width the canvas tells the surface to be (if it does).  this fixes
31045         issues uncovered by larry's improved bounds checking code.  Also,
31046         remove the instance fields for screen_height/width.  they're only
31047         used in one place, so make them local to that function.
31049 2007-11-07  Chris Toshok  <toshok@ximian.com>
31051         * brush.h, brush.cpp: add some c++ setters/getters to make some
31052         code a little smaller.
31054 2007-11-06  Larry Ewing  <lewing@novell.com>
31056         * src/frameworkelement.cpp: Force a full invalidate if the width
31057         or height property because panels include their children in the
31058         bounds compution and will pass the dirty check.
31060         * media.cpp: Implement the Region based rendering for MediaElement
31061         and Image.
31063         * panel.cpp: Unconditionally pass the region to the Children.
31065         * panel.cpp: when rendering children treat panels and other
31066         objects differently.  For containers pass the clipped region
31067         directly, for elements subdivide the region and paint each block.
31068         Renable FindStartingElement with a slightly less expensive
31069         algorithm.
31071         * rect.cpp: don't collapse complicated regions the drawing code is
31072         smarter now.
31074 2007-11-06  Jeffrey Stedfast  <fejj@novell.com>
31076         * font.cpp (TextFont): Fixed to not exit() even when no font could
31077         be loaded from FreeType.
31079 2007-11-06  Chris Toshok  <toshok@ximian.com>
31081         * dependencyobject.cpp (GetObjectType): make this g_critical, and
31082         also print out a stack trace if STACK_DEBUG is enabled.
31084         * dependencyobject.h: stop Emitting the DestroyedEvent from the
31085         dtor.  instead do it from unref before we delete the object.
31087 2007-11-05  Chris Toshok  <toshok@ximian.com>
31089         * rect.h (ToGdkRectangle): quiet countless warnings.
31091 2007-11-05  Larry Ewing  <lewing@novell.com>
31093         Merge most of dirty region branch.  This makes the dirty logic and
31094         rendering code use the new region class to track more complicated
31095         shapes than bounding boxes when processing changed areas.
31097         * media.cpp: switch back to indirect rendering for drawing media
31098         elements until a solution to the boundry clipping can be found.
31100         * panel.cpp: disable FindStartingElement (the buggy) until a more
31101         optimal method can be found.
31103         * dirty.cpp: Use dirty regions.  Process DirtyOpacity first (still
31104         needs to be fixed to order dirty children.
31106 2007-11-03  Chris Toshok  <toshok@ximian.com>
31108         * clock.cpp (ClockGroup::Tick): instead of calling Clock::Stop,
31109         call SkipToFill if we have no active child clocks.
31110         (ClockGroup::Stop): simplify this.
31111         (ClockGroup::Seek): make this look a little more like ::Stop.
31113 2007-11-03  Chris Toshok  <toshok@ximian.com>
31115         * xaml.cpp (repeat_behavior_from_str): add support for the
31116         "ff.ffx" format for repeat behaviors.
31118         * clock.cpp, clock.h: the first sizeable amount of work done in a
31119         while to correct the multitude of tiny bugs in clock handling.
31120         this gets AnimationMatrix.xaml maybe 40% working.  Clean up and
31121         comment Clock::Tick a lot, and remove a bunch of the old
31122         CLOCK_DEBUG spew which was making the code that much more
31123         difficult to look at.
31124         
31125 2007-11-02  Jeffrey Stedfast  <fejj@novell.com>
31127         * font.cpp (TextFontDescription::SetScale): Removed, this hack
31128         wasn't working as well as I'd hoped.
31129         (TextFontDescription::GetScale): Same.
31130         (TextFontDescription::CreatePattern): If the requested font size
31131         is < 41.0 (seems to be the magic number where scaling loses impact
31132         on metrics), use FontSize=41.0 and do proper scaling to get the
31133         actual size we want. My worry was that asking for small font sizes
31134         (smaller than 16.0?) would look ugly with this hack, but that is
31135         surprisingly not true. By always requesting a font size that will
31136         yield the generic font metrics (e.g. not some hacked font size),
31137         we will always be able to wrap identically no matter what FontSize
31138         is requested (so long as the width gets scaled appropriately).
31140         * text.cpp (TextBlock::ComputeTransform): Removed.
31142 2007-11-02  Jeffrey Stedfast  <fejj@novell.com>
31144         * font.cpp (RenderLine): Render glyphs with index 0 too, so that
31145         we render an empty box for glyphs not in the font (just like
31146         Silverlight).
31148         * text.cpp (ComputeTransform): Fixed to use the correct matrix for
31149         getting the scale values.
31151 2007-11-01  Jackson Harper  <jackson@ximian.com>
31153         * trigger.h:
31154         * text.h:
31155         * geometry.h
31156         * transform.h:
31157         * animation.h:
31158         * brush.h:
31159         * panel.h: Add ContentProperty 'attributes'.
31160         * typegen.cs:
31161         * type.cpp|h:  Add content property information to types.  This
31162         will be used by the parser and will allow the parser to drop it's
31163         special type system.
31165 2007-11-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31167         * animation.cpp: AnimationStorage: unregister from registered events on
31168           destruction.
31170 2007-11-01  Jeffrey Stedfast  <fejj@novell.com>
31172         * text.cpp (TextBlock::SetValue): Oops - if we are setting an
31173         empty string on the Text property, then we need to clear out
31174         whatever was there before (if anything).
31176 2007-10-31  Jeffrey Stedfast  <fejj@novell.com>
31178         Fixes for handling lwsp cdata between <Run> elements.
31180         * xaml.cpp (flush_char_data): Reworked a bit. Now takes a 'start'
31181         arg suggesting that we are being called in response to a new
31182         element starting vs an element ending.
31183         (start_element_handler): Pass true as the start arg to
31184         flush_char_data().
31185         (end_element_handler): Pass false as the start arg to
31186         flush_char_data().
31188         * text.cpp (SetValue): Only add a run if the string is non-empty.
31190 2007-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31192         * dependencyobject.cpp: Guard against calling NULL.
31194 2007-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31196         * media.cpp: Redo ASFParser::Malloc to avoid warnings, and make sure the
31197           return value is always checked.
31199 2007-10-31  Chris Toshok  <toshok@ximian.com>
31201         * trigger.cpp (EventTrigger::SetTarget,
31202         EventTrigger::RemoveTarget): use UIElement::LoadedEvent instead of
31203         "Loaded".
31205 2007-10-31  Jackson Harper  <jackson@ximian.com>
31207         * dependencyobject.h|cpp: Give DependencyProperties the ability to
31208         be readonly.
31209         * canvas.cpp:
31210         * animation.cpp: Signature updates
31211         
31212 2007-10-30  Jackson Harper  <jackson@ximian.com>
31214         * xaml.h: Add the error args to the loader.
31215         * xaml.cpp: Make most of our parsing errors match Silverlight.
31217 2007-10-30  Jeffrey Stedfast  <fejj@novell.com>
31219         * font.cpp (Path): Check the path data != NULL before we make any
31220         cairo calls, no sense wasting cycles if we will no-op in the end.
31222 2007-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31224         * media.cpp, media.h: Fix signedness mismatch warning.
31226 2007-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31228         * mplayer.h: Added asf_player field.
31230 2007-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31232         * Makefile.am: Add files in asf/.
31233         * media.cpp, media.h: Read ASF markers from the file. Save the position when
31234           advancing frames. Use the difference between the last position and the
31235           current position to determine if any MarkerReached events are supposed
31236           to be raised.
31237         * mplayer.cpp: Add some error checking/reporting when opening streams.
31238           Register our own demuxer with ffmpeg (defining MOON_DEMUXER is required
31239           to actually use it).
31241 2007-10-26  Jeffrey Stedfast  <fejj@novell.com>
31243         * font.cpp (RenderLine): Split out from TextLayout::Render() and
31244         made to reset the brush at each segment to match Silverlight's
31245         behaviour.
31247 2007-10-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31249         * debug.cpp: Added print_gdb_trace with an explaining comment.
31250         * debug.h: Make print_stack_trace compile (to nothing) when STACK_DEBUG
31251           isn't defined.
31253 2007-10-25  Jeffrey Stedfast  <fejj@novell.com>
31255         * font.cpp (TextLayout::Render): Set y1 before creating/appending
31256         the path instead of in the segment loop.
31257         (TextLayout::Render): Make underline pos relative to y1 (aka the
31258         baseline) that we calculated above. Makes this easier to
31259         understand.
31261 2007-10-25  Jeffrey Stedfast  <fejj@novell.com>
31263         * font.cpp (TextLayout::Layout): Always calculate segment->width
31264         here.
31265         (TextLayout::Render): Not here.
31267         * text.cpp (Glyphs::GetTransformOrigin): Implemented.
31269 2007-10-25  Jackson Harper  <jackson@ximian.com>
31271         * type.cpp|.in:
31272         * runtime.h|cpp: Add the Error event to the surface.  Raising this
31273         event will cause the plugins onError handler to be invoked, the
31274         default onError handler notifies the user of the error with a
31275         javascript alert.
31277 2007-10-25  Sebastien Pouliot  <sebastien@ximian.com>
31279         * stylus.cpp|h: Keep the semi-working code as a fast path to
31280         render strokes (if no outline color is used and when width ==
31281         height). Added a hack to support OutlineColor.
31283 2007-10-25  Jeffrey Stedfast  <fejj@novell.com>
31285         * brush.cpp (Brush::SetupBrush): Now takes width and height
31286         arguments. Updated all brushes.
31288         * text.cpp (Glyphs::Render): We want to check this->width and
31289         this->height, not the width/height arguments.
31291         * brush.cpp (ImageBrush::SetupBrush): If the image isn't loaded
31292         yet (surface = NULL), return.
31293         (LinearGradientBrush::SetupBrush): Get rid of some of the valgrind
31294         warnings.
31296 2007-10-24  Jeffrey Stedfast  <fejj@novell.com>
31298         * text.cpp (Glyphs::GetSizeForBrush): Implemented.
31300         * font.cpp (TextLayout::Layout): Slight fix for Wrap mode.
31302 2007-10-24  Jackson Harper  <jackson@ximian.com>
31304         * type.cpp.in/h.in: Add some c-style functions for creating
31305         instances.
31307 2007-10-24  Jackson Harper  <jackson@ximian.com>
31309         * typegen.cs:
31310         * type.cpp.in/h.in: Add a create instance call to types.  This
31311         will allow the parser to use our Type object instead of creating
31312         it's own.
31314 2007-10-24  Chris Toshok  <toshok@ximian.com>
31316         * clock.cpp (ManualTimeSource::SetCurrentTime): pass FALSE to
31317         g_main_context_iteration so we don't block if there isn't anything
31318         to do.  also, emit 3 TickEvents to make sure the tick is
31319         propagated down into the animations.
31321 2007-10-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31323         * xaml.cpp: No need to check if the created object is an UIElement before
31324           calling SetSurface anymore.
31325         * visual.h: Update SetSurface to virtual.
31326         * brush.cpp, brush.h: Override SetSurface so that we can forward the call to
31327           our Image object.
31328         * dependencyobject.h: Add virtual Set/GetSurface to DependencyObject (here
31329           the methods do nothing, the surface is still stored in Visual, but this
31330           allows classes that do not inherit from Visual to correctly set the
31331           surface on their members which do inherit from Visual).
31333 2007-10-24  Jeffrey Stedfast  <fejj@novell.com>
31335         * uri.cpp (Uri::Parse): Treat uri's w/o a protocol as file uri's.
31337 2007-10-23  Jeffrey Stedfast  <fejj@novell.com>
31339         * text.cpp (TextBlock::ComputeTransform): If the scale has
31340         changed, set dirty = true so that we recalculate the layout.
31342         * mplayer.cpp (audio_play): Instead of using the SET_VOLUME()
31343         macro, just do it w/o so that we hush the compiler warning.
31345 2007-10-23  Chris Toshok  <toshok@ximian.com>
31347         * clock.cpp (Clock::GetBeginTime): stop treating the BeginTime of
31348         a clock in absolute terms.  instead, offset it from the current
31349         time of the parent clock (or time manager).
31350         (Clock::Begin): clamp progress to 1.0
31351         (SMOOTHING_ALPHA): switch this to 0.30 to see if that helps things
31352         by making it less sensitive to immediate changes.
31354 2007-10-23  Chris Toshok  <toshok@ximian.com>
31356         * mplayer.cpp (Open): if RUNTIME_INIT_AUDIO_DISABLE, don't use
31357         audio (so we sync to the clock).
31359         * runtime.h: add RUNTIME_INIT_AUDIO_DISABLE.
31361 2007-10-23  Chris Toshok  <toshok@ximian.com>
31363         * clock.cpp (ManualTimeSource::SetCurrentTime): call
31364         g_main_context_iteration as a stopgap to make video elements show
31365         up.
31366         (TimeManager::TimeManager): remove spew.
31367         (TimeManager::Tick): re-enable the clock throttling.  oops.
31369 2007-10-23  Larry Ewing  <lewing@novell.com>
31371         * src/runtime.cpp: clear the background in more cases.
31373 2007-10-23  Larry Ewing  <lewing@novell.com>
31375         * src/runtime.cpp: make the eventbox windowless and remove the
31376         stale event code.  Let gtk do the clearing.
31378 2007-10-23  Jeffrey Stedfast  <fejj@novell.com>
31380         * mplayer.cpp (MediaPlayer::Open): Re-enable audio :)
31381         (MediaPlayer::LoadVideoFrame): Keep decoding video until we find
31382         the correct frame rather than just rendering the first frame we
31383         find.
31385 2007-10-23  Chris Toshok  <toshok@ximian.com>
31387         * mplayer.cpp: replace all occurences of av_gettime with
31388         TimeManager::Instance()->GetCurrentTimeUsec().
31390         * runtime.cpp (overrides): add the "timesource=manual" OVERRIDE
31391         thingy.
31392         (render_cb): re-enable the fps on the console.  oops.
31394         * runtime.h (RuntimeInitFlags): add
31395         RUNTIME_INIT_TIMESOURCE_MANUAL.
31397         * type.h.in, type.cpp.in: remove BASE (should have happened on my
31398         last commit), and add in the TIMESOURCE's, and TIMESOURCE's "Tick"
31399         event.
31401         * type.h, type.cpp: sync to the .in files.
31403         * clock.h, clock.cpp: add the idea of a TimeSource to the
31404         TimeManager.  Two are written - SystemTimeSource, which uses the
31405         gtk timeout, and ManualTimeSource, which allows code to set what
31406         the global time should be.  Also, add GetCurrentTimeUsec() for use
31407         by mplayer, so we can switch it away from av_gettime and make it
31408         possible for video to sync to the ManualTimeSource.
31410 2007-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31412         * runtime.cpp: Base -> EventObject changes when OBJECT_TRACKING is defined.
31414 2007-10-23  Larry Ewing  <lewing@novell.com>
31416         * runtime.cpp: make sure we unref the surface.
31418 2007-10-23  Larry Ewing  <lewing@novell.com>
31420         * runtime.cpp: avoid making gdk calls that pull in the platform
31421         cairo.
31423 2007-10-22  Jeffrey Stedfast  <fejj@novell.com>
31425         * text.cpp: Don't allow Pango rendering if disabled at
31426         configure-time.
31427         (TextBlock::ComputeTransform): Moved the scale logic here from
31428         OnPropertyChanged() so that we catch all transform changes.
31430         * uielement.h: Made ComputeTransform() virtual.
31432 2007-10-22  Chris Toshok  <toshok@ximian.com>
31434         * clock.cpp (TimeManager::Shutdown): don't cast to Base anymore..
31435         we can just cast to Clock here.
31437         * dependencyobject.h, dependencyobject.cpp: remove the Base class,
31438         and make roll EventObject and Base into one class (still called
31439         EventObject).
31441 2007-10-20  Sebastien Pouliot  <sebastien@ximian.com>
31443         * runtime.h: Add gtk.h (since it depended on stylus.h to get it)
31444         * stylus.cpp|h: Add some missing functions. Rendering changes 
31445         (not active, work in progress).
31447 2007-10-18  Chris Toshok  <toshok@ximian.com>
31449         * dependencyobject.h: fix comment.
31451         * animation.h, animation.cpp: use the
31452         Clock::CurrentStateInvalidated event to reset the property value
31453         to baseValue instead of overriding the Clock::Stop method.  This
31454         fixes clocks with FillBehavior="Stop" instead of storyboard with
31455         FillBehavior="Fill".
31457         * clock.cpp (Clock::Tick): remove a stupid block of code that was
31458         causing clocks which were Filling to spontaneously end up in their
31459         Active state again.
31461 2007-10-18  Sebastien Pouliot  <sebastien@ximian.com>
31463         * geometry.cpp: New code to handle arc segments. No known issues
31464         (except the handling of near zero values which doesn't seems to
31465         be constant).
31466         * libmoon.h, Makefile.am: Remove reference to rsvg.h
31467         * rsvg.cpp|h: Remove from SVN.
31469 2007-10-17  Andrew Jorgensen  <ajorgensen@novell.com>
31471         * cairo-embed.h, pixman-embed.h: Added symbol renaming headers
31472         based on the ones from libgdiplus.
31474 2007-10-17  Chris Toshok  <toshok@ximian.com>
31476         * xaml.cpp (XNamespace::SetAttribute): make sure to add the newly
31477         created managed dob to the created_elements list so it gets
31478         unrefed properly.
31479         (XamlLoader::XamlLoader): use ->ref() instead of base_ref().
31480         (XamlLoader::~XamlLoader): use ->unref() instead of base_unref().
31482 2007-10-17  Chris Toshok  <toshok@ximian.com>
31484         * Makefile.am (demo_LDADD): add MOON_PROG_LIBS.
31485         (sizes_LDADD): same.
31487 2007-10-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31489         * dependencyobject.h: Add a GET_OBJ_ID macro that resolves to -1 if
31490           OBJECT_TRACKING isn't defined.
31491         * runtime.h: Enable the contextual downloader warning again.
31492         * dependencyobject.cpp: Fix build when DEBUG is defined.
31494 2007-10-16  Jeffrey Stedfast  <fejj@gnome.org>
31496         * text.cpp (OnPropertyChanged): When intercepting non-TextBlock
31497         properties changing value, don't fall thru to the rest of the
31498         checks (as then we'd re-emit it to sublisteners which isn't what
31499         we want I don't think). Also, don't change the font scale unless
31500         it's >= 1.0 (e.g. don't down-scale). Fixes an infinite loop.
31502 2007-10-16  Jeffrey Stedfast  <fejj@novell.com>
31504         * text.cpp (OnPropertyChanged): Listen for RenderTransformProperty
31505         changes and apply the y-scale to the font so that we can more
31506         accurately path the font glyphs at the scale we intend to render
31507         them at.
31509         * font.cpp (TextFont): Cache the scale here.
31510         (Kerning): Apply the scale.
31511         (Descender): Here too.
31512         (Ascender): And here.
31513         (Height): Same.
31514         (GetGlyphInfo): Create and apply the scale/invert matrix. Also
31515         scale the glyph metrics.
31516         (UnderlinePosition): Apply the scale.
31517         (UnderlineThickness): Same here.
31518         (TextFontDescription): Added a scale, default to 1.0
31519         (CreatePattern): Set the scale on the pattern.
31520         (UnsetFields): When unsetting values, restore them to their
31521         default values.
31522         (Merge): Merge the scale.
31523         (GetScale): New method.
31524         (SetScale): New method.
31526 2007-10-16  Chris Toshok  <toshok@ximian.com>
31528         * dependencyobject.cpp (detach_depobj_values): call
31529         obj->SetParent(NULL) here as well, so we don't reference a
31530         destroyed parent.
31532         * runtime.cpp (Surface::Surface): use Surface::timeline instead of
31533         a local variable.
31534         (Surface::~Surface): make sure to remove the surface's clock_group
31535         from the time manager.  Also, unref the timeline we create in the
31536         ctor.
31537         (runtime_shutdown): reimplement the oldest 10 alive object
31538         printing stuff in the face of using a hashtable.
31540         * runtime.h: add Surface::timeline, so we can clean it up in
31541         ~Surface.
31543         * dependencyobject.h (Base::) use a hash table to track alive
31544         objects instead of a list.  this speeds up things immensely.
31546         * clock.cpp (ClockGroup::~ClockGroup): call SetParent(NULL) on our
31547         children so any further GetParent() calls won't return a destroyed
31548         object.
31550         * animation.cpp (Storyboard::~Storyboard): guard against a crash
31551         when a parent clock is freed before the child clock.
31553         * text.cpp (TextBlock::TextBlock): plug a couple memory leaks.
31555 2007-10-15  Chris Toshok  <toshok@ximian.com>
31557         * animation.[h,cpp]: remove the strong reference from
31558         AnimationStorage to its target object, and instead use the
31559         EventObject::DestroyEvent to implement a weak reference.  See the
31560         TODO for a blurb about generalizing this.
31562         * typegen.cs (GenerateTypeCpp): remove the special case code that
31563         makes INVALID the parent of DEPENDENCY_OBJECT - we need it to have
31564         EVENTOBJECT as the parent for the DestroyedEvent to line up
31565         properly in the event tables.
31567         * type.cpp.in, type.cpp (types_init_register_events): register the
31568         Destroyed event.
31570         * dependencyobject.[h,cpp]: add EventObject::DestroyedEvent,
31571         emitted just before we clean up the EventObject's event list.
31573 2007-10-15  Jeffrey Stedfast  <fejj@novell.com>
31575         * text.cpp (Layout): I think I finally figured out the scaling to
31576         apply to the units provided in the Indices property and also
31577         discovered that the Advance is not applied at the uOffset, it is
31578         applied independently of the uOffset.
31579         (Render): Same fixes as in Layout().
31581 2007-10-13  Chris Toshok  <toshok@ximian.com>
31583         * animation.cpp (balf): fix bug 325175 by not taking the square
31584         root of a negative number (fixes the flashing in the credits for
31585         Monotone.)  Also clean up this code so that we're not using
31586         globals to communicate parameters (through Simpson) between balf
31587         and BezierArcLength, and lower the tolerance (I doubt we need
31588         *that* much precision).
31590 2007-10-12  Chris Toshok  <toshok@ximian.com>
31592         * control.[h,cpp], brush.[h,cpp], text.[h,cpp], geometry.[h,cpp],
31593         dependencyobject.[h,cpp], shape.[h,cpp], animation.[h,cpp],
31594         transform.[h,cpp]: add an extra parameter to OnSubPropertyChanged,
31595         which gives the actual object whose property changed.  Also, in a
31596         few instances fix the NotifyAttachersOnPropertyChanged call that
31597         some classes used to not use the subprop, but the prop.  The
31598         subprop doesn't refer to "this" in those instances, but to @obj.
31599         @prop refers to "this".
31601         * collection.[h,cpp]: use the above change to correctly support
31602         the DependencyObject parameter of OnCollectionChanged (when the
31603         change type is ItemChanged).
31604         
31605         * uielement.[h,cpp], panel.[h,cpp]: use the above two changes to
31606         move the ZIndex property support from UIElement to Panel, which
31607         makes more logical sense (and is likely the reason MS removed the
31608         property from UIElement in 1.1) -- ZIndex is about what happens to
31609         this UIElement in relation to its siblings.
31610         
31611 2007-10-12  Sebastien Pouliot  <sebastien@ximian.com>
31613         * shape.cpp: Only set miter limit if line join is set to miter.
31615 2007-10-12  Chris Toshok  <toshok@ximian.com>
31617         * collection.cpp: move the panel logic away from VisualCollection.
31618         It belongs in Panel::OnCollectionChanged.
31620         * panel.cpp: flesh out Panel::OnCollectionChanged, making it do
31621         everything the VisualCollection code used to do on its behalf.
31623         * uielement.h, uielement.cpp: introduce a new field for use with
31624         the dirty code - force_redraw_of_new_bounds.  Basically, we set
31625         the field according to the parameter passed to UpdateBounds.
31627         * dirty.cpp (UpdateBounds): force an invalidate if
31628         el->force_redraw_of_new_bounds is set.
31630 2007-10-12  Chris Toshok  <toshok@ximian.com>
31632         * clock.h, clock.cpp: add some Timeout functions (AddTimeout,
31633         RemoveTimeout) which wrap the glib timeout calls we were making.
31634         This lets us keep track of active timeout ids and remove them all
31635         when the TimeManager shuts down.  So, if we leak MediaElements
31636         (which seems to be happening in TopBanana), we don't crash.
31638         * mplayer.cpp: use the new TimeManager timeout call instead of the
31639         glib mainloop directly.
31641         * media.cpp: same.
31642         
31643 2007-10-12  Jeffrey Stedfast  <fejj@novell.com>
31645         * downloader.cpp (downloader_init): Default the DownloadProgress
31646         to 0.0.
31648 2007-10-12  Jackson Harper  <jackson@ximian.com>
31650         * downloader.h: Add an access to the downloader state.  I need
31651         this in the plugin.
31653 2007-10-12  Jb Evain  <jbevain@novell.com>
31655         * brush.cpp|h: add image_brush_set_source.
31657 2007-10-11  Jeffrey Stedfast  <fejj@novell.com>
31659         * mplayer.cpp (convert_to_rgb): Worked around an swscaler crash
31660         where it doesn't handle J-Type picture frames.
31662 2007-10-11  Sebastien Pouliot  <sebastien@ximian.com>
31664         * panel.cpp|h: Split Render into Render and RenderChildren, so 
31665         the later can be overriden in InkPresenter.
31666         * stylus.cpp|h: A quick (see FIXME) implementation to render 
31667         ink found in some xaml files.
31669 2007-10-11  Jeffrey Stedfast  <fejj@novell.com>
31671         * mplayer.cpp: Updated to use the new Queue class.
31672         (AdvanceFrame): Accessing the queue directly as a linked list
31673         allows us to simplify the loop a little so that we don't have to
31674         keep a reference to the previous packet's decoded frame.
31676         * list.cpp: Added a new Queue class which will replace GAsyncQueue
31677         in mplayer.cpp.
31679 2007-10-11  Jeffrey Stedfast  <fejj@novell.com>
31681         * mplayer.cpp: Added ctors/dtors for Audio and Video structs.
31682         (AdvanceFrame): Keep a reference to the previous frame in case we
31683         reach the end of the queue.
31685 2007-10-11  Jb Evain  <jbevain@novell.com>
31687         * dependencyobject.cpp|h: add dependency_object_set_name.
31689         * media.cpp|h: add media_attribute_get_value and
31690         media_attribute_set_value
31692         * playlist.cpp|h: populate MediaAttributeCollection when
31693         a playlist entry is opened.
31695 2007-10-11  Larry Ewing  <lewing@novell.com>
31697         * dirty.cpp, uielement.cpp|h: Use gdk_regions to tract dirty
31698         areas... have more fun in general.
31699         
31700         * src/rect.h: replace Floor function with RoundOut function.
31701         * panel.cpp, dirty.cpp: use RoundOut where appropriate.  Fixes
31702         clipping issue in sprawl.
31704 2007-10-11  Sebastien Pouliot  <sebastien@ximian.com>
31706         * xaml.cpp: Let InkPresenter handle childs like a Canvas (from 
31707         which it inherits)
31709 2007-10-11  Jb Evain  <jbevain@novell.com>
31711         * playlist.cpp: replace C++ casts to plain casts.
31713 2007-10-11  Jb Evain  <jbevain@novell.com>
31715         * collection.cpp: replace dynamic_casts with plain casts
31716         as per Miguel suggestion.
31718 2007-10-11  Jb Evain  <jbevain@novell.com>
31720         * collection.cpp|h: add, implement and expose the
31721         MediaAttributeCollection::GetItemByName method.
31723 2007-10-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31725         * downloader.cpp, downloader.h: Fix some const char/char mismatch warnings.
31727 2007-10-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31729         * text.h, animation.h, text.cpp: Fix some const char/char mismatch warnings.
31730         * dependencyobject.h, dependencyobject.cpp, animation.cpp: Remove some const
31731           char/char mismatch warnings.
31732         * visual.cpp: Fix no newline warning.
31733         * runtime.cpp: Fix a initialization warning.
31734         * demo.cpp: Remove unused variable.
31736 2007-10-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31738         * dependencyobject.cpp: base_unref_delayed: do nothing if base is NULL,
31739           matches base_unref behaviour.
31740         * dependencyobject.h: Use g_atomic_int* to make ref counting atomic
31741           operations.
31743 2007-10-10  Chris Toshok  <toshok@ximian.com>
31745         * runtime.cpp (runtime_shutdown): explicitly drain all remaining
31746         pending managed unrefs.
31748         * dependencyobject.cpp: remove the Base::ref/unref implementations
31749         from here.  Add the threadsafe base_unref_delayed code, as well as
31750         code to manage a tick call to free up the instances on the next
31751         clock tick.  Also provide an external api (drain_unrefs -- bad
31752         name, fix me plz k thx) so that runtime.cpp can explicitly unref
31753         everything when we shutdown (if they haven't already been dealt
31754         with.)
31756         * dependencyobject.h: clean up the OBJECT_TRACKING ifdefs so that
31757         we don't have 2 implementations of all these methods.  Instead,
31758         just ifdef the relevant portions of the methods, and keep them in
31759         dependencyobject.h.  Also, add prototypes for drain_unrefs and
31760         base_unref_delayed, which is called from managed code.
31762         * collection.h, collection.cpp: make Clear take an optional
31763         "emit_event" argument (default = true.)  Call Clear instead of
31764         list->Clear(true) in our dtor so we clean up the namespaces and
31765         Detach properly.
31767         * debug.cpp: use an extern "C" block. looks nicer.
31769 2007-10-10  Sebastien Pouliot  <sebastien@ximian.com>
31771         * brush.cpp: Handle GradientStop with negative offset like 
31772         Silverlight (seems to) do.
31774 2007-10-10  Chris Toshok  <toshok@ximian.com>
31776         * panel.cpp (Panel::~Panel): no need to clear our Children
31777         collection.  the normal dtor stuff will do that for us.
31779 2007-10-10  Larry Ewing  <lewing@novell.com>
31781         * media.cpp: Fill with the element extents don't just paint the
31782         surface because if the stretch is specified we may end up painting
31783         outside the proper area.
31785 2007-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31787         * media.cpp: When updating the MediaElement's progress, get the Downloader's
31788           DownloadProgressProperty.
31790 2007-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31792         * visual.cpp, visual.h: Added visual_set_surface, and guard against
31793           overwriting a set surface with null.
31795 2007-10-10  Jackson Harper  <jackson@ximian.com>
31797         * collection.cpp: Set the surface when adding a visual element.
31799 2007-10-10  Jackson Harper  <jackson@ximian.com>
31801         * shape.cpp: We need to do something when line properties are
31802         changed. Fixes test-animation-line.xaml
31804 2007-10-10  Jackson Harper  <jackson@ximian.com>
31806         * xaml.cpp: Don't allow the same property to be set twice.
31808 2007-10-09  Jackson Harper  <jackson@ximian.com>
31810         * xaml.cpp: When we create custom elements we also need to set the
31811         surface on them and mark them for cleanup.
31813 2007-10-09  Jackson Harper  <jackson@ximian.com>
31815         * xaml.cpp: When we are creating objects from a string, set the
31816         encoding to utf8 so that expat doesn't try to determine the
31817         encoding from the ?xml declaration (which will be incorrect
31818         because the string is in utf8).
31820 2007-10-09  Chris Toshok  <toshok@ximian.com>
31822         * clock.cpp (ClockGroup::Stop): If the clock group has children we
31823         depend on stopping them first.  But if the clock group is without
31824         children, chain up to Clock::Stop here.
31826 2007-10-09  Jb Evain  <jbevain@novell.com>
31828         * uielement.h: define new methods RenderClipPath and
31829         IntersectBoundsWithClipPath.
31830         * uielement.cpp: implement them.
31831         * panel.cpp, shape.cpp, media.cpp: use them.
31833 2007-10-09  Chris Toshok  <toshok@ximian.com>
31835         * clock.cpp, trigger.cpp, uielement.cpp, geometry.cpp, shape.cpp,
31836         frameworkelement.cpp, transform.cpp, media.cpp, animation.cpp,
31837         brush.cpp, text.cpp: s/Attachee/Attacher.
31839         * dependencyobject.h: couple of Detach changes: 1) Add a DetachAll
31840         call that is used at dtor time to call Detach on all
31841         DependencyObject-subclassed Values, and 2) make NULL available in
31842         detach as a wildcard - passing NULL for the property detaches all
31843         properties that the current object might be watching on.
31845         Also, correct a longstanding problem in terminology/api.  if A's
31846         code calls B->Attach (..., this), then A is the Attacher, not the
31847         Attachee.  Basically s/Attachee/Attacher in all places,
31848         everywhere.
31850         * dependencyobject.cpp: same changes as above.  Also, change the
31851         current_values hash table to key off the DependencyProperty, not
31852         off the DependencyProperty name.  This allows us to use a direct
31853         hash, as opposed to a string hash.
31854         
31855         * collection.cpp (dtor): make sure sure to detach from all the
31856         list elements before we clear the list.
31858 2007-10-09  Jeffrey Stedfast  <fejj@novell.com>
31860         * font.cpp (Layout): Only break words on ASCII lwsp, we should not
31861         break on nbsp's for example.
31863 2007-10-09  Jackson Harper  <jackson@ximian.com>
31865         * xaml.cpp: Make sure the Surface gets set on custom created
31866         UIElements.  Also add them to the created list, so they get freed.
31868 2007-10-09  Jackson Harper  <jackson@ximian.com>
31870         * control.cpp: Since controls are UIElements we need to make sure
31871         their surface is set when we create them from XAML.
31873 2007-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31875         * dependencyobject.cpp: resolve_property_path: Add a nullcheck.
31877 2007-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31879         * debug.cpp, debug.h: Conditionally compile support for managed stack
31880           frames.
31882         * runtime.cpp: add more debug code.
31884 2007-10-08  Jeffrey Stedfast  <fejj@novell.com>
31886         * text.cpp (OnPropertyChanged): We may need to relayout even if
31887         the wrapping is set to NoWrap.
31889 2007-10-08  Zoltan Varga  <vargaz@gmail.com>
31891         * text.cpp (OnPropertyChanged): Do a relayout if the Width property
31892         changes and text wrapping is enabled.
31894 2007-10-08  Jeffrey Stedfast  <fejj@novell.com>
31896         * mplayer.cpp (Open): If the media has video, load the first video
31897         frame.
31898         (Seek): Same.
31899         (AdvanceFrame): Fixed to "end" properly.
31901         * media.cpp: Don't manually call DisplayFrame() anymore.
31903 2007-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31905         * xaml.cpp: Set the surface of newly created objects (where applicable).
31906         * canvas.h, uielement.h, canvas.cpp: Move the surface field to Visual.
31907         * playlist.cpp, media.cpp, text.cpp: Create the downloader using Surface'
31908           brand new CreateDownloader method.
31909         * visual.h: Added a surface field, complete with setters and getters.
31910         * downloader.cpp, downloader.h: Add a context field.
31911         * runtime.h: Add a downloader_context field, and CreateDownloader methods.
31912         * runtime.cpp: Add a downloader_context field.
31914 2007-10-09  Larry Ewing  <lewing@novell.com>
31916         * media.cpp: add clipping to shape::DoDraw and to the bounds
31917         computations.
31919 2007-10-08  Larry Ewing  <lewing@novell.com>
31921         * media.cpp:
31922         * panel.cpp: intersect the bounds with the clip path to
31923         optimize the invalidated region.
31925         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
31926         with a NULL.
31928 2007-10-08  Larry Ewing  <lewing@novell.com>
31930         * media.cpp:
31931         * panel.cpp: intersect the bounds with the clip path to
31932         optimize the invalidated region.
31934         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
31935         with a NULL.
31937 2007-10-08  Larry Ewing  <lewing@novell.com>
31939         * media.cpp:
31940         * panel.cpp: intersect the bounds with the clip path to
31941         optimize the invalidated region.
31943         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
31944         with a NULL.
31946 2007-10-08  Larry Ewing  <lewing@novell.com>
31948         * media.cpp:
31949         * panel.cpp: intersect the bounds with the clip path to
31950         optimize the invalidated region.
31952         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
31953         with a NULL.
31955 2007-10-08  Larry Ewing  <lewing@novell.com>
31957         * media.cpp:
31958         * panel.cpp: intersect the bounds with the clip path to
31959         optimize the invalidated region.
31961         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
31962         with a NULL.
31964 2007-10-08  Larry Ewing  <lewing@novell.com>
31966         * runtime.cpp: change previous logic to drop the alpha
31967         completely here until more testing can be done.
31969 2007-10-08  Larry Ewing  <lewing@novell.com>
31971         * runtime.cpp: draw the background color blended over white.
31973 2007-10-08  Larry Ewing  <lewing@novell.com>
31975         * media.cpp: render clip paths on media elements.
31977 2007-10-07  Larry Ewing  <lewing@novell.com>
31979         * xaml.cpp:
31980         * rect.cpp:
31981         * point.cpp:
31982         * array.cpp: use g_utf8_next_char in some places to start making
31983         the parsers more utf8 safe.  Make rect/point_from_str more robust
31984         against separator characters
31986 2007-10-07  Chris Toshok  <toshok@ximian.com>
31988         * clock.cpp (Clock::Tick): make sure we're reversed before
31989         switching to Fill if the clock is at 0 (and make sure we're not
31990         reversed before switching to Fill on the other end of the
31991         timespan).  Some animations were skipping directly to fill without
31992         ever running.
31993         (ClockGroup::Tick): don't Tick a child clock if it's about to
31994         Stop.  the new tick might cause it to fill.. this needs work
31995         still.
31997 2007-10-06  Jb Evain  <jbevain@novell.com>
31999         * media.cpp (Image::Render): Deal with clipping.
32001 2007-10-05  Chris Toshok  <toshok@ximian.com>
32003         * animation.cpp (KeyFrameComparer): fix airlines (and probably a
32004         host of other keyframe usage besides).  The problem was that this
32005         function was treating its args as keyframe*'s, when in actuality
32006         they were keyframe**'s.  that explains the intermittent nature of
32007         the bug, as well as the faulty sorting I was experiencing earlier.
32009         * clock.cpp (TimeManager::Tick): reinstate the throttling, yay.
32011 2007-10-05  Chris Toshok  <toshok@ximian.com>
32013         * clock.cpp (TimeManager::Tick): I have no idea how this is
32014         possible, but the throttle code is *completely* screwing up the
32015         Airlines demo animations.
32017 2007-10-05  Jackson Harper  <jackson@ximian.com>
32019         * control.cpp: need to pass this down.  Fixes dragging controls in
32020         top banana.
32022 2007-10-05  Jeffrey Stedfast  <fejj@gnome.org>
32024         * media.cpp (DownloaderComplete): Call mplayer->DisplayFrame() in
32025         the paused case.
32026         (Stop): Here too.
32027         (SetValue): And here too after a Seek() (altho it won't work if
32028         the media is paused).
32030         * mplayer.cpp (AdvanceFrame): Introduced a new bool variable,
32031         update, which is true if any avcodec_decode_video() sets redraw to
32032         true.
32033         (DisplayFrame): New method largely based on JB's work to load the
32034         current video frame into the mplayer surface.
32036 2007-10-05  Jb Evain  <jbevain@novell.com>
32038         * media.cpp|h, playlist.cpp|h: Don't open the first entry
32039         when a playlist entry has been stopped before switching to
32040         the next one.
32042 2007-10-04  Chris Toshok  <toshok@ximian.com>
32044         * clock.cpp: fix a couple of compilation warnings, and tighten up
32045         the list_clocks output.
32047 2007-10-04  Jeffrey Stedfast  <fejj@gnome.org>
32049         * text.cpp (SetIndices): Use g_ascii_strtod() instead of strtod()
32050         since it is not locale dependant.
32052         * rect.cpp (rect_from_str): Same.
32054         * point.cpp (point_from_str): Same.
32056         * xaml.cpp (get_point): Fixed to update *in properly on success.
32058 2007-10-05  Jb Evain  <jbevain@novell.com>
32060         * media.cpp: correctly advertise 'Opening' state of MediaElement.
32062 2007-10-04  Jeffrey Stedfast  <fejj@novell.com>
32064         * xaml.cpp: (more_points_available): Simplified by looping while
32065         isspace. Also, update our input pointer if we have to scan over
32066         lwsp.
32067         (get_point): Now returns bool based on whether it manages to
32068         extract a point or not.
32069         (geometry_from_str): Updated.
32071 2007-10-04  Jackson Harper  <jackson@ximian.com>
32073         * xaml.cpp: Points after the initial two line points should
32074         actually create new line segments, not a polyline, this fixes
32075         relative points on multiple lines.
32077 2007-10-04  Jeffrey Stedfast  <fejj@novell.com>
32079         * text.cpp (TextBlock): Can't use GetValue() here yet as stuff
32080         hasn't completely been initialized.
32081         (Glyphs::SetIndices): Do not do scaling here, this seems to be
32082         font size dependant.
32084         * shape.cpp (DoDraw): Use 'delete []' to free dmul.
32086 2007-10-04  Jackson Harper  <jackson@ximian.com>
32088         * xaml.cpp: Handle repeated bezier segments properly.
32090 2007-10-04  Chris Toshok  <toshok@ximian.com>
32092         * clock.cpp: lots of little changes.  fixes clock16.xaml, and
32093         therefor the score animation in dr.popper goes away properly.
32094         also fixes a few other issues with FillBehavior (checked by our
32095         clock xaml tests.)
32097 2007-10-04  Jeffrey Stedfast  <fejj@gnome.org>
32099         * text.cpp (Glyphs::.ctor): We no longer have a TextFont member
32100         variable.
32101         (Layout): Use a local TextFont variable.
32102         (Render): Same.
32103         (text_init): Always call font_init() as Glyphs use it even when
32104         text=pango is specified.
32106 2007-10-04  Sebastien Pouliot  <sebastien@ximian.com>
32108         * shape.cpp|h: Shapes that uses their Width and Height must use
32109         them for brush size. Fix brush rendering when used with 
32110         UIElement.RenderTransform property.
32112 2007-10-03  Chris Toshok  <toshok@ximian.com>
32114         * text.cpp: make Glyphs usable even when text=pango.  "usable"
32115         means "don't crash" :)
32117 2007-10-03  Chris Toshok  <toshok@ximian.com>
32119         * uielement.h: rename UseAA() to EnableAntiAlias().  it's
32120         arguably a better name, and more importantly it's the name that
32121         media.cpp/h changed it too, which broke the AA hack used in
32122         dirty.cpp.
32124         * dirty.cpp (process_dirty_elements): rename UseAA() to
32125         EnableAntiAlias().
32127 2007-10-03  Sebastien Pouliot  <sebastien@ximian.com>
32129         * array.cpp: Move double array allocations back to new/delete.
32131 2007-10-03  Jeffrey Stedfast  <fejj@novell.com>
32133         * font.cpp (EmSize): Removed, not needed.
32134         (GetGlyphInfo): Commented out vertical glyph metrics, saves a fair
32135         bit of memory that we aren't using.
32137         * text.cpp (TextBlock::SetFontSource): Implemented.
32138         (text_init): Default StyleSimulations to None.
32140 2007-10-03  Sebastien Pouliot  <sebastien@ximian.com>
32142         * brush.cpp|h: SL and Cairo defaults to different values (end 
32143         color versus start color) when a gradiant is restricted to a 
32144         single color (e.g. if the start and end points of a linear 
32145         gradient are identical).
32147 2007-10-03  Jeffrey Stedfast  <fejj@novell.com>
32149         * text.cpp: Implemented the Glyphs element.
32151         * font.cpp: Made GlyphMetrics and GlyphInfo structs public for use
32152         with the the Glyphs element implemented in text.cpp.
32153         (GetGlyphInfo): Fixes to allow loading of the index=0 glyph.
32154         (GetGlyphInfoByIndex): New method.
32155         (CreatePattern): If the filename is specified, don't call
32156         FcFontMatch(), simply return the constructed pattern.
32158 2007-10-02  Chris Toshok  <toshok@ximian.com>
32160         * clock.h, clock.cpp: remove TimeManager::current_fps, it's
32161         unused.
32163 2007-10-02  Chris Toshok  <toshok@ximian.com>
32165         * runtime.cpp (Surface::UpdateFullScreen): just call
32166         gtk_window_fullscreen instead of setting decorations/above
32167         manually.  this puts us on top of the panel.
32169 2007-10-02  Chris Toshok  <toshok@ximian.com>
32171         * clock.h, clock.cpp: rip out the old stupid throttling code and
32172         replace it with an exponential moving average of the delays.
32174 2007-10-02  Chris Toshok  <toshok@ximian.com>
32176         * clock.h, clock.cpp: add Timeline::Get/SetSpeedRatio methods, and
32177         use them to make test/xaml/clock8.xaml work.
32179 2007-10-02  Larry Ewing  <lewing@novell.com>
32181         * shape.cpp (Path::ComputeBounds): use the specified width/height
32182         if stretch is != StretchNone.  Fixes rendering issues with halo
32183         and several other sites.
32185 2007-10-02  Chris Toshok  <toshok@ximian.com>
32187         * animation.h, animation.cpp: override Stop() on AnimationClocks
32188         so we can reset the property value to the baseValue stored in our
32189         AnimationStorage.
32191         * clock.h, clock.cpp: fix the starting of stopped clockgroups when
32192         there are active children (fixes the storyboards running for 1
32193         tick then stopping).  Add more convoluted code in order to get the
32194         expected behavior when FillBehavior=Stop on a storyboard.
32196 2007-10-02  Chris Toshok  <toshok@ximian.com>
32198         * clock.h, clock.cpp: a few changes.  quit with all the delay
32199         computation in the throttling code, and just deal with fps until
32200         we're ready to switch to delays.  it simplifies everything a
32201         bunch.  Also, narrow the type for Clock::Get/SetParent to
32202         ClockGroup.  Add some rudimentary code for printing out the state
32203         of all clocks (use TimeManager::Instance()->ListClocks() or
32204         time_manager_list_clocks()).  Also, remove the TimeManager::Tick
32205         code which started clocks.  This commit changes the way
32206         storyboards are registered, so the only things in the
32207         TimeManager's list should be the per-surface ClockGroups, which
32208         are started in Storyboard::Begin (if they aren't already running.)
32210         * collection.cpp (VisualCollection::Add): this is a bug waiting to
32211         happen.  Call VisualUpdate (thereby setting the child's parent and
32212         initializing the transforms/opacity) before emitting Loaded on the
32213         child.
32215         * animation.h, animation.cpp: Storyboards now add their clocks to
32216         the per-surface ClockGroup.  This involves some groveling to find
32217         the surface, but it's nothing we haven't seen before.  There's no
32218         direct TimeManager calls here now - stopping the surface's
32219         ClockGroup will stop all animations running on it.
32221         * runtime.h, runtime.cpp: add the per-surface ClockGroup.  all
32222         storyboards attach to this, and this attaches to the TimeManager.
32223         
32224 2007-10-02  Jackson Harper  <jackson@ximian.com>
32226         * media.cpp: Some default values to avoid nullref exceptions.
32228 2007-10-02  Sebastien Pouliot  <sebastien@ximian.com>
32230         * xaml.cpp: Add support for 'F' in the PML parser to enable setting
32231         the FillMode of Geometry objects. Removed default value set as it is 
32232         identical to the default property value.
32234 2007-10-02  Jb Evain  <jbevain@novell.com>
32236         * playlist.cpp|h: implemented start time for playlist entries.
32238 2007-10-02  Jb Evain  <jbevain@novell.com>
32240         * playlist.cpp|h, media.cpp|h: rename MediaSource::OpenSource to OpenInternal.
32242 2007-10-02  Larry Ewing  <lewing@novell.com>
32244         * uielement.cpp (UIElement::Invalidate): Only invalidate if
32245         opacity is > 0.
32246         * dirty.cpp (process_dirty_elements): be sure to invalidate before
32247         and after the opacity change.
32249 2007-10-02  Jb Evain  <jbevain@novell.com>
32251         * playlist.cpp: deal with non lowercase file exts.
32253 2007-10-01  Jeffrey Stedfast  <fejj@novell.com>
32255         * font.cpp: Reduced Glyph table memory usage.
32257 2007-10-01  Chris Toshok  <toshok@ximian.com>
32259         * dirty.cpp (process_dirty_elements): remove the special if checks
32260         which kept the ComputeBounds/Invalidate code from running on the
32261         toplevel surface.  Canvas::ComputeBounds() does the right thing
32262         for the toplevel surface, so we just trust it.  fixes invalidation
32263         of root canvases.
32265         * panel.cpp (OnPropertyChanged): remove the ComputeBounds call.
32266         (OnSubPropertyChanged): same.
32268 2007-10-01  Sebastien Pouliot  <sebastien@ximian.com>
32270         * brush.cpp|h: Change SetupBrush and SetupGradient signatures to 
32271         void (instead of the, now, unused bool);
32273 2007-10-01  Jeffrey Stedfast  <fejj@novell.com>
32275         * font.cpp (Layout): Made WrapWithOverflow closer to Silverlight's.
32277 2007-10-01  Sebastien Pouliot  <sebastien@ximian.com>
32279         * shape.cpp|h: Remove Path::IsFilled since the property 
32280         PathFigure::IsFilledProperty doesn't exists anymore.
32282 2007-10-01  Jeffrey Stedfast  <fejj@novell.com>
32284         * text.cpp (LayoutPango): Fixed Wrap vs WrapWithOverflow text
32285         wrapping.
32287         * font.cpp (Layout): Fixed the TextWrapping="Wrap" case.
32289 2007-10-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32291         * runtime.cpp: Only show the server as the url in the fullscreen
32292         message.
32294 2007-10-01  Sebastien Pouliot  <sebastien@ximian.com>
32296         * panel.cpp: Call ComputeBounds before invalidating on Background 
32297         changes. Fix parts of #327691 (like BubbleMark-CLR and Monotone).
32299 2007-10-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32301         * fullscreen.h, fullscreen.xaml: Added.
32302         * text.h: Make GetActualHeight and GetActualWidth public.
32303         * runtime.h, runtime.cpp: Added IsTopLevel (since there can be two toplevel
32304           objects now: the fullscreen message and the toplevle canvas),
32305           SetSourceLocation and Show/HideFullScreenMessage.
32306         * dirty.cpp: Use Surface::IsTopLevel instead of comparing directly agains
32307           Surface::GetTopLevel.
32309 2007-09-30  Zoltan Varga  <vargaz@gmail.com>
32311         * xaml.cpp (CreateManagedObject): Move the call to GetMapping ()
32312         to managed code.
32314         * text.cpp (text_destroy): Avoid crash if default_foreground_brush
32315         is not set.
32317 2007-09-28  Chris Toshok  <toshok@ximian.com>
32319         * Makefile.am: remove the XRANDR conditional here.  it's #defined
32320         in config.h now.
32322 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
32324         * font.cpp (CreatePattern): If a filename has been specified for
32325         loading a font, don't set family values. Also, call
32326         FcDefaultSubstitute() on the pattern before trying to find a
32327         match.
32329 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
32331         Optimization hack that saves time by not recalculating the layout
32332         when the foreground brush changes (since we'd have exactly the
32333         same layout).
32335         * font.cpp (TextRun): Now takes the address of the brush than the
32336         brush itself, so that when brushes change on the Inline, we get
32337         the brush change for free.
32339         * text.cpp (LayoutSilverlight): Pass the addresses of the
32340         foreground brushes to TextRun ctor and don't bother with the
32341         default foreground brush here, save that for ::Paint-time.
32342         (LayoutPango): Same idea as LayoutSilverlight().
32343         (Paint): Get the default foreground and pass that off to the
32344         pango/silverlight text renderers.
32345         (OnPropertyChanged): Don't force a re-layout if the property that
32346         changed was the TextBlock::ForegroundProperty.
32347         (OnCollectionChanged): Same (but for Inline::ForegroundProperty).
32349         * mango.cpp (mango_renderer_show_layout): Now takes a default_fg
32350         argument so that we don't have to specify it in the creation of
32351         our layout attributes (this saving us a re-layout when a brush
32352         changes).
32353         (mango_attr_foreground_new): Now takes the address of the brush
32354         rather than the brush itself, so that when brushes change on the
32355         Inline, we get the brush change for free.
32357 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
32359         * text.cpp (TextBlock): We cannot re-use the
32360         default_foreground_brush here because we cannot allow it to be
32361         altered in any way.
32363 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
32365         * font.cpp (TextFont::IsScalable): New method.
32366         (TextFont::Path): Paths a glyph but does not stroke or fill. Only
32367         available if the font is scalable.
32368         (TextLayout::Render): Cache each segment's cairo_path_t so that
32369         future renders do not have to do it on a glyph-by-glyph basis
32370         (avoids possible glyph cache misses). May also save time by doing
32371         a single fill rather than a fill per glyph.
32373 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
32375         * font.cpp (RenderGlyphBitmap): No longer takes a TextDecorations
32376         argument.
32377         (RenderGlyphPath): Same.
32378         (UnderlinePosition): New method.
32379         (UnderlineThickness): New method.
32380         (TextLayout::Render): Draw our underline here in 1 stroke (haha, I
32381         made a funny).
32383 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
32385         * text.cpp (LayoutSilverlight): LineBreaks don't really care about
32386         TextDecorations or Foreground properties.
32388         * font.cpp (TextRun::~TextRun): unref the font.
32389         (TextSegment): now references the original TextRun instead of
32390         copying pointers/values.
32391         (TextLayout::Render): Updated for above change.
32393 2007-09-28  Zoltan Varga  <vargaz@gmail.com>
32395         * xaml.cpp (SetNameAttribute): New callback to enable managed code to process
32396         x:Name attributes.
32397         (LoadCode): Change return type to bool to indicate a loading error.
32399 2007-09-28  Jeffrey Stedfast  <fejj@gnome.org>
32401         * media.cpp (SingleMedia::~SingleMedia): Close the media stream.
32402         (MediaElement::AdvanceFrame): If mplayer->AdvanceFrame() returns
32403         false, then it signifies MediaEnded, no need to explicitly check.
32404         (MediaElement::SetSource): Delete the current source here.
32405         (MediaElement::~MediaElement): C++ `delete' operator doesn't
32406         handle freeing NULL pointers.
32407         (MediaElement::DownloaderComplete): No need to delete the source
32408         here, done in SetSource() instead.
32410         * font.cpp: Created my own GlyphMetrics struct which uses doubles
32411         instead of ints for more accurate layout/rendering calculations.
32412         (Layout): When comparing to max_width, add 1.0 to account for
32413         rounding errors/hinting. Add 1.0 to the Actual/BoundingBox
32414         width/height values for the same reason.
32416 2007-09-28  Sebastien Pouliot  <sebastien@ximian.com>
32418         * xaml.cpp: Free locally allocated Points inside get_point_array.
32420 2007-09-28  Jeffrey Stedfast  <fejj@gnome.org>
32422         * font.cpp (GetGlyphInfo): Don't cache the bitmap if we're caching
32423         the path.
32425 2007-09-28  Sebastien Pouliot  <sebastien@ximian.com>
32427         * shape.cpp: ComputeBoundsSlow is no more so we can re-enable the
32428         thickness == 0 optimization.
32430 2007-09-27  Jeffrey Stedfast  <fejj@novell.com>
32432         * xaml.cpp (flush_char_data): g_strchomp() the cdata (as
32433         Silverlight does).
32435         * text.cpp: Merged with custom text layout code - layout algorithm
32436         is chosen at runtime_init() via flags or environment variable.
32438 2007-09-27  Jeffrey Stedfast  <fejj@novell.com>
32440         * runtime.cpp (runtime_init): Don't check pango version info,
32441         we're just gonna statically link in pango (and/or do
32442         configure-time checks if the user decides to link to a system
32443         pango). Implemented some preliminary environment variable parsing
32444         action to decide if the user wnts to use ffmpeg vs ms codecs,
32445         pango vs my "silverlight" text layout engine, etc.
32447 2007-09-27  Jeffrey Stedfast  <fejj@novell.com>
32449         * runtime.cpp (runtime_init): Now takes a flags argument for
32450         enabling/disabling features. If RUNTIME_INIT_BROWSER is not set,
32451         then make sure pango is recent enough (if not, print a warning
32452         akin to the cairo warning).
32454 2007-09-27  Sebastien Pouliot  <sebastien@ximian.com>
32456         * array.cpp: Fix issues on double parsing, including bug #328915 and
32457         test cases in /moon/test/xaml/points-torture.xaml
32459 2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32461         * animation.cpp: Add a few null checks.
32463 2007-09-27  Larry Ewing  <lewing@novell.com>
32465         * media.cpp: Don't mark our download progress as 100% until we've
32466         been notified by the downloader that it is complete.  Some
32467         programs check download progress to decide when they can safely
32468         poke at the media element properties.
32469         * downloader.cpp: set the final downloader progress to 1.0 not 100.
32471 2007-09-27  Sebastien Pouliot  <sebastien@ximian.com>
32473         * xaml.cpp: Don't freak out if <?xml ... ?> isn't on the first 
32474         line. Fix bug #328907.
32476 2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32478         * control.h, control.cpp: Added control_initialize_from_xaml_callbacks, and
32479           change InitializeFromXaml to take a XamlLoader argument.
32481 2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32483         * xaml.cpp: More unrefs.
32485 2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32487         * text.cpp: Unref a few newly created objects.
32488         * control.cpp: Remove an unnecessary ref.
32490 2007-09-26  Zoltan Varga  <vargaz@gmail.com>
32492         * text.cpp (SetValue): Implement proper handling of the Text property.
32493         (GetValue): Ditto.
32494         (OnPropertyChanged): Force a relayout when the foreground property changes.
32495         (Layout): Remove the laying out of the contents of the Text property, since the
32496         text is now contained in the first inline.
32497         
32498 2007-09-26  Jeffrey Stedfast  <fejj@novell.com>
32500         * font.cpp (Layout): Include the space char on the line before
32501         wrapping, this is noticable when TextDecorations="Underline" is
32502         enabled.
32503         (TextLayout::RenderGlyphBitmap): Moved to TextFont class.
32504         (TextLayout::RenderGlyphPath): Same. Also implemented underlining.
32505         (TextFont::Render): Implemented.
32507 2007-09-26  Sebastien Pouliot  <sebastien@ximian.com>
32509         * geometry.h: PathFigure::IsFilledProperty doesn't exist anymore
32510         (and was removed elsewhere, except here);
32512 2007-09-26  Chris Toshok  <toshok@ximian.com>
32514         * clock.cpp (TimeManager::Tick): a few changes.  first and
32515         foremost, fix the signs on the FPS_ADJUSTMENTS.  oops.  also, add
32516         a buffer of 50ms on either side of the timeout before we consider
32517         the Tick either slow or fast.  Increase the number of out-of-line
32518         ticks we need and decrease the fps adjustment.
32520 2007-09-26  Jeffrey Stedfast  <fejj@novell.com>
32522         * text.cpp (OnCollectionChanged): Needs to call Invalidate().
32524 2007-09-26  Chris Toshok  <toshok@ximian.com>
32526         * clock.cpp: initialize the min_timeout based on a good default
32527         max fps (60 in our case).  Also, calculate the fps adjustments in
32528         a nicer way.
32530         * runtime.cpp: remove the non-xrandr SetMaximumRefreshRate call -
32531         it's handled by TimeManager's default.
32533 2007-09-26  Jeffrey Stedfast  <fejj@novell.com>
32535         * font.cpp: A bunch of fixes/changes to mimic Microsoft's
32536         Silverlight TextBlock layout logic.
32538 2007-09-26  Andrew Jorgensen  <ajorgensen@novell.com>
32540         * Makefile.am: Added missing files for dist tarball
32542 2007-09-26  Chris Toshok  <toshok@ximian.com>
32544         * clock.h, clock.cpp: add some very naive, rather lame fps tuning.
32545         we just adjust fps by a fixed amount (4fps) either up or down, if
32546         a certain number (5, by default) of ticks in a row take either
32547         less or more time to complete (respectively), than the current
32548         timeout.
32550 2007-09-26  Sebastien Pouliot  <sebastien@ximian.com> 
32552         * moon-path.c: Fix typos.
32553         * shape.h: Remove old ComputeBounds[Slow|Fast] from header.
32555 2007-09-26  Sebastien Pouliot  <sebastien@ximian.com>
32557         * shape.h|cpp: Remove Line (direct path manipulation) hack.
32559 2007-09-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32561         * xaml.cpp: Unref collections and matrix transforms we create.
32563 2007-09-25  Sebastien Pouliot  <sebastien@ximian.com>
32565         * geometry.h|cpp, shape.cpp: Implement GetBounds without a cairo 
32566         context.
32568 2007-09-26  Zoltan Varga  <vargaz@gmail.com>
32570         * text.cpp (TextBlock): Set an empty string as a default Text property.
32571         (InsideObject): Implement this for text blocks.
32573 2007-09-25  Sebastien Pouliot  <sebastien@ximian.com>
32575         * font.cpp: Fix warning.
32577 2007-09-25  Larry Ewing  <lewing@novell.com>
32579         * brush.cpp|h: add image_brush_create_similar to simplify creating
32580         similar surfaces.  Use it where appropriate.
32582         * media.ccp: use image_brush_create_similar where possible. In
32583         MediaElement::Render draw with opacity directly rather than
32584         creating a temporary surface for every frame. Rework image opacity
32585         cache so that we don't have to recreate the surface every time. 
32587 2007-09-25  Jb Evain  <jbevain@novell.com>
32589         * media.cpp|h: let the MediaElement be the only one to trigger
32590         its own events, terminate its friendship with MediaBase.
32592 2007-09-25  Jb Evain  <jbevain@novell.com>
32594         * playlist.cpp|h: trigger a parsing error when no href attribute
32595         is found for base and ref elements.
32597 2007-09-25  Jb Evain  <jbevain@novell.com>
32599         * playlist.cpp|h, media.cpp: Auto play for playlists.
32601 2007-09-24  Jeffrey Stedfast  <fejj@novell.com>
32603         * font.cpp (Render): Fixed some y1 offset logic that didn't amke
32604         any sense (and was wrong afaict anyway). We now render exactly
32605         like Microsoft Silverlight.
32607 2007-09-24  Jb Evain  <jbevain@novell.com>
32609         * playlist.cpp: close the previous source before playing
32610         the next one.
32612 2007-09-24  Jb Evain  <jbevain@novell.com>
32614         * mplayer.cpp: on Close, reset height and width to zero.
32616 2007-09-24  Jeffrey Stedfast  <fejj@novell.com>
32618         * media.cpp (OnPropertyChanged): Set recalculate_matrix to true if
32619         either the NaturalWidth or NaturalHeight changes.
32621 2007-09-24  Jb Evain  <jbevain@novell.com>
32623         * media.cpp|h, playlist.cpp|h: refactor MediaSource so that
32624         only a SingleMedia deals with the MediaPlay directly. A playlist
32625         being a collection of either other playlist or singlemedias,
32626         playing one at a time.
32628 2007-09-24  Jb Evain  <jbevain@novell.com>
32630         * media.cpp, playlist.cpp: let the Media Sources change
32631         the state of the MediaElement (Playing/Paused/Stopped).
32633 2007-09-24  Jb Evain  <jbevain@novell.com>
32635         * media.h: let the media source change the properties
32636         of the media element. Make MediaSource friend of MediaElement
32637         to do so.
32638         * playlist.h, playlist.cpp: adjus to the changes in MediaSource.
32640 2007-09-24  Jeffrey Stedfast  <fejj@novell.com>
32642         * font.cpp: Added kerning.
32644         * mplayer.cpp: Added mutex locking for the target_pts variable.
32646 2007-09-24  Jb Evain  <jbevain@novell.com>
32648         * playlist.cpp: Playlist::IsPlaylistFile: return false
32649         on null argument.
32651 2007-09-23  Jb Evain  <jbevain@novell.com>
32653         * playlist.cpp: A base element stores the base in
32654         a href attribute, not in its body.
32656 2007-09-22  Chris Toshok  <toshok@ximian.com>
32658         * Makefile.am (USE_XRANDR): define USE_XRANDR.
32660         * runtime.cpp (Surface::realized_callback): get the RANDR screen
32661         config info, and set the TimeManager's max refresh to match the
32662         screen's .
32664         * clock.h, clock.cpp (TimeManager::SetMaximumRefreshRate): new
32665         method.
32667 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
32669         * xaml.h xaml.cpp: Add support for parsing x:Code elements and
32670         passing them to managed code.
32672 2007-09-21  Jeffrey Stedfast  <fejj@gnome.org>
32674         * mplayer.cpp (audio_play): Slightly optimized the volume
32675         adjustment loop.
32677         * font.cpp (Layout): Keep track of the line ascend and pad our
32678         extents with an extra pixel on all sides to account for hinting.
32679         (Render): Starts rendering glyphs 1 pixel in. Also modified the
32680         logic such that we didn't have to treat path/bitmap glyphs
32681         differently.
32683 2007-09-21  Jeffrey Stedfast  <fejj@novell.com>
32685         * font.cpp: Now handles scalable fonts by rendering their outline
32686         paths rather than rendering bitmaps.
32688         * moon-path.c (moon_path_move_to): Resize the path auto-magically
32689         if we don't have enough room. Same for all of the other
32690         line_to/curve_to/etc.
32692 2007-09-21  Jeffrey Stedfast  <fejj@gnome.org>
32694         * font.cpp (SetMaxWidth): Oops, set max_width = max (rather than
32695         the old width extents).
32696         (Layout): When breaking a long line, the new line height should
32697         not be set to 0 (duh), it should be set to the font height.
32699 2007-09-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32701         * xaml.cpp, xaml.h: Added a XamlLoaderCalbacks structure that contains all
32702           the callbacks XamlLoader needs. Added xaml_loader_set_callbacks for
32703           managed code to set them. Keep track of mappings in native code, call
32704           into managed code only if a mapping is not found here. Keep a list of
32705           missing assemblies, allows managed code to request downloading of
32706           several assemblies before trying to parse xaml again. Added
32707           XamlLoader::CreateManagedObject, tries to parse xmlns/name, if
32708           successful (and only then), requests a vm to be loaded, before calling
32709           into managed code to actually create the managed object.
32711 2007-09-20  Chris Toshok  <toshok@ximian.com>
32713         * type.cpp, type.cpp.in (types_init_register_events): register the
32714         LostFocus/GotFocus events.
32716         * uielement.h: add LostFocusEvent/GotFocusEvent.
32718         * uielement.cpp (uielement_init): lookup LostFocus/GotFocus events.
32720 2007-09-20  Jeffrey Stedfast  <fejj@gnome.org>
32722         * text.cpp (InsideObject): Removed.
32724         * font.cpp (Layout): Add the horiBearingX value of the last glyph
32725         in each line to the width of said line.
32726         (RenderGlyphBitmap): Cache the surface and use it as a mask when
32727         filling so that the true source pattern shows thru.
32729 2007-09-20  Jeffrey Stedfast  <fejj@novell.com>
32731         * mango.cpp (mango_renderer_draw_glyphs): Cache the paths that we
32732         render.
32733         (mango_renderer_show_layout): Instead of having pango render the
32734         text, do it ourselves using our cached paths from the previous
32735         call to mango_renderer_layout_path().
32736         (mango_renderer_layout_path): Clear our cache paths.
32738 2007-09-20  Jeffrey Stedfast  <fejj@novell.com>
32740         * text.cpp (OnPropertyChanged): Don't dirty actual width/height on
32741         foreground changes.
32742         (OnSubPropertyChanged): Same.
32744         * font.cpp (GetFont): No longer need to pass the size to
32745         TextFont::Load().
32746         (TextFont::Load): No longer needs the size argument.
32747         (TextFont::.ctor): We just get the size from the pattern now.
32748         (TextFontDescription::CreatePattern): Call FcFontMatch() on our
32749         generated font pattern here instead of having our lower-level
32750         TextFont::.ctor do it.
32751         (TextFont::Ascender): Use the size metrics so that this always
32752         works properly (at least it seems to).
32753         (TextFont::Height): Same.
32754         (TextLayout::Layout): Changed line-height logic a bit for
32755         LineBreaks.
32757 2007-09-20  Chris Toshok  <toshok@ximian.com>
32759         * type.cpp.in, type.cpp (LookupEvent): fix this to check in parent
32760         type event hashes as well if we don't find it in ours.
32762 2007-09-20  Sebastien Pouliot  <sebastien@ximian.com>
32764         * brush.cpp: Implemented MappingMode for LinearGradientBrush.
32765         Buttons from Dr Popper are now rendered correctly.
32767 2007-09-20  Chris Toshok  <toshok@ximian.com>
32769         * typegen.cs (GenerateTypeCpp): add a call to
32770         types_init_register_events.
32772         * type.h.in, type.cpp.in: add Type::RegisterEvent,
32773         Type::LookupEvent, Type::GetEventCount, and Type::GetEventBase.
32775         * type.cpp.in: add types_init_register_events, which registers all
32776         the events we care about for all the types.  we do it here to
32777         guarantee that events have been registered by the time any
32778         instance code is run for any type.
32779         
32780         * dependencyobject.h, dependencyobject.cpp: remove the event
32781         registration from EventObject, it's moving to Type.  so the Type
32782         will contain the name to id hash, and the EventObject will only
32783         contain an array of GSLists, where the index into that array is
32784         the event's id.
32785         
32786         * clock.cpp (clock_init): lookup the static events here.
32788         * runtime.cpp (runtime_init): same.
32790         * animation.cpp (animation_init): same.
32792         * downloader.cpp (downloader_init): same.
32794         * uielement.cpp (uielement_init): same.
32796         * src/clock.h, src/uielement.h, src/media.h, src/animation.h,
32797         src/type.h, src/runtime.h, src/downloader.h: events are static to
32798         the classes now, instead of being per-instance.
32800         * src/types.h src/types.cpp: regen.
32801         
32802 2007-09-20  Sebastien Pouliot  <sebastien@ximian.com> 
32804         * geometry.cpp: Avoid re-allocating path memory when possible.
32805         * moon-path.c|h: Added documentation and new moon_path_renew and 
32806         moon_path_clear functions to reduce memory re-allocations.
32807         * shape.cpp|h: Avoid re-allocating path memory when possible.
32809 2007-09-20  Sebastien Pouliot  <sebastien@ximian.com>
32811         * brush.cpp|h: Implemented MappingMode for RadialGradientBrush.
32812         Bubbles from bubblemark.com are now rendered correctly.
32814 2007-09-19  Sebastien Pouliot  <sebastien@ximian.com>
32816         * shape.cpp|h: Remove dead code.
32818 2007-09-19  Jeffrey Stedfast  <fejj@novell.com>
32820         * font.cpp: More fixes to make stuff build/work (more or less).
32822         * text.patch: Patch to make text layout/rendering use my new code
32823         rather than pango.
32825 2007-09-19  Chris Toshok  <toshok@ximian.com>
32827         * text.cpp (TextBlock::Layout): don't insert multiple fg_attrs.
32829 2007-09-19  Sebastien Pouliot  <sebastien@ximian.com>
32831         * moon-path.c|h: New. Create simple or complex paths without a
32832         (expensive) cairo_context_t using an API similar to cairo.
32833         * geometry.cpp|h: Use moon_path functions. Added (still inactive)
32834         code to compute bounds for paths.
32835         * shape.cpp|h: Use moon_path functions. Avoid Cairo extents API 
32836         for Polylines and Polygons. Still not perfect for large thickness 
32837         and steep angles but 8-10x faster and better (no artifact left) 
32838         than previous code, see new xaml animation tests).
32839         * rsvg.cpp|h: Adapt to use moon-path functions.
32840         * Makefile.am: Add moon-path.c and moon-path.h to the build.
32842 2007-09-19  Jeffrey Stedfast  <fejj@gnome.org>
32844         * font.cpp: More hackery.
32846 2007-09-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32848         * panel.cpp: Add a null check.
32849         * xaml.cpp: Created a list that contains most created elements in order to
32850           unref them once parsing is finished (we need to unref all created
32851           elements except the top one, but the parser callback functions don't
32852           know which is the top one, so we delay the unrefing until the end). If
32853           parsing is done manually (*_from_str, etc), just use unref.
32854         * text.h, text.cpp: Add text_destroy to properly destroy the default
32855           foreground brush on shutdown.
32856         * clock.cpp: When we allocate a clock, unref it after adding it to the
32857           group.
32858         * collection.h: Store the parent in the Node, since we can't call
32859           obj->GetParent () in a destructor (it will walk up the hierarchy using
32860           the type system, but since the parent can be in the destructor, the type
32861           system isn't reliable anymore).
32862         * mango.h, mango.cpp: MangoAttrForeground: hold a reference to the
32863           foreground brush, not to the element. Add a mango_renderer_get_type_safe
32864           that can reinitialize static variables (after a libmoon reload) from
32865           glib.
32866         * geometry.cpp, transform.cpp, brush.cpp: Use Value::CreateUnref for default
32867           values.
32868         * collection.cpp: Store the parent in the Node, since we can't call
32869           obj->GetParent () in a destructor (it will walk up the hierarchy using
32870           the type system, but since the parent can be in the destructor itself,
32871           the type system isn't reliable anymore).
32872         * dependencyobject.cpp: Attachee: don't hold a ref to the container anymore.
32873         * media.cpp: Sprinkle a few unrefs here and there.
32874         * animation.cpp: Don't ref root_clock, CreateClock already gives us a ref.
32875           Add a null check in the Storyboard destructor. Use Value::CreateUnref
32876           for default values.
32877         * runtime.cpp: Attach: Don't attach a null element. Call text_destroy on
32878           shutdown.
32880 2007-09-18  Jeffrey Stedfast  <fejj@gnome.org>
32882         Continued fixes to go along with Rolf's other TextBlock leak
32883         fixes.
32885         * mango.cpp (mango_attr_foreground_new): Don't ref the fg.
32886         (mango_attr_foreground_destroy): Don't unref the fg.
32888         * text.cpp (default_foreground): Make return a static reference.
32889         (Layout): Don't ref the fg.
32891 2007-09-17  Jeffrey Stedfast  <fejj@gnome.org>
32893         * font.cpp: more progress on text layout.
32895 2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32897         * xaml.cpp, xaml.h: Move callbacks from PluginXamlLoader back to XamlLoader.
32899 2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32901         * xaml.cpp: Fix warning.
32903 2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32905         [Removed mono dependency for 1.0 moonlight applications. 
32906         We now have a native [Plugin]XamlLoader that is the native counterpart of the 
32907         managed Loader object, the native loader handles xaml loading when the 
32908         mono runtime isn't loaded.]
32910         * xaml.cpp, xaml.h: Added a XamlLoader class that replaces the callbacks.
32911           Changed xaml_create_from* to take a loader (XamlLoader*) argument. This
32912           was necessary because the callback handler isn't given enough
32913           information (it needs to know the plugin, but this information is not
32914           passed on), and it now also avoids the potential problem of overwriting
32915           static callbacks when several plugins are created simultanously.
32916         * control.cpp, demo.cpp: Update according to API change.
32918 2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32920         * panel.cpp, dependencyobject.cpp, dirty.cpp: Add some null checks.
32922 2007-09-14  Jeffrey Stedfast  <fejj@novell.com>
32924         * font.cpp|h: New font/text rendering engine (e.g. replacement for
32925         pango). Nowhere near complete yet.
32927 2007-09-14  Miguel de Icaza  <miguel@novell.com>
32929         * media.cpp (Stop, Pause): Do not dereference source if it is not
32930         yet set (TopBanana does this).
32932 2007-09-13  Jb Evain  <jbevain@novell.com>
32934         * media.cpp|h, playlist.cpp|h: Work on playlist integration.
32936 2007-09-10  Jeffrey Stedfast  <fejj@novell.com>
32938         * mplayer.cpp (StopThreads): When resetting current_pts and
32939         target_pts, use the audio (or video) initial_pts value rather than
32940         0 since they are meant to be absolute pts values, not
32941         relative. This fixes a bug in the halo3 site where pressing Stop
32942         would cause the current time string to become "59:55" when it
32943         should have been "00:00".
32945         * media.cpp (OnPropertyChanged): Only Invalidate() on
32946         PositionProperty changes if we have video content to render. Fixes
32947         bug #82474.
32949         * mplayer.cpp (HasVideo): New method that returns true if the
32950         media source has video content.
32952 2007-09-10  Jeffrey Stedfast  <fejj@gnome.org>
32954         * mplayer.cpp (Duration): Only use audio duration as the defacto
32955         duration if we've got a valid pcm handle.
32957 2007-09-10  Chris Toshok  <toshok@ximian.com>
32959         * animation.cpp (HookupAnimationsRecurse): make the message
32960         involving failure to hookup a property more verbose.  Looks like
32961         MS is treating a TranslateTransform as a ScaleTransform in popfly
32962         - that is, they're trying to animate ScaleX on a
32963         TranslateTransform (which is oddly enough named "scale".)
32965         * media.cpp: Emit ImageFailedEvent if we failed to load the image.
32966         Remove that damn TODO printf.
32968         * media.h: add ImageFailedEvent to Image, and change signature of
32969         CreateSurface so we can return false if there's an error.
32971         * xaml.cpp (parser_error): use the new ParserErrorEventArgs ctor.
32973         * error.h: make these classes instead of structs, and also make
32974         them copy/free the type specific strings.  it'll result in more
32975         allocations but it cleans up the code using them.
32977 2007-09-07  Sebastien Pouliot  <sebastien@ximian.com>
32979         * shape.cpp: Fixed Polygon "special" case when it only has to draw
32980         a line. Fixed Line::ComputeBound (Shape::ComputeBoundFast wasn't 
32981         working) which is now 10x faster than calling ComputeBoundSlow (the
32982         working alternative). Started to reuse the same concept for Polyline
32983         and Polygon but the (#def-out) code doesn't yet handle line joins 
32984         correctly (so it still use the correct ComputeBoundSlow);
32986 2007-09-06  Chris Toshok  <toshok@ximian.com>
32988         * dirty.cpp (process_dirty_elements): some guards against unioning
32989         an empty rectangle.
32991 2007-09-06  Chris Toshok  <toshok@ximian.com>
32993         * runtime.cpp (Surface::Invalidate): only invalidate the actual
32994         rectangle.  The +1/-2 stuff is done in dirty.cpp, if it needs to
32995         be.
32997         * rect.h (Rect::Floor): drop fractional part of all values.
32999         * media.h,media.cpp: we cheat and turn off AA on MediaElements
33000         when they aren't rotated or skewed.
33002         * uielement.h, uielement.cpp: we need to keep track of 2
33003         dirty_rects.  one for the element itself, which is GrowBy(1)'ed in
33004         dirty.cpp if the child uses AA, and one for children who have
33005         passed their invalidation rect up the tree (we don't grow this
33006         one).  Also, add the default UseAA method, which returns true, and
33007         the ChildInvalidated method, which mirrors Invalidate(Rect r) but
33008         uses the children_dirt_rect.
33010         * panel.h, panel.cpp (Panel::~Panel): clear our children
33011         collection.
33012         (Panel::FindStartingElement): the meat of the optimization hack -
33013         we determine if we can skip parts of the tree if the expose
33014         rectangle exists completely within the bounds of an opaque
33015         element, unrotated, unskewed element.
33016         
33017         * dirty.cpp (process_dirty_elements): handle
33018         item->children_dirty_rect as well as item->dirty_rect.  Also, Grow
33019         the item's dirty_rect by 1 before combining them, if the item uses
33020         AA.
33022 2007-09-05  Jb Evain  <jbevain@novell.com>
33024         * playlist.cpp: the asx format is case insensitive, parse it
33025         accordingly.
33027 2007-09-05  Sebastien Pouliot  <sebastien@ximian.com>
33029         * animation.h: Make KeySpline::GetObjectType virtual.
33031 2007-09-05  Jb Evain  <jbevain@novell.com>
33033         * playlist.cpp, playlist.h: work on playlist parsing.
33035 2007-09-05  Jb Evain  <jbevain@novell.com>
33037         * xaml.h: export timespan_from_str.
33039 2007-09-05  Jb Evain  <jbevain@novell.com>
33041         * list.h, list.cpp: add Remove(Node) and RemoveAt(int) method.
33043 2007-09-04  Chris Toshok  <toshok@ximian.com>
33045         * media.cpp (Image::Render): unref the backing pixbuf as soon as
33046         possible.
33047         (Image::CleanupSurface): guard against double unreffing the
33048         backing pixbuf.
33050 2007-09-04  Chris Toshok  <toshok@ximian.com>
33052         * xaml.cpp (xaml_set_property_from_str): delete the color.
33053         (dependency_object_set_attributes): same.
33055 2007-09-04  Chris Toshok  <toshok@ximian.com>
33057         * media.cpp (Image::CreateSurface): if we need to create a new
33058         surface, make sure to unref the old one.
33060         * geometry.cpp (PathGeometry::PathGeomtry): use
33061         Value::CreateUnrefPtr (bad name, imo, but eh)
33062         (PathFigure::PathFigure): same.
33064 2007-09-04  Jb Evain  <jbevain@novell.com>
33066         * playlist.h, playlist.cpp: Work on the overall design.
33068 2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
33070         * brush.cpp (image_brush_create_pattern): Revert previous patch as
33071         it broke test suite.
33073 2007-09-04  Jb Evain  <jbevain@novell.com>
33075         * list.h, list.cpp: add a List::ForEach method.
33077 2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
33079         * brush.cpp (image_brush_create_pattern): Set CAIRO_FILTER_FAST
33080         (based on lewings performance patch).
33082 2007-09-04  Sebastien Pouliot  <sebastien@ximian.com>
33084         * text.h|cpp: TextBlock actual_[height|width] are already cached 
33085         because they're expansive to calculate. Make sure we don't compute
33086         them until they're really required (e.g. when a lot of properties
33087         changes when loading an XAML file).
33089 2007-09-04  Chris Toshok  <toshok@ximian.com>
33091         * animation.cpp (KeyFrameAnimation_ResolveKeyFrames): add the
33092         keyframes in reverse order so the sort works.
33094 2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
33096         * list.cpp (Insert): Fixed.
33098         * runtime.cpp (render_cb): Added some "FPS" debug spew.
33100         * media.cpp (AdvanceFrame): On MediaEnded, don't remove the source
33101         timeout id, by returning false, it is removed for us.
33103 Tue Sep 4 17:50:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
33105         * media.cpp: fix memory leaks and crashes when a download gets
33106         aborted.
33108 2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
33110         * mplayer.cpp: Changed all pts variables to int64_t from uint64_t
33111         as that seems to be what ffmpeg uses internally. Also added a new
33112         'eof' state so that we can easily tell if we've reached the end of
33113         the media stream (eof is true and no packets queued).
33115 2007-09-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
33117         * media.h, media.cpp: If we get a play request before the media is loaded,
33118           save the request and start playing when the media is loaded. Hopefully
33119           this is what MS is doing.
33121 2007-09-04  Jeffrey Stedfast  <fejj@gnome.org>
33123         * collection.cpp (Clear): Use list->IsEmpty () as it is cheaper
33124         than comparing the Length() to 0.
33126         * list.cpp: Added more tests.
33128 2007-09-03  Sebastien Pouliot  <sebastien@ximian.com> 
33130         * rect.cpp: Safer IsEmpty (handles negative values)
33131         * shape.cpp: In Shape::ComputeBoundsSlow make empty shape returns
33132         empty bounds. In Shape::DoDraw avoid call to  cairo_set_matrix if 
33133         shape is empty.
33135 2007-09-03  Sebastien Pouliot  <sebastien@ximian.com>
33137         * media.cpp: Fix premul and remove confusing macro.
33139 2007-09-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
33141         * clock.cpp, uielement.cpp, trigger.cpp, panel.cpp, animation.cpp,
33142           canvas.cpp, namescope.cpp: Plug some leaks.
33143         * value.h.in, value.h, value.cpp: Added CreateUnrefRef and CreateUnref.
33144         * dependencyobject.cpp: free_attachee: unref the contained dob. Use
33145           base_unref () instead of accessing the pointer in a few places to allow
33146           for null pointers.
33147         * debug.cpp: get_stack_trace is now able to get meaningful data for managed
33148           parts of the stack trace as well.
33150 2007-09-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
33152         * list.cpp: List::Unlink: Link my neighbours to eachother.
33154 2007-09-01  Sebastien Pouliot  <sebastien@ximian.com>
33156         * rect.cpp: Fix union with empty rectangles (so x and y are not
33157         assigned to 0 resulting in large bounds). Fix IsEmpty.
33158         * shape.cpp: Fix possible division by 0, resulting in infinite 
33159         values (and much too large bounds)
33161 2007-08-31  Jeffrey Stedfast  <fejj@novell.com>
33163         *.cpp: Updated for the slightly different List API (list nodes no
33164         longer have Next() or Prev() methods, just access the pointers
33165         directly).
33167         * animation.cpp: Made sorted_list a GPtrArray and updated to use
33168         g_ptr_array_insert_sorted(). Also, a lot of the 'list' (not
33169         sorted_list) accesses assumed nodes were of type KeyFrameNode,
33170         which they were not. Fixed.
33172         * xaml.cpp: Made XamlElementInstance.dtor virtual.
33174         * collection.h: Made the Collection::Node.dtor virtual.
33176         * list.cpp: Rewritten, if we add a virtual .dtor to List::Node, we
33177         can no longer guarantee that List::Node->next will have the same
33178         address as the List::Node object and so the list implementation
33179         broke. This rewrite is a bit less fancy, but doesn't rely on that
33180         feature.
33182 2007-08-31  Sebastien Pouliot  <sebastien@ximian.com> 
33184         * media.cpp, panel.cpp, shape.cpp, text.cpp: Calling GrowBy 
33185         doesn't change the current rectangle (but returns a new one).
33186         However everything seems to work, so they are probably not needed.
33188 2007-08-31  Jeffrey Stedfast  <fejj@novell.com>
33190         * text.cpp (OnPropertyChanged): Need to Invalidate() too.
33192 2007-08-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
33194         * runtime.h, runtime.cpp: Implement fullscreen support, drawing_area does
33195           now reference either the fullscreen drawing area or the normal drawing
33196           area. Refactored drawing area initialization and destruction into
33197           seperate methods. Modified ConnectEvent to be able to specify whether
33198           the drawing area should attach to realize/unrealize events (fullscreen
33199           drawing area shouldn't). Only emit ResizeEvent if we're not in
33200           fullscreen mode. Added normal_height/width, contains the size of the
33201           surface when not in fullscreen (as opposed to screen_height/width for
33202           fullscreen mode). Height/width now contains the actual size of the area
33203           where we draw, whether in fullscreen mode or not.
33205 2007-08-31  Sebastien Pouliot  <sebastien@ximian.com> 
33207         * shape.cpp: #ifdef out an optimization that doesn't work with
33208         ComputeBoundsSlow (a specified stroke brush, with a thickness of 0,
33209         wouldn't render at all with it's fill brush). Added same shortcut 
33210         (as before) for Shape::ComputeBoundsSlow.
33212 2007-08-31  Sebastien Pouliot  <sebastien@ximian.com>
33214         * shape.cpp: Added a shortcut in Shape::ComputeBoundsFast when shapes
33215         are known to be empty (UIElement::SHAPE_EMPTY).
33217 2007-08-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
33219         * shape.h, shape.cpp: Revert to the old CanFill method for shapes,
33220           apparently a point is inside a shape unregarding to whether it's filled
33221           or not, unlike geometries.
33223 2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
33225         * shape.cpp: Better degenerate handling for round-rectangles and 
33226         for ellipses.
33228 2007-08-30  Chris Toshok  <toshok@ximian.com>
33230         * collection.h, collection.cpp: change the prototype of
33231         Collection::Add, ::Insert, and ::SetVal to return bool.  Make the
33232         subclasses check the return value before doing their type specific
33233         handling of the child.  Fixes the crash from invalid xaml in
33234         alan's testcase.
33236         * animation.h, animation.cpp: track collection api change.
33238 2007-08-30  Chris Toshok  <toshok@ximian.com>
33240         * collection.cpp (Collection::Add): make the warning a lot more
33241         useful if the child isn't of the right type.
33243 2007-08-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
33245         * xaml.cpp: Unref the namescope.
33246         * debug.h, debug.cpp: Added. Implemented get_stack_trace and
33247           print_stack_trace.
33248         * clock.cpp: Unref the _instance.
33249         * dependencyobject.h, dependencyobject.cpp: Implement object tracking for
33250           debug purposes. It's able to log to console object creation,
33251           destruction, ref/unrefs with a stacktrace with C++ unmangled function
33252           names, file and line number. Keep a count of created and destroyed
33253           objects, and a list of objects still alive. Ref and unref attached
33254           objects, and free the attachees when we're deleted.
33255         * animation.h, animation.cpp: Add animation_destroy, and destroy the default
33256           dependency property for a few properties.
33257         * type.cpp, type.cpp.in: Initialize Type::types to NULL.
33258         * runtime.cpp: Add a g_type_inited to avoid initializing g_types several
33259           types. Call animation_destroy on shutdown, and add some object tracking
33260           output to runtime_init and runtime_shutdown.
33261         * Makefile.am: Added debug.*.
33263 2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
33265         * shape.cpp: In some degenerate cases Radius[X|Y] can be ignored 
33266         for rectangles.
33268 2007-08-30  Jeffrey Stedfast  <fejj@novell.com>
33270         * mplayer.cpp (AdvanceFrame): If there is no video stream, return
33271         based on audio state. Also, if current_pts >= target_pts already,
33272         return true rather than false to pretend we advanced a frame (it's
33273         really not that important to our caller, all the value is used for
33274         is updating position).
33276 2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
33278         * shape.cpp: Handle negative values for Height and Width (not 
33279         drawn) and for Radius[X|Y] (absolute values).
33281 2007-08-30  Jb Evain  <jbevain@novell.com> 
33283         * media.h, media.cpp: introduce a new MediaSource class that a
33284         MediaElement uses, so we can have either a SingleMedia or a Playlist
33285         as a source.
33286         * playlist.cpp, playlist.h: added
33287         * Makefile.am: add the previous files.
33289 2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
33291         * shape.cpp: Fix small rectangle fills when no stroke brush is 
33292         specified.
33294 2007-08-29  Jeffrey Stedfast  <fejj@novell.com>
33296         * text.cpp (OnPropertyChanged): Don't recalculate width/height nor
33297         bounds on TextProperty change explicitly, it should already be
33298         recalculated later in the function in the same place it gets
33299         reclauclated for other property changes.
33300         (ComputeBounds): Updated to work the same as the rest of the
33301         elements work.
33303 2007-08-29  Sebastien Pouliot  <sebastien@ximian.com> 
33305         * shape.cpp: Fix ComputeBoundsFast to consider the stroke 
33306         thickness
33308 2007-08-29  Sebastien Pouliot  <sebastien@ximian.com>
33310         * shape.cpp: Fix Path::BuildPath cairo_path_t caching as we modify 
33311         the path after we get a copy of it. Remove the now unrequired 
33312         clipping inside the *::BuildPath for StretchUniformToFill.
33314 2007-08-29  Jeffrey Stedfast  <fejj@novell.com>
33316         * media.cpp (Render): Cache the pattern matrix.
33317         (DownloaderComplete): Remove the assert and simply handle that
33318         case by returning (which defers the call until OnLoaded).
33320 2007-08-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
33322         * runtime.cpp: Initialize the FullScreen variables. Helps a lot in
33323           making things consistent.
33325 2007-08-29  Chris Toshok  <toshok@ximian.com>
33327         * merged delayed-rendering-branch branch to head.  ChangeLog is:
33328         
33329         2007-08-28  Chris Toshok  <toshok@ximian.com>
33331                 * control.cpp (GetTransformFor): change this to act as
33332                 Canvas::GetTransformFor does - we only put in the transform from
33333                 parent to child here - don't include the parent's transform as
33334                 well.  Fixes the airlines demo.
33336         2007-08-28  Chris Toshok  <toshok@ximian.com>
33338                 * dirty.cpp (process_dirty_elements): use a different method for
33339                 checking if against the toplevel canvas, and also use
33340                 UIElement::parent instead of DependencyObject::GetParent() to get
33341                 controls working a little better than before.
33343                 * control.h, control.cpp: remove UpdateTransform.  this is handled
33344                 by the dirty.cpp code now.
33346                 * dependencyobject.h, dependencyobject.cpp: copy over the
33347                 event_object_{add,remove}_event_handler change from the trunk so
33348                 we can continue to work with HEAD olive.
33350         2007-08-22  Chris Toshok  <toshok@ximian.com>
33352                 * uielement.cpp (Invalidate): don't actually invalidate the
33353                 element unless it's visible.
33354                 (OnPropertyChanged): the above change requires us to invalidate
33355                 the element before setting the flags (in the case where we're
33356                 hiding an element).
33358         2007-08-21  Jeffrey Stedfast  <fejj@novell.com>
33360                 * media.cpp (ComputeBounds): Use the FrameworkElement width/height
33361                 unless unspecified, only then should we use video width/height.
33363         2007-08-21  Chris Toshok  <toshok@ximian.com>
33365                 * uielement.cpp (DoRender): short-circuit rendering of uielements
33366                 when their opacity is 0.
33368                 * dirty.cpp (process_dirty_elements): handle controls.
33370         2007-08-21  Chris Toshok  <toshok@ximian.com>
33372                 * shape.h: add Shape::ComputeBoundsSlow, which uses the slow
33373                 (cairo_*_extents) codepath for computing bounds.  Use this path
33374                 for polygons, polylines, and paths.  Implement a Line-specific
33375                 fast ComputeBounds.
33377         2007-08-20  Chris Toshok  <toshok@ximian.com>
33379                 * media.cpp (MediaElement::ComputeBounds): GrowBy(1).
33380                 (Image::ComputeBounds): use bounding_rect_for_transformed_rect.
33382         2007-08-20  Chris Toshok  <toshok@ximian.com>
33384                 * rect.h, rect.cpp: add bounding_rect_from_transformed_rect.
33386                 * panel.cpp (Panel::ComputeBounds): use the bounding_rect
33387                 call, and Rect::GrowBy
33389                 * media.cpp (MediaElement::ComputeBounds): use the bounding_rect
33390                 call.
33392         2007-08-20  Chris Toshok  <toshok@ximian.com>
33394                 * shape.h, shape.cpp: move the ellipse bound computing to shape
33395                 instead.
33397 2007-08-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
33399         * clock.h: Implement TimeManager::GetObjectType.
33400         * dependencyobject.h, dependencyobject.cpp: Move all type management down to
33401           Base (GetObjectType, Is, GetType, GetTypeName), and implement
33402           GetObjectType in the classes that don't do it already. Remove
33403           BASE_FLOATS, simplifying ref counting.
33404         * type.cpp.in, type.h, type.cpp, type.h.in: Added Base and inherited classes
33405           that don't already inherit from DependencyObject.
33406         * runtime.h, runtime.cpp: Add the Fullscreen API (not implemented yet, only
33407           raises events), and implement GetObjectType.
33409 2007-08-28  Sebastien Pouliot  <sebastien@ximian.com> 
33411         * shape.cpp: Fix StretchUniformToFill
33413 2007-08-28  Sebastien Pouliot  <sebastien@ximian.com>
33415         * shape.cpp: Fix StrokeDashArray and StrokeDashOffset as they now
33416         (new since refresh?) need to be multiplied with the stroke's 
33417         thickness
33419 2007-08-28  Jeffrey Stedfast  <fejj@novell.com>
33421         * text.cpp (Render): Fixed the "no text to render" optimization:
33422         don't check TextBlock::TextProperty to see if we have any text to
33423         render, instead check TextBlock::layout (which will have any text
33424         from inlines as well).
33425         (OnPropertyChanged): If the TextProperty changes, recalculate the
33426         layout and bounds.
33428 2007-08-28  Sebastien Pouliot  <sebastien@ximian.com>
33430         * geometry.h: Add a Path* parameter to Draw as we need to know some 
33431         stuff (e.g. stroke thickness) in order to detect degenerate cases.
33432         * geometry.cpp: Handle degenerate case for RectangleGeometry.
33433         * panel.cpp, uielementy.cpp: Adjust Draw calls for optional Path 
33434         element (NULL in the case of clipping).
33435         * shape.cpp|h: Move cairo_path_t caching logic from Path to Shape
33436         class. Add GetFillRule method. Handle most cases where a large stroke
33437         thickness change the SL drawing behaviour (wrt Cairo behaviour)
33438         * uielement.h: Add flags for empty/normal/degenerate shapes
33440 2007-08-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
33442         * panel.cpp: InsideObject: The point is only inside us if we have a
33443           background, otherwise we act like if we were transparent (which is what
33444           we are if we aren't painting anything inside us).
33445         * geometry.h, uielement.cpp, shape.h: Rename CanFill to IsFilled so that
33446           it's closer to what it actually does.
33447         * shape.cpp: Changed implementation of Shape::CanFill to return true only if
33448           we're actually filled, and rename CanFill to IsFilled so that it's
33449           closer to what it actually does. 
33451 2007-08-27  Jackson Harper  <jackson@ximian.com>
33453         * dependencyobject.cpp|h: Don't return Collections when getting
33454         parents.
33456 2007-08-27  Jeffrey Stedfast  <fejj@novell.com>
33458         * mplayer.cpp (Play): Always add a timeout, even for audio-only
33459         media, so that the callback can check if the media has ended and
33460         emit the MediaEnded event.
33462         * media.cpp (AdvanceFrame): Emit the MediaEndedEvent.
33464         * mplayer.cpp (MediaEnded): New convenience function.
33466 2007-08-27  Sebastien Pouliot  <sebastien@ximian.com>
33468         * shape.cpp: Remove cairo_new_path call in moon_rounded_rectangle
33469         as this clear any path data in the context (see
33470         test-path-group.xaml)
33472 2007-08-27  Jeffrey Stedfast  <fejj@novell.com>
33474         * mplayer.cpp (audio_play): Implement software balance/volume here
33475         rather than using the system's mixer (as that changes the
33476         balance/volume for all applications which is a bad thing). Fixes
33477         bug #82602.
33479 2007-08-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
33481         * panel.cpp: InsideObject: only skip checking the children if the
33482           point is not in the clipped area.
33484         * uielement.h, uielement.cpp: Added InsideClip, and moved the
33485           corresponding code from InsideObject to InsideClip.
33487 2007-08-27  Sebastien Pouliot  <sebastien@ximian.com>
33489         * xaml.cpp: Fix calculation for smooth quadatric bezier (T) as seen in
33490         tests/xaml/test-path-smoothquadraticbezier.xaml
33492 2007-08-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
33494         * uielement.h, uielement.cpp: Implement InsideObject here too, the same
33495           implementation as Shape has (for our Clip property).
33496         * frameworkelement.cpp: InsideObject: call new base implementation as well.
33497         * panel.cpp: InsideObject: don't check our children, the mouse may be over
33498           them, but they're not visible for some reason (the parent object might
33499           be clipped, etc).
33501 2007-08-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
33503         * panel.cpp: Panel::HandleMotion, if we're the captured element, handle the
33504           motion event even though the mouse isn't over us.
33505         * runtime.h: Add a public Surface::GetCapturedElement.
33507 2007-08-24  Jeffrey Stedfast  <fejj@novell.com>
33509         * mplayer.cpp (StopThreads): Need to reset current_pts to 0 so the
33510         video frames will update if we seek backwards.
33512         * uielement.cpp (DoRender): Shortcut out if total_opacity == 0.0
33514         * media.cpp (UpdateProgress): Use the downloader progress value as
33515         the buffering progress value as well (since we don't yet stream).
33516         (DownloaderComplete): Call UpdateProgres() here so that we can
33517         flush the 100% progress value.
33519         * downloader.cpp (Write): Update the progress first, so that the
33520         writer callback can query the actual progress (all data read up to
33521         and /including/ this point in time).
33522         (NotifyFinished): Set progress to 100% and emit an event.
33524 2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
33526         * value.h[.in]: Added AsNPObj.
33527         * type.cpp[.in]: Initialize Type::NPOBJ correctly.
33529 2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
33531         * media.cpp: (DownloaderCompleted): The initial state of media
33532         elements that aren't autoplayed is 'Paused'.
33534 2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
33536         * media.cpp (MediaElement): Initialize 'loaded' to false.
33537         (SetSource): Don't call DownloaderComplete() if we haven't been
33538         loaded yet.
33539         (GetValue): Convert to position from ms to TimeSpan ticks.
33540         (OnLoaded): Set loaded to true and, if we have a downloader which
33541         has completed the download, call DownloaderComplete() which will
33542         then open the media file and autoplay if appropriate.
33543         (OnPropertyChanged): Protect against creating a downloader for an
33544         empty string uri.
33546 2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
33548         * media.cpp (DownloaderComplete): If we fail to open, emit the
33549         MediaFailedEvent and set some default values.
33550         (OnPropertyChanged): Don't StopLoader() here, do that all in
33551         SetSource (since SetSource needs to do it anyway).
33552         (SetSource): Call StopLoader() here and close the MediaPlayer,
33553         etc.
33555 2007-08-23  Jackson Harper  <jackson@ximian.com>
33557         * runtime.cpp|h: Make Resize use our event system (so the plugin
33558         can use it).
33559         * dependencyobject.cpp|h: Rename the add/remove handler functions
33560         to not require dependencyobjects.
33562 2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
33564         * media.cpp (OnPropertyChanged): Don't autoplay here.
33565         (advance_frame): Do ms->TimeSpan conversion here, too.
33566         (DownloaderComplete): Instead of calling ::Pause(), just set the
33567         pause state since the MediaPlayer already starts out in paused
33568         state.
33570 2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
33572         * clock.h: Add defines and methods to convert between timespans and
33573         floats.
33574         * media.cpp: Create a default (empty) Markers collection. When setting
33575         MediaPlayer time values, convert between ticks (in TimeSpans) and 
33576         milliseconds (which is what MediaPlayer expects). Emit MediaOpened
33577         when we're finished downloading a media, and if we're not autoplaying
33578         it, we're pausing it. Update uses of Value (gint64) constructors.
33579         * value.cpp|h|h.in: Remove the Value (gint64) constructor and add a 
33580         Value (gint64, Type::Kind) constructor to avoid mixups between
33581         INT64 and TIMESPAN values. Check for null before unref'ing a 
33582         dependency object.
33583         * xaml.cpp: Update uses of Value (gint64) constructors.
33584         
33585 2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
33587         * type.[cpp|h].in: Add const's here that were only added manually
33588         to the generated files.
33590 2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
33592         * mplayer.cpp: Implemented volume/balance
33594 2007-08-23  Sebastien Pouliot  <sebastien@ximian.com>
33596         * shape.cpp: Remove unneeded (cairo_close_path) and dead (break)
33597         code in Polygon::Draw.
33599 2007-08-22  Chris Toshok  <toshok@ximian.com>
33601         * clock.cpp (Tick): guard against division by zero.  gets
33602         "monotone" displaying.
33604 2007-08-22  Sebastien Pouliot  <sebastien@ximian.com>
33606         * shape.cpp|h: Provide GetTransformOrigin on Shape and remove them 
33607         from Rectangle and Ellipse. Monotone requires that on Path and I can't
33608         recall the reason I made this (while all the test cases I made still
33609         work that way).
33611 2007-08-22  Jeffrey Stedfast  <fejj@novell.com>
33613         * mplayer.cpp (MediaPlayer): Init mixer variables.
33615 2007-08-22  Jeffrey Stedfast  <fejj@novell.com>
33617         * media.cpp (advance_frame): Don't bother invalidating here, we'll
33618         do that in OnPropertyChanged() for the PositionProperty.
33619         (OnPropertyChanged): Invalidate if Position has changed and
33620         opacity > 0.0f (and we actually have video).
33621         (ComputeBounds): Use the FrameworkElement width/height if set.
33622         (GetTransformOrigin): Same.
33624 2007-08-21  Jeffrey Stedfast  <fejj@novell.com>
33626         * mplayer.cpp (Open): Merged both Open() implementations into a
33627         single one. We no longer use Open() without passing a uri (since
33628         Stop() has been implemented in a better way).
33629         (AdvanceFrame): Keep track of our current pts so that we won't get
33630         ahead of the audio if called too often.
33632 2007-08-20  Chris Toshok  <toshok@ximian.com>
33634         * rect.cpp (bounding_rect_for_transformed_rect): oops, got
33635         MAX2/MIN2 mixed up.
33637 2007-08-20  Chris Toshok  <toshok@ximian.com>
33639         * rect.h, rect.cpp (bounding_rect_for_transformed_rect): horrible
33640         name, I know, but we need this functionality.  it's not enough to
33641         use UL and LR corners of the rectangle when computing the bounding
33642         rect for a transformed rectangle.  we have to test all 4 points.
33644         * panel.cpp (ComputeBounds): use
33645         bounding_rect_for_transformed_rect.
33647 2007-08-17  Chris Toshok  <toshok@ximian.com>
33649         * dependencyobject.cpp (strcase_equal, strcase_hash): new case
33650         insensitive hash functions.
33651         (RegisterFull): the property hash tables (per type, used for
33652         GetDependencyProperty) need to be case insensitive.
33654 2007-08-17  Chris Toshok  <toshok@ximian.com>
33656         * xaml.cpp: remove Hidden from the visibility_map.
33657         (enum_from_str): if we don't see a name we recognize, try to parse
33658         it as a number.  This could maybe be someplace else.
33660         * enums.h: remove VisibilityHidden
33662         * uielement.h, uielement.cpp: remove
33663         VisibilityHidden/LAYOUT_VISIBLE
33665         * control.h: remove GetLayoutVisible.
33667         * panel.cpp (ComputeBounds): switch from item->GetLayoutVisible to
33668         item->GetVisible, since there's no need to distinguish between the
33669         two anymore.
33671 2007-08-17  Jackson Harper  <jackson@ximian.com>
33673         * clock.h: Add ToSeconds utility functions.
33675 2007-08-16  Jeffrey Stedfast  <fejj@novell.com>
33677         * list.cpp (InsertSorted): For the stable evrsion, work backwards
33678         instead of forwards (improves performance in the typical case,
33679         altho we aren't gonna sue this feature anymore - z-sorted lists
33680         will now be GPtrArrays).
33682         * garray-ext.cpp|h: New src file containing an extension to
33683         GPtrArray for inserting an item into a presorted array.
33685         * collection.cpp (VisualCollection): z_sorted is now a GPtrArray,
33686         updated all usages of it.
33688         * panel.cpp (Render): Updated now that z_sorted is an array
33689         instead of a linked list.
33691 2007-08-16  Jackson Harper  <jackson@ximian.com>
33693         * xaml.cpp: Transforms can be set as attributes, they are just a
33694         matrix in string form, that become a MatrixTransform on the
33695         object.
33696         - Made the debug a little nicer
33698 2007-08-15  Jackson Harper  <jackson@ximian.com>
33700         * xaml.cpp: Since the callback setting is now a once per a domain
33701         thing, we don't want to check if they are already set. The 'are
33702         they already set' check only worked when we were setting them at
33703         the beginning of each parsing attempt.  With our current setup it
33704         was causing everything to get loaded in the same domain.
33706 2007-08-13  Jeffrey Stedfast  <fejj@novell.com>
33708         * mplayer.cpp (AdvanceFrame): Init frame to NULL so we don't
33709         segfault if there are no packets in the queue.
33711 2007-08-13  Chris Toshok  <toshok@ximian.com>
33713         * animation.cpp (*KeyFrame::InterpolateValue): for all the
33714         keyframes, if we don't have a Value defined, don't bother
33715         interpolating anything, just return baseValue.
33717 2007-08-13  Chris Toshok  <toshok@ximian.com>
33719         * collection.cpp: fix merging/unmerging of child namescopes.
33721         * namescope.h, namescope.cpp: add a flag (merged) and a list of
33722         child merged namescopes which are searched any time this namescope
33723         is searched.  Reimplement merge as list->Append, and unmerge as
33724         list->Remove.
33726         * dependencyobject.h: add ClearValue, and make GetParent
33727         inlineable.
33729         * dependencyobject.cpp: add impl for ClearValue, and remove
33730         GetParent.  Also, when finding a name we only check non-merged
33731         namescopes.  The merged ones in the hieararchy will be checked as
33732         the children of the non-merged ones.  Given that the set of names
33733         in merged scopes can't overlap, I'm not strictly sure this is
33734         necessary, except to reproduce Silverlight's faulty lookups after
33735         subtree removal.
33737 2007-08-10  Jeffrey Stedfast  <fejj@novell.com>
33739         * collection.cpp (Clear): Unregister the object names.
33741         * dependencyobject.h (GetName): uhh... just return the value, lets
33742         not go returning "(null)" in string form.
33744 2007-08-10  Chris Toshok  <toshok@ximian.com>
33746         * runtime.h, runtime.cpp (key_press_callback): map the gdk keyval
33747         to the silverlight Key and call s->toplevel->HandleKeyDown.
33748         (key_release_callback): same.
33749         (gdk_keyval_to_key): new function, to map between gdk and
33750         silverlight.
33751         
33752         * uielement.h, uielement.cpp: add HandleKeyDown/HandleKeyUp, which
33753         just package up the args into a structure and Emit the event.
33755         * enums.h: add the Key enum from the silverlight docs.
33757 2007-08-10  Jeffrey Stedfast  <fejj@novell.com>
33759         * dependencyobject.cpp (resolve_property_path): Keep track of the
33760         last '.' so that when we go to get the DependencyProperty, we can
33761         pass the property name component rather than the full path of the
33762         property name. Fixes the color fades in Monotone.
33764 2007-08-09  Chris Toshok  <toshok@ximian.com>
33766         * animation.h, animation.cpp: if any keyframe's keytime changes,
33767         we need to re-resolve the collection.
33769 2007-08-09  Jeffrey Stedfast  <fejj@novell.com>
33771         * mplayer.cpp (Play): Only start up the io/audio threads if we
33772         aren't simply paused (e.g. if they are already alive).
33773         (IsPlaying): Return true only if playing && !paused.
33774         (audio_loop): Changed the locking logic to lock outside of the
33775         loop rather than inside. We now only release the lock inside the
33776         loop if/when the paused state changes.
33778 2007-08-08  Chris Toshok  <toshok@ximian.com>
33780         * animation.h: sprinkle Resolve() methods and resolved flags
33781         around.
33783         * animation.cpp (Storyboard::HookupAnimationsRecurse): call
33784         Resolve() on the animation as we recurse.
33785         (KeyFrameNodeComparer): compare using the keyframe's resolved
33786         keytime.
33787         (KeyFrameNodeFinder): nuke.
33788         (KeyFrameCollection::Add): just mark the collection as needing to
33789         be resolved.  don't muck with the sorted list here.
33790         (KeyFrameCollection::Insert): same.
33791         (KeyFrameCollection::Remove): same.
33792         (KeyFrameCollection::Clear): also mark the collection as
33793         unresolved.
33794         (KeyFrameCollection::GetKeyFrameForTime): use resolved keytime.
33795         (KeyFrameAnimation_ResolveKeyFrames): implement most of the
33796         algorithm posted at
33797         http://msdn2.microsoft.com/en-us/library/ms742524.aspx to resolve
33798         keytimes of different types.  this is all untested, unfortunately,
33799         as I can't get non-TimeSpan keytimes to work on SL.
33800         (*AnimationUsingKeyFrames::GetCurrentValue): use resolved
33801         keytime.
33802         (*AnimationUsingKeyFrames::GetNaturalDurationCore): resolve
33803         the key frames before using sorted_list.
33804         (*AnimationUsingKeyFrames::Resolve): override the empty
33805         default, and call KeyFrameAnimation_ResolveKeyFrames.
33807 2007-08-08  Chris Toshok  <toshok@ximian.com>
33809         * clock.cpp (Begin): make sure we handle clocks that seek in the
33810         first tick.
33812 2007-08-08  Chris Toshok  <toshok@ximian.com>
33814         * canvas.cpp (Canvas::Canvas): create a temporary namescope
33815         whenever we create a canvas.  We need this for animations that are
33816         started before the canvas is attached to the tree, or in any case
33817         where FindName is called on code associated with a subtree before
33818         it's added to the surface.
33820         * animation.cpp (Storyboard::HookupAnimationsRecurse): turns out
33821         Storyboard.TargetName can be assigned to the parent storyboard as
33822         well as the animation.  Loop up the clock hierarchy when looking
33823         for the targetname.
33824         
33825 2007-08-07  Chris Toshok  <toshok@ximian.com>
33827         * animation.cpp, animation.h
33828         (*AnimationUsingKeyFrames::GetNaturalDurationCore): no need to
33829         iterate over all the keyframes looking for the last one - just
33830         look at the last one in the sorted list.
33832 2007-08-07  Jeffrey Stedfast  <fejj@novell.com>
33834         * media.cpp (SetValue): Only crop position values if we're not
33835         updating state from the media player (we're allowed to set values
33836         outside of the duration range from the media player). Also, do our
33837         seeking here.
33838         (OnPropertyChanged): Don't do our seeking here because we can't
33839         get the actual seek position as GetValue()'s override will
33840         re-query the media player for its actual position.
33842         * mplayer.cpp (Open): Don't create the threads here anymore,
33843         create them in Play() instead. Also calculate ahead of time the
33844         new audio->pts_per_frame value which allows the video to keep even
33845         better sync with the audio (we used to base this on actual time
33846         spent playing the audio frame rather which could sometimes be off
33847         a smidgen).
33848         (AdvanceFrame): If seek_pts is non-zero, then we need to base
33849         target_pts on it rather than video->initial_pts (assuming we have
33850         no audio to sync to).
33851         (Play): Set playing = true and create the audio/io threads.
33852         (Close): A lot of the logic has been moved into a new method,
33853         StopThreads().
33854         (StopThreads): Stop the threads and reset minimal state.
33855         (Stop): Call StopThreads() and seek back to the beginning of the
33856         av stream.
33857         (Seek): Implemented.
33858         (Position): Back to subtracting the initial_pts so that we always
33859         have a range of 0:duration. If seek_pts is set and >target_pts,
33860         use that rather than target_pts so even if we are in a stopped
33861         state, querying the position will return expected results.
33862         (audio_play): Return audio->pts_per_frame rather than the actual
33863         time difference.
33865 2007-08-06  Jackson Harper  <jackson@ximian.com>
33867         * xaml.cpp: add VisualCollections.
33869 2007-08-06  Chris Toshok  <toshok@ximian.com>
33871         * clock.cpp, clock.h: this might be completely wrong and break
33872         other demos... but childless clockgroups Stop when they hit their
33873         duration, they don't SkipToFill.  fixes the silverlightclr balls
33874         demo.
33876 2007-08-06  Larry Ewing  <lewing@novell.com>
33878         * dependencyobject.h:
33879         * dependencyobject.cpp:
33880         * media.cpp:
33881         * type.h: 
33882         * type.cpp: add const to the various string apis.
33884 2007-08-06  Jeffrey Stedfast  <fejj@novell.com>
33886         * mplayer.cpp: Fixes to make it work with media files w/ no audio
33887         (or where we are unable to play the audio).
33889 2007-08-04  Chris Toshok  <toshok@ximian.com>
33891         * brush.h, brush.cpp: add VisualBrush.
33893         * xaml.cpp (xaml_init): hookup VisualBrush parsing.
33895         * value.h, type.h, type.cpp: sync up the VisualBrush stuff.
33897 2007-08-04  Chris Toshok  <toshok@ximian.com>
33899         * panel.cpp (Panel::ChildInvalidated): for the Invalidated stuff
33900         to work properly, panel needs to call
33901         FrameworkElement::Invalidate, not parent->ChildInvalidated
33902         directly.
33904         * uielement.h, uielement.cpp: add an Invalidated event for use by
33905         the visual brush.
33906         
33907 2007-08-03  Chris Toshok  <toshok@ximian.com>
33909         * collection.cpp (Collection::Add, Collection::Insert): reinstate
33910         jackson's merging code, but only do it if @data's namescope is
33911         temporary.
33913         * namescope.h, namescope.cpp: Add {Set,Get}Temporary.
33915         * xaml.cpp (xaml_create_from_str): set the namescope to be
33916         temporary if create_namescope is false.
33917         (xaml_create_from_file): same.
33919 2007-08-03  Chris Toshok  <toshok@ximian.com>
33921         * panel.h, panel.cpp: add an optimization for the 2 updates that
33922         travel down the tree (UpdateTotalOpacity and UpdateTransform).
33923         Since we're already invalidating the panel's bounds (in fact we do
33924         it before traversing), we can ignore the invalidates which come
33925         back up the tree from the children.
33927         * media.cpp, media.h: make NaturalDuration a Duration.  this gets
33928         the last of roeder's demos sorta working.
33930 2007-08-03  Jeffrey Stedfast  <fejj@novell.com>
33932         * mplayer.cpp: Whenever we change the 'paused' state, signal to
33933         the other thread(s) that it has changed so that they can go on
33934         with their lives immediately rather than waiting for the kernel to
33935         context switch.
33937 2007-08-02  Chris Toshok  <toshok@ximian.com>
33939         * control.cpp (GetTransformFor, OnSubPropertyChanged): now, before
33940         you get your panties in a twist, check this out.  If you have a
33941         control and set both its Canvas.LeftProperty and that of its root
33942         object (the return value of InitializeFromXaml), the effects are
33943         *additive*, yet GetValue on each object returns exactly what you'd
33944         expect - the value you set on it.  The only reasonable explanation
33945         for this is that Control has Canvas's layout algorithm c&p'ed into
33946         it.
33948 2007-08-02  Chris Toshok  <toshok@ximian.com>
33950         * xaml.h, xaml.cpp: switch the xaml_create_from_{file,str}
33951         functions to returning DependencyObjects instead of UIElements.
33952         in javascript you can create arbitrary xaml hierarchies (transform
33953         groups, brushes, etc).
33955         * control.cpp: need a cast here due to the above change.
33957 2007-08-02  Chris Toshok  <toshok@ximian.com>
33959         * runtime.h, runtime.cpp (Surface::Invalidate): add this call, and
33960         stuff the gtk_widget_queue_draw_area call there.
33962         * uielement.h, uielement.cpp, canvas.h, canvas.cpp, panel.h,
33963         panel.cpp, control.h, control.cpp: change the way
33964         UIElement::Invalidate works.  It used to call GetSurface() which
33965         would recurse up the tree to the root, and return the Surface*
33966         back down.  It would then call gtk_widget_queue_draw_area there.
33967         This left little room for optimization.  Switch everything over to
33968         using a new method implemented by all container classes,
33969         ChildInvalidated.  Basically Invalidate's recurse up to the root
33970         as before, but the actual gtk call happens at the root (well, 1
33971         level above it.  at the Surface itself).  In the future we can
33972         freeze Invalidates in container elements when they do things like
33973         update their transform so we'll just send 1 Invalidate up the
33974         tree, not N Invalidates for N children.
33975         
33976 2007-08-02  Jeffrey Stedfast  <fejj@novell.com>
33978         * media.cpp (DownloaderComplete): Set the CanPause and CanSeek
33979         properties.
33981         * mplayer.cpp (~MediaPlayer): Destroy the pause_mutex
33982         (IsPaused): New method.
33984         * media.cpp (MediaElement::GetValue): If the Position is being
33985         requested, query the MediaPlayer.
33986         (MediaElement::SetValue): Make sure the PositionProperty value is
33987         within bounds and force it to be if not.
33988         (MediaElement::Stop): Do nothing if we aren't playing/paused.
33989         (MediaElement::OnPropertyChanged): Call mplayer->Seek() if the
33990         position changed.
33992 2007-08-02  Chris Toshok  <toshok@ximian.com>
33994         * uielement.h, uielement.cpp: propagate opacity changes the way we
33995         do transform changes.  Store the total opacity of an item in the
33996         item, as we do with absolute_xform.  This keeps us from doing a
33997         walk up to the root of the hierarchy every time we have to draw an
33998         element (which we we were doing before in
33999         UIElement::GetTotalOpacity.)
34001         * panel.cpp, panel.h: when we update our total opacity, loop over
34002         the children telling them to update as well.
34004         * collection.cpp: propagate the panel's total opacity downward
34005         into the newly added subtree.
34007 2007-08-02  Chris Toshok  <toshok@ximian.com>
34009         * uielement.h, uielement.cpp, canvas.h, canvas.cpp: inline
34010         GetSurface/SetSurface.
34012 2007-08-02  Chris Toshok  <toshok@ximian.com>
34014         * canvas.cpp (Canvas::OnChildPropertyChanged): return true if we
34015         handle the property changing.
34017         * control.h, control.cpp: rip out all the proxying behavior.
34018         Control now works as a very specialized container.  Imagine if
34019         Panel had only 1 child, and no generalized way of manipulating it
34020         (other than initializing it from a xaml fragment), and you have
34021         Control.
34023 2007-08-01  Larry Ewing  <lewing@novell.com>
34025         * xaml.cpp: don't ever make the previous point relative.
34027 2007-08-01  Jeffrey Stedfast  <fejj@novell.com>
34029         * text.h: Removed deprecated enum values for FontWeights
34031         * media.cpp, mplayer.cpp: Updated to add features newly added with
34032         the July 2007 release of Silverlight 1.1
34034 2007-07-31  Chris Toshok  <toshok@ximian.com>
34036         * runtime.cpp (Attach): attach a namescope to the toplevel canvas
34037         if there isn't one when it's attached.
34039 2007-07-31  Jeffrey Stedfast  <fejj@novell.com>
34041         * media.cpp: NaturalDuration is actually a TimeSpan, not a
34042         Duration.
34044 2007-07-31  Chris Toshok  <toshok@ximian.com>
34046         * media.h, media.cpp: move the MediaBase events to MediaElement.
34048 2007-07-31  Jeffrey Stedfast  <fejj@novell.com>
34050         * text.h: Added StyleSimulations enum values.
34052         * xaml.cpp: Updated the StyleSimulations enum mapping.
34054 2007-07-31  Chris Toshok  <toshok@ximian.com>
34056         * text.h, text.cpp: Glyph.StyleSimulations changed from a char* to
34057         enum StyleSimulations.
34059         * xaml.cpp: add stylesimulations enum map.
34061 2007-07-30  Chris Toshok  <toshok@ximian.com>
34063         * uielement.cpp, uielement.h: add the Tag property.
34065 2007-07-30  Chris Toshok  <toshok@ximian.com>
34067         * animation.h, animation.cpp: add the three KeyFrameCollection
34068         subclass types, and switch all references to "KeyFrameCollection"
34069         to the more specific types.
34071         * xaml.cpp (xaml_init): make KeyFrameCollection a ghost element
34072         with Color/Double/PointKeyFrameCollections as subclasses.
34074         * value.h, type.h, type.cpp: sync up with the KeyFrameCollection
34075         type changes.
34076         
34077 2007-07-30  Larry Ewing  <lewing@novell.com>
34079         * color.cpp: make sure that we size expand 3 digit color
34080         specifications properly.
34082 2007-07-30  Chris Toshok  <toshok@ximian.com>
34084         * uielement.h, uielement.cpp: remove InsideObject from here, and
34085         move its warning to Visual::InsideObject instead.
34087         * visual.h, visual.cpp: add visual.cpp, and move implementation of
34088         InsideObject there.
34090         * Makefile.am (libmoon_la_SOURCES): add visual.cpp
34092 2007-07-30  Larry Ewing  <lewing@novell.com>
34094         * xaml.cpp: correct smooth path segments to use the correct value for
34095         cp1 and don't try to make it relative because all the sources are
34096         absolute.  Test case at http://intertwingly.net/stories/2007/05/06/?icon=caution
34097         
34098 2007-07-30  Chris Toshok  <toshok@ximian.com>
34100         * clock.h, clock.cpp: add very naive, probably broken first pass
34101         at Clock::Seek.
34103 2007-07-30  Chris Toshok  <toshok@ximian.com>
34105         * geometry.h, geometry.cpp: PathFigure.IsFilled is gone in RC1.
34107 2007-07-30  Chris Toshok  <toshok@ximian.com>
34109         * brush.h, brush.cpp: track breaking change of the
34110         Brush.Transform/RelativeTransform properties - they're speced to
34111         be Transforms, not TransformGroups.
34113 2007-07-29  Chris Toshok  <toshok@ximian.com>
34115         * collection.h, collection.cpp: change "ResourceCollection" to
34116         "ResourceDictionary".
34118         * uielement.cpp: same.
34120         * type.cpp, type.h, value.cpp, value.h: same.
34122         * xaml.cpp: same.
34124 2007-07-27  Chris Toshok  <toshok@ximian.com>
34126         * xaml.cpp (xaml_set_property_from_str): look up the enum map from
34127         the property name, not the value.
34129 2007-07-27  Chris Toshok  <toshok@ximian.com>
34131         * transform.h, transform.cpp: cache the transformation matrix once
34132         we recompute it.  This gives us the responsiveness of delayed
34133         updating without the cost of calculating the matrix once per
34134         object associated with it.  a property change just sets the
34135         "need_update" flag, which causes a recompute on the next
34136         GetTransform call.
34138 2007-07-27  Larry Ewing  <lewing@novell.com>
34140         * uielement.cpp: implement initial support for OpacityMask.
34142 2007-07-26  Miguel de Icaza  <miguel@novell.com>
34144         This implements support for relative MediaElement sources and
34145         makes all of them go through the downloader, like we do for
34146         images.
34147         
34148         * media.cpp (MediaElement): Do an implementation of SetSource
34149         similar to the one in Image.   Although there is some code that
34150         could be shared, the problem is that some parameters get in the
34151         way.   
34153         (MediaElement::DownloaderComplete): Move the playback here. 
34154         
34155         (StopLoader): Utility routine, factor this out also on the Image
34156         case, and hook this up to the destructor of Image and
34157         MediaElement.
34158         
34160 2007-07-25  Chris Toshok  <toshok@ximian.com>
34162         * media.h, media.cpp: add the MediaElement events,and emit
34163         DownloadProgressChanged and CurrentStateChanged.
34165 2007-07-25  Chris Toshok  <toshok@ximian.com>
34167         * media.h, media.cpp: register the 3 MediaBase events.  now we
34168         need to figure out where to emit them.
34170 2007-07-25  Jackson Harper  <jackson@ximian.com>
34172         * value.cpp: Assign the kind for NPOBJs.
34174 2007-07-25  Miguel de Icaza  <miguel@novell.com>
34176         * openfile.cpp (open_file_dialog_show): Change this method to
34177         return an array with all the selected files.   
34179 2007-07-24  Chris Toshok  <toshok@ximian.com>
34181         * runtime.h, runtime.cpp: permit setting of the the surface's
34182         background color, which is used to fill the widget before we
34183         render the toplevel canvas.  only do this, though, if the canvas
34184         is not transparent.
34186 2007-07-24  Chris Toshok  <toshok@ximian.com>
34188         * runtime.cpp (Surface::Attach): call Canvas::SetSurface instead
34189         of making the assignment.
34191         * canvas.h, canvas.cpp: make surface private, and add SetSurface
34192         for runtime.cpp to use.
34194 2007-07-24  Chris Toshok  <toshok@ximian.com>
34196         * brush.h, brush.cpp: make ImageBrush::SetSource take a const
34197         char*.
34199 2007-07-24  Jackson Harper  <jackson@ximian.com>
34201         * type.h.in: Add the NPOBJ type.
34202         * value.h.in: Add the npobj value, it's just stored as a pointer
34203         so that we don't become dependent on mozilla.
34204         * value.cpp|h,type.h: sync.
34206 2007-07-24  Jackson Harper  <jackson@ximian.com>
34208         * typegen.cs: Kind.cs lives in agmono now.
34211 2007-07-24  Chris Toshok  <toshok@ximian.com>
34213         * media.h, media.cpp: const-ify the PartName argument of the
34214         SetSource methods.  also, ref the new downloader before unreffing
34215         the old one in Image::SetSource.  they could be the same object.
34217 2007-07-24  Chris Toshok  <toshok@ximian.com>
34219         * geometry.cpp (RectangleGeometry::Draw): if the geometry's rect
34220         is NULL, return early.
34222 2007-07-23  Chris Toshok  <toshok@ximian.com>
34224         * Makefile.am (libmooninclude_headers): add some missing headers.
34226         * error.h: split out the error classes here.
34228         * libmoon.h: include error.h
34230         * xaml.h: remove the error classes from here.
34232         * xaml.cpp: include error.h
34234 2007-07-23  Miguel de Icaza  <miguel@novell.com>
34236         * runtime.cpp: Removed the timer code from here, move to plugin.
34238 2007-07-20  Chris Toshok  <toshok@ximian.com>
34240         * xaml.cpp (custom_add_child): this method is what's called when
34241         we add a child to an element of a custom namespace.  Trouble is,
34242         it might be a panel subclass.  If it is, and the child is a
34243         UIElement subclass, go ahead and add the child using
34244         panel_child_add.  This gets the Loaded events working properly in
34245         the chess demo (the trouble was that the custom children weren't
34246         even added to the tree, so their OnLoaded methods weren't being
34247         called)
34249 2007-07-20  Miguel de Icaza  <miguel@novell.com>
34251         * collection.cpp: Add support for RemoveAt. 
34253         * runtime.cpp (html_timer_timeout_add): Added helper routine to
34254         setup Html timeouts.
34256 2007-07-20  Chris Toshok  <toshok@ximian.com>
34258         * canvas.cpp, canvas.h, panel.cpp, panel.h: move much of the guts
34259         from Canvas to Panel.  I consider this cleaning up the source, as
34260         it's entirely possible to write Panel subclasses that aren't
34261         Canvas subclasses, but if you did that you'd have no
34262         rendering/event handling.
34264         Now pretty much all logic that involves iterating over the list of
34265         children is in Panel.  This also greatly simplifies Canvas.  It is
34266         now just a Panel with 2 interesting things about it: 1) it
34267         provides 2 attached properties to lay out its children, and 2) it
34268         allows the surface to dictate its bounds if it's the toplevel
34269         element.
34271 2007-07-20  Chris Toshok  <toshok@ximian.com>
34273         * downloader.cpp (Open): set the uri of the downloader.
34275 2007-07-20  Chris Toshok  <toshok@ximian.com>
34277         * dependencyobject.cpp: allocate the event hash/ptrarray lazily,
34278         so the potentially large number of objects which don't register
34279         events don't allocate them.
34281 2007-07-20  Chris Toshok  <toshok@ximian.com>
34283         * clock.h, clock.cpp: lock around access to the tick_call list, so
34284         tick calls can be added from other threads.
34286 2007-07-16  Miguel de Icaza  <miguel@novell.com>
34288         * media.cpp (SetSource): Also handle Completed.
34290         * downloader.cpp (Send): If a send operation is performed on an
34291         object that has completed its operation, immediately emit the
34292         finished event or error event.
34294         (Open): During open invalidate the state, to
34295         ensure that new downloads are properly triggered. 
34297 2007-07-16  Chris Toshok  <toshok@ximian.com>
34299         * frameworkelement.h, frameworkelement.cpp: we need
34300         framework_element_new so managed subclasses of FrameworkElement
34301         are possible.
34303         * uielement.h, uielement.cpp: same for this type.
34305 2007-07-13  Chris Toshok  <toshok@ximian.com>
34307         * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
34308         normally we'd only update the bounds of this element on a
34309         width/height change, but if the render transform is someplace
34310         other than (0,0), the transform needs to be updated as well.
34312 2007-07-12  Chris Toshok  <toshok@ximian.com>
34314         * runtime.h, runtime.cpp, uielement.cpp, uielement.h: Add mouse
34315         capturing.  This should be on Visual and not UIElement, but we
34316         don't dispatch events that way.
34318 2007-07-12  Chris Toshok  <toshok@ximian.com>
34320         * downloader.h, downloader.cpp: make the Downloader object a bit
34321         more C++ friendly, and make all the private data private.
34323         Also, take this opportunity to switch to using RegisterEvent/Emit
34324         to generate events, instead of the custom listeners.  This will
34325         let JS hook up to the events.
34327         * media.h, media.cpp: track the downloader changes.
34329 2007-07-11  Jackson Harper  <jackson@ximian.com>
34331         * collection.cpp: Comment out the namescope merging stuff for now,
34332         it causes some regressions.
34334 2007-07-12  Jackson Harper  <jackson@ximian.com>
34336         * xaml.cpp: Restart the whole attribute parsing loop when the
34337         reparse flag is set, otherwise the first attribute will be
34338         skipped.
34340 2007-07-11  Chris Toshok  <toshok@ximian.com>
34342         * uielement.cpp (UIElement::UIElement): the event names need to
34343         match those used by microsoft.  makes it easier to handle the
34344         event hooking up in the plugin, where the event names are used.
34346 2007-07-11  Chris Toshok  <toshok@ximian.com>
34348         * xaml.cpp (xaml_set_property_from_str): the plugin does its own
34349         resolution of properties now, so it doesn't need to pass the
34350         property name.  Change this to take the DependencyProperty*
34351         instead.
34353         * xaml.h: change prototype for xaml_set_property_from_str.
34355 2007-07-11  Jackson Harper  <jackson@ximian.com>
34357         * collection.cpp: When new objects are added to a collection, try
34358         to merge them into the containers namescope.
34360 2007-07-11  Jackson Harper  <jackson@ximian.com>
34362         * xaml.cpp: We need to stop parsing if there is an error while
34363         resolving a custom namespace type.
34365 2007-07-10  Chris Toshok  <toshok@ximian.com>
34367         * dependencyobject.cpp (resolve_property_path): we need to reset
34368         "expression_found" when we hit a '.' so that we'll lookup what
34369         comes after it.
34371 2007-07-10  Chris Toshok  <toshok@ximian.com>
34372         
34373         * dependencyobject.cpp (resolve_property_path): we need to be able
34374         to handle more than just single digit indexers.  use strtol and
34375         recompute 'i' afterward.
34377         * canvas.cpp (Canvas::InsideObject): revert the change that helped
34378         dr.popper because it breaks lunareclipse.
34380 2007-07-09  Chris Toshok  <toshok@ximian.com>
34382         * demo.cpp: don't pass the parser callbacks to the individual xaml
34383         functions.
34385         * control.h, control.cpp: don't pass the parser callbacks to
34386         initialize_from_xaml.
34388         * xaml.h, xaml.cpp: remove the parser callbacks from the
34389         individual parsing methods, and add xaml_set_parser_callbacks.
34391 2007-07-09  Jeffrey Stedfast  <fejj@novell.com>
34393         * mplayer.cpp (audio_loop): If we break out of the loop because
34394         the media player was stopped, don't forget to unlock the pause
34395         mutex.
34396         (Close): Don't free the uri here.
34397         (~MediaPlayer): Free it ehre, though.
34399 2007-07-09  Chris Toshok  <toshok@ximian.com>
34401         * uielement.h, uielement.cpp: we need to register the
34402         KeyUp/KeyDown events (even if we aren't emitting them) to keep
34403         from getting a warning when running aglayoutdemo.
34405         * xaml.cpp (timespan_from_str): port our System.TimeSpan.Parse
34406         method (and remove all error handling, which should likely go back
34407         in) and replace the previous implementation.  It was failing to
34408         parse timespans like this: 0:0:0.20000000 because it was treating
34409         it as if I wanted "20000000" tenths of a second, instead of 2.
34410         This makes the 'pop' animation in dr.popper actually show up.
34411         
34412 2007-07-09  Chris Toshok  <toshok@ximian.com>
34414         * animation.cpp: fix some missing NotifyAttacheesOfPropertyChange
34415         calls.
34416         (Storyboard::Begin): This is a dubious change.  Remove the check
34417         to see if we weren't already Active.  This fixes the calendar view
34418         in airlines, since there's a window where the start animation is
34419         startable when we enter a day, but the end animation isn't (since
34420         it's still active) when we leave.  So we're left with a selected
34421         day.
34423         * clock.cpp: instead of Stopping clocks that come to the end of
34424         their active period, move to the Filling state.  ClockGroups with
34425         automatic duration and no Active children still stop correctly.
34427 2007-07-08  Chris Toshok  <toshok@ximian.com>
34429         * many-files (again!): another, smaller change to the event stuff.
34430         stop using strings for everything that we can.  Register events at
34431         object construction time, and use those id's for everything else.
34432         The string interface is still around because of
34433         EventTrigger::Set/RemoveTarget, as well as the managed code.
34435         One further change that's needed - the id's are per-instance now,
34436         which is stupid.  they should be static.
34438         This further cuts down the work (in terms of hash functions) that
34439         needs to be performed in order to dispatch an event.
34440         
34441 2007-07-08  Chris Toshok  <toshok@ximian.com>
34443         * many-files: fairly big change.  Stick the EventObject class
34444         between Base and DependencyObject in the hierarchy, and get rid of
34445         DependencyObject's "events" field.  Get rid of all the registered
34446         events on surface, and emit them directly from the elements where
34447         they occur.  This allows us to remove the Surface* parameter to
34448         all the event methods.  Also, change the EventHandler signature to
34449         include the sender of the event as well as a "calldata" pointer,
34450         which is where we stuff the unmanaged MouseEventArgs (and later
34451         will the KeyboardEventArgs).
34453         Next step is to add RegisterEvent in EventObject and use that
34454         integer id everywhere instead of the string name when we Emit
34455         events.
34457 2007-07-07  Chris Toshok  <toshok@ximian.com>
34459         * dependencyobject.h: add GetName() instance method.
34461         * dependencyobject.cpp (dependency_object_get_name): and call it
34462         here.
34464         * shape.h, shape.cpp (Shape::GetSizeForBrush): we need this
34465         implementation here since FrameworkElement just goes by
34466         Width/Height.
34468         * canvas.cpp (Canvas::FindMouseOver): remove the "still over the
34469         same element" optimization.  it's stupid and doesn't work. what
34470         was i thinking?
34471         (Canvas::ComputeBounds): simplify this by using
34472         item->GetLayoutVisible instead of item->GetValue.
34473         (Canvas::Render): enable the rendering optimization where we only
34474         bother rendering elements whose bounds intersect those of the
34475         rectangle we're repainting.  This seriously speeds up airlines.
34477         * uielement.cpp, uielement.h: add GetLayoutVisible() method, and
34478         another flag.  now the three VisibilityProperty states are
34479         represented by two flags.
34481         Also, remove the implementation of GetSizeForBrush (not all
34482         UIElements are stroked) and warn callers.
34484         * control.cpp: Attach to the real object, and report back its
34485         property changes to our parents.  Also, control_initialize_from_xaml
34486         should call Control::InitializeFromXaml.
34488         * control.h: override the 3 Get*Visible methods from UIElement,
34489         and return our real_object's state.
34491         
34493 2007-07-07  Jeffrey Stedfast  <fejj@gnome.org>
34495         * demo.cpp (FileDownloadState::Send): Only notify complete if uri
34496         != NULL (if uri is NULL, then it means it couldn't be opened).
34497         (FileDownloadState::Open): notify error if we can't open the file.
34499         * mplayer.cpp: Fix to make sure we have
34500         AVCODEC_MAX_AUDIO_FRAME_SIZE bytes left in our output buffer
34501         before calling decode to prevent an ffmpeg warning.
34503 2007-07-07  Chris Toshok  <toshok@ximian.com>
34505         * brush.cpp: make sure to use GetSizeForBrush for everything
34506         instead of cairo_stroke_extents, which won't work for non-stroked
34507         elements like canvases.  Also, notify changes to the
34508         GradientStopCollection up the hierarchy properly.
34510         * frameworkelement.h, frameworkelement.cpp: add a GetSizeForBrush
34511         implementation for FrameworkElement so Canvases (and other
34512         uielement subclasses) can have brushes assigned to them (canvas
34513         uses it for its background.)
34515         * canvas.cpp (Canvas::Render): remove the unused label.
34517 2007-07-06  Miguel de Icaza  <miguel@novell.com>
34519         * media.cpp: Do not pass the filename as the result now on the
34520         calls.   Code must use the downloader_get_response_text or
34521         downloader_get_response_file to get the contents from the download
34522         (as the request will include the part name).
34524         * downloader.cpp: Add a cache for zip file parts.
34526         * media.h (Image): track the part name that was requested on the
34527         call to SetSource.
34529 2007-07-06  Chris Toshok  <toshok@ximian.com>
34531         * canvas.cpp (Canvas::ComputeBounds): if the width/height
34532         framework element properties haven't been set (their default is
34533         0.0), then don't union it with the rest of our bounds.
34535 2007-07-06  Chris Toshok  <toshok@ximian.com>
34537         * runtime.h, runtime.cpp: continue the marginalization of
34538         Surface-as-general-data-dumping-ground by passing the cairo
34539         context to all the event handlers that need it (all but Leave, but
34540         should we make this distinction?).
34541         
34542         Make tons of stuff private that doesn't need exposing.  Add
34543         accessors for the easier things, and leave the callbacks public
34544         for now.  Also clean up the partially C/partially c++
34545         implementation in runtime.cpp.  Now the C api is a thin wrapper
34546         around instance method calls, and all the gtk/clock event
34547         callbacks are static methods so they can still access the private
34548         data.
34550         * canvas.h, canvas.cpp, control.h, control.cpp, uielement.h,
34551         uielement.cpp: fallout from the event signature changes - add
34552         cairo_t* to a lot of places, basically.
34554         * demo.cpp: no need to use the C api for Surface here.  just use
34555         the c++ one.
34557 2007-07-06  Jeffrey Stedfast  <fejj@novell.com>
34559         * media.cpp (OnPropertyChanged): Oops, be consistant with other
34560         implementations - only chain up if it wasn't a property owned by
34561         us.
34563         * text.cpp: We don't use TextBlock::Inlines anymore, so remove it
34564         to save object size.
34566         * media.cpp (OnPropertyChanged): Fixed to always notify property
34567         listeners and chain up to our parent impl.
34569 2007-07-06  Miguel de Icaza  <miguel@novell.com>
34571         * downloader.cpp: Implement the zip file support for the
34572         downloader using miniZip, from:
34574                 http://www.winimage.com/zLibDll/minizip.html
34576         The implementation is in C++, so there are no needs to delegate
34577         this to the managed side as previously planned. 
34579         There are two APIs: one returns a filename, the other returns the
34580         file loaded into memory, with the size of the memory blob.
34582 2007-07-06  Chris Toshok  <toshok@ximian.com>
34584         * uielement.h, uielement.cpp (UIElement::OnPropertyChanged): keep
34585         track of the visibility (boolean, not three-state) and hit test
34586         visibility state in our flags.  implement GetVisible() and
34587         GetHitTestVisible() using the flags.
34589         * canvas.cpp (Canvas::CheckOver): use GetVisible and
34590         GetHitTestVisible to avoid property lookups when dispatching
34591         events.
34593 2007-07-06  Chris Toshok  <toshok@ximian.com>
34595         * runtime.cpp (measuring_context_create): we keep a singleton
34596         measuring context now.
34597         (measuring_context_destroy): do nothing here.  it's freed in
34598         runtime_shutdown.
34599         (runtime_shutdown): free up our measuring context.
34601         * canvas.cpp, canvas.h, control.cpp, control.h,
34602         frameworkelement.cpp, frameworkelement.h, shape.cpp, shape.h,
34603         text.cpp, text.h, uielement.cpp, uielement.h, visual.h: change
34604         InsideObject to take the cairo_t* instead of the Surface.
34605         
34606 2007-07-06  Chris Toshok  <toshok@ximian.com>
34608         * runtime.cpp (Surface::SetCursor): new method, used in the event
34609         code to update the cursor as we enter/leave elements.
34611         * runtime.h: add method, cursor_instance field, and move the body
34612         of the Surface ctor (and initializations) to the .cpp file.
34613         
34614         * xaml.cpp: fix name of Cursor property enum mapping.
34616         * canvas.h, canvas.cpp, uielement.h, uielement.cpp, control.h,
34617         control.cpp: add MouseCursor* arg to HandleMotion so we can report
34618         back cursor changes on elements.
34620         Also, in canvas.cpp, implement IsHitTestVisible checking in
34621         CheckOver.
34623         * enums.h: add the MouseCursor enum.
34624         
34625 2007-07-05  Chris Toshok  <toshok@ximian.com>
34627         * Makefile.am (libmooninclude_headers): remove cutil.h
34628         (libmoon_la_SOURCES): remove cutil.cpp
34630         * cutil.h, cutil.cpp: remove.  no longer necessary.
34632         * text.cpp (TextBlock::ComputeBounds): load the identity matrix
34633         before stroke/fill_extents to work around a cairo bug that was
34634         giving us enormous bounds on rotated elements.  also, -1 from x/y
34635         and +2 to width/height of our bounds.
34637         * media.cpp (MediaElement::ComputeBounds): load the identity
34638         matrix before stroke/fill_extents to work around a cairo bug that
34639         was giving us enormous bounds on rotated elements.  also, -1 from
34640         x/y and +2 to width/height of our bounds.
34641         (Image::ComputeBounds): same.
34643         * shape.cpp (Shape::DoDraw): only call cairo_new_path if there's
34644         no stroke, we drew it, and do_op was true.
34645         (Shape::ComputeBounds): load the identity matrix before
34646         stroke/fill_extents to work around a cairo bug that was giving us
34647         enormous bounds on rotated elements.  also, -1 from x/y and +2 to
34648         width/height of our bounds.
34650         * uielement.cpp (OnSubPropertyChanged): we don't need to watch for
34651         subproperty changes on RenderTransformOrigin, since it's a point
34652         and not a dependency object.
34654 2007-07-05  Chris Toshok  <toshok@ximian.com>
34656         * runtime.cpp, runtime.h: store the last mouse position of events
34657         so that we can continue to update after the clock tick (and
34658         provide motion/enter/leave events to elements that might have
34659         moved under the pointer).
34661         The "update-input" event isn't presently emitted (see clock.cpp)
34662         because it results in this code calling HandleMotion on every
34663         tick, which ends up emitting the C# event (which is wrong).
34665         * clock.h, clock.cpp: add a (presently unused) phase to the clock
34666         tick to update the current mouse over after we've updated our
34667         clocks (and therefore possibly updated the transforms on
34668         elements).
34670 2007-07-05  Chris Toshok  <toshok@ximian.com>
34672         * dependencyobject.cpp (dependency_object_get_name): change this
34673         to return the x:Name value if there is one (and "(null)" if not).
34674         (dependency_object_get_type_name): and make this function do the
34675         job originally done by _get_name.
34677         * dependencyobject.h: add dependency_object_get_type_name
34678         prototype.
34680 2007-07-05  Chris Toshok  <toshok@ximian.com>
34682         * uielement.h, uielement.cpp, canvas.h, canvas.cpp: refactor the
34683         mouse event code so that the Handle* calls return void, like the
34684         Enter/Leave calls do.  Also, all checks for "inside"-ness happen
34685         in the canvas/parent object.  Also factored out the loop over
34686         children to "FindMouseOver", with the checks happening in
34687         "CheckOver".
34689         This needs more testing to make sure that we're still emitting
34690         events in the right order/amount as silverlight.
34692         In uielement.cpp, also add support for showing the bounding
34693         rectangle.
34695         * control.h, control.cpp: track event refactoring.
34697         * frameworkelement.cpp (FrameworkElement::InsideObject): remove
34698         the bounding rect check.  that's handled in the parent object now.
34700 2007-07-04  Chris Toshok  <toshok@ximian.com>
34702         * media.cpp, media.h: rework our caching for images.  we now
34703         properly refcount things, don't leak the filename (or the
34704         surface), share 1 xlib surface amongst all Image's, and don't
34705         crash.  improvements all around!
34707 2007-07-04  Miguel de Icaza  <miguel@novell.com>
34709         * value.cpp (Value): Add a couple of extra cases I had missed
34710         where we should be using g_new instead of new as FreeValue always
34711         uses g_free.
34713 2007-07-03  Jackson Harper  <jackson@ximian.com>
34715         * xaml.cpp: Add the stylus types and some missing collections,
34716         this brings us up to sync with everything implemented in
34717         moonlight.
34719 2007-07-03  Chris Toshok  <toshok@ximian.com>
34721         * shape.cpp (Shape::DoDraw): if we aren't going to stroke (but we
34722         filled), we need to call cairo_new_path.
34724 2007-07-03  Jackson Harper  <jackson@ximian.com>
34726         * xaml.cpp: Some post parsing memory cleanup and a little extra
34727         debug code.
34729 2007-07-03  Chris Toshok  <toshok@ximian.com>
34731         * text.h: add prototype for text_block_set_font_source.
34733 2007-07-03  Chris Toshok  <toshok@ximian.com>
34735         * shape.cpp, shape.h: add Shape::OnSubPropertyChanged to deal with
34736         brush property changes.  Property chain up to
34737         Shape::OnSubPropertyChanged from Path::OnSubPropertyChanged.
34738         (Shape::ComputeBounds): we need to do the fill, so pass true as
34739         consider_fill to DoDraw.  otherwise a stroke-less filled shape
34740         gets bounds with w == h == 0.0.
34742 2007-07-03  Chris Toshok  <toshok@ximian.com>
34744         * collection.cpp (VisualCollection::Clear): force the invalidate
34745         when we update our bounds.  Also, don't do anything if the length
34746         of the collection is 0.
34748 2007-07-03  Chris Toshok  <toshok@ximian.com>
34750         * canvas.cpp (Canvas::ComputeBounds): we need to always include
34751         our FrameworkElement::Width/Height in our bounds computation,
34752         instead of only consulting them if we have no children.
34754 2007-07-03  Chris Toshok  <toshok@ximian.com>
34756         * media.cpp, media.h: add an image surface cache.  we don't cache
34757         the xlib surface unfortunately, so there's still a slowdown from
34758         generating 1 per Image for shared pixbufs.
34759         
34760 2007-07-03  Miguel de Icaza  <miguel@novell.com>
34762         * collection.cpp: Add support for reporting errors if the iterator
34763         gets out of sync with the collection.
34765         * demo.cpp: Updated to the new downloader interface.
34767         * downloader.cpp: Eliminates the in-memory buffer during
34768         download. 
34770         We still do the progressive updates as those are necessary for the
34771         progress indicators, and if we ever need to hook up during
34772         progressive downloads again.   
34774         But now downloads on completion must notify the downloader of the
34775         local file where the download contents have been placed (necesary
34776         for implementing the Zip-file support).
34778         (Downloader): eliminate our in-memory buffer byte_array_contents 
34780         (downloader_notify): takes a new extra argument, overloaded
34781         depended on the operation.
34782         
34783         (get_response_text): currently not implemented, it needs to be
34784         implemented by a callback into managed code so we can use ZipLib
34785         (unless we can find a suitable unmanaged version).
34787         * media.cpp: Remove the stale code for progressive image
34788         downloads. 
34789 2007-07-02  Miguel de Icaza  <miguel@novell.com>
34791         * media.cpp (SetSource): If we had a previous downloader, unref
34792         it.  
34794 2007-07-02  Chris Toshok  <toshok@ximian.com>
34796         * collection.cpp (VisualCollection::Remove): punt on the optimized
34797         behavior for now.  invalidating just the item should work if the
34798         item's bounds are correct, but for some reason the map path
34799         segments in the airline demo aren't redrawing properly.  So, for
34800         now we just invalidate the parent container when an item is
34801         removed.
34803         * control.h, control.cpp: override GetValue to report back values
34804         from our real_object if there is one, from us otherwise.  and
34805         override SetValue to set values both on us and the real_object if
34806         there is one.
34808         Also, do nothing in our ComputeBounds call.  Our GetBounds always
34809         returns the right thing (the bounds of the real_object), so
34810         there's no need to do any computation.
34812         lastly, remove the OnChildPropertyChanged. This is only invoked
34813         for attached properties, so we shouldn't ever be called.
34815 2007-07-02  Chris Toshok  <toshok@ximian.com>
34817         * canvas.cpp (Canvas::OnChildPropertyChanged): we don't need to
34818         updatebounds/invalidate here.  UpdateTransform will take care of
34819         that for us.
34821 2007-07-02  Chris Toshok  <toshok@ximian.com>
34823         * shape.cpp (Shape::OnPropertyChanged): turns out we need to
34824         update our bounds on the FillProperty changing as well, for shapes
34825         that aren't stroked.
34827 2007-07-02  Miguel de Icaza  <miguel@ximian.com>
34829         * collection.cpp: Guard for cases where we are not attached to
34830         anything (closure is set to NULL).
34832 2007-07-02  Chris Toshok  <toshok@ximian.com>
34834         * collection.cpp (collection_iterator_move_next): rework the logic
34835         here so we don't do the "current = next" assignment if
34836         iterator->first is true.
34837         (VisualCollection::Add): fix g++ warning.
34838         (TriggerCollection::SetVal): return the old element.
34840 2007-07-02  Jackson Harper  <jackson@ximian.com>
34842         * xaml.cpp: Convert char data into Runs and set them on
34843         TextBlocks, also flush the char data when starting elements, so
34844         things like: <TextBlock>line one<LineBreak />line two</TextBlock>
34845         work properly. <TextBlock><TextBlock.Inlines>text... is illegal
34846         though.
34848 2007-07-02  Miguel de Icaza  <miguel@novell.com>
34850         * value.cpp: Use g_malloc/g_free as the managed code is not able
34851         to use C++ new operator, so we have a potential error when we
34852         mismatch g_new with new and g_free with delete. 
34854         Reported by Valgrind.
34856         * uielement.cpp: Add new helper method needed by Alan.
34858 2007-07-01  Chris Toshok  <toshok@ximian.com>
34860         * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
34861         notify attachees here.
34863         * text.cpp (TextBlock::OnPropertyChanged): need to notify on
34864         Actual Width/Height property changes, even if we don't recalc
34865         anything.
34867 2007-07-01  Chris Toshok  <toshok@ximian.com>
34869         * panel.cpp (Panel::OnSubPropertyChanged): oops, didn't follow the
34870         guidelines here.  need to chain up to FrameworkElement.  fixes
34871         airline demo.
34873 2007-07-01  Chris Toshok  <toshok@ximian.com>
34875         * shape.cpp (Line::OnPropertyChanged): use recommended pattern.
34876         (Polygon::OnPropertyChanged): same.
34877         (Path::OnPropertyChanged): same.
34878         (Shape::OnPropertyChanged): same.
34879         (Rectangle::OnPropertyChanged): same.
34881         * geometry.cpp (GeometryGroup::OnPropertyChanged): use recommended
34882         pattern.
34883         (PathGeometry::OnPropertyChanged): same.
34884         (PathFigure::OnPropertyChanged): same.
34886         * brush.cpp (Brush::OnPropertyChanged): use the recommended
34887         pattern.
34888         (SolidColorBrush::OnPropertyChanged): same.
34889         (GradientBrush::OnPropertyChanged): same.
34890         (LinearGradientBrush::OnPropertyChanged): same.
34891         (RadialGradientBrush::OnPropertyChanged): new method.
34894         * brush.h: add RadialGradientBrush::OnPropertyChanged.
34896         * animation.cpp (animation_init): mark the storyboard TargetName
34897         and TargetProperty properties as attached.
34899         * text.cpp (Inline::OnPropertyChanged): follow recommended pattern
34900         for chaining.
34901         (Run::OnPropertyChanged): same.
34902         (Inline::OnSubPropertyChanged): add to handle the inline's
34903         foreground brush changing.
34905         * text.h: add Inline::OnSubPropertyChanged.
34907         * panel.h, panel.cpp: add OnSubPropertyChanged for the panel's
34908         background brush, and invalidate whenever it changes.
34910 2007-06-30  Chris Toshok  <toshok@ximian.com>
34912         * shape.cpp (Shape::OnPropertyChanged): when need to update our
34913         bounding rectangle when a number of the stroke properties change.
34914         Also update them when the stroke itself is changed.
34916 2007-06-29  Chris Toshok  <toshok@ximian.com>
34918         * text.cpp, text.h: Add back in TextBlock::OnSubPropertyChanged -
34919         we need it for the foreground property.  Make this explicit.
34920         also, add an OnSubPropertyChanged method for Glyphs, to handle the
34921         FillProperty.
34923 2007-06-29  Chris Toshok  <toshok@ximian.com>
34925         * uielement.cpp (UIElement::UpdateBounds): oops.  really only do
34926         that invalidate if the flag is true.
34928 2007-06-29  Chris Toshok  <toshok@ximian.com>
34930         * text.cpp: Do CalcActualWidtHeight on any property that might
34931         cause a change.  This is going to be a performance hit, but we
34932         need to take this step backward to get things working with the new
34933         ComputeBounds stuff.  we'll need to reoptimize this so that it
34934         still works.  Make sure to listen to OnCollectionChanged so we'll
34935         update our bounds (and recompute our actual width/height) on
34936         Inlines collection changes.
34938         * text.h: remove OnSubPropertyChanged (since it's not used.)  Add
34939         OnCollectionChanged.
34940         
34941 2007-06-29  Chris Toshok  <toshok@ximian.com>
34943         * uielement.cpp (UIElement::OnPropertyChanged): reformat this so I
34944         can actually read it, and notify attachees of our property
34945         changes.  this makes ZIndex setting resort the parent panels list.
34947         * uielement.h: add an arg to UpdateBounds (a bool that defaults to
34948         false) to force an invalidation of the new bounds.
34950 2007-06-29  Chris Toshok  <toshok@ximian.com>
34952         * panel.h, panel.cpp: okay, i'm stupid.  it's not
34953         OnChildPropertyChanged either.  it's OnCollectionChanged.  we
34954         seriously need to clean this stuff up.
34956 2007-06-29  Chris Toshok  <toshok@ximian.com>
34958         * panel.h, panel.cpp: child ZIndex property changes are reflected
34959         via OnChildPropertyChanged, not OnSubPropertyChanged.
34961 2007-06-28  Chris Toshok  <toshok@ximian.com>
34963         * canvas.cpp (Canvas::ComputeBounds): fix the debug printf's.
34965         * collection.cpp (VisualCollectoin::Clear): update the panel's
34966         bounds after the clear so we redraw everything.
34968 2007-06-27  Chris Toshok  <toshok@ximian.com>
34970         * uielement.h: stop using x1,y1,x2,y2 for bounds, use a Rect
34971         instead.  Also, rename getbounds to ComputeBounds(), and add a new
34972         GetBounds which returns the bounding rectangle.
34974         * canvas.cpp (Canvas::ComputeBounds): rename GetBounds to this.
34975         Simplify it a bit by using Rect's instead of the 4 doubles.  Note
34976         that the calls to item->GetBounds do *not* cause item's bounds to
34977         be computed.
34978         (Canvas::OnChildPropertyChanged): just call UpdateTransform on the
34979         child when its Left/Top properties change.
34980         (Canvas::HandleMotion): use Rect.PointInside to clean up the
34981         check.
34982         (Canvas::HandleButton): same.
34983         (Canvas::Render): remove the local "item_rect" and just use the
34984         item's bounds.
34986         * uielement.cpp (UIElement::UpdateBounds): remember the old
34987         bounds, compute the new bounds, and (if they're different)
34988         invalidate both and chain up to the parent's UpdateBounds method.
34989         (UIElement::UIElement): init the bounds.
34990         (UIElement::OnPropertyChanged): when switch away from a lot of the
34991         FullInvalidate calls.  If the clip or OpacityMask is changed, just
34992         Invalidate.  If the RenderTransform or RenderTransformOrigin is
34993         changed, called UpdateTransform.
34994         (UIElement::UpdateTransform): all UpdateBounds, since it's
34995         uncommon that our transform will change without our bounds
34996         changing..
34997         (UIElement::OnSubPropertyChanged): These shouldn't be necessary,
34998         but again switch away from FullInvalidate to other more targeted
34999         methods.  If the transform properties change, call
35000         UpdateTransform, for clip and OpacityMask just call Invalidate.
35001         (UIElement::Invalidate): add a Rect taking one that just
35002         invalidates the rect, and make the default variety call it with
35003         bounds as the arg.
35004         (UIElement::ComputeBounds): rename GetBounds().
35006         * shape.cpp (ComputeBounds): don't use GetSurface.  use a
35007         measuring cairo context.
35008         (Shape::OnPropertyChanged): if the Stretch property changed,
35009         UpdateBounds.  also, change from FullInvalidate to just Invalidate
35010         for everything.  Remove the UpdateTransform call as that gets
35011         handled by UIElement::OnPropetyChanged.
35012         (Rectangle::OnPropertyChanged): we only need to invalidate on a
35013         property change.
35014         (Polygon::OnPropertyChanged): if the Points property changes we
35015         need to UpdateBounds and force an Invalidate.  otherwise, just
35016         Invalidate.  no need for FullInvalidate always.
35017         (Polygon::OnCollectionChanged): new method.
35018         UpdateBounds+Invalidate to catch changes to the points collection.
35019         (Polyline::OnPropertyChanged): analogous changes as were made to
35020         Polygon::OnPropertyChanged.
35021         (Polyline::OnCollectionChanged): same as
35022         Polygon::OnCollectionChanged.
35024         * text.cpp (TextBlock::TextBlock): move the SetValue call to the
35025         end, past all the initialization of things that might be needed in
35026         ComputeBounds, which gets called.
35027         (TextBlock::ComputeBounds): don't use GetSurface.  use a measuring
35028         cairo context.
35029         (TextBlock::CalcActualWidthHeight): use a measuring context here.
35030         (TextBlock::OnPropertyChanged): remove unnecessary call to
35031         FrameworkElement::OnPropertyChanged from the end of the method.
35032         (Glyphs::ComputeBounds): return Rect (0,0,0,0).
35034         * media.cpp (MediaElement::ComputeBounds): don't use GetSurface.
35035         use a measuring context.
35036         (Image::ComputeBounds): same.
35037         (OnPropertyChanged): just Invalidate here, no need for
35038         FullInvalidate.
35039         (DownloaderEvent): just Invalidate here, not FullInvalidate.
35041         * frameworkelement.cpp (FrameworkElement::InsideObject): use
35042         Rect.PointInside.
35044         * control.cpp (Control::GetBounds): use a Rect here.
35045         (Control::ComputeBounds): forward on to the real_object.
35047         * collection.cpp (VisualCollection::VisualUpdate): when adding an
35048         element, we need to force its invalidation, but not the parent's.
35049         we just update the parent's bounds and UpdateBounds will do the
35050         invalidating if it needs to.
35052         * runtime.cpp (surface_attach): we don't need to do a full
35053         invalidate.  just update the bounds of the toplevel (which sets
35054         the width and height to the widget's) and force an invalidate
35055         (just in case the user set the width/height to exactly the same
35056         thing before attaching).
35057         (surface_size_allocate): same thing here - no need for
35058         FullInvalidate.  Just update the bounds.
35059         (measuring_context_create): create a tiny surface and a cairo_t
35060         for use in measuring things.
35061         (measuring_context_destroy): destroy the surface and cairo_t.
35063         * control.h, text.h, canvas.h, media.h, shape.h: GetBounds ->
35064         ComputeBounds.
35065         
35066 2007-06-28  Miguel de Icaza  <miguel@novell.com>
35068         * runtime.cpp (expose_event_callback): Introduce a new
35069         "transparent" field in the Surface.   If set, we clear the
35070         region with a transparent region.
35072 2007-06-27  Miguel de Icaza  <miguel@novell.com>
35074         * runtime.cpp: Event handlers will work with or without GdkWindows
35075         on the GtkWindows in preparation to support Larry later.
35077         Paint the surface with alpha transparency for now, this breaks the
35078         F-Spot embedding but will be fixed later when we can paint at an
35079         offset, wonder if this will affect performance for now.
35081         Call gtk_event_box_set_visible_window () with TRUE, so that we
35082         have a window, for now we require this to get the events working
35083         properly. 
35084         
35085         * canvas.cpp: Drop the translate transform on the topmost canvas
35086         as that was breaking all the code that depended on the inverse
35087         matrix transform to work for doing coordinate mapping based on the
35088         absolute_xform. 
35090         Instead we need to draw the cairo context at the given offset
35091         in the repaint routine.  This is left as an excercise for Larry. 
35093         Tests to validate that the mouse input is working:
35095                 * test/demo.exe: enter/leave
35096                 * surface demo
35097                 * silverlight airlines
35098                 * LunarEclipse designer.
35099         
35100         * value.cpp (FreeValue): New method that does the actual releasing
35101         of the value.   We do this here so the managed code can release
35102         things in the same way.
35104         (value_free_value): helper method.
35106 2007-06-27  Chris Toshok  <toshok@ximian.com>
35108         * clock.cpp (RaiseEnqueuedEvents): ref/unref the clocks around the
35109         calls to RaiseAccumulatedEvents.
35111 2007-06-27  Chris Toshok  <toshok@ximian.com>
35113         * clock.cpp (get_now): turns out we really do want this extra *10
35114         in there, so that it matches up with mono's TimeSpan.Tick values.
35116 2007-06-27  Chris Toshok  <toshok@ximian.com>
35118         * canvas.cpp (Canvas::GetBounds): Collapsed elements shouldn't
35119         take part in bounds computation.
35120         (Canvas::HandleButton): !Visible elements don't take part in hit
35121         testing.
35122         (Canvas::HandleMotion): same here.
35124 2007-06-27  Jackson Harper  <jackson@ximian.com>
35126         * xaml.cpp: Use Type to lookup the property owner, because it
35127         might be a "ghost" type that the xaml parser can't lookup.
35129 2007-06-27  Miguel de Icaza  <miguel@novell.com>
35131         * control.cpp: When handling events, we also need to pass the
35132         event notification to the control, not only to the "real_object"
35133         that we are proxying for.   This is what cause the calendar to
35134         malfunction. 
35136         * canvas.cpp (GetBounds): Do not use 0, 0, 0, 0 for the bounds of
35137         the canvas, instead use the point at (0,0) and the width, height
35138         with its absolute transformation.
35140         Otherwise canvases with children would end up with
35141         (0,0,0,0) and when compounded would extend the bounding box of
35142         containing ones to include this region even when not needed.
35144 2007-06-26  Chris Toshok  <toshok@ximian.com>
35146         * uielement.h: add virtual GetSurface() method.
35148         * uielement.cpp: implement UIElement::GetSurface to just chain up
35149         to the parent element if we have one, and return NULL otherwise.
35150         Also, make item_get_surface call this method.  removes the
35151         dependency on canvas.h from this file.
35153         * canvas.h: we override UIElement::GetSurface ()
35155         * canvas.cpp (Canvas::GetSurface): if we're the toplevel canvas,
35156         return our surface.  otherwise call our base class's GetSurface.
35158         * media.h: rename Image::GetSurface here to GetCairoSurface to
35159         avoid name collision.
35161         * brush.cpp, media.cpp: track media.h change.
35163 2007-06-26  Miguel de Icaza  <miguel@novell.com>
35165         * collection.h: Change of course.   The actual public interface
35166         implements IList<T> and ICollection<T> not IList nor ICollection
35167         which means that Add does not need to return an index, and Remove
35168         must return whether it actually removed the object.
35169         
35170         * collection.h (Add): Make this method return the index of the
35171         object just created, so we can implement int IList.Add(...).
35173         Removed all the empty Add/Remove methods from collections that
35174         were not doing anything interesting with them, the remaining
35175         chunks of old hacks.
35176         
35177         * (SetVal): This method is used to replace a value at a given
35178         index with another one.   For the C# IList.this [int] indexer.
35180 2007-06-26  Chris Toshok  <toshok@ximian.com>
35182         * clock.cpp: make a copy of the child clocks lists before
35183         traversing them calling callbacks that could result in the lists
35184         being modified.
35186 2007-06-26  Chris Toshok  <toshok@ximian.com>
35188         * dependencyobject.h: add OnCollectionChanged to allow
35189         propertychange notifications from elements in collections to
35190         bubble up to their parent.
35192         * collection.h: make the closure a DependencyObject*, just to be
35193         explicit.  also, add OnSubPropertyChanged to Collection so we can
35194         generate OnCollectionChanged notifications.
35196         * collection.cpp: hook things up on elements in collections, and
35197         generate proper notifications from the collection to its closure.
35199         * enums.h: add CollectionChangeType for use in
35200         OnCollectionChanged.
35202         * geometry.h, geometry.cpp, shape.h, shape.cpp: use the new
35203         collection notification stuff to bubble changes up the hierarchy.
35204         
35205 2007-06-26  Jeffrey Stedfast  <fejj@novell.com>
35207         * list.cpp (Replace): Added.
35209         * dependencyobject.cpp (dependency_object_get_value_no_default):
35210         New binding function.
35211         (dependency_object_get_object_type): Renamed from get_kind() which
35212         didn't mirror the native API at all.
35214 2007-06-26  Sebastien Pouliot  <sebastien@ximian.com>
35216         * geometry.cpp|h: Add missing PathSegment::OnPropertyChanged
35217         * shape.cpp: Remove debugging output.
35219 2007-06-26  Chris Toshok  <toshok@ximian.com>
35221         * uielement.h: change render/dorender to take a cairo_t* instead
35222         of a Surface*.
35224         * canvas.h, control.h, text.h, geometry.h, canvas.cpp,
35225         uielement.cpp, geometry.cpp, shape.cpp, media.h, shape.h,
35226         media.cpp, control.cpp, runtime.cpp, text.cpp: fallout from the
35227         above change.
35228         
35229 2007-06-25  Jeffrey Stedfast  <fejj@gnome.org>
35231         * brush.cpp (LinearGradientBrush::SetupBrush): Use
35232         uielement->get_size_for_brush() because the framework width/height
35233         might be 0.
35235         * text.cpp: Implement text wrapping and clipping to Width/Height
35236         bounds if specified.
35238 2007-06-25  Miguel de Icaza  <miguel@novell.com>
35240         * runtime.cpp: Cope with the fact that we are now windowless and
35241         we will be sharing the parent's window.   Fixes mouse events.
35243         * collection.cpp (collection_get_value_at, collection_count): Add
35244         new methods.
35246 2007-06-25  Jeffrey Stedfast  <fejj@novell.com>
35248         Mango-licious.
35250         * text.cpp: Rewritten to use the new MangoRenderer and
35251         MangoAttrForeground classes.
35253         * mango.cpp: New source file implementing a PangoRenderer and
35254         providing a new PangoAttribute for brushes.
35256 2007-06-25  Chris Toshok  <toshok@ximian.com>
35258         * runtime.h: add decl for Panel::OnSubPropertyChanged.
35260         * runtime.cpp (UIElement::OnPropertyChanged): handle changes to
35261         zIndex by invalidating the item's rectangle.
35262         (UIElement::OnSubPropertyChanged): add braces around all the if
35263         blocks for consistency.
35264         (Panel::OnSubPropertyChanged): if a child changes its z index we
35265         need to resort our visual collection.
35266         (Canvas::render): loop over the z sorted list of children instead
35267         of the default collection list.
35268         (item_init): just to be anal, cast the Zindex default value to
35269         gint32.
35271 x2007-06-25  Chris Toshok  <toshok@ximian.com>
35273         * collection.cpp: keep a z-sorted list in VisualCollection,
35274         adding/removing elements from it when needed, and clearing it when
35275         the collection is cleared.
35277         * collection.h: add a virtual clear method so VisualCollection can
35278         override it.  Also, add a z_sorted_list member to
35279         VisualCollection, so we can deal with the ZIndices of children.
35281 2007-06-24  Alan McGovern  <amcgovern@novell.com>
35283         * runtime.(cpp|h): Implemented UIElement.ZIndexPropery
35285 2007-06-24  Larry Ewing  <lewing@novell.com>
35287         * runtime.cpp: rework size allocation and make toplevel Canvas
35288         items read the allocation->x and allocation->y offsets from the
35289         surface widget when computing their position.
35291 2007-06-24  Chris Toshok  <toshok@ximian.com>
35293         * Makefile.am (libmooninclude_HEADERS): add collection.h
35294         (libmoon_la_SOURCES): add collection.cpp
35296         * collection.h, collection.cpp: new files.  split out Collection
35297         and all the collection-related code from runtime.h/runtime.cpp.
35298         arguably the collections specific to certain elements should exist
35299         completely in those .cpp/.h files, instead of here.
35301         * runtime.h, runtime.cpp: remove collection stuff.
35303         * clock.h, animation.h, transform.h: #include collection.h
35305         * value.h, value.h.in: #include <string.h> here so we can stop
35306         requiring it for everyone else.  really, though we should be using
35307         g_strcmp or something that's already pulled in from glib.
35308         
35309 2007-06-24  Chris Toshok  <toshok@ximian.com>
35311         * Makefile.am (libmoon_la_SOURCES): add array.cpp
35312         (libmooninclude_HEADERS): add array.h
35314         * xaml.cpp, value.cpp, shape.cpp, geometry.cpp: include array.h
35316         * array.h, array.cpp: new files, split them out from
35317         runtime.h/.cpp.
35319 2007-06-24  Chris Toshok  <toshok@ximian.com>
35321         * Makefile.am (libmooninclude_HEADERS): add xaml.h
35323         * xaml.h: split this out from...
35325         * runtime.h: ... here.
35327         * xaml.cpp, runtime.cpp, control.h, demo.cpp: #include xaml.h
35328         
35329 2007-06-24  Chris Toshok  <toshok@ximian.com>
35331         * Makefile.am (libmooninclude_HEADERS): add control.h
35333         * control.h: split out class Control stuff...
35335         * runtime.h: .. from here.
35337         * runtime.cpp: #include control.h
35339         * control.cpp: same.
35341 2007-06-24  Chris Toshok  <toshok@ximian.com>
35343         * runtime.h: add OnLoaded methods to UIElement, Panel, and
35344         Control.
35346         * runtime.cpp (UIElement::OnLoaded): emit the Loaded event if we
35347         haven't already.
35348         (VisualCollection::Add): only invoke OnLoaded on the item if the
35349         closure (the parent of the collection) has been loaded.
35350         (VisualCollection::Insert): same.
35351         (Panel::OnLoaded): call OnLoaded on all our children, then chain
35352         up.
35353         (surface_attach): call canvas->OnLoaded instead of
35354         emit_loaded_events(canvas).  also, don't use a special IS_CANVAS
35355         flag - just use the type system.
35356         (item_get_surface): get rid of the IS_CANVAS flag and just use the
35357         type system.
35359         * control.cpp (Control::OnLoaded): new method, invoke OnLoaded on
35360         the real object before chaining up.
35362 2007-06-24  Larry Ewing  <lewing@novell.com>
35364         * runtime.cpp: disable transparent surfaces while fixing the
35365         drawing offset problem.
35367 2007-06-24  Larry Ewing  <lewing@novell.com>
35369         * brush.cpp: use cairo_create_similar rather than using an image
35370         brush.
35372 2007-06-24  Chris Toshok  <toshok@ximian.com>
35374         * runtime.cpp (VisualCollection::Add): only emit Loaded if the
35375         tree we're adding it to has already been loaded.
35377 2007-06-24  Larry Ewing  <lewing@novell.com>
35379         * demo.cpp: add -trans flag to demo to make the toplevel transparent.
35381 2007-06-24  Larry Ewing  <lewing@novell.com>
35383         * runtime.cpp: add comments to the new gtk functions.
35385         * runtime.h: expose surface_paint.
35387 2007-06-23  Miguel de Icaza  <miguel@novell.com>
35389         * runtime.cpp: Since unrealize does not seem to be called when our
35390         widget is destroyed by Mozilla, we need to cleanup on destroy the
35391         tick event.   This takes care of one of the plugin crashers.
35393         There are still others that I have to find out, I added some
35394         debugging prints for now.
35396 2007-06-24  Larry Ewing  <lewing@novell.com>
35398         * runtime.cpp: derive from EventBox not drawing area so that we
35399         can use it as a quick method of switching back and forth between
35400         transparent and not.  Add a method to let external code paint to a
35401         cairo context.
35403 2007-06-23  Jeffrey Stedfast  <fejj@gnome.org>
35405         * text.cpp (SetValue): Overridden to enforce Text strings not
35406         preserving any leading nor trailing whitespace (as defined in the
35407         Silverlight docs).
35409 2007-06-22  Jeffrey Stedfast  <fejj@novell.com>
35411         * xaml.cpp (matrix_value_from_str): use delete[] to free the array
35412         of doubles instead of g_free() as it was allocated with new, not
35413         g_malloc().
35415         * text.cpp (Layout): D'oh, make sure to always init text/block
35416         width/height values. This fixes VideoBrush again.
35418 2007-06-22  Jeffrey Stedfast  <fejj@novell.com>
35420         * mplayer.cpp: Initialize 'opened' state variable.
35422         * text.cpp (GetValue): Override DependencyObject::GetValue() so
35423         that we can special-case getting TextBlock::Actual[Width,Height]
35424         properties (this allows us to prolong re-calculating these values
35425         until after the user has set the values he's going to set -
35426         re-calculating on ever property change is too expensive.
35428         * runtime.h: Make DependencyObject::GetValue() virtual.
35430 2007-06-22  Jeffrey Stedfast  <fejj@gnome.org>
35432         * text.cpp: Stubbed out the required virtual methods for Glyphs
35433         and attempted to make ActualWidth and ActualHeight calculated
35434         immediately in an attempt to get DrPopper working better.
35436 2007-06-22  Sebastien Pouliot  <sebastien@ximian.com>
35438         * shape.cpp: Small hack to avoid calling Draw 2 times during render.
35440 2007-06-22  Chris Toshok  <toshok@ximian.com>
35442         * xaml.cpp (key_spline_from_str): free up the point arrays from
35443         point_array_from_str after we use them.
35444         (xaml_set_property_from_str): same.
35446 2007-06-22  Chris Toshok  <toshok@ximian.com>
35448         * value.cpp (Value): the copy ctor is definitely corrupting memory
35449         in the MATRIX case - we need to allocate the destination matrix.
35451 2007-06-21  Chris Toshok  <toshok@ximian.com>
35453         * Makefile.am: not that anyone should be installing this yet,
35454         install the headers to $(includedir)/libmoon.
35456 2007-06-21  Jeffrey Stedfast  <fejj@novell.com>
35458         * text.cpp: Reworked text layout/rendering logic - we now cache
35459         width/height info for each text string as well as the overall
35460         block width/height. This info is then used to align text strings
35461         on each line along the bottom edge (rather than along the top
35462         edge) of the line of text.
35464         * xaml.cpp (char_data_handler): Ignore insignificant lwsp CDATA
35466 2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35468         * stylus.h|cpp: Add InkPresenter.
35469         * media.h|cpp: Add C methods to stop, pause and play a MediaElement.
35470         * value.h, type.h|cpp: Updated.
35472 2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35474         * animation.cpp: Register *KeyFrame::Value properties as nullable.
35475         * clock.cpp: Register TimelineMarker properties.
35477 2007-06-21  Jackson Harper  <jackson@ximian.com>
35479         * xaml.cpp: When setting the x:Name also set the name property.
35481 2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35483         * stylus.cpp|h: Added Stroke and DrawingAttributes.
35484         * runtime.h: All collections can now implement GetElementType.
35485         * value.h, type.h, type.cpp: Updated.
35486         
35487 2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35489         * stylus.cpp|h: Added.
35490         * runtime.cpp|h: Define and call stylus_init.
35491         * Makefile.am: Add stylus.cpp|h.
35492         * value.h, type.h, type.cpp: Updated.
35494 2007-06-21  Jackson Harper  <jackson@ximian.com>
35496         * xaml.cpp: Add a global set of callbacks, so that all of the
35497         custom callbacks for a given parsing instance use the same
35498         methods.  This needs to be encapsulated properly, but for now is
35499         fine.
35501 2007-06-20  Chris Toshok  <toshok@ximian.com>
35503         * animation.cpp, animation.h: KeyFrameCollection overrides
35504         Collection::Clear to clear its sorted list.
35506         * runtime.cpp, runtime.h: add overrideable Collection::Clear
35507         method, and move collection_clear's body into it.
35509 2007-06-21  Jackson Harper  <jackson@ximian.com>
35511         * runtime.cpp|h: Don't return false on single element collections
35512         on the first item.
35514 2007-06-21  Jeffrey Stedfast  <fejj@gnome.org>
35516         * text.cpp: Use absolute font sizes, makes the fonts not so huge.
35518 2007-06-20  Jackson Harper  <jackson@ximian.com>
35520         * xaml.cpp: Set namecopes earlier, and make sure to copy the
35521         namescope when we recreate a class using x:Class.
35522         - When we use x:Class reparse the element's attributes, so it can
35523         hook up to events and set properties.
35524         * runtime.cpp|h: When the Name property is set, register it with
35525         the proper NameScope.
35526         
35527 2007-06-20  Chris Toshok  <toshok@ximian.com>
35529         * runtime.cpp, runtime.h: add rudimentary Visibility support.  we
35530         only support Visible/Hidden really, and treat Collapsed as Hidden.
35532         * xaml.cpp (enum_from_str): use g_strcasecmp here.
35534 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com> 
35536         * shape.cpp|h: Implement caching of Path (this could be extended to
35537         all shapes).
35538         * geometry.cpp|h: Notify on changes.
35540 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com>
35542         * xaml.cpp: Don't allocate (and free) a copy of the PML before 
35543         calling geometry_from_str.
35545 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com> 
35547         * shape.cpp: Fix some Stretch modes for paths. This can get very
35548         expansive, next step is to cache the cairo_path_t* in the Path and
35549         recompute it only on changes.
35551 2007-06-20  Chris Toshok  <toshok@ximian.com>
35553         * xaml.cpp (is_valid_event_name): new function.
35554         (dependency_object_hookup_event): only allow valid events to be
35555         hooked up.
35557 2007-06-20  Jackson Harper  <jackson@ximian.com>
35559         * runtime.cpp|h: New method for finding an objects namescope.
35560         - Call an objects loaded event when it is added to a Collection
35561         - Some bits of namescope merging, these functions aren't called
35562         yet though.
35564 2007-06-20  Chris Toshok  <toshok@ximian.com>
35566         * xaml.cpp (dependency_object_hookup_event): we need more than
35567         just the Loaded event.
35569 2007-06-20  Jeffrey Stedfast  <fejj@novell.com>
35571         * text.cpp (Run): Don't set default font values here... we need
35572         them to be unset if they aren't explicitly set by the user so that
35573         we can inherit font properties from our parent TextBlock.
35574         (Draw): Fixed to make Runs inherit unset font properties from the
35575         TextBlock at render-time. Also fixed to make sure we have a
35576         foreground brush to draw with... if unset, use the default brush.
35578 2007-06-20  Chris Toshok  <toshok@ximian.com>
35580         * runtime.cpp (UIElement::render): make this print the classname
35581         like UIElement::getbounds() does.
35583         * runtime.h, runtime.cpp: make control_initialize_from_xaml take
35584         the xaml parser custom element callbacks.
35586 2007-06-20  Chris Toshok  <toshok@ximian.com>
35588         * runtime.cpp (runtime_shutdown): set inited to false, since we
35589         want people to be able to call runtime_init again after this.
35591         * type.cpp.in (Type::RegisterType): allocate types if we need to.
35592         (Type::Shutdown): free types.
35594         * type.h.in (private): make the types array dynamically allocated.
35596         * type.h, type.cpp: sync
35598 2007-06-20  Jeffrey Stedfast  <fejj@novell.com>
35600         * text.cpp (TextBlock): Need to actually set ActualWidth and
35601         ActualHeight values.
35603 2007-06-20  Chris Toshok  <toshok@ximian.com>
35605         * clock.cpp (Clock::Tick): if we hit our natural duration but our
35606         duration is Automatic, go to Fill mode, since we may have child
35607         clocks that started after us and need a chance to run their last
35608         tick.
35610 2007-06-20  Jeffrey Stedfast  <fejj@novell.com>
35612         * runtime.cpp (collection_iterator_move_next): If we can't iterate
35613         to the next item, don't set current = NULL.
35614         (dependency_object_get_name): New function needed for the binding.
35616 2007-06-20  Larry Ewing  <lewing@novell.com>
35618         * runtime.cpp: use gdk_cairo helper functions and clip to the
35619         expose event region.
35621         * runtime.h: remove unused members.
35623         * media.cpp: use cairo_get_target rather than keeping track of
35624         pixmap.
35626 2007-06-20  Jackson Harper  <jackson@ximian.com>
35628         * xaml.cpp/runtime.h: Add one more callback, this one will hookup
35629         events to methods. So things like Loaded=CanvasLoaded will work.
35630         * demo.cpp:
35631         * control.cpp:
35632         
35633 2007-06-20  Jackson Harper  <jackson@ximian.com>
35635         * xaml.cpp: More verbose debug output with namespace lookup
35636         errors.
35637         - Map in the default namespaces if we are unable to lookup the
35638         proper namespace name.
35640 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com> 
35642         * shape.cpp: Call cairo_[stroke|fill]_extents inside Shape::getbounds
35643         or the mouse moving won't work.
35645 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com>
35647         * shape.cpp: Fix Shape::getbounds to work even if no stroke brush is
35648         assigned, in that case we get the extents of the fill.
35650 2007-06-20  Chris Toshok  <toshok@ximian.com>
35652         * animation.cpp: um.. "oops".
35654         * xaml.cpp (xaml_init): enable the parsing of the color/point
35655         spline key frames.
35657 2007-06-20  Chris Toshok  <toshok@ximian.com>
35659         * animation.cpp: guard against division by zero in the double
35660         keyframe GetCurrentValue method.  I'll fix this method up some
35661         more and then report it to the other animation types.
35663         Also, add the Spline(Color,Point)KeyFrames.
35665         * clock.cpp, clock.h: fixes to get all this working again while
35666         still supporting the needed things from the last patch (like
35667         BeginTime.)
35669         * transform.cpp (GetTransform): i hate like hell to have to do
35670         this, but if we scale by 0.0 cairo can't invert the matrix and
35671         then everything goes belly up.  0.00002 is the smallest number I
35672         found (0.00001 doesn't work, for instance) where cairo doesn't
35673         complain about the inverse stuff.
35675         * media.cpp (media_element_set_buffering_time): we have to use the
35676         hacky Value ctor here.
35677         (media_element_set_position): and here.
35679         * runtime.cpp (emit_loaded_events): new function to walk the tree
35680         and emit loaded events.
35681         (surface_attach): call emit_loaded_events here - the docs specify
35682         that Loaded is emitted after it's associated with the host but
35683         before it's rendered.
35684         (Canvas::render): don't emit Loaded here.
35685         (runtime_init): output a nice message here if you run cairo
35686         against a verion of cairo that you shouldn't be using.
35688         * type.h, type.cpp, value.h: resync.
35690 2007-06-20  Jackson Harper  <jackson@ximian.com>
35692         * xaml.cpp: Improve the way we handle x:Class attributes failing
35693         to load.
35695 2007-06-20  Jackson Harper  <jackson@ximian.com>
35697         * xaml.cpp: Hookup attached properties in the property_from_str
35698         method.
35700 2007-06-19  Chris Toshok  <toshok@ximian.com>
35702         * media.cpp (media_element_get_buffering_time): use AsTimeSpan().
35703         (media_element_get_position): same.
35704         (media_init): mark BufferingTime and Position as TimeSpan's.
35706 2007-06-19  Chris Toshok  <toshok@ximian.com>
35708         * clock.cpp, clock.h: bad time for a a rearchitecting, perhaps,
35709         but this was necessary to get BeginTime's to be supported.  It
35710         reintroduces the "popping" in the surface demo, though, and
35711         honestly I'm unsure how we can ever guarantee that enough ticks
35712         will have occured to be sure we won't see the initial state of the
35713         surface objects.
35715         * animation.cpp: track clock api changes.
35717         * runtime.h: decl for FramworkElement::OnPropertyChanged.
35718         
35719         * runtime.cpp (EventObject::Emit): make a copy of the list before
35720         we start emitting, to keep us crashing if the list is modified
35721         while we're traversing it.
35722         (FramworkElement::OnPropertyChanged): invalidate on width/height
35723         changes.
35725         * xaml.cpp: when parsing a TIMESPAN property, use
35726         timespan_from_str.  This fixes the parsing of BeginTime
35727         attributes.
35729         * type.cpp.in: register TIMESPAN.
35731         * value.h.in: add a AsTimeSpan method, and special hacky
35732         constructor so the parser can construct a value of type TIMESPAN
35733         (which is problematic since it's typedef'ed to gint64.)  Move the
35734         TimeSpan typedef here.
35736         * value.cpp: add the impl for that hacky ctor.
35737         
35738         * type.h.in: add a TIMESPAN kind.
35740         * type.h, value.h, type.cpp: sync.
35742 2007-06-19  Jackson Harper  <jackson@ximian.com>
35744         * xaml.cpp: we need to new the points.
35746 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
35748         * geometry.cpp: Add safety to ensure the number of points are 
35749         valid before iterating on them.
35751 2007-06-19  Jackson Harper  <jackson@ximian.com>
35753         * xaml.cpp: make sure to get all the points.
35754         - sneak peek at the exciting new attached property setting code.
35755         - improve error message
35756         - dont step off the end of the string when the trailing characters
35757         are white space.
35759 2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
35761         * *.cpp: Updated to use the new List type.
35763         * runtime.cpp|h (Collection): Modified to use List instead of
35764         GList which made some code simpler, we get to take advantage of
35765         destructors, woo!
35767         * demo.cpp (main): Removed surface_destroy() and
35768         runtime_shutdown() out of the delete_event callback (gtk timeouts
35769         could still fire after the gtk_main_quit() call it seems).
35771 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com>
35773         * runtime.cpp: Enforce UIElement::ClipProperty when rendering
35774         Canvas
35776 2007-06-19  Jackson Harper  <jackson@ximian.com>
35778         * xaml.cpp: Content properties can be inherited.
35780 2007-06-19  Jackson Harper  <jackson@ximian.com>
35782         * xaml.cpp: Make sure that we have a previous figure.
35784 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
35786         * geometry.cpp|h: Revert previous changes. That didn't work well
35787         with groups/collections.
35788         * shape.cpp: Path::Draw now process the path (find and susbtract
35789         origin) when Stretch requires it.
35791 2007-06-19  Jackson Harper  <jackson@ximian.com>
35793         * xaml.cpp: Set the namescope right away, so FindName will work in
35794         element constructors.
35796 2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
35798         * animation.cpp: Switched to use List instead of GList.
35800 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
35802         * geometry.cpp|h: Change API so the Strech value is propagated from
35803         the shape to all the geometry figures. Fixed Stretch for LineGeometry,
35804         EllipseGeometry and RectangleGeometry.
35805         * shape.cpp: Path::Draw now supply the Stretch property value to
35806         all Geometry objects drawing methods.
35808 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
35810         * shape.cpp: Don't call cairo_new_path inside moon_ellipse. It's
35811         the caller responsbility to do so, if required (e.g. it isn't for
35812         geometry stuff).
35814 2007-06-19  Jackson Harper  <jackson@ximian.com>
35816         * xaml.cpp: Implement all the optional points on path markup.
35818 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
35820         * shape.cpp: Fix Stretch for Polyline and Polygon.
35822 2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
35824         * xaml.cpp: Updated to use a real linked list implementation.. for
35825         added uberness. Also reduces memory leakage.
35827         * mplayer.cpp: Stubbed out a few more things and can now return
35828         the video duration.
35830 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
35832         * shape.cpp|h: Set Shape::Stretch default to None and set Stretch
35833         property to fill inside Rectangle and Ellipse ctors.
35835 2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
35837         * runtime.cpp (Insert): Make this use SharedAdd too, which I
35838         presume was the whole point.
35840 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
35842         * shape.cpp: Fix Strech support for Rectangle (it behave more like
35843         Ellipse but that shows only with non squares).
35845 2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
35847         * mplayer.cpp (audio_loop): Fixed muting to advance the correct
35848         number of pts and not hang forever in a g_usleep() (gah, the timer
35849         was a huge negative value).
35851 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35853         * clock.h: Added TimelineMarker.
35854         * type.h, type.cpp, value.h: Updated.
35856 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
35858         * shape.h: Fix filling for Polyline. MS supports filling polylines,
35859         even unclosed ones.
35861 2007-06-19  Chris Toshok  <toshok@ximian.com>
35863         * runtime.cpp (surface_realloc): make sure to reassign s->cairo to
35864         s->cairo_xlib after recreating the xlib stuff.  avoids a crash
35865         when resizing surfaces.
35867 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
35869         * shape.cpp: Add Strech support for Ellipse.
35871 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com>
35873         * shape.cpp: Add Strech support for Rectangle (only None is different).
35874         Add comments to Line as Stretch doesn't apply for this Shape.
35876 2007-06-19  Miguel de Icaza  <miguel@novell.com>
35878         * runtime.cpp (Collection): Add new Insert method, and update all
35879         the callers that overwrote it.   We probably need to cleanup
35880         everything that is doing virtual overrides and is a no-op 
35882 2007-06-19  Chris Toshok  <toshok@ximian.com>
35884         * runtime.cpp (clear_drawing_area): this method doesn't need to
35885         clean up the xlib cairo context/surface and the pixmap.
35887         There are two possibilities:
35889         1) the drawing area has been realized, which means we have xlib
35890         surface/context + pixmap.  We're guaranteed to hit
35891         unrealized_callback before this method is called, so they will
35892         have already been freed.
35894         2) the drawing area has not been realized, which means we have no
35895         xlib surface/context + pixmap, and this method doesn't need to do
35896         anything.
35898 2007-06-19  Jackson Harper  <jackson@ximian.com>
35900         * runtime.h/shape.cpp: Fix typo.
35902 2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
35904         * text.cpp (Run::OnPropertyChanged): Always chain up to our parent
35905         implementation and if one of our properties changed, notify our
35906         attachees.
35907         (Inline::OnPropertyChanged): Same.
35908         (TextBlock::OnPropertyChanged): Keep track of Inlines changes.
35909         (TextBlock::Draw): Use our foreground brush directly and the same
35910         for run's foreground brush.
35912 2007-06-19  Miguel de Icaza  <miguel@novell.com>
35914         * runtime.cpp: Implement collection iterators.
35916 2007-06-19  Chris Toshok  <toshok@ximian.com>
35918         * xaml.cpp (timespan_from_str): don't walk off the end of the
35919         string.
35921 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35923         * animation.h|cpp: Remove pureness from KeyFrame::InterpolateValue.
35925 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35927         * animation.h|cpp: Add *_key_frame_new.
35929 2007-06-19  Jackson Harper  <jackson@ximian.com>
35931         * xaml.cpp\runtime.h: Add a public function for setting
35932         properties, from strings.  Basically a copy and paste of my
35933         set_attributes code.  Eventually I should be able to merge the
35934         two, but they use different name lookup mechanisms right now.
35936 2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
35938         * animation.cpp (Remove): Remove the KeyFrame from the sorted list
35939         before removing it from the collection (since it may be freed by
35940         Collection::Remove).
35942 2007-06-19  Miguel de Icaza  <miguel@novell.com>
35944         * runtime.cpp: Add support for notifying the consumer that the
35945         surface has resized.
35947         Add support for resizing objects.
35949 2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
35951         * brush.cpp (~VideoBrush): We want to detach from the media
35952         element, not ourselves. Doh.
35954 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com>
35956         * shape.h: Update comments about which shapes needs, or not, to 
35957         provide a getxformorigin method.
35959 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35961         * media.h|cpp: Add media_base_new.
35963 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35965         * value.cpp|h|in: Inline the non-DependencyObject
35966         As* functions as well.
35968 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35969         
35970         * typegen.cs: Removed some dead code.
35971         * value.cpp.in: Deleted, not needed anymore.
35972         * runtime.cpp, value.cpp, type.cpp.in: Moved 
35973         implementation of Value and Type into their own files.
35974         * type.cpp: Updated.
35976 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35978         * type.h, type.h.in: Created, moved declaration of Type here.
35979         * *.h|cpp|in: Move Value:Kind to Type::Kind and update all
35980         references. Move the Value::As* into the header.
35981         * typegen.cs: Updated to cope with Kind changes.
35983 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35985         * runtime.cpp|h, value.h.in: Remove current nullable code,
35986         it's easier to store an is_nullable flag in the registered
35987         property, and store NULL values in the objects hashtable.
35988         * xaml.cpp: Revert unnecessary fixes.
35989         * value.h: Updated.
35991 2007-06-19  Chris Toshok  <toshok@ximian.com>
35993         * runtime.h: get rid of the specialized surface callbacks for
35994         mouse events.  we can dispatch them directly to the UIElements.
35995         Change the EventObject signatures to permit an event/call data as
35996         well as the closure.  add the sender object for kicks while we're
35997         at it.
35999         * runtime.cpp: dispatch element events through the
36000         DependencyObject's events object.
36002         * animation.h, animation.cpp: update signatures for event
36003         handlers.
36005         * control.cpp (handle_button): track signature change.
36007         * clock.cpp: same.
36009 2007-06-18  Chris Toshok  <toshok@ximian.com>
36011         * clock.cpp (TimeManager::Tick): add a lot of timing foo.
36012         (ClockGroup::RaiseAccumulatedEvents): raise the Completed event if
36013         we switching to the stopped state and our progress is 1.0 (that
36014         is, if we've finished).
36016         * animation.h, animation.cpp (Storyboard::Begin): rather heavy
36017         handed (but bulletproof) approach to making Begin work on a
36018         storyboard that has run its course - destroy the clock hierarchy
36019         and recreate it.  Also, add a handler for the ClockGroup's
36020         "Completed" event so we can reflect that back to managed land.
36022         * runtime.h: add C functions to add/remove handlers from the
36023         EventObject inside a dep object.
36025 2007-06-18  Jackson Harper  <jackson@ximian.com>
36027         * xaml.cpp: Set text context properties from char data.  This
36028         allows you to do things like <Run>Hi I am some text</Run>.  As far
36029         as I can tell, Run is the only element that allows this.
36031 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
36033         * shape.cpp|h: Fix Line and Ellipse getxformorigin.
36035 2007-06-18  Jackson Harper  <jackson@ximian.com>
36037         * xaml.cpp: Now implement the smooth beziers correctly, much
36038         thanks to spouliot for figuring out the formula to reflect control
36039         points.
36041 2007-06-18  Chris Toshok  <toshok@ximian.com>
36043         * clock.h, clock.cpp: ifdef some debug spew, add a bitmask for
36044         what the timemanager should do on a given tick, and add some
36045         #defines/logic to calculate the gtk delay from the desired
36046         framerate.  Set the desired framerate to 20fps.
36048 2007-06-18  Jeffrey Stedfast  <fejj@novell.com>
36050         Instead of attaching to Brush::ChangedProperty, connect to NULL.
36052         * media.cpp (render): If the width/height are 0.0, then use the
36053         video's natural width/height.
36054         (OnPropertyChanged): chain up.
36056         * shape.cpp (OnPropertyChanged): Always chain up to our parent.
36058 2007-06-18  Chris Toshok  <toshok@ximian.com>
36060         * xaml.cpp (dependency_object_set_attributes): suggestion by rolf.
36061         fixes setting of nullable property values.
36063 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36065         * runtime.cpp: Store NULL again in the property hashtable,
36066         but use the lookup_extended function to detect this and return
36067         a correct NULL value instead of the default value.
36069 2007-06-18  Chris Toshok  <toshok@ximian.com>
36071         * runtime.cpp (RemoveHandler): more cleanups.
36073 2007-06-18  Chris Toshok  <toshok@ximian.com>
36075         * runtime.cpp (RemoveHandler): g_free'ing a new'ed c++ object =
36076         bad.
36078 2007-06-18  Jackson Harper  <jackson@ximian.com>
36080         * xaml.cpp: Implement path closing and ArcSegments.
36082 2007-06-18  Miguel de Icaza  <miguel@novell.com>
36084         * runtime.cpp (SetValue): This looks painful, now
36085         DependencyObjects are stored inside the hash but they might
36086         contain a NULL.   This seems bad.
36087         
36088         (Value): Do not delete null dependency objects.
36090         Remove this patch, and try demo.exe, enter/leave/enter, this
36091         crashes now, because the leave sets the fill to "null" and the
36092         enter then tries to access it
36094 2007-06-18  Jeffrey Stedfast  <fejj@novell.com>
36096         * brush.cpp: Do proper OnPropertyChanged proagation.
36097         (ImageBrush::OnPropertyChanged): Notify using the generic
36098         Brush::ChangedProperty.
36099         (VideoBrush::OnPropertyChanged): Same.
36100         (VideoBrush::OnSubPropertyChanged): Same.
36102         * shape.cpp (Shape): Need to keep track of our stroke/fill brushes
36103         so we can listen for change notification.
36105         * runtime.cpp (UIElement): Same.
36106         (Panel): Here too.
36108         * text.cpp (TextBlock): Same here (need to do it for Inlines too
36109         at some point).
36111         * media.cpp (media_base_new): Removed, you can't instantiate a
36112         MediaBase.
36113         (advance_frame): Optimization hack: don't invalidate if our
36114         opacity is 0.
36115         (MediaElement::render): Respect opacity and stretch properties.
36117 2007-06-18  Jackson Harper  <jackson@ximian.com>
36119         * xaml.cpp: We need to create new figures if we get a Move
36120         command.
36122 2007-06-18  Chris Toshok  <toshok@ximian.com>
36124         * demo.cpp: use TimeManager::AddTickCall for the async file
36125         loading.  This makes the image visible immediately for me, instead
36126         of requiring the animations be paused to see it.
36128         * clock.cpp, clock.h: add a one-shot "tick call" idle handler of
36129         sorts to TimeManager.  This way we can better control when the
36130         cross thread downloader calls happen, and keep them from affecting
36131         the frame rate, and also keep them from being starved by an
36132         overzealous demo.cpp.
36134 2007-06-18  Chris Toshok  <toshok@ximian.com>
36136         * runtime.cpp (unrealized_callback): remove the render handler.
36137         (realized_callback): attach the render handler.
36138         (render_surface): a very simple render handler.  We just force gtk
36139         to process all pending updates.
36141         * clock.cpp (TimeManager::Tick): as a temporary hack, have
36142         TimeManager emit the "render" event after every animation tick.
36143         We should add tuning to this method to achieve usable framerates
36144         without killing the cpu.
36146         * clock.h: make TimeManager subclass from EventObject so we can
36147         hook up to events on it.
36149 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
36151         * shape.cpp: getbounds gets bad results if stroke (or fill) isn't 
36152         called. We create a new path so the bounds, for an invisible object,
36153         will be empty.
36155 2007-06-18  Chris Toshok  <toshok@ximian.com>
36157         * clock.cpp (Clock::TimeUpdated): return immediately if we're stopped.
36159 2007-06-18  Jackson Harper  <jackson@ximian.com>
36161         * xaml.cpp: Fix smooth quadratic bezier's.
36163 2007-06-18  Chris Toshok  <toshok@ximian.com>
36165         * media.cpp, media.h (Image::render): on our first rendering,
36166         convert to using an xlib surface to speed up future redraws.
36168 2007-06-18  Chris Toshok  <toshok@ximian.com>
36170         * runtime.cpp (UIElement::dorender): add this, and make everything
36171         that calls ->render call ->dorender.
36173         * control.cpp (render): call dorender on the realobject.
36175         * runtime.h: add STARTTIMER/ENDTIMER macros, and add
36176         UIElement::dorender which can be used to wrap render calls with
36177         debug info (in this case timer info.)
36179         * clock.h: add prototype for get_now().
36181         * clock.cpp (get_now): make this public, so we can use it for
36182         timers.
36184 2007-06-18  Jackson Harper  <jackson@ximian.com>
36186         * xaml.cpp: Implement Path Geometry parsing.
36188 2007-06-18  Jeffrey Stedfast  <fejj@novell.com>
36190         * brush.cpp (VideoBrush::SetupBrush): Get a reference to the
36191         MediaElement if we don't already have one.
36192         (VideoBrush::OnPropertyChanged): SourceName does not refer to a
36193         uri, instead SourceName refers to a MediaElement.
36195         * media.cpp: Implemented some more helper "setters", defaulted
36196         some more MediaElement property values to correct values, and
36197         implemented updating of both the CurrentState property and the
36198         PositionProperty.
36200         * mplayer.cpp (Position): Implemented.
36202 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
36204         * media.cpp: Close the path after rendering the image.
36205         * shape.cpp: Avoid the filling operation in calls to getbounds. Also
36206         open and close a path before drawing normal (square) rectangles.
36208 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36210         * runtime.h|cpp: Add DependencyObject::RegisterNullable. Add a few
36211         C-style methods to access Type and DependencyProperty fields.
36212         In Type::IsSubclassOf don't take into account nullability.
36213         * animation.cpp, clock.cpp: Register nullable properties as such.
36215 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36217         * media.h|cpp: Add media_base_new.
36219 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36221         * value.h.in: Make checked_get_subclass handle null values. Include the
36222         Kind::*Null* values in the C# Kind.cs, and change their values to fit
36223         in a signed int.
36224         * value.h: Updated.
36226 2007-06-18  Miguel de Icaza  <miguel@novell.com>
36228         * media.cpp (DownloaderEvent): If the Width/Height have not been
36229         set explicitly, provide them from the images (demo works, but it
36230         takes a while, due to the idle handler being too busy to be
36231         invoked).
36233         * runtime.cpp (Canvas::render):  Cope with rounding from floats to
36234         ints, add 2, fixes the droppings in the surface.
36236         Include some of my debugging helpers (you sprinkle
36237         draw_grid in key places to see whats going on, useful to debug the
36238         bounding boxes and visually inspect if things are right.
36239         
36240         * media.cpp (getbounds): use the framework width/height not the
36241         pixbuf image size, this shrinks the size of the bounding box.
36242         (getxformorigin): Use it here too.
36244 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
36246         * brush.cpp|h: SetupBrush and SetupGradient now returns a boolean that
36247         indicates if their use would be visible or not (e.g. opacity > 0.0).
36248         * shape.cpp: Don't setup brush for getting bounds (do_op == FALSE). 
36249         Don't Fill or Stroke if the brush is invisible (opacity == 0).
36251 2007-06-18  Marek Habersack  <grendello@gmail.com>
36253         * mplayer.cpp (ALIGN): make sure the ALIGN macro is correct on 64
36254         bit platforms too.
36256         * ffvideo.cpp (ALIGN): as above.
36258 2007-06-18  Chris Toshok  <toshok@ximian.com>
36260         * clock.cpp: simplify pausing and stopping a clock that has
36261         children by keeping track of the new state (the one the clock will
36262         take at the end of this tick).  This is necessary because the
36263         parent clock doesn't actually stop until the end of the tick, so
36264         we still need to update child clocks after we've determined the
36265         parent clock should stop.
36267 Mon Jun 18 19:35:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
36269         * runtime.cpp: properly remove items from the doubly-linked list.
36271 2007-06-18  Chris Toshok  <toshok@ximian.com>
36273         * animation.cpp (AnimationStorage::~AnimationStorage): delete the
36274         baseValue here.
36275         (Storyboard::Begin): force a TimeManager tick after we've hooked
36276         up the clock, so that all the animations have proper values before
36277         the next render.  Fixes the "popping" in the surface demo.
36279 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36281         * runtime.cpp: Changed DependencyObject::SetValue to never store 
36282         a null value in the hashtable.
36284 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
36286         * brush.cpp: Refactor the pattern creation to allow caching.
36287         * media.cpp|h: Add caching of cairo_pattern_t to Image.
36289 Mon Jun 18 17:53:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
36291         * runtime.cpp: use motion hints for smoother motion event handling.
36293 2007-06-18  Jeffrey Stedfast  <fejj@gnome.org>
36295         * text.cpp|h: Runs now cache their own PangoFontDescription and
36296         PangoLayouts as an optimzation (seems to be very slight for simple
36297         us-ascii text, but might help enormously for more complex
36298         languages). Also added some FIXME thoughts.
36300 2007-06-18  Everaldo Canuto  <ecanuto@novell.com>
36302         * downloader.cpp: Add missing downloader_notify_finished.
36304 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36306         * downloader.cpp: Only set dummy downloader functions if they
36307         aren't already set.
36309 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36311         * runtime.cpp: Add a few null checks.
36312         * downloader.cpp: Add initial dummy downloader functions to get
36313         meaningful messages if the downloader functions aren't initialized.
36315 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36316         
36317         * typegen.cs: Special case a few things for DependencyObject, 
36318         and make a few messages more informative.
36319         * runtime.h|cpp: Add a value_type field to Type, and a constructor
36320         to specify the value. Add a constructor to DependencyProperty that
36321         can specify default value and type (in the case the default value
36322         doesn't have the same type as the property). Changed
36323         DependencyObject::SetValue to never store a null value in the 
36324         hashtable. In Value destructor check for null pointers in a few 
36325         cases. Update all uses of Value.k to Value.GetKind.
36326         * type.cpp.in: Update to specify value_type information.
36327         * value.h.in: Implement nullable type handling in Value.
36328         * value.cpp, type.cpp, value.h: Updated.
36330 2007-06-18  Jeffrey Stedfast  <fejj@gnome.org>
36332         * text.cpp (get_size_for_brush): Calculate width/height if they
36333         are unset.
36334         (Draw): Don't use the brush if we aren't going to render (this is
36335         needed so that we don't get into a recursive loop since we have to
36336         manually calculate width/height).
36338 2007-06-18  Jeffrey Stedfast  <fejj@gnome.org>
36340         * text.cpp (get_size_for_brush): Implemented (since
36341         cairo_stroke_extents() won't work for us).
36343         * brush.cpp (VideoBrush::SetupBrush): Use get_size_for_brush().
36344         (ImageBrush::SetupBrush): Same.
36346         * runtime.cpp (UIElement::get_size_for_brush): New method to get
36347         width/height needed by Brushes for scaling.
36349 2007-06-17  Jeffrey Stedfast  <fejj@gnome.org>
36351         * runtime.cpp (UIElement::OnPropertyChanged): Chain up to our
36352         parent.
36354 2007-06-17  Atsushi Enomoto  <atsushi@ximian.com>
36356         * text.cpp : added text_block_set_font_source().
36358 2007-06-17  Miguel de Icaza  <miguel@novell.com>
36360         * brush.cpp (brush_init): Create a BRUSH property called
36361         "FrameChange", it is internal and the sole use of it is so that
36362         upper layers that care about brush changes act on it by updating
36363         their elements.
36365         * runtime.cpp (UIElement::OnSubPropertyChanged): Changes on
36366         brushes only trigger an invalidate, there is no need to recompute
36367         bounds. 
36369 2007-06-17  Jeffrey Stedfast  <fejj@gnome.org>
36371         * xaml.cpp: c++ isn't smart enough to invoke the correct .dtor on
36372         delete for a void pointer, it can only delete known class types.
36374 2007-06-17  Jackson Harper  <jackson@ximian.com>
36376         * xaml.cpp: Implement x:Class, we can now load the Surface demo's
36377         XAML file, and it's custom Canvas class (things still don't work
36378         though because the custom canvas uses a downloader.)
36380 2007-06-17  Miguel de Icaza  <miguel@novell.com>
36382         The surface rotate and translate controls should both work, and
36383         the enter/leave events are now correct.
36384         
36385         * runtime.cpp (UIElement::handle_motion, handle_button): Change
36386         the semantics to better match Silverlight.   Now these methods
36387         should check if the mouse is inside their region before calling
36388         the callback.
36390         This is necessary because children of the canvas (and panel) are
36391         within the confines of the bounding box, but the canvas can be
36392         smaller than that.   The canvas is a container whose boundaries
36393         are only used for paiting, children might be outside of these
36394         boundaries.
36396         It is necessary in these cases to pass the events to all the
36397         children within the canvas bounding box and for each child to
36398         determine if the event was within its range. 
36400         (inside_object): replaced the default implementation for
36401         FrameworkElements with a more performing version: instead of
36402         mapping the point and using cairo_in_stroke and in_fill operations
36403         on a rectangle with mapped coordinates, we map the coordinates and
36404         check against the rectangle.
36406         (Canvas::getbounds): if we are the topmost canvas, the boundaries
36407         are those from the Surface, not the ones that include the maximum
36408         extent from the children.   Used to do precise mouse enter/leave. 
36410 2007-06-17  Jeffrey Stedfast  <fejj@gnome.org>
36412         * media.cpp (MediaElement::OnPropertyChanged): Chain to parent
36413         when its not our property.
36415         * brush.cpp: Implemented VideoBrush (tho it's not yet debugged).
36417         * mplayer.cpp (GetSurface): Added.
36419         * text.cpp (text_init): Fixed to use RegisterFull for Froeground
36420         so we can specify Value::BRUSH as the default value type instead
36421         of it using SolidColorBrush as the type.
36423 2007-06-17  Chris Toshok  <toshok@ximian.com>
36425         * xaml.cpp (timespan_from_str): fix parsing of timespans shorter
36426         than 1 second.
36428 2007-06-17  Chris Toshok  <toshok@ximian.com>
36430         * clock.cpp (Clock::TimeUpdated): remove a special case for the
36431         clock's duration being Automatic.  Fixes infinite animation in
36432         Surface port.
36434         * runtime.cpp (crossing_notify_callback): return type is gboolean,
36435         and make sure we always return something.
36436         
36437 2007-06-17  Miguel de Icaza  <miguel@novell.com>
36439         Propagate changes from children of the transform up to our
36440         containers, this is done in several steps:
36442         * runtime.cpp (DependencyObject::Attach, Detach): New methods that
36443         are used to attach an object to a container and detach it.   They
36444         were previously inlined inside SetValue.
36446         (Collection::Add, Remove): Attach and detach objects when they are
36447         added/removed. 
36448         
36449         * transform.cpp (Transform::OnPropertyChanged): if any class
36450         derived from Transform has one of its properties changed, it
36451         has a visual effect, propage this to the attacchees.
36453         (TransformGroup::OnSubPropertyChanged): Escalate here as well,
36454         this will catch the messages coming from anyone in the collection
36455         to its container. 
36457         (TransformCollection::OnSubPropertyChanged): Buble the event up
36458         here as well.
36460         * runtime.cpp (handle_motion): Change the order in which we send
36461         the events to the UIElement, we should start at the topmost
36462         element, and have the toplevel canvas be last.
36464 2007-06-17  Sebastien Pouliot  <sebastien@ximian.com>
36466         * brush.cpp: Refactor ImageBrush::SetupBrush to reuse parts of it
36467         inside Image::render.
36468         * media.cpp: Use code from ImageBrush to render image with it's
36469         properties (e.g. Stretch)
36470         * transform.cpp: Update (commented) debug output.
36472 2007-06-17  Miguel de Icaza  <miguel@novell.com>
36474         * runtime.cpp (GetValueNoDefault): This is necessary so we can
36475         distinguish a value that has been explicitly set from one that has
36476         not.
36477         
36479         * media.cpp (Image): use Framework::Width,Height for the image
36480         dimensions instead of the pixbuf width/height, used in extents and
36481         rotation computation.
36483         * runtime.cpp (Canvas::render): Set the clipping path on the
36484         identity matrix so we do not miss-clip.
36486         Render the canvas from 0, 0, fwidht, fheight, not the expose
36487         area. 
36489 2007-06-16  Miguel de Icaza  <miguel@novell.com>
36491         * runtime.cpp (Cairo::render): The canvas also needs to set the
36492         matrix and clear its background. 
36494         (surface_resize): convenience entry point to resize a surface.
36495         Notice that this will resize the surface, but not the toplevel
36496         canvas. 
36498 2007-06-16  Jackson Harper  <jackson@ximian.com>
36500         * demo.cpp:
36501         * runtime.h:
36502         * control.cpp:
36503         * xaml.cpp: Use a callback for setting custom attributes in
36504         elements.
36506 2007-06-16  Jeffrey Stedfast  <fejj@gnome.org>
36508         * media.cpp: Implemented all the needed virtual methods for
36509         MediaElement to work, using my new MediaPlayer class.
36511         * mplayer.cpp|h: New class for playing media sources.
36513         * ffvideo.cpp: Removed from the build.
36515 2007-06-16  Miguel de Icaza  <miguel@novell.com>
36517         Observation: either it is the surface, or something else is very
36518         slow, but entering the surface is quite slow right now to show the
36519         handles.   Not sure what it could be.
36520         
36521         * runtime.cpp (OnPropertyChanged): We probably should catch the
36522         property changes here, and not in the Sub* variant of this thing,
36523         this will update the canvas properly now.
36525         (dump_hierarchy): useful bit to debug what is going wrong. 
36526         
36527         (Canvas::get_xform_for): Do not apply extra
36528         transformations to the child other than the absolute_xform.
36530         (surface_attach): On attach we need to do a full invalidate, so
36531         the transformations are computed, otherwise it uses the defaults
36532         for the toplevel (zero), this fixes the atom.xaml issue. 
36534         * control.cpp (get_xform_for): This is not proxied to the real
36535         object, this is proxied to the parent.
36536         (control_initialize_from_xaml): Set the parent link here.
36538 2007-06-16  Chris Toshok  <toshok@ximian.com>
36540         * transform.cpp, transform.h, runtime.cpp, runtime.h,
36541           geometry.cpp, geometry.h, animation.cpp: Another pass (the last)
36542           at removing all cached instance collections and using GetValue
36543           for them.
36545 2007-06-16  Chris Toshok  <toshok@ximian.com>
36547         * media.cpp (Image::SetSource): we want events even if we attach a
36548         downloader that's been started.
36550 2007-06-16  Sebastien Pouliot  <sebastien@ximian.com>
36552         * shape.cpp: If StrokeThickness == 0 then don't stroke, otherwise it
36553         will mess with the earlier filling.
36555 2007-06-16  Chris Toshok  <toshok@ximian.com>
36557         * runtime.h, runtime.cpp: remove the instance cached
36558         Panel::children, use accessor to get it when we need it.
36560         * brush.h, brush.cpp: same for the GradientBrush::children
36561         property.
36563 2007-06-16  Chris Toshok  <toshok@ximian.com>
36565         * runtime.h: make these const Rect&'s.
36567 2007-06-16  Sebastien Pouliot  <sebastien@ximian.com> 
36569         * control.cpp|runtime.h: control_initialize_from_xaml needs to return
36570         the Value::Kind of the object that was created so the managed side do
36571         a Lookup on it.
36573 2007-06-16  Sebastien Pouliot  <sebastien@ximian.com>
36575         * control.cpp|runtime.h: control_initialize_from_xaml needs to return
36576         the element as the managed side needs (and defines) it.
36578 2007-06-16  Miguel de Icaza  <miguel@novell.com>
36580         * control.cpp: Implement Control.
36582         * downloader.cpp: Implement a system to send various notifications
36583         as Chris wants his notifications and managed world wants the
36584         notifications as well. 
36586         Should they ahve been separate?   For now I just added a list of
36587         them.   This code is turning uglier every minute.
36589 2007-06-16  Jackson Harper  <jackson@ximian.com>
36591         * xaml.cpp: Kill top_kind, I have no idea how this guy crept back
36592         in.
36593         - Handle expat errors a little better.
36595 2007-06-16  Sebastien Pouliot  <sebastien@ximian.com>
36597         * runtime.h: Implement missing IntersectsWith and Intersection to fix 
36598         build.
36600 2007-06-15  Chris Toshok  <toshok@ximian.com>
36602         * runtime.cpp (Canvas::render): small optimization.  only call the
36603         item's render method if its bounds actually intersects with the
36604         rectangle we're rendering.  Also, clip to the bounding rectangle
36605         of the item here.
36607 2007-06-16  Chris Toshok  <toshok@ximian.com>
36609         * clock.cpp, clock.h: don't use a constant for the timeout in
36610         gtk_timeout_add, and add methods to add/remove the timeout.
36612         (ClockGroup::TimeUpdated): if we're paused or stopped,
36613         don't call child clock TimeUpdated methods at all.  they always
36614         generate CurrentTimeInvalidated even when the time hasn't changed,
36615         which triggers redraws that don't need to happen.
36617 2007-06-16  Jackson Harper  <jackson@ximian.com>
36619         * runtime.cpp|h: We still need C style base_ref/unref.
36620         * demo.cpp:
36621         * xaml.cpp: Takle a callback for the from_file method also.
36622         
36623 2007-06-16  Jeffrey Stedfast  <fejj@gnome.org>
36625         * ffvideo.cpp (Stop): Implemented.
36626         (.ctor): init paused to false (maybe this is why video
36627         didn'talways work?).
36628         (.dtor): Stop() the video and unhook the timeout.
36630         * runtime.cpp: Implement Base::ref and Base::unref instead of
36631         doing it the c way.
36633         * *.cpp: Updated for above change.
36635         * shape.cpp (shape_set_stroke): Don't unref the old stroke.
36636         (shape_set_fill): Same.
36638         * text.cpp (text_init): Use a separate brush for TextBlocks and
36639         Inlines.
36640         (text_block_set_foreground): Don't unref the old brush.
36641         (inline_set_foreground): Same.
36643 2007-06-15  Chris Toshok  <toshok@ximian.com>
36645         * xaml.cpp: little leak fixes here and there.
36647 2007-06-15  Chris Toshok  <toshok@ximian.com>
36649         * demo.cpp (delete_event): destroy the surface and shutdown the
36650         runtime before we quit, just to make finding leaks a little
36651         easier.
36653         * ffvideo.cpp (MediaElementFfmpeg): re-order the
36654         close/g_io_channel_close calls to quiet down glib.
36656         * media.cpp: don't close the loader in DownloaderEvents.  do it in
36657         the dtor for now, to keep from getting that stupid gdk warning.
36658         this is wrong, but at least it's quiet.
36660         * text.cpp: delete the color we initialize the solid color brush
36661         with in text_init.
36663         * animation.cpp, animation.h: remove the cached key_frames
36664         collections.
36666         * runtime.h, runtime.cpp: clean up our cleanup a lot.
36668         in the copy constructor we actually need to make a copy (or
36669         ref in cases where we can) everything we store as a pointer in
36670         our union.  This is to facilitate us destroying it in the
36671         destructor.
36673         in surface_destroy just delete the surface.  move all the destroy
36674         code to the destructor.  Also, in the destructor unhook from the
36675         gtk events, since we get an unrealize event as part of widget
36676         destruction, apparently.
36678         Add DependencyObject::Shutdown which destroys our properties
36679         hashtable.  Create all the hashtables with _new_full so we can
36680         give free functions for keys/values.  actually make use of them,
36681         and clean up the relevant destructors.
36683         Add a destructor for Type, and have the Type ctor take its
36684         arguments.  free the name in the dtor.  Same deal with _new_full
36685         for hashtable creation, and also add Type::Shutdown.
36687         (runtime_shutdown): call TimeManager::Shutdown, Type::Shutdown,
36688         and DependencyObject::Shutdown to free all our stuff.
36689         
36690         * clock.h, clock.cpp: add TimeManager::Shutdown.
36692 2007-06-15  Jeffrey Stedfast  <fejj@gnome.org>
36694         * demo.cpp (gettime): Improved fps reporting.
36696 2007-06-15  Miguel de Icaza  <miguel@novell.com>
36698         * media.cpp (SetSource): Make it so we use the data from a
36699         downloader that might have already finished.
36701 2007-06-15  Chris Toshok  <toshok@ximian.com>
36703         * runtime.cpp: simplify refcounting a little more.  we now have 3
36704         rules:
36706             1. Value() holds a ref to its contained dependency object.
36707                This means we don't have to do anything special for
36708                anything stored in a DP.
36709         
36710             2. Collections hold a ref to their constituents.
36712             3. If you *must* cache an DO pointer in an instance field, you
36713                must ref/unref it properly.  But really, you shouldn't need
36714                to cache it, and I'll likely go through and remove all the
36715                ones I can find.
36717         * media.cpp (media_element_set_markers): remove the ref/unref
36718         stuff.
36720         * animation.cpp: comment out some spew, and follow a safer pattern
36721         in OnPropertyChanged.
36723         * brush.cpp (OnPropertyChanged): safer pattern.
36725         * geometry.cpp (OnPropertyChanged): safer pattern.
36727         * runtime.h: make all these dtors virtual.
36729         * clock.cpp, clock.h: remove the cached child_timelines instance
36730         field to clean up some of the ref counting problems.
36732 2007-06-15  Miguel de Icaza  <miguel@novell.com>
36734         * media.cpp (SetSource): Make it so we use the data from a
36735         downloader that might have already finished.
36737         We now accumulated data as we go.
36738         
36739         * downloader.cpp (downloader_get_response_text): Return
36740         accumulated data.
36742 2007-06-15  Jackson Harper  <jackson@ximian.com>
36744         * demo.cpp:
36745         * runtime.h:
36746         * xaml.cpp: Callback into managed code to create custom element
36747         instances.
36749 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
36751         * media.cpp (media_base_new): Removed, not instantiable.
36752         (Image::getbounds): Need to set the absolute_xform matrix :)
36754 2007-06-15  Miguel de Icaza  <miguel@novell.com>
36756         * media.cpp (Image::getxformorigin): Implement getxformorigin, so
36757         rotations are correct.
36759         (Image::getbounds): Implement getbounds correctly, the coordinates
36760         should be in device coordinates with the transform applied.
36762 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
36764         * demo.cpp (main): Add some Inlines to the TextBlock to test
36765         bounding box calculations.
36767         * text.cpp (OnPropertyChanged): If the property that changed is
36768         the Actual width/height, then don't invalidate anything - simply
36769         return (these are just cache values that only we can set
36770         internally).
36771         (Draw): Keep track of the pixel width/height of the entire
36772         rendered TextBlock+Inlines.
36773         (getbounds): Use the cached width/height of the TextBlock+Inlines
36774         and draw a rectangle instead to improve performance.
36776 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
36778         * media.cpp|h: Add media_base_new.
36780 2007-06-15  Miguel de Icaza  <miguel@novell.com>
36782         * Add destructors to classes that are caching DO collections and
36783         keeping refs to those, thanks to Chris Toshok for the pattern to
36784         use here. 
36786 2007-06-15  Chris Toshok  <toshok@ximian.com>
36788         * media.cpp (Image::render): use the uielement's opacity when
36789         painting.  Fixes the DrPopperSilverlight Bubble.xaml file.
36791 2007-06-15  Miguel de Icaza  <miguel@novell.com>
36793         * runtime.cpp (UIElement): The problem was that:
36795                 The ~UIElement destructor was setting the collection
36796                 properties to NULL in an attempt to unref stuff (these
36797                 are now automatically unrefed).
36799                 This caused the hash table destructor to unref the values
36800                 that were held in the collection.
36802                 At a later point, since "triggers" was cached and
36803                 OnPropertyNotify was called, we attempted to unref the
36804                 value, but that cached value pointed to an object that had
36805                 already been released.
36807         * Everywhere: remove duplicated code that got copy/pasted
36808         everywhere for tracking collections and caching values.  
36810         This should help fixing the crashing problem, but I still need to
36811         review the rules for reference counting and keeping a cache of
36812         variables in instance fields. 
36814 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
36816         * text.cpp (Draw): Now renders inlines.
36818 2007-06-15  Chris Toshok  <toshok@ximian.com>
36820         * Makefile.am (EXTRA_DIST): add alpha-premul-table.inc from
36821         libgdiplus.
36823         * demo.cpp: notify the downloader of the image file size so that
36824         it'll generate a COMPLETED event for the Image.
36826         * media.h, media.cpp: make image downloading non-progressive (we
36827         only create the surface when the downloader notifies the download
36828         is complete), but gain something in return: images with alpha
36829         channels.
36831         * downloader.h, downloader.cpp: add closure to event_notify, and
36832         expose the Event kind.
36834 2007-06-15  Miguel de Icaza  <miguel@novell.com>
36836         * runtime.cpp (UIElement, Canvas): send events to the objects as
36837         well.   My original test on orcas was buggy.
36839 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
36841         * runtime.cpp|h, type.cpp, value.cpp|h: Add Control.
36843 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
36845         * xaml.cpp (dependency_object_add_child): If the col_v collection
36846         value is NULL, create a new collection and add it to the
36847         DependencyObject.
36849         * runtime.cpp: Added a generic collection_new() function which
36850         takes a Value::Kind to specificy which collection-type it should
36851         allocate.
36853 2007-06-15  Miguel de Icaza  <miguel@novell.com>
36855         * downloader.cpp: Implement DownloadProgress property and event
36856         notification. 
36858         * runtime.h (DependencyObject::Is): new method, similar to C# is.
36860         * runtime.cpp (surface_repaint): We clear the background here
36861         again, to allow canvases to have transparent brushes.
36863 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
36865         * runtime.cpp: Panel.Background is NULL by default, which means it's
36866         transparent. This fixes Canvas inside Canvas.
36868 2007-06-15  Jackson Harper  <jackson@ximian.com>
36870         * runtime.cpp|h: Implement some Inlines stuff that the parser will
36871         need.
36872         * xaml.cpp: Add some of the pieces for creating textblock inlines.
36873         - Added some TODO areas for creating late bound collections (maybe
36874         this should just be illegal??).
36876 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
36878         * text.cpp: Have inlines cache their PangoFontDescription and
36879         added logic to render textblock inlines.
36881 2007-06-15  Alan McGovern  <amcgovern@novell.com>
36883         * runtime.cpp|h: Added DependencyProperty.NameProperty
36885 2007-06-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36887         * transform.cpp|h: Add Transform C constructor.
36888         * runtime.cpp: Better warning message.
36890 2007-06-15  Miguel de Icaza  <miguel@novell.com>
36892         * runtime.cpp (surface_attach): Only hook up the events when we
36893         get a toplevel attached.   
36895         * downloader.h: Drop the C++ API with a C proxy API, switch to a
36896         pure C API as we need this from the managed side anyways.
36898         * downloader.h: Move downloader defs into .h file
36900         Add a notification system for reporting the size of a stream, so
36901         we can do progress indication.
36903         * downloader.cpp: Move downloader to its own file.
36905 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
36907         * brush.cpp: Implement ImageBrush.Opacity like MS does it in 1.1 alpha
36908         (i.e. Brush.Opacity isn't considered, only UIElement.Opacity is)
36909         * geometry.cpp: PathFigure::IsFilledProperty is ignored in Mix and
36910         will be removed in 1.0.
36911         * media.cpp|h: Make Image aware of ImageBrush (so we can update too)
36912         * runtime.cpp|h: Move calculation of "total" opacity of UIElement at
36913         the *right* place.
36915 2007-06-15  Jeffrey Stedfast  <fejj@gnome.org>
36917         * text.cpp (text_init): Set more default values.
36919         * runtime.cpp (Panel::OnPropertyChanged): Free children->list (as
36920         we iterate thru them) and set the resulting list to NULL (in case
36921         we don't hold the last ref) before unreffing the children object
36922         (in case we do own the last ref).
36923         (EventTrigger::OnPropertyChanged): Same.
36924         (UIElement::OnPropertyChanged): Same.
36926         * transform.cpp (OnPropertyChanged): Same.
36928         * geometry.cpp (GeometryGroup::OnPropertyChanged): Same.
36929         (PathGeometry::OnPropertyChanged): Same
36930         (PathFigure::OnPropertyChanged): Same.
36932         * clock.cpp (TimelineGroup::OnPropertyChanged): Same.
36934         * animation.cpp
36935         (DoubleAnimationUsingKeyFrames::OnPropertyChanged): Same.
36936         (ColorAnimationUsingKeyFrames::OnPropertyChanged): Same.
36937         (PointAnimationUsingKeyFrames::OnPropertyChanged): Same.
36939 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com> 
36941         * brush.cpp: Complete ImageBrush.Transform
36942         * shape.cpp: Please at least one side of the lines.
36944 2007-06-15  Jeffrey Stedfast  <fejj@gnome.org>
36946         * text.cpp (text_init): No longer should ref the foreground brush
36947         or we leak refs.
36949         * xaml.cpp: Added support for Runs/LineBreaks
36951         * text.cpp: Implemented Run/LineBreak classes.
36952         (inline_new): Removed (can't instantiate this class).
36954 2007-06-15  Miguel de Icaza  <miguel@novell.com>
36956         * runtime.cpp (~DependencyObject, free_value): unref all the
36957         values that are stored in the object on destruction
36959         * runtime.cpp: Add support for enter/leave events.
36961 2007-06-14  Jeffrey Stedfast  <fejj@gnome.org>
36963         * text.cpp (getbounds): Set the actual width/height values to keep
36964         them up-to-date.
36966 2007-06-14  Jeffrey Stedfast  <fejj@gnome.org>
36968         * text.cpp (getbounds): Revert prior change.
36969         (getxformorigin): Same.
36971         * shape.cpp (getbounds): Revert prior change.
36973         * ffvideo.cpp (getbounds): Revert prior change.
36975         * runtime.cpp (update_xform): Revert my last change.
36976         (item_update_bounds): Same.
36978 2007-06-14  Jackson Harper  <jackson@ximian.com>
36980         * xaml.cpp: Set content properties when adding child elements.  We
36981         now no longer need to special case any elements except panel.
36983 2007-06-14  Jackson Harper  <jackson@ximian.com>
36985         * xaml.cpp: I must have been very tired when I wrote that.
36987 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com>
36989         * media.h: Expose Image's Height and Width (required for ImageBrush)
36990         * brush.cpp: Implement all Strech and Alignment[X|Y] options. Nothing
36991         (yet) force an update of the drawing once the image is available.
36993 2007-06-14  Jeffrey Stedfast  <fejj@gnome.org>
36995         * demo.cpp: Updated s/textblock/text_block/g
36997         * xaml.cpp: Don't register TextBlock twice.
36999         * ffvideo.cpp (getbounds): Can now depend on surface being set.
37001         * text.cpp: s/textblock/text_block/g
37002         (getbounds): Can now depend on surface being set.
37003         (getxformorigin): Same.
37005         * shape.cpp (getbounds): Can now depend on surface being set.
37007         * runtime.cpp (item_update_bounds): Don't update bounds if the
37008         surface hasn't been set yet.
37009         (update_xform): Same.
37011 2007-06-14  Jackson Harper  <jackson@ximian.com>
37013         * xaml.cpp: Add keyspline parsing.
37015 2007-06-14  Jackson Harper  <jackson@ximian.com>
37017         * value.h: This guy doesn't exist anymore, he is a
37018         DependencyObject now.
37020 2007-06-14  Jackson Harper  <jackson@ximian.com>
37022         * animation.cpp:
37023         * runtime.cpp|h: We also need to update the DependencyObject when
37024         resolving PropertyPaths.
37026 2007-06-14  Jackson Harper  <jackson@ximian.com>
37028         * runtime.cpp|h: New function that follows PropertyPath's to
37029         DependencyProperties.
37030         * animation.cpp: Use new function to resolve animation target
37031         properties.
37033 2007-06-14  Jackson Harper  <jackson@ximian.com>
37035         * runtime.cpp (GetDependencyProperty): If there is no table for a
37036         property, we still need to lookup the property in the parent
37037         chain (assumming inherit is true).
37038         - Fix some typos with types_by_name
37040 2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
37042         * demo.cpp (main): Rotate our demo text inside a filled rectangle
37043         around the center of the text.
37045         * text.cpp (TextBlock.ctor): Initialise a cached
37046         PangoFontDescription that we will update when properties change.
37047         (TextBlock.dtor): Free our font/layout.
37048         (getbounds): Implemented correctly.
37049         (getxformorigin): Implemented.
37050         (Draw): Simplified since we don't need to create our layout/font
37051         anymore (just use the cached ones).
37052         (OnPropertyChanged): Implemented.
37054 2007-06-14  Miguel de Icaza  <miguel@novell.com>
37056         * brush.cpp (Brush, SolidColorBrush, LinearGradientBrush,
37057         RadialGradientBrush): Notify owners when changes happen in the
37058         Brush.
37060         This makes the demo test-color-animation.xaml work without fps.
37062         * runtime.cpp: Make Canvas use the Background property to render
37063         the background.
37065 2007-06-14  Chris Toshok  <toshok@ximian.com>
37067         * demo.cpp (main): create a namescope to attach to the canvas, and
37068         also make sure to add the storyboard to the tree someplace so that
37069         it can find the names of things.
37071         * xaml.cpp: create a namescope to attach to the top_element.
37073         * runtime.cpp (FindName): rework this to walk up the tree.  Drop
37074         the global namescope.
37076 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com>
37078         * brush.cpp|h: Add ImageBrush functions, which delegates most of its
37079         work to Image (downloader).
37080         * media.cpp|h: Expose the cairo_surface_t that contains the image.
37082 2007-06-14  Chris Toshok  <toshok@ximian.com>
37084         * demo.cpp (FileDownloadState::AsyncFillBuffer): increase buffer
37085         size from 1024 to 8192 (and make it an instance instead of stack
37086         variable).  Also, add a return statement that will cause the idle
37087         handler to no longer be called when we get a write of 0 length.
37088         This might be wrong in the long term.
37090         * media.cpp, media.h: add cleanup methods for the Image class, and
37091         add a dtor as well.
37093 2007-06-14  Chris Toshok  <toshok@ximian.com>
37095         * media.cpp (LoaderSizePrepared): fill in the initial state of the
37096         image to gray with black border.
37097         (LoaderAreaUpdated): invalidate the item.
37099         * media.h: fix the progressive image loading.
37101 2007-06-14  Chris Toshok  <toshok@ximian.com>
37103         * demo.cpp: use the MediaBase::SourceProperty to set the image's
37104         source.
37106         * media.h, media.cpp: add Image::OnPropertyChanged so we can watch
37107         for changes in MediaBase::SourceProperty and kick off the download
37108         and stop the currently running one.
37110 2007-06-14  Chris Toshok  <toshok@ximian.com>
37112         * demo.cpp: track downloader api change.
37114         * media.cpp: track downloader api change.
37116         * runtime.h, runtime.cpp: the downloader's write function needs an
37117         offset as well as a length to work with mozilla's streaming api.
37119 2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
37121         * demo.cpp (main): Draw some text
37123         * text.cpp (text_init): Set a default solid black brush for
37124         foreground properties on Inline/TextBlock objects.
37125         (Draw): Setup the Brush stuff before drawing.
37127 2007-06-14  Jackson Harper  <jackson@ximian.com>
37129         * xaml.cpp: Add support for loading all implemented (and semi
37130         implemented) dependency object types.
37131         * text.cpp|h: C style constructors.
37133 2007-06-14  Chris Toshok  <toshok@ximian.com>
37135         * animation.cpp (KeySpline): default should be 1,1 for
37136         controlPoint2.
37138 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com>
37140         * xaml.cpp: Add support for Matrix (non-DO) type.
37142 2007-06-14  Chris Toshok  <toshok@ximian.com>
37144         * runtime.cpp (downloader_write): add C-style downloader_write
37145         method so we can call into it from the binding.
37147 2007-06-14  Chris Toshok  <toshok@ximian.com>
37149         * value.cpp, animation.h, type.cpp, value.h, runtime.cpp,
37150         type.cpp.in, value.h.in: make KeySpline subclass from
37151         DependencyObject like it should, and fix resulting fallout.
37153 2007-06-14  Miguel de Icaza  <miguel@novell.com>
37155         * runtime.cpp (Canvas): Implement OnChildPropertyChanged so we can
37156         catch cases of Top/Left being set on a child, this makes changes
37157         to the object after it has been created (adding/removing the
37158         property) work. 
37160 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com> 
37162         * brush.cpp|h: Much closer results for RadialGradients (but I still
37163         have a test case that fails). Also added Transform support for 
37164         LinearGradient.
37166 2007-06-14  Jackson Harper  <jackson@ximian.com>
37168         * animation.h: C style constructors.
37169         * clock.cpp|h: C style constructors.
37170         * runtime.cpp|h: Follow proper naming convention for
37171         TimelineMarker C style constructors.
37173 2007-06-14  Chris Toshok  <toshok@ximian.com>
37175         * runtime.h, runtime.cpp: remove the hack UnmanagedDownloader from
37176         here, and made Downloader pluggable with a set of functions.
37178         * demo.cpp: use the pluggable nature of Downloader to put
37179         UnmanagedDownloader here (and call it FileDownloadState).
37181         * value.cpp, value.h, type.cpp: resync.
37183 2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
37185         * text.cpp: Fixed Brush accessors for the NULL case.
37187         * media.cpp: Fixed accessors that could return NULL
37188         (media_init): init MediaBase and MediaElement items.
37190 2007-06-14  Jackson Harper  <jackson@ximian.com>
37192         * animation.cpp: C style constructor.
37193         * media.cpp|h: Add some C style constructors.
37194         * xaml.cpp:  Add parsing hooks for new components.
37196 2007-06-14  Chris Toshok  <toshok@ximian.com>
37198         * demo.cpp: make one of the videos an image instead.
37200 2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
37202         * xaml.cpp: Fixed the font_widths and font_stretches maps to
37203         reflect the numeric enum values defined in text.h (and msdn docs).
37205         * text.h: Sync enum values to documented numeric values.
37207 2007-06-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37209         * transform.cpp|h, media.cpp|h, brush.cpp|h, runtime.cpp|h:
37210         Make all classes that inherit from DO constructable, and add
37211         missing C-style constructors.
37213 2007-06-14  Jackson Harper  <jackson@ximian.com>
37215         * runtime.cpp|h: Hookup the resource collection.
37216         * xaml.cpp: Parse resource collections.
37218 2007-06-14  Chris Toshok  <toshok@ximian.com>
37220         * type.cpp, value.h, type.h: resync these.
37222         * media.h, media.cpp: add naive Image class.
37224         * runtime.h, runtime.cpp: add some Downloader methods, and
37225         subclass Downloader with a *very* hackish UnmanagedDownloader
37226         class that just loads from files.  Also add a "write_func"
37227         callback that the downloader can call when it has new data to hand
37228         off.
37230 2007-06-14  Chris Toshok  <toshok@ximian.com>
37232         * animation.cpp: import an arc length calculator I found on the
37233         net (at http://steve.hollasch.net/cgindex/curves/cbezarclen.html)
37234         and use that for KeySpline::GetSplineProgress.  The results don't
37235         match MS's exactly, though.
37237 2007-06-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37239         * geometry.cpp, geometry.h: Add collection constructors.
37240         * brush.cpp, brush.h: Add ImageBrush and VideoBrush DPs.
37241         * runtime.cpp|runtime.h: Implement collection add/remove methods. 
37242         Add Downloader DPs.
37243         * media.cpp: Add MediaAttribute DP.     
37245 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com> 
37247         * brush.cpp|h: Refactor Opacity to make it reusable to other brushes
37248         (as it cannot be globally applied). Added DP, and related functions,
37249         to TileBrush.
37251 2007-06-14  Miguel de Icaza  <miguel@novell.com>
37253         * Improve the destruction scenario to release the resources that
37254         we have acquired, we are now up to the point of stopping clocks
37255         properly, but more work is going to be needed in the long term to
37256         properly track refs and objects.
37258         Ensured that all virtual GetObjectType are flagged with virtual.
37260         * Makefile.am: Put runtime.cpp at the top, to improve
37261         compile/test cycle.
37263 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com> 
37265         * brush.cpp|h: One step closer for RadialGradientBrush
37266         * geometry.cpp: Fix ArcSegment sweep direction. All chess pieces now 
37267         render (shape-wise) correctly.
37268         * shape.cpp: Draw before setting the brush. This allows the brush
37269         setting code to ask for the extents to stroke/fill.
37271 2007-06-13  Chris Toshok  <toshok@ximian.com>
37273         * animation.cpp (KeySpline::GetSplineProgress): reimplement this
37274         to return a percentage of the arc length of the bezier that is
37275         traversed when t = linearProgress, taking the algorithm from
37276         http://steve.hollasch.net/cgindex/curves/cbezarclen.html
37278 2007-06-13  Chris Toshok  <toshok@ximian.com>
37280         * brush.h, geometry.h, animation.h, clock.h: add GetElementType
37281         collection overloads.
37283         * type.cpp: resync to track UIElement : Visual relationship.
37285         * runtime.h: add Collection::GetElementType, and add overloads
37286         (some commented out) for the collections listed.  Also, fix
37287         UIElement's superclass to be Visual.
37289         * runtime.cpp (Add): make sure we're only adding subclasses of our
37290         element type.
37292 2007-06-13  Chris Toshok  <toshok@ximian.com>
37294         * clock.cpp (AddChild): just pass the child, unwrapped.
37296         * runtime.h: remove the Value* overloads for Collection::Add and
37297         Collection::Remove.
37299         * xaml.cpp (dependency_object_add_child): just pass the dependency
37300         object, unwrapped.
37302 2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
37304         * text.cpp: Implemented a ton of stuff...
37305         (text_init): Added.
37307         * runtime.cpp (runtime_init): Call text_init().
37309 2007-06-13  Miguel de Icaza  <miguel@novell.com>
37311         * runtime.h (Collection): Since it seems that everything we have
37312         so far are collections of dependency objects, the code is now
37313         simplified and will also take refs and remove refs on destruction.
37315         The only reason to implement the Add/Remove methods is if you must
37316         do something as a hook during add/remove
37317         
37318         * runtime.cpp (SetValue): Enable NULLs to be set on Dependency
37319         Objects. 
37320         
37321         (OnPropertyChanged): Allow the value to be NULL, cope with that,
37322         we use this to clear all of our objects.
37324 2007-06-13  Chris Toshok  <toshok@ximian.com>
37326         * xaml.cpp (xaml_create_from_str): make the from_str a little
37327         closer to from_file.  fixes hooking up names when loading from
37328         strings.
37330 2007-06-13  Chris Toshok  <toshok@ximian.com>
37332         * runtime.cpp (runtime_init): start the time manager here.
37334         * demo.cpp (main): instead of here.
37336 2007-06-13  Jackson Harper  <jackson@ximian.com>
37338         * xaml.cpp: Gracefull handling of error conditions. Being
37339         intentionally non strict about some things while we are
37340         developing (like unknown elements, and attributes, and missing
37341         namespaces).
37343 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
37345         * brush.cpp: Better, but still imperfect, RadialGradientBrush
37347 2007-06-13  Jackson Harper  <jackson@ximian.com>
37349         * runtime.h: Add some of the error event handler args, so i can
37350         use these in the parser.
37352 2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
37354         * brush.cpp (OnPropertyChanged): Free list nodes as we iterate
37355         (soptimsation, woot).
37357         * text.cpp: Implemented c wrappers for Inline
37359 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
37361         * brush.cpp: Implemented LinearGradientBrush::SetupBrush
37362         * xaml.cpp: Handle GradientStops correctly (at GradientBrush) and add
37363         support for LinearGradientBrush.
37365 2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
37367         * text.cpp: Stubbed out TextBlock and Glyphs
37369 2007-06-13  Jackson Harper  <jackson@ximian.com>
37371         * xaml.cpp: GradientBrush is a Brush.
37373 2007-06-13  Miguel de Icaza  <miguel@novell.com>
37375         * runtime.cpp (dependency_object_find_name): Add new wrapper 
37377 2007-06-13  Chris Toshok  <toshok@ximian.com>
37379         * animation.cpp, animation.h: add public storyboard methods for
37380         begin/pause/resume/seek/stop.  also start in on the spline
37381         keyframe/KeySpline stuff.
37383         * type.cpp: resync.
37385         * value.cpp: resync.
37387         * value.h: resync.
37389         * value.h.in: add keyspline stuff.
37391         * type.cpp.in: add keyspline stuff.
37393 2007-06-13  Chris Toshok  <toshok@ximian.com>
37395         * demo.cpp: a few changes - none of the animations run forever
37396         now.  also, add some gtk events (button press/release/motion).  we
37397         pause animations on press, resume them on release.
37399         * clock.cpp: keep track of the offset caused by pausing/resuming
37400         the clock from our parent's time.
37402         * animation.cpp: split out all the logic for finding the current
37403         (and previous) keyframes into
37404         KeyFrameCollection::GetKeyFrameForTime.  Also, make the key frame
37405         collection maintain a separate sorted list of keyframes.
37407 2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
37409         * media.cpp (media_base_get_source): Implemented; use char*
37410         instead of Uri - we'll make the binding convert between the types.
37411         (media_base_set_source): Same.
37413 2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37415         * runtime.cpp: Xlib and we are both defining Visual,
37416         so implement a workaround.
37418 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
37420         * brush.cpp|h: Added code for LinearGradientBrush and partial setup
37421         for all gradient-related brushes (needs testing). Add all color 
37422         definitions supported by XAML.
37423         * mkcolor.cs: Tool to generate colors from System.Drawing (as they
37424         are identical).
37426 2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37427         
37428         * runtime.h: Add Visual.
37429         * value.cpp, value.h, type.cpp: Updated.
37431 2007-06-13  Jeffrey Stedfast  <fejj@gnome.org>
37433         * ffvideo.cpp: Back to using ALSA, but this time I got it right ;)
37435 2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37437         * media.h: Added MediaAttribute.
37438         * runtime.h: Added Downloader.
37439         * value.cpp, value.h, type.cpp: Updated.
37440         * typegen.cs: Copy Kind.cs to the correct directory.
37442 2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37444         * brush.cpp, brush.h, geometry.cpp: Fix property registration
37445         typos.
37447 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
37449         * brush.cpp|h: Fix Brush::RelativeTransformProperty and 
37450         Brush::RelativeTransformProperty types.
37452 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com>
37454         * brush.cpp|h: Complete DependencyProperties for GradientBrush and
37455         add GradientStopCollection.
37456         * runtime.cpp|h: Remove code for GradientStopCollection.
37457         * xaml.cpp: Register new brush classes.
37459 2007-06-13  Miguel de Icaza  <miguel@novell.com>
37461         * runtime.cpp: Various new events are now sent.
37463 2007-06-13  Jackson Harper  <jackson@ximian.com>
37465         * xaml.cpp: When using the xaml_create_from_str we automatically
37466         add the default and x: namespaces.
37468 2007-06-12  Jeffrey Stedfast  <fejj@gnome.org>
37470         * ffvideo.cpp: Fixed to subclass the new MediaElement class.
37472         * video.cpp: Removed.
37474 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
37476         * brush.cpp|h: Added DependencyProperty for GradientBrush and 
37477         GradiantStop. Added new brush-related enums. Add [g|s]etter functions
37478         for RadialGradient and BrushGradiantStop.
37480 2007-06-12  Jackson Harper  <jackson@ximian.com>
37482         * xaml.cpp: Repsect namespaces.
37483         - Clean up code a little
37485 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
37487         * brush.h: New. Brush related stuff.
37488         * brush.cpp: DependencyProperty for RadialGradientBrush
37489         * runtime.h: [Re]move brush stuff.
37490         * shape.h: Add include for brush.h
37491         * type.cpp, value.h, value.h: Add RadialGradientBrush type.
37492         * Makefile.am: Add brush.h to the build.
37494 2007-06-12  Jeffrey Stedfast  <fejj@gnome.org>
37496         * media.cpp|h: Added to the build
37498 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
37500         * transform.cpp|h: Complete MatrixTransform.
37501         * value.h, value.h.in, runtime.cpp, type.cpp, type.cpp.in: Introduce
37502         Matrix type.
37504 2007-06-12  Miguel de Icaza  <miguel@novell.com>
37506         * runtime.h (UIElement::inside_object): new routine that should
37507         return true if the given absolute x, y is inside the given object
37508         or not. 
37510         (UIElement::handle_motion): new routine that is called when a
37511         motion event happens, it should determine if it can handle the
37512         given event at x, y.
37514         (Surface): new callbacks, these are callbacks that will pass the
37515         notification of the event to managed code. 
37517         * runtime.cpp (FrameworkElement): provide a default implementation
37518         for inside object that works for "squares" (things with widths and
37519         heights) 
37521 2007-06-12  Jeffrey Stedfast  <fejj@novell.com>
37523         * ffvideo.cpp: Instead of aborting when SDL_OpenAudio() fails,
37524         simply disable audio for that video. Temporary hack.
37526 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
37528         * transform.cpp: Fix SkewTransform with translations (Center[X|Y])
37530 2007-06-12  Jackson Harper  <jackson@ximian.com>
37532         * xaml.cpp: Implement enums.  This implementation is very naive,
37533         but works with the current Silverlight object model.  Basically,
37534         we just index property names to enum maps.  So a property name
37535         maps to a single enum type regardless of the type the enum is
37536         declared in.  This works fine with the current silverlight object
37537         model, but in the future might need to be changed, if we get
37538         conflicting property names.
37540 2007-06-12  Jeffrey Stedfast  <fejj@novell.com>
37542         * ffvideo.cpp: Fixed sound playback to not get that nasty
37543         reverb-like effect. Also switched to using SDL for audio.
37545 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
37547         * transform.cpp|h: Implement SkewTransform.
37548         * type.cpp: Register new type SkewTransform.
37549         * value.cpp|h: Add SkewTransform.
37550         * xaml.cpp: Register DO for SkewTransform.
37552 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37554         * runtime.cpp, runtime.h: Make DependencyObject::ParentProperty
37555         a normal field.
37557 2007-06-12  Jackson Harper  <jackson@ximian.com>
37559         * xaml.cpp: Don't try to add properties to the panel.
37561 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com> 
37563         * geometry.cpp: Implemented ArcSegment::Draw using librsvg code
37564         * rsvg.cpp|h: New. Code from LGPL librsvg to implement arc_to
37565         * Makefile.am: Add rsvg.cpp|h to the build.
37567 2007-06-12  Jackson Harper  <jackson@ximian.com>
37569         * xaml.cpp: Add parser for KeyTime structures.
37571 2007-06-12  Chris Toshok  <toshok@ximian.com>
37573         * animation.cpp
37574         (ColorAnimationUsingKeyFrames::GetNaturalDurationCore): implement.
37575         (PointAnimationUsingKeyFrames::GetNaturalDurationCore): implement.
37576         (animation_init): make sure to initialize
37577         ColorKeyFrame::ValueProperty.
37579         * clock.cpp (Timeline::GetNaturalDuration): comment out some spew.
37581 2007-06-12  Jackson Harper  <jackson@ximian.com>
37583         * animation.cpp|h: C style constructor for KeyFrameCollection.
37584         * xaml.cpp: Implement the KeyFrame types
37585         - Make the base types ghosts, despite what the docs say, they
37586         can't be used.
37588 2007-06-12  Miguel de Icaza  <miguel@novell.com>
37590         * runtime.cpp (NotifyParentOfPropertyChange): Stop propagating
37591         when we have reached someone that handles that property in the way
37592         up. 
37594 2007-06-12  Jackson Harper  <jackson@ximian.com>
37596         * xaml.cpp: Register the TriggerCollection so that
37597         TriggerCollections can be created using the explicit syntax.
37598         
37599 2007-06-12  Jackson Harper  <jackson@ximian.com>
37601         * xaml.cpp: No longer need to special case EventTriggers. Remove
37602         some dead code (yippie!)
37603         * runtime.cpp: Unregister the target when removing from the
37604         collection.
37606 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37608         * runtime.h: Implement Inlines.
37609         * value.cpp, value.h, type.cpp: Updated.
37611 2007-06-12  Jackson Harper  <jackson@ximian.com>
37613         * runtime.cpp|h: Hook up the UIElement::Triggers and
37614         EventTrigger::Actions/RoutedEvent properly.
37615         * xaml.cpp: Remove some of the special casing for event triggers
37616         now that they are proper DependencyProperties.
37618 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37620         * typegen.cs: Now checks if classes that inherits DependencyObject
37621         implement GetObjectType.
37622         * animation.h, runtime.h, text.h, geometry.h, shape.h: Implement
37623         missing GetObjectTypes and fix a few that were returning the wrong
37624         type.
37626 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37628         * runtime.cpp: 
37629         - (DependencyObject::SetValue): Allow assigning an object of a 
37630           more derived type than the defined property type. Change the
37631           attached_list code to handle NULL dependency_objects.
37632         - Delete types_init, it's generated now.
37633         - Delete Value:As[DependencyObjects], its generated now.
37634         * runtime.h: Added definitions for a few missing collection classes.
37635         * types.cpp[.in], value.cpp[.in], value.h.in: Added.
37636         * value.h: Update.
37637         * Makefile.am: Add types.cpp and value.cpp
37638         * typegen.cs, typegen.cs: Added, generates types.cpp, value.cpp, 
37639         value.h and Kind.cs from the headers.
37641 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37643         * runtime.cpp, runtime.h: (DO/DP) Make all char*'s const.
37645 2007-06-12  Chris Toshok  <toshok@ximian.com>
37647         * clock.h, clock.cpp, runtime.cpp, value.h: use a
37648         TimelineCollection to store child collections in TimelineGroup.
37650 2007-06-12  Chris Toshok  <toshok@ximian.com>
37652         * animation.h, animation.cpp (animation_init): remove the
37653         clock.cpp property registration.
37654         (DoubleAnimationUsingKeyFrames::GetNaturalDurationCore): initial
37655         attempt, calculate our timespan from our key frames.
37656         (Animation::GetNaturalDurationCore): return a 1 second duration,
37657         as doc'ed on msdn.
37658         (UpdatePropertyValue): plug leak.
37660         * runtime.cpp (runtime_init): call clock_init.
37662         * clock.h, clock.cpp: largish pass at implementing support for
37663         Duration::Automatic in ClockGroups (where they query their child
37664         timelines to see how long they should make themselves).  Also, add
37665         clock_init.
37667         * xaml.cpp (timespan_from_str): correct math.
37669 2007-06-12  Jackson Harper  <jackson@ximian.com>
37671         * xaml.cpp: Add a couple more of the animation elements.
37673 2007-06-12  Jackson Harper  <jackson@ximian.com>
37675         * runtime.cpp|h: There is no public Triggers property.
37677 2007-06-12  Miguel de Icaza  <miguel@novell.com>
37679         * runtime.cpp (DependencyObject::RegisterFull): Allow for
37680         properties to be flagged as attached, and only propagate the child
37681         notification to those those that care about it.
37683 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37685         * Implement a mechanism to keep track of parents and notify
37686         parents of changes in attached properties.
37688 2007-06-11  Jackson Harper  <jackson@ximian.com>
37690         * xaml.cpp: Add content properties, and handle collections that
37691         are content properties, by implicitly adding items to the
37692         collections.
37694 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com>
37696         * runtime.cpp: Remove matrix initialization (to avoid double-inits in 
37697         most cases).
37698         * transform.cpp: Add matrix initialization in TransformGroup::
37699         GetTransform. Makes the API safer :)
37701 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com> 
37703         * geometry.cpp: Implemented [Ploy]QuadraticBezierSegment::Draw.
37705 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com>
37707         * geometry.cpp|h: Add drawing of [Poly]LinesSegment and 
37708         [Poly]BezierSegment. More than half of Sam Ruby's samples can work
37709         with this.
37711 2007-06-11  Jeffrey Stedfast  <fejj@novell.com>
37713         * ffvideo.cpp: Attempt to get video to be in sync with audio by
37714         using the audio pts as the target_pts.
37716 2007-06-11  Jackson Harper  <jackson@ximian.com>
37718         * runtime.cpp: Register the collection types as derived from
37719         COLLECTION.
37721 2007-06-11  Chris Toshok  <toshok@ximian.com>
37723         * xaml.cpp (timespan_from_str): fix reading off the end of digits
37724         array.
37726 2007-06-11  Jackson Harper  <jackson@ximian.com>
37728         * xaml.cpp: Implement some more collection loading. A lot of
37729         duplicate code here, so I should probably refactor things a bit,
37730         but will wait until I've seen how more collections are laid out.
37732 2007-06-11  Chris Toshok  <toshok@ximian.com>
37734         * animation.h, animation.cpp: use KeyFrameCollection's for the
37735         *AnimationUsingKeyFrames key frame stuff, instead of GLists.
37737         * value.h, runtime.cpp: add Value::AsKeyFrameCollection.
37739 2007-06-11  Jackson Harper  <jackson@ximian.com>
37741         * xaml.cpp: Make the parents of collections the Collection ghost
37742         element.  This is a first step in cleaning up collection creation
37743         a little.
37745 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com> 
37747         * transform.cpp: remove dead code.
37748         * xaml.cpp: Partial collection support for geometry.
37750 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com>
37752         * transform.cpp: Multiply each matrix in a TransformGroup (fix the 
37753         open-clipart sample, at least the correct parts of the sample).
37754         * runtime.cpp: Always initialize the matrix in item_get_render_affine
37755         otherwise we'll end up with bad random results.
37757 2007-06-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37759         * runtime.h, runtime.cpp: (DependencyObject) Add SetValue/GetValue 
37760         overloads that takes strings as well as DP, GetDependencyProperty where 
37761         it's possible to specify whether the parent type is searched for the
37762         property or not, and a HasProperty method
37764 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com>
37766         * geometry.cpp|h: Fix function names wrt type.
37767         * shape.cpp: Detect RenderTransform and RenderTransformOrigin changes
37768         and call update_xform. This fix the "atom" sample :)
37769         * transform.cpp: Fix Rotate and Scale around a center point.
37771 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com> 
37773         * geometry.cpp: Add more precision to types.
37774         * runtime.cpp: Apply Canvas' RenderTransform and RenderTransformOrigin
37776 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com> 
37778         * brush.cpp: Implement Opacity for SolidColorBrush.
37779         * runtime.cpp|h: Add an UIElement parameter to SetupBrush so we can 
37780         access it's properties (e.g. Opacity in this case). Add uielement_
37781         [g|s]et_opacity functions.
37782         * shape.cpp: Supply the UIElement when setting up brushes.
37784 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com>
37786         * shape.cpp: Fix rounded rectangle when radius_[x|y] are larger than 
37787         half the width|height.
37789 2007-06-10  Miguel de Icaza  <miguel@novell.com>
37791         * shape.cpp (OnPropertyChanged): Implement this property for most
37792         shapes: if the property is set, we need to invalidate and
37793         repaint. 
37795         * runtime.h (FullInvalidate): A method to perform a queue to
37796         redraw the underlying region, update the bounds and queue an
37797         update for the new region.
37799         * runtime.h (Base): make destructor virtual so that base_unref can
37800         call delete (Base *) p.   Exposed by the managed code when the
37801         first base_unref ran for the first time :-)
37803         I sense a leak!
37805         * runtime.cpp (surface_attach): invalidate the areas before and
37806         after, compute the bounds using item_update_bounds, not the
37807         getbounds method directly.
37809 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com>
37811         * xaml.cpp: Add PathFigure[Collection]/Segments support.
37813 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com> 
37815         * brush.cpp: Fix Green definition, like GDI+ MS use a dark (0x80)
37816         green unlike other basic colors (red/blue at 0xFF).
37817         * xaml.cpp: Don't assert on an empty collection.
37819 2007-06-10  Miguel de Icaza  <miguel@novell.com>
37821         * runtime.cpp, runtime.h (BasicArray): New base struct for
37822         PointArray and double array, puts the count field at the beginning
37823         and avoids an extra block to be allocated (count and values are
37824         now on a single contiguous block).
37826         Introduce a refcount for the arrays, so that we can release those
37827         properly.  Due to the nature of how we copied values before we
37828         had to leak the values, when the leak was plugged, we crashed.  
37830         The refcount is there just because it was easy, we could clone if
37831         we wanted, but also I would like to keep the refcount there to
37832         ensure that the array of doubles is aligned on an 8 byte
37833         boundary. 
37835         (double_array_new, point_array_new): New methods to create the
37836         structures. 
37838         (Value): Now free the arrays.
37839         
37841 2007-06-09  Sebastien Pouliot  <sebastien@ximian.com>
37843         * geometry.cpp|h: Add/complete PathFigureCollection and 
37844         PathSegmentCollection. Doesn't parse from xaml.
37845         * runtime.cpp, value.h: Add support for new classes.
37847 2007-06-09  Sebastien Pouliot  <sebastien@ximian.com>
37849         * geometry.cpp|h: Complete GeometryGroup with GeometryCollection.
37850         But color rending is not yet correct in demo files.
37851         * runtime.cpp, value.h: Add support for GeometryCollection
37852         * xaml.cpp: Add support for GeometryGroup
37854 2007-06-09  Chris Toshok  <toshok@ximian.com>
37856         * animation.h, animation.cpp, value.h, runtime.cpp: add
37857         ColorKeyFrame and it's linear/discrete subclasses, as well as
37858         ColorAnimationUsingKeyFrames.
37860 2007-06-09  Chris Toshok  <toshok@ximian.com>
37862         * animation.h, animation.cpp, value.h, runtime.cpp: add the
37863         Discrete keyframes for point and double.
37865 2007-06-09  Chris Toshok  <toshok@ximian.com>
37867         * genkindcs.sh: new file, a script to generate
37868         olive/class/agclr/Mono/Kind.cs.
37870         * value.h: add marker comments so that genkindcs.sh works.  Also,
37871         remove the explicit value assignments to enum elements <
37872         DEPENDENCY_OBJECT.  there's no need for it.
37874 2007-06-09  Chris Toshok  <toshok@ximian.com>
37876         * demo.cpp (main): add in another animation, this one using
37877         keyframes, that moves a square around in a square, while animating
37878         its background color the same way as the other rectangles.
37880         * value.h, runtime.cpp: add in the keyframe types.
37882         * runtime.cpp (DependencyObject::DependenceyObject): fix a
37883         valgrind error - we shouldn't be "free"ing Values, since they're
37884         "new"ed.  Add free_value and use that for the hash table value
37885         dtor, and delete them correctly.
37887         * animation.h, animation.cpp: add a lot of the keyframe animation
37888         stuff.  DoubleAnimationUsingKeyFrames + LinearDoubleKeyFrame is
37889         the only tested configuration, though.
37891         * clock.cpp (everywhere): guint64->TimeSpan fixing.
37892         (TimeUpdated): turns out that not only does the progress go from
37893         1.0 to 0.0 when reversed, but current_time actually goes backward
37894         as well.  this has the nice effect of actually simplifying this
37895         method substantially, since we can always compute progress as
37896         time/duration.
37898         * clock.h: typedef TimeSpan to gint64 (switching from guint64
37899         everywhere), and update the api to use this.
37901 2007-06-09  Miguel de Icaza  <miguel@novell.com>
37903         * runtime.h (value_color_from_argb): Temporary hack until we
37904         figure out how to marshal Colors properly, we are using the uint32
37905         constructor, we should figure out if this is what we want, or if
37906         we should go down the route of using doubles (C++ stores thinks as
37907         Doubles our managed API as bytes).
37909 2007-06-10  Jackson Harper  <jackson@ximian.com>
37911         * xaml.cpp: Handle the TransformGroup default collection.
37912         - Add Value's to the collection
37914 2007-06-09  Jackson Harper  <jackson@ximian.com>
37916         * transform.cpp|h: C style constructor for TransformGroup
37917         * xaml.cpp: Implement loading transform groups and transform
37918         collections
37920 2007-06-09  Jackson Harper  <jackson@ximian.com>
37922         * value.h:
37923         * runtime.cpp:
37924         * transform.cpp|h: Impplement transform groups and transform
37925         collections.
37927 2007-06-09  Jackson Harper  <jackson@ximian.com>
37929         * value.h:
37930         * runtime.cpp|h: Use the new collection classes for triggers and
37931         actions. These are unsettable, so don't register them as
37932         DependencyProperties.
37934 2007-06-08  Everaldo Canuto  <ecanuto@novell.com>
37936         * runtime.cpp: In surface_destroy check for toplevel before unref
37937         it. 
37939 2007-06-08  Chris Toshok  <toshok@ximian.com>
37941         * animation.h: remove the huge whitespace gap after KeyTime, and
37942         remove the ifdef'ed out Nullable<T> template.
37943         
37944         * animation.cpp: remove the unused point_animation C api, and use
37945         the overloaded + operator on Color and Point when initializing
37946         "end" in GetCurrentValue for those animations.  They're looking
37947         more and more similar.
37949 2007-06-08  Chris Toshok  <toshok@ximian.com>
37951         * globally: move away from all uses of Value::u union.  switch
37952         everything to using Value::As* methods, which do typechecking and
37953         safe downcasting.
37954         
37955         * value.h: make the union private to catch anyone accessing it
37956         directly.
37958         * runtime.cpp (IsSubclassOf): return true if type == super.  Not
37959         strictly "subclass", but it makes this method a little more
37960         useful/efficient.  Add As* methods for string, point arrays, and
37961         double arrays, and add nullable As* methods for the types which
37962         don't return pointers already.
37964 2007-06-09  Jackson Harper  <jackson@ximian.com>
37966         * xaml.cpp: Parse time spans correctly.
37968 2007-06-08  Miguel de Icaza  <miguel@novell.com>
37970         * runtime.h (UIElement): Remove user_xform_origin as a field, now
37971         we pull this from the DependencyObject as it should be. 
37973         * runtime.cpp (UIElement::OnSubPropertyChanged): Catch a bunch of
37974         other properties that would trigger an invalidate/bounds
37975         recomputation. 
37977         (item_init): initialize the other properties that the managed code
37978         needs. 
37979         
37980         * shape.cpp, ffvideo.cpp: updated to use the
37981         RenderTransformOriginProperty in the computation of the center for
37982         the transformation.
37984 2007-06-08  Chris Toshok  <toshok@ximian.com>
37986         * Makefile.am (libmoon_la_SOURCES): add value.h
37988         * runtime.h, value.h: move the Value structure to value.h, since
37989         it (and its required forward decls) have grown huge.
37990         
37991         * runtime.cpp: add all the Value::As* methods, yay for CPP.
37993 2007-06-08  Jeffrey Stedfast  <fejj@novell.com>
37995         * ffvideo.cpp (queue_data): Replaced the sound code with my newest
37996         implementation, seems to play sound correctly now.
37998 2007-06-08  Chris Toshok  <toshok@ximian.com>
38000         * clock.h, clock.cpp: move all the TimeManager/Clock/Timeline
38001         stuff here, to help relieve some of the pressure building up in
38002         animation.h/animation.cpp.
38004 2007-06-08  Chris Toshok  <toshok@ximian.com>
38006         * animation.cpp: add some skeleton code for point keyframe
38007         animations, and reduce all the Double/Point/Color Animation
38008         GetCurrentValue() methods to much the same, using LERP and the
38009         operators defined in runtime.h.
38011         * runtime.cpp (types_init): register the new keyframe types.
38013         * runtime.h: add some new animation types to Value, and add
38014         operators for +, -, and * (scalar) for Color and Point to make the
38015         animation code a little more concise.
38017         * animation.h: add some new classes/structs for use in keyframe
38018         animations.
38020 2007-06-08  Miguel de Icaza  <miguel@novell.com>
38022         * runtime.cpp, runtime.h (Collection): Rework the collection to
38023         use abstract methods (gulp), 
38025         (VisualCollection): New collection, derives from Collection, does
38026         the collection thing.
38028         (Panel.OnPropertyChanged): If our children collection is updated,
38029         take care of it here.
38031         (DependencyObject): use free instead of g_free as we are
38032         allocating strings with strdup.
38033         
38034         (Value): drop constructor that specified type, type is not part of
38035         Value.
38036         
38037         * xaml.cpp, shape.cpp: Remove use of the old destructors now that we keep
38038         track of types correctly.
38040 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
38042         * brush.cpp: Fix color formats argb and rgb (too dark).
38044 2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
38046         * runtime.h, runtime.cpp: Change Value::Kind to not have any holes
38047         in the integer ranges, and change Type's type hashtable to an array
38048         of types, indexed by Value::Kind. Also add Value::COLLECTION and 
38049         update Collection to use it.
38051 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
38053         * shape.cpp|h: Add Path::CanFill as it depends on the Geometry 
38054         object(s) being used.
38055         * geometry.cpp|h: Implemented Poly[Line|Bezier|QuadraticBezier]Segment
38056         Points properties and some basic draw stuff too.
38058 2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
38060         * runtime.h, runtime.cpp, shape.cpp, xaml.cpp:
38061         Remove the Value (DependencyObject, Kind) constructor,
38062         the type of the DependencyObject can be obtained directly 
38063         from the DependencyObject itself now, and update all uses
38064         to the Value (DependencyObject) constructor.
38066 2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
38068         * *.h, *.cpp: Remove objectType and SetObjectType from 
38069         DependencyObject, make DependencyObject::GetObjectType virtual, 
38070         and update all inheritors of DependencyObject to not use 
38071         SetObjectType, but override GetObjectType.
38073 2007-06-08  Jackson Harper  <jackson@ximian.com>
38075         * xaml.cpp: Add some type checks to ensure we are setting child
38076         properties to legal types.
38077         - explicitly set properties value types, Value now requires this.
38078         - fix warning
38080 2007-06-08  Jackson Harper  <jackson@ximian.com>
38082         * runtime.cpp: Initialize the surface to NULL
38083         - use UIElement as the type for flags 
38085 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com> 
38087         * shape.h: Don't waste time trying to fill lines.
38088         * shape.cpp: Fix dashes support. First reset between shapes and, 
38089         second, handle cairo dislike of a single dash value of 0.0.
38091 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
38093         * shape.cpp|h: Some shapes, like polylines, don't supports Fill.
38095 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com> 
38097         * shape.cpp|h: Implement Polygon::Points aad Polyline:Points 
38098         properties as DependencyProperty. Adjust their Draw methods.
38099         * runtime.cpp: Implement point_array_from_str.
38101 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
38103         * shape.cpp|h: Add DP support for StrokeDashArray (double*).
38104         * runtime.cpp|h: Add double* and Point* (array) support to Value.
38105         * xaml.cpp: Add DOUBLE_ARRAY and POINT_ARRAY support. Supply value 
38106         kind for brushes to avoid runtime warnings.
38108 2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
38110         * runtime.cpp, runtime.h: Implemented a type system that tracks
38111         types' name and parent type.
38113 2007-06-08  Miguel de Icaza  <miguel@novell.com>
38115         * runtime.cpp (Panel): Make children a property of the panel so we
38116         can access it from the managed world.
38118         (Value): Add new constructor that takes a full type, need to
38119         discuss this with the team.
38121 2007-06-08  Jackson Harper  <jackson@ximian.com>
38123         * animation.cpp|h: Implement BeginStoryboard
38124         * runtime.cpp|h: Implement event triggers
38125         - Fire a loaded event when we first render an element
38126         * xaml.cpp: Implement parsing and loading storyboard and begin
38127         storyboard as well as event triggers and some of the property
38128         types that go with these guys.
38129         
38130 2007-06-08  Miguel de Icaza  <miguel@novell.com>
38132         * runtime.cpp (runtime_init): Add panel_init
38134         (panel_init): Register Children property (must still create the
38135         collections, that will be a new fight).
38137 2007-06-07  Miguel de Icaza  <miguel@novell.com>
38139         * xaml.cpp (start_element_handler): For the top element, track the
38140         type that we loaded, so we can return this to our caller (needed
38141         for the managed interface).
38143         (XamlParserInfo): track also the Value::Kind of the top_element. 
38145         (xaml_create_from_file, xaml_create_from_str): Both now can
38146         optionally return the type of the toplevel element.
38148         * runtime.cpp (Value): Switch Value to strdup/free.
38150         Use inited to prevent multiple initializations.
38152 2007-06-07  Chris Toshok  <toshok@ximian.com>
38154         * demo.cpp (main): track more of the api axing.
38156         * animation.h, animation.cpp (Storyboard::Begin): return
38157         immediately if we've already got a root clock.
38158         (globally) continue axing unused C api.
38160 2007-06-07  Chris Toshok  <toshok@ximian.com>
38162         * demo.cpp: track all the animation changes away from the C api,
38163         and also test out the from/by animation combination by making the
38164         X scaling only go From 1.0 By -0.5 (so it animates in the range of
38165         [1.0..0.5].
38166         
38167         * animation.h, animation.cpp: lots of changes - get rid of many of
38168         the animation/timeline C api calls, since they're unnecessary for
38169         the binding.  Implement the nullable property getter/setters as
38170         #defines since I didn't want to c&p all of them and make the
38171         obvious mistakes.  While I'm at it, implement the thing I needed
38172         nullable typed values for - "by" animation support.  Now you can
38173         specify any of the following combinations and get a usable
38174         animation: From+By, From+To, By, To.  You can actually just put
38175         From as well, but it won't animate (since both start end end will
38176         be the same).  The To property overrides the By property, if both
38177         are present.
38179         * runtime.h, runtime.cpp: add an overload of
38180         DependencyProperty::SetValue which takes a Value*, to enable
38181         nullable types to be set.  the existing SetValue method calls the
38182         new one with &value.
38184 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
38186         * brush.cpp: Fix comment.
38187         * shape.cpp: Reduce duplication.
38189 2007-06-07  Miguel de Icaza  <miguel@novell.com>
38191         * runtime.h: Store Value.BOOL in an int32, simplifies my life. 
38193         * runtime.cpp (dependency_object_set_value,
38194         dependency_object_get_value): Add C# callable method calls to
38195         control the properties.
38197         (dependency_property_lookup): Add a way of find dependency
38198         properties.
38200 2007-06-07  Chris Toshok  <toshok@ximian.com>
38202         * animation.cpp (TimeUpdated): comment out some spew.
38204         * runtime.cpp (SetValue): use the copy ctor, and fix != check for
38205         current_value and value.
38206         (Value::Value): add a copy ctor, which takes care of the g_strdup
38207         for us.
38209         * runtime.h: add copy ctor for Value.
38211 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
38213         * brush.cpp, geometry.cpp, shape.cpp: Protect against NULL properties.
38215 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com> 
38217         * geometry.cpp: #if-out transforms, it crash the xaml samples
38218         * runtime.h: Fix hierarchy. Panel inherits from FrameworkElement.
38220 2007-06-07  Chris Toshok  <toshok@ximian.com>
38222         * animation.cpp: switch all the various linear interpolation
38223         expressions to using the LERP macro, and add the PointAnimation
38224         implementation.
38226         * animation.h: add PointAnimation.
38228         * runtime.h: add Value::POINTANIMATION.
38230 2007-06-07  Chris Toshok  <toshok@ximian.com>
38232         * runtime.h (Value): add COLORANIMATION to the list of types.
38233         Also, add a Kind constructor so we can use that for nullable type
38234         default values in the ::RegisterProperty calls.  That is,
38235         initializing the default to Value(Value::COLOR) gives you a null
38236         default value with the COLOR type.
38238         * runtime.cpp (Value): new Kind ctor.
38240         * animation.cpp/.h: add ColorAnimation.
38242         * demo.cpp (main): add a color animation that interpolates between
38243         Red and Blue for the SolidColorBrush.
38245 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
38247         * runtime.cpp: Restore alpha support. Don't call cairo_set_operator
38248         without a cairo_save|restore pair (or without resetting it's original
38249         value). Anyway right now it works without any of that :)
38251 2007-06-07  Jackson Harper  <jackson@ximian.com>
38253         * runtime.cpp|h: add event triggers.
38254         * xaml.cpp: parse event triggers.
38256 2007-06-07  Chris Toshok  <toshok@ximian.com>
38258         * animation.cpp/.h (Clock): initialize duration here.
38259         (TimeUpdated): instead of getting it every time through this
38260         function.
38262 2007-06-07  Chris Toshok  <toshok@ximian.com>
38264         * animation.h: make Duration::FromSeconds return numbers of the
38265         same magnitude as get_now().
38267         * animation.cpp (Clock): fix UMR.
38269 2007-06-07  Jackson Harper  <jackson@ximian.com>
38271         * xamp.cpp: Oops, not sure how that happened.  Set the property
38272         name correctly, not to the type name.
38274 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
38276         * geometry.cpp|h: Apply transform. Fix default values.
38278 2007-06-07  Miguel de Icaza  <miguel@novell.com>
38280         * animation.cpp (get_now): The time computation was wrong, there
38281         was an extra "10" in there that made all computations go astray
38282         and in particular cause the large values for ScaleY, which made
38283         getboundingbox ridiculously slow.
38285         For debugging purposes: ScaleY was being set to
38286         131472940552.95215, which came from
38287         DoubleAnimation:GetCurrentValue which was computing this value
38288         from a busted clock.
38290 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
38292         * geometry.cpp|h: Add drawing for [Ellipse|Line|Rectangle] geometry.
38293         Add basic code for the other geometry types.
38294         * runtime.cpp|h: Add basic implementation for point_from_str and 
38295         rect_from_str 
38296         * shape.h: Export some cairo helpers.
38297         * shape.cpp: Refactor drawing to reuse the code from geometry.
38298         * xaml.cpp: Add Point and Rect parsing.
38300 2007-06-07  Chris Toshok  <toshok@ximian.com>
38302         * demo.cpp: make all the animation stuff work declaratively, and
38303         test some of the different repeatbehavior and autoreverse
38304         settings.
38305         
38306         * animation.cpp: huge block of nasty code to determine our
38307         progress given the combinations of autoreverse and repeatbehavior.
38309         * animation.h: Add Duration stucture, add a few C api calls for
38310         getting/setting timeline properties.
38312         * runtime.h, runtime.cpp: add DURATION support to Value.
38313         
38314 2007-06-07  Jackson Harper  <jackson@ximian.com>
38316         * runtime.cpp|h: Some pieces of the triggers framework.
38318 2007-06-07  Jackson Harper  <jackson@ximian.com>
38320         * xaml.cpp: Handle repeat behaviors, lookup attached properties.
38322 2007-06-06  Chris Toshok  <toshok@ximian.com>
38324         * animation.cpp, animation.h: add timeline_set_autoreverse.
38326 2007-06-06  Chris Toshok  <toshok@ximian.com>
38328         * animation.h: add prototype for timeline_set_repeat_behavior.
38329         
38330         * animation.cpp (animation_init): register the RepeatBehavior
38331         property.
38332         (timeline_set_repeat_behavior): new function.
38334         * runtime.h: a better solution to enforcing types in the Value
38335         ctors - make Value (void*) private.  this gives compilation errors
38336         at all usage points where you're passing an unrecognized pointer
38337         type.  Also, add RepeatBehavior support to Value.
38339         * runtime.cpp: add repeatbehavior support to Value.
38340         
38341         * geometry.cpp: change all Value(pointer-to-struct) calls to
38342         Value(struct) calls.
38344         * transform.h: we need do define TransformGroup as a subclass of
38345         Transform, or the functions that SetValue a transformgroup fail to
38346         compile (since it's not a descendent of DependencyObject.)
38348 2007-06-07  Jackson Harper  <jackson@ximian.com>
38350         * xaml.cpp: Get object element property setting working.
38352 2007-06-06  Chris Toshok  <toshok@ximian.com>
38354         * runtime.h, runtime.cpp: add a special void* ctor to value so
38355         pointers aren't silently converted to bool (bad c++, bad!), and
38356         have that ctor output a warning message to the console, along with
38357         the likely cause.
38359         * brush.cpp: need to deref the Color* in the Value ctor.
38361 2007-06-06  Chris Toshok  <toshok@ximian.com>
38363         * animation.cpp: new dump of the animation stuff.  this is much
38364         closer in spirit and implementation to that of WPF's
38365         timing/animation system.  it's not perfect yet, but it's much,
38366         much closer.
38368 2007-06-06  Chris Toshok  <toshok@ximian.com>
38370         * runtime.h: make the point/color/rect copy constructors take a
38371         ref, not a pointer.  also, make the value contructors for struct
38372         types by-value.
38374         * runtime.cpp: make the value constructors for struct types
38375         by-value.
38377         * brush.cpp (brush_init): pass the Color by value.
38379 2007-06-06  Chris Toshok  <toshok@ximian.com>
38381         * runtime.h, runtime.cpp: move the Value implementation (for
38382         everything but the operators) to the .cpp file.
38384 2007-06-06  Miguel de Icaza  <miguel@novell.com>
38386         * runtime.h, runtime.cpp: Surface is no longer derived from
38387         Canvas, it now instead hosts a canvas, should avoid having two
38388         nested canvases for loading XAML files.
38390         demo.cpp: update.
38392         Correct computation of the bounding box for shapes and videos.
38394         * shape.cpp: Do not pop the cairo state after draw and then call
38395         extents as the computation on extents is done with the current
38396         cairo context, not the cairo context that drew the data before
38397         popping (this would show up with thick brushes).
38399         * runtime.cpp: Add 2 instead of 1, as double to integer rounding
38400         can take two values (negative and positive).
38402         * cutil.cpp: Cut and paste cairo code here, it computes the proper
38403         bounding box from the extents using the current absolute matrix. 
38405         * ffvideo.cpp (queue_data): Memory leak gone.
38407 2007-06-06  Jackson Harper  <jackson@ximian.com>
38409         * xaml.cpp: Set brush attributes.
38411 2007-06-06  Jackson Harper  <jackson@ximian.com>
38413         * runtime.h:
38414         * transform.h: Need to register this base DependencyObject for the
38415         xaml parser.
38416         * geometry.cpp: use correct value kind for registering properties
38417         * runtime.cpp: Don't be strict about the type with properties that
38418         derive from DependencyObject, we can't be too strict here, because
38419         of inheritance the registered type BRUSH could be set to
38420         SOLIDCOLORBRUSH
38421         - register some properties with the correct type
38422         
38423 2007-06-06  Jackson Harper  <jackson@ximian.com>
38425         * animation.cpp|h:
38426         * runtime.h: Staring to add triggers
38427         * shape.cpp: Use brush as our property kind
38428         
38429 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
38431         * runtime.h: Add new types and SweepDirection enum.
38432         * geometry.cpp|h: Add PathFigure, ArcSegment, BezierSegment and 
38433         LineSegment classes and [g|s]etter functions.
38435 2007-06-06  Miguel de Icaza  <miguel@novell.com>
38437         * runtime.h: Move all the types into the Value::Kind enumeration
38438         so that we can have a shared type system.
38440         * demo.cpp (main): Allow loading a XAML file from the command
38441         line, for your testing pleasure.
38443         * ffvideo.cpp (convert_to_rgb): We no longer need the loop to swap
38444         channels.
38446         Move to cairo to render to the screen the contents
38447         of the buffer.   ffmpeg and cairo do have the same RGBA format, it
38448         was actually the copy from this format to the screen using
38449         gdk_draw_pixbuf that failed: pixbuf expected the data in another
38450         format and there is no way to configure it.
38451         
38452         * runtime.cpp (surface_clear): use the cairo api as the surface is
38453         no longer living on the client buffer. 
38455         (surface_destroy): update
38457         (create_xlib, realized_callback, unrealized_callback): When the
38458         widget is realized, create a cairo context
38460 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
38462         * runtime.h: Add Value support for Point and Rect
38463         * geometry.cpp: Implement [g|s]etters for Point and Rect properties
38465 2007-06-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
38467         * runtime.cpp, runtime.h: Added DependencyObject::GetObjectType.
38469 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
38471         * shape.cpp|h, runtime.cpp|h: Remove the (now) useless 
38472         set_prop_from_str methods since everything they handled is now
38473         moved into DependencyProperty.
38475 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com> 
38477         * shape.cpp|h: Use DependencyProperty for Shape Fill and Stroke 
38478         brushes. Add getter functions for fill and stroke.
38480 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
38482         * runtime.h: Call SetObjectType on Brush and SolidColorBrush
38484 2007-06-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
38486         * runtime.cpp, runtime.h: Remove the default_values hashtable
38487         from DependencyObject, it's redundant since the default value
38488         is stored inside the DependencyProperty anyway.
38490 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
38492         * demo.cpp: Adapted to API changes.
38493         * brush.cpp: Add [g|s]etters for Brush and SolidColorBrush using
38494         DependencyProperty. Add brush initialization code.
38495         * runtime.cpp|h: Change Brush to inherit from DependencyObject. 
38496         Add Color support to Value. Call brush initialization.
38497         * shape.cpp: Add miter, pen join|cap and fill rule drawing support.
38498         * xaml.cpp: Adapted to API changes since SolidColorBrush now inherits
38499         from DependencyObject.
38501 2007-06-06  Jeffrey Stedfast  <fejj@gnome.org>
38503         * ffvideo.cpp (convert_to_rgb): Make sure the frame->data is
38504         non-NULL before trying to scale.
38506 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
38508         * brush.cpp: Fix compiler warning.
38510 2007-06-06  Jackson Harper  <jackson@ximian.com>
38512         * runtime.cpp/h: initialize xaml
38513         - Add canvas C style constructor
38514         - Make SolidColorBrush's Color public
38515         * shape.cpp: Comment out the set_prop... stuff, this code won't be
38516         used anymore, now that the xaml parser is using dependency objects
38517         to set properties.
38518         * animation.cpp|h:
38519         * transform.cpp|h: Add some C style constructors
38520         * brush.cpp: Create colors from a string instead of solid brushes
38521         * xaml.cpp: Add in a known element tree, and move property setting
38522         into the xaml code, also added code for setting properties with
38523         property element syntax
38524         
38525 2007-06-05  Miguel de Icaza  <miguel@novell.com>
38527         Add type checking on SetValue, RegisterProperty to avoid
38528         mistakes. 
38529         
38530         * runtime.cpp (SetValue): Add simple type checking
38531         (Register): Ensure that no empty values are passed. 
38533         * runtime.h (DependencyObject): events, remove unused field.
38535 2007-06-05  Chris Toshok  <toshok@ximian.com>
38537         * runtime.cpp: we need to maintain another hash table for
38538         DependencyProperties so we can return the actual property, not the
38539         default value, which is what GetDependencyProperty needs to do.
38540         (DependencyObject::FindName): implement this by either trying to
38541         use the namescope on this object or the global_NameScope (rather
38542         suboptimal, it's supposed to 'walk the logical tree' according to
38543         msdn).
38545         partially implement NameScope.
38547         * runtime.h: add NameScope, and add a uint64 Value.  Also add
38548         FindName on DependencyObject.
38550 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
38552         * shape.cpp|h: Add Shape's thickness and some dash support. Add more
38553         [g|s]etters for Shape using DependencyProperty.
38554         * demo.cpp: Add thickness and dashes to the rectangles.
38556 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com> 
38558         * shape.cpp|h: Move FrameworkElement stuff into runtime.cpp|h. Use
38559         functions to retrieve the height and width of shapes (values defined
38560         in FrameworkElement).
38561         * runtime.cpp|h: Use DependencyProperty for FrameworkElement Height 
38562         and Width properties.
38563         * demo.cpp: Adjust to API changes.
38565 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
38567         * shape.cpp: Remove (now) useless properties in Line.
38569 2007-06-05  Miguel de Icaza  <miguel@novell.com>
38571         * shape.cpp, ffvideo.cpp, video.cpp: Do not use x, y anymore, we
38572         now have an absolute affine set for us beforehand.
38574         * runtim.cpp: on update_xform call the parent ::get_xform_for to
38575         obtain the base affine transform to use.
38577 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
38579         * geometry.cpp|h: Use DependencyProperty for properties.
38580         * transform.h: Protect.
38582 2007-06-05  Chris Toshok  <toshok@ximian.com>
38584         * runtime.h: call SetObjectType where we need it.
38586         * shape.h: same.
38587         
38588         * geometry.h: same.
38590 2007-06-05  Miguel de Icaza  <miguel@novell.com>
38592         * ffvideo.cpp (VideoFfmpeg): Initialize audio_frames_size, caught
38593         by valgrind
38595         * runtime.cpp (item_set_transform): This routine was doing nothing
38596         but doing an invalidate of the region, updating the transform,
38597         updating the bounding box and re-invalidating the new area.   Move
38598         that logic elsewhere (it was also ignoring the affine parameter
38599         anyways). 
38601         Unify user_xform with the RenderTransform dependency property, now
38602         we always have a static absolute transformation in the UIElement. 
38604 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com> 
38606         * shape.cpp|h: Update shape_init with correct values and implement
38607          path_[g|s]et_data.
38609 2007-06-05  Chris Toshok  <toshok@ximian.com>
38611         * animation.cpp (ClockTimeChanged): use the instance variety of
38612         GetDependencyProperty.
38614         * runtime.cpp (GetDependencyProperty): just call the static
38615         variety with our objectType.
38616         (SetObjectType): method to enable subclasses to set the object
38617         type.
38619         * runtime.h: add DependencyObject::SetObjectType, as well as the
38620         instance version of DependencyObject::GetDependencyProperty.
38622         * transform.h: call SetObjectType to identify this object.
38624 2007-06-05  Chris Toshok  <toshok@ximian.com>
38626         * runtime.cpp (AddHandler): oops, g_list_append requires an assignment.
38628 2007-06-05  Chris Toshok  <toshok@ximian.com>
38630         * runtime.h (Canvas): declare our dependencyproperties here.
38632         * runtime.cpp (canvas_init): actually assign the properties.
38634 2007-06-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
38635         
38636         * runtime.cpp, runtime.h: Implement a DependencyProperty::
38637         GetDependencyProperty.
38639 2007-06-05  Chris Toshok  <toshok@ximian.com>
38641         * runtime.cpp (OnSubPropertyChanged): remove the event handler for
38642         the render transform and use OnSubPropertyChange instead.
38643         (item_set_render_transform): clean this up substantially - the
38644         property system handles all the "event" stuff now.
38645         (item_get_render_transform): we need a getter now that this uses
38646         the depprop stuff.
38647         (NotifyAttacheesOfPropertyChange): new method, call
38648         OnSubPropertyChanged with both the attachee's property (the thing
38649         storing 'this') and the subproperty that changed.
38650         (SetValue): complicate the attachee stuff a bit, since we need to
38651         store both the object and the property it's storing the value in.
38652         (item_init): initialize RenderTransformProperty.
38654         * runtime.h: make UIElement subclass from DependencyObject. This
38655         flattens the hierarchy some from SL (which has Visual in between,
38656         but we have no Visual.)
38658         * transform.cpp (OnPropertyChanged): call
38659         NotifyAttacheesOfPropertyChange.  Also, reindent some stuff.
38661 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com> 
38663         * demo.cpp: Updated to use rectangle_set_radius_[x|y]
38664         * shape.cpp|h: Add [get|set]ter functions for Line and Rectangle
38665         * xaml.cpp: Updated for API change.
38667 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
38669         * runtime.h: Add new ctor for Color(uint). Change UIElement to inherit
38670         from DependencyObject.
38671         * brush.cpp: Complete named colors (wrt System.Windows.Media.Colors)
38673 2007-06-05  Jeffrey Stedfast  <fejj@gnome.org>
38675         * ffvideo.cpp (queue_data): If we fail to get an audio codec, then
38676         we simply cannot play sound (or maybe there is no sound), either
38677         way, don't try to dereference the audio_codec pointer if it is
38678         NULL. Also wrapped audio setup in an #ifdef
38680 2007-06-05  Miguel de Icaza  <miguel@novell.com>
38682         Implement the OnPropertySet stuff, builds on Toshok's first pass.
38684         Next stage: discuss with Toshok the migration to this awesome
38685         framework from Events ;-)
38686         
38687         * runtime.cpp (SetValue): when adding dependencyobjects track on
38688         the attached object the ownership.
38690         Notify all containers of a property change.
38692         * brush.cpp (Brush): Remove AddListener, RemoveListener, we can
38693         use the property notification system for these.
38695         * runtime.h (DependencyObject): Add a "attached_list" gslist to
38696         keep track of all the objects where this particular
38697         DependencyObject has been attached to, to provide OnPropertyChange
38698         notifications (not hooked up yet).
38700         (Value): Introduce DependencyObject constructor.
38702 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
38704         * shape.cpp|h: Started moving properties to DependencyObject. Added
38705         Path.
38706         * geometry.cpp|h: New. System.Windows.Media.Geometry related classes
38707         * runtime.cpp: Added calls to shape_init and geometry_init
38708         * runtime.h: Added Rect structure and new DependencyObject types for
38709         shapes and geometry.
38710         * Makefile.am: Added geometry.cpp|h to source files.
38712 2007-06-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
38714         * runtime.h: initialize Value to zero on construction.
38716 2007-06-05  Chris Toshok  <toshok@ximian.com>
38718         * demo.cpp: abstract the cairo transformations away by using
38719         RotateTransforms.. and this is probably going to annoy some
38720         people, but make the normally stationary elements bounce between
38721         smaller and larger.
38723         * animation.h: make Clock subclass from DependencyObject.
38725         * animation.cpp (animation_init): assign the properties, don't
38726         just call Register.
38728         also, track the EventObject method name change.
38730         * runtime.cpp (item_set_render_transform): new method.  unhook the
38731         old transform and hook up the new one.  also, explicit set our
38732         transformation here.
38733         (SetValue): make this only do the work (and more importantly only
38734         call OnPropertyChanged) if the value is different.
38736         * runtime.h: shorten the names of the EventObject methods.  Add
38737         operator== and operator!= to Value.  Add an EventObject to
38738         DependencyObject to give us rudimentary event handlers.  Add the
38739         render_transform "higher-level" transform into to UIElement.
38741         * transform.h: add the OnPropertyChanged override and rename
38742         transform_get_value to transform_get_transform.
38744         * transform.cpp (transform_init): oops.  we need to actually
38745         assign the properties.
38746         (transform_get_transform): indent.
38747         (OnPropertyChanged): override this method to emit
38748         "TransformChanged".
38750 2007-06-04  Chris Toshok  <toshok@ximian.com>
38752         * Makefile.am (libmoon_la_SOURCES): add animation and transform to
38753         the build.
38755         * runtime.h: flesh out Value some, adding BOOL (has to be C++
38756         bool, not gboolean, or else it conflicts with int32), INT32,
38757         INT64, and STRING (char*).
38759         * runtime.cpp (runtime_init): call animation_init and
38760         transform_init.
38762         * animation.cpp, animation.h, transform.h, transform.cpp: get
38763         these using the new dependency object/value foo, and get them
38764         compiling.
38766 2007-06-04  Miguel de Icaza  <miguel@novell.com>
38768         * runtime.h: Make the "Base" refcounting class the base for
38769         DependencyObject. 
38771         * ffvideo.cpp: Set audio initialization to zero for now, so we can
38772         continue debugging.
38774         * runtime.cpp (Canvas): override render, in preparation for using
38775         attached properties.   I get the feeling am going to regret not
38776         keeping the top/left attached properties somewhere else.
38778         (Value): introduce the discriminating union for values as
38779         discussed on irc.
38780         
38781         (DependencyObject): use lower case name for properties.
38782         Take Value * instead of void *, this is so we can represent NULL
38783         values (is this a good idea Chris, or do we want to have a
38784         Value.Type.NULL enumeration value?
38786         Update hash table creation to g_free the result on hash table
38787         update and removal.
38789         (Event): Update indentation to be Linux-like instead of GNU like.
38791 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
38793         * shape.cpp|h: Add Poly[line|gon] drawing code and C helper functions 
38794         to create them. Replace the "old" C1 constant in Ellipse::Draw with 
38795         ARC_TO_BEZIER (now that I know where it comes from ;-)
38797 2007-06-04  Jeffrey Stedfast  <fejj@novell.com>
38799         * ffvideo.cpp (queue_data): Got sound kinda sorta working...
38801 2007-06-04  Jackson Harper  <jackson@ximian.com>
38803         * xaml.cpp: Give elements a type
38805 2007-06-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
38807         * runtime.cpp, runtime.h: implemented DependencyProperty and DependencyObject.
38809 2007-06-04  Chris Toshok  <toshok@ximian.com>
38811         * animation.h, animation.cpp: initial pass at some of the
38812         animation stuff.  doesn't build yet.
38814 2007-06-04  Chris Toshok  <toshok@ximian.com>
38816         * runtime.cpp, runtime.h: add EventObject, a c++ only base class
38817         for managing events.
38819 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
38821         * shape.h: Remove Ellipse::set_prop_from_str, it's "virtually" empty
38822         and added Draw methods to Polygon and Polyline.
38823         * shape.cpp: Added round-corner rectangle support (RadiusX, RadiusY)
38824         and match changes in header file.
38826 2007-06-04  Jackson Harper  <jackson@ximian.com>
38828         * shape.cpp/h: width and height are properties of the
38829         FrameworkElement.
38831 2007-06-04  Jackson Harper  <jackson@ximian.com>
38833         * shape.cpp/h: add ellipse_new
38834         - set width/height on ellipses (ellipsi ?) and draw them.
38835         * xaml.cpp: create ellipses, get zorder correct
38837 2007-06-04  Jackson Harper  <jackson@ximian.com>
38839         * xaml.cpp: put in character data functionality, eventually we
38840         will need to add FrameworkElement methods for setting the default
38841         content element. See
38842         http://msdn2.microsoft.com/en-us/library/ms752059.aspx#contentmodels
38843         for more info on content properties.
38845 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
38847         * demo.cpp: Include shape.h and use a rounded-rectangle
38848         * runtime.h: Added FillRule and moved out Shapes.
38849         * shape.h: New. Moved all shapes from runtime.h and added new ones.
38850         * shape.cpp: Added Polygon and Polyline.
38851         * xaml.cpp: Include shape.h
38852         * Makefile.am: Add shape.h
38854 2007-06-04  Chris Toshok  <toshok@ximian.com>
38856         * transform.cpp, transform.h: initial code for the transform
38857         objects.  doesn't compile yet.
38859 2007-06-04  Jackson Harper  <jackson@ximian.com>
38861         * demo.cpp: fix typo
38863 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com> 
38865         * demo.cpp: Fix for API changes.
38866         * runtime.h: Add FrameworkElement, other Shape properties and move
38867         around some properties to match the managed definitions.
38868         * shape.cpp: Add setters for new Shape properties and move properties
38869         parsing to match managed definitions.
38870         * xaml.cpp: Fix for API changes.
38872 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
38874         * shape.cpp: Don't typecast doubles into ints.
38876 2007-06-04  Jackson Harper  <jackson@ximian.com>
38878         * runtime.h:
38879         * xaml.cpp: Implement function that allows you to load xaml from a
38880         chunk of text.
38881         * demo.cpp: add a very small xaml demo
38883 2007-06-04  Jackson Harper  <jackson@ximian.com>
38885         * xaml.cpp: remove old no longer used function.
38886         - track whether or not we are adding to a panel instead of surface
38887         * shape.cpp: Fix typo, need to set line_* not x1, x2, etc.
38889 2007-06-04  Jackson Harper  <jackson@ximian.com>
38891         * shape.cpp: Add new methods to allow shapes to have their
38892         properties filled in from text values.
38894         * brush.cpp: Start work on allowing solid color brushes to be
38895         created from strings.
38897         * runtime.cpp: stub in methods for setting properties on canvas
38898         and UIElements (these had some meat but I am removing it now that
38899         some of the names are updated, will put back later).
38901         * runtime.h: add some methods and functions for XAML parsing.
38903         * xaml.cpp: Initial implementation of the XAML parser.
38905 2007-06-03  Miguel de Icaza  <miguel@novell.com>
38907         * runtime.cpp (Collection, Panel): The beginning of an API to
38908         encapsulate collections that we will expose to the unmanaged
38909         world.  
38911         This should be the backend for the base collection class in agclr
38912         for the strongly typed types.   
38914         The idea is to have the MS.Internal.Collection<T> be a proxy that
38915         contains an IntPtr pointer to the C++ Collection instance and map
38916         the various add/remove methods to it.
38918         The immediate goal is to be able to do from C#:
38920                 Rectangle r = new Rectangle ();
38921                 r.Brush = new SolidColorBrush (new Color (1, 0, 0));
38922                 Canvas.Children.Add (r);
38924 2007-06-02  Miguel de Icaza  <miguel@novell.com>
38926         Implement support for the render origin.
38927         
38928         * runtime.cpp (item_invalidate): add one to cope with the rouding
38929         from floats to ints (fixes some trailing junk).
38931         Item: redo the affine transformation setup to support both the
38932         render_transform_origin property and avoid recomputing all of this
38933         on each repaint request.
38935         * ffvideo.cpp: Changed the code to do the actual video decoding on
38936         the main thread so we can put all the video and audio in the
38937         queues before we start rendering.
38939         Failed attempts at getting audio to work.
38941         * Everywhere: renamed Item to UIElement to better match the actual
38942         class hierarchy that we will be exposing.
38944 2007-06-01  Jackson Harper  <jackson@ximian.com>
38946         * shape.cpp: Fix typo.
38948 2007-06-01  Miguel de Icaza  <miguel@novell.com>
38950         * ffvideo.cpp: No longer use CMD_INITED, instead use g_idle_add to
38951         notify a special function (callback_video_inited).  Makes me
38952         wonder if I should do the same for the new-frame call
38954         Initialize the cairo surface on the callback_video_inited routine
38955         instead of doing this on the decoder thread (that was a mistake).
38957         This solves the misterious case of the video that randomly did not
38958         show up.
38960 2007-05-29  Miguel de Icaza  <miguel@novell.com>
38962         * video.cpp (load_next_frame): reimplement the video play back
38963         logic so that it will now properly paint the proper frame on the
38964         screen as needed.
38966         Add logic to skip frames if video is playing back too slowly, and
38967         to resume playback when new frames are ready.
38969         Currently its computing the delay using the n_frame_rate field
38970         (which no sample uses, but I could not find any other way of
38971         estimating the frame rate other than this.
38973         It works at least with some sample streams that I have with 30 fps
38974         and 15 fps.
38976         * runtime.cpp: Move the GtkDrawingArea widget into the Surface,
38977         and handle exposes in the runtime, not in the demo.   Show the
38978         widget (thats why I was not getting the expose events on the
38979         widget, duh). 
38981 2007-05-26  Miguel de Icaza  <miguel@novell.com>
38983         * runtime.cpp (Brush, SolidBrush): Introduce brushes. 
38985         (Shape): introduce reusable drawing framework for shapes, not
38986         complete. 
38987         
38988         (Line): introduce second user besides rectangles. 
38990         Remove agg test code.
38992         (Group::getbounds): implement.