In plugin:
[moon.git] / src / ChangeLog
bloba097845ac5b3f44138ee85f5a29388352f0a334c
1 2009-11-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3         * cbinding.h: Regenerated.
5 2009-11-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7         * value.cpp: Don't ever use memcmp for structure comparison - it fails
8         randomly if the structures have padding. Also special case float/double
9         comparison to take epsilon into account. Fixes random failures in MS
10         DRT #303 and #2015.
12         * thickness.h:
13         * grid.h: Add [in]equality operators.
15         * color.h:
16         * fontstyle.h:
17         * fontfamily.h:
18         * fontweight.h:
19         * fontstretch.h:
20         * propertypath.h: Make inequality operator be the exact opposite of the
21         equality operator, negating the equality operator (even if code was
22         already correct, but duplicated - this way there's a lesser chance of
23         the equality operators getting out of sync)
25 2009-11-18  Jeffrey Stedfast  <fejj@novell.com>
27         * textbox.cpp (TextBoxBase::OnMouseMove): Update the primary
28         selection clipboard as the selection changes. Fixes lewing's frown
29         by turning it upside down.
31 2009-11-18  Larry Ewing  <lewing@novell.com>
33         * runtime.cpp (PaintToDrawable): fix the lame expose color logic
34         so it at least works.
36 2009-11-18  Larry Ewing  <lewing@novell.com>
38         * brush.cpp:
39         * media.cpp:
40         * shape.cpp:
41         * uielement.cpp: check the status of the pattern to avoid drawing
42         with it if we are in an error state. And fix a backwards condition
43         in the previous patch.
44         
45         * uielement.cpp: initialize the transforms.
47 2009-11-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
49         * runtime.cpp: We want to parse MOONLIGHT_DEBUG if LOGGING is defined
50         too.
52 2009-11-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
54         * audio.h:
55         * value.cpp:
56         * runtime.cpp|h:
57         * fontmanager.cpp: Tune ifdefs to allow configuring with logging but
58         without debug support.
60         * audio.cpp: Fix uninitialized variable warning (used in logging).
62 2009-11-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
64         * media.cpp|h:
65         * mediaelement.cpp:
66         * eventargs.cpp|h: Rename MarkerReachedEventArgs to
67         TimelineMarkerRoutedEventArgs to better match managed code, and move
68         the class to eventargs.cpp|h together with the rest of the event args
69         classes.
71         * type.h:
72         * value.h:
73         * cbinding.cpp|h:
74         * type-generated.cpp: Regenerated.
76 2009-11-17  Larry Ewing  <lewing@novell.com>
78         * brush.cpp:
79         * multiscaleimage.cpp (RenderCollection): 
80         * uielement.cpp (PostRender): Check the status of the pattern
81         before trying to draw with it in case something has gone wrong.
83         Fixes DRT 1 and and a couple of sites by not putting the cairo
84         context into an invalid state.
86 2009-11-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
88         * playlist.cpp: ParseASX2: don't verify the end of the uri, there is
89         no guarantee the uri has a specific ending.
91 2009-11-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
93         * mediaplayer.cpp: Open: Call SetSelected and ref on the video stream
94         we actually select, and not all of video streams we loop over.
96 2009-11-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
98         * mediaelement.h: Added LogReady event.
100         * eventargs.cpp|h: Added a LogReadyRoutedEventArgs class.
102         * enums.cpp|h: Added LogSource enum.
104         * type.h:
105         * value.h:
106         * cbinding.h:
107         * cbinding.cpp:
108         * type-generated.cpp: Regenerated.
110 2009-11-17  Jeffrey Stedfast  <fejj@novell.com>
112         Fix for drt #481
114         * textbox.cpp (KeyPressPageUp, KeyPressPageDown): Silverlight
115         seems to set these to handled even if no cursor change took place.
117 2009-11-17  Sebastien Pouliot  <sebastien@ximian.com>
119         * security.c: Do not consider System.Xml.dll and Microsoft.
120         VisualBasic.dll as platform code since, right now, they do not
121         contain any [SecurityCritical] nor [SecuritySafeCritical] code
123 2009-11-17  Alan McGovern  <amcgovern@novell.com>
125         * grid.h:
126         * grid.cpp: We need to store the sizes of all the grid
127           segments immediately after we finish measuring them. These
128           sizes are used as our base values when deciding if we should
129           expand star rows/cols. The rules for expanding star
130           rows/cols now make sense :)
132 2009-11-17  Jeffrey Stedfast  <fejj@novell.com>
134         * uri.cpp (Combine): Use different combining rules for 1.0 apps
135         (if the relative_path starts with a '/', always replace the path
136         rather than combining).
138 2009-11-17  Alan McGovern  <amcgovern@novell.com>
140         * grid.cpp: Remove a bunch of code from Grid::ArrangeOverride
141           which isn't required anymore.
143 2009-11-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
145         * mediaelement.cpp: Fix compiler warning.
147 2009-11-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
149         * pipeline-ui.cpp|h: Distinguish between user initiated download
150         requests and automatic download requests - if the user asked us to
151         download the codecs, show the ui even if the user previously selected
152         to not be asked about codec downloads again.
154         * mediaelement.cpp: When requesting a codec download, indicate that the
155         user did not initiate this request, it's an automatic request.
157 2009-11-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
159         * mms-downloader.cpp: Revert previous fix, it breaks MS DRT 938.
161 2009-11-16  Alan McGovern  <amcgovern@novell.com>
163         * xaml.h:
164         * xaml.cpp:
165         * control.h:
166         * template.cpp:
167         * dependencyproperty.g.cpp: Revert r146166 as it has some
168           bizarre side effects.
170 2009-11-16  Chris Toshok  <toshok@ximian.com>
172         * dependencyobject.h (class EventObject): we need to make
173         AddHandler virtual so UIElement can override it and do special
174         things when Loaded is poked.
176         * uielement.h,cpp: optimize the Loaded tree walking code, reducing
177         the number of nodes we visit by 2-3 orders of magnitude.
179         * list.h,cpp (List::Prepend): add an override that allows you to
180         prepend an entire list onto the front of another one.  used in the
181         Loaded tree walking code.
183 2009-11-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
185         * mms-downloader.cpp: Play: if we're already playing, don't send
186         another play request to the server, it might confuse the server.
187         Fixes #549443.
189 2009-11-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
191         * dependencyobject.cpp: Remove some debug spew.
193 2009-11-14  Larry Ewing  <lewing@novell.com>
195         * media.cpp:
196         * mediaelement.cpp: fix mediaelement rendering to match image and
197         clean up the code in both a little bit.
199 2009-11-14  Larry Ewing  <lewing@novell.com>
201         * shape.cpp (MeasureOverride): fix a bug that slipped in due to
202         the previous shape changes.
204         Fixes 653 and some unit tests.
206 2009-11-13  Jeffrey Stedfast  <fejj@novell.com>
208         * mediaelement.cpp (Pause): Seems that playlist can actually be
209         null here when the downloader fails, so properly handle null
210         situations instead of asserting.
212 2009-11-13  Jeffrey Stedfast  <fejj@novell.com>
214         * pipeline-ui.cpp (AcceptClicked): Don't need to strdup the
215         CODEC_URL string - just pass it as an argument to
216         Downloader::Open().
217         (ToggleEula): When toggling the EULA on, make the dialog
218         resizable. Likewise, when hiding the EULA, disable resize.
219         (Show): Make the EULA scrollview expand/fill available space so
220         that when the dialog gets resized, it expands as well.
222 2009-11-13  Larry Ewing  <lewing@novell.com>
224         * shape.cpp: rework rectangle and ellipse layout logic so that it
225         plays lightly nicer with other things. Fix stretch invalidation
226         issue.
228         Fixes MS 92 and moon 404 as well as some resizing issues visible
229         on covertocover.
231 2009-11-13  Alan McGovern  <amcgovern@novell.com>
233         * dependencyproperty.g.cpp: regen.
235         * xaml.h:
236         * xaml.cpp:
237         * control.h:
238         * template.cpp: DOs which are expanded from a ControlTemplate
239           need to keep track of the 'templateBindingSource' so that we
240           can attach new TemplateBindings later. This value is stored
241           in addition to 'IsTemplateItem' as DOs can be expanded from
242           templates which are not ControlTemplates (i.e.
243           DataTemplates). 
245 2009-11-13  Alan McGovern  <amcgovern@novell.com>
247         * control.h:
248         * control.cpp:
249         * type-generated.cpp:
250         * frameworkelement.h:
251         * frameworkelement.cpp: Move the invoking of OnApplyTemplate
252           from Control to FrameworkElement as ContentPresenter (a
253           FrameworkElement) needs to have its OnApplyTemplate method
254           invoked.
256 2009-11-13  Alan McGovern  <amcgovern@novell.com>
258         * contentcontrol.cpp: Call the correct base method in the
259           GetDefaultTemplate override. We should also be returning
260           NULL instead of false.
262 2009-11-13  Alan McGovern  <amcgovern@novell.com>
264         * runtime.cpp: When we attach a layer we need to set
265           needs_measure and needs_arrange to true otherwise we won't
266           do a layout pass until something else invalidates... if it
267           ever does.
269 2009-11-13  Alan McGovern  <amcgovern@novell.com>
271         * dependencyobject.cpp: Fix a case where a user-registered DP
272           was (incorrectly) setting the Surface if it's type was a DO.
274 2009-11-13  Alan McGovern  <amcgovern@novell.com>
276         * value.cpp: If the DO is null, don't try to clone it.
278 2009-11-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
280         * dependencyobject.cpp: Improve event handling to not create the
281         'events' field except when handlers are added. This will improve
282         memory usage slightly, and enable a few fast-paths (null checks
283         only) when there are no event handlers.
285 2009-11-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
287         * playlist.cpp: Fix compile error.
289 2009-11-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
291         * pipeline.cpp: If the PlaylistParser doesn't have enough data
292         to parse the source, retry later instead of failing.
294         * playlist.cpp|h: TryFixError: need to know the total read size
295         when we fix up characters after the first read (i.e. if the asx
296         file is bigger than the buffer size).
298         Fixes #555047.
300 2009-11-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
302         * uielement.cpp: WalkTreeForLoadedHandlers cache application
303         and deployment for the method's duration.
305 2009-11-12  Geoff Norton  <gnorton@novell.com>
307         * utils.cpp: We need to special case the case-sensitivity handling
308         of debug symbol files as well, to support the soft debugger.
310 2009-11-12  Larry Ewing  <lewing@novell.com>
312         Fix image stretching and alignment so that 641, 802, 889, and 921
313         are all doing the right thing.
314         
315         * frameworkelement.cpp (Arrange): when applying alignment rules
316         take the minimum size into account not the stretched size.
318         * media.cpp (Render): rework the rendering logic to match the DRTS.
319         (ComputeActualSize): in the canvas case we do use the constrained
320         size not the minimum size.
322 2009-11-12  Jeffrey Stedfast  <fejj@novell.com>
324         * media.cpp (Image::OnPropertyChanged): Only report errors if we
325         are being parsed by the xaml parser.
327         * pipeline.cpp (Initialize): If GetResource() fails, report
328         MediaFailed.
330         * mediaelement.cpp (SetUriSource): Set a new bitflag,
331         Initializing, before initializing the playlist so that if it
332         errors out we can properly emit MediaFailed events. Unset the flag
333         when we're done.
334         (SetDemuxerSource): Same.
335         (SetStreamSource): Here too.
336         (SetSource): And here.
337         (OpeningHandler): Unset the Initializing flag.
338         (MediaErrorHandler): If we are initializing, emit MediaFailed even
339         if the state is Closed.
341         * glyphs.cpp (OnPropertyChanged): Only set MoonError and emit
342         ParserErrors when we are in the xaml parser.
344         * bitmapimage.cpp (UriSourceChanged): If GetResource() fails, call
345         DownloaderFailed() which will do proper cleanup and emit
346         ImageFailed events.
347         (OnPropertyChanged): Only set MoonError for Uri source changes if
348         we are in the xaml parser.
350         * uri.h (IsInvalidPath): Fixed to also return true for "\fu".
351         (IsUncPath): Now returns true as long as the first character is
352         "\", it no lonegr requires "\\".
354         * application.cpp (GetResource): Now returns bool so that it can
355         return false if there was an error.
357         * xaml.cpp (start_element): Set IsBeingParsed() on DO's to true.
358         (end_element_handler): And set it back to false here.
360         * dependencyobject.h: Added IsBeingParsed state so that objects
361         can check it when their property values change to see if they need
362         to do special processing. Kind of a gross hack but it is needed in
363         order to avoid emitting exceptions for Uri property changes in
364         various elements when an invalid uri is set normally (whereas they
365         need to emit errors when being parsed from xaml).
367 2009-11-12  Andreia Gaita  <avidigal@novell.com>
369         * deployment.cpp: don't unref the application after creating it,
370         it gets unreffed when SetCurrentApplication is called with a new
371         one or when deployment shuts down.
373 2009-11-11  Chris Toshok  <toshok@ximian.com>
375         * utils.h,cpp (managed_unzip_stream_to_stream_first_file): new
376         method, basically the same as managed_unzip_stream_to_stream, only
377         it always unzips the first file in the zip.
379         * deployment.h (class ExtensionPart): superclass is ExternalPart,
380         not DependencyObject.
382 2009-11-11  Chris Toshok  <toshok@ximian.com>
384         * timeline.cpp (DispatcherTimer::Stop): DispatcherTimer.Stop is
385         available in managed-land and is callable more than once
386         apparently (silverlight.net is doing it).  we need to not crash in
387         this case, so only try to stop the clock if it's not null.
389         r: lewing
391 2009-11-11  Larry Ewing  <lewing@novell.com>
393         Fix hit testing (via InsideLayoutClip) on layout clipped elements
394         where the parent may not have a clip.
396         * layoutinformation.cpp (GetClip): fix the composite offset
397         calculation.
399         * frameworkelement.cpp (FindElementsInHostCoordinates): use the
400         current visibility when hittesting.
402         * uielement.cpp (PostRender): render the layout clip when
403         rendering clipping in debug mode.
405 2009-11-11  Larry Ewing  <lewing@novell.com>
407         * grid.cpp (ArrangeOverride): remove the visibility checks from
408         grid they are handled in the layout logic.
410 2009-11-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
412         * dependencyproperty.cpp|h: Add GetDependencyProperty overloads which
413         take a Type instance to avoid calling Deployment::GetCurrent as much.
414         Update according to Type/Value API changes.
416         * panel.cpp:
417         * border.cpp:
418         * runtime.cpp:
419         * provider.cpp:
420         * animation.cpp:
421         * resources.cpp:
422         * collection.cpp:
423         * validators.cpp:
424         * usercontrol.cpp:
425         * contentcontrol.cpp:
426         * dependencyobject.cpp: Update according to Type/Value API changes.
428         * type.cpp|h|in: Remove all the static convenience methods that were
429         accessing Deployment::GetCurrent, and add a deployment field to the
430         Type instance so that we can keep the instance methods at least.
432         * value.cpp|h|in: Make the Is method take a deployment parameter.
434         * xaml.cpp|h: Store a deployment instance on the XamlParserInfo so that
435         we don't have to use Deployment::GetCurrent that much. Updated
436         according to Type API changes.
438         * type-generated.cpp: Regenerated.
440 2009-11-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
442         * value.h: Don't include cairo.h nor string.h.
444         * bitmapsource.h:
445         * writeablebitmap.h: Include cairo.h.
446         * file-downloader.cpp: Include string.h.
448 2009-11-11  Larry Ewing  <lewing@novell.com>
450         * frameworkelement.cpp: In measure make sure we track the last
451         size we were measured at even if we are collapsed.
452         In Arrange don't descend into the tree if we are not visible but
453         track the last slot.
455 2009-11-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
457         * value.h: Don't include cairo.h nor string.h.
459         * bitmapsource.h:
460         * writeablebitmap.h: Include cairo.h.
461         * file-downloader.cpp: Include string.h.
463 2009-11-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
465         * dependencyobject.cpp|h: Inline GetDeployment when SANITY isn't
466         defined.
468 2009-11-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
470         * dependencyobject.cpp: DependencyObject::Dispose (): we need to clear out
471         the parent, we might still be alive after our parent has died, so don't
472         crash if somebody does an upward tree walk in that case.
474 2009-11-11  Alan McGovern  <amcgovern@novell.com>
476         * frameworkelement.cpp: If a template is applied when
477           FE::Measure is called, Surface::needs_measure will be set to
478           true even though the FE will not have a dirty measure when
479           the function completes. This can result in us having an
480           empty measure_list with Surface::needs_measure still set to
481           true, thus preventing us from arranging any elements and
482           hitting the 250 max passes. r: lewing
484 2009-11-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
486         * value.h|in: Make checked_get_subclass and checked_get_exact only
487         check in SANITY or DEBUG builds.
489         * type.cpp|h|in: Only define IsSubclassOrSuperclassOf in SANITY or
490         DEBUG builds.
492 2009-11-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
494         * type.cpp|h|in: Remove unused method.
496 2009-11-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
498         * layoutinformation.cpp: Fix a g++ warning.
500 2009-11-11  Larry Ewing  <lewing@novell.com>
502         * uielement.cpp (DoArrange): if we haven't been arranged yet but
503         we have a parent be sure to invalidate the parent before exiting.
505         * frameworkelement.cpp: set the layout slot before calling
506         arrange.
508         Fixes DRT 423
510         r: alan
511         
512 2009-11-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
514         * fontmanager.cpp|h: Cache system fonts.
516         r: jeff
518 2009-11-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
520         * deployment.cpp|h:
521         * list.cpp|h: Inline a few methods which are used very often.
523 2009-11-10  Larry Ewing  <lewing@novell.com>
525         * frameworkelement.cpp:
526         * frameworkelement.h:
527         * uielement.cpp: Rework hit testing to use InsideObject so that we
528         don't have to guess at fill and stroke values when doing testing.
529         Consider the global clip on short circuiting and the layout clip
530         on the element.
532         * textblock.cpp:
533         * textblock.h: Implement the rules for textblock hitting.
535         * border.cpp:
536         * glyphs.cpp:
537         * glyphs.h:
538         * layoutinformation.cpp:
539         * media.cpp:
540         * media.h:
541         * shape.cpp:  Rework to use the new clip helper methods.
543         r: spouliot
544         
545 2009-11-10  Jackson Harper  <jackson@ximian.com>
547         * resources.cpp: Hack that allows us to add the same item to
548         multiple resource dictionaries.
550         r: rolf
552 2009-11-10  Larry Ewing  <lewing@novell.com>
554         * bitmapimage.cpp:
555         * bitmapsource.cpp:
556         * brush.cpp: Get overly aggressive about invalidations.
558         * uielement.cpp:
559         * uielement.h:
560         * frameworkelement.cpp: rework the values we store for
561         layout. Keep track of the raw results of measure and feed them
562         back into the arrange along with the public desired size.  Allow
563         Actual* to be completely computed for elements that operate that
564         way.  Walk up the tree when rendering LayoutClip Make canvas
565         slightly less special.
567         * textblock.cpp:
568         * textblock.h: Make Actual* a computed value.  Rework the
569         results.
571         * border.cpp:
572         * canvas.cpp:
573         * dirty.cpp:
574         * grid.cpp:
575         * layout.cpp:
576         * media.cpp:
577         * media.h:
578         * mediaelement.cpp:
579         * panel.cpp:
580         * shape.cpp:
581         * textbox.cpp:
582         * usercontrol.cpp: rework the layout output now that we are
583         storing our hidden desires.
585         * runtime.cpp: disable ftb for now.  Use image surface by
586         default.
588         r: jackson
590 2009-11-10  Alan McGovern  <amcgovern@novell.com>
592         * grid.h:
593         * grid.cpp: Revert the grid changes in r145839 as they
594           interact badly with upcoming layout fixes. r: lewing
596 2009-11-10  Alan McGovern  <amcgovern@novell.com>
598         * grid.h:
599         * grid.cpp: When expanding in MeasureOverride, do not use the
600           value of [Horizontal|Vertical]Aligment. This fixes a case
601           where we would expand and consume too much space. r: lewing
603 2009-11-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
605         * window.h:
606         * window-gtk.h|cpp: Add a surface ctor parameter.
608         * runtime.cpp: Pass the surface as a parameter to the ctor instead of
609         setting it afterwards, since the window ctor will end up needing the
610         surface.
612         * cbinding.h|cpp: Regenerated.
614         r: sde
616 2009-11-09  Andreia Gaita  <avidigal@novell.com>
618         * dependencyproperty.cpp: if the unresolved Target name is not found
619         (i.e., is managed-only, like "(ButtonBase.ClickMode)"), use the type
620         of the current object instead. Fixes bug #543072
622         r: spouliot
624 2009-11-09  Chris Toshok  <toshok@ximian.com>
626         * uielement.h (class UIElement): add CacheMode property.
628         * Makefile.am (libmoon_la_SOURCES): add bitmapcache.cpp
629         (libmoon_include_headers): add bitmapcache.h
631         r: spouliot
633 2009-11-09  Chris Toshok  <toshok@ximian.com>
635         * runtime.h|.cpp (Surface::Attach): add the loaded handler before
636         calling AttachLayer, as the latter does the tree walk copying the
637         event handlers.  Fixes DRT #163.
638         (globally): fix code/comments to not refer to the toplevel element
639         as "canvas" anymore.
641         r: lewing
643 2009-11-09  Chris Toshok  <toshok@ximian.com>
645         * uielement.h (class UIElement): mark the Key a MouseLeftButton
646         events as GenerateManagedEventField=true.
648         r: rolf
650 2009-11-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
652         * xaml.cpp:
653         * grid.cpp:
654         * glyphs.cpp:
655         * textbox.cpp:
656         * runtime.cpp:
657         * deployment.cpp:
658         * frameworkelement.cpp:
659         * deepzoomimagetilesource.cpp: Fix compiler warnings.
661         r: alan
663 2009-11-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
665         * dependencyobject.cpp: Initialize variables to null to silence compiler
666         warnings in release builds.
668         r: toshok
670 2009-11-08  Chris Toshok  <toshok@ximian.com>
672         * deployment.h|cpp: stub out some OutOfBrowser classes.
674         r: lewing
676 2009-11-08  Chris Toshok  <toshok@ximian.com>
678         * effect.h|cpp: stub out SL3 effects classes.
680         r: kangaroo
682 2009-11-08  Larry Ewing  <lewing@novell.com>
684         * incomplete-support.xaml: make things a little prettier by adding
685         margins and max width.
687 2009-11-08  Chris Toshok  <toshok@ximian.com>
689         * Makefile.am (runtime.lo): be explicit about dependencies on
690         fullscreen.h and incompletely-support.h so we won't get screwed by
691         build-time dependencies.
693         r: lewing
695 2009-11-08  Chris Toshok  <toshok@ximian.com>
697         * runtime.h|cpp (Surface::Attach): if we're running > SL2, call
698         ShowIncompleteSilverlightSupportMessage.
699         (Surface::ShowIncompleteSilverlightSupportMessage): show our
700         incomplete support message.  as an optimization, hook up to
701         Completed on the storyboard to remove the layer when the
702         storyboard is finished.
703         (Surface::HideIncompleteSilverlightSupportMessage): detach the
704         layer.
705         (Surface::ShowFullScreenMessage): use the same optimization of
706         removing the layer when the storyboard completes.
708         * Makefile.am (noinst_PROGRAMS): add xaml-to-header.exe here.
709         (libmoon_include_headers): add deepzoomimagetilesource.h and
710         multiscalesubimage.h here and remove them from EXTRA_DIST.  also,
711         remove fullscreen.h entirely since we generate it at build time.
712         (EXTRA_DIST): add fullscreen.xaml and incomplete-support.xaml
713         here, as well as xaml-to-header.cs.
715         * incomplete-support.xaml: new xaml file for our incomplete
716         support ui.
718         * fullscreen.xaml: move fullscreen.xaml here.
720         * xaml-to-header.cs: move fullscreen/fullscreen.cs here and
721         massage it to make it reusable for the incomplete-support.xaml
722         file.
724         r: geoff
726 2009-11-07  Geoff Norton  <gnorton@novell.com>
728         * deployment.cpp: Support connecting to sdb when built in debug
729         mode
731 2009-11-06  Chris Toshok  <toshok@ximian.com>
733         * uielement.h|cpp (UIElement::ElementAdded): simplify this a bit
734         using WalkTreeForLoadedHandlers.
735         (UIElement::RemoveHandler): pass the removal on to the deployment
736         as well.
737         (UIElement::WalkTreeForLoadedHandlers): here there be dragons.
738         (UIElement::OnLoaded): this method does nothing but update the
739         flags now.
740         (UIElement::ClearLoaded): we also need to
741         ClearForeachGeneration (UIElement::LoadedEvent) so they'll be
742         copied again when we get added back to the tree.
744         * provider.cpp (InheritedPropertyValueProvider::PropagateInheritedProperty):
745         use Logical tree walk ordering.
747         * tabnavigationwalker.cpp (TabNavigationWalker::Sort): same.
749         * panel.cpp (Panel::OnPropertyChanged): we have to call
750         SetSubtreeObject before calling ElementAdded.
752         * frameworkelement.h|cpp (FrameworkElement::UpdateLayout): remove
753         the block of code that emits the LoadedEvent.
754         (FrameworkElement::RegisterManagedOverrides): add our loaded hook
755         parameter.
756         (FrameworkElement::OnLoaded): call our loaded hook.
758         * deployment.h|cpp (class Deployment): a whole bunch of new code
759         to handle management of a list of loaded handlers similar in
760         spirit to LayoutUpdated but much more complicated.  bleah.
762         * dependencyobject.h|cpp: a whole bunch of new apis:
763         (ForeachHandler): call a method for every handler for a given
764         event.  Optionally only iterate over handlers added since the last
765         time ForeachHandler was called.
766         (ClearForeachGeneration): clears the "last time ForeachHandler was
767         called" above.
768         (ForHandler): same as foreach, invoke the same type of handler
769         method, but only on 1 event handler.
770         (HasHandlers): returns true if the object has handlers for a
771         particular event.
772         (RemoveHandler): make these virtual because UIElement will
773         override them to remove handlers from the Deployment's loaded
774         list.
776         * control.cpp (Control::DoApplyTemplate): since we do it after
777         ElementAdded, calling WalkTreeForLoadedHandlers here causes
778         another treewalk, but we need to pass different args to it than
779         ElementAdded does.
781         * collection.h (enum VisualTreeWalkerDirection): add
782         LogicalReverse.
784         * collection.h|cpp (class DeepTreeWalker): add a
785         VisualTreeWalkerDirection to this walker as well.
787         * border.cpp (Border::OnPropertyChanged): we have to make sure to
788         call SetSubtreeObject before calling ElementAdded.
790 2009-11-06  Alan McGovern  <amcgovern@novell.com>
792         * grid.cpp: There's no need to expand star rows/cols at this
793           point as any time they would expand here, they would be
794           expanded in ArrangeOverride anyway. r: spouliot
796 2009-11-05  Jeffrey Stedfast  <fejj@novell.com>
798         * brush.cpp (ImageBrush::OnPropertyChanged): Check that the Source
799         uri is valid and the download policy will allow it.
801         * media.cpp (Image::OnPropertyChanged): Check that the Source uri
802         is valid and the download policy will allow it.
804         * mediaelement.cpp (OnPropertyChanged): Check that the Source uri
805         is valid and the download policy will allow it.
807         * glyphs.cpp (DownloadFont): Now takes a MoonError argument so
808         that (late) download policy errors (caused by a failed
809         Downloader::Open) can propogate up through callers like
810         OnPropertyChanged() or SetParent().
811         (SetParent): Moved here from from SetSurface() so that we can
812         throw an exception when ading the glyphs to the tree if the
813         FontUri is invalid.
814         (OnPropertyChanged): Set the MoonError if the uri is invalid.
816         * bitmapimage.cpp (ValidateDownloadPolicy): New method to check if
817         the uri can be downloaded.
818         (OnPropertyChanged): Check if the Source uri is invalid. If so,
819         set an error.
821         * downloader.cpp (ValidateDownloadPolicy): New static method to
822         check that the policy would allow downloading the content at the
823         uri. Split out from Open().
825         * uri.h (IsInvalidPath): New method to check the validity of the
826         path component of a URI.
827         (IsUncPath): New method that returns true if the path begins with \\
829         r:spouliot
831 2009-11-05  Alan McGovern  <amcgovern@novell.com>
833         * control.h:
834         * control.cpp:
835         * application.h:
836         * application.cpp:
837         * contentcontrol.h:
838         * frameworkelement.h:
839         * contentcontrol.cpp:
840         * frameworkelement.cpp: Templates must be expanded as part of
841           the first step of Measure. To support this, remove the old
842           ApplyTemplateHook managed path and refactor the
843           GetTemplateRoot managed path into a more generic
844           GetDefaultTemplate method. Whenever native code needs to get
845           a default template from managed, this is invoked to retrieve
846           it. ApplyTemplate and OnApplyTemplate have been moved to
847           FrameworkElement itself to simplify the code required to
848           support templateable framework elements (ItemsPresenter for
849           example). r: toshok
851         * cbinding.h:
852         * cbinding.cpp: regen. r: toshok
854 2009-11-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
856         * dependencyproperty.cpp: Fix an uninitialized variable problem.
858         r: alan
860 2009-11-05  Jackson Harper  <jackson@ximian.com>
862         * playlist.cpp: After we successfully fixup an error we need to
863         reset the error args otherwise the error will be raised when the
864         parsing is all done.  Fixes 96x.fm.
866         r: rolf
868 2009-11-04  Sebastien Pouliot  <sebastien@ximian.com> 
870         * list.cpp: Remove unused (even in test) code.
871         * tabnavigationwalker.cpp: Complete int/uint fix.
873         r: jackson
875 2009-11-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
877         * shape.cpp:
878         * pipeline.cpp:
879         * audio-alsa.cpp:
880         * audio-pulse.cpp:
881         * pipeline-asf.cpp:
882         * tabnavigationwalker.cpp: Fix warnings when building release builds.
884         r: spouliot
886 2009-11-04  Alan McGovern  <amcgovern@novell.com>
888         * popup.h:
889         * popup.cpp:
890         * control.h:
891         * control.cpp: 1) Disabling the ComboBox should set
892           IsDropDownOpen to false
893         2) If the dropdown is opened while the ComboBox is disabled,
894           the children of the popup are disabled.
895         3) If the dropdown is open, re-enabling the ComboBox doesn't
896           close the dropdown and also doesn't update the IsEnabled
897           state on the children.
898         r: shana
900 2009-11-03  Jackson Harper  <jackson@ximian.com>
902         * xaml.cpp: Dont force setting a property in managed if it was
903         registered by a base type.
905         r: spouliot
907 2009-10-29  Chris Toshok  <toshok@ximian.com>
909         * messagebox.cpp (message_box_show): don't use
910         gtk_message_dialog_new with user strings, since they might contain
911         reserved characters.
913         r: spouliot
915 2009-11-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
917         * pipeline.cpp: If we can't seek, reset the 'seeking' flag to false.
919         r: spouliot
921 2009-11-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
923         * deployment.cpp: Fix typo in return statement.
925         r: alan
927 2009-11-03  Alan McGovern  <amcgovern@novell.com>
929         * grid.h:
930         * grid.cpp: Rewrite Grid so that it passes the correct sizes
931           to elements spanning Star or Auto segments. Fixes
932           tic-tac-toe. r: lewing
934 2009-11-02  Alan McGovern  <amcgovern@novell.com>
936         * control.h:
937         * cbinding.h:
938         * control.cpp:
939         * frameworkelement.h:
940         * frameworkelement.cpp: Certain UIElements (Controls and
941           ContentPresenters) need to apply a template before
942           MeasureOverride is invoked. Add a callback
943           (ApplyTemplateHook) to FrameworkElement which is non-null
944           for Controls and ContentPresenters to that these templates
945           can be expanded properly. r: rolf
947         * cbinding.cpp: regen. r: rolf
949 2009-11-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
951         * pipeline.h: Remove dead code.
953         r: alan
955 2009-11-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
957         * pipeline.cpp|h: ProgressiveSource: close the write handle in the dtor
958         to avoid race conditions - media thread closing the handle and main
959         writing to it.
961         r: alan
963 2009-11-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
965         * mms-downloader.cpp: When sending logs, use NoPolicy. We've already
966         checked if we can access the server or not. Using StreamingPolicy is
967         wrong now that we create mms downloaders for those always. Also
968         add a null check.
970         r: alan
972 2009-11-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
974         * mediaelement.cpp:
975         * enums.h|cpp: Remove MediaStateError, it's not used in SL2. Whenever
976         an error occurs we go to the Closed state.
978         r: sde
980 2009-11-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
982         * mms-downloader.cpp: Accept rtsp[s] schemes too.
984         * downloader.cpp: determine mms'ness by using the policy passed in
985         instead of comparing schemes (differently in other places - the
986         pipeline considers rtsp and rtsps schemes too as streaming).
988         r: sde
990 2009-11-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
992         * pipeline-asf.cpp: When we got a packet from the mms downloader, ask
993         the demuxer to fill its buffers. This fixes some cases where the mms
994         stream never finishes buffering. Added GetDemuxerReffed.
996         r: spouliot
998 2009-10-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1000         * pipeline.cpp: Don't completely stop working when the media is
1001         stopped, the media element needs the first frame of the media, so
1002         when stopped, buffer 1 frame instead of 0. Makes MS DRT #483 pass.
1004 2009-10-29  Alan McGovern  <amcgovern@novell.com>
1006         * grid.cpp: Grid should not invalidate its measure unless
1007           either the Columns or Rows collection changes. This reverts
1008           what looks like an accidental commit by lewing in r123309.
1009           r: jeff and toshok.
1011 2009-10-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1013         * mediaelement.cpp: If we Seek when Paused, we need to update
1014         paused_position. Fixes one error in MS DRT #483.
1016         r: spouliot
1018 2009-10-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1020         * pipeline.cpp: Media::SelectDemuxerAsync: seek to 0 on the source
1021         before searching for a demuxer. Makes #546241 play all the audio it
1022         should.
1024         r: alan
1026 2009-10-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1028         * pipeline.cpp: Include signal.h.
1030         r: alan
1032 2009-10-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1034         * mediaelement.cpp: OpenCompletedHandler: only emit
1035         DownloadProgressChanged if MediaOpened hasn't been raised. This fixes
1036         MS DRT #25 (which checks that DownloadProgressChanged isn't raised
1037         after calling Stop and then Play on a media element).
1039         r: geoff
1041 2009-10-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1043         * pipeline.cpp: When we enter a new thread, ensure that we don't
1044         inherit blocked signals from the thread that created us. Fixes deadlock
1045         reported in #546241.
1047         r: jeff
1049 2009-10-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1051         * mediaplayer.cpp|h: Instead of keeping a flag telling whether we're
1052         seeking or not, keep a counter, since we may end up with multiple
1053         pending seeks, and we only want to restart playback when the last seek
1054         finishes. Also call MediaElement's seek method so that we do everything
1055         we must do when a seek happens. Fixes our media test #153.
1056         
1057         * mediaelement.cpp|h: Add a force parameter to Seek to force seeking no
1058         matter which state we're in. Used by MediaPlayer to seek when we open
1059         a media.
1060         
1061         * pipeline.cpp|h: Don't start filling the buffers when a media is opened,
1062         the first thing we do after opening a media is seeking, which would
1063         invalidate whatever buffer we create. When the first seek has finished,
1064         it will request a buffer fill. Also remove the optimization that was
1065         joining multiple seeks into one (the last one), since there was no way
1066         MediaPlayer could know which seek finished when the SeekCompleted event
1067         was raised.     We now do all seeks, in the correct order.
1068         
1069         * playlist.cpp|h: Remove the same optimization here, have a list of pending
1070         seeks and execute them in order.
1072         r: spouliot
1074 2009-10-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1076         * pipeline.cpp: Add a workaround for having invalid codecs in the 
1077         expected codec location - with this workaround the user will get
1078         a new codec download dialog.
1080         r: sde
1082 2009-10-26  Sebastien Pouliot  <sebastien@ximian.com>
1084         * deployment.cpp: Match SL appdomain friendly name
1086         r: sde
1088 2009-10-23  Chris Toshok  <toshok@ximian.com>
1090         * runtime.cpp (Surface::IsVersionSupported): report that we
1091         support versions 3.0.x, because the alternative is not even
1092         attempting to execute many xaps.
1094         r: lewing
1096 2009-10-23  Chris Toshok  <toshok@ximian.com>
1098         * frameworkelement.cpp (FrameworkElement::UpdateLayout): call
1099         Deployment::GetCurrent()->LayoutUpdated() instead of walking an
1100         updated_list.
1102         * frameworkelement.h (class FrameworkElement): remove
1103         LayoutUpdatedEvent.
1105         * deployment.h,cpp (Deployment::LayoutUpdated): move the
1106         FrameworkElement event here, since any layout updating causes
1107         every LayoutUpdated handler to be called, even for those elements
1108         not in the tree.
1110         * type-generated.cpp: regen
1112         r: lewing
1114 2009-10-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1116         * pipeline.h: IMediaDemuxer: add a GetCanSeek method specifying whether
1117         a demuxer can seek or not. ExternalDemuxer (aka MediaStreamSource) can
1118         specify false for this (which won't prevent SL from trying to seek on
1119         the MediaStreamSource though). Implement ExternalDemuxer::SetCanSeek.
1121         * mediaelement.cpp: If the demuxer can't seek, set CanSeek = false.
1123         r: sde
1125 2009-10-23  Stephane Delcroix  <sdelcroix@novell.com>
1127         * uri.cpp (flatten_path): keep track of ../ parts if there's no
1128         previous part to drop, or if the previous part is ../ too.
1130         r: toshok
1132 2009-10-23  Stephane Delcroix  <sdelcroix@novell.com>
1134         * deepzoomimagetilesource..h|cpp: the strip_and_set hack is no longer
1135         required with jeff's latest patch
1137         r: rolf
1139 2009-10-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1141         * pipeline-ui.cpp: ShowUI: We need to set the current deployment here.
1143         r: sde
1145 2009-10-22  Jeffrey Stedfast  <fejj@novell.com>
1147         * uri.cpp (flatten_path): New helper function to flatten a path
1148         (e.g. get rid of extra /'s, ./'s, and handle ../'s).
1149         (Parse): If the Uri is absolute, flatten the path.
1150         (Combine): Simplified by just concatenating the old path, the
1151         relative_path, and then calling flatten_path(). Also, thanks to
1152         Stephane's investigations, fixed the fact that a relative_path
1153         starting with '/' does not combine at the root like previously
1154         thought.
1156         r:sde
1158 2009-10-22  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1160         * dependencyobject.cpp|h: CanEmitEvents: add an event_id argument, so
1161         that we can allow DestroyedEvent during shutdown. This fixes a crash
1162         with namescopes - they rely on DestroyedEVent to properly detach from
1163         objects.
1165         r: alan
1167 2009-10-21  Stephane Delcroix  <sdelcroix@novell.com>
1169         * uri.cpp: url_encode the whitespaces too,
1171         r: jeff
1173 2009-10-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1175         * pipeline-ui.cpp: Include stdlib.h to fix release builds.
1177         r: alan
1179 2009-10-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1181         * pipeline.cpp: GetMediaReffed might return null, add some null checks
1182         for this.
1184         r: toshok
1186 2009-10-20  Andreia Gaita  <avidigal@novell.com>
1188         * timemanager.[h|cpp]: (AddDispatcherCall) used by Dispatcher to add tick
1189         calls. If it's called while we're in the emitting loop, save the new
1190         ones on another list so they'll get invoked on the next tick. All other
1191         tick calls added via AddTickCall get invoked asap.
1193         * list.[h|cpp]: change CloneAndClear to MoveTo, it now moves the queue
1194         nodes to an existing queue instead of creating a new one
1196         * cbinding.[h|cpp]: regen
1198         r: rolf
1200 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1202         * pipeline.cpp: IMediaDemuxer::ReportGetFrameCompleted: Only clear the
1203         pending_stream field if we're stopped or if we processed the returned
1204         frame. Specifically do not clear the pending_stream field if we're
1205         not executing on a media thread (since when the method is called again on
1206         the media thread we might end up dropping the frame) - and it's a race
1207         condition that may cause crashes.
1209         r: spouliot
1210         
1211 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1213         * runtime.cpp|h: Add a DetachWindow which detaches the surface from
1214         the window and prevents the window from getting destroyed when the
1215         surface is destroyed. Also add a few protections against having a
1216         null window, which we may get when the window has been detached.
1218         r: spouliot
1220 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1222         * type.h:
1223         * type.cpp
1224         * type.h.in: Added a LookupEvent method that takes a deployment
1225         parameter so that it doesn't try to use Deployment::GetCurrent. This
1226         is required when we need to lookup events for deployments which are
1227         not the current one (when re-creating a PluginInstance since its
1228         source has changed for instance).
1230         r: spouliot
1232 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1234         * window-gtk.cpp:
1235         * window.cpp|h: Detach the window from the deployment by not storing it,
1236         use Surface' deployment instead. Also add a convenience SetCurrentDeployment
1237         method.
1239         * value.cpp:
1240         * textblock.cpp:
1241         * provider.cpp:
1242         * popup.cpp:
1243         * glyphs.cpp:
1244         * downloader.cpp:
1245         * control.cpp:
1246         * canvas.cpp:
1247         * audio.cpp: 
1248         * dependencyproperty.cpp: Include deployment.h, required now that
1249         window.h doesn't include it.
1251         * src.mdp:
1252         * Makefile.am: Updated with window.cpp.
1254         r: spouliot
1256 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1258         * deployment.cpp|h: Moved all managed code handling from PluginInstance
1259         here.
1261         r: spouliot
1263 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1265         * codec-version.h.in: Bump ABI to 16.
1267 2009-10-19  Andreia Gaita  <avidigal@novell.com>
1269         * list.[h|cpp]: (Queue::CloneAndClear) Added, clones the queue while
1270         clearing the original
1272         * timemanager.cpp: Make a copy of the queued tick calls and use that
1273         instead of the live queue. Callbacks may insert new calls into the
1274         queue, and those should be invoked on the next tick, not on the
1275         current one. Fixes drt #244
1277         r: rolf
1279 2009-10-19  Andreia Gaita  <avidigal@novell.com>
1281         * timemanager.cpp: fix START_TIMER define and add timing logs on tick calls
1283         r: rolf
1285 2009-10-15  Alan McGovern  <amcgovern@novell.com>
1287         * grid.cpp: Add comment explaining why the InvalidateMeasure
1288           call is there.
1290 2009-10-15  Alan McGovern  <amcgovern@novell.com>
1292         * grid.cpp: Changing a Grid property (Row, RowSpan etc) on a
1293           UIElement invalidates its measure. r: lewing.
1295 2009-10-15  Stephane Delcroix  <sdelcroix@novell.com>
1297         * multiscaleimage.cpp: send the RoutedException on ImageOpenFailed.
1298         Errorcode and (empty) message are matching SL behavior. Fixes drt #874.
1300         r: rolf
1302 2009-10-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1304         * type.h:
1305         * value.h:
1306         * cbinding.h:
1307         * type-generated.cpp: Regenerated.
1309         r: sde
1311 2009-10-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1313         * pipeline.cpp: A printf sneaked in.
1315         r: sde
1317 2009-10-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1319         * uri.cpp:
1320         * mp3.cpp:
1321         * runtime.h:
1322         * clock.cpp:
1323         * audio.cpp:
1324         * fonts.cpp:
1325         * timeline.cpp:
1326         * playlist.cpp:
1327         * pipeline.cpp:
1328         * downloader.cpp:
1329         * audio-alsa.cpp:
1330         * audio-pulse.cpp:
1331         * mediaplayer.cpp:
1332         * timemanager.cpp:
1333         * pipeline-asf.cpp:
1334         * mediaelement.cpp:
1335         * mms-downloader.cpp: Fix 64 bit printf format specifier on x64.
1337         r: andreia
1339 2009-10-14  Andreia Gaita  <avidigal@novell.com>
1341         * timeline.[h|cpp]: destroy dispatcher timer clocks immediately if
1342         they're stopped and not restarted on the same tick
1344         r: toshok
1346 2009-10-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1348         * mp3.cpp:
1349         * pipeline-asf.cpp: Updated according to API changes.
1351         * pipeline.cpp|h: Media::Dispose: Check if we've been disposed and
1352         do nothing in that case. This way we don't hit the warning just below
1353         about not being in the media thread.
1354         
1355         MediaThreadPool::IsThreadPoolThread: Return the value we calculated, 
1356         not a hardcoded 'true' value.
1357         
1358         Make the demuxer serialized: Don't seek if we're waiting for a frame (wait
1359         until the frame has been returned). Also don't request a frame if we're
1360         seeking (just do nothing, when the seek completes new frames will be
1361         requested).
1362         
1363         Change seeking to store the last seeked-to pts in the demuxer
1364         when marshalling seeks from the main thread to the media thread. This
1365         ensures that if two seeks are enqueued quickly, we won't seek twice, only
1366         to the last (there is also another potential issue: if the first seek
1367         couldn't complete because we were waiting for a frame, we could end up
1368         seeking in the wrong order).
1369         
1370         * deployment.cpp: Delete the local variable, not the instance field
1371         we just nulled out.
1373         r: spouliot
1375 2009-10-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1377         * pipeline.cpp: ProgressiveSource::DataWrite: write_fd might be null
1378         if we've been disposed, don't print a warning in this case. Also don't
1379         get the media until we've passed the write_fd check - this way we don't
1380         leak refs if the check fails.
1382         r: spouliot
1384 2009-10-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1386         * pipeline.cpp: Remove more output which can happen during normal
1387         executing (shutdown in particular for these cases).
1389         r: spouliot
1391 2009-10-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1393         * pipeline.cpp: Media::RetryHttp: don't dispose media objects in this
1394         method directly, it's called on the main thread, instead marshal the
1395         Dispose to the media thread. Also reset error_reported, otherwise
1396         Initialize will just bail out immediately.
1398         r: spouliot
1400 2009-10-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1402         * pipeline.cpp: Download progress can actually go down (if the file
1403         size goes down). So don't print a scary warning.
1405         r: spouliot
1407 2009-10-13  Jeffrey Stedfast  <fejj@novell.com>
1409         * textbox.cpp (TextBoxView::Layout): Set dirty to false after
1410         laying out the text.
1411         (TextBoxView::Render): Don't do Layout here.
1413         r: lewing
1415 2009-10-09  Chris Toshok  <toshok@ximian.com>
1417         * control.cpp (Control::OnPropertyChanged): drt #438 shows that
1418         you can set Template = null to clear the template's visual tree.
1419         bizarre, but true.
1420         (Control::ClearTemplate): set template_root to NULL after we
1421         remove it.
1423         r: jackson
1425 2009-10-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1427         * mediaelement.cpp: MediaElement::SetUriSource: Remove scary warning
1428         which may happen quite often and in common code paths.
1430         r: alan
1432 2009-10-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1434         * dependencyobject.cpp: DependencyObject::ProviderValueChanged: After
1435         invoking the property changed handler the values we have might have
1436         gotten deleted. Clone them before calling the property changed handler
1437         so that we don't access deleted values. Makes #544211 not crash.
1439         r: alan
1441 2009-10-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1443         * dependencyobject.cpp: Emit overloads: ensure we unref the calldata
1444         when returning early.
1446         r: alan
1448 2009-10-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1450         * mediaelement.h: Make SourceProperty nullable. Fixes #537849.
1452         * dependencyproperty.g.cpp: Regenerated.
1454         r: alan
1456 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1458         * pipeline-ui.cpp: Add checks against a null downloader, fixes #468491.
1460         r: spouliot
1462 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1464         * audio.cpp: AudioSource::Dispose: lock around field accesses,
1465         and move the fields into a local variables so we can clean up
1466         with the mutex unlocked.
1468         r: spouliot
1470 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1472         * audio.cpp: AudioSource::IsQueueEmpty: it's pretty common to
1473         end up with a null stream, so don't spam the console with warnings.
1475         r: spouliot
1477 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1479         * mediaplayer.cpp: Open: seek to the initial pts.
1481         * playlist.cpp: When we re-open a media after stopping it, don't do
1482         it async since we might end up doing things in the wrong order.
1484         Fixes #476180.
1486         r: spouliot
1488 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1490         * deployment.cpp|h: Make shutdown an async/iterative process to ensure
1491         we don't accidentally get deadlocked while shutting down. Change shutdown
1492         sequence to first ensure no media threads are running, then do managed
1493         shutdown unloading the appdomain, and do nothing more until the appdomain
1494         has unloaded successfully (calling mono_domain_finalize which we used to is
1495         very wrong since it assumes all managed threads have been aborted, when only
1496         mono_domain_unload actually aborts threads - we ended up executing code in
1497         other managed threads with freed objects everywhere). Added an
1498         AppDomainUnloadedEvent so that the plugin can know when the appdomain has
1499         been unloaded and free itself. Dispose the types when the deployment is
1500         disposed, and delete them types when the deployment is destroyed. This way we
1501         make sure that the types are available until all the objects have been
1502         deleted. This also fixes different code paths / deletion points
1503         depending on whether we built with object tracking or not. This also
1504         removes the need for the is_dead variable. Maintain a counter of the number of
1505         deployments alive so that we know when runtime can be shut down.
1507         * dependencyobject.cpp: Don't emit events while we're shutting down.
1508         Deployment::is_dead is dead now, remove checks, replaced with Deployment::
1509         IsShuttingDown wherever applicable. Only emit DestroyedEvent on the main
1510         thread.
1512         * dependencyproperty.cpp|h: Add a Dispose method which clears out any
1513         refs the default value might have (but keep a default value, we depend
1514         in some places on having a default value).
1516         * type.cpp: Dispose: call Dispose on the DP.
1518         * type.h:
1519         * type.h.in: Remove 'disposed' field: no longer needed.
1521         r: andreia
1523 2009-10-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1525         * pipeline.cpp|h: Media::Stop[Async]: when called clear all buffers.
1526         This ensures that we don't keep the (default) 5s buffer of media in
1527         memory while stopped. Add lots of checks for a stopped media so that
1528         we don't refill the buffer after clearing it.
1529         Makes MS DRT #238, #239 and #244 require a lot less memory.
1531         * playlist.cpp: Call Play on the media too when we start playing.
1533 2009-10-05  Jeffrey Stedfast  <fejj@novell.com>
1535         * runtime.cpp (HandleUIKeyPress): Silverlight 2.0 does not
1536         silently drop repeated key-press events.
1538         r: spuliot
1540 2009-10-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1542         * pipeline.cpp: MediaFrames can be deleted on any thread. Fixes an
1543         issue where we'd create more MediaFrames than the delayed unref
1544         mechanism could free, so we'd run out of memory.
1546         r: spouliot
1548 2009-10-05  Alan McGovern  <amcgovern@novell.com>
1550         * cbinding.h:
1551         * cbinding.cpp:
1552         * dependencyobject.h:
1553         * dependencyobject.cpp: Store the starting_generation and
1554           only_unemitted flags on the EmitContext so that the values
1555           are used when we call DoEmitCurrentContext from managed
1556           code. r: toshok
1558 2009-10-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1560         * pipeline.cpp|h: IMediaDemuxer::FillBuffers, don't enqueue a request
1561         if we there is already a request pending.
1563         r: spouliot
1565 2009-10-01  Jeffrey Stedfast  <fejj@novell.com>
1567         Gets drt #412 a bit closer to passing.
1569         * textblock.cpp (TextBlock): Initialize our own FontDescription
1570         needed so we can tell the layout engine what the base font to use
1571         for calculating BlockLineHeight proportions.
1572         (TextBlock): Delete our FontDescription.
1573         (UpdateFontDescription): New method to update our own
1574         FontDescription and notify the layout engine of any changes.
1575         (UpdateLayoutAttributes): Call UpdateFontDescription().
1576         (UpdateFontDescriptions): Same.
1578         * layout.cpp (TextLayout::SetBaseFont): Calculate the proportional
1579         distance to the baseline given the base font.
1580         (TextLayout::OverrideLineHeight): Don't check line_height against
1581         NAN, check it against 0 instead. NAN means that we use the
1582         containing TextBlock's font height as a base.
1583         (TextLayout::LineHeightOverride): New method to figure out the
1584         line height value to use when using BlockLineHeight strategy.
1585         (TextLayout::DescendOverride): Given the overridden LineHeight,
1586         calculate the baseline offset using the proportional distance
1587         calculated in SetBaseFont().
1588         (TextLayout::Layout): Instead of using 0 as the overridden line
1589         descent, use the value calculated from DescendOverride(). Also use
1590         LineHeightOverride() instead of line_height directly.
1592         r: spouliot
1594 2009-10-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1596         * pipeline-asf.cpp: MmsPlaylistEntry: clear the queue when we're
1597         disposed, that ensures that the queue is cleared up even if the
1598         MmsPlaylistEntry itself leaks.
1600         r: spouliot
1602 2009-10-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1604         * pipeline-asf.cpp: Fix some potential leaks.
1606         r: spouliot
1608 2009-10-01  Jeffrey Stedfast  <fejj@novell.com>
1610         * fonts.h (class TextFont): Make some of the getters const.
1612         r: shana
1614 2009-10-01  Andreia Gaita  <avidigal@novell.com>
1616         * utils.cpp: if there's no Application instance, use the root temp
1617         dir to store, and track the created path directly on deployment so
1618         it can be cleared up in the end.
1620         r: spouliot
1622 2009-10-01  Alan McGovern  <amcgovern@novell.com>
1624         * runtime.cpp: WalkTreeForLoaded has already been called on
1625           this element as part of the previous call to AttachLayer.
1627 2009-10-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1629         * dependencyobject.h: Make GetUnsafeDeployment available always, media
1630         code might use it to get the deployment of the object instead of the
1631         current deployment.
1633         * pipeline.cpp|h: Added WaitForCompletion to MediaThreadPool: allows a
1634         deployment instance to wait until there is nothing more executing in 
1635         the thread pool regarding that deployment.
1637         * deployment.cpp|h: Maintain a list of all the Media instances created
1638         and dispose them when the deployment shuts down.
1640         r: spouliot
1642 2009-10-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1644         * dependencyobject.cpp|h: EventObject::CanEmitEvents: added to avoid
1645         some code duplication in all our Emit methods.
1647         r: alan
1649 2009-10-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1651         * audio.cpp: Dispose: make sure the audio really stops.
1653         r: alan
1655 2009-10-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1657         * pipeline.cpp|h: ExternalDemuxer: Make writes to the callbacks
1658         thread-safe, since managed code may clear them up on the finalizer
1659         thread.
1661         * cbinding.cpp|h: Regenerated.
1663         r: alan
1665 2009-09-30  Alan McGovern  <amcgovern@novell.com>
1667         * runtime.cpp: If the surface has been zombified, don't handle
1668           the plugin focus in/out event. r: toshok
1670 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1672         * pipeline.cpp: IMediaDecoder::ReportDecodeFrameCompleted: add some
1673         null checks.
1675 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1677         * pipeline.cpp: IMediaDemuxer::ReportGetFrameCompleted: always do the
1678         decoding async. This ensures we don't reenter managed code when the
1679         frame comes from MediaStreamSource.
1681         r: spouliot
1683 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1685         * pipeline.cpp|h: MediaThreadPool: Don't use a globally allocated list
1686         for the queue, it may blow up when the process shuts down because the
1687         media thread might still be running when the list is destroyed causing
1688         random crashes.
1690         r: spouliot
1692 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1694         * pipeline.cpp|h: MediaThreadPool: Add a max_threads const variable
1695         specifying the max number of threads, and use static memory for all of
1696         them.
1698         r: spouliot
1700 2009-09-30  Andreia Gaita  <avidigal@novell.com>
1702         * deployment.[h|cpp]: Added TrackPath/UntrackPath to track temporary
1703         paths that get created in applications, so they can be released even
1704         if the Application instance leaks.
1706         * application.[h|cpp]: Added GetResourceRoot, returns resource_root,
1707         which keeps the base temp path of all files and resources for an
1708         application.
1710         * utils.cpp: use the Application GetResourceRoot as a base path for
1711         all temporary files.
1713         r: alan
1715 2009-09-30  Alan McGovern  <amcgovern@novell.com>
1717         * runtime.cpp: When the plugin gets focus or loses focus, we
1718           have to emit the corresponding event on the currently
1719           focused element - not on the TopLevel. Note that if we focus
1720           out of the plugin, we emit LostFocus on the currently
1721           focused element but do *not* set the current focused element
1722           to null. Lastly when handling the mouse down event, we
1723           should not try to focus elements in the hitlist from the
1724           mouse click. This mostly fixes DRT 745. r: rolf
1726 2009-09-30  Alan McGovern  <amcgovern@novell.com>
1728         * textbox.h:
1729         * validators.h:
1730         * validators.cpp: IsInputMethodEnabled defaults to true and
1731           also needs a validator to ensure that it's only set on 
1733         * dependencyproperty.g.cpp: IsInputMethodEnabled defaults to
1734           true and also needs a validator to ensure that it's only set
1735           on TextBoxes
1737 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1739         * pipeline.cpp: Reset more state when a seek completes.
1741         r: alan
1743 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1745         * pipeline.cpp: Media::EnqueueWork: we need to lock around the entire
1746         call to MediaThreadPool::AddWork, since otherwise we have a race
1747         condition between setting the is_disposed variable to true and adding
1748         the work.
1750         r: alan
1752 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1754         * mediaelement.cpp: Stop immediately when the we're deattached from the
1755         visual tree.
1757         r: andreia
1759 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1761         * deployment.h: Fix typo in comment.
1763 2009-09-29  Chris Toshok  <toshok@ximian.com>
1765         * dependencyobject.cpp (EventObject::StartEmit): when we copy the
1766         list of closures to invoke, don't copy ones that are
1767         pending_removal.  This fixes the crash due to re-entering in drt
1768         502 in a way that doesn't break the existing plugin behavior.
1769         (EventObject::DoEmitCurrentContext): revert the
1770         !closure->pending_removal change that caused plugin event listener
1771         breakage in the xaml tests.
1773         r: andreia
1775 2009-09-29  Larry Ewing  <lewing@novell.com>
1777         * border.cpp (InsideObject): improve Border::InsideObject to
1778         handle the actual drawn bounds.
1780         Fixes #2022.
1782         r: jackson
1783         
1784 2009-09-29  Jeffrey Stedfast  <fejj@novell.com>
1786         * textbox.cpp (PostOnKeyDown): Renamed from OnCharacterKeyDown()
1787         to be more consistent with the managed method names. Don't set
1788         Handled to true, since anything that makes it this far should also
1789         bubble up.
1791         r:toshok
1793 2009-09-28  Andreia Gaita  <avidigal@novell.com>
1795         * application.cpp, bitmapimage.cpp,
1796           file-downloader.cpp, fontmanager.cpp,
1797           pipeline-ui.cpp, pipeline.cpp,
1798           utils.cpp: uniform usage of glib io calls
1800         r: toshok
1802 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1804         * window-gtk.cpp: gtk_window_destroy can cause reentry, so ensure we leave
1805         the current deployment as it was when returning from it.
1807         r: lewing
1808         
1809 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1811         * mediaelement.cpp|h: When receiving markers from the pipeline, store them
1812         in a general list and only move them into a TimelineCollection just before
1813         checking if they are to be emitted. This avoids locking a mutex during a
1814         potentially large time, as well as trying to emit an event on the pipeline
1815         thread (collection changed event when adding markers to the
1816         TimelineCollection).
1818         r: spouliot
1820 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1822         * audio.cpp: Follow refcounting rules with the AlsaPlayer.
1824         r: alan
1826 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1828         * audio.cpp: AudioPlayer::Shutdown: no need to unref with the mutex
1829         locked. CreateInstance: Add a couple of comments.
1831         r: alan
1833 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1835         * deployment.cpp|h: No need for the downloaders field to be a pointer
1836         when it'll always exist. Move the downloader abort code to the node's
1837         destructor, this way we ensure that the downloader is always aborted.
1838         Reinitialize: clear the downloaders list instead of creating a new one
1839         (and leaking the previous one).
1841         r: spouliot
1843 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1845         * audio.cpp|h: AudioPlayer can't derive from EventObject, since 
1846         EventObject is tied to a particular deployment, while AudioPlayer is
1847         process-wide. Implement simple refcounting in AudioPlayer to work
1848         around this and keep the old behaviour.
1850         * type.h:
1851         * value.h:
1852         * cbinding.h:
1853         * type-generated.cpp: Regenerated.
1855         r: alan, spouliot
1857 2009-09-28  Chris Toshok  <toshok@ximian.com>
1859         * frameworkelement.h|cpp (class FrameworkElement): remove the
1860         empty SetValueWithErrorImpl implementation.
1862         r: jeff
1864 2009-09-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1866         * pipeline.cpp: Make Media::OpenAsync really async. Fixes issues with
1867         MS DRT #244 (and possibly others) where we'd end up raising the
1868         MediaOpened event while still parsing xaml (the test didn't have time
1869         to attach an handler to the event before it was raised).
1871         r: spouliot
1873 2009-09-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1875         * mediaelement.cpp: Stop when we're detached. This helps with a
1876         resource "leak": if the user code just removes the mediaelement from
1877         the visual tree and forgets about it, we'd continue playing until the
1878         gc kicks in and finds out it should free the mediaelement.
1880         r: spouliout
1882 2009-09-28  Chris Toshok  <toshok@ximian.com>
1884         * dependencyobject.cpp (EventObject::DoEmitCurrentContext): don't
1885         call closure functions when the closure is pending removal.  if
1886         it's a managed delegate it will likely have already been
1887         collected.  This fixes the regression of drt #502.
1889         r: spouliot
1891 2009-09-24  Stephen Shaw  <sshaw@decriptor.com>
1893         * multiscaleimage.cpp (MultiScaleImage::GetZoomAnimationEndPoint):
1894         Method now returns a value
1896         r: lewing
1898 2009-09-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1900         * mediaelement.cpp|h: Remove unused methods.
1902         r: sde
1904 2009-09-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1906         * pipeline.cpp: Remove an unused variable (fixing a compiler warning).
1908         r: sde
1910 2009-09-23  Chris Toshok  <toshok@ximian.com>
1912         * uielement.cpp (UIElement::EmitGotFocus): this event passes
1913         RoutedEventArgs, not EventArgs.
1914         (UIElement::EmitLostFocus): same.
1916         * eventargs.h|cpp (class MouseButtonEventArgs): add this type, and
1917         make both MouseButtonEventArgs and MouseWheelEventArgs subclass
1918         from MouseEventArgs.  Move MouseEventArgs::GetButton and
1919         ::GetClickCount to MouseButtonEventArgs.
1921         * runtime.cpp (Surface::CreateArgsForEvent): for the button
1922         events, create a MouseButtonEventArgs.
1924         * textbox.h|cpp: MouseEventArgs -> MouseButtonEventArgs for all
1925         button handling methods.
1927         * value.h, type.h, type-generate.cpp, cbinding.h|cpp: regen.
1929         r: lewing
1931 2009-09-23  Chris Toshok  <toshok@ximian.com>
1933         * uielement.h (class UIElement): add event metadata.
1935         * uielement.cpp (UIElement::OnLoaded): pass RoutedEventArgs to the
1936         LoadedEvent.
1937         (UIElement::ClearLoaded): same with Unloaded.
1939         * type-generated.cpp, type.h, value.h: regen.
1941         * transform.h (class Matrix): add event metadata.
1943         * timeline.h (class TimelineGroup): add event metadata.
1945         * textbox.h (class TextBox): add event metadata.
1946         (class PasswordBox): add event metadata.
1948         * stylus.h (class StylusPoint): add event metadata.
1950         * runtime.cpp (Surface::PerformReleaseCapture): we need to clear
1951         captured/pendingReleaseCapture before emitting the event,
1952         otherwise we could get into an infinite loop between handler and
1953         ReleaseMouseCapture.
1954         (Surface::EmitEventOnList): remove the ctx arg to DoEmit.
1956         * namescope.h (class NameScope): add event metadata.
1958         * multiscaleimage.h (class MultiScaleImage): add event metadata.
1960         * mediaelement.h (class MediaElement): add event metadata.
1962         * media.h (class MediaBase): add event metadata.
1964         * frameworkelement.h (class FrameworkElement): add event metadata.
1966         * deployment.h (class Deployment): add event metadata.
1968         * dependencyproperty.h: remove PropertyChangedEventArgs from here.
1970         * eventargs.h: and put it here.
1972         * dependencyproperty.h|cpp: replace the emitting count with a
1973         stack of EmitContexts.  This is since the managed layer calls a
1974         function to actually perform the emit, and the managed code
1975         doesn't have access to the context.
1976         (AddOnEventHandler,RemoveOnEventHandler): new methods so that we
1977         can replace the normal emit machinery with a delegate into managed
1978         that calls the OnEvent method.
1979         (StartEmit): push the new context onto the stack
1980         (DoEmit): if there's an on_event handler, call that and let it do
1981         the work.  otherwise call DoEmitCurrentContext.
1982         (DoEmitCurrentContext): move the actual invoking of event closures
1983         here.
1984         (FinishEmit): pop the context off the stack.
1985         (DependencyObject::ProviderValueChanged): we have to allocate
1986         PropertyChangedEventArgs on the heap now that it's refcounted.
1987         (DependencyObject::NotifyListenersOfPropertyChange): same.
1988         (DependencyObject::collection_item_changed): same.
1989         
1990         * control.h (class Control): add event metadata.
1992         * control.cpp (Control::OnPropertyChanged): when emitting
1993         IsEnabledChangedEvent, and pass the PropertyChangedEventArgs.
1995         * collection.h (class Collection): add event metadata.
1997         * brush.h (class ImageBrush): add event metadata.
1999         * bitmapsource.h (class BitmapSource): add event metadata.
2001         * bitmapimage.h (class BitmapImage): add event metadata.
2003         * application.h (class Application): add event metadata.
2005         * cbinding.h|cpp: regen.
2007         r: spouliot, andriea
2009 2009-09-23  Stephane Delcroix  <sdelcroix@novell.com>
2011         * multiscaleimage.cpp: fix the vp_h computation. vp_h is
2012         vp_w *msi_h/msi_w, NOT vp_w*msi_w/msi_h !
2014 2009-09-21  Stephane Delcroix  <sdelcroix@novell.com>
2016         * multiscaleimage.h|cpp: stop the animations when setting
2017         UseSprings to false. Set the values to the target values
2018         of the animations too.
2020         r: toshok
2022 2009-09-18  Jackson Harper  <jackson@ximian.com>
2024         * xaml.cpp|h: Use flags passed to createfromstring now for
2025         validating templates and importing the default namespace.
2026         * value.h
2027         * collection.cpp|h: Implement a resource dictionary collection,
2028         this is a collection of dictionaries used for the
2029         MergedDictionaries property of ResourceDictionaries
2030         * resources.cpp|h: Implement the merged dictionaries property and
2031         check them when looking up items in a dictionary.
2032         * dependencyproperty.g.cpp:
2033         * types-generated.cpp:
2034         * cbinding.c|h: regen
2035         
2036 2009-09-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2038         * pipeline-asf.cpp: MmsPlaylistEntry::WritePacket: actually fetch the
2039         media before asserting that it isn't null.
2041         r: sde
2043 2009-09-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2045         * pipeline.cpp: When filling buffers, treat a buffering_time of 0 as a
2046         buffering_time of 1 ms, otherwise we'll do nothing at all since we have
2047         the requested amount of buffer (nothing at all), but buffering progress
2048         is is still at 0% (since we didn't buffer anything). Don't change the
2049         buffering progress calculation, since playback would fail (there would
2050         be nothing to play).
2052         r: sde
2054 2009-09-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2056         * mms-downloader.cpp: Remove old debugging code that was stripping out
2057         everything after a ? in a url.
2059         r: sde
2061 2009-09-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2063         * xaml.cpp: Honor the debug configuration option instead of enabling it
2064         all the time.
2066         * glyphs.cpp: Move debug code into conditional expression.
2068         * debug.h: DEBUG is resolved to nothing at all in release builds, so
2069         when checking if debug is defined in complex expressions we need to
2070         use 'defined (DEBUG)', since otherwise the expression becomes bogus.
2071         Also Move #include "runtime.h" outside of the conditional code, this
2072         way we don't have different include requirements in other headers
2073         depending on debug/release configuration.
2075         r: sde
2077 2009-09-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2079         * dependencyobject.cpp|h: SetCurrentDeployment: add a parameter
2080         specifying whether the current thread should be registered with the
2081         deployment or not.
2082         
2083         This fixes a minor catch with the media threads: they need to register
2084         the current thread with the deployment before calling
2085         SetCurrentDeployment, but they can't call GetDeployment to get the
2086         deployment to register the thread with before calling
2087         SetCurrentDeployment since it would trigger a deployment mis-matched
2088         warning.
2090         * pipeline.cpp|h: Add a thread pool to manage media threads instead of
2091         creating one thread per Media instance.
2093         * pipeline-asf.cpp: Updated according to Media API changes.
2095         r: geoff
2097 2009-09-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2099         * mediaplayer.cpp: GetVolume: Get the AudioSource instance before using
2100         it.
2102         r: sde
2104 2009-09-16  Larry Ewing  <lewing@novell.com>
2106         * multiscaleimage.cpp (OnPropertyChanged): chain up to MediaBase
2107         not DependencyObject so that property changes actually work.
2109         r: kangaroo
2111 2009-09-14  Jeffrey Stedfast  <fejj@novell.com>
2113         * deployment.cpp (Initialize): Disable MONO_IOMAP=case.
2115         * application.cpp (GetResourceAsPath): ExtractAll using
2116         CanonModeResource (everything gets lowercased).
2118         * xap.cpp (Unpack): ExtractAll using CanonModeXap (everything but
2119         .dll's get lowercased).
2120         (xap_create_from_file): Canonicalize the AppManifest.xaml file
2121         name.
2123         * utils.cpp (CanonicalizeFilename): Now takes a tri-state mode
2124         argument to specify whether it is canonicalizing a Xap file, a
2125         resource name, or just fixing path separators. When in Xap mode,
2126         don't downcase Dll base names.
2127         (ExtractAll): When extracting a Xap, symlink a fully lowercased
2128         filename to the unmodified .dll name.
2130         r: spouliot
2132 2009-09-16  Larry Ewing  <lewing@novell.com>
2134         * tilesource.h: make tileblendtime unamanaged so we can use it
2135         when creating the fade animation.
2136         
2137         * multiscaleimage.cpp (Render): use the duration from the
2138         tilesource for the fade animation.  This probably needs to listen
2139         to change events but more testing is required.
2141         r: toshok
2142         
2143 2009-09-16  Larry Ewing  <lewing@novell.com>
2145         * style.h: make IsSealed field internal. 
2147 2009-09-16  Sebastien Pouliot  <sebastien@ximian.com>
2149         * messagebox.h: Remove tab to please the generator
2151         r: lewing
2153 2009-09-16  Sebastien Pouliot  <sebastien@ximian.com> 
2155         * deepzoomimagetilesource.cpp: don't leak get_resource_aborter
2156         or format
2158         r: sde
2160 2009-09-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2162         * pipeline.cpp|h: ProgressiveSource::Dispose: we can only abort the 
2163         resource loader from the main thread.
2165         r: sde
2167 2009-09-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2169         * ChangeLog:
2170         * bitmapimage.cpp: don't leak get_res_aborter.
2172         r: sde
2174 2009-09-16  Stephane Delcroix  <sdelcroix@novell.com>
2176         * multiscaleimage.h|cpp: StopDownloading () abort and clean the
2177         downloaders. Call it from the dtor, InvalidateTileLayer and
2178         OnSourcePropertyChanged. Should prevent drt874 from randomly failing.
2180         r: rolf
2182 2009-09-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2184         * pipeline.cpp: MediaClosure: remove the 'finished' field (never used)
2185         and add a 'description' field to ease understanding of what is going
2186         on in the pipeline.
2188         r: sde
2190 2009-09-15  Sebastien Pouliot  <sebastien@ximian.com> 
2192         * messagebox.h: Workaround old gtk+ lacking GTK_MESSAGE_OTHER
2194         r: lewing
2196 2009-09-15  Larry Ewing  <lewing@novell.com>
2198         * control.h: Mark IsTemplateItem as internal.
2200         * mediaelement.h: mark DownloadProgress as readonly.
2202         * multiscaleimage.h: make AspectRatio, IsDownloading and IsIdle
2203         readonly.
2205 2009-09-15  Sebastien Pouliot  <sebastien@ximian.com> 
2207         * messagebox.cpp|h: New. MessageBox implementation
2208         * Makefile.am: Add new files to the build
2210         r: toshok
2212 2009-09-15  Stephane Delcroix  <sdelcroix@novell.com>
2214         * multiscaleimage.cpp: set the surface pointer to NULL after
2215         destroying.
2217         r: spouliot
2219 2009-09-16  Chris Toshok  <toshok@ximian.com>
2221         * dependencyobject.cpp (EventObject::Emit): don't return early
2222         when we have a pre-emit handler, even if the list is empty.  Also,
2223         don't do the pre-emit handler here.
2224         (EventObject::DoEmit): instead do it here.
2226 2009-09-14  Chris Toshok  <toshok@ximian.com>
2228         * xaml.cpp (XamlLoader::CreateFromFileWithError): use the new
2229         ParserErrorEventArgs overload to MoonError::FillIn to simplify
2230         this a little bit.
2231         (XamlLoader::CreateFromStringWithError): same.
2232         (XamlLoader::HydrateFromStringWithError): same.
2234         * pipeline-asf.cpp (MmsSource::DownloadFailedHandler): pass a
2235         MoonError to the ErrorEventArgs, instead of the multiple args.
2237         * playlist.cpp: same.
2239         * asf/asf.cpp: same.
2241         * downloader.cpp (Downloader::SendInternal): pass a MoonError to
2242         the ErrorEventArgs, instead of the multiple args.
2243         (Downloader::NotifyFailed): same.
2245         * runtime.cpp (Surface::EmitError): same.
2247         * mediaelement.cpp (MediaElement::ReportErrorOccurred): same.
2249         * pipeline.cpp: same.
2251         * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
2252         we need to free the string we pass to MoonError::FillIn now that
2253         it frees.
2254         (DependencyObject::IsValueValid): same.
2255         (DependencyObject::RegisterAllNamesRootedAt): same.
2256         (DependencyObject::ReadLocalValueWithError): same.
2257         (DependencyObject::GetValueWithError): same.
2258         (DependencyObject::GetValueNoDefaultWithError): same.
2259         (DependencyObject::SetParent): same.
2261         * brush.h|cpp (ImageBrush::image_failed): pass in the calldata to
2262         ImageFailed.
2263         (ImageBrush::ImageFailed): pass the ImageErrorEventArgs on to our
2264         ImageFailedEvent, after reffing them.
2266         * bitmapimage.cpp (BitmapImage::DownloaderComplete): if there was
2267         an error, we need to fill in the moon error with the appropriate
2268         exception, code, and msg.  the calldata to the Emit call is now an
2269         ImageErrorEventArgs again, which we construct using the
2270         moon_error.
2271         (BitmapImage::DownloaderFailed): same sort of change.
2272         (BitmapImage::CreateLoader): same.
2274         * bitmapimage.h (class BitmapImage): rename "error" field to
2275         "gerror" to make it clearer what it is in the code.
2277         * enums.h (enum ErrorEventArgsType): rename ErrorType to this so
2278         we get a little more indication of where it comes from.  this enum
2279         is not long for this world, if I can help it.
2281         * media.h|cpp (Image::image_failed): pass in the calldata to
2282         ImageFailed.
2283         (Image::ImageFailed): pass the ImageErrorEventArgs on to our
2284         ImageFailedEvent, after reffing them.
2286         * error.h|cpp: move all the eventargs subclasses from here
2287         to eventargs.h.
2288         (class MoonError): add a non-empty ctor, copy ctor and operator=.
2289         Also, remove the char* vs. const char* apis.  make them all const
2290         char*, and dup the passed in string.  Lastly, add a FillIn
2291         overload that takes a ParserErrorEventArgs.
2293         * eventargs.h|cpp: the ErrorEventArgs subclasses now keep some
2294         info in an embedded MoonError.
2295         (ExceptionRoutedEventArgs): remove this class.  Nothing in
2296         unmanaged code uses it.
2298 2009-09-14  Sebastien Pouliot  <sebastien@ximian.com>
2300         * xaml.cpp: remove dead code
2302         r: jackson
2304 2009-09-14  Chris Toshok  <toshok@ximian.com>
2306         * xaml.cpp (XamlLoader::CreateFromFileWithError): use the new
2307         ParserErrorEventArgs overload to MoonError::FillIn to simplify
2308         this a little bit.
2309         (XamlLoader::CreateFromStringWithError): same.
2310         (XamlLoader::HydrateFromStringWithError): same.
2312         * pipeline-asf.cpp (MmsSource::DownloadFailedHandler): pass a
2313         MoonError to the ErrorEventArgs, instead of the multiple args.
2315         * playlist.cpp: same.
2317         * asf/asf.cpp: same.
2319         * downloader.cpp (Downloader::SendInternal): pass a MoonError to
2320         the ErrorEventArgs, instead of the multiple args.
2321         (Downloader::NotifyFailed): same.
2323         * runtime.cpp (Surface::EmitError): same.
2325         * mediaelement.cpp (MediaElement::ReportErrorOccurred): same.
2327         * pipeline.cpp: same.
2329         * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
2330         we need to free the string we pass to MoonError::FillIn now that
2331         it frees.
2332         (DependencyObject::IsValueValid): same.
2333         (DependencyObject::RegisterAllNamesRootedAt): same.
2334         (DependencyObject::ReadLocalValueWithError): same.
2335         (DependencyObject::GetValueWithError): same.
2336         (DependencyObject::GetValueNoDefaultWithError): same.
2337         (DependencyObject::SetParent): same.
2339         * brush.h|cpp (ImageBrush::image_failed): pass in the calldata to
2340         ImageFailed.
2341         (ImageBrush::ImageFailed): pass the ImageErrorEventArgs on to our
2342         ImageFailedEvent, after reffing them.
2344         * bitmapimage.cpp (BitmapImage::DownloaderComplete): if there was
2345         an error, we need to fill in the moon error with the appropriate
2346         exception, code, and msg.  the calldata to the Emit call is now an
2347         ImageErrorEventArgs again, which we construct using the
2348         moon_error.
2349         (BitmapImage::DownloaderFailed): same sort of change.
2350         (BitmapImage::CreateLoader): same.
2352         * bitmapimage.h (class BitmapImage): rename "error" field to
2353         "gerror" to make it clearer what it is in the code.
2355         * enums.h (enum ErrorEventArgsType): rename ErrorType to this so
2356         we get a little more indication of where it comes from.  this enum
2357         is not long for this world, if I can help it.
2359         * media.h|cpp (Image::image_failed): pass in the calldata to
2360         ImageFailed.
2361         (Image::ImageFailed): pass the ImageErrorEventArgs on to our
2362         ImageFailedEvent, after reffing them.
2364         * error.h|cpp: move all the eventargs subclasses from here
2365         to eventargs.h.
2366         (class MoonError): add a non-empty ctor, copy ctor and operator=.
2367         Also, remove the char* vs. const char* apis.  make them all const
2368         char*, and dup the passed in string.  Lastly, add a FillIn
2369         overload that takes a ParserErrorEventArgs.
2371         * eventargs.h|cpp: the ErrorEventArgs subclasses now keep some
2372         info in an embedded MoonError.
2373         (ExceptionRoutedEventArgs): remove this class.  Nothing in
2374         unmanaged code uses it.
2376 2009-09-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2378         * audio-alsa.cpp|h:
2379         * audio-pulse.cpp|h: Delay pulse/alsa initialization until we actually
2380         need to play something, and clean up when we stop playing audio.
2382         * mutex.h: Add support for recursive mutexes.
2384         r: geoff
2386 2009-09-14  Stephane Delcroix  <sdelcroix@novell.com>
2388         * deepzoomimagetilesource.h:
2389         * multiscaleimage.h|cpp:
2390         * tilesource.h|cpp:
2391         * uielement.h: drop some manually written cbindings in favor of
2392         generated ones.
2394         * cbinding.h|cpp: regen
2396         r: rolf
2398 2009-09-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2400         * audio.cpp: It should be safe to delete audio sources on any
2401         thread.
2403         r: sde
2405 2009-09-11  Larry Ewing  <lewing@novell.com>
2407         * deployment.cpp, deployment.h: add OutOfBrowserSettings,
2408         ExternalPartCollection, ExternalPart and ExtensionPart to allow
2409         more SL 3 compat.
2411         r: toshok
2413 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2415         * audio.cpp|h: Add AudioSource::GetMediaPlayerReffed and use it
2416         wherever we used to access the field directly. Fixes a very rare
2417         multi-thread issue.
2419         r: spouliot
2421 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2423         * pipeline-asf.cpp: Add a null check.
2425         r: spouliot
2427 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2429         * runtime.h: Fix typo in sanity message.
2431 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2433         * audio.cpp: WriteFull: have a local copy of the stream pointer,
2434         it may get changed on the main thread.
2436         r: spouliot
2438 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2440         * audio-alsa.cpp: AlsaSource::InitializeInternal: make sure we unref
2441         the audio stream in all code paths.
2443         r: spouliot
2445 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2447         * mediaelement.cpp: Dont ref/unref around the MarkerTimeout tick call,
2448         it should be safe since the tick call is removed upon destruction.
2450         r: spouliot
2452 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2454         * audio.cpp|h: Make AudioPlayer refcounted, and shutdown when the
2455         AudioPlayer is disposed due to refcounting reaching 0. This way
2456         we can keep the instance lock for as little time as possible
2457         (to do the ref), instead of during the entire Add/Remove calls,
2458         which may end up deadlocking deep inside pulse in rare circumstances
2459         (we try to add an audio source on one thread(requires a global pa lock)
2460         when removing another audio source on another thread as a response to
2461         an event from pa which may already have the global pa lock).
2463         * type.h:
2464         * value.h:
2465         * cbinding.h:
2466         * type-generated.cpp: Regenerated
2468         r: sde
2470 2009-09-11  Stephane Delcroix  <sdelcroix@novell.com>
2472         * multiscaleimage.h|.cpp: DownloadTile () now takes a user_data
2473         pointer instead of subcache, layer, x and y. Avoids some tree waliking
2474         in the cache trees.
2476         r: spouliot
2478 2009-09-11  Stephane Delcroix  <sdelcroix@novell.com>
2480         * multiscaleimage.cpp: QTree: remove the QTreeNode alias, fix 
2481         qtree_remove to take guint64 indices, qtree_next_sibling for 
2482         future usage.
2484         r: rolf
2486 2009-09-10  Jackson Harper  <jackson@ximian.com>
2488         * namescope.h: Add an accessor for the names hashtable so we can
2489         use them in plugin-debug.
2491         r: spouliot
2493 2009-09-10  Jackson Harper  <jackson@ximian.com>
2495         * xaml.cpp|h: Add flags to the callback data
2496         - Add a pinvoke function that allows propertys to be delayed in
2497         their set call until after the element is fully parsed.  This
2498         allows things like adding elements to a Selector and setting its
2499         index in xaml.
2501         r: spouliot
2502         
2503 2009-09-10  Larry Ewing  <lewing@novell.com>
2505         * multiscaleimage.cpp (RenderSingle): work around the cairo
2506         limitations by doing the viewport/msi intersection and clipping in
2507         viewport space.
2509         r: sde
2511 2009-09-10  Stephane Delcroix  <sdelcroix@novell.com>
2513         * multiscaleimage.cpp: drop 3 useless lines (the cairocontext we
2514         receive on Render is already clipped to the control size.
2515         Wrap the clipping to image size in a conditional to avoid clipping
2516         with really huge rectangles. That it a bug in cairo, as shown in 
2517         drt 2013, 2014. In those cases, the rendering will (visually) leak
2518         for the low order layers.
2520         r: spouliot
2522 2009-09-09  Jackson Harper  <jackson@ximian.com>
2524         * xaml.cpp: When we are setting attributes we want to set
2525         everything with a backing dependency property before we set things
2526         that require managed. We also delay the setting of attributes with
2527         an explicit managed namespace reference.  NOTE: We dont delay
2528         setting attributes that have a DP but are forced into managed
2529         because of their type.
2530         - We can share SetUnknownAttribute functions because the default
2531         xmlns is inited to NULL.
2533         r: rolf
2535 2009-09-09  Stephane Delcroix  <sdelcroix@novell.com>
2537         * multiscaleimage.cpp: Clear () the SubImagesCollection on 
2538         source changed. Speed things up when reusing the same MSI
2539         over and over with different sources. drt #2004 is now passing
2540         every times.
2542         r: rolf
2544 2009-09-08  Sebastien Pouliot  <sebastien@ximian.com>
2546         * downloader.h, layout.h, list.h: Add missing virtual destructors
2548         r: toshok
2550 2009-09-08  Chris Toshok  <toshok@ximian.com>
2552         * provider.cpp (StylePropertyValueProvider::SealStyle): pass true
2553         for ProviderValueChanged's @set_parent.
2554         (InheritedPropertyValueProvider::PropagateInheritedProperty): pass
2555         true in the visual walking case, and false in the
2556         textblock->inline case.
2557         (PROP_ADD): pass true.
2558         (AutoCreatePropertyValueProvider::GetPropertyValue): pass true.
2559         (InheritedPropertyValueProvider::PropagateInheritedProperty):
2560         do a deep traversal of the tree, looking for children who have a
2561         mapped property from the changed one (MapPropertyToDescendant
2562         returns NULL if there's no mapping).  Once we find a suitable
2563         descendant, call ProviderValueChanged on it with "true" for
2564         notify_listeners.  This will take care of notifying further down
2565         the tree if need be, and we can skip that branch.  For textblocks
2566         we also have to iterate over the inlines to propagate the property
2567         change notification.
2568         (InheritedPropertyValueProvider::PropagateInheritedPropertiesOnAddingToTree):
2569         traverse the entire subtree looking for classes which can inherit
2570         properties from above them.  when we find one, get the inherited
2571         value.  if it's non-null, notify that the property has changed,
2572         and keep trace of this property (we only notify once for a given
2573         subtree, since the normal ProviderValueChanged notifications will
2574         handle the rest for that property.)
2575         (walk_tree): this recursive function does the bulk of the work for
2576         ::PropagateInheritedPropertiesOnAddingToTree
2578         * dependencyobject.h|cpp (DependencyObject::ProviderValueChanged):
2579         add an additional argument (set_parent), which is true for every
2580         instant except when TextBox is propagating inherited brushes to
2581         its constituent inlines.  In this case, the textbox is still the
2582         parent of the brush.  At least for the time being.  In a perfect
2583         world all the changed handling would live in the leaf
2584         nodes (i.e. in the Inlines themselves)
2585         (DependencyObject::ClearValue): track api change
2586         (DependencyObject::SetValueWithErrorImpl): same.
2587         (DependencyObject::GetValue): add an overload for allowing both
2588         starting and ending precedences, and implement the other two
2589         overloads in terms of it.
2590         (DependencyObject::GetValueSkippingPrecedence): remove, no longer
2591         used.
2593         * uielement.cpp (UIElement::ElementAdded): propagate all
2594         inheritable properties into the subtree we're adding, before
2595         calling Loaded.
2597         r: andreia
2598         
2599 2009-09-08  Stephane Delcroix  <sdelcroix@novell.com>
2601         * downloader.h|.cpp: new MsiPolicy, like MediaPolicy but doesn't allow
2602         redirections (drt 874)
2604         * bitmapimage.h|bitmapimage.cpp: new SetDownloadPolicy () to override the
2605         bitmapimage policy;
2607         * multiscaleimage.cpp: use MsiPolicy, fixes drt 874.
2609         r: spouliot
2611 2009-09-08  Sebastien Pouliot  <sebastien@ximian.com>
2613         * downloader.cpp: Skip redirection check if the source url is a
2614         local file.
2616         r: sde
2618 2009-09-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2620         * bitmapimage.cpp: CreateLoader: we were relying on an DownloadFailed
2621         event from the downloader after cancelling a resource request, this 
2622         is no longer true, so emit ImageFailed manually after calling Abort.
2624         r: sde
2626 2009-09-08  Stephane Delcroix  <sdelcroix@novell.com>
2628         * deepzoomimagetilesource.cpp: don't render if any MSI extends
2629         is 0. avoid rendering an extra layer in some cases.
2631         r: rolf
2633 2009-09-08  Stephane Delcroix  <sdelcroix@novell.com>
2635         * deepzoomimagetilesource.h|cpp: replace downloader usage by
2636         Application::GetResource (). Parses the xml stream as it comes,
2637         instead of all at once.
2639         r: kangaroo
2641 2009-09-07  Chris Toshok  <toshok@ximian.com>
2643         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
2644         don't bail out early if both values are null, as the property
2645         might be AlwaysChange.
2646         (DependencyObject::ClearValue): same.
2648         r: kangaroo
2650 2009-09-07  Stephane Delcroix  <sdelcroix@novell.com>
2652         * multiscaleimage.cpp: the tileLayer parameter is not the number 
2653         of layers to invalidate.
2655         r: shana
2657 2009-09-07  Stephane Delcroix  <sdelcroix@novell.com>
2659         * multiscaleimage.cpp: InvalidateTileLayer no longer invalidate the
2660         full cache, but only the requested tiles.
2662         r: shana
2664 2009-09-05  Stephane Delcroix  <sdelcroix@novell.com>
2666         * multiscaleimage.cpp:
2667         * deepzoomimagetilesource.h|cpp: do the same cleaning suffs (clearing
2668         the cache, aborting the downloaders, invalidating, etc...) on dzits 
2669         urisource changed that is done on msi sourcechanged.
2671         r: shana
2673 2009-09-05  Stephane Delcroix  <sdelcroix@novell.com>
2675         * multiscaleimage.h|cpp: code reshuffling and refactoring. Move
2676         the OnSourcePropertyChanged handling outside of OnPropertyChanged.
2677         No longer keep a source instance variable, as we can get it with
2678         GetSource ().
2680         r: jackson
2682 2009-09-04  Larry Ewing  <lewing@novell.com>
2684         * multiscaleimage.cpp (RenderSingle): clip our rendering to the
2685         image bounds so that when we are scaling up we don't end up with
2686         blurry images.
2688         r: sde
2690 2009-09-04  Stephane Delcroix  <sdelcroix@novell.com>
2692         * utils.h|cpp: add a void* arg to the Cancellable api
2694         * application.cpp:  remove the downloader notifications on 
2695         Cancel ().
2697 2009-09-04  Stephane Delcroix  <sdelcroix@novell.com>
2699         * multiscaleimage.cpp: on source change, don't only Abort() the
2700         dlders, but also reset the internal state of the dlders to Free
2702         r: alan
2704 2009-09-03  Stephane Delcroix  <sdelcroix@novell.com>
2706         * multiscaleimage.cpp: reset the Viewport to its default values
2707         on source change. Eventually fixes drt#511.
2709         r:lewing
2711 2009-09-03  Jeffrey Stedfast  <fejj@novell.com>
2713         * textbox.h: Nuke the CallInitialize metadata from TextBox.
2715 2009-09-03  Stephane Delcroix  <sdelcroix@novell.com>
2717         * deepzoomimagetilesource.h: add Generate* attributes
2719 2009-09-03  Stephane Delcroix  <sdelcroix@novell.com>
2721         * multiscaleimage.h: drop the GenrateJSBinding attributes
2723 2009-09-03  Stephane Delcroix  <sdelcroix@novell.com>
2725         * xaml.cpp:
2726         * deepzoomimagetilesource.h|cpp: remove a hack in the parser, and
2727         move it to the DZITS ctor. DRTs (509 and 511) and some sites shows
2728         that we have to strip an eventual leading / on ctor but not on
2729         SetUriSource.
2731 2009-09-02  Andreia Gaita  <avidigal@novell.com>
2733         * dependencyobject.cpp: move the storage cleanup to Dispose, they
2734         will need to invoke handlers and other things that require the
2735         object to still be alive. fixes crash on drt 109
2737         r: lewing
2739 2009-09-02  Jackson Harper  <jackson@ximian.com>
2741         * dependencyproperty.cpp: If the explicitly mentioned type does
2742         not contain the property, try looking for the property on the
2743         current lookup obejct.  Allows things like (UIElement.Height) on a
2744         Grid object.
2746         r: shana
2748 2009-09-02  Jeffrey Stedfast  <fejj@novell.com>
2750         * textblock.cpp (TextBlock::OnCollectionChanged): Explicitly call
2751         UpdateLayoutAttributes(). We can't rely on it being called as a
2752         result of setting the Text property since the overall Text
2753         property value might not have changed.
2754         (TextBlock::OnCollectionItemChanged): Same here.
2755         (TextBlock::OnPropertyChanged): Same for when the Inlines property
2756         changes. In the FontSource case, don't set invalidate to
2757         false. Also set dirty to true.
2758         (SetTextInternal): Changed to return void, no need to return bool
2759         anymore.
2761         r: alan
2763 2009-09-01  Jeffrey Stedfast  <fejj@novell.com>
2765         * layout.cpp (TextLayoutGlyphCluster::Render): If the background
2766         brush is null, don't bother drawing a background.
2768         r: lewing
2770 2009-09-01  Jeffrey Stedfast  <fejj@novell.com>
2772         * layout.cpp (TextLayoutGlyphCluster::Render): If the Foreground
2773         brush is null, don't render the text.
2775         r: spouliot
2777 2009-09-01  Sebastien Pouliot  <sebastien@ximian.com> 
2779         * utils.cpp (CopyFileTo): Close the destination file handle if 
2780         the source (filename) cannot be opened.
2782         r: jeff
2784 2009-09-01  Sebastien Pouliot  <sebastien@ximian.com>
2786         * uielement.cpp (UIElement::Paint): Don't leak a copy of the 
2787         region when *not* using FTB rendering.
2789         r: jeff
2791 2009-09-01  Larry Ewing  <lewing@novell.com>
2793         * frameworkelement.cpp: clear LastRenderSize before we emit so
2794         that we don't end up in a possible recursion.
2796         Fixes http://www.worldwidetelescope.org/webclient/
2797         
2798         r: toshok
2800 2009-09-01  Sebastien Pouliot  <sebastien@ximian.com>
2802         * xaml.cpp: Fix DRT355 (broken at r140756) to report the "right"
2803         error code when an invalid xap file is encoutered.
2805         re: jackson
2807 2009-08-31  Sebastien Pouliot  <sebastien@ximian.com>
2809         * debug.cpp: Delete frame if we're not using it in the loop
2810         * resources.cpp: Don't leak Value instance on error
2812         re: kangaroo
2814 2009-08-30  Andreia Gaita  <avidigal@novell.com>
2816         clock leak fixes.
2818         * animation.[h|cpp]: rename TeardownClockGroup to TeardownClock and
2819         move it to the Timeline class so all timelines can clear their clocks.
2820         Removed private root_clock, all timelines should use the timeline
2821         clock variable
2823         * timeline.[h|cpp]: TeardownClock removes the clock from the parent
2824         ClockGroup and clears the ref on the clock so it can be destroyed
2825         (which in turn will release the ref on the timeline so it too gets
2826         destroyed).
2827         DispatcherTimer doesn't have to destroy it's clock, the timeline
2828         dispose takes care of that. Added TeardownClock for DispatcherTimer
2829         so it stops the clock before disposing.
2830         Removed private root_clock, all timelines should use the timeline
2831         clock variable
2833         * clock.[h|cpp]: Added Dispose to Clock and ClockGroup. The
2834         group Dispose goes down the hierarchy of clocks and starts clearing
2835         clocks (via timeline TeardownClock) from bottom to top, so
2836         everything is guaranteed to die before the root clock gets
2837         destroyed.
2839         * timemanager.cpp: Dispose root clock before releasing it
2841         r: toshok
2843 2009-08-30  Andreia Gaita  <avidigal@novell.com>
2845         * textblock.cpp: drop the run reference, it's already reffed on the
2846         collection
2848         r: toshok
2850 2009-08-28  Alan McGovern  <amcgovern@novell.com>
2852         * control.h:
2853         * control.cpp:
2854         * contentcontrol.cpp: ContentControl is not in charge of
2855           expanding its content template, the users of ContentControl
2856           have to do that. When applying a ControlTemplate, if it
2857           expands to an empty element or one which is not a UIElement,
2858           we ignore the template and instead apply the default
2859           element. r: toshok
2861 2009-08-27  Jeffrey Stedfast  <fejj@novell.com>
2863         * textbox.cpp (TextBoxBase::Initialize): Don't listen for Focus or
2864         Mouse events anymore (except the special internal MultiClick
2865         event). Managed code will now call our public On$Event() methods
2866         when appropriate.
2867         (TextBoxBase::OnKeyUp): Don't ever set args.Handled to
2868         true. Doesn't seem like SL ever does.
2870         r:alan
2872 2009-08-27  Stephane Delcroix  <sdelcroix@novell.com>
2874         * tilesource.h: rely on the generator for internal properties.
2876         * tilesource,cpp:
2877         * deepzoomimagetilesource.cpp: use the accesors instead of the
2878         fields.
2880 2009-08-27  Andreia Gaita  <avidigal@novell.com>
2882         * dependencyobject.cpp: list should only be cleared, not destroyed,
2883         storage_hash still needs it
2885         r: alan
2887 2009-08-26  Chris Toshok  <toshok@ximian.com>
2889         * xaml.cpp (XamlParserInfo::ClearBuffer): set buffer to NULL after
2890         we free it.
2892         r: jackson
2894 2009-08-16  Chris Toshok  <toshok@ximian.com>
2896         * value.h.in, value.cpp: remove Value::Set.  it's unnecessary.
2898         * validators.cpp (Validators::BalanceValidator): use the
2899         assignment operator instead of ::Set, which no longer exists.
2900         (Validators::VolumeValidator): same.
2901         (Validators::CursorValidator): don't assign the pointer, assign
2902         the value.  This should have caused bugs...
2904         r: jackson
2905         
2906 2009-08-26  Jeffrey Stedfast  <fejj@novell.com>
2908         * validators.cpp (FloatValidator): New validator to make sure a
2909         value is within range for a float.
2911         * glyphs.cpp: Get rid of origin_y_specified, origin_x, and
2912         origin_y state variables. We can just query these on demand.
2913         (Render): Simplified slightly.
2914         (GetTransformOrigin): Get rid of unused variable.
2915         (GetOriginPoint): Just use the ascender rather than the height and
2916         the descender. Simpler that way.
2918         * glyphs.h: Changed default OriginX and OriginY values to what
2919         they should be according to the moon-unit tests (also makes drt
2920         #246 pass).
2922         r:toshok
2924 2009-08-26  Alan McGovern  <amcgovern@novell.com>
2926         * cbinding.h:
2927         * template.h:
2928         * cbinding.cpp:
2929         * template.cpp: Allow FrameworkTemplates to be expanded in
2930           managed code. Using that, expand the ItemsPanelTemplate in
2931           ItemsControl when it is available. r: toshok
2933 2009-08-26  Andrés G. Aragoneses  <aaragoneses@novell.com>
2935         * security.c: Fixed typos in last "a11y" commit.
2937 2009-08-26  Chris Toshok  <toshok@ximian.com>
2939         * textbox.cpp (TextBoxBase::SetSurface): only call
2940         gtk_im_context_set_client_window if @surface is non-null.  this
2941         quiets down some of the gtk warnings on shutdown.
2943         r: lewing
2944         
2945 2009-08-26  Alan McGovern  <amcgovern@novell.com>
2947         * type.h:
2948         * value.h:
2949         * cbinding.h:
2950         * type-generated.cpp: regen r: shana
2952 2009-08-26  Andreia Gaita  <avidigal@novell.com>
2954         * animation.[h|cpp]: Redesign AnimationStorages. There's now 4
2955         public methods that DOs and Clocks use to control an animation:
2956             - when a new storage is attached and there is already one on
2957                 the property, Disable removes the handlers from the previous
2958                 storage;
2959             - when a storage is detached, the previous one is enabled via
2960                 Enable, which attaches the handlers;
2961             - when a clock is stopped, it calls Stop, which detaches
2962                 everything and resets the property;
2963             - when cloning, SwitchTarget is used to replace the DO and its
2964                 handlers on the storage, to avoid having to clone all the
2965                 storages every time.
2967         Storages are now only deleted when the clock stops, is destroyed
2968         or when the DO they're attached to is destroyed. IsLonely was
2969         removed (meaningless now), as well as the resettable flag (only
2970         enabled animations reset)
2972         * dependencyobject.[h|cpp]: a DO can have more than one animation
2973         running on the same DP, and they need to be stored so that when a
2974         DO is cloned, all running animations are updated to the new DO -
2975         - this way, when they stop they update the current DO and not the
2976         one they were originally attached to. This fixes the animation
2977         problems on togglebuttons and other objects that have several
2978         animations overlapping each other. The storage_hash now stores a
2979         List* of AnimationStorage::Node objects with all existing animations
2980         for every DP, and the animation storage cloning process doesn't clone
2981         the storages, it merely creates a new List* with the existing storages
2982         and updates them to the newly cloned DO.
2984         r: alan
2986 2009-08-26  Alan McGovern  <amcgovern@novell.com>
2988         * template.cpp: NNull check 'result' before using it. r:shana
2990 2009-08-26  Andrés G. Aragoneses  <aaragoneses@novell.com>
2992         * security.c: Mark MoonAtkBridge.dll as platform assembly.
2994 2009-08-25  Chris Toshok  <toshok@ximian.com>
2996         * control.cpp (Control::OnPropertyChanged): emit IsEnabledChanged
2997         when IsEnabledProperty has changed.  we need to do it after the
2998         focus handling has happened, though, as
2999         FocusManager.GetFocusedElement() returns the currently focused
3000         thing in handlers for IsEnabledChanged.  Fixes the rendering of
3001         disabled elements in drt #432.
3003         r: andreia
3004         
3005 2009-08-26  Jackson Harper  <jackson@ximian.com>
3007         * dependencyproperty.cpp: Allow setting properties that are
3008         attached on their owner type without parens. r: toshok
3010 2009-08-26  Jackson Harper  <jackson@ximian.com>
3012         * xaml.cpp|h: Expose a function for parsing bools so the plugin
3013         code can use our bool parsing code. (Handle ints).
3015         r: shana && kangaroo
3017 2009-08-25  Jeffrey Stedfast  <fejj@novell.com>
3019         * textblock.cpp (TextBlock::UpdateFontDescriptions): Don't
3020         invalidate unless one of the fonts has actually changed.
3022         r:spouliot
3024 2009-08-25  Jackson Harper  <jackson@ximian.com>
3026         * type.cpp: Function was still in the header but somehow lost its
3027         implementation.  We dont use it anywhere but its useful for
3028         debugging. r: kangaroo
3030 2009-08-25  Alan McGovern  <amcgovern@novell.com>
3032         * control.h:
3033         * template.h:
3034         * control.cpp:
3035         * template.cpp:
3036         * contentcontrol.cpp: Add support for using
3037           ContentControl.ContentTemplate when it is available. If
3038           there is no Control.Template, ContentControl.ControlTemplate
3039           is used. If that isn't available, we call into managed code
3040           and get the fallback root. r: toshok
3042 2009-08-24  Jackson Harper  <jackson@ximian.com>
3044         * dependencyobject.cpp: Hydrated objects are registered in their
3045         parent namescope so we need to unregister them there also. r: toshok
3047 2009-08-21  Jeffrey Stedfast  <fejj@novell.com>
3049         * fontmanager.cpp (AddResource): Need to free the path string
3050         before returning on success.
3052         * frameworkelement.cpp (UpdateLayout): Modified outer-loop to not
3053         leak the various lists.
3055         r:toshok
3057 2009-08-21  Jeffrey Stedfast  <fejj@novell.com>
3059         * grid.cpp (DestroyMatrices): Need to use delete[] to free the
3060         matrices.
3062         r:toshok
3064 2009-08-21  Alan McGovern  <amcgovern@novell.com>
3066         * control.cpp:
3067         * template.cpp: Whenever any template is expanded, the
3068           template namescope should be locked. r: jackson
3070 2009-08-21  Alan McGovern  <amcgovern@novell.com>
3072         * grid.cpp: When assigning sizes to grid segments, if the
3073           current UIElement spans across star segments, then extra
3074           height will only be assigned to those star segments.
3075           Otherwise extra height will be assigned to Auto and Pixel
3076           segments. r: sde
3078 2009-08-20  Jeffrey Stedfast  <fejj@novell.com>
3080         * textbox.cpp (TextBoxBase::Emit*Async): Removed.
3081         (TextBox::EmitSelectionChanged): Updated to use EmitAsync().
3082         (TextBox::EmitTextChanged): Same.
3083         (PasswordBox::EmitTextChanged): Same.
3085         * popup.cpp (OnPropertyChanged): Use the new EmitAsync() method.
3087         * dependencyobject.cpp (EventObject::EmitAsync): New method to
3088         emit an event asynchronously.
3090         r:alan
3092 2009-08-20  Jeffrey Stedfast  <fejj@novell.com>
3094         * textbox.cpp (emit_selection_changed): Pass along the generation
3095         to the virtual EmitSelectionChanged() method.
3096         (emit_text_changed): Same.
3097         (EmitSelectionChangedAsync): Use a custom closure so that we can
3098         capture the current event generation to use when we actuall emit
3099         it later.
3100         (EmitTextChangedAsync): Same.
3102         r:toshok
3104 2009-08-20  Jackson Harper  <jackson@ximian.com>
3106         * xaml.cpp: Setting OBJECT properties allows objects to be parsed
3107         from strings that shouldn't normally be.  Such as SolidColorBrush
3108         and PointCollection.
3110 2009-08-19  Jeffrey Stedfast  <fejj@novell.com>
3112         * fontmanager.cpp (FontFace::GetExtents): Updated to implement the
3113         same algorithm used by Silverlight.
3115         r:jackson
3117 2009-08-19  Jackson Harper  <jackson@ximian.com>
3119         * playlist.cpp: Its possible to queue an async operation and then
3120         call Dispose before that operation has taken place. This patch
3121         makes Playlist delay its unref and adds guards in its async
3122         callback functions to avoid this. Fixes http://www.nederland24.nl/
3123         r:spouliot
3124         
3125 2009-08-18  Jackson Harper  <jackson@ximian.com>
3127         * template.cpp: Remove not very helpful and somewhat scary looking
3128         debug spew. r:toshok
3130 2009-08-18  Jeffrey Stedfast  <fejj@novell.com>
3132         * layout.cpp (word_type_changed): Partial revert for previous
3133         commit as it broke drt #208.
3135         r:toshok
3137 2009-08-17  Jeffrey Stedfast  <fejj@novell.com>
3139         Fixes for drt #411.
3141         * layout.cpp (SetMaxWidth): If setting MaxWidth to 0, treat it as
3142         infinite.
3143         (word_type_changed): Allow alphabetic characters inside
3144         ideographic words.
3145         (layout_word_wrap): Allow line advance to equal max width.
3147         r:toshok
3149 2009-08-18  Alan McGovern  <amcgovern@novell.com>
3151         * grid.h:
3152         * grid.cpp: Remove the 'magic' size as size allocations are
3153           read from row_matrix/col_matrix now. r: kangaroo
3155 2009-08-18  Alan McGovern  <amcgovern@novell.com>
3157         * grid.h:
3158         * grid.cpp: Allocate sizes of the grid segments in the correct
3159           order. r: shana
3161 2009-08-17  Alan McGovern  <amcgovern@novell.com>
3163         * grid.h:
3164         * grid.cpp: When allocating sizes for rows/columns, clamp the
3165           sizes between the Min and Max values in a consistent manner.
3166           r: jackson
3168 2009-08-17  Alan McGovern  <amcgovern@novell.com>
3170         * grid.h:
3171         * grid.cpp: Change the parameter order in the Segment
3172           constructors to be "value, min, max" to be consistent with
3173           how 'CLAMP' is usually defined. r: jackson
3175 2009-08-16  Chris Toshok  <toshok@ximian.com>
3177         * xaml.cpp (value_from_str_with_parser): fix the abundant memory
3178         leaks in this method.
3180         * propertypath.h (struct PropertyPath): add a copy constructor
3181         here so the xaml.cpp changes work without crashing.
3183         r: andreia
3185 2009-08-16  Chris Toshok  <toshok@ximian.com>
3187         * xaml.cpp (value_from_str_with_parser): we were using the return
3188         value from this method to be "v has been set to a value", but this
3189         isn't enough state.  We also need to know if the
3190         caller (dependency_object_set_attributes, specifically) should
3191         continue on or skip the attribute after it's called us.  So, we
3192         add a "bool *v_set" parameter, and change the return value to
3193         "false = skip, true = continue processing."  We return false in
3194         only 1 case right now, if a double-typed value is to be parsed
3195         from an empty string.  This fixes the Klotski demo, which has
3196         <TranslateTransform X=""> in its xaml. Also, fix the g_strstrip
3197         usage to also deal properly with leading spaces, and stop
3198         duplicating "g_free (s); return true;" - just break there, and let
3199         the blanket free/return at the end of the method handle it.
3200         (dependency_object_set_attributes): simplify the {} handling, and
3201         stop leaking the string value of the attribute when we pass it to
3202         managed.
3204         r: andreia
3205         
3206 2009-08-15  Larry Ewing  <lewing@novell.com>
3208         * mediaelement.cpp (Render): use the same logic we used in image
3209         here to always adjust the paint rect when stretch != StretchNone.
3211         r: andreia
3213 2009-08-15  Larry Ewing  <lewing@novell.com>
3215         * shape.cpp (MeasureOverride): Stretch to the proper width when
3216         available size in not infinite.  Avoid using infinite dimesions as
3217         constraints for Uniform stretches.
3219         Fixes Header stretching in playboy an improves DRT #210.
3221         r: jeff
3222         
3223 2009-08-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3225         * pipeline.cpp: Quiet some debug spew.
3227         r: andreia
3229 2009-08-14  Larry Ewing  <lewing@novell.com>
3231         * grid.cpp (MeasureOverride): properly use min and max.
3233         Fixes regression in DRT #319 from new table code
3235         r: kangaroo
3237 2009-08-14  Larry Ewing  <lewing@novell.com>
3239         * media.cpp: always adjust our paint rectangle when Stretch !=
3240         StretchNone.
3242         Fixes DRT #516 and the regression in #422
3244         r: toshok
3246 2009-08-14  Larry Ewing  <lewing@novell.com>
3248         * frameworkelement.cpp (Arrange): apply the size constraints after
3249         we the the actualsize back from the element.
3251         * layoutinformation.cpp (GetClip): now that other things are
3252         improved only traverse up one level.
3254         Fixes clipping on the smooth streaming size and DRT #210
3256         r: sde
3257         
3258 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3260         * pipeline.cpp: IMediaDecoder::Dispose: clear the list of pending
3261         frames to decode.
3263         r: andreia
3265 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3267         * pipeline.cpp: IMediaDecoder::Dispose: store a copy of our instance
3268         variables in local variables and clear out the instance variables
3269         before unreffing them - prevents certain rare cases of infinite loops.
3271         r: andreia
3273 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3275         * pipeline.cpp: IMediaDecoder::DecodeFrameAsync: don't do anything if
3276         we've been disposed.
3278         r: andreia
3280 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3282         * pipeline.cpp: IMediaObject::EmitSafe: unref the args in all code
3283         paths.
3285         r: andreia
3287 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3289         * pipeline.cpp: IMediaObject::AddSafeHandler: don't add any handlers
3290         if we've been disposed.
3292         r: andreia
3294 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3296         * pipeline.cpp: IMediaObject::Dispose: clear the list of events
3297         we were supposed to emit on the main thread.
3299         r: andreia
3301 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3303         * pipeline.cpp: IMediaDemuxer::Dispose: add a missing unref.
3305         r: andreia
3307 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3309         * pipeline.cpp: IMediaDemuxer::Dispose: store a copy of our instance
3310         variables in local varaibles and clear out the instance variables
3311         before unreffing them - prevents certain rare cases of infinite loops.
3313         r: andreia
3315 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3317         * pipeline.cpp: IMediaStream::Dispose: store a copy of our instance
3318         variables in local variables and clear out the instance variables
3319         before unreffing them - prevents certain rare cases of infinite loops.
3321         r: andreia
3323 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3325         * pipeline.cpp: Media::RetryHttp: we need to Dispose the previous
3326         source.
3328         r: andreia
3330 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3332         * pipeline-asf.cpp: MmsPlaylistEntry::Dispose: break a circular
3333         dependency between MmsPlaylistEntry and Media.
3335         r: andreia
3337 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3339         * pipeline.cpp: Media::Dispose: store a copy of our instance variables
3340         in local variables and clear out the instance variables before
3341         unreffing them - prevents certain rare cases of infinite loops.
3343         r: andreia
3345 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3347         * pipeline.cpp: MarkerStream::Dispose: call base class' Dispose.
3349         r: andreia
3351 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3353         * pipeline-asf.cpp: Add a few missing unrefs.
3355         r: andreia
3357 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3359         * pipeline.cpp|h: Add a MediaDisposObjectClosure that ensures that
3360         the closure is called.
3362         r: andreia
3364 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3366         * pipeline.cpp: Add an invalid MediaResult value, so that MediaClosure
3367         can detect if the callback has been called or not.
3369         r: andreia
3371 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3373         * pipeline.cpp: Media::DisposeObject: if we couldn't enqueue the
3374         dispose on the media thread, call dispose directly.
3376         r: andreia
3378 2009-08-14  Alan McGovern  <amcgovern@novell.com>
3380         * grid.h:
3381         * grid.cpp: Rewrite the size allocation code in grid to better
3382           match the microsoft implementation. It works much better for
3383           the pixel and auto cases, but still has some issues with
3384           star columns. r: lewing
3386 2009-08-14  Jeffrey Stedfast  <fejj@novell.com>
3388         * application.cpp (GetResource): Close the stream when we're
3389         done. Also changed to check write_cb exists before reading from
3390         the stream - if the callback is NULL, don't even bother.
3391         (GetResourceAsBuffer): Removed.
3392         (GetResourceAsPath): Instead of calling GetResourceAsBuffer(), do
3393         the streaming ourselves. Also return NULL if writing the stream to
3394         disk fails.
3396         * utils.cpp (managed_stream_open/read/write/etc): Changed to be
3397         internal. These symbols don't need to be publicly exported.
3399         * utils.h: Added a Stream_Close function signature to
3400         ManagedStreamCallbacks.
3402         * bitmapimage.cpp (resource_notify): Make static/internal - does
3403         not need to be publicly exported.
3405         r:kangaroo
3407 2009-08-14  Stephane Delcroix  <sdelcroix@novell.com>
3409         * multiscaleimage.cpp: retry downloading up to 5 times.
3411 2009-08-14  Stephane Delcroix  <sdelcroix@novell.com>
3413         * bitmapimage.h|cpp, multiscaliemage.cpp: abort downaloaders on 
3414         source change. 
3415         
3416         r: lewing
3418 2009-08-13  Larry Ewing  <lewing@novell.com>
3420         * usercontrol.cpp (MeasureOverride): don't constrain the results.
3422         Fixes DRT #417
3424         r: andreia
3426 2009-08-13  Larry Ewing  <lewing@novell.com>
3428         * textblock.cpp (MeasureOverride):
3429         * textbox.cpp (MeasureOverride): ceil our measurement request when
3430         layout rounding is being done so that we don't get rounded down
3431         and forced to wrap.  More testing is in order but failure mode for
3432         this is painful.
3434         Fixes wrapping in Playboy and the chess final screen.
3436         r: jeff
3437         
3438 2009-08-13  Larry Ewing  <lewing@novell.com>
3440         * timesource.h (MOON_PRIORITY_DEFAULT): lower our default priority
3441         to idle so that firefox and gtk can process events without getting
3442         starved.  Improved Quakelight and StrangeAttractor experience.
3444         r: andreia
3445         
3446 2009-08-13  Larry Ewing  <lewing@novell.com>
3448         * src/brush.cpp: replace all cairo_matrix_invert calls with a
3449         version that warns if it fails.
3451         r: andreia
3453 2009-08-13  Jeffrey Stedfast  <fejj@novell.com>
3455         * layout.cpp (TextLayoutGlyphCluster::Render): No-op if the
3456         advance width is 0. Fixes test-videobrush-text.xaml to render all
3457         of the runs.
3459         r:lewing
3461 2009-08-13  Chris Toshok  <toshok@novell.com>
3463         * xaml.cpp (start_element): If the element is a TextBox.Text
3464         CDATA, treat it as verbatim. Partial fix for drt 2003.
3466         r:jeff
3468 2009-08-13  Jeffrey Stedfast  <fejj@novell.com>
3470         * layout.cpp (Layout): Make sure all attributes were able to load
3471         their fonts. If not, we can't proceed. Fixes the NULL TextFont
3472         crash in DrPopper.
3474         * textblock.cpp (OnPropertyChanged): Instead of using
3475         UpdateLayoutAttributes(), all we really need to do is call
3476         UpdateFontDescriptions() when the FontSource changes.
3478         r:toshok
3480 2009-08-13  Jeffrey Stedfast  <fejj@novell.com>
3482         * fonts.cpp (TextFont::Load): When loading a font face from a
3483         source w/o any families specified, make sure to set master=0 so
3484         that we don't try to get extents from faces[-1].
3486         r:lewing
3488 2009-08-13  Larry Ewing  <lewing@novell.com>
3490         r: kangaroo
3491         
3492         * writeablebitmap.cpp (InitializeFromBitmapSource): always use
3493         rgba pixelformat like sl3 does now.
3495 2009-08-12  Chris Toshok  <toshok@ximian.com>
3497         * bitmapsource.h|cpp (SetBitmapData): add an extra parameter
3498         "own" (default: true) which, if true, causes the bitmap source to
3499         free the bitmapdata when it's destroyed.
3501         * cbinding.h|cpp: regen
3503 2009-08-12  Alan McGovern  <amcgovern@novell.com>
3505         * cbinding.h:
3506         * cbinding.cpp: regen r: toshok
3508         * control.h:
3509         * application.h:
3510         * application.cpp:
3511         * contentcontrol.h:
3512         * contentcontrol.cpp:
3513         * frameworkelement.cpp: A ContentControl which has no Template
3514           needs to call into managed land to create a 'default
3515           template'. When the Content is a UIElement, the UIElement is
3516           used as the template root, otherwise a Grid + TextBlock
3517           (with Binding) is used. This is the same as what
3518           ContentPresenter does to its Content property. r: toshok
3520 2009-08-12  Alan McGovern  <amcgovern@novell.com>
3522         * uielement.cpp: VisualParent should be set to null before
3523           invalidating the cache otherwise the element might be added
3524           to the dirty lists. This causes issues if the element is
3525           added back into the visual tree at a different level. r:
3526           lewing.
3528 2009-08-12  Stephane Delcroix  <sdelcroix@novell.com>
3530         * multiscaleimage.cpp: clear the cache on source change, cache a NULL
3531         tile on downloader failure (fix drt 2014 for good).
3533 2009-08-12  Stephane Delcroix  <sdelcroix@novell.com>
3535         * multiscaleimage.cpp: restore the initial number of concurrent
3536         downloaders, drt 2014 will require a proper fix.
3538 2009-08-12  Chris Toshok  <toshok@ximian.com>
3540         * media.h|cpp (class Image): if our source is a BitmapSource,
3541         handle the PixelDataChangedEvent and Invalidate ourselves if it's
3542         emitted.
3544         * brush.h|cpp (class ImageBrush): if our source is a BitmapSource,
3545         handle the PixelDataChangedEvent and notify our listeners to
3546         redraw if it's emitted.
3548         * bitmapsource.h|cpp (class BitmapSource): add an event so classes
3549         using BitmapSources can be notified when the pixel data
3550         changes (primarily for use with WriteableBitmap).  Emit it from
3551         BitmapSource::Invalidate.
3553         * type-generated.cpp, cbinding.h|cpp: regen
3554         
3555 2009-08-11  Chris Toshok  <toshok@ximian.com>
3557         [ each of these changes fixes a line of text in drt 444 ]
3558         * fontmanager.cpp (FontManager::AddResource): seek the stream to 0
3559         before reading it.
3561         * textblock.cpp (TextBlock::OnPropertyChanged): we need to call
3562         UpdateLayoutAttributes if FontSource is changed, so that the
3563         change propagates down to the inlines.
3565         r: kangaroo
3567 2009-08-11  Larry Ewing  <lewing@novell.com>
3569         * grid.cpp (MeasureOverride): adjust row definition values by
3570         max/min values when building up the Actual sizes
3572         Fixes DRT #319.
3574         r: toshok
3576 2009-08-11  Jeffrey Stedfast  <fejj@novell.com>
3578         * textbox.cpp (TextBox::OnPropertyChanged): Set the font_source on
3579         the TextFontDescription as well as emitting an event so the view
3580         knows it has to re-render. Improves drt 480.
3581         (PasswordBox::OnPropertyChanged): Same.
3582         (TextBox::ClearFontSource): Removed, not used.
3583         (PasswordBox::ClearFontSource): Same.
3585         r:toshok
3587 2009-08-11  Andreia Gaita  <avidigal@novell.com>
3589         * runtime.cpp: TimeManager should be the last thing destroyed, other
3590         objects might need to access it while disposing. r: alan
3592 2009-08-11  Stephane Delcroix  <sdelcroix@novell.com>
3594         * multiscaleimage.cpp: cast so the modulo operation opers on int,
3595         not guint64. Fix sharedtiles usage. r:shana, lewing
3597 2009-08-11  Jeffrey Stedfast  <fejj@novell.com>
3599         * textbox.cpp (TextBoxBase::Paste): Change the multiline
3600         truncation test to explicitly check for \r, \n and 0x2028 instead
3601         of using g_unichar_type() which didn't return the expected values
3602         for these characters. Partial fix for drt 2003.
3603         (*Box::OnPropertyChanged): Updated for AddResource() API change.
3605         * textblock.cpp (TextBlock::OnPropertyChanged): Updated for
3606         AddResource() API change.
3608         * fontmanager.cpp (AddResource): Instead of having our callers
3609         generate a unique resource name, let us do it for them. Don't
3610         bother using mkstemp()/mkdtemp() since our root dir is already
3611         unique. Also fixed to reset the stream resource after consuming it
3612         so that if multiple textblocks/boxes/etc reuse the FontSource,
3613         things work properly. Partial fix for drt 444.
3615         r:lewing
3617 2009-08-11  Alan McGovern  <amcgovern@novell.com>
3619         * runtime.cpp: Controls aren't really auto-focused. What
3620           happens is that when a focused control is removed from the
3621           live tree SL does not emit a LostFocus event and so when the
3622           control is added back into the tree it still thinks it has
3623           focus. This call is still needed as there can be pending
3624           GotFocus/LostFocus events waiting to be emitted. r: toshok.
3626 2009-08-11  Alan McGovern  <amcgovern@novell.com>
3628         * runtime.cpp: Make HandleUIKeyPress do the same thing as
3629           HandleUIKeyRelease when there is no toplevel so it doesn't
3630           null deref. r: sde
3632 2009-08-10  Larry Ewing  <lewing@novell.com>
3634         * bitmapimage.cpp (CreateLoader): if the image isn't a png or a
3635         jpg abort the getresource call.
3637 2009-08-07  Larry Ewing  <lewing@novell.com>
3639         * dirty.cpp (UpdateLayout): don't use the toplevel hack on
3640         noncontainers.
3642         Gets DRT #516 very close to passing slight layout problems left.
3644 2009-08-10  Andreia Gaita  <avidigal@novell.com>
3646         * ptr.h: Change the base class to not allow direct casts to Value
3647         objects. Add cast operator to cast between DO classes directly
3649 2009-08-10  Andreia Gaita  <avidigal@novell.com>
3651         * animation.[h|cpp]: Check for valid applier before trying to use it,
3652         it could be disposing, same for targetprop.
3653         * timemanager.cpp: clear applier when disposing
3655 2009-08-10  Andreia Gaita  <avidigal@novell.com>
3657         * ptr.h: Rename OwnerPtr to DOPtr to make it clear it's a smart
3658         pointer for DependencyObject.
3659         * shape.cpp, timeline.cpp: Rename OwnerPtr to DOPtr
3660         * multiscaleimage.[h|cpp]: Use DOPtr to store DOs and auto-release
3661         them when destroying
3663 2009-08-10  Alan McGovern  <amcgovern@novell.com>
3665         * frameworkelement.cpp: A new measure pass should be made if
3666           either the available width *or* available height has changed
3667           since the last measure pass.
3669 2009-08-10  Andreia Gaita  <avidigal@novell.com>
3671         * ptr.h: fix assignment operators, the copy by reference ones were
3672         causing the pointer to be destroyed prematurely when assigning via
3673         new ()
3675 2009-08-08  Chris Toshok  <toshok@ximian.com>
3677         * fontmanager.cpp (FontManager::AddResource): pass stream->handle
3678         as the first arg to stream->Read, not stream itself.  Also, get
3679         rid of "total" and just pass a 0 offset for each read, since we're
3680         writing the full buffer's contents up to nread each time anyway.
3682 2009-08-07  Andreia Gaita  <avidigal@novell.com>
3684         Fixes drt 2014
3686         * multiscaleimage.cpp: Fix the type of the left shit operations to
3687         avoid overflows. Make it an inline function for easier maintenance.
3688         * tilesource.[h|cpp]: Fix the type of the image width and height,
3689         should be bigger than int.
3691 2009-08-07  Jeffrey Stedfast  <fejj@novell.com>
3693         Fixes drt 337
3695         * textbox.cpp (TextBox::OnPropertyChanged): If setting
3696         SelectedText to "", don't emit TextChanged events if there was no
3697         selection.
3698         (PasswordBox::OnPropertyChanged): Same.
3700 2009-08-06  Chris Toshok  <toshok@ximian.com>
3702         * runtime.cpp (Surface::tick_after_attach_reached): the ordering
3703         of code between this method and Surface::ToplevelLoaded is likely
3704         still somewhat wrong, but moving the Emit here fixes drt #21.
3706 2009-08-06  Chris Toshok  <toshok@ximian.com>
3708         * window-gtk.cpp: move the InvokeTickCalls from here...
3710         * runtime.cpp: to the HandleUI* methods here, so they will be used
3711         in both windowed and windowless codepaths.
3713 2009-08-06  Chris Toshok  <toshok@ximian.com>
3715         * timemanager.h|cpp (TimeManager::RemoveTickCall): this takes
3716         another argument now (the data object passed to AddTickCall) so we
3717         can differentiate callbacks properly.
3719         * runtime.h|cpp (Surface::Attach): we don't return true from
3720         IsLoaded until after the first tick, so that our measure pass has
3721         been run (and contentpresenters are created for all content
3722         controls.)  register the tick call here (after removing any that
3723         may have already been added).
3724         (Surface::tick_after_attach_reached): set ticked_after_attach to
3725         true.
3726         (Surface::IsLoaded): we require ticked_after_attach to be true
3727         here.
3729         * cbinding.h|cpp: regen.
3731 2009-08-06  Jeffrey Stedfast  <fejj@novell.com>
3733         * textbox.cpp (TextBoxBase::OnFocusOut): Instead of clearing the
3734         selection, just set the selection to the cursor position. This
3735         way, if the control gets programatically Focus()'d again, then the
3736         cursor will be where it was just before the control lost
3737         focus. Partial fix for drt 2003.
3739 2009-08-06  Jackson Harper  <jackson@ximian.com>
3741         * xaml.cpp|xaml.h: Add bindings for checking/setting whether a
3742         property has already been set.
3743         
3744 2009-08-06  Jackson Harper  <jackson@ximian.com>
3746         * xaml.cpp: Its possible that a buffered element can add a new
3747         namespace that start_element_handler will not know about, just
3748         ignore this error and the namespace will be added when the buffer
3749         is parsed.
3751 2009-08-06  Jackson Harper  <jackson@ximian.com>
3753         * xaml.cpp: Handle null in the print_tree debug code. (This can
3754         occur when loading a null template)
3756 2009-08-05  Larry Ewing  <lewing@novell.com>
3758         * frameworkelement.cpp (UpdateLayout): revert an accidental
3759         change.
3761 2009-08-05  Jeffrey Stedfast  <fejj@novell.com>
3763         * textbox.cpp (TextBoxBase::OnKeyDown): Cut and Copy operations
3764         should not copy the text buffer to the clipboard if the contents
3765         are secret.
3767 2009-08-05  Larry Ewing  <lewing@novell.com>
3769         * uielement.cpp (ElementRemoved): clear the desired size when
3770         removing the element.
3772         * layoutinformation.cpp: partially revert one of the workarounds.
3774         * frameworkelement.cpp (Arrange): get the old_size from the
3775         RenderSize not the ActualWidth.
3777 2009-08-05  Chris Toshok  <toshok@ximian.com>
3779         * popup.cpp (class GenerationClosure): new closure for emiting the
3780         Opened and Closed events.
3781         (Popup::emit_opened, Popup::emit_closed): pass the generation from
3782         the closure to ->Emit.
3783         (Popup::OnPropertyChanged): for the tick call, pass a closure that
3784         contains the current event generation.
3786         * timemanager.h, timemanager.cpp (TimeManager::InvokeTickCalls):
3787         factor out the loop for invoking tick calls here and call it from
3788         the source tick method.
3790         * window-gtk.cpp (MoonWindowGtk::button_press)
3791         (MoonWindowGtk::button_release, MoonWindowGtk::scroll)
3792         (MoonWindowGtk::motion_notify, MoonWindowGtk::crossing_notify)
3793         (MoonWindowGtk::focus_in, MoonWindowGtk::focus_out)
3794         (MoonWindowGtk::key_press, MoonWindowGtk::key_release): call
3795         TimeManager::InvokeTickCalls from each of these methods before we
3796         call the Surface::HandleUI* method.
3798         * dependencyobject.h (class EventObject): make a couple of api
3799         changes:
3800         (AddTickCall*): add an "EventObject* data" parameter.  if it's
3801         NULL, pass "this", so we have the current behavior.
3802         (DoEmit/Emit): add a "starting_generation" optional argument.  if
3803         it's supplied, we invoke only those handlers with tokens less than
3804         the starting_generation (i.e. those handlers that were registered
3805         before the event was generated.)
3807 2009-08-05  Jeffrey Stedfast  <fejj@novell.com>
3809         * textbox.cpp (TextBoxBase::OnPropertyChanged): Don't clear the
3810         FontSource property when the FontFamily property changes.
3811         (TextBox::OnPropertyChanged): Handle FontSource property changes.
3812         (PasswordBox::OnPropertyChanged): Same.
3814         * textblock.cpp (CleanupDownloaders): Free the font_source string
3815         as well.
3816         (SetFontSource): Update the font_source string based on the
3817         downloader.
3818         (UpdateLayoutAttributes): No longer need to get the font_source
3819         string, we already have it.
3820         (UpdateFontDescriptions): Same.
3821         (OnCollectionItemChanged): Here too.
3822         (OnPropertyChanged): Update the font_source string when the
3823         FontSource property changes.
3825 2009-08-05  Jeffrey Stedfast  <fejj@novell.com>
3827         * textbox.cpp (OnMouseLeftButtonMultiClick): Don't poke at the raw
3828         GdkEventButton structure, use the new MouseEventArgs accessors
3829         instead.
3831         * eventargs.cpp (GetButton): Get the id of the button pressed.
3832         (GetClickCount): Get the number of clicks on the button.
3834 2009-08-05  Alan McGovern  <amcgovern@novell.com>
3836         * panel.cpp: The LogicalParent needs to be set before the
3837           element is added, otherwise the Loaded event can be fired
3838           before LogicalParent is set.
3840 2009-08-04  Larry Ewing  <lewing@novell.com>
3842         * uielement.cpp (DoMeasure): invalidate up the tree more
3843         agressively.  Fixes DRT #190 regression.
3845 2009-08-04  Jeffrey Stedfast  <fejj@novell.com>
3847         * textbox.cpp (TextBoxBase::OnMouseLeftButtonMultiClick): New
3848         callback for the MultiClick event.
3849         (TextBoxBase::OnMouseLeftButtonDown): No longer needs to handle
3850         double and triple mouse clicks.
3852         * uielement.h: Added a MosueLeftButtonMultiClickEvent.
3854         * runtime.cpp (CreateArgsForEvent): Handle MultiClickEvent.
3855         (HandleUIButtonPress): Handle 2 and 3 button mouse clicks.
3857         * pipeline.h (IMediaObject): FrameNode's dtor needs to be virtual.
3859 2009-08-04  Jeffrey Stedfast  <fejj@novell.com>
3861         * utils.cpp (write_all): Changed to just return int (-1 for fail,
3862         0 for success).
3863         (ExtractFile): Don't fsync(). Saves us a lot of time.
3865 2009-08-03  Larry Ewing  <lewing@novell.com>
3867         * shape.cpp (ArrangeOverride): clear the current path.
3869 2009-08-03  Larry Ewing  <lewing@novell.com>
3871         * textbox.cpp (OnModelChanged): InvalidateMeasure when things
3872         change.
3874 2009-08-03  Jeffrey Stedfast  <fejj@novell.com>
3876         * fontmanager.cpp (AddResource): Implemented a version of this
3877         interface that can take a ManagedStreamCallbacks argument.
3879         * application.cpp (GetResourceAsPath): If we are adding the X's
3880         ourselves, use MakeTempDir() instead of CreateTempDir().
3882 2009-07-31  Larry Ewing  <lewing@novell.com>
3884         * layoutinformation.cpp (GetClip): add another hack for layoutclip
3885         on Controls while things are in flux.
3887 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3889         * pipeline.cpp: Media::EnqueueWork: return a bool indicating whether
3890         the work was enqueued or not.
3892 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3894         * pipeline.cpp: Media: use the new ClearQueue overload instead of
3895         spreading the logic all over the place.
3897 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3899         * pipeline.cpp: Media: add a ClearQueue overload which optionally
3900         deletes the queue.
3902 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3904         * playlist.cpp: Don't g_warn something which can happen in normal
3905         circumstances.
3907 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3909         * mediaplayer.cpp: Plug a leak in one rare code-path.
3911 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3913         * mediaplayer.cpp: Close: dispose the AudioSource, it won't be used again.
3915 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3917         * mediaplayer.cpp: Dispose: call base class Dispose after we've finished.
3919 2009-07-31  Jeffrey Stedfast  <fejj@novell.com>
3921         * fonts.cpp (LoadPortableUserInterface): Always load the en-US
3922         font(s) first, and then load the preferred CJK font, followed by
3923         the rest. This improves drt 414.
3925         * fontmanager.cpp (GetExtents): Improved baseline alignment by
3926         adjusting Descent if Height is larger than Ascent +
3927         Descent. Especially visible with drt 107's Deobfuscated Brauhaus
3928         93 font rendering.
3930 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3932         * deployment.cpp: Dispose: we need to unref and null out the application.
3934 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3936         * error.cpp|h:
3937         * downloader.cpp:
3938         * eventargs.cpp|h: Set the object's type upon construction instead
3939         of using SetObjectType right after. This is useful when tracking
3940         objects by type - the ctor also shows up.
3942         * dependencyobject.cpp|h: Add a DependencyObject ctor that takes
3943         a Type::Kind argument.
3945 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3947         * debug.cpp: Make the stacktrace pipes thread-local. This way
3948         printing stacktraces from several threads at the same time doesn't
3949         result in a big mess.
3951 2009-07-30  Larry Ewing  <lewing@novell.com>
3953         * layoutinformation.cpp (GetClip): add a workaround for the panel
3954         case while layoutinformation is refactored.
3955         
3956 2009-07-30  Larry Ewing  <lewing@novell.com>
3958         * layoutinformation.cpp: repair a merge bug.
3960 2009-07-30  Larry Ewing  <lewing@novell.com>
3962         * layoutinformation.cpp, layoutinformation.h: move layoutinformation
3963         out of uielement.h.  Compute the layout clip on the fly.
3965         * border.cpp:
3966         * dependencyproperty.g.cpp:
3967         * frameworkelement.cpp:
3968         * frameworkelement.h:
3969         * glyphs.cpp:
3970         * media.cpp:
3971         * mediaelement.cpp:
3972         * panel.cpp:
3973         * point.h:
3974         * shape.cpp:
3975         * textblock.cpp:
3976         * textbox.cpp:
3977         * textbox.h:
3978         * uielement.cpp:
3979         * uielement.h: start reworking layout logic at we refactor
3980         layoutinformation.  Use RenderLayoutClip where appropriate.
3982 2009-07-30  Jeffrey Stedfast  <fejj@novell.com>
3984         * fontmanager.cpp (GetExtents): Much better fix than the
3985         string-comparison hack. Poke at the TrueType/OpenType OS/2 table
3986         and use the usWinAscent/usWinDescent values since this is what
3987         most Windows applications (brokenly) use according to some info I
3988         found on the web. Low and behold, this also makes the Adobe Caslon
3989         Pro metrics work out exactly like they do in Silverlight, so I'm
3990         guessing that the info I found is accurate :-)
3992 2009-07-30  Larry Ewing  <lewing@novell.com>
3994         * uielement.cpp (DoArrange): revert the parent invalidation change as it
3995         did break things.
3997 2009-07-30  Larry Ewing  <lewing@novell.com>
3999         * control.cpp (OnPropertyChanged): update the layout if the
4000         aligment changes.
4002 2009-07-30  Larry Ewing  <lewing@novell.com>
4004         * uielement.cpp (DoArrange): remove the parent invalidation call
4005         it shouldn't be required now and is contraindicated by DRT #501.
4007         * runtime.cpp: InvalidateMeasure on resize.
4009 2009-07-30  Alan McGovern  <amcgovern@novell.com>
4011         * popup.cpp:
4012         * textbox.cpp: TextBox and Popup should use AddAsyncEventCall
4014         * runtime.cpp:
4015         * dependencyobject.h:
4016         * dependencyobject.cpp: Implement a new method for adding
4017           callbacks to invoke asynchronous events. They can't be
4018           invoked using the regular AddTickCall as that causes the
4019           ordering of mouse events and asynchronous events to be
4020           incorrect preventing drt 333, 476 and some others from
4021           passing.
4023 2009-07-30  Jeffrey Stedfast  <fejj@novell.com>
4025         * fontmanager.cpp (GetExtents): Now uses the alternative method of
4026         getting font metrics. Also, when dealing with Adobe fonts, use the
4027         bbox to get metrics rather than using the normal
4028         ascender/descender/height values.
4030 2009-07-30  Jackson Harper  <jackson@ximian.com>
4032         * xaml.cpp: Swallow white space before linebreaks. 
4034 2009-07-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4036         * src.mdp: Connect the Build command in
4037         MonoDevelop with 'make install'.
4039 2009-07-30  Andreia Gaita  <avidigal@novell.com>
4041         * multiscaleimage.cpp: leak and initialization fixes
4043 2009-07-30  Andreia Gaita  <avidigal@novell.com>
4045         * shape.cpp: use smart pointer to avoid unreffing by hand
4047 2009-07-30  Andreia Gaita  <avidigal@novell.com>
4049         * timeline.cpp: leak fix
4051 2009-07-30  Andreia Gaita  <avidigal@novell.com>
4053         * ptr.h: added RefPtr and OwnerPtr, smart refcounting pointer classes
4054         * Makefile.am: updated
4056 2009-07-29  Larry Ewing  <lewing@novell.com>
4058         * border.cpp (ArrangeOverride): return the input now that it is
4059         correctly sized.
4061         * frameworkelement.cpp: short circuit Measure and Arrange if the
4062         element is collapsed.
4064 2009-07-29  Jeffrey Stedfast  <fejj@novell.com>
4066         * textbox.cpp (TextBoxBase::OnKeyDown): Only reset the IM context
4067         of the keyboard event was handled (meaning the state has changed).
4068         (TextBoxBase::OnCharacterKeyDown): Don't reset the IM context
4069         here.
4071 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4073         * shape.cpp: Plug a leak.
4075 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4077         * pipeline.cpp: IMediaObject::EmitSafe (): use same refcounting
4078         semantics as EventObject::Emit: unref the event args at the end of
4079         the Emit method.
4081 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4083         * pipeline.cpp: IMediaDemuxer::SeekAsync (): don't return before
4084         unreffing the reffed media we've got.
4086 2009-07-29  Sebastien Pouliot  <sebastien@ximian.com>
4088         * pipeline-ui.cpp: Delegate the codec integrity validation to Mono.
4089         Helper.CheckIntegrity (System.Windows.dll)
4091 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4093         * pipeline.cpp (Media::SelectDemuxerAsync): minor performance
4094         improvement: return true immediately if we've actually managed to
4095         open a demuxer instead of enqueuing another call to
4096         SelectDemuxerAsync.
4098 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4100         * pipeline-asf.cpp:
4102         * pipeline-asf.cpp (MmsPlaylistEntry::AddEntry): add the entry
4103         to the playlist before initializing it, since initializing it may
4104         end up opening it right away and then it must be present in the
4105         playlist.
4107 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4109         * pipeline-asf.cpp (ASFDemuxer::Open): unref the streams we've
4110         created when done with them.
4112 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4114         * pipeline.cpp: printf -> LOG_PIPELINE.
4116 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4118         * mp3.cpp (Mp3Demuxer::ReadHeader): unref the stream we've created
4119         when we're done with it.
4121 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4123         * audio.cpp IMediaStream::PopFrame() gives us a reffed object,
4124         unref it when done with it.
4126 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4128         * dependencyobject.h: Make EventObject::GetObjectType
4129         non-virtual. No need for a virtual method anymore, since we store
4130         the type on the object itself.
4132 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4134         * application.cpp: unref the downloader when it has finished.
4136 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4138         * utils.cpp|h: Cancellable: use strong typing to store the
4139         downloader and ref it. This way the cancel callback can use the
4140         downloader safely.
4142 2009-07-29  Alan McGovern  <amcgovern@novell.com>
4144         * textbox.h:
4145         * cbinding.h:
4146         * textbox.cpp:
4147         * cbinding.cpp: 1) TextBox cannot hook into Key press events
4148           in unmanaged code otherwise they never propagate to managed
4149           and the user cannot intercept them. Instead of hooking to
4150           the event in native code, just call native
4151           TextBox::OnKeyDown in the managed override.
4152         2) Key press events are actually handled in two different
4153           places. 'Navigation' keypresses like Left/Right/PgUp are
4154           handled when the textbox OnKeyDown virtual method is
4155           invoked. 'Character' keypresses like 'a', 'b', 'c' are
4156           handled after the KeyDown event is emitted
4157         3) If a key press does not affect the textbox state (i.e.
4158           pressing 'left' when the caret is already at the very left),
4159           then the keypress is not handled.
4160         4) The KeyDown event is emitted even if OnKeyDown is overriden
4161           and the base method is not invoked.
4162         5) The tab key should be interpreted as 'Focus next control'
4163           only after the KeyDown event handlers have run and the key
4164           press is not handled.
4166 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4168         * pipeline.cpp: NullDecoder: add wmav3 to the list of codecs we
4169         know we can't decode. This means that if the user does not have
4170         MS codecs (or any other codecs) installed, he'll get the download
4171         codecs dialog for wmav3 media too.
4173 2009-07-28  Sebastien Pouliot  <sebastien@ximian.com>
4175         * mediaelement.cpp: Add a check if the codecs have already been 
4176         downloaded/installed without refreshing the browser. This will
4177         stop additional dialogs showing up and fix a crash (x86_64) if
4178         the codecs are downloaded/installed a second time in the same 
4179         session.
4181 2009-07-27  Larry Ewing  <lewing@novell.com>
4183         * src/border.cpp:
4184         * src/frameworkelement.cpp:
4185         * src/media.cpp:
4186         * src/shape.cpp:
4187         * src/textblock.cpp:
4188         * src/usercontrol.cpp: Move the alignment logic out of the
4189         controls and into the Arrange call now.
4191         Fixes DRT #335 improves several others.
4192         
4193 2009-07-28  Jackson Harper  <jackson@ximian.com>
4195         * xaml.cpp: Handle UNMANAGEDMATRIX, it's just a matrix with
4196         another name
4197         - Don't create a Matrix for TRANSFORM properties if "Identity" was
4198         used as the string.  (kinda seems like an SL bug to me).
4200 2009-07-28  Jeffrey Stedfast  <fejj@novell.com>
4202         * multiscaleimage.cpp: Fixed a bunch of compiler warnings.
4204         * window-gtk.cpp (button_press): Revert change to drop
4205         2BUTTON_PRESS and 3BUTTON_PRESS events. TextBox needs these until
4206         we find a better way (also, 234 is still broken even with this
4207         change, which breaks 337 and possibly makes other
4208         TextBox/PasswordBox drts unfixable).
4210 2009-07-27  Larry Ewing  <lewing@novell.com>
4212         * glyphs.cpp, glyphs.h: Start implmenting glyph layout.  Fixes DRT #442.
4214 2009-07-27  Larry Ewing  <lewing@novell.com>
4216         * frameworkelement.cpp: Always round down when doing layout
4217         rounding.  
4218         
4219         * uielement.cpp (OnPropertyChanged): Invalidate layout on
4220         rounding changes.
4222         Fixes ... a lot.
4223         
4224 2009-07-27  Chris Toshok  <toshok@ximian.com>
4226         * dependencyobject.cpp (EventObject::DoEmit): we emit the XAML
4227         handler *after* all registered handlers.  part of the fix for drt
4228         234.
4230         * window-gtk.cpp (MoonWindowGtk::button_press): ignore
4231         double-click and triple click gdk events here.  part of the fix
4232         for drt 234.
4234 2009-07-27  Jackson Harper  <jackson@ximian.com>
4236         * xaml.cpp|h: Hydrate needs to accept Value* instead of a DOB.  It
4237         is legal to hydrate a top level managed non DOB class.
4238         * cbinding.cpp|h: regen
4240 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4242         * mp3.cpp: When seeking and we don't have enough data to seek to
4243         the desired pts, try again a bit later. Fixes MS DRT #59.
4245 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4247         * src.mdp: Use Makefile integration.
4249 2009-07-27  Alan McGovern  <amcgovern@novell.com>
4251         * uielement.cpp: Default styles are applied even if the user
4252           applies a style. Fixes some visual glitches in the controls
4253           toolkit site.
4255 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4257         * pipeline.cpp|h: Use Application::GetResource instead of creating
4258         downloaders to get data.
4260 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4262         * pipeline.cpp: ReportErrorOccurred: don't propagate more than one
4263         error.
4265 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4267         * application.cpp: GetResource: set the notify_size callback
4268         on the downloader too. Media must known the size whenever possible.
4270 2009-07-27  Larry Ewing  <lewing@novell.com>
4272         * uielement.cpp (GetTransformToUIElementWithError): signal and
4273         error in the to_element doesn't have a Surface case.
4275 2009-07-26  Larry Ewing  <lewing@novell.com>
4277         * rect.h: make PointInside inclusive on the top/left.
4279 2009-07-24  Larry Ewing  <lewing@novell.com>
4281         * textblock.cpp:  Rework the bounds computation to be the max of
4282         the actual and the framework element settings.  Fixes DRT #245.
4284 2009-07-24  Larry Ewing  <lewing@novell.com>
4286         * border.cpp: Apply the default constraints more carefully.
4288         * src/frameworkelement.cpp, src/frameworkelement.h: add
4289         ApplySizeContraints method, use it.
4291         * src/canvas.cpp:
4292         * src/shape.cpp:
4293         * src/textblock.cpp:
4294         * src/usercontrol.cpp: use ApplySizeContraints method.
4296 2009-07-24  Larry Ewing  <lewing@novell.com>
4298         Rename some of the layout information based on some
4299         of the tests.
4301 2009-07-24  Jeffrey Stedfast  <fejj@novell.com>
4303         * textbox.cpp (TextBoxBase::OnPropertyChanged): When our
4304         width/height properties change, pass those values along to our
4305         TextBoxView as well.
4307 2009-07-24  Jackson Harper  <jackson@ximian.com>
4309         * xaml.cpp: Instead of cloning the element set it's namescope
4310         explicitly so it doesn't get registered in another namescope when
4311         it is used as a property of an element in another namescope.
4313 2009-07-23  Jeffrey Stedfast  <fejj@novell.com>
4315         * downloader.cpp (same_domain): Fixed to be safe if/when a uri
4316         host is NULL.
4318 2009-07-23  Alan McGovern  <amcgovern@novell.com>
4320         * animation.cpp: If the initial value is null, create a Value
4321         with the correct type with IsNull set to true.
4323 2009-07-23  Jackson Harper  <jackson@ximian.com>
4325         * xaml.cpp: If we are getting a named item from the app resources
4326         we should clone it since it comes from a different namescope. This
4327         allows you to have named items in app.resources be referenced in
4328         control code as a static resource even if it has the same name as
4329         an object in the control code.
4331 2009-07-23  Jeffrey Stedfast  <fejj@novell.com>
4333         * fonts.cpp (LoadPortableUserInterface): Even if we are a
4334         Silverlight 2.0 app, we still need to load Lucida Sans for the
4335         font face extents (Lucida extents seem to be very close to what
4336         Microsoft Silverlight is using).
4338 2009-07-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4340         * runtime.cpp: HandleUIKeyRelease: add a null check before
4341         accessing toplevel. Apparently toplevel can be null when the
4342         site fails to load completely (mstv.cz / bug #506306).
4344 2009-07-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4346         * media.h: MarkerReachedEventArgs: make Markers accessible to
4347         managed code.
4349         * cbinding.h:
4350         * cbinding.cpp: Regenerated.
4352 2009-07-22  Chris Toshok  <toshok@ximian.com>
4354         * animation.h|cpp: add some more accessors for AnimationStorages
4355         so we can clone them.
4357         * dependencyproperty.h|cpp: remove all the AnimationStorage stuff
4358         from here, and put it in DependencyObject where (imo) it belonged
4359         all along.
4361         * dependencyobject.h|cpp: move the AnimationStorage stuff here,
4362         and also add support for cloning the storage while we're cloning
4363         the object.  This means that new animations started against
4364         existing objects (with animations) will inherit the right reset
4365         value.  This fixes the button animation regression.
4367 2009-07-22  Jeffrey Stedfast  <fejj@novell.com>
4369         * fonts.cpp (LoadPortableUserInterface): If the application is a
4370         Silverlight 2.0 app, default to Verdana instead of Lucida Sans
4371         Unicode.
4373         * textbox.cpp (TextBoxBase::OnKeyDown): The clipboard Cut action
4374         is a no-op for ReadOnly TextBox controls.
4376 2009-07-22  Sebastien Pouliot  <sebastien@ximian.com>
4378         * runtime.cpp: Call GetMaximumRefreshRate before unreferencing
4379         the current timemanager.
4381 2009-07-21  Jeffrey Stedfast  <fejj@novell.com>
4383         * textbox.cpp (TextBoxBase::CursorPrevWord): Fixed the logic a
4384         bit.
4385         (TextBoxBase::OnKeyDown): Implemented alternate keybindings for
4386         Cut/Copy/Paste.
4387         (TextBoxBase::OnKeyDown): If there is no selection and the user
4388         invokes the Cut or Copy commands, do not overwrite the clipboard
4389         buffer with an empty string.
4391 2009-07-21  Jackson Harper  <jackson@ximian.com>
4393         * xaml.cpp: Raise errors from managed SetProperty.
4395 2009-07-21  Jackson Harper  <jackson@ximian.com>
4397         * xaml.cpp: Don't raise errors if we are a managed element, let
4398         the managed SetProperty handle that stuff.
4400 2009-07-21  Alan McGovern  <amcgovern@novell.com>
4402         * geometry.h:
4403         * dependencyproperty.g.cpp: The issue with auto creating
4404           PathGeometry.Figures appears to be fixed so add
4405           AutoCreateValue to FiguresProperty and see how the bots
4406           react...
4408 2009-07-20  Chris Toshok  <toshok@ximian.com>
4410         * application.h|cpp: add a ResourceBase parameter to all the
4411         GetResource calls and to the GetResourceCallback delegate type.
4413         * dependencyobject.h (DependencyObject::SetResourceBase,
4414         DependencyObject::GetResourceBase): new methods.
4416         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
4417         "inherit" resource base from our parent (this might be very, very
4418         wrong...)
4419         (DependencyObject::Initialize): init resource_base to null.
4420         (DependencyObject::~DependencyObject): free resource_base.
4422         * bitmapimage.cpp (BitmapImage::UriSourceChanged): locate the
4423         resource using our resource base.
4425         * template.cpp (FrameworkTemplate::GetVisualTree): use the same
4426         resource base when expanding the template.
4428         * textblock.cpp (Inline::AddFontResource): locate the font using
4429         our resource base.
4430         (TextBlock::AddFontResource): same.
4432         * textbox.cpp (TextBoxBase::AddFontResource): same.
4433         using our resource base.
4435         * glyphs.cpp (Glyphs::SetFontResource): same.
4437         * xaml.cpp (XamlParserInfo::AddCreatedElement): factor out all
4438         those SetSurface calls, and put it here.  Also, set the resource
4439         base at the same time.
4440         (XamlLoader::Initialize): store off the resource_base.
4441         (XamlLoader::~XamlLoader): and free it.
4442         (xaml_loader_new): take a resourceBase, and pass it along.
4443         (XamlLoader::HydrateFromString): set the ResourceBase on the
4444         toplevel object.
4445         (create_element_info_from_imported_managed_type): remove the
4446         SetSurface call, just call XamlParserInfo::AddCreatedElement.
4447         (XamlElementInstanceNative::CreateItem): same.
4448         (XamlElementInfoManaged::CreateElementInstance): same.
4449         (XamlElementInfoManaged::CreateWrappedElementInstance): same.
4451         * xaml.h (class XamlLoader): add a common Initialize method, and a
4452         ctor overload that takes a "resource base", which is the uri which
4453         we're loading from.  Also add a GetResourceBase() accessor.
4455         * cbinding.h: regen
4457 2009-07-20  Larry Ewing  <lewing@novell.com>
4459         * uielement.cpp (ComputeTransform): add a hack for placing popup
4460         children for now.
4462         * popup.cpp: call updatetransform on our child whenever the offset
4463         values change.  Fixes DRTs #325 #503 
4464         
4465 2009-07-18  Jackson Harper  <jackson@ximian.com>
4467         * xaml.h|cpp: New flag on the loader for determining whether or
4468         not to auto import the default SL namespace.
4469         - Throw the proper error if the default namespace isn't available.
4470         * template.cpp: Templates get the default namespace auto
4471         imported.
4473 2009-07-17  Larry Ewing  <lewing@novell.com>
4475         * runtime.cpp (Attach): copy the current framerate to the new
4476         timemanager.
4478 2009-07-17  Jeffrey Stedfast  <fejj@novell.com>
4480         * textbox.cpp (TextBoxBase::Commit): Respect MaxLength and
4481         multiline support.
4482         (TextBoxBase::Paste): Consider the SelectionLength in our
4483         MaxLength overflow calculation.
4484         (TextBuffer::ctor): Instead of taking ownership of a string
4485         buffer, just copy it instead. This keeps memory management more
4486         obvious higher up.
4487         (TextBoxUndoActionInsert::ctor): No longer takes ownership of the
4488         'inserted' string.
4489         (TextBoxUndoActionReplace::ctor): Same, so copy it.
4490         (*Box::OnPropertyChanged): Fixed to g_free(text) after creating
4491         the undo action. I think some of these situations leaked before.
4493 2009-07-17  Stephane Delcroix  <sdelcroix@novell.com>
4495         * bitmapimage.h: tag UriSourceProperty with AlwaysChange. fix #2014
4497 2009-07-17  Stephane Delcroix  <sdelcroix@novell.com>
4499         * multiscaleimage.cpp: more protections against crash with 31 layers
4501 2009-07-17  Stephane Delcroix  <sdelcroix@novell.com>
4502         
4503         * multiscaleimage.cpp: allow up to 31 layers.
4505 2009-07-17  Stephane Delcroix  <sdelcroix@novell.com>
4507         * multiscaleimage.cpp: emit OpenImageSucceed for non DZ tile sources
4509 2009-07-17  Alan McGovern  <amcgovern@novell.com>
4511         * runtime.cpp: Correctly set 'emittingMouseEvent' to
4512           true/false when we receive a mouse event. Fixes some mouse
4513           capture issues in drt 535
4515 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4517         * playlist.cpp|h: Make the *Async methods really async, and add corresponding
4518         non-async methods.
4520         * mediaplayer.cpp: Don't allow Play while we're seeking.
4522         * mediaelement.cpp: When calling any of the async methods on the playlist,
4523         set the expected state immediately, since CurrentState is not async. Also
4524         allow Play/Pause/Stop if we're already in the desired state, since there might
4525         be another state changed pending.
4527 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4529         * mediaplayer.cpp|h: Emit BufferUnderflowEvent when the buffer underflows.
4531 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4533         * pipeline.cpp|h: Notify the decoder when a seek has completed so
4534         that it can clean its state properly. FillBuffers: the final buffer size
4535         is equal to the smallest buffer size of all the streams, not the buffer
4536         size of the last stream.
4538 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4540         * mediaplayer.cpp: Video/AudioFinished: don't do anything if the video/audio
4541         has already finished.
4543 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4545         * playlist.cpp|h: Fix IsSingleFile implementation.
4547         * mediaelement.cpp|h: Don't emit MediaOpened after reloading a media after
4548         a Stop for non-playlist media.
4550 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4552         * mediaplayer.cpp|h: Add a StopAudio method which stops the audio, and use
4553         it whenever we stop the audio. AdvanceFrame: For media with a specified
4554         duration stop the audio when we've reached the desired duration.
4556 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4558         * mediaelement.cpp: OpenCompletedHander: Before emitting
4559         DownloadProgressChangedEvent get the highest DownloadProgress value
4560         from either our own dependency property or the media. For mms streams
4561         download progress needs to be 1.0 when emitting MediaOpenedEvent,
4562         the mms code sets media's DownloadProgress to 1.0 after parsing the
4563         asf header correctly, but since the media emits the DownloadProgressChanged
4564         event async, the dependency property in MediaElement hasn't been updated
4565         yet in OpenCompletedHandler.
4567 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4569         * pipeline.cpp: Allow buffering progress to go down, not only up.
4570         Also fix progress events to only emit if delta > 0.5% or if equal
4571         to lower/upper limits.
4573 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4575         * pipeline.cpp|h: When we get a decode frame request from another
4576         thread, store the request on the demuxer in a list, instead of on the
4577         media thread's stack. This ensures that decode frame requests are
4578         decoded in the same order they're requested.
4580         * type.h:
4581         * value.h:
4582         * cbinding.h:
4583         * type-generated.cpp: Regenerated.
4585 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4587         * playlist.cpp|h: Added and Emit EntryChangedEvent.
4589         * type-generated.cpp: Regenerated.
4591 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4593         * playlist.cpp: PlaylistList::Dispose: set current_node to null, since we'll delete
4594         it here.
4596 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
4598         * mediaelement.cpp: Only emit BufferingProgressChanged if it has gone up. The real
4599         buffer level will fluctuate as we play.
4601 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4603         * mediaelement.cpp|h: When we pause, store the current position, which we must return
4604         while paused. It may differ from the actual position when we pause, since the actual
4605         pause is done async.
4607 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4609         * mediaplayer.cpp|h:
4610         * mediaelement.cpp|h: Use a property value provider for
4611         Render/DroppedFramesPerSecond.
4613 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4615         * mediaelement.cpp|h: Make ReportErrorOccurred thread-safe. Managed code might
4616         call us from a worker thread.
4618 2009-07-16  Jackson Harper  <jackson@ximian.com>
4620         * xaml.cpp: When creating user controls make sure that we are
4621         hydrating if an x:Class type name is used.
4623 2009-07-16  Jeffrey Stedfast  <fejj@novell.com>
4625         * textbox.cpp (TextBoxUndoActionInsert::.ctor): Now takes an
4626         'atomic' argument. If atomic is true, then the buffer is not
4627         growable. This is the behavior we want for TextBoxBase::Paste(),
4628         but not TextBoxBase::Commit() (which needs to allow growable
4629         insert actions so that Undo removes the string of text the user
4630         just typed as opposed to just the most recent character).
4631         (TextBoxBase::Paste): Pass 'true' as the 'atomic' argument to
4632         TextBoxUndoActionInsert::.ctor().
4634 2009-07-16  Alan McGovern  <amcgovern@novell.com>
4636         * control.h:
4637         * uielement.h:
4638         * control.cpp:
4639         * uielement.cpp: 1) If the Control is not attached to a
4640           subtree which has been loaded, don't propagate IsEnabled to
4641           its children.
4642         2) Whenever a Control is loaded we traverse it's visual
4643           parents until we find another control and propagate the
4644           IsEnabled state.
4646 2009-07-16  Stephane Delcroix  <sdelcroix@novell.com>
4648         * multiscaleimage.h: mark the ViewportOrigin and ViewportWidth
4649         properties as AlwaysChange. fix drt #291.
4651 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4653         * dependencyobject.cpp: Retrieve all instance variables we need
4654         into local variables before decreasing the refcount. If the
4655         refcount is > 0 after decreasing it, we can't access instance
4656         variables anymore, since another thread might have unreffed which
4657         would cause the object to be deleted already.
4659 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4661         * dependencyobject.cpp: #if DEBUG -> #if SANITY and fix a typo in
4662         a comment.
4664 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4666         * dependencyobject.cpp: Add sanity check for refcount < 0.
4668 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4670         * dependencyobject.cpp: Move sanity verification into #if SANITY.
4672 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4674         * dependencyobject.h: Is, GetType, GetTypeName: use the Type
4675         overloads which takes a Deployment and provide our deployment
4676         instance.
4678 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4680         * type.cpp|h.in: Add Find, IsAssignable and IsSubclassOf methods
4681         which takes a Deployment argument for when we already have the
4682         Deployment handy.  This way we can avoid hitting
4683         Deployment::GetCurrent on some frequently used methods.
4685         * type.h: Regenerated.
4687 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4689         * runtime.h: Add stack trace to warning.
4691 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4693         * audio.cpp: Underflowed: if we haven't ended and don't have any
4694         more frames, we need to set the Waiting bit so that we start
4695         playing again when we get more frames.
4697 2009-07-16  Stephane Delcroix  <sdelcroix@novell.com>
4699         * multiscaleimage.cpp: reset the bitmapimage uri for the next time,
4700         avoid issues while reusing dlders for the same images, like in drt2013
4702 2009-07-16  Stephane Delcroix  <sdelcroix@novell.com>
4704         * tilesource.h|cpp, multiscleimage.h|cpp: invalidate the full msi cache
4705         on tilesource InvalidateTileLayer ().
4707 2009-07-16  Jackson Harper  <jackson@ximian.com>
4709         * xaml.cpp: Remove some dead code.
4711 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4713         * deployment.h: DeploymentStack: Added to ease push/pop current
4714         deployment when calling into a browser.
4716 2009-07-15  Chris Toshok  <toshok@ximian.com>
4718         * clock.h|cpp (Clock::CalculateFillTime): split this out from
4719         Clock::Begin since we can seek on a clock that hasn't actually hit
4720         Clock::Begin yet.
4721         (Clock::Begin): call CalculateFillTime.
4722         (Clock::UpdateFromParentTime): change our calculations slightly
4723         for what localTime is in the face of a seek, and update
4724         progress/localtime even when stopped.  Also, call
4725         CalculateFillTime if we're seeking on a clock that hasn't started,
4726         to make sure we get the proper progress.
4727         (Clock::Seek): don't apply the SpeedRatio here, we do it in
4728         UpdateFromParentTime.
4730         * animation.h|cpp (AnimationStorage::GetStopValue): remove, it's
4731         never used.
4732         (AnimationStorage::UpdatePropertyValue): pass the stopValue or
4733         baseValue as the defaultDestinationValue to
4734         AnimationClock::GetCurrentValue.
4735         (AnimationStorage::ResetPropertyValue): use ?: instead of if+else.
4736         (DoubleAnimation::GetCurrentValue): if there's a correctly typed
4737         defaultDestinationValue, use that before the base case of end =
4738         start.
4739         (ColorAnimation::GetCurrentValue): same.
4740         (PointAnimation::GetCurrentValue): same.
4742 2009-07-15  Jackson Harper  <jackson@ximian.com>
4744         * xaml.cpp|h: Consolidate some of the data passed to
4745         every callback and not used much into a struct.
4747 2009-07-15  Jeffrey Stedfast  <fejj@novell.com>
4749         * fontmanager.cpp (IndexFontSubdirectory): font_stream_new() can
4750         return NULL, so properly handle this error condition.
4751         (IndexFontFile): Same.
4752         (FontManager::OpenFontFace): Here too.
4753         (OpenSystemFont): Don't destroy the FcPattern until after opening
4754         the font (otherwise the filename will be free'd memory).
4756         * textbox.cpp (TextBoxView::Paint): Use the CaretBrush property to
4757         get the brush used for rendering the blinking caret. This is a 3.0
4758         feature.
4760 2009-07-15  Alan McGovern  <amcgovern@novell.com>
4762         * control.h:
4763         * control.cpp: Remove the Control::SetVisualParent override
4764           which ensures Control::IsEnabled is propagated correctly as
4765           this needs to be performed in UIElement::SetVisualParent.
4766           Set the subtreeobject before calling
4767           FrameworkElement::ElementAdded otherwise Control::IsEnabled
4768           cannot be propagated.
4770         * uielement.h:
4771         * uielement.cpp: Whenever the visual parent is changed on a
4772           UIElement we need to propagate Control::IsEnabled changes
4773           down the tree. Allows drt 557 to get a lot further.
4775 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4777         * mediaelement.cpp: SetProperties: set last seeked-to pts to 0.
4779 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4781         * pipeline.cpp: When seeking, reset buffering progress to 0.
4783 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4785         * mediaelement.cpp: SetDemuxerSource: no downloading goes on here
4786         (that we know of), so initialize DownloadProgress to 1.0.
4788 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4790         * mediaelement.cpp: Don't emit CurrentStateChanged after calling
4791         SetState, since SetState will also emit the event.
4793 2009-07-15  Alan McGovern  <amcgovern@novell.com>
4795         * tabnavigationwalker.cpp: If a child node is disabled, there
4796           is no point in walking its children or attempting to tab to
4797           it.
4799 2009-07-15  Jackson Harper  <jackson@ximian.com>
4801         * xaml.cpp: We don't want to auto import the SL namespaces when
4802         loading files
4803         
4804 2009-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4806         * pipeline.cpp|h: AudioStream: add a keyframe flag to the ctor.
4808         * cbinding.cpp|h: Regenerated.
4810 2009-07-15  Stephane Delcroix  <sdelcroix@novell.com>
4812         * bitmapimage.h|cpp: drop the downloader references, rely on
4813         Application::GetResource () for getting from resource AND downloading. The
4814         old downloader mechanism for v1 js callbacks.
4816 2009-07-14  Stephane Delcroix  <sdelcroix@novell.com>
4818         * application.h|cpp: Application.GetResource () now try to get the resource
4819         from the managed callback, then fallback to downloading.
4821 2009-07-14  Stephane Delcroix  <sdelcroix@novell.com>
4823         * utils.h|cpp: Cancellable class, passed as method argument, allows
4824         to abort an async action.
4826 2009-07-15  Stephane Delcroix  <sdelcroix@novell.com>
4828         * tilesource.h|cpp: add an invalidate_tile_layer_func so MSI can
4829         hook itself in and invalidate the cache
4831 2009-07-15  Stephane Delcroix  <sdelcroix@novell.com>
4833         * tilesource.h|cpp: stub InvalidateTileLayer
4835 2009-07-15  Alan McGovern  <amcgovern@novell.com>
4837         * control.cpp: Ensure that the control loses focus when it is
4838           disabled even if there are no other focusable controls. Also
4839           ensure the surface is not null before using it, fixes a
4840           regression in 432.
4842 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4844         * error.h: ErrorEventArg: Add accessors that can be pinvoked.
4846         * cbinding.cpp|h: Regenerated.
4848 2009-07-15  Alan McGovern  <amcgovern@novell.com>
4850         * control.cpp: When the focused control is disabled, tab to
4851           the next suitable control.
4853 2009-07-15  Alan McGovern  <amcgovern@novell.com>
4855         * runtime.h:
4856         * runtime.cpp: Implement the default autofocusing behaviour
4857           which silverlight exhibits. Apparently if the root control
4858           is focused, silverlight will keep attempting to focus a
4859           child of that control until it succeeds. Once a child
4860           control is focused, the focus changed events are emitted
4861           immediately, ignoring the usual focusing rules. Fixes DRT
4862           323.
4864 2009-07-15  Alan McGovern  <amcgovern@novell.com>
4866         * uielement.cpp: When clearing the Loaded flag on a UIElement,
4867           we should clear the flag on all visual children too.
4869 2009-07-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4871         * audio.cpp: Ref when we're supposed to ref. Fixes a crash.
4873 2009-07-14  Larry Ewing  <lewing@novell.com>
4875         * panel.cpp (OnPropertyChanged): make sure we invalidate the panel
4876         bounds when the bg changes.  Fixes 641
4878 2009-07-14  Larry Ewing  <lewing@novell.com>
4880         * border.cpp (OnSubPropertyChanged): elements must listen to
4881         subproperty changes for brushes.  Fixes 2020
4883 2009-07-14  Alan McGovern  <amcgovern@novell.com>
4885         * tabnavigationwalker.cpp: If TabNavagationWalker::Focus () is
4886           called on a Control with the 'Cycle' navigation mode and
4887           none of the children of that node can be tabbed to, then
4888           focus remains on that control.
4890 2009-07-13  Jeffrey Stedfast  <fejj@novell.com>
4892         * fonts.cpp (TextFont::Load): Don't g_strfreev() the families
4893         string array until after we've finished using the hash
4894         table. Prevents FMRs.
4896 2009-07-13  Jackson Harper  <jackson@ximian.com>
4898         * xaml.cpp: Don't allow setting x:Name and Name on the same
4899         element
4900         - Raise an error if we try to set a property to an incompatible
4901         type.
4903 2009-07-13  Alan McGovern  <amcgovern@novell.com>
4905         * runtime.cpp:
4906         * uielement.cpp: If the focused element is removed from the
4907           visual tree, it should lose focus.
4909 2009-07-13  Jackson Harper  <jackson@ximian.com>
4911         * xaml.cpp: Oops, trying to get the element name from the wrong
4912         void*
4914 2009-07-13  Jackson Harper  <jackson@ximian.com>
4916         * xaml.cpp: Handle MoonErrors for AddChild.
4918 2009-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4920         * mp3.cpp:
4921         * pipeline.h:
4922         * playlist.cpp:
4923         * pipeline.cpp:
4924         * pipeline-asf.cpp:
4925         * mms-downloader.cpp: IMediaObject: make the media field
4926           private, and add thread-safe property accessors (using a
4927           mutex and always returning a reffed object). Update all code
4928           which accessed the old accessor to use the new accessor and
4929           unref the media when done.
4931 2009-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4933         * pipeline.cpp|h: Deleted MemoryNestedSource, not used anymore.
4935         * type.h:
4936         * value.h:
4937         * type-generated.cpp: Regenerated.
4939 2009-07-13  Alan McGovern  <amcgovern@novell.com>
4941         * control.cpp: A control does not have to be loaded to be
4942           focusable, the visual tree it's attached to has to be
4943           loaded.
4945 2009-07-13  Alan McGovern  <amcgovern@novell.com>
4947         * cbinding.h:
4948         * cbinding.cpp:
4949         * tabnavigationwalker.h: TabNavigation should activate if the
4950           control does not handle the Tab key
4952 2009-07-13  Alan McGovern  <amcgovern@novell.com>
4954         * src.mdp:
4955         * cbinding.h:
4956         * Makefile.am:
4957         * collection.h:
4958         * collection.cpp:
4959         * tabnavigationwalker.h:
4960         * tabnavigationwalker.cpp: Commit the initial implementation
4961           of the TabNavigationWalker. Supports the three tabbing modes
4962           and also forward/backward tabbing. Passes drt 323 except for
4963           a default focusing issue.
4965 2009-07-13  Alan McGovern  <amcgovern@novell.com>
4967         * keyboard.cpp: Handle shift + tab (GDK_ISO_Left_Tab) as a
4968           KeyTab press.
4970 2009-07-13  Jérémie Laval  <jeremie.laval@gmail.com>
4971         * src/xaml.cpp
4972         * src/dependencyproperty.cpp: Added const modifier to local variables.
4973         Fix the build with recent gcc.
4975 2009-07-10  Chris Toshok  <toshok@ximian.com>
4977         * value.h.in|cpp (Value::Clone): new method, clone the DO if the
4978         value contains one, and otherwise just copy the contents.
4980         * namescope.cpp (NameScope::CloneCore): clone the mapping (hm,
4981         this is probably wrong, as the mapping needs to reference cloned
4982         objects, not the same objects that existed in the original
4983         mapping.
4985         * collection.h|cpp (Collection::CloneCore): clone the collection
4986         contents.
4988         * dependencyproperty.h|cpp (resolve_property_path): add a
4989         promoted_values hashtable argument.  if the value has already been
4990         promoted, don't do it again. promote the first value we can while
4991         resolving the property path.  Don't promote UIElement subclasses
4992         though.
4993         
4994         * dependencyobject.h|cpp: add api for cloning (deep copying) for
4995         DependencyObjects.  DependencyObject::Clone is the public
4996         interface, with subclasses overriding ::CloneCore if they need to.
4998         * color.cpp (color_to_string): multiply by 255, not 256.
5000         * animation.h|cpp (Storyboard::HookupAnimationsRecurse): this
5001         takes a hashtable now so we don't promote values more than
5002         once (doing so causes previous animations to target objects that
5003         are no longer attached anywhere).
5005         * cbinding.h, cbinding.cpp, value.h, type-generated.cpp: regen.
5007 2009-07-10  Larry Ewing  <lewing@novell.com>
5009         * shape.cpp (MeasureOverride): start working towards fixing
5010         LayoutShapes with some tweaking here.
5011         (Clip): apply the framework clip to elements in the flow too.
5013 2009-07-10  Jeffrey Stedfast  <fejj@novell.com>
5015         * textbox.cpp (TextBoxBase::CursorNextWord): Emulate Windows
5016         instead of Gtk+.
5017         (TextBoxBase::CursorPrevWord): Same.
5018         (TextBoxBase::KeyPressRight): If there is currently a selection
5019         and the user presses ArrowRight by itself, set the anchor and
5020         cursor at the end of the selection.
5021         (TextBoxBase::KeyPressLeft): Same idea, but set them at the start
5022         of the selection.
5024 2009-07-10  Jeffrey Stedfast  <fejj@novell.com>
5026         * textbox.cpp: Always set SelectionStart before
5027         SelectionLength. Fixes a bug when selecting backwards from the end
5028         of the buffer.
5030 2009-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5032         * mediaelement.cpp|h: Store the last seeked-to position so that we never
5033         return a value before that as the current Position. MS DRT #486 uses
5034         a MediaStreamSource which returns frames before the seeked to position
5035         after seeking, and the test checks that MediaElement's Position property
5036         never returns a value before the seeked to position.
5038 2009-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5040         * audio.cpp: When we stop, we need to discard any audio data we might
5041         have stored.
5043 2009-07-10  Sebastien Pouliot  <sebastien at ximian.com>
5045         * runtime.cpp|h, type-generated.cpp: Rename 
5046         SourceDownloadCompletedEvent to SourceDownloadCompleteEvent
5048 2009-07-09  Jeffrey Stedfast  <fejj@novell.com>
5050         Fixes DRT #246
5052         * uri.cpp: Don't use a GData for params, instead use a custom
5053         linked-list. This makes it easier to compare param lists.
5054         (operator==): Compare params.
5056         * textbox.cpp (TextBoxBase::OnFocusOut): When we focus out, clear
5057         the selection.
5059 2009-07-09  Jackson Harper  <jackson@ximian.com>
5061         * dependencyobject.cpp|h: Add a little more logic for setting
5062         things to NULL and consolidate in it's own function (STRING can
5063         now be set to NULL).
5065 2009-07-09  Sebastien Pouliot  <sebastien at ximian.com>
5067         * downloader.cpp|h: Don't check redirection AFTER downloading the
5068         data. Expose CheckRedirectionPolicy so the plugin can check for
5069         the redirection policy when creating a new stream.
5070         * uri.cpp|h: Add IsAbsolute method and make the return value of
5071         IsScheme const.
5073 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5075         * playlist.cpp: StopAsync: (PlaylistEntry): don't stop the MediaPlayer,
5076         the root takes care of that. (Playlist): loop over all children and
5077         call StopAsync on them, this way all nested playlists are reset properly
5078         (PlaylistRoot): when done stopping, reopen us.
5080 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5082         * playlist.cpp: Skip UTF8 boms when checking if a file is a playlist.
5084 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5086         * mediaelement.cpp: If we don't AutoPlay, we end up Paused, not Stopped.
5088 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5090         * mediaelement.cpp: Don't go directly into a Buffering state, when
5091         MediaOpened is emitted we must be either in Paused or Playing state.
5093 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5095         * mediaelement.cpp: Seek: if CanSeek is false, don't seek.
5097 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5099         * mediaelement.cpp|h: Emit CurrentState events asynchronously.
5101 2009-07-08  Larry Ewing  <lewing@novell.com>
5103         * frameworkelement.cpp (Arrange): apply min/max values to the
5104         offer.
5106 2009-07-08  Jeffrey Stedfast  <fejj@novell.com>
5108         * fontmanager.cpp (FontManager::OpenSystemFont): Make 2 attempts
5109         at opening the requested system font. First, try using the font
5110         name exactly as the user gave it to us. If that fails, fallback to
5111         canonicalizing it and the style values.
5112         (style_diff): Modify the algorithm used to compare the style
5113         difference between 2 fonts.
5115 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5117         * validators.cpp|h:
5118         * mediaelement.h: Add validators for Balance and Volume.
5119         This fixes MS DRT #960.
5121         * value.cpp|in: Add support for changing a value.
5123         * value.h:
5124         * dependencyproperty.g.cpp: Regenerated.
5126 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5128         * playlist.h|cpp: Add support for PARAMS elements in ASX files. Fix
5129         some casing changes with media attributes. PlayNext: fix logic, after
5130         finishing a nested playlist we must play the next entry in our playlist,
5131         not finish right away. If the pipeline raises a MediaError event due to
5132         missing a codec (which is most likely due to an unsupported media file),
5133         don't propagate the error, just play the next entry. Fix a lot of error
5134         code/message changes from 1.0 to 2.0. MS DRT #78 now passes, as well
5135         as 99.6% of our playlist tests.
5137 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5139         * pipeline.h:
5140         * playlist.h|cpp: Unify playlist detection into one place and add
5141         support for skipping initial whitespace in the file.
5143 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5145         * playlist.cpp|h: String setters: be consistent: take a const string
5146         and dup inside the setter if required, instead of always when calling
5147         the setter, which may leak.
5149 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5151         * playlist.cpp: OnASXStartElement: null initialize to avoid reading 
5152         random memory.
5154 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5156         * playlist.cpp: Cleanup: cleanup properly since we may continue to live
5157         after this method has been called.
5159 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5161         * playlist.cpp: PlaylistEntry: needs to ref/unref the source. 
5163 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5165         * pipeline.cpp:
5166         * playlist.cpp|h: Store any ErrorEventArgs in the PlaylistParser, and if
5167         the parsing fails, propagate the args up in the pipeline.
5169 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5171         * mediaelement.cpp: We need to populate media attributes before raising
5172         MediaOpened.
5174 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5176         * mediaelement.cpp: When emitting MediaOpened, ensure that DownloadProgress
5177         has changed at least a tiny bit.
5179 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5181         * mediaelement.cpp: MediaOpened event comes with an empty RoutedEventArgs.
5183 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5185         * mediaelement.cpp: Properly set CanPause and CanSeek, and always use 
5186         mediaplayer's duration as NaturalDuration.
5188 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5190         * mediaplayer.cpp: All starting points seem to be allowed now, so don't
5191         throw an error event for starting point > duration anymore. Also duration
5192         is always the entire length of the media, regardless of when we start and
5193         how long we're supposed to play.
5195 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5197         * error.cpp|h: Add custom information to ErrorEventArgs, to provide
5198         better Moonlight debugging and in some cases we need more information
5199         than what MS reports.
5201 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5203         * media.cpp: MediaAttributes are case-insensitive.
5205 2009-07-07  Jeffrey Stedfast  <fejj@novell.com>
5207         * fontmanager.cpp (canon_font_family_and_style): New convenience
5208         function to canonicalize font family & style info, split out of
5209         IndexMatchFace().
5210         (IndexMatchFace): Use the new function.
5212 2009-07-07  Jackson Harper  <jackson@ximian.com>
5214         * style.h: Need an internal setter for IsSealed so we can do the
5215         parser seal/unseal hack.
5217 2009-07-07  Sebastien Pouliot  <sebastien@ximian.com>
5219         * downloader.cpp|h: Add a new FontPolicy since it differs from 
5220         XamlPolicy (which is otherwise *unused*) and fix policies wrt
5221         http://msdn.microsoft.com/en-us/library/cc189008(VS.95).aspx
5222         * glyphs.cpp, textblock.cpp, textbox.cpp: Use the new FontPolicy
5223         when downloading
5225 2009-07-07  Alan McGovern  <amcgovern@novell.com>
5227         * namescope.cpp: Once a namescope is locked, don't allow names
5228           to be registered or unregistered. Fixes the case where the
5229           name is changed on a template item.
5231 2009-07-07  Alan McGovern  <amcgovern@novell.com>
5233         * xaml.h:
5234         * xaml.cpp:
5235         * template.cpp: When expanding a template, mark all the
5236           children as TemplateItems so they will be able to look up
5237           the correct namescope.
5239         * control.h:
5240         * control.cpp:
5241         * dependencyproperty.g.cpp: Add an "IsTemplateItem" attached
5242           property.
5244         * dependencyobject.h:
5245         * dependencyobject.cpp: Add extra overloads to FindName and
5246           FindNameScope so that we can tell whether we are looking up
5247           a template name or regular name.
5249         * namescope.h:
5250         * namescope.cpp: Add the ability to lock a namescope so it
5251         can be recognised as a template namescope.
5253 2009-07-07  Jackson Harper  <jackson@ximian.com>
5255         * xaml.cpp: Lookup properties on the owner type so attached
5256         properties get looked up properly when setting them via text ie
5257         <Canvas.Left>5</Canvas.Left>
5259 2009-07-06  Jackson Harper  <jackson@ximian.com>
5261         * xaml.cpp: Ignored elements should buffer their contents
5262         - Add in Ignored attributes
5264 2009-07-06  Jackson Harper  <jackson@ximian.com>
5266         * xaml.cpp: Implement ignorable namespaces.
5268 2009-07-06  Larry Ewing  <lewing@novell.com>
5270         * multiscaleimage.cpp (ZoomAboutLogicalPoint): make this compile.
5272 2009-07-06  Stephane Delcroix  <sdelcroix@novell.com>
5274         * multiscaleimage.cpp, multiscaleimage.h: keep the zoom and pan targets
5275         so ZoomAbout *= the target's value for zoom, not the current one.
5277 2009-07-06  Jeffrey Stedfast  <fejj@novell.com>
5279         Fixes drt 249.
5281         * fonts.cpp (LoadPortableUserInterface): Return the index of the
5282         Lucida font face.
5283         (TextFont::Load): If PUI is our first family, keep track of which
5284         face the Lucida face is and use that as our master. Otherwise use
5285         the first face.
5286         (TextFont::UpdateFaceExtents): Use the 'master' face to get the
5287         extents from, rather than the first face.
5289 2009-07-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5291         * playlist.cpp: PlayNext: play even if previous entry didn't fail.
5292         Fixes our test #136.
5294 2009-07-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5296         * playlist.cpp|h: Remove wsx/smil parsing, it's a server side
5297         playlist format so we'll never get it, it'll be parsed on the
5298         media server.
5300 2009-07-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5302         * mediaelement.cpp: Fix warning.
5304 2009-07-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5306         * src.mdp: Updated.
5308 2009-07-03  Larry Ewing  <lewing@novell.com>
5310         * textblock.cpp (ArrangeOverride): try to get textblock height
5311         stretching closer.  See 295 and 2020 for examples.
5313 2009-07-03  Alan McGovern  <amcgovern@novell.com>
5315         * runtime.cpp: We don't need to change these actually.
5317 2009-07-03  Alan McGovern  <amcgovern@novell.com>
5319         * runtime.cpp: When inside the if statement, we know that
5320           toplevel and element are the same, so use 'element' instead
5321           of 'toplevel' in case the toplevel is removed during the
5322           loaded/resized event. Fixes memorabilia.
5324 2009-07-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5326         * mms-downloader.cpp: ProcessResponseHeaderCallback:
5327         set current deployment.
5329 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5331         * pipeline-asf.cpp|h:
5332         * mms-downloader.cpp|h: If downloading the mms url
5333         doesn't succeed, raise an error. Fixes MS DRT #222
5334         completely.
5336 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5338         * pipeline-asf.cpp:
5339         * mediaelement.cpp: When playing an mms stream, SL sets
5340         DownloadProgress to 1.0 after downloading the header.
5341         Makes MS DRT #222 reach a bit further.
5343 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5345         * pipeline.cpp: Fix printf.
5347 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5349         * mediaelement.cpp: Handle DownloadProgressChanged events
5350         properly.
5352 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5354         * downloader.cpp|h: Add another downloader API
5355         method, this time to get the DownloaderResponse.
5357         * cbinding.cpp|h: Regenerated.
5359 2009-07-02  Stephane Delcroix  <sdelcroix@novell.com>
5361         * multiscaleimage.h: instruct the generator to do more for us.
5363 2009-07-02  Chris Toshok  <toshok@ximian.com>
5365         * propertypath.h: fix operator== and add operator!=.
5367         * validators.h|cpp: add StoryboardTargetPropertyValidator.
5369         * dependencyproperty.g.cpp: regen.
5371         * animation.h (class Storyboard): use a special validator for
5372         TargetPropertyProperty such that it follows the semantics laid out
5373         in StoryboardTest.SetTargetPropertyTwice*.
5375 2009-07-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5377        * mediaelement.cpp: Protect against emitting BufferingProgressChanged
5378        when the actual value hasn't changed.
5380        * pipeline.cpp: FillBuffers: don't report any buffering progress
5381        if we don't have any media streams.
5383 2009-07-02  Jeffrey Stedfast  <fejj@novell.com>
5385         * fonts.cpp (LoadPortableUserInterface): Now takes a 'lang'
5386         argument which is used for loading the preferred default font (by
5387         language) first, before the other fallback fonts.
5388         (TextFont::Load): Pass in the 'lang' argument.
5389         (TextFontDescription): Added methods to get/set a Language
5390         property.
5392         * textblock.cpp (Inline::UpdateFontDescription): Set the language
5393         on the TextFontDescription.
5394         (TextBlock::OnPropertyChanged): If the
5395         FrameworkElement::LanguageProperty changes, reload the fonts and
5396         invalidate.
5398 2009-07-02  Jackson Harper  <jackson@ximian.com>
5400         * xaml.cpp: Fix error code so it gets propogated up when
5401         validating templates.
5403 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5405         * runtime.cpp: Fix printf.
5407 2009-07-02  Stephane Delcroix  <sdelcroix@novell.com>
5409         * multiscaleimage.h|cpp: handle the various motion finished separately
5410         and only emit th eMotionFinished event if all the 3 (zoom, pan, fade)
5411         animations are completed.
5413 2009-07-02  Stephane Delcroix  <sdelcroix@novell.com>
5415         * multiscaleimage.h|cpp: use 2 internals dp for animating pan & zoom.
5416         use a custom property provider so getting vp origin or width returns
5417         the current value, while setting them sets the animation's targets.
5419 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5421         * pipeline.cpp: FillBuffers: Only take into
5422         account media streams when trying to determine
5423         if all streams have reached its end. Fixes our test
5424         #150.
5426 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5428         * mediaelement.cpp: Reinvalidate everything when
5429         clearing a source. Fixes MS DRT #45 (after setting
5430         the source to an empty string, the media element
5431         shouldn't render anything anymore).
5433 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5435         * pipeline.cpp: FillBuffers: Take into account that
5436         decoders may call SetOutputEnded once SetInputEnded
5437         is called, and update the number of ended streams
5438         immediately. Fixes our test #111.
5440 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5442         * pipeline.cpp:
5443         * playlist.cpp: Make debug output more descriptive.
5445 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5447         * pipeline-asf.cpp|h: Reimplement support for mms seeking.
5449 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5451         * mp3.cpp: GetFrameAsyncInternal: if we don't have enough data,
5452         try again later.
5454 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5456         * mp3.cpp: Fix parsing of xing vbr headers causing wrong
5457         duration to get calculated of the file.
5459 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5461         * mp3.cpp: FindMpegHeader: fix return value: the offset of
5462         the header goes into the result output variable and we return
5463         success instead of returning a bogus error value.
5465 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5467         * pipeline.cpp: If we couldn't select a demuxer because of
5468         not having enough data yet, try again later.
5470 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5472         * mediaelement.cpp: If Source (or UriSource) is either null
5473         or an empty string, we're only supposed to clean up, not 
5474         trying to play the null/empty string.
5476 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5478         * pipeline.cpp: Use ProgressEventArgs to pass buffering progress
5479         to MediaElement. Clamp BufferingProgress to 0.0 <=> 1.0, and if
5480         all streams have finished their output, set buffering progress
5481         to 1.0.
5483         * playlist.cpp: Properly forward progress event args.
5485         * mediaelement.cpp: Set buffering progress when it changes,
5486         and raise BufferingProgressChanged. Don't try to autoplay
5487         when buffering progress is < 1.0, wait until it reaches 1.0.
5489 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5491         * audio-pulse.cpp: Fix warning.
5493 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5495         * audio-alsa.cpp: WriteMmap: If we try to write with an audio
5496         source which has ended, call Underflowed, since that's what's
5497         happened.
5499 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5501         * audio-alsa.cpp: If hw setup failed, dump current hw parameters
5502         to stdout (if debug mode is enabled).
5504 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5506         * mms-downloader.cpp: Do better initialization and cleanup of
5507         downloader and state variables to prevent issues when seeking.
5509 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5511         * mms-downloader.cpp: Write: Don't use math when not necessary to
5512         avoid overflows, and if we end up freeing the buffer set the size
5513         accordingly.
5515 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5517         * mms-downloader.cpp: Use thread-safe tick call from media thread.
5519 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5521         * mms-downloader.cpp: Don't leak the uri.
5523 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5525         * downloader.h: Make OpenInitialize public so that the
5526         MmsDownloader can reinitialize it when sending new requests.
5528 2009-06-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5530         * audio.cpp: Play 24 bit audio unconditionally.
5532 2009-07-01  Chris Toshok  <toshok@ximian.com>
5534         * Makefile.am (INCLUDES): turns out we need to include ../plugin
5535         here to deal with type-generated/type.h/etc.
5537         * type.h.in: fix annoying indent problem.
5539         * cbinding.h, dependencyproperty.g.cpp, type-generated.cpp,
5540         value.h, type.h: regen
5542 2009-07-01  Larry Ewing  <lewing@novell.com>
5544         * textblock.cpp (ArrangeOverride): take alignment into account
5545         when computing our size.
5547 2009-07-01  Jeffrey Stedfast  <fejj@novell.com>
5549         * textblock.cpp (ArrangeOverride): Set the available width on the
5550         layout so that it can properly align the text for center/right
5551         alignment.
5553 2009-07-01  Jackson Harper  <jackson@ximian.com>
5555         * xaml.cpp: Need to set the binding source when we are validating
5556         templates.
5558 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5560         * mediaelement.cpp: SetMarkerTimeout: when unreffing self
5561         use a delayed timeout, since we can be the last ref, this
5562         ensures the stack is unwound first.
5564 2009-06-30  Larry Ewing  <lewing@novell.com>
5566         * border.cpp (Render): get CornerRound rendering closer to the sl
5567         version.
5569 2009-06-30  Chris Toshok  <toshok@ximian.com>
5571         * clock.h|cpp: Seeking doesn't start the clock.  And we have to
5572         support UpdateFromParentTime even while paused, since we can seek
5573         while paused.  Fixes 392 (along with actually fixing the test..)
5575 2009-06-30  Chris Toshok  <toshok@ximian.com>
5577         * clock.h|cpp: fix Seek and SeekAlignedToLastTick.  fixed DRT
5578         tests 393 and 396.
5580 2009-06-30  Jeffrey Stedfast  <fejj@novell.com>
5582         * fontmanager.cpp (style_diff): Improved a bit so that we never
5583         return G_MAXINT if any font by the same name is found, no matter
5584         what style differences there are.
5586 2009-06-30  Jackson Harper  <jackson@ximian.com>
5588         * deepzoomimagetilesource.cpp: Parsers need to be freed.
5590 2009-06-30  Alan McGovern  <amcgovern@novell.com>
5592         * popup.cpp: According to the docs, a popup which is GC'ed
5593           should be closed. Ensure that this happens.
5595 2009-06-30  Alan McGovern  <amcgovern@novell.com>
5597         * popup.cpp: If the child is set after the popup is opened,
5598           make sure it is shown. Ensure that we now only emit the
5599           Opened/Closed events when the popup IsOpen state changes.
5600           Allows 503 to progress further.
5602 2009-06-30  Jackson Harper  <jackson@ximian.com>
5604         * xaml.cpp|h: Add a flag for template validation
5605         - Implement template validation and propogate errors up
5606         * cbinding.cpp: regen
5608 2009-06-30  Stephane Delcroix  <sdelcroix@novell.com>
5610         * multiscaleimage.cpp: drop a debug block that was misinterpreted by
5611         the preprocessor. fir x drt 265.
5613 2009-06-30  Stephane Delcroix  <sdelcroix@novell.com>
5615         * multiscaleimage.cpp: download the first num_dl (6) levels while the
5616         source is ready.
5618 2009-06-29  Alan McGovern  <amcgovern@novell.com>
5620         * control.cpp: Unregress drt 911, EnabledChanged events fire
5621           at the correct time again.
5623 2009-06-29  Jeffrey Stedfast  <fejj@novell.com>
5625         * fontmanager.cpp (LoadGlyph): Save some memory by dropping some
5626         of the GlyphMetrics fields.
5628         * layout.cpp: Updated to keep track of the previous GlyphInfo
5629         rather than the previous GlyphInfo's index.
5631         * fonts.cpp (TextFont::GetGlyphInfo): Set the GlyphInfo face.
5632         (TextFont::Kerning): Modified to take GlyphInfo arguments rather
5633         than face indexes since they are worthless w/o knowing which font
5634         face the indexes of each are for.
5636 2009-06-29  Alan McGovern  <amcgovern@novell.com>
5638         * control.cpp: Propagate the IsEnabled changes down the visual
5639           tree in OnPropertyChanged, not in SetValue.
5641 2009-06-29  Jackson Harper  <jackson@ximian.com>
5643         * xaml.cpp: Store enums as INTs.
5645 2009-06-28  Chris Toshok  <toshok@ximian.com>
5647         * clock.h|cpp (Clock::RaiseAccumulatedEvents): switch (state ==
5648         Clock::Active) to (state != Clock::Stopped) to tell whether or not
5649         we've started (since we can start directly in the filling state.)
5651         Also remove all the idle_hint stuff, since it's no longer used.
5653         * timemanager.cpp (RootClockGroup::UpdateFromParentTime): not sure
5654         why this method is needed at all, but at the very lease we need to
5655         stop calling ClockGroup::UpdateFromParentTime, since this method
5656         very nearly duplicates that one (and we're therefore looping over
5657         the child clocks twice).
5659 2009-06-28  Chris Toshok  <toshok@ximian.com>
5661         * color.cpp (named_colors): update these so that text-colors.xaml
5662         passes.
5664 2009-06-28  Larry Ewing  <lewing@novell.com>
5666         * xaml.cpp (value_from_str_with_parser): allow NAN to be NAN too.
5668 2009-06-27  Jeffrey Stedfast  <fejj@novell.com>
5670         * glyphs.cpp (OnPropertyChanged): When the FontUriProperty
5671         changes, the layout *always* gets dirty. We also always need to
5672         invalidate.
5674         * fonts.cpp (TextFont::UpdateFaceExtents): New helper method to
5675         calculate/update the font extents. Only use the extents of the
5676         first face - this fixes a bunch of MS DRTs.
5677         (TextFont::.ctor): Call UpdateFaceExtents().
5678         (TextFont::SetSize): Need to call UpdateFaceExtents() here. Fixes
5679         a number of regressions (like MS DRT #43).
5681 2009-06-27  Chris Toshok  <toshok@ximian.com>
5683         * grid.cpp (Grid::OnCollectionItemChanged): don't
5684         InvalidateMeasure() when the grid's actualwidth or row's
5685         actualheight is set.  this gets us into an infinite loop.
5687 2009-06-26  Chris Toshok  <toshok@ximian.com>
5689         * enums.cpp (grid_unit_type_map): add a mapping for GridUnitType.
5690         (initialize_enums): and add it to the hashtable.
5692         * grid.h|cpp: make ColumnDefinition.ActualWidth and
5693         RowDefinition.ActualHeight dependencyproperties to make the plugin
5694         binding easier.  get rid of each class's "actual" field.
5695         
5696 2009-06-25  Chris Toshok  <toshok@ximian.com>
5698         * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
5699         object we're looking the event up on, and a flag as to whether or
5700         not to allow desktop-specific events.  and just look up the event
5701         from the type system instead of having the hardcoded list.
5703 2009-06-25  Chris Toshok  <toshok@ximian.com>
5705         * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
5706         object we're looking the event up on, and a flag as to whether or
5707         not to allow desktop-specific events.  and just look up the event
5708         from the type system instead of having the hardcoded list.
5710 2009-06-26  Jeffrey Stedfast  <fejj@novell.com>
5712         * fonts.cpp (LoadPortableUserInterface): Only set that we've
5713         loaded PUI, not each individual fallback face. The other faces may
5714         match user-specified faces, but there may also be a font source
5715         that it is loading them from (which may differ from the locally
5716         installed faces).
5718 2009-06-26  Jeffrey Stedfast  <fejj@novell.com>
5720         * runtime.cpp: Don't need to call font_init() or font_shutdown()
5721         anymore.
5723         * deployment.cpp: Create a new FontManager per Deployment and
5724         provide an access method to get at it.
5726         * textblock.cpp, glyphs.cpp, textbox.cpp: Updated for the font
5727         loading APIs.
5729         * provider.cpp: Removed FontFilenameProperty and FontGUIDProperty
5730         inheritance, these no longer exist.
5732         * fonts.cpp|h: New source files with the higher-level abstraction
5733         for font loading, glyph manipulation, etc.
5735         * fontmanager.cpp|h: New source files containing a FontManager
5736         class which handles caching of font faces and indexing of font
5737         resources. Serves as platform-dependent font loading layer.
5739         * font.cpp|h: Removed.
5741 2009-06-26  Jeffrey Stedfast  <fejj@novell.com>
5743         * uri.cpp (ToString): Respct the UriHideQuery flag.
5745 2009-06-26  Larry Ewing  <lewing@novell.com>
5747         * border.h: change the default value.
5749         * cornerradius.h: reorder the bottom* arguments.
5751 2009-06-26  Alan McGovern  <amcgovern@novell.com>
5753         * popup.h:
5754         * popup.cpp: Handle popup hittesting when its closed in a way
5755           that doesn't suck.
5757 2009-06-26  Alan McGovern  <amcgovern@novell.com>
5759         * popup.cpp: Keep the RENDER_VISIBLE flag in sync with the
5760           IsOpen state so that hittesting works correctly.
5762 2009-06-25  Chris Toshok  <toshok@ximian.com>
5764         * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
5765         object we're looking the event up on, and a flag as to whether or
5766         not to allow desktop-specific events.  and just look up the event
5767         from the type system instead of having the hardcoded list.
5769 2009-06-25  Larry Ewing  <lewing@novell.com>
5771         * grid.cpp, grid.h (PostRender): move the grid lines from Render to
5772         PostRender so that the lines are on top of the children (which
5773         appears to be the sl behavior).  Fixes at least 317 and 446.
5774         
5775 2009-06-25  Sebastien Pouliot  <sebastien@ximian.com>
5777         * downloader.cpp: Fix MediaElement policy wrt cross-domain access.
5778         Fix two unnumbered DRT tests.
5780 2009-06-25  Chris Toshok  <toshok@ximian.com>
5782         * textbox.h|cpp (TextBoxBase::SelectWithError): we need to
5783         generate ArgumentExceptions here if start/length are out of range.
5784         This could, in the future, be entirely handled by the setter
5785         methods but for now we don't pass a MoonError to them.
5787         * xaml.h|cpp (xaml_set_property_from_str): this method takes an
5788         additional MoonError parameter so we can communicate back if there
5789         was a problem.  Also, call SetValueWithError.
5791         * cbinding.h|cpp: regen.
5793 2009-06-25  Chris Toshok  <toshok@ximian.com>
5795         * resources.h|cpp: add a "from_resource_dictionary_api" bool so we
5796         can tell in AddedToCollection and RemovedFromCollection if we got
5797         there from using ResourceDictionary's string-based api or
5798         Collection's object-based api.  Take care of adding/removing the
5799         key for the object in those methods if we didn't come from the RD
5800         api.
5802         * type.cpp (Type): quiet valgrind down by using "delete []"
5803         instead of "delete" to free up the interfaces array.
5805 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5807         * mediaplayer.cpp: Improve debug output.
5809 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5811         * pipeline.h: Added a ProgressEventArgs class.
5813         * value.h:
5814         * type.h:
5815         * type-generated.cpp: Regenerated.
5817 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5819         * audio.cpp|h: Add support for having different input (from the
5820         codec) and output (to the device) formats. This is required for
5821         pulseaudio 0.10 which doesn't support 24 bit audio, only 16 and 32
5822         bit. Also add support for multi channel audio.
5824         * audio-alsa.cpp:
5825         * audio-pulse.cpp: Add support for multi channel and 24 bit audio
5826         and update according to audio API changes.
5828 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5830         * audio-alsa.cpp: Fix debug output by not duplicating declarations.
5832 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5834         * audio.cpp|h: Add support for dumping raw audio data to a file.
5836 2009-06-25  Alan McGovern  <amcgovern@novell.com>
5838         * dependencyproperty.g.cpp: Regen
5840 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5842         * downloader.cpp:
5843         * mms-downloader.h:
5844         * file-downloader.h:
5845         * internal-downloader.h: Add a SetFilename abstract method to 
5846         InternalDownloader, provide implementations in FileDownloader
5847         and MmsDownloader and call the abstract method in the downloader
5848         instead of blindly casting an InternalDownloader to a FileDownloader
5849         when it might be an MmsDownloader.
5851 2009-06-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5853         * pipeline.cpp|h: AudioStream: add possibility of having different
5854         input and output formats.
5856         * cbinding.cpp|h: Regenerated.
5858 2009-06-24  Chris Toshok  <toshok@ximian.com>
5860         * xaml.cpp (matrix_from_str): handle "Identity" here.
5861         (value_from_str_with_parser): you can also create TransformGroups
5862         directly using the matrix syntax.  Also, add support for parsing
5863         FontWeight/FontStyle/FontWeight structs here since we can't just
5864         rely on the enum_* stuff alone to do it.
5866         * value.h.in, value.cpp: add support for
5867         FontWeight/FontStyle/FontWeight structs.
5869         * textblock.cpp (Inline::UpdateFontDescription): track the
5870         struct-update.
5871         (TextBlock::Layout): same.
5873         * textbox.cpp (TextBoxBase::Initialize): same.
5874         (TextBoxBase::OnPropertyChanged): same.
5876         * fontweight.h, fontstyle.h, fontstretch.h: new files, we're using
5877         structs now for these.
5878         
5879         * textblock.h, control.h: use the FontWeight/FontStyle/FontWeight
5880         struct types for properties instead of our internal enums.
5882         * Makefile.am (libmoon_include_headers): add fontstretch.h
5883         fontstyle.h, and fontweight.h
5885         * type-generated.cpp: regen.
5887         * cbinding.h|cppp: regen.
5889         * dependencyproperty.g.cpp: regen.
5891         * value.h: regen.
5892         
5893 2009-06-24  Larry Ewing  <lewing@novell.com>
5895         * panel.cpp (Render): add layout clipping to panel rendering.
5897 2009-06-24  Larry Ewing  <lewing@novell.com>
5899         * grid.h: stop drawing the gridlines by default.  See comment for
5900         details.
5902 2009-06-24  Alan McGovern  <amcgovern@novell.com>
5904         * runtime.h:
5905         * runtime.cpp: Focus changed events should be emitted at the
5906           start and end of any user initiated event.
5907           can_raise_focus_changed is no longer necessary.
5909 2009-06-23  Larry Ewing  <lewing@novell.com>
5911         * frameworkelement.cpp (UpdateLayout): reorder the way we process
5912         the lyout queues. Fixes ms 409.
5914 2009-06-23  Jackson Harper  <jackson@ximian.com>
5916         * xaml.cpp: Handle empty buffers
5917         
5918 2009-06-23  Jackson Harper  <jackson@ximian.com>
5920         * xaml.cpp: ContentControl can not have string content set this
5921         way, if the content object is a string it needs to be set with
5922         attributes.
5924 2009-06-23  Jackson Harper  <jackson@ximian.com>
5926         * xaml.cpp: Another stab at not skipping empty attributes. Fixed
5927         all the unit test regression this caused last night.
5929 2009-06-23  Alan McGovern  <amcgovern@novell.com>
5931         * grid.cpp: A dash length of 4 seems to be more correct.
5933 2009-06-23  Alan McGovern  <amcgovern@novell.com>
5935         * grid.h:
5936         * grid.cpp: Implement Grid.ShowGridlines
5938 2009-06-22  Jackson Harper  <jackson@ximian.com>
5940         * xaml.cpp: Pass the full prop name to managed
5941         - If managed fails to set the property, delete it so unmanaged can
5942         try
5944 2009-06-22  Larry Ewing  <lewing@novell.com>
5946         * provider.cpp: make UIElement::UseLayoutRounding inherited, this
5947         doesn't make it pass 2019 but it does a lot more. 
5949         * shape.cpp: mirror the silverlight logic for canvas children with
5950         only one of w/h set.  Fixes ms test 23.
5952 2009-06-18  Larry Ewing  <lewing@novell.com>
5954         * shape.cpp: try to get the shape flags right once again trap
5955         explicit small values properly.  Add Clipping logic to clip shapes
5956         to the fe values when explicitly set.
5958         * frameworkelement.cpp: look at stretch even when we have no
5959         children.
5961 2009-06-19  Jackson Harper  <jackson@ximian.com>
5963         * xaml.cpp|h: We now have a managed version of AddChild so remove
5964         all the AddToContainer junk and use the managed AddChild instead.
5965         - Add MoonError to all the callbacks. Not handling the errors yet,
5966         but at least they are there now.
5968 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5970         * xaml.cpp: Add comment about absolute/relative paths
5971         for MSI.
5973 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5975         * multiscaleimage.cpp: When an image has been opened,
5976         invalidate everything.
5978 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5980         * multiscaleimage.cpp|h: Emit MotionFinished after
5981         SetViewportWidth/SetViewportOrigin has been called.
5983 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5985         * multiscaleimage.cpp|h:
5986         * deepzoomimagetilesource.cpp|h: Raise error events.
5988 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5990         * multiscaleimage.cpp|h: Add support for methods exposed to JS.
5992         * cbinding.h: Regenerated.
5994 2009-06-18  Sebastien Pouliot  <sebastien@ximian.com>
5996         * textblock.cpp: Avoid crash when using FontSource
5998 2009-06-18  Alan McGovern  <amcgovern@novell.com>
6000         * control.h:
6001         * uielement.h:
6002         * control.cpp: When the visual parent changes on a Control, it
6003           needs to search up the visual tree to find out the Enabled
6004           state of the first Control it finds. When raising the
6005           IsEnabledChanged events, the control must emit its event
6006           before controls in its subtree emit their events. Fixes drt
6007           911.
6009 2009-06-17  Jeffrey Stedfast  <fejj@novell.com>
6011         * textbox.cpp (Paste): Don't allow pastes to exceed MaxLength and
6012         for single-line entry controls (e.g. PasswordBox), don't allow
6013         multi-line pastes.
6015 2009-06-17  Alan McGovern  <amcgovern@novell.com>
6017         * uielement.cpp: Changing UIElement::Visibility should also
6018           invalidate the parents measure. This allows DRT 2050 to
6019           complete without timing out.
6021 2009-06-17  Alan McGovern  <amcgovern@novell.com>
6023         * uielement.cpp: Changing UIElement.Visibility should result
6024           in the measure being invalidated.
6026 2009-06-17  Alan McGovern  <amcgovern@novell.com>
6028         * font.cpp: When the font cache is destroyed, set it to NULL
6029           so that if a Font is destroyed later it does not try to
6030           re-use the cache.
6031         Null check the the FontFace cache before using it.
6032         If the FT_Face stream is null already, don't try to destroy
6033           it.
6035 2009-06-17  Alan McGovern  <amcgovern@novell.com>
6037         * runtime.cpp: A subset of keypresses are allowed to bubble up
6038           when in fullscreen mode. Fixes drt 175.
6040 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6042         * uri.cpp: Add a null check to prevent a crash.
6044 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6046         * uri.cpp: Flag a lot more characters as url unsafe, and 
6047         fix printf specifiers for url encoded characters to not 
6048         include extra 'ff' sequences for every encoded character.
6050         This fixes parts of MS DRT #641.
6052 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6054         * downloader.cpp|h: Add an Open overload which takes an Uri
6055         instead of a string.
6057         * deepzoomimagetilesource.cpp:
6058         * bitmapimage.cpp: Use the Uri overload of Downloader::Open.
6060 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6062         * playlist.cpp: When we stop, emit the StopEvent.
6064         * mediaelement.cpp: Don't return a CurrentPosition > NaturalDuration.
6066 2009-06-16  Chris Toshok  <toshok@ximian.com>
6068         * xaml.cpp (XamlElementInfoStaticResource,
6069         XamlElementInstanceStaticResource): remove these classes.
6070         (begin_buffering_element_names): remove this unused variable.
6071         (XamlParserInfo::LookupNamedResource): remove.
6072         (DefaultNamespace::FindElement): remove the
6073         XamlElementInfoStaticResource case, and just let the managed
6074         loader create the StaticResource element itself.
6075         (is_static_resource_element): remove.
6076         (XamlElementInstanceNative::SetProperty): defer to the loader if
6077         either the property or the value RequiresManagedSet.
6078         (dependency_object_set_property): defer to the loader if the value
6079         RequiresManagedSet.
6080         (dependency_object_set_attributes): remove all processing of
6081         markup extensions from unmanaged code.
6082         (xaml_markup_parse_argument): remove.
6083         (xaml_markup_extension_type): remove.
6084         (handle_markup_in_managed): remove.
6085         (handle_xaml_markup_extension): remove.
6086         
6087         * panel.h|cpp (Panel::Panel): just set our subtree object here.
6088         (Panel::GetSubtreeObject): remove.
6089         
6090         * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
6091         don't notify listeners when creating an auto-created value.
6093         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
6094         only call the property's change callback if we're notifying
6095         listeners.
6097 2009-06-17  Andreia Gaita  <avidigal@novell.com>
6099         * dependencyobject.cpp: (Emit) if types have been destroyed, bail out
6101 2009-06-17  Andreia Gaita  <avidigal@novell.com>
6103         * xaml.cpp: fix typo
6105 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6107         * pipeline.cpp: Remove spurious printfs.
6109 2009-06-16  Andreia Gaita  <avidigal@novell.com>
6111         * deployment.[h|cpp]: Try to dispose types only if there are no
6112         objects pending destruction. If there are, dispose only after
6113         they are all cleared (on DrainUnrefs). This makes sure no properties
6114         are destroyed while objects are still pending.
6115         Added isDead flag, used when doing object tracking to protect against
6116         trying to access type fields when the types have been destroyed
6117         already (when doing ref logging and the final leak report).
6118         Type destruction is slightly delayed when doing object tracking
6119         to allow for the report (otherwise we wouldn't have any type names
6120         on it, and that would be sad)
6122         * type.cpp: fake-clear the properties list by setting it's count to 0
6123         so access by id fails (in case someone wants to access the property
6124         while we're disposing everything).
6125         Delete all the registered types and kill the properties list when
6126         destroying. By this point all properties and objects should be
6127         dead.
6128         * type.h.in: added dispose flag.
6129         * type.h: regenerated
6131 2009-06-16  Andreia Gaita  <avidigal@novell.com>
6133         * uielement.cpp: release all refs on dispose
6135 2009-06-16  Andreia Gaita  <avidigal@novell.com>
6137         * control.[h|cpp]: Dispose() added. Don't be clingy, unref things
6139 2009-06-16  Jeffrey Stedfast  <fejj@novell.com>
6141         * xaml.cpp (value_from_str_with_parser): Handle Type::CHAR
6143 2009-06-16  Larry Ewing  <lewing@novell.com>
6145         * shape.cpp: try to be more careful about clearing SHAPE_EMPTY
6146         when properties change in preparation for fixing the autocreated
6147         property notification stuff
6149 2009-06-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6151         * multiscaleimage.cpp: Add a call to print_stack_trace, looks
6152         like abort () doesn't cause a stack trace.
6154 2009-06-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6156         * mediaplayer.cpp: Remove circular dependency between MediaPlayer
6157         and MediaElement, clear out the element in Dispose and add a null
6158         check before accessing the element. Fixes crash in MS DRT #238.
6160 2009-06-15  Andreia Gaita  <avidigal@novell.com>
6162         * frameworkelement.cpp: delete UIElement nodes when we're done 
6163         with them
6165 2009-06-15  Jeffrey Stedfast  <fejj@novell.com>
6167         * textblock.cpp (SetTextInternal): Get rid of some duplicated
6168         code.
6170 2009-06-15  Alan McGovern  <amcgovern@novell.com>
6172         * uielement.cpp:
6173         * frameworkelement.h:
6174         * frameworkelement.cpp: Give an initial implementation of
6175           FindElementInHostCoordinates (UIElement, Rect) which treats
6176           the rect as a series of points and checks each one until a
6177           hit is found. Allows drt 280 to 
6179 2009-06-15  Jeffrey Stedfast  <fejj@novell.com>
6181         * dependencyobject.cpp (Initialize): Initialize is_hydrated to
6182         false.
6184 2009-06-15  Andreia Gaita  <avidigal@novell.com>
6186         * type.[h|cpp]: Dispose method added, to help separate between clearing
6187         all the DPs and actually deleting the types. For now, just clears the
6188         DPs and doesn't touch the type list.
6189         * deployment.cpp: (Dispose) types are disposed here, for now.
6191 2009-06-15  Andreia Gaita  <avidigal@novell.com>
6193         * dependencyproperty.g.cpp: regenerated
6195 2009-06-15  Jackson Harper  <jackson@ximian.com>
6197         * xaml.cpp: Reorder errors.
6199 2009-06-15  Andreia Gaita  <avidigal@novell.com>
6201         * deployment.cpp: (Reinitialize) AssemblyPartsCollection is reffed
6202         inside SetParts, and since we don't store it anywhere else, drop a
6203         ref after the call
6205 2009-06-15  Andreia Gaita  <avidigal@novell.com>
6207         * dependencyproperty.cpp, animation.[h|cpp]: Fix animation storage so
6208         it removes itself from the property list and gets deleted as soon as
6209         possible, otherwise it will not only leak, but blow up once we start
6210         clearing DPs.
6211         Floating status is gone.
6213 2009-06-15  Andreia Gaita  <avidigal@novell.com>
6215         * value.[h.in|cpp], debug.h, runtime.[h|cpp]: LOG_VALUE macro added,
6216         and some extra debugging output for refcounting.
6217         * value.h: regen
6219 2009-06-15  Alan McGovern  <amcgovern@novell.com>
6221         * frameworkelement.cpp: Objects can be hit as long as their
6222           height as greater than zero and the point is in the fill or
6223           stroke.
6225 2009-06-15  Alan McGovern  <amcgovern@novell.com>
6227         * frameworkelement.cpp: Back that change out as it causes some
6228           regressions in the moon-unit tests.
6230 2009-06-15  Alan McGovern  <amcgovern@novell.com>
6232         * frameworkelement.cpp: We can hit an element in both stroke
6233           and fill.
6235 2009-06-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6237         * playlist.cpp|h: When a media reports that it has been opened
6238         successfully, check if we're the current element, and if not,
6239         don't to anything more until we are the current element. This
6240         fixes an issue with server side playlists where they would
6241         only play the first entry.
6243         * pipeline.cpp|h: Move code out of header.
6245         * pipeline-asf.cpp|h: Inform the MmsPlaylistEntry whenever an
6246         entry has finished.
6248 2009-06-15  Alan McGovern  <amcgovern@novell.com>
6250         * frameworkelement.cpp: We're hittesting the clip, we use
6251           user-space coordinates, so apply the identity matrix to get
6252           the correct result.
6254 2009-06-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6256         * pipeline.h: Expose MediaFrame::IsKeyFrame to C.
6258         * cbinding.cpp|h: Regenerated.
6260 2009-06-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6262         * enums.cpp: Rename MediaElementState -> MediaState. Add 'Paused'
6263         to the enum->str conversion table.
6265 2009-06-15  Alan McGovern  <amcgovern@novell.com>
6267         * mediaplayer.cpp: The MediaPlayer should ref the MediaElement
6268           it's attached to otherwise it can access the element after
6269           the element has been destroyed. Stops 238 crashing.
6271 2009-06-14  Andreia Gaita  <avidigal@novell.com>
6273         * value.[h.in|cpp]: (CreateUnref*) Accept EventObject instead of DPs, since 
6274         there are certain refcounted objects that aren't child classes of
6275         DependencyObject.
6276         Wrap null objects but don't try to unref them.
6277         * value.h: regen
6279 2009-06-14  Andreia Gaita  <avidigal@novell.com>
6281         * debug.[h|cpp]: add max frame arg for finer control when getting 
6282         stack traces
6284 2009-06-12  Jackson Harper  <jackson@ximian.com>
6286         * xaml.cpp|h: import_xmlns now validates the namespace so we can
6287         raise an error if it is invalid.
6289 2009-06-12  Jackson Harper  <jackson@ximian.com>
6291         * xaml.cpp: Don't allow dtds.
6293 2009-06-12  Jackson Harper  <jackson@ximian.com>
6295         * xaml.cpp: SL doesn't handle NaN the same way that strtod does.
6297 2009-06-12  Jackson Harper  <jackson@ximian.com>
6299         * xaml.cpp: Use the value attribute parsing for enum types, this
6300         allows them to have x:Key and x:Name attributes.
6302 2009-06-12  Sebastien Pouliot  <sebastien@ximian.com>
6304         * dependencyproperty.g.cpp: Regenerated
6305         * deployment.h: Update ExternalCallersFromCrossDomainProperty
6306         generator-related properties and add unmanaged accessors
6307         * enumscpp|h: Remove CrossDomainAccessFullAccess value which was
6308         dropped after SL2 beta2
6309         * uri.cpp|h: Add new Uri::SameSiteOfOrigin method
6310         * validators.cpp|h: Add new CrossDomainValidator that ensure we
6311         can set only once Deployment::ExternalCallersFromCrossDomainProperty
6313 2009-06-11  Jackson Harper  <jackson@ximian.com>
6315         * xaml.cpp: Re-enable the force USERCONTROL to be managed thingy.
6316         - Don't try to set managed properties in
6317         dependency_object_add_child.
6318         - Make sure we only create managed property elements for managed
6319         items, even if they are DOBs, otherwise UserControl.Resources gets
6320         a native property info.
6322 2009-06-11  Alan McGovern  <amcgovern@novell.com>
6324         * runtime.h:
6325         * runtime.cpp: The uielements involved in GotFocus/LostFocus
6326           events need to be stored in a queue so that focusing
6327           multiple elements in one tick works correctly.
6329 2009-06-11  Alan McGovern  <amcgovern@novell.com>
6331         * popup.h:
6332         * popup.cpp:
6333         * type-generated.cpp: Make Popup.[Opened|Closed] asynchronous.
6335 2009-06-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6337         * src.mdp: Define HAVE_CONFIG_H to fix build in MD.
6339         * security.c: Fix signed/unsigned mismatch warning.
6341         * error.cpp: Fix warning about not initialize in correct order.
6343 2009-06-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6345         * pipeline.cpp: Fix warning/typo in printf.
6347 2009-06-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6349         * pipeline.cpp: MarkerStream: if there is no callback, store
6350         the markers in a list instead of just dropping them. Fixes an 
6351         issue with our #150 where we'd lose markers since the stream
6352         had processed them before getting a callback.
6354         * mediaelement.cpp: Check if a marker stream has stored markers
6355         (which would have been added before the calback was set).
6357 2009-06-10  Larry Ewing  <lewing@novell.com>
6359         * frameworkelement.cpp (Arrange): measure containers if they
6360         haven't been at least for now.
6362 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6364         * mediaelement.cpp: When we get a stream as the source, set download
6365         progress immediately to 1.0. Also emit DownloadProgressChanged just
6366         after opening the file (to ensure that we emit DownloadProgressChanged
6367         at least once). This makes MS DRT #420 not time out.
6369 2009-06-10  Larry Ewing  <lewing@novell.com>
6371         * frameworkelement.cpp (UpdateLayout): if we find a unloaded
6372         element while walking the tree emit loaded on it now.
6374 2009-06-10  Larry Ewing  <lewing@novell.com>
6376         * frameworkelement.cpp (UpdateLayout): emit SizeChanged in the
6377         place it was supposed to be emitted.
6379 2009-06-10  Jeffrey Stedfast  <fejj@novell.com>
6381         * layout.cpp (Layout): Don't apply font height to the line unless
6382         text has been rendered on that line using that font.
6384 2009-06-10  Jackson Harper  <jackson@ximian.com>
6386         * xaml.cpp|h: Add another param to LookupObject to specify whether
6387         we are looking up a property.  We can't rely on the '.' being in
6388         the name because x:Class names can have namespaces.
6389         - Force USERCONTROL to be looked up in managed so we can
6390         honour x:Class
6391         
6392 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6394         * playlist.cpp|h: PlaylistEntry: Add support for getting duration for
6395         parent entries/playlists too. Also propagate the BufferUnderflow
6396         event.
6398         * pipeline.cpp: Change logic when filling the buffer to request
6399         a frame from the least-buffered stream. This solves an issue with
6400         live streams, we might end up playing audio only when the video
6401         buffer was empty and the audio buffer never full.
6403         * mediaplayer.cpp|h: When determining duration of an entry, check
6404         the entry's parents too for duration. We also need to set
6405         first_live_pts when rendering. This makes MS DRT #129
6406         not time out. Add a BufferUnderflow to inform listeners of any
6407         buffer underflows.
6409         * mediaelement.cpp|h: Handle the BufferUnderflow event, pause
6410         playback and update states accordingly. Remove UpdateProgress,
6411         unused.
6413         * type-generated.cpp: Regenerated.
6415 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6417         * mediaplayer.cpp: use the correct max value for guint64.
6419 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6421         * mediaplayer.cpp|h: Make flags a thread-safe variable, since
6422         we might write to it from an audio thread.
6424 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6426         * playlist.cpp: When checking if an entry has duration, check
6427         the right entry. Fixes a possible crash.
6429 2009-06-10  Alan McGovern  <amcgovern@novell.com>
6431         * multiscaleimage.cpp: The FadeIn storyboard should emit a MotionFinished
6432         event too. Allows drt 293 to complete.
6433         
6434 2009-06-10  Alan McGovern  <amcgovern@novell.com>
6436         * uri.cpp: Uris starting with "\\" need to be recognised as
6437           absolute Uris
6439 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6441         * pipeline-asf.cpp: Remove dead code.
6443 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6445         * runtime.cpp: g_warning -> printf to ease breaking on
6446         g_log.
6448 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6450         * dependencyobject.h: Fix IdMask.
6452 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6454         * pipeline.h|cpp: Rework some of the buffer filling algorithm:
6455         we now never have more than one frame pending (to know which
6456         stream a response comes from - if frame parameter to 
6457         ReportGetFrameCompleted is null, we need to mark the corresponding
6458         stream as ended. Also split the 'stream ended' concept in two:
6459         input ended (the demuxer won't give us more data) and output
6460         ended (the decoder won't give us more data). This fixed
6461         MS DRT #19.
6463         * mp3.h|cpp:
6464         * pipeline-asf.h|cpp: GetFrameAsync: For some error codes we
6465         need to try again later.
6467         * mediaelement.cpp: CheckMarkers: subtract one to not include
6468         both ends of the range, if the marker matches exactly the end
6469         of a range it will get emitted twice otherwise.
6471         * mediaplayer.cpp:
6472         * audio.cpp: Updated according to IMediaStream changes.
6474 2009-06-09  Jeffrey Stedfast  <fejj@novell.com>
6476         * value.cpp (operator==): Fix a crash if comparing a null
6477         FontSource.
6479         * textbox.cpp (EmitSelectionChangedAsync): Only emit the event if
6480         the control is loaded.
6481         (EmitTextChangedAsync): Same.
6483 2009-06-09  Alan McGovern  <amcgovern@novell.com>
6485         * runtime.cpp: The first mouse click will always Focus on the
6486           'default' control. After that we follow the normal focusing
6487           rules and focus on the first eligible control which the
6488           mouse has clicked on.
6490 2009-06-08  Jackson Harper  <jackson@ximian.com>
6492         * xaml.cpp: Add TimeSpan to the primitive types.
6494 2009-06-08  Chris Toshok  <toshok@ximian.com>
6496         * runtime.h (class Surface): add IsZombie.
6498 2009-06-08  Jackson Harper  <jackson@ximian.com>
6500         * error.cpp|h: Add method and fields for line/char positions.
6501         * xaml.cpp: Fill in line/char positions on MoonErrors, this allows
6502         them to get propogated to managed and fixes some of the unit tests.
6504 2009-06-08  Jackson Harper  <jackson@ximian.com>
6506         * xaml.cpp|h: Pass the property xmlns and the element xmlns into
6507         managed when setting properties.
6509 2009-06-08  Alan McGovern  <amcgovern@novell.com>
6511         * runtime.cpp: Un-regress drt 783. We need to raise our cached
6512           focus changed event, then process the focus change itself,
6513           then raise the events for the new change.
6515 2009-06-08  Alan McGovern  <amcgovern@novell.com>
6517         * runtime.h:
6518         * runtime.cpp: If Control.Focus is called from inside a
6519           GotFocus handler, the focus change occurs immediately and
6520           the new GotFocus event is raised as soon as the current
6521           handler is finished.
6523 2009-06-08  Jackson Harper  <jackson@ximian.com>
6525         * xaml.cpp: Bail out after we hit the first attribute parsing
6526         error.
6528 2009-06-08  Jackson Harper  <jackson@ximian.com>
6530         * xaml.cpp: We need to convert path geometry strings from managed.
6532 2009-06-08  Jackson Harper  <jackson@ximian.com>
6534         * xaml.cpp: Little more cleanup now that we don't have to reparse
6535         attributes for x:Class.
6537 2009-06-05  Chris Toshok  <toshok@ximian.com>
6539         * xaml.cpp (XNamespace::SetAttribute): setting x:Class on an
6540         element when we aren't hydrating is illegal.  this has the
6541         pleasant side effect of removing the need to reparse attributes,
6542         so axe that code as well.
6544 2009-06-05  Chris Toshok  <toshok@ximian.com>
6546         * textbox.cpp (TextBoxView::Blink): don't set deployments using
6547         the pattern Deployment::SetCurrent (GetDeployment()), as
6548         GetDeployment() issues a warning if the object's deployment
6549         doesn't match the current one.  use
6550         DependencyObject::SetCurrentDeployment(true) instead.
6552 2009-06-04  Chris Toshok  <toshok@ximian.com>
6554         * runtime.cpp (Surface::EmitError): stop unreffing the args after
6555         the Emit call.  Emit unrefs them for us.
6557 2009-06-05  Jeffrey Stedfast  <fejj@novell.com>
6559         * layout.cpp (layout_word_wrap): Stop processing when we come to
6560         open-punctuation if it isn't the first char in the word as this is
6561         a good break opportunity. Fixes the last remaining issue in
6562         OMTextInline DRT.
6564 2009-06-04  Jackson Harper  <jackson@ximian.com>
6566         * xaml.cpp: Track the owner type of properties so we know whether
6567         or not to go into managed when we are dealing with an attached
6568         property.
6570 2009-06-04  Jeffrey Stedfast  <fejj@novell.com>
6572         * font.cpp (OpenFaceByIndex): If lang is non-null, then accept any
6573         font face that fontconfig can find for the requested language.
6574         (FontFace::LoadFontFace): Get the lang string and pass it along.
6575         (FontFace::Init): initialize a default font hash table for
6576         non-latin languages.
6577         (FontFace::Shutdown): destroy aformentioned table.
6578         (FontFace::LoadDefaultFaceForLang): New helper method to load the
6579         default font face for a given language code.
6580         (FontFace::GetDefault): If the language in the Fc pattern is
6581         'special', use LoadDefaultFaceForLang().
6582         (TextFontDescription::.ctor): Initialize language.
6583         (TextFontDescription::.dtor): Free language.
6584         (TextFontDescription::CreatePattern): Add the FC_LANG attribute if
6585         appropriate.
6586         (TextFontDescription::UnsetFields): Unset the language field.
6587         (TextFontDescription::Merge): Merge the language field.
6588         (TextFontDescription::GetLanguage): New method to get the language.
6589         (TextFontDescription::SetLanguage): New method to set the language.
6590         (TextFontDescription::ToString): Modified a bit.
6592         * textblock.cpp (Inline::Equals): Compare XmlLanguage attributes
6593         as well.
6594         (Inline::UpdateFontDescription): Pass the XmlLanguage along to the
6595         TextFontDescription.
6597 2009-06-04  Jackson Harper  <jackson@ximian.com>
6599         * xaml.cpp: The managed property could be either the property or
6600         the parent.
6602 2009-06-04  Larry Ewing  <lewing@novell.com>
6604         * canvas.cpp (OnCollectionItemChanged): call
6605         InvalidateSubtreePaint on items when their position in the canvas
6606         changes to make sure we clear the old region.  Fixes a couple of
6607         the inkpresenter tests.
6609 2009-06-04  Larry Ewing  <lewing@novell.com>
6611         * shape.cpp (ComputeStretchBounds): reject negative width/height
6612         settings.  Fixes test-shape-negative.xaml
6614 2009-06-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6616         * multiscaleimage.cpp: Add a debugging abort to try to find the
6617         issue with #2014.
6619 2009-06-04  Alan McGovern  <amcgovern@novell.com>
6621         * control.h:
6622         * type-generated.cpp: Actually add IsEnabledChangedEvent
6624 2009-06-04  Alan McGovern  <amcgovern@novell.com>
6626         * control.h: Add IsEnabledChangedEvent to native
6627         
6628         * type-generated.cpp: regen
6630 2009-06-04  Stephane Delcroix  <sdelcroix@novell.com>
6632         * multiscaleimage.cpp: qtree_insert () takes no value. returns
6633         the newly created QTreeNode. qtree_insert_at () renamed to 
6634         qtree_insert_with_value ().
6636 2009-06-03  Alan McGovern  <amcgovern@novell.com>
6638         * cbinding.cpp|h:
6639         * control.cpp|h:
6640         * runtime.cpp:
6641         * uielement.cpp|h: Calling Control.Focus () results in a recursive
6642         check to find a focusable element. A mouse click does a non-recursive
6643         check on the elements which were 'hit'. Fixes two DRTs.
6645 2009-06-03  Jackson Harper  <jackson@ximian.com>
6647         * xaml.cpp: Update some error messages.
6648         - Pass the current namespace in when creating property infos in
6649         managed.
6650         * frameworkelement.h: ActualWidth and ActualHeight are readonly
6651         properties.
6652         * dependencyproperty.g.cpp: regen
6654 2009-06-03  Jeffrey Stedfast  <fejj@novell.com>
6656         * font.cpp (GetCharIndex): Use FcFreeTypeCharIndex() which does a
6657         bit more than FT_Get_Char_index().
6659         * layout.cpp (TextLayout::Layout): Silverlight 2.0 /never/ counts
6660         trailing lwsp towards line width, even if underlined.
6661         (TextLayoutGlyphCluster::Render): Don't underline trailing lwsp if
6662         we are the last glyph cluster on a line.
6663         (GenerateGlyphCluster): Keep track of underline width (calculated
6664         using width up to/including last non-lwsp char).
6665         (word_type_changed): Consider numerics as part of the containing
6666         alphabetic word.
6668 2009-06-03  Jackson Harper  <jackson@ximian.com>
6670         * xaml.cpp|h: We need to look for managed properties on native
6671         types.
6672         - Set the element info for properties to the type of the property.
6673         - Add the ability for properties to force their set to be in
6674         managed even if they come from a native type.
6675         
6676 2009-06-03  Alan McGovern  <amcgovern@novell.com>
6678         * uielement.cpp: Calculate the Transform between two UIElements
6679         correctly.
6681 2009-06-03  Alan McGovern  <amcgovern@novell.com>
6683         * transform.cpp: When instantiating a Matrix from a cairo_matrix_t
6684         we need to populate M11/M12/M21 etc with the correct values.
6686 2009-06-02  Chris Toshok  <toshok@ximian.com>
6688         * xaml.cpp (dependency_object_add_child): XamlElementInfoEnum has
6689         Type::INVALID as its Kind.  This is another facet to the "we need
6690         to register enum types" work that will need to be done.  The
6691         GetKind() method needs to eventually return a property Kind, but
6692         until then we'll just check for Type::INVALID.
6694 2009-06-02  Sebastien Pouliot  <sebastien@ximian.com>
6696         * security.c: Use the PREVIEW_VERSION for the environment variable
6697         used to turn off security (coreclr and verifier)
6699 2009-06-02  Jeffrey Stedfast  <fejj@novell.com>
6701         * textblock.cpp (SetTextInternal): Oops, I must have somehow nuked
6702         the run->SetAutogenerated() logic a while back which is causing
6703         some tests to fail.
6705         * layout.cpp (layout_word_overflow): Removed, Silverlight 2.0 no
6706         longer supports this wrapping model.
6708 2009-06-02  Larry Ewing  <lewing@novell.com>
6710         * uielement.cpp (DoArrange): don't poke at unset values.  Fixes
6711         the crash in #421.
6713 2009-06-02  Jeffrey Stedfast  <fejj@novell.com>
6715         * runtime.cpp (HandleMouseEvent): Fixed compile warning about 'if
6716         (x && y || z)'.
6718 2009-06-02  Alan McGovern  <amcgovern@novell.com>
6720         * collection.cpp: Fix DeepTreeWalker.Step (). It used to step in
6721         reverse logical order.
6723         * control.h
6724         * uielement.cpp|h: Make Focus a virtual method on UIElement.
6725         
6726         * src/runtime.cpp: When the surface receives a mouse down we need to
6727         focus the first control added to the root element if the user has not
6728         clicked on a control or focused one using Control.Focus (). Then any
6729         pending Focus events are raised before the mouse event is processed.
6730         
6731         * src/window-gtk.cpp: Always pass a right mouse button event into the
6732         Surface so that we can fire any pending Focus events to match the
6733         behaviour of Silverlight.
6735 2009-06-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6737         * mms-downloader.cpp: Use strtoull instead of g_ascii_strtoull
6738         since g_ascii_strtoull isn't available in sled.
6740 2009-06-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6742         * mms-downloader.cpp: Use strtoull instead of g_ascii_strtoull
6743         since g_ascii_strtoull isn't available in sled.
6745 2009-06-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6747         * type.h:
6748         * value.h:
6749         * cbinding.h:
6750         * type-generated.cpp: Regenerated.
6752         * downloader.h: Removed streaming_features, not used here anymore.
6754         * utils.cpp
6755         * enums.h:
6756         * playlist.cpp|h:
6757         * pipeline.cpp|h:
6758         * pipeline-asf.cpp|h:
6759         * mms-downloader.cpp|h: Implement support for server side playlists.
6761 2009-06-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6763         * pipeline.cpp: Check queued_requests for null after locking too.
6765 2009-06-02  Alan McGovern  <amcgovern@novell.com>
6767         * runtime.cpp|h: Focus changed events are emitted synchronously right
6768         before a MouseLeftButtonDown or MouseRightButtonDown event.
6770 2009-06-01  Chris Toshok  <toshok@ximian.com>
6772         * type.h.in|cpp (Types::RegisterType): permit a ctor_visible flag
6773         here too so xaml.cpp knows if the type is creatable.
6775         * type.h, cbinding.cpp|h: regen
6777 2009-06-01  Chris Toshok  <toshok@ximian.com>
6779         * xaml.cpp (dependency_object_add_child): only do this check for
6780         non-Type::MANAGED children.
6782 2009-06-01  Chris Toshok  <toshok@ximian.com>
6784         * grid.cpp|h: the row/columndefinitioncollections do not permit
6785         definitions to be inserted more than once.
6786         
6787         * type.h.in (class Type): add IsCtorVisible method and ctor arg.
6789         * type.h, type-generated.cpp: regen.
6791         * xaml.cpp (XamlElementInstanceNative::CreateItem): only create
6792         the instance if the ctor is visible.
6793         (dependency_object_add_child): if the ctor for the child isn't
6794         visible, error out even if it's the same type/kind as the
6795         property.
6797 2009-06-01  Jeffrey Stedfast  <fejj@novell.com>
6799         * deployment.cpp (Dispose): Properly chain up to
6800         DependencyObject::Dispose().
6802         * bitmapimage.cpp (Dispose): Fixed Dispose chaining.
6804         * brush.cpp (ImageBrush::Dispose): Chain up to
6805         TileBrush::Dispose() instead of EventObject::Dispose(). Fixes a
6806         crash in GlyphsManagedDRT
6808         * dependencyobject.cpp (WildcardListener): Uh, this needs to
6809         subclass Listener or we can't go around casting it to a Listener.
6810         (CallbackListener): Same.
6812 2009-06-01  Chris Toshok  <toshok@ximian.com>
6814         * runtime.cpp (Surface::EmitEventOnList): if the list is empty (or
6815         end_idx == 0) return early.
6817         * xaml.cpp (XamlLoader::HydrateFromString): turns out we only mark
6818         the toplevel object as hydrated if parser_info->hydrating == true.
6819         this fixes some managed parsing stuff since XamlReader.Load was
6820         using the same codepath (just passing NULL into
6821         XamlReader::HydrateFromString.)
6823 2009-05-29  Jeffrey Stedfast  <fejj@novell.com>
6825         * application.cpp (GetResourceAsPath): Fixed extra
6826         XXXXXX'age. CreateTempDir() already handles appending the XXXXXX's
6827         for us.
6829 2009-05-29  Alan McGovern  <amcgovern@novell.com>
6831         * control.cpp: When Control.Focus () is called, if the control itself
6832         is not focusable, we need to check it's visual children. The call will
6833         complete successfully if any of the children are focusable, and that
6834         child will become the focused element.
6836 2009-05-29  Alan McGovern  <amcgovern@novell.com>
6838         * control.cpp|h: If a control becomes disabled, it loses mouse capture
6839         and cannot regain it later. If CaptureMouse is called on a disabled
6840         control, the mouse is successfully captured and then immediately
6841         released which fires the LostMouseCapture event.
6843         * runtime.cpp|h: If control A captures the mouse, control B can't steal
6844         the capture or release the capture. Add an explicit ReleaseMouseCapture
6845         function to accomodate this behaviour.
6846         
6847         * uielement.cpp|h: Add an EmitLostMouseCapture event and a CanCaptureMouse
6848         function which signifies whether or not the current UIElement can keep the
6849         mouse captured.
6851 2009-05-28  Jeffrey Stedfast  <fejj@novell.com>
6853         * textbox.h (class PasswordBox): Marked PasswordProperty as
6854         AlwaysChange so that setting this property (even to the same
6855         value) will force a PasswordChanged event to be emitted.
6856         (class TextBox): Marked SelectedTextProperty as AlwaysChange to
6857         fix moon-unit test: SetIdenticalSelectedText()
6859         * textbox.cpp (PasswordBox::OnPropertyChanged): Removed debugging
6860         printfs for utf8->ucs4 conversion errors.
6862 2009-05-28  Jeffrey Stedfast  <fejj@novell.com>
6864         * textbox.h (class TextBox): Added the AlwaysChange metadata to
6865         SelectionStart/Length properties.
6867         * textbox.cpp (TextBoxBase::EmitSelectionChangedAsync): New method
6868         to asynchronously emit SelectionChanged events.
6869         (TextBoxBase::EmitTextChangedAsync): Same for TextChanged events.
6870         (TextBoxBase::SyncAndEmit): Asynchronously emit the events.
6871         (TextBox::EmitSelectionChanged): Simply emit the event now, don't
6872         bother updating state which is now handled elsewhere.
6873         (TextBox::EmitTextChanged): Same.
6874         (TextBox::OnPropertyChanged): When clamping the SelectionLength
6875         value due to a SelectionState property change, block events - we
6876         should only emit a single SelectionChanged event. Also modified to
6877         avoid emitting a TextBoxModelChanged event if the values didn't
6878         actually change. Same for SelectionLength changes.
6880 2009-05-28  Chris Toshok  <toshok@ximian.com>
6882         * value.h.in, value.cpp: add a copy assignment operator.
6884         * value.h: regen.
6886 2009-05-28  Alan McGovern  <amcgovern@novell.com>
6888         * control.cpp: When changing Control.IsEnabled, create the
6889         new value properly.
6891 2009-05-28  Alan McGovern  <amcgovern@novell.com>
6893         * animation.cpp: Fix a double free caused by the line
6894         converted = Value (*value);
6896 2009-05-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6898         * pipeline-ui.cpp: Protect against a null surface.
6900         * mediaelement.cpp: Get the surface from the deployment (which should
6901           always have a surface) instead of the media element's surface
6902           (which is not guaranteed to be set always).
6904 2009-05-28  Alan McGovern  <amcgovern@novell.com>
6906         * control.cpp|h: Control.IsEnabled propagates to its children
6907         when the control is Loaded.
6909 2009-05-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6911         * src.mdp: Updated.
6913 2009-05-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6915         * mms-downloader.cpp: Custom headers must be requested before
6916           opening the downloader.
6918 2009-05-28  Stephane Delcroix  <sdelcroix@novell.com>
6920         * multiscaleimage.h|cpp: replace the hash cache on uri by
6921         a set of qtree, one per subimage. This should speed stuffs
6922         a lot, as uri crating/parsing/hashing was taking up to 20%
6923         of msi time.
6925 2009-05-28  Stephane Delcroix  <sdelcroix@novell.com>
6927         * multiscalesubimage.h: GetId (). Get subimage id, used as
6928         cache index in msi.
6930 2009-05-28  Stephane Delcroix  <sdelcroix@novell.com>
6932         * multiscaleimage.cpp: qtree_new, qtree_lookup, qtree_destroy,
6933         qtree_insert, etc. The Q(uad)Tree data structure is a tree with
6934         4 child nodes, matching the tree-ish pyramid of MSI tiles.
6936 2009-05-28  Andreia Gaita  <avidigal@novel.com>
6938         * timeline.cpp: Stop the clock when you call Stop.
6940 2009-05-27  Jeffrey Stedfast  <fejj@novell.com>
6942         * textbox.cpp (TextBoxBase::SyncAndEmit): Now takes a sync_text
6943         argument which defaults to true. If not set, we avoid calling
6944         SyncText() even if emit has the TEXT_CHANGED bit set.
6945         (TextBox::OnPropertyChanged): Call SyncAndEmit() with sync_text =
6946         false if the value was just set to null.
6948 2009-05-27  Alan McGovern  <amcgovern@novell.com>
6950         * control.h:
6951         * control.cpp: Implement correct propagation of
6952           Control.IsEnabled. Children of disabled controls are
6953           disabled. When their parent is re-enabled, they go back to
6954           their previous state.
6956 2009-05-27  Jeffrey Stedfast  <fejj@novell.com>
6958         Fixes to make sure that an TextChanged and SelectionChanged events
6959         are emitted after each and every change to the Text/Selection
6960         properties occurs.
6962         * textbox.cpp (TextBoxBase::BatchPush): Call at the start of each
6963         batch operation. Prevents SyncAndEmit() from doing anything until
6964         all nested batch operations are completed.
6965         (TextBoxBase::BatchPop): Call at the end of each
6966         batch operation.
6967         (TextBoxBase::*): Instead of using inkeypress, use the more
6968         generic BatchPush()/Pop().
6969         (TextBox::OnPropertyChanged): Call SyncAndEmit() after
6970         Text/Selection changes.
6971         (PasswordBox::OnPropertyChanged): Same.
6973 2009-05-27  Geoff Norton  <gnorton@novell.com>
6975         * runtime.cpp|h: Support the splash progress/completed events.
6976         * cbinding.h:
6977         * type-generated.h: Regen
6979 2009-05-27  Jeffrey Stedfast  <fejj@novell.com>
6981         * textbox.cpp (TextBox::EmitSelectionChanged): Only emit the event
6982         if the TextBox is loaded and unset the emit state.
6983         (TextBox::EmitTextChanged): Same.
6985 2009-05-27  Geoff Norton  <gnorton@novell.com>
6987         * deployment.cpp|h: Allow reinitializing the appdomain if our
6988         Source has changed, or we're switching from the splash screen to
6989         the XAP.
6991 2009-05-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6993         * font.cpp:
6994         * textblock.cpp: Fix warnings.
6996 2009-05-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6998         * debug.h:
6999         * runtime.h|cpp: Add LOG_PIPELINE_EX and parse LOG_ASF correctly.
7001 2009-05-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7003         * textbox.cpp:
7004         * textblock.cpp:
7005         * pipeline.cpp:
7006         * mms-downloader.h:
7007         * mms-downloader.cpp:
7008         * internal-downloader.h:
7009         * file-downloader.h:
7010         * file-downloader.cpp:
7011         * pipeline-asf.cpp: Updated according to downloader API changes.
7013         * downloader.h:
7014         * downloader.cpp: Add support for retrieving response headers
7015           and disable caching. Initialize the downloader interface methods
7016           to their default/dummy methods statically.
7018         * value.h:
7019         * type.h:
7020         * type-generated.cpp:
7021         * cbinding.h:
7022         * cbinding.cpp: Regenerated.
7024 2009-05-27  Alan McGovern  <amcgovern@novell.com>
7026         * resources.cpp: Wait til AddedToCollection returns success
7027         before adding the item to the hashtable.
7029 2009-05-27  Alan McGovern  <amcgovern@novell.com>
7031         * resources.cpp: Propagate the error (if there is one) from
7032         Collection::AddWithError. If there is an error, clear the item
7033         from the hashtable before returning.
7035 2009-05-27  Alan McGovern  <amcgovern@novell.com>
7037         * control.h:
7038         * control.cpp:
7039         * dependencyproperty.g.cpp: Control.Enabled needs to be
7040           created in native code as it's required for hittesting. A
7041           disabled control and its visual children do not receive
7042           mouse events and are not visible to
7043           VisualTreeHelper.FindElementInHostCoordinates.
7045 2009-05-26  Jeffrey Stedfast  <fejj@novell.com>
7047         * glyphs.cpp (OnPropertyChanged): Set the font weight/slant based
7048         on the StyleSimulations value.
7049         (Layout): No longer need to pass along StyleSimulations to
7050         GetGlyphInfo().
7052         * font.cpp (style_weights): Added more style weight name mappings.
7053         (style_slants): Same.
7054         (FontFace::IsItalic): New method to query the font face to see if
7055         it is italic or not.
7056         (FontFace::IsBold): Same idea.
7057         (TextFont::TextFont): Now takes a TextFontDescription so that we
7058         can initialize the new 'simulate' member variable which tells us
7059         if we have to simulate bold or italics due to not finding a
7060         suitable font.
7061         (TextFont::GetGlyphInfo): No longer takes a StyleSimulations
7062         argument. Instead, it now uses the 'simulate' member variable to
7063         pass to FontFace::LoadGlyph().
7064         (TextFontDescription::CreatePattern): Always add Weight and Slant
7065         to the pattern now, even if it is the default font
7066         family. Silverlight 2.0 no longer restricts bold/italics to
7067         non-PUI.
7069 2009-05-26  Chris Toshok  <toshok@ximian.com>
7071         * xaml.cpp (XamlElementInstance::SetName): if it's a
7072         dependencyobject, add it to the container here.
7073         (XamlElementInstance::SetKey): same.
7074         (end_element_handler): only do the AddToParentContainer call here
7075         if the element is not a dependencyobject.
7077 2009-05-25  Jeffrey Stedfast  <fejj@novell.com>
7079         * glyphs.cpp: Changed 'style' to be unsigned.
7081 2009-05-25  Andreia Gaita  <avidigal@novel.com>
7083         * timeline.h|cpp (DispatcherTimer): reset the clock properly when
7084         restarting a dispatcher timer. also, rename Run to Restart.
7085         note: if a timer is not stopped or started during it's tick event,
7086         the time spent on the tick is counted for the next tick on the
7087         Restart method.
7089 2009-05-25  Chris Toshok  <toshok@ximian.com>
7091         * runtime.h|cpp (Surface::EmitError): add an overload so
7092         Application.cs can cause an error to be emitted on the surface.
7094         * cbinding.h|cpp: regen.
7096 2009-05-25  Andreia Gaita  <avidigal@novel.com>
7098         * border.cpp (OnPropertyChanged): Invalidate when background is
7099         updated
7101 2009-05-25  Chris Toshok  <toshok@ximian.com>
7103         * uielement.cpp (UIElement::GetTransformToUIElementWithError):
7104         this method fails incorrectly when you call it on the toplevel
7105         element of a surface.
7107 2009-05-25  Chris Toshok  <toshok@ximian.com>
7109         * xaml.cpp (class XNamespace): name conflicts are pseudo-allowed
7110         for separate resource dictionary name registration.  this isn't
7111         exactly right, since the name *should* be unregistered.
7113 2009-05-25  Chris Toshok  <toshok@ximian.com>
7115         * validators.cpp (Validators::TemplateValidator): this is causing
7116         DRT 438 to throw an exception and subsequently timeout.  its
7117         removal doesn't seem to break anything else, so ifdef it out with
7118         a comment.
7120 2009-05-25  Alan McGovern  <amcgovern@novell.com>
7122         * cbinding.cpp
7123         * cbinding.h: Regen
7125         * dependencyobject.cpp
7126         * dependencyproperty.cpp
7127         * dependencyproperty.g.cpp
7128         * dependencyproperty.h
7129         * uielement.h: There are two types of DependencyProperty. 
7130         Core properties and custom properties. Custom properties
7131         do not set the parent on a DO. This makes the old 
7132         'SetsParent' property redundant, so remove it.
7134 2009-05-22  Chris Toshok  <toshok@ximian.com>
7136         * xaml.cpp (XamlElementInstance::SetName): don't call
7137         AddToContainer here.  in case the element is a value type, and
7138         we're adding it to a RD on a managed type (like StackPanel), the
7139         managed xaml loader will marshal the value type to C# and we'll
7140         lose any further updates to the value typed object by the parser.
7141         That is, if we parse <Color x:Key="foo">#ffffff00</Color>, the
7142         ManagedXamlLoader will see a color with #00000000 as its value, as
7143         the content hasn't been parsed by the time we create the managed
7144         object.
7145         (XamlElementInstance::SetKey): same.
7146         (end_element_handler): call AddToParentContainer here instead.
7148 2009-05-22  Chris Toshok  <toshok@ximian.com>
7150         * dependencyobject.cpp (DependencyObject::OnPropertyChanged): we
7151         were missing the case where HydratedFromXaml elements weren't
7152         updating their parent namescope on name changes, only their
7153         private ones.  Adding the parent namescope fix fixes FaceMonkey's
7154         button grid.
7156 2009-05-22  Jackson Harper  <jackson@ximian.com>
7158         * xaml.h|cpp: New callback for registering elements in
7159         containers, we need to do this earlier on in the parse than
7160         setproperty because other elements could reference these elements
7161         before they've been set.
7162         
7163 2009-05-21  Alan McGovern  <amcgovern@novell.com>
7165         * src/cbinding.cpp
7166         * src/cbinding.h: regen
7167         
7168         * dependencyproperty.c:
7169         * dependencyproperty.h: We can either register a 'core' property or a
7170         'custom' property from managed code. Core properties are part of the
7171         framework itself, custom properties are user-created. Custom properties
7172         don't set the parent or register names in namescopes.
7173         
7174 2009-05-21  Stephane Delcroix  <sdelcroix@novell.com>
7176         * deepzoomimagetilesource.h:
7177         * deepzoomimagetilesource.cpp: IsParsed () function, so we know,
7178         without listening to the event, if a tilesource is ready to be
7179         consumed.
7180         * multiscaleimage.cpp: check dzits.IsParsed() before getting the tile
7181         size from a subimage source.
7183 2009-05-21  Larry Ewing  <lewing@novell.com>
7185         * multiscaleimage.cpp (RenderCollection): reoorder the max level
7186         test so that we only call get_tile_func once in that case.  Speeds
7187         up hardrock and the moment.
7189 2009-05-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7191         * debug.h: Added LOG_ASF.
7193 2009-05-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7195         * runtime.h: Don't use 64 bit constants for the runtime debug enum.
7197 2009-05-21  Alan McGovern  <amcgovern@novell.com>
7199         * src/cbinding.cpp
7200         * src/cbinding.h
7201         * src/dependencyproperty.g.cpp: regen
7202         
7203         * dependencyobject.cpp:
7204         * dependencyproperty.cpp:
7205         * dependencyproperty.h:
7206         * uielement.h: Add the ability to set a DP as non-parenting and
7207         apply it to FrameworkElement::TagProperty
7209 2009-05-20  Larry Ewing  <lewing@novell.com>
7211         * multiscaleimage.cpp (RenderCollection): fix bug introduced in
7212         earlier tile size fix.  Fixes covertocover.
7214 2009-05-20  Larry Ewing  <lewing@novell.com>
7216         * brush.cpp:
7217         * bitmapsource.cpp: when creating a cached surface use the group
7218         target type not the overall target.
7220 2009-05-20  Larry Ewing  <lewing@novell.com>
7222         * frameworkelement.cpp (ComputeActualSize): avoid making a
7223         IsLayoutContainer call here.
7225 2009-05-20  Stephane Delcroix  <sdelcroix@novell.com>
7227         * multiscaleimage.cpp: support different tile sizes for the collection
7228         and the individual images. Fixes "the moment" 2D.
7230 2009-05-20  Larry Ewing  <lewing@novell.com>
7232         * xaml.cpp: update the parser error numbers and strings to match 2.0.
7234 2009-05-20  Larry Ewing  <lewing@novell.com>
7236         * multiscaleimage.cpp: small change to avoid getting the property
7237         so often.
7239 2009-05-20  Alan McGovern  <amcgovern@novell.com>
7241         * type.h:
7242         * value.h:
7243         * value.h.in:
7244         * type-generated.cpp: Register 'float' as a known type
7246 2009-05-20  Chris Toshok  <toshok@ximian.com>
7248         * type.h.in: a few changes.  We no longer pass the kind name to
7249         the ctor, since nothing ever uses it, and the type name is enough.
7250         add both an interface array and array count to the Type ctor, as
7251         well as a is_interface bool.  Lastly, add IsAssignableFrom
7252         overloads.
7254         * dependencyobject.cpp (DependencyObject::IsValueValid): switch
7255         from using a direct comparison on Kinds to using
7256         Type::IsAssignableFrom.  this makes interfaces work.
7258         * cbinding.h, cbinding.cpp, type-generated.cpp, type.h: regen.
7260         * animation.cpp (AnimationClock::HookupStorage): instead of
7261         comparing kinds, use Type::IsAssignableFrom to see if we can
7262         animate the property using a particular timeline type.
7263         (DoubleAnimation::GetCurrentValue,
7264          DoubleAnimation::GetTargetValue, ColorAnimation::GetCurrentValue,
7265          ColorAnimation::GetTargetValue, PointAnimation::GetCurrentValue,
7266          PointAnimation::GetTargetValue): add code to deal with the start
7267          value not being the same type as the animation uses (this can
7268          happen if we're animating an interface property like
7269          IComparable.)  The start values in that case are 0.0, Point(0.0),
7270          and Color(0,0,0,0), respectively.
7272 2009-05-19  Larry Ewing  <lewing@novell.com>
7274         * collection.cpp: avoid some GetDeployment calls in looping cases.
7276 2009-05-19  Larry Ewing  <lewing@novell.com>
7278         * frameworkelement.cpp (UpdateLayout): clear the needs flags when
7279         we restart in case they we're properly cleared before.
7281 2009-05-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7283         * pipeline.cpp|h: Add an ExternalDecoder which takes a list of
7284         function pointers to call whenever the corresponding virtual method
7285         is called.
7287         * enums.h: Move enums from the pipeline here (makes it easier to 
7288         create c bindings for methods taking enums)
7290         * mp3.cpp:
7291         * pipeline-asf.cpp:
7292         * pipeline-ffmpeg.cpp: Update accccording to enum changes.
7294         * codec-version.h.in: Bump ABI version.
7296         * value.h:
7297         * cbinding.cpp|h:
7298         * type-generated.cpp: Regenerated.
7300 2009-05-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7302         * audio.cpp:
7303         * mediaplayer.cpp:
7304         * mp3.cpp:
7305         * pipeline-asf.cpp:
7306         * pipeline-ffmpeg.cpp:
7307         * pipeline.cpp|h: Add accessors for fields in VideoStream,
7308         AudioStream and MediaFrame.
7309         * cbinding.cpp|h: Regenerated.
7311 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7313         * cbinding.cpp|h: Regenerated.
7315 2009-05-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7317         * security.h: Include <mono/metadata/assembly.h>.
7318         Fixes a warning (and the build with MD).
7320 2009-05-19  Alan McGovern  <amcgovern@novell.com>
7322         * animation.cpp: Add some optimisations to ObjectKeyFrames.
7323           Don't call back into managed when the value is null or when
7324           the the value is already of the exact right kind. This will
7325           need to be reviewed once unmanaged code understands
7326           interfaces so we can fastpath interfaces too.
7328 2009-05-18  Larry Ewing  <lewing@novell.com>
7330         * dirty.cpp:
7331         * uielement.cpp:
7332         * frameworkelement.cpp: for the time being use the needs* flags on
7333         surface to skip the UpdateLayout logic when the tree is clean.
7334         Optimize a couple of the property reads inside the deep walk.
7335         
7336         * provider.cpp (GetPropertyValue): rework some more of the checks
7337         to remove some other remaining unneeded checks.
7339 2009-05-18  Chris Toshok  <toshok@ximian.com>
7341         * dependencyproperty.g.cpp (Types::RegisterNativeProperties):
7342         regen.
7344 2009-05-18  Larry Ewing  <lewing@novell.com>
7346         * bitmapsource.cpp (GetSurface): use the content type of the image
7347         when creating the native surface.
7349 2009-05-18  Larry Ewing  <lewing@novell.com>
7351         * provider.cpp (GetPropertyValue): reorder the framework element
7352         property lookup to avoid an extra type inquiry in a potentially
7353         common case.
7355 2009-05-18  Larry Ewing  <lewing@novell.com>
7357         * xaml.cpp (dependency_object_set_attributes): move the types
7358         lookup outside the loop.
7360 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7362         * cbinding.h|cpp: 
7363         * type.h: Regenerated.
7364         
7365         * application.h:
7366         * dependencyobject.h:
7367         * dependencyproperty.h:
7368         * downloader.h:
7369         * easing.h:
7370         * frameworkelement.h:
7371         * pipeline.h:
7372         * tilesource.h:
7373         * type.h: Sprinkle CBindingPrequisite around. Also use ints
7374         instead of Type::Kind values in function pointers.
7375         
7376 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7378         * window-gtk.h: Add a GetNativeWidget which returns a void 
7379         pointer instead of GtkWidget* so that we don't need to include
7380         gtk for the c bindings.
7382 2009-05-18  Alan McGovern  <amcgovern@novell.com>
7384         * contentcontrol.cpp: For contentcontrols, the applied
7385           template is only cleared if the old or new content is a
7386           UIElement (frameworkelement?). The fallback 'template' of a
7387           Grid + TextBlock is also reused every time.
7389 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7391         * utils.h: Use c++-style structs to please the generator.
7393 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7395         * window-gtk.h: Add a GetNativeWidget which returns a void
7396         pointer instead of GtkWidget* so that we don't need to include
7397         gtk for the c bindings.
7398         * cbinding.h|cpp: Updated.
7400 2009-05-16  Chris Toshok  <toshok@ximian.com>
7402         * xaml.cpp (flush_char_data): verbatim mode cdata still needs to
7403         be g_strstrip'ed, but we can't do it until right before we use it,
7404         so we do it here.
7406 2009-05-16  Chris Toshok  <toshok@ximian.com>
7408         * xaml.cpp (XamlElementInfo::SetIsCDataVerbatim,
7409         XamlElementInfo::IsCDataVerbatim): new methods to set and get a
7410         flag telling the cdata_handler to not collapse/remove
7411         whitespace. <clr:String> requires this.
7412         (PrimitiveNamespace::FindElement): for the "String" case, call
7413         XamlElementInfo::SetIsCDataVerbatim(true).
7414         (char_data_handler): if the current element IsCDataVerbatim, just
7415         append the input string and return.
7417 2009-05-16  Alan McGovern  <amcgovern@novell.com>
7419         * security.c: Bump the security env var to _04
7421 2009-05-16  Alan McGovern  <amcgovern@novell.com>
7423         * cbinding.h:
7424         * animation.h:
7425         * cbinding.cpp:
7426         * animation.cpp:
7427         * application.h:
7428         * application.cpp:
7429         * dependencyproperty.g.cpp: Add type converting to
7430           ObjectKeyFrame. The conversion is done during the Resolve
7431           phase. If the type conversion can't be completed an
7432           exception is thrown.
7434 2009-05-15  Chris Toshok  <toshok@ximian.com>
7436         * dependencyobject.cpp (DependencyObject::RegisterAllNamesRootedAt):
7437         in the hydrated case we still need to register our name.
7438         (DependencyObject::ProviderValueChanged): don't swallow the error
7439         when we SetParent on the new_as_dep.
7440         (DependencyObject::SetParent): if we're adding a Hydrated
7441         element (i.e. one that was loaded using LoadComponent), we need to
7442         register its name into the parent namescope.  Also, move the
7443         quickest check to the top so we don't do the family check on every
7444         SetParent call if the before/after parent are the same.  Lastly,
7445         we only register names if the current parent is NULL.  That is, if
7446         a named brush is a property on an element already, and its name is
7447         registered, we don't register it in the new namescope when it's
7448         set as a property on a second element.  Odd but it matches SL
7449         behavior.
7450         (DependencyObject::FindName): no longer walk up the namescope
7451         hierarchy, and don't look up things in the toplevel's namescope
7452         either.
7454         * dependencyobject.h (class DependencyObject): add
7455         SetIsHydratedFromXaml/IsHydratedFromXaml, used by the parser.
7457         * xaml.cpp (XamlLoader::HydrateFromString): flag the resulting
7458         object as being hydrated.
7459         (everywhere): we don't need GetParentNamescope for anything.  we
7460         always use the toplevel namescope of the subtree the parser is
7461         currently parsing.
7463         * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
7464         don't pass a null error to ProviderValueChanged.
7465         
7466 2009-05-15  Larry Ewing  <lewing@novell.com>
7468         * frameworkelement.cpp (UpdateLayout): just warn if the element is
7469         loaded don't skip it for now since it causes regressions in the
7470         control tests.
7472 2009-05-15  Chris Toshok  <toshok@ximian.com>
7474         * timeline.cpp (ParallelTimeline::GetNaturalDurationCore): tiny
7475         change that gets automatic storyboards with zero length children
7476         to have a zero length themselves.
7478 2009-05-15  Larry Ewing  <lewing@novell.com>
7480         * grid.cpp (OnCollectionItemChanged): invalidate on column
7481         definition changes.
7483 2009-05-15  Larry Ewing  <lewing@novell.com>
7485         * debug.h (LOG_LAYOUT): use printf.
7487         * mediaelement.cpp (ArrangeOverride): remove layout debug spew.
7489         * frameworkelement.cpp: reorder the updated_list and clean up some
7490         debug spew.
7492         * uielement.cpp (PostSubtreeLoad): we can't guard against emitting
7493         loaded here since it will break delayed queuing of loaded events
7494         when the tree is modified inside the event handler.  Improves
7496 2009-05-15  Jackson Harper  <jackson@ximian.com>
7498         * xaml.cpp: Use the property element's type instead of parsing out
7499         the name, this fixes setting propertys of imported managed types.
7501 2009-05-15  Alan McGovern  <amcgovern@novell.com>
7503         * animation.h:
7504         * dependencyproperty.g.cpp: The Keyframes property of
7505           ObjectAnimationUsingKeyframes needs to be autogenerated.
7507 2009-05-15  Alan McGovern  <amcgovern@novell.com>
7509         * type-generated.cpp:
7510         * frameworkelement.h: Properly handle exceptions when updating
7511           the source in a 2 way binding. Raise the
7512           BindingValidationError event in the right place.
7514 2009-05-14  Jackson Harper  <jackson@ximian.com>
7516         * xaml.cpp: Pass the item's xmlns when setting unknown attributes.
7518 2009-05-14  Larry Ewing  <lewing@novell.com>
7520         * xaml.cpp (lookup_named_item): make this nonrecursive.
7522 2009-05-14  Jeffrey Stedfast  <fejj@novell.com>
7524         * frameworkelement.cpp (OnPropertyChanged): Do a
7525         FullInvalidate(true) when the Horizontal or Vertical Alignment
7526         properties change.
7528 2009-05-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7530         * dependencyobject.cpp: unref: only try to delete
7531         us if we had a 0 refcount after decrementing refcount.
7532         Also use an atomic fetch when checking if the object
7533         was resurrected.
7535 2009-05-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7537         * dependencyobject.cpp: when printing stack traces
7538         first get all the lines to print, then print them.
7539         This way it's a lot less probable to get other lines
7540         in between when printing stacktraces from multiple threads.
7542 2009-05-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7544         * dependencyobject.cpp: Print typename for object creation
7545         too, now that we don't have to call a virtual method to 
7546         get the type.
7548 2009-05-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7550         * timesource.h: G_PRIORITY_IDLE doesn't exist, use
7551         G_PRIORITY_HIGH_IDLE.
7553 2009-05-13  Chris Toshok  <toshok@ximian.com>
7555         * xaml.cpp (class XamlContextInternal): allow for a parent context
7556         so that we can track context's (and resources) across multiple
7557         template instantiations.
7558         (create_resource_list): just stuff the FrameworkElement on the
7559         list and leave the GetValue(UIElement::Resources) for when we look
7560         up the actual resource.
7561         (end_element_handler): when creating a new XamlContext pass in our
7562         current XamlContext.
7563         (XamlContextInternal::LookupNamedItem): handle both changes (FWE
7564         in our resources list, and parent context chaining.)
7566 2009-05-13  Jackson Harper  <jackson@ximian.com>
7568         * xaml.cpp: We need to dup the top_element since this can be
7569         deleted elsewhere.
7571 2009-05-13  Chris Toshok  <toshok@ximian.com>
7573         * clock.cpp (Clock::UpdateFromParentTime): for instantaneous
7574         clocks (those with Duration=00:00:00) we weren't emitting
7575         completed (or switching to Fill/Stop).
7577 2009-05-13  Jackson Harper  <jackson@ximian.com>
7579         * xaml.h|cpp: use a Value* for top level objects, this lets us get
7580         rid of the gchandle hack in the managed xaml loader for non DOB
7581         top level objects.
7583 2009-05-13  Larry Ewing  <lewing@novell.com>
7585         * canvas.cpp: make IsLayoutContainer nonrecursive using
7586         DeepTreeWalker.
7587         
7588         * frameworkelement.cpp:
7589         * uielement.cpp, uielement.h:
7590         * panel.h: 
7591         * shape.cpp: start reworking the container layout logic to avoid
7592         expensive calls.
7594         * collection.cpp: don't ref elements inside DeepTreeWalker use
7595         UnsafeUIElementNode instead.
7596         
7597         * dirty.cpp (UpdateLayout): remove some dead code.
7599 2009-05-13  Alan McGovern  <amcgovern@novell.com>
7601         * value.cpp: Ensure we don't explode when checking null uris
7603 2009-05-13  Alan McGovern  <amcgovern@novell.com>
7605         * validators.cpp: If StyleProperty has a value and it is
7606           'null', that is allowed to be replaced.
7608 2009-05-12  Chris Toshok  <toshok@ximian.com>
7610         * timeline.cpp (DispatcherTimer::Start): when resetting the clock
7611         we need to make sure to reset the root parent time, or else the
7612         timer will tick immediately when started (if it's previously hit
7613         its tick).
7615 2009-05-12  Larry Ewing  <lewing@novell.com>
7617         * collection.cpp, collection.h: Add a SkipBranch method to avoid
7618         computing walking into the tree when we can.
7620         * frameworkelement.cpp (UpdateLayout): Use the new skip branch
7621         logic in deeptreewalker to avoid invisible elements.
7623 2009-05-12  Larry Ewing  <lewing@novell.com>
7625         * frameworkelement.cpp (UpdateLayout): revert the visibility change
7626         for now.
7628 2009-05-12  Larry Ewing  <lewing@novell.com>
7630         * frameworkelement.cpp (ComputeBounds): make sure the bounds are
7631         the size of the full element, and skip elements based on the
7632         actual visibility setting not the computed one.
7634 2009-05-12  Jeffrey Stedfast  <fejj@novell.com>
7636         * textbox.cpp (InvalidateCursor): New helper method which applies
7637         the absolute transform to the cursor before invalidating the
7638         cursor's region.
7639         (ShowCursor): Use InvalidateCursor().
7640         (HideCursor): Same.
7641         (UpdateCursor): Here too.
7643 2009-05-12  Jeffrey Stedfast  <fejj@novell.com>
7645         * textbox.cpp (OnKeyDown): Need to set the handled flag on the
7646         routed event args in the case where the key event is handled by
7647         GtkIMContext too.
7648         (OnKeyUp): Set the handled flag in both cases here.
7650 2009-05-11  Alan McGovern  <amcgovern@novell.com>
7652         * control.h:
7653         * control.cpp:
7654         * contentcontrol.cpp: Recommit r133738 as it's not causing the
7655           timeouts.
7657 2009-05-09  Andreia Gaita  <avidigal@novell.com>
7659         * uielement.h: Add GenerateJSBinding annotation to 
7660         CaptureMouse, ReleaseMouseCapture and
7661         GetTransformToUIElementWithError (TransformToVisual)
7663 2009-05-09  Chris Toshok  <toshok@ximian.com>
7665         * eventargs.cpp (KeyEventArgs::IsModifier): reverse the sense of
7666         this check so we're buildable on SLED10.
7668 2009-05-08  Jeffrey Stedfast  <fejj@novell.com>
7670         * layout.cpp (layout_word_wrap): If we can't find a suitable place
7671         to wrap in the first time through the loop, make sure to respect
7672         the 'force' state the second time through.
7674         * application.cpp (GetResourceAsPath): Updated.
7676         * utils.cpp (CanonicalizeFilename): Now takes a 'lower' argument
7677         to specify whether the filename should be lowercased as it is
7678         canonicalized.
7679         (ExtractAll): The 'canon' argument has been renamed to 'lower'
7680         which more accurately reflects its purpose. Pass this on to
7681         CanonicalizeFilename().
7683 2009-05-08  Alan McGovern  <amcgovern@novell.com>
7685         * control.h:
7686         * control.cpp:
7687         * contentcontrol.cpp: Revert the changes in r133738 until I
7688           can figure out why the x86 bot doesn't like them. It's
7689           causing the extended controls tests to time out.
7691 2009-05-07  Alan McGovern  <amcgovern@novell.com>
7693         * control.h:
7694         * control.cpp:
7695         * contentcontrol.cpp: If the content property changes, the
7696           Template is cleared if it has already been applied.
7698 2009-05-07  Andreia Gaita  <avidigal@novell.com>
7700         * src/uielement.cpp (GetTransformToUIElementWithError): Don't fail if
7701         the to_element is the top level element.
7703 2009-05-06  Chris Toshok  <toshok@ximian.com>
7705         * xaml.cpp (dependency_object_set_attributes): we can't assume
7706         that a NULL value for @v means it hasn't been set, since {x:Null}
7707         could have been specified.  we need another flag to make it work.
7709 2009-05-06  Jeffrey Stedfast  <fejj@novell.com>
7711         * textbox.cpp (OnPropertyChanged): Guard against calling
7712         ResetIMContext in the middle of some keyboard input.
7714 2009-05-05  Chris Toshok  <toshok@ximian.com>
7716         * collection.cpp (Collection::InsertWithError): we need to make a
7717         further copy because the caller could remove the element in a
7718         handler, which causes us to delete the value (values aren't ref
7719         counted.)
7721 2009-05-05  Jeffrey Stedfast  <fejj@novell.com>
7723         * textbox.cpp (TextBoxBase::Initialize): Set use_preedit() to
7724         false since we're not rendering the preedit strings ourselves.
7725         (TextBoxBase::SetSurface): Update the GtkIMContext's client
7726         GdkWindow.
7727         (TextBoxView::UpdateCursor): Update the GtkIMContext's idea of
7728         where the cursor is at.
7730 2009-05-05  Alan McGovern  <amcgovern@novell.com>
7732         * xaml.cpp: If 'Key' hasn't been set, use 'Name'. Allows
7733           elements to be added to ResourceDictionarys in managed land.
7735 2009-05-05  Jeffrey Stedfast  <fejj@novell.com>
7737         * layout.cpp (Select): Fixed some selection logic.
7739         * textbox.cpp (TextBoxBase::Initialize): Create a new GtkIMContext
7740         and hook up some callbacks. Also init need_im_reset to false.
7741         (TextBoxBase::~TextBoxBase): Kill the IMContext.
7742         (TextBoxBase::OnKeyDown): Filter the event key through the
7743         IMContext. If it handles the key, don't do anything more.
7744         (TextBoxBase::DeleteSurrounding): New callback method for
7745         IMContext stuff.
7746         (TextBoxBase::RetrieveSurrounding): Same.
7747         (TextBoxBase::Commit): New IMContext callback method to commit the
7748         input-method chars into the TextBox.
7749         (TextBoxBase::ResetIMContext): New helper method to reset the
7750         IMContext.
7751         (TextBoxBase::OnFocusOut): Update GtkIMContext focus state.
7752         (TextBoxBase::OnFocusIn): Same.
7753         (TextBoxBase::OnPropertyChanged): If the IsReadOnly property state
7754         changes, update the GtkIMContext state accordingly. Same with the
7755         various Selection states and Text property.
7757         * eventargs.cpp (GetEvent): New method to get access to the
7758         original GdkEventKey event for use with GtkIMContext.
7760 2009-05-05  Alan McGovern  <amcgovern@novell.com>
7762         * geometry.h:
7763         * animation.h:
7764         * dependencyproperty.g.cpp: Back out the default value fix
7765           until the parser can be updated to handle this.
7767 2009-05-05  Alan McGovern  <amcgovern@novell.com>
7769         * geometry.h:
7770         * animation.h:
7771         * dependencyproperty.g.cpp: PathGeometry.Figures and
7772           ObjectAnimationUsingKeyframes.KeyFrames both need to be
7773           autogenerated. This allows them to pass their respective
7774           DefaultValues tests (when those tests are run).
7776 2009-05-05  Alan McGovern  <amcgovern@novell.com>
7778         * template.h: Remove the forward decls for TemplateBinding and
7779           XamlTemplateBinding as they don't exist in unmanaged anymore
7781 2009-05-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7783         * pipeline-ffmpeg.cpp: FfmpegDecoder: Chain Dispose.
7785 2009-05-04  Geoff Norton  <gnorton@novell.com>
7787         * codec-version.h.in: Bump
7788         * pipeline-ui.cpp: Bump because we no longer link libmoon in the codecs
7790 2009-05-04  Jeffrey Stedfast  <fejj@novell.com>
7792         * debug.cpp (Frame::ToString): fixed compile warning.
7794         * uielement.cpp (UpdateLayout): Need to return a bool here, we
7795         can't return void.
7797         * textbox.cpp (Blink): Set the deployment.
7799 2009-05-03  Chris Toshok  <toshok@ximian.com>
7801         * everywhere (NotifyListenersOfPropertyChange): add a MoonError
7802         arg here.
7803         
7804         * xaml.h|.cpp (class XamlContext): add GetTemplateBindingSource so we
7805         can hook up TemplateBindings in managed code.  Also, change all
7806         the loader callback types to take a loader pointer so we can get
7807         the context.
7809         * template.h|.cpp: remove all the lists of bindings, the
7810         two different template binding types (XamlTemplateBinding and
7811         TemplateBinding) and their respective List::Node containers.  all
7812         this is handled in managed land now, where it belongs.
7814         * dependencyproperty.h|.cpp: move
7815         PropertyChangedEventArgs to dependencyproperty.h, and unify the
7816         two types for property change handlers into simply
7817         PropertyChangeHandler.
7819         * dependencyobject.h: remove the PropertyChangedEventArgs struct
7820         from here, it now lives in dependencyproperty.h
7822         * dependencyobject.cpp (class CallbackListener): pass a MoonError
7823         to the callback.
7824         (DependencyObject::ProviderValueChanged): reuse the
7825         PropertyChangedEventArgs since property change callbacks take them
7826         now instead of splitting up the old_value/new_value/property.
7828         * control.cpp (Control::Control, Control::~Control,
7829         Control::ApplyTemplate): remove all reference to the list of
7830         bindings.
7832         * control.h (class Control): remove the list of bindings.
7834         * cbinding.h|.cpp, type-generated.cpp, type.h, value.h:
7835         regen.
7837 2009-05-03  Jeffrey Stedfast  <fejj@novell.com>
7839         * runtime.h (InMainThread): check main_thread_inited.
7841         * runtime.cpp: All flags variables are now 32bit. Split _EX flags
7842         into a second debug_flags_ex. Also added a new bool var to keep
7843         track of whether or not main_thread has been initialized since we
7844         can't necessary compare against NULL.
7846         * debug.h: Updated.
7848 2009-05-03  Jeffrey Stedfast  <fejj@novell.com>
7850         * debug.cpp: #include <unistd.h>
7852         * *.h: Don't #include stdint.h or unistd.h (only cpp files should
7853         include unistd.h).
7855 2009-05-02  Jeffrey Stedfast  <fejj@novell.com>
7857         * downloader.h: 
7858         * runtime.h:
7859         * color.h:
7860         * clock.h:
7861         * geometry.h:
7862         * value.h[.in]: Don't include stdint.h
7864 2009-05-01  Jackson Harper  <jackson@ximian.com>
7866         * xaml.cpp: Handle the {} escape sequence. (Managed code will have to
7867         handle this also).
7869 2009-05-01  Larry Ewing  <lewing@novell.com>
7871         * collection.cpp: rework the sorting invalidation logic so that we
7872         don't do it quite as often.
7874 2009-05-01  Larry Ewing  <lewing@novell.com>
7876         * collection.h:
7877         * collection.cpp: cache the deployment more and add a
7878         VisualTreeWalker interface to help with that.
7880 2009-05-01  Larry Ewing  <lewing@novell.com>
7882         * type.h:
7883         * type.in.h:
7884         * type.cpp: Move the IsSubclassOrSuperclassOf logic into types and
7885         add a static version that handles looking up the deploy for us.
7887         * value.h
7888         * value.h.in
7889         * value.cpp: Make it possible to use a cached deployment when
7890         retriving values using the ::As* methods and calling 
7891         Types::IsSubclassOrSuperclassOf.
7893         * style.cpp: when sealing the style use the cached deployment logic.
7895 2009-05-01  Larry Ewing  <lewing@novell.com>
7896         
7897         * dependencyobject.h:
7898         * xaml.cpp: use types more directly in a few more places to reduce
7899         calls to Deployment::GetCurrent even more.
7901 2009-05-01  Jackson Harper  <jackson@ximian.com>
7903         * validators.cpp|h:
7904         * dependencyobject.cpp|h: Move the name validation check to a
7905         validator (phase one of moving NameProperty to frameworkelement).
7906         * dependencyproperty.g.cpp: regen
7907         
7908 2009-05-01  Jackson Harper  <jackson@ximian.com>
7910         * type.h.in:
7911         * value.h.in: Sync with their .h's
7913 2009-04-30  Jackson Harper  <jackson@ximian.com>
7915         * xaml.cpp: Use the type system for detecting if we should be in
7916         buffering mode, anything that is a FrameworkTemplate
7917         should be buffered.  This fixes custom types that inherit from
7918         DataTemplate not getting buffered properly.
7920 2009-04-30  Jackson Harper  <jackson@ximian.com>
7922         * xaml.cpp: We need to pass the object to GetPropertyName because
7923         non DOB objects can have content properties now.
7925 2009-04-30  Jackson Harper  <jackson@ximian.com>
7927         * xaml.cpp: Don't require a content property name when we are
7928         trying to set a managed content property.  This could be the
7929         content of a managed collection.
7931 2009-04-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7933         * bitmapimage.cpp: Make sure we clean up any previous
7934           downloaders when we create new ones.
7936 2009-04-29  Larry Ewing  <lewing@novell.com>
7938         * frameworkelement.cpp:
7939         * uielement.cpp (DoMeasure): reorder some calls to improve speed
7940         until the new logic lands.
7942 2009-04-29  Larry Ewing  <lewing@novell.com>
7944         * value.h (checked_get_subclass): use IsSubclassOrSuperclassOf to
7945         reduce Deployment::GetCurrent calls.
7947         * type.h:
7948         * type.cpp: add IsSubclassOrSuperclassOf so that we can use it it
7949         for value checking.
7951 2009-04-29  Larry Ewing  <lewing@novell.com>
7953         * xaml.cpp:
7954         * dependencyobject.cpp: reuse types to reduce calls to
7955         Deployment::GetCurrent ().
7957 2009-04-29  Alan McGovern  <alan.mcgovern@gmail.com>
7959         * popup.cpp: Forgot to call the base Dispose method.
7961 2009-04-29  Geoff Norton  <gnorton@novell.com>
7963         * debug.cpp: Not everyone in the world is 32-bit intel.
7965 2009-04-29  Jeffrey Stedfast  <fejj@novell.com>
7967         * textblock.cpp (SetTextInternal): Protect everything from
7968         reentrancy and never replace the autocreated InlineCollection with
7969         a newly allocated one. Instead, Clear() the old one and add the
7970         new Run.
7971         (OnCollectionChanged): If !setvalue, then it means we are updating
7972         stuff elsewhere. Avoid causing reentrancy. Also simplified a bit.
7974 2009-04-29  Andreia Gaita  <avidigal@novell.com>
7976         * dependencyobject.cpp: Add MOONLIGHT_OBJECT_TRACK_VISI for outputting
7977         parseable stacktraces for later visualization
7979 2009-04-29  Andreia Gaita  <avidigal@novell.com>
7981         * debug.[cpp|h]: Add libunwind-backed output for tracing ref/unref
7982         calls in a nice way, for later parsing and visualization.
7984 2009-04-29  Geoff Norton  <gnorton@novell.com>
7986         * pipeline-ui.cpp|h: If the codec download ends prematurely, dlopen
7987         nicely crashes on a incomplete .so (thanks).  As such we're going to 
7988         sha1 the expected binary before blindly installing it to gatekeep
7989         against this.
7991 2009-04-29  Jeffrey Stedfast  <fejj@novell.com>
7993         Fixes some cursor position/selection bugs
7995         * layout.cpp (TextLayoutLine): Initialize a new member variable
7996         'count' to 0.
7997         (Layout): Update line->count (needed for the reworking of
7998         GetCursor) and line->length (which was the case of the bugs)
7999         variables as we go. Switch to doing this for run->length too.
8000         (GetCursor): Reworked a bit to use character indexes to help us
8001         find the correct cursor position rather than using byte offsets
8002         which were more awkward.
8004 2009-04-29  Alan McGovern  <amcgovern@novell.com>
8006         * popup.h:
8007         * popup.cpp: Remove the attached layer correctly when the
8008           surface is being nulled on a Popup. 
8010 2009-04-29  Geoff Norton  <gnorton@novell.com>
8012         * style.cpp:
8013         * provider.cpp: GetIterator returns a ref'd iter, we need to delete
8014         it when we're done to clean it up.
8015         * dependencyproperty.g.cpp: You raise me up.
8016         * deployment.cpp|h: Deployment has a cyclic reference to things 
8017         stored in it (AssemblyParts, NameScope), we need to break this cycle
8018         in our disposer so they can be properly cleand up.
8019         * xaml.cpp: If we create a new collection, and set the collection as
8020         some objects value, it will have a refcount of 2.  We need to unref
8021         the collection once we've handed it off.
8023 2009-04-28  Geoff Norton  <gnorton@novell.com>
8025         * popup.cpp: We cannot access this local value here since its been
8026         cleared in our dispose call.
8028 2009-04-28  Geoff Norton  <gnorton@novell.com>
8030         * deployment.cpp: Now that we properly shut down the clocks and 
8031         media threads, we can finalize the domain here instead of pumping
8032         the GC.
8034 2009-04-28  Chris Toshok  <toshok@ximian.com>
8036         * dirty.cpp (Surface::UpdateLayout): quiet g++ about taking the
8037         address of a temporary.
8039 2009-04-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8041         * audio.h:
8042         * audio.cpp: When looping over playing nodes, don't include
8043           nodes in the Waiting state.
8045         * audio-alsa.cpp: when Played, update the poll list. The state
8046           might not actually have changed if only the Waiting flag was
8047           switched.
8049 2009-04-28  Larry Ewing  <lewing@novell.com>
8051         * uielement.cpp
8052         * uielement.h:
8053         * dirty.cpp:
8054         * runtime.cpp:
8055         * runtime.h:
8056         * frameworkelement.h:
8057         * frameworkelement.cpp: add FrameworkProvider for actual*
8058         values.  Rework layout using the actual* values and add a first
8059         pass at looping layout.
8061         * collection.cpp:
8062         * collection.h: Add a deep tree walker that allows you to walk the
8063         entire tree without recursing.
8064         
8065         * media.cpp:
8066         * media.h:
8067         * shape.cpp:
8068         * shape.h:
8069         * canvas.h:
8070         * canvas.cpp: rework layout logic for the new providers and handle
8071         more of the corner cases.
8073         * textblock.h:
8074         * textblock.cpp: Remove the old Actual* provider since we use the
8075         generic one now.  Go a bit crazy with Invalidations until they can
8076         be reworked.
8078         * eventargs.cpp: stop using IsAnythingDirty.
8079         
8080 2009-04-28  Larry Ewing  <lewing@novell.com>
8082         * dependencyobject.cpp:
8083         * mediaelement.cpp:
8084         * mediaplayer.cpp:
8085         * textbox.cpp:
8086         * timesource.cpp:
8087         * timesource.h: rework the priority of our event queue so that
8088         we end up being more responsive to input and give the browser a
8089         chance to do things like repaint.
8091 2009-04-28  Jackson Harper  <jackson@ximian.com>
8093         * xaml.cpp: Don't allow x:Class on non top level elements.
8095 2009-04-28  Jackson Harper  <jackson@ximian.com>
8097         * dependencyproperty.cpp: When resolving property paths if we
8098         don't have enough info to lookup the correct managed type we just
8099         verify that the current lookup object has the correct type name,
8100         excluding namespace.
8102 2009-04-28  Alan McGovern  <amcgovern@novell.com>
8104         * cbinding.h:
8105         * cbinding.cpp:
8106         * contentcontrol.h:
8107         * contentcontrol.cpp: Add the ability to stop ContentControl
8108           from automatically setting the LogicalParent when a
8109           FrameworkElement is added as the Content.
8111 2009-04-27  Jackson Harper  <jackson@ximian.com>
8113         * value.cpp: property path's have expanded paths that need to be
8114         copied, freed, ect now.
8115         * propertypath.h: Add an expanded path to the property path, this
8116         is a path with managed types marked with namespaces expanded into
8117         full names. So 'moon:MyType' becomes something like
8118         'MoonNamespace.MyType'.
8119         * dependencyproperty.cpp: If an expanded path is available use
8120         that for property path parsing.  Also added support for the ' mark
8121         for escaping full type names (otherwise full names could not have
8122         '.'s). The ' can only be used in expanded paths.
8123         * xaml.cpp: When parsing property paths expand out managed
8124         namespaces if possible.
8126 2009-04-27  Geoff Norton  <gnorton@novell.com>
8128         * value.cpp: Its possible for these pointers to be 0x0 here, so
8129         we need to guard against a invalid dereference causing a SIGSEGV
8130         fixes moon-unit with toggleref on.
8132 2009-04-27  Geoff Norton  <gnorton@novell.com>
8134         * codec-url.h, pipeline-ui.cpp: Update for 1.9p1
8136 2009-04-24  Chris Toshok  <toshok@ximian.com>
8138         It turns out the granularity of overriding in styles is at the
8139         setter level, not the style level.  so if you have a local style
8140         with a setter for Background, it doesn't overwrite the default
8141         style setters for, say, Foreground.  We handle this by having two
8142         style providers, with the local style provider overriding the
8143         default style provider.
8144         
8145         * frameworkelement.cpp (FrameworkElement::FrameworkElement):
8146         initialize both of the style providers (at both LocalStyle and
8147         DefaultStyle levels.)
8148         (FrameworkElement::OnPropertyChanged): call ApplyStyle on the new
8149         style (so that values are converted in managed-land), and seal it
8150         at the local style level.
8151         (FrameworkElement::SetDefaultStyle): same blob here, but seal it
8152         at the default style level.
8154         * dependencyobject.cpp (DependencyObject::Initialize): pass
8155         precedences to the providers in their ctors, and also don't
8156         initialize a style provider here.  This saves us from having a
8157         style provider on anything except frameworkelement subclasses.
8159         * mediaelement.h|.cpp, textbox.cpp, textblock.cpp: add the
8160         precedence ctor arg to property value providers.
8162         * provider.h: provider ctors now take both an object and a
8163         precedence level.  that way they know what precedence level to
8164         notify changes on (this is mostly for the style provider, but it
8165         moves all the precedence level logic to the spot where we create
8166         the provider, not in the provider code itself.)
8168         * provider.cpp: add all the precedence ctor args.
8169         (StylePropertyValueProvider::SealStyle): call ProviderValueChanged
8170         with the precedence we were initialized with.
8171         (AutoCreatePropertyValueProvider::GetPropertyValue): same.
8172         
8173 2009-04-24  Alan McGovern  <amcgovern@novell.com>
8175         * runtime.cpp: When a layer is being detached, don't try to
8176           invalidate its bounds if the active window has already been
8177           torn down. Fixes the case where a popup is open while the
8178           window is being torn down.
8180 2009-04-24  Alan McGovern  <amcgovern@novell.com>
8182         * popup.h:
8183         * popup.cpp: When the popup is detached from the surface, it
8184           should automatically close if it is open.
8186 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
8188         * layout.cpp (Layout): Silverlight 2.0 no longer starts plotting
8189         lwsp after going beyond the width constraint. Fixes the
8190         tests in the far right in MS DRT 206.
8192 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
8194         * font.cpp (GetGlyphInfo): Don't special-case
8195         ZeroWidthNonBreakingSpace anymore. Rely on the font for this
8196         glyph. That seems to be what SL2 does now...
8198         * layout.cpp (layout_word_wrap): Fixed logic for word-joiners and
8199         implemenetd a forced-wrap if we can't find a suitable place to
8200         wrap.
8202 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
8204         * layout.cpp (layout_word_wrap): Don't treat special numeric
8205         punctuation as the start of a numeric word until we see what lays
8206         beyond it.
8208 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
8210         * layout.cpp (layout_word_wrap): Don't ignore Zero-Width spaces
8211         anymore, that was a 1.0-thing and can no longer be used. Also
8212         added support for non-breaking-glue classes as well as rules for
8213         breaking on combining-marks, open-punctuation, contingents,
8214         quotations, prefixes, and words starting with an infix.
8216 2009-04-23  Chris Toshok  <toshok@ximian.com>
8218         * animation.cpp|.h, clock.cpp|.h: remove
8219         OnSurfaceAttach/OnSurfaceDetach.  They're no longer used.
8221 2009-04-23  Chris Toshok  <toshok@ximian.com>
8223         * clock.cpp (ClockGroup::UpdateFromParentTime): cache the current
8224         clock state and use that to tell whether to update the child
8225         clocks on this tick.  Clock::UpdateFromParentTime will change it
8226         out from under us, and child clocks won't get updated the last
8227         time when we switch to Filling or Stopped.
8229 2009-04-23  Chris Toshok  <toshok@ximian.com>
8231         * animation.cpp (Animation::AllocateClock): remove the name
8232         setting from here, since it only works here if the target/property
8233         were set on the animation itself.
8234         (AnimationClock::HookupStorage): and move it here, when we know
8235         both the target and property.
8237         * multiscaleimage.cpp (MultiScaleImage::SetViewportWidth): use
8238         Class::Event instead of instance->Event.  also set the name of the
8239         storyboard in debug mode.
8240         (MultiScaleImage::SetViewportOrigin): same.
8241         (motion_finished): make static.
8243 2009-04-23  Chris Toshok  <toshok@ximian.com>
8245         * clock.cpp (ClockGroup::UpdateFromParentTime): only tick child
8246         clocks (not clockgroups, mind you) if we're active and not paused.
8247         Fixes animations reverting in lutz's deep zoom demo.
8249 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
8251         Lots of fixage for MS DRT #209
8253         * layout.cpp (layout_word_wrap): Fixed for inseparables,
8254         exclamations, ambiguous, and postfix. Also removed the
8255         glyph->index == 0 hack that was there for Silverlight 1.0
8257 2009-04-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8259         * dependencyobject.h:
8260         * dependencyobject.cpp: Add a way to mark allow objects to be
8261           deleted on any thread, not just the main thread.
8263         * pipeline.cpp: MediaClosures can be deleted on any thread.
8265 2009-04-22  Jeffrey Stedfast  <fejj@novell.com>
8267         * layout.cpp (layout_word_wrap): Add a bit more logic for infix
8268         separators. Finishes off MSDRT 208.
8270 2009-04-22  Chris Toshok  <toshok@ximian.com>
8272         * xaml.cpp (value_from_str): permit empty int32's (they're 0).
8273         add comment about empty doubles.
8275 2009-04-22  Chris Toshok  <toshok@ximian.com>
8277         * xaml.cpp (dependency_object_add_child): guard against adding an
8278         empty Value to a resource dictionary.  this happen when you have
8279         no content on a primitive type (<sys:Bool></sys:Bool>) and
8280         value_from_str can't deal with parsing an empty string.
8281         (value_from_str): for non-object/non-string types, we need to
8282         strip leading/trailing whitespace before attempting to parse. this
8283         allows things like: <sys:Bool> true </sys:Bool>
8284         (class XamlElementInstanceValueType): for empty elements the value
8285         will have never been set.  try to set it here using an empty
8286         string.
8288 2009-04-22  Jeffrey Stedfast  <fejj@novell.com>
8290         * textbox.cpp (OnPropertyChanged): Clamp our SelectionStart and
8291         SelectionLength values as they come in. Apparently this is what
8292         Silverlight does too.
8294 2009-04-22  Chris Toshok  <toshok@ximian.com>
8296         * clock.h|cpp (Clock::UpdateFromParentTime): returns a bool now,
8297         with true meaning "i need another tick."
8298         (ClockGroup::UpdateFromParentTime): same.
8300         * timeline.cpp (DispatcherTimer::Start): use the timemanager to
8301         add the clock.
8302         (DispatcherTimer::Run): use the root_clock's parent clock here to
8303         simplify the code a bit.
8304         (DispatcherTimer::~DispatcherTimer): same.
8306         * animation.cpp (Storyboard::BeginWithError): simplify this a bit.
8307         we don't care about groups, just add it to the deployment's
8308         timemanager.
8310         * timemanager.h|cpp (class RootClockGroup): new class to represent
8311         the root clock group created by a time manager to house all other
8312         clocks in a surface.  It has slightly different behavior from a
8313         noprmal clock group, particularly wrt putting the timemanager to
8314         sleep.
8315         (TimeManager::TimeManager): create a RootClockGroup.
8316         (TimeManager::RemoveTickCall): if we're putting the time manager
8317         to sleep, check to see if this was the last tick call, and clear
8318         the flag (and stop the source if the flags are now empty).
8319         (TimeManager::NeedRedraw): now that clock smoothing isn't used,
8320         source->SetTimerFrequency() can't be called with whatever timeout
8321         we like and have it migrrate back to the user-specified time.  so
8322         change 0 to current_time.
8323         (TimeManager::NeedClockTick): same.
8324         (TimeManager::AddTickCall): same.
8325         (TimeManager::SourceTick): remove the #if'ed out version with
8326         clock smoothing, and add back in the stuff to put the time manager
8327         to sleep (currently ifdef'ed out still)
8328         (TimeManager::AddClock): move the logic to delay the root clock
8329         group here out of Storyboard::Begin.  This is because we also want
8330         to do this with DispatcherTimers as well.  Given that there is no
8331         TimeManager::GetRootClock anymore, this is the only api to add
8332         child clocks.
8334 2009-04-22  Jeffrey Stedfast  <fejj@novell.com>
8336         * layout.cpp (utf8_getc): When inptr goes beyond bounds, update
8337         the 'in' ptr to inend.
8339         * utils.cpp (CanonicalizeFilename): Fixed some undefined behavior.
8341 2009-04-22  Rusty Howell  <rhowell@novell.com>
8343         * building libmoonxpi for the FF plugin
8345 2009-04-21  Chris Toshok  <toshok@ximian.com>
8347         * provider.cpp:
8348         (InheritedPropertyValueProvider::GetPropertyValue): gross changes,
8349         but hopefully worth the hotspot reduction.  do fast checks to see
8350         if we're even dealing with a property that's inheritable first.
8351         cache the Types* pointer instead of indirectly fetching it
8352         repeatedly (thanks to calling EO::Is - call Types::IsSubclassOf
8353         directly instead.)
8355 2009-04-21  Jeffrey Stedfast  <fejj@novell.com>
8357         * glyphs.cpp (Layout): Fixed scaling calculation.
8359         * layout.cpp (Layout): Merged LayoutWrapWithOverflow, LayoutNoWrap
8360         and LayoutWrap. The different word-wrapping behaviors are, as
8361         before, handled in different subroutines but the outer loops are
8362         all now merged.
8364 2009-04-20  Jeffrey Stedfast  <fejj@novell.com>
8366         * textblock.cpp (SetTextInternal): Don't break the string into
8367         multiple inlines, Silverlight shoves the entire string into a
8368         single Run no matter what.
8369         (GetTextInternal): Map LineBreaks to the Unicode LineSeparator
8370         character instead of \n to match Silverlight behavior.
8372         * layout.cpp: Fixed various loops and checks to properly handle
8373         any type of unicode line-breaking character.
8375 2009-04-21  Alan McGovern  <amcgovern@novell.com>
8377         * collection.h: HitTestCollection should override
8378           RemovedFromCollection the same way it overrides
8379           AddedToCollection so that items added/removed from the
8380           collection are not reparented.
8382 2009-04-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8384         * deepzoomimagetilesource.cpp: Fix a crash in MS DRT #545.
8386 2009-04-20  Chris Toshok  <toshok@ximian.com>
8388         * clock.cpp (Clock::UpdateFromParentTime): comment the hell out of
8389         this method.  Also, don't multiply to compute localTime only to
8390         turn around and divide to compute normalizedTime.  normalizedTime
8391         is always the factor we multiply natural_duration_timespan by.
8393 2009-04-20  Chris Toshok  <toshok@ximian.com>
8395         * provider.h|cpp (AutoCreators::CreateDefaultFontSize): move the
8396         textblock autocreator here, and stop using TextBlock vs. Control
8397         for the font size names, as both textblock and controls have the
8398         varying font size.  There's also no reason to make them public
8399         anymore.  if you want the font size, just call GetFontSize().
8401         * control.h: FontSize uses an autocreator now, and remove the
8402         #define.
8404         * textbox.cpp (TextBoxBase::Initialize): use GetFontSize() instead
8405         of the #define, and while we're at it just replace the other
8406         defines with calls to the getters too.
8408         * textblock.h|.cpp: remove the autocreator (it's in provider.cpp
8409         now), and the #define for font_size.
8411         * dependencyproperty.g.cpp: regen.
8412         
8413 2009-04-20  Chris Toshok  <toshok@ximian.com>
8415         * security.c (security_enable_coreclr): version the
8416         MOON_DISABLE_SECURITY variable.
8418 2009-04-20  Jeffrey Stedfast  <fejj@novell.com>
8420         * textblock.cpp (TextBlock): Removed cached TextFontDescription
8421         since it's only ever used in 1 place and even then it's a corner
8422         case.
8424 2009-04-20  Chris Toshok  <toshok@ximian.com>
8426         * timeline.cpp: fix up DispatcherTimers after I broke them by
8427         removing the clock event.
8429 2009-04-19  Chris Toshok  <toshok@ximian.com>
8431         * eventargs.h|.cpp: add RenderingEventArgs type.
8433         * timemanager.cpp (TimeManager::SourceTick): the render event
8434         takes a RenderEventArgs, even though the type of the event is
8435         EventHandler.  Goes a long way toward fixing DRT #394 and fixes
8436         DRT #905.
8438         * type.h, type-generated.cpp, value.h, cbinding.h, cbinding.cpp:
8439         regen.
8440         
8441 2009-04-19  Chris Toshok  <toshok@ximian.com>
8443         * shape.cpp|.h (Shape::CreateDefaultStretch): create the proper
8444         default for the various shapes (Fill if a rectangle or ellipse,
8445         None for all other types).  Fixes part of DRT #508.
8446         (Rectangle::Rectangle): don't set the default value as a local
8447         value.
8448         (Ellipse::Ellipse): same.
8450 2009-04-19  Jeffrey Stedfast  <fejj@novell.com>
8452         * textblock.cpp (DefaultFontSize): New function to get the default
8453         font size for a TextBlock (or Inline) based on the Silverlight
8454         context (XAP vs XAML).
8456 2009-04-19  Chris Toshok  <toshok@ximian.com>
8458         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
8459         inlines inherit their Language from the textblock, and textblocks
8460         inherit it from frameworkelements.  part of fix for drt #952.
8462 2009-04-18  Chris Toshok  <toshok@ximian.com>
8464         * clock.h|.cpp: move to the holy grail of a functional clock
8465         setup.  this removes Clock::Tick and related additive machinery
8466         that introduces errors into various calculations.  instead we use
8467         the fact that a child's time can be expressed as a function of its
8468         parent's time.  more calculation per-frame, perhaps, but less
8469         problems wrt inflection points like autoreverse/repeat points.
8470         This removes *tons* of difficult to read and impossible to
8471         understand code, and brings clocks and clockgroups a lot closer.
8472         Docs coming soon to a source file near you.
8474         * timeline.h|.cpp: various clock-related changes.  2 notables are
8475         the fact that all Timelines have a completed event now instead of
8476         just storyboards (because Clocks are also emitting completed now,
8477         not just ClockGroups), and DispatcherTimers now subclass from
8478         Timeline instead of TimelineGroup.  We also use a virtual method
8479         instead of an event handler for ticking DispatcherTimers.
8480         
8481         * animation.h|.cpp: more clock fallout.  Also, rewrite
8482         HookupAnimationsRecurse so that we propagate the current
8483         target/property as parameters instead of requiring a search back
8484         up the tree at ever level.
8486         * timemanager.cpp: more clock rewrite stuff.  Set the surface
8487         clockgroup's duration to forever instead of automatic, and switch
8488         from ->Tick to ->UpdateFromParentTime.
8489         
8490         * multiscaleimage.cpp: track changes to storyboard api (basically
8491         i removed the non-WithError methods.. maybe i should put them
8492         back?)
8494         * cbinding.h|.cpp, type-generated.cpp: regen.
8496 2009-04-17  Jeffrey Stedfast  <fejj@novell.com>
8498         * glyphs.cpp (Layout): Pass our StyleSimulations along to
8499         GetGlyphInfo() so that we can simulate Bold or Italics as the user
8500         has requested.
8502         * font.cpp (FontFace::LoadGlyph): Now takes a StyleSimulations
8503         argument (which defaults to None). Adjust the glyph for Bold
8504         and/or Italics if requested.
8505         (TextFont::GetGlyphInfo): Now takes a StyleSimulations
8506         argument (which defaults to None). When looking up the glyph in
8507         the cache, make sure that the simulations also match. When loading
8508         a new glyph, pass along the StyleSimulations.
8510 2009-04-17  Larry Ewing  <lewing@novell.com>
8512         * runtime.cpp (Surface): remove references to removed variable.
8514 2009-04-17  Chris Toshok  <toshok@ximian.com>
8516         * deployment.h|.cpp (class Deployment): add IsLoadedFromXap
8517         getter/setter here, and move XapLocation from surface to here.
8519         * runtime.h|.cpp: remove SetXapLocation/GetXapLocation.
8521         * downloader.cpp: use Deployment::GetXapLocation
8523         * cbinding.h|chinding.cpp: regen.
8525 2009-04-17  Jeffrey Stedfast  <fejj@novell.com>
8527         * font.h: Changed the glyph cache size to be #defined rather than
8528         hard-coded everywhere.
8530 2009-04-17  Jackson Harper  <jackson@ximian.com>
8532         * xaml.cpp: When we are setting the Name property use the same
8533         trick we are using for setting the x:Name property.  Grabbing the
8534         parent element and making sure we get registered in that
8535         namescope.  This isn't perfect, but should fix 95% of the managed
8536         namescope problems.
8538 2009-04-17  Alan McGovern  <amcgovern@novell.com>
8540         * popup.h:
8541         * type-generated.cpp: Correctly mark Popup.Child as its
8542           Content property.
8544 2009-04-17  Geoff Norton  <gnorton@novell.com>
8546         * media.cpp: Ensure that we invalidate the image if the
8547         BitmapImage has already been parsed (like from a SetSource call)
8549 2009-04-17  Geoff Norton  <gnorton@novell.com>
8551         * error.cpp: Image errors use the code 4001, fixes #97
8553 2009-04-16  Jeffrey Stedfast  <fejj@novell.com>
8555         * glyphs.cpp (Layout): Don't bail if we have something other than
8556         StyleSimulationsNone.
8558         * enums.h (enum StyleSimulations): Added Bold, Italic, and
8559         BoldItalic.
8561 2009-04-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8563         * pipeline.cpp: IMediaDemuxer::SetStreams: ref the streams. We
8564           already unref them upon destruction.
8566 2009-04-16  Jeffrey Stedfast  <fejj@novell.com>
8568         * textblock.cpp (DownloaderComplete): Only invalidate/etc if any
8569         of our inlines' fonts have changed - if they all override the font
8570         family, then there's no need to redraw.
8572 2009-04-16  Jackson Harper  <jackson@ximian.com>
8574         * dependencyobject.cpp: Unregister the old name when we set an
8575         objects name.
8577 2009-04-16  Sebastien Pouliot  <sebastien@ximian.com>
8579         * openfile.cpp|h: Add a dialog requester to increase isolated
8580         storage quota. Add function to recursively compute the total size
8581         of a directory, which is used to check quota in IS.
8583 2009-04-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8585         * deployment.cpp: mono_gc_invoke_finalizers may cause the
8586           current appdomain to change, so restore it afterwards. Fixes
8587           a rare, random crash upon shutdown.
8589 2009-04-15  Jeffrey Stedfast  <fejj@novell.com>
8591         * textbox.cpp (TextBoxBase::DownloaderComplete): Instead of
8592         invalidating the TextBoxBase, we need to emit an event to let the
8593         TextBoxView know our font has changed.
8594         (TextBoxView::OnModelChanged): Reset state on the layout when the
8595         font changes (since it has no way of knowing that the font has
8596         changed otherwise).
8598         * textblock.cpp (Inline::UpdateFontDescription): Return true if
8599         the font has changed or false otherwise.
8600         (TextBlock::UpdateFontDescriptions): If any of the fonts changed,
8601         return true and reset the state on the TextLayout.
8603         * font.cpp (TextFontDescription::Set*): Return true if the font
8604         has changed or false otherwise.
8606         * layout.cpp (TextLayout::ResetState): New method to reset the
8607         state of a TextLayout. Normally the state only gets reset if a
8608         layout property chanegs, but sometimes it is necessary to notify
8609         the TextLayout engine of a state change in one of the
8610         TextLayoutAttributes.
8612 2009-04-15  Jeffrey Stedfast  <fejj@novell.com>
8614         * textbox.cpp (TextBoxBase::SetFontResource): If the font isn't a
8615         xap resource, download it from the web.
8617         * textblock.cpp (Inline::SetFontResource): If the font isn't a xap
8618         resource, download it from the web.
8620 2009-04-15  Larry Ewing  <lewing@novell.com>
8622         * dirty.cpp (UpdateLayout): a quick hack to get popups sizing
8623         correctly.
8625 2009-04-15  Jeffrey Stedfast  <fejj@novell.com>
8627         * layout.cpp (layout_word_wrap): The HANGUL enums weren't added to
8628         glib until 2.10, so so guard to allow building on systems with
8629         older versions of glib. Also merged BREAK_NEXT_LINE and
8630         BREAK_UNKNOWN into the BREAK_AFTER group.
8632 2009-04-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8634         * runtime.cpp: Don't support versions of the type "1.0..0".
8635           Fixes a test case in MS DRT #21.
8637 2009-04-15  Stephane Delcroix  <sdelcroix@novell.com>
8639         * downloader.cpp (Downloader::Open): fix the argument passed to
8640         validate_policy
8642 2009-04-15  Alan McGovern  <amcgovern@novell.com>
8644         * utils.cpp: We need to increment the pointer otherwise we
8645           loop forever.
8647 2009-04-15  Stephane Delcroix  <sdelcroix@novell.com>
8649         * downloader.cpp (Downloader::Open): make the relative uris relative to
8650         the xaplocation
8651         (check_redirection_policy, Downloader::Write): don't use
8652         uri->originalString, but uri->ToString ()
8654 2009-04-15  Stephane Delcroix  <sdelcroix@novell.com>
8656         * runtime.h|cpp (Surface): xap_location, Get() and Set()
8658 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
8660         * layout.cpp (layout_word_wrap): Fixed word-break logic for
8661         ambiguous break-types. Fixes second column of text in test #208.
8663 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
8665         * layout.cpp (layout_word_wrap): Fixed word-breaking around a
8666         BREAK_BEFORE_AND_AFTER. Fixes one of the test cases in test #209.
8668 2009-04-14  Stephane Delcroix  <sdelcroix@novell.com>
8670         * deepzoomimagetilesource.h: expose IsDownloaded()
8671         * multiscaleimage.cpp: download the tile source for the subimage before
8672         downloading the un-shared tiles.
8674 2009-04-14  Andreia Gaita  <avidigal@novell.com>
8676         * pipeline-ffmpeg.cpp: check avcodec_decode_audio2 return value: 0
8677         indicates frame could not be decoded. fixes uninitialized buffer
8678         size leading to huge memory allocation and abort. kudos to
8679         Alp Toker for spotting this.
8681 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
8683         * layout.cpp (layout_word_wrap): Added support for Hangul and
8684         ideographic word breaking. Improves test #208 quite a bit.
8686 2009-04-14  Larry Ewing  <lewing@novell.com>
8688         * control.h:
8689         * control.cpp (InsideObject): always return fals controls don't
8690         handle the testing.  Fixes MSI navigation in
8691         http://playboy.covertocover.com/
8692         
8693         * panel.h:
8694         * panel.cpp: remove HitTest stubs.
8696 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
8698         * layout.cpp (layout_word_wrap): Added logic to for breaking after
8699         more break-types including BREAK_AFTER, BREAK_HYPHEN, and
8700         BREAK_IDEOGRAPHIC in an effort to closer match Silverlight 2.0's
8701         behavior on test #206.
8703 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
8705         * layout.cpp (utf8_strlen): Removed, this has never been sued.
8706         (utf8_find_last_word): Removed. No longer needed - Silverlight 2.0
8707         no longer has this wrapping bug.
8708         (layout_word_wrap): Don't need to check if we're at the last word
8709         in the textblock because Silverlight 2.0 fixed this bug.
8710         (FindLastWord): Removed, no longer needed.
8712 2009-04-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8714         * pipeline.h:
8715         * playlist.cpp: Don't try to open the media if an error has
8716           been reported.
8718 2009-04-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8720         * mediaelement.h:
8721         * mediaplayer.cpp:
8722         * mediaelement.cpp: Check for markers with a timeout instead
8723           of after rendering a frame, this way markers also work with
8724           audio-only media.
8726 2009-04-14  Jackson Harper  <jackson@ximian.com>
8728         * dependencyobject.cpp|h: Add a return value for SetName with
8729         namescope, returns false if there is an error.
8730         * xaml.cpp: Check the return value of SetName
8732 2009-04-14  Stephane Delcroix  <sdelcroix@novell.com>
8734         * uri.cpp (Combine): strip leading ../ as we're already cutting the
8735         filename off the base uri
8737 2009-04-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8739         * type.h:
8740         * size.h:
8741         * xaml.h:
8742         * utils.h:
8743         * value.h:
8744         * stylus.h:
8745         * value.cpp:
8746         * type.h.in:
8747         * runtime.h:
8748         * value.h.in:
8749         * openfile.h:
8750         * transform.h:
8751         * tilesource.h:
8752         * downloader.h:
8753         * timemanager.h:
8754         * downloader.cpp:
8755         * timemanager.cpp: Added @GeneratePInvoke to all methods used
8756           in managed code. For C++ methods also generate the
8757           corresponding C method.
8759         * cbinding.h:
8760         * cbinding.cpp: Regenerated.
8762 2009-04-13  Jeffrey Stedfast  <fejj@novell.com>
8764         * textblock.cpp (SetFontResource): If we cannot get the resource
8765         from within the xap, then we need to spawn a downloader to fetch
8766         it from the web.
8768 2009-04-13  Geoff Norton  <gnorton@novell.com>
8770         * deployment.cpp: Turn on MONO_IOMAP=case until we fix the iomapping
8771         centrally.
8773 2009-04-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8775         * src.mdp: Updated.
8777 2009-04-12  Jeffrey Stedfast  <fejj@novell.com>
8779         * debug.cpp (hexdump_addr): New function to help toshok print a
8780         hexdump of memory from gdb.
8782         * textbox.cpp (TextBoxBase::SetFontResource): Set the font
8783         filename/guid based on the resource provided.
8784         (TextBoxBase::OnPropertyChanged): If a font resource is named in
8785         the FontFamily property, then call SetFontResource() with the
8786         provided resource name.
8787         (TextBox::ClearFontSource): Clear the FontSourceProperty.
8788         (PasswordBox::ClearFontSource): Same.
8790 2009-04-11  Chris Toshok  <toshok@ximian.com>
8792         * provider.h|.cpp, dependencyobject.cpp: get rid of
8793         PropertyPrecedence_Animation and the associated provider.  in SL,
8794         animations are considered local values (and a choir of angels was
8795         heard moaning as they fell on their swords).
8797 2009-04-11  Jeffrey Stedfast  <fejj@novell.com>
8799         * font.cpp: Don't reuse FT_Open_Args. Changed things to pass
8800         FT_Streams and setup their own FT_Open_Args instead. This solves
8801         the crasher problems in the silverlight2 test harness.
8803         * textblock.cpp (Inline::SetFontResource): New method to update
8804         our FontFilenameProperty and FontGUIDProperties.
8805         (Inline::OnPropertyChanged): Handle FontFamilyProperty changes
8806         that reference a resource.
8807         (Inline::UpdateFontDescription): Parse out the family name from
8808         the FontFamily::Source.
8810 2009-04-11  Jeffrey Stedfast  <fejj@novell.com>
8812         * textblock.cpp (TextBlock::SetFontResource): Renamed from
8813         SetFontSource() to be more accurate.
8815         * font.cpp (OpenFaceByIndex): Don't leave any FT_Faces open on
8816         fail. This is probably what was causing the crash on
8817         font_shutdown().
8819         * glyphs.cpp (SetFontResource): Now takes a Uri argument rather
8820         than a string and returns a bool argument hinting at whether we
8821         succeeded or not.
8822         (OnPropertyChanged): Only fall back on creating a downloader for
8823         the font if the uri is not a resource.
8825 2009-04-11  Jackson Harper  <jackson@ximian.com>
8827         * xaml.cpp: If we are hydrating we don't need the extra ref.
8829 2009-04-10  Jeffrey Stedfast  <fejj@novell.com>
8831         * uri.cpp (ToString): Made to accept const Uri*
8833         * textblock.cpp (SetFontSource): Parse the resource string into a
8834         Uri and pass that along to GetResourceAsPath().
8836         * glyphs.cpp (SetFontResource): Parse the resource string into a
8837         Uri and pass that along to GetResourceAsPath().
8839         * bitmapimage.cpp (UriSourceChanged): Back to passing a Uri for
8840         GetResource().
8842         * application.cpp (GetResource): Oops, this really does need a Uri
8843         argument.
8844         (GetResourceAsPath): Use a Uri here too, and convert any ';' into
8845         a '/'.
8847 2009-04-10  Jackson Harper  <jackson@ximian.com>
8849         * xaml.cpp: Let the XamlElementInstances cleanup their Values.
8851 2009-04-10  Chris Toshok  <toshok@ximian.com>
8853         * timemanager.cpp (TimeManager::SourceTick): just for kicks
8854         completely rip out the clock smoothing code, and also emit all
8855         tick calls (don't worry about how much time we're taking in them).
8856         Lastly, emit tick calls *before* rendering.  we need to do this or
8857         else the Loaded event won't be posted before we draw (when we
8858         delay the loaded event, that is.) which leads to a great many
8859         VisualTreeWalker warnings, since Panel::OnLoaded adds the dirty
8860         flag for the initial children z-sorting.
8862         * collection.cpp (VisualTreeWalker::Step): add a special case for
8863         collection::count == index == 1, which is what we end up with on
8864         uielement's with a subobject.  it won't be a collection child of a
8865         panel, so it'll never be z-sorted, but since it's only 1 element
8866         it doesn't need to be anyway.
8868         * canvas.h|.cpp: move OnLoaded, ElementAdded, and ElementRemoved
8869         to Panel.  Also, move the ZIndex OnCollectionItemChanged code into
8870         panel as well.
8872         * panel.h|.cpp: remove a couple of unused
8873         decls (ChildAdded/ChildRemoved) and add the stuff we moved out of
8874         canvas.h|cpp here.
8876 2009-04-10  Jeffrey Stedfast  <fejj@novell.com>
8878         * font.cpp (OpenFaceByIndex): New helper function split out from
8879         FontFace::LoadFontFace() which performs the FT_Open_Face() and
8880         family name matching.
8881         (OpenFaceByFamily): If we don't have an index, this function opens
8882         all faces in the file and finds a matching font face based on
8883         family.
8884         (LoadFontFace): Use our new helper functions.
8886         * textblock.cpp (SetFontSource): On fail, set the font filename to
8887         NULL and call UpdateFontDescriptions() no matter what.
8889         * font.cpp (UnsetFields): Allow unsetting of the font index.
8890         (Merge): Merge the index separately.
8891         (SetIndex): Set/unset the FontMaskIndex bit.
8893         * glyphs.cpp (SetFontResource): New internal method to set a font
8894         resource stream.
8895         (OnPropertyChanged): Handle non-absolute Uris as resource streams.
8897 2009-04-10  Larry Ewing  <lewing@novell.com>
8899         * multiscaleimage.cpp: add a translucency check before calling
8900         cairo_paint_with_alpha.
8902 2009-04-10  Jeffrey Stedfast  <fejj@novell.com>a
8904         * textblock.cpp (SetFontSource): New method for setting a font
8905         source via a resource name.
8906         (OnPropertyChanged): When the FontFamily changes, parse out the
8907         resource name (if it exists) and set that as our font source.
8909         * bitmapimage.cpp (UriSourceChanged): Updated.
8911         * xap.cpp (Unpack): Use the new ExtractAll() convenience function.
8913         * application.cpp (GetResourceAsPath): New helper method to get a
8914         specified resource as a filesystem path.
8915         (GetResource): Now takes a resource name rather than a Uri.
8917         * utils.cpp (CanonicalizeFilename): New function to canonicalize a
8918         filename.
8919         (ExtractAll): New helper function to extract all files from a zip
8920         archive into a specified directory.
8922 2009-04-10  Jeffrey Stedfast  <fejj@novell.com>
8924         * textblock.cpp (CleanupDownloader): New helper method.
8925         (SetFontSource): Use CleanupDownloader() and also clear the
8926         FontSourceProperty since this will override that source.
8927         (OnPropertyChanged): Parse the FontFamily name.
8928         (DownloaderComplete): Use SetValue() correctly.
8930         * glyphs.cpp (CleanupDownloader): Remove the CompletedEvent
8931         handler.
8933 2009-04-10  Sebastien Pouliot  <sebastien@ximian.com>
8935         * security.c: Move #if MONO_ENABLE_CORECLR_SECURITY to remove
8936         all coreclr-related code from being compiled.
8938 2009-04-09  Chris Toshok  <toshok@ximian.com>
8940         * uielement.cpp (UIElement::WalkTreeForLoaded): be more
8941         descriptive with the "attempting to use a null application" thing.
8943         * xaml.cpp (xaml_is_valid_event_name): sort these, and add a bunch
8944         that were missing.  we need to make this less fragile, and have it
8945         use the event strings in type-generated.cpp.
8946         (end_element_handler): add more text to the line about attempting
8947         to use a null application, so we can differentiate it from the
8948         other one.
8950         * timeline.h (class Timeline): BeginTime has, in fact, a default
8951         value (of 0.)
8953         * dependencyproperty.g.cpp: regen.
8955 2009-04-09  Jeffrey Stedfast  <fejj@novell.com>
8957         * textblock.h, textbox.h: Added FontSourceProperty.
8959         * value.cpp|h: Added FontSource support.
8961         * fontsource.h: Added.
8963 2009-04-09  Sebastien Pouliot  <sebastien@ximian.com>
8965         * cbinding.cpp|h: regenerated
8966         * openfile.cpp|h: Add save_file_dialog_show to implement
8967         SaveFileDialog (SL3) and refactor the filter code to be shared.
8968         * runtime.cpp|h: Rename can_full_screen to user_initiated_event
8969         since we need it for SaveFileDialog (and elsewhere too). Rename
8970         setter and add a getter with a c binding.
8972 2009-04-09  Jackson Harper  <jackson@ximian.com>
8974         * xaml.cpp|h: We need to create Value*'s from strings/files now
8975         instead of just creating dependencyobjects, it's legal to create a
8976         managed object from xaml that isn't a DOB.
8977         - Add a couple utility methods for creating just DOBs from
8978         strings/files.
8979         * cbinding.cpp: regen
8980         * xap.cpp:
8981         * template.cpp:
8982         * runtime.cpp: Updated method names
8983         
8984 2009-04-08  Geoff Norton  <gnorton@novell.com>
8986         * downloader.cpp: Ensure that when someone subscribes to NotifySize
8987         they actually will get notified of the size.
8989 2009-04-08  Geoff Norton  <gnorton@novell.com>
8991         * glyphs.cpp:  Ensure we dont pass an unitialized pointer to 
8992         TextFontDescription::SetFilename
8994 2009-04-08  Andreia Gaita  <avidigal@novell.com>
8996         * dependencyobject.cpp: enable toggleref
8997         conditionally (MOONLIGHT_ENABLE_TOGGLEREF)
8999 2009-04-08  Jeffrey Stedfast  <fejj@novell.com>
9001         * font.cpp (IndexFontSubdirectory): Don't try deobfuscating if it
9002         isn't a .odttf file.
9004 2009-04-08  Geoff Norton  <gnorton@novell.com>
9006         * pipeline.cpp: Ensure we dont try to decode if our stream has been
9007         disposed.
9009 2009-04-08  Jeffrey Stedfast  <fejj@novell.com>
9011         * downloader.cpp (validate_policy): Don't delete source here, we
9012         don't own it.
9014         * glyphs.cpp (DownloaderComplete): Only bother setting a guid if
9015         the file extension is .odttf. Also no need to stat() anymore.
9017         * textblock.cpp (DownloaderComplete): Same.
9019 2009-04-08  Jeffrey Stedfast  <fejj@novell.com>
9021         * provider.cpp (InheritedPropertyValueProvider): We need to
9022         inherit FontGUIDProperty for Inlines as well.
9024         * file-downloader.cpp|h: Cleaned up a bit, no longer needs font
9025         deobfuscation features.
9027         * glyphs.cpp (DownloaderCompleted): Don't need to call
9028         downloader_deobfuscate_font() anymore. We only need to get the
9029         GUID to set on the FontDescription.
9031         * textblock.cpp (DownloaderCompleted): Same.
9033         * font.cpp: Implemented our own FT_Stream that can handle reading
9034         obfuscated fonts directly without the need to rewrite the file
9035         first.
9036         (TextFontDescription): Now has a GUID property for Glyphs and
9037         TextBlock to use.
9039         * downloader.cpp: Fixed to autogenerate the accessors and changed
9040         the UriProperty type to a Uri to be consistent with other classes.
9041         (GetDownloadedFilename): Work around the Mozilla 64k bug here too.
9043 2009-04-08  Geoff Norton  <gnorton@novell.com>
9045         * deployment.cpp: Ensure that we restore to the current MonoDomain
9046         after creating a new deployment.
9048 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
9050         * multiscaleimage.h|cpp: Set IsDownloading property according to the
9051         status of the downloaders
9053 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
9055         * multiscaleimage.cpp (MultiScaleImage::RenderSingle, 
9056         MultiScaleImage::RenderCollection): do not start any new download if
9057         AllowDownlodingProperty is false.
9059 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
9061         * multiscaleimage.h|cpp: impplement missing LogicalToElementPoint
9063 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
9065         * multiscaleimage.cpp: if downloading a tile fail, cache a NULL surface
9066         and move on
9068 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
9070         * multiscaleimage.cpp: some additional debug info printing the state of
9071         each BitmapImage
9073 2009-04-07  Chris Toshok  <toshok@ximian.com>
9075         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
9076         almost had it that last time.  In the case where the parent has
9077         that property, use GetValue on it instead of ReadLocalValue, which
9078         won't pick up styles.
9080 2009-04-07  Chris Toshok  <toshok@ximian.com>
9082         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
9083         rewrite this substantially to make it work correctly and be more
9084         efficient.  we no longer look up the hierarchy for properties
9085         which aren't inheritable, and we only loop up the visual tree, not
9086         the logical one (since that has issues when it comes to
9087         templates).
9088         (get_parent): nuke, it was a broken way to deal with parents.
9090 2009-04-07  Chris Toshok  <toshok@ximian.com>
9092         * uielement.h|.cpp (class UIElement): scrap that ill-advised
9093         AutoCreator crap.  it's much simpler.  the default is actually
9094         NULL, and the managed layer does the stupid mapping from NULL to
9095         new MatrixTransform.
9097 2009-04-07  Chris Toshok  <toshok@ximian.com>
9099         * uielement.h|.cpp (class UIElement): use an AutoCreator for
9100         RenderTransformProperty.
9102         * dependencyproperty.g.cpp: regen.
9103         
9104 2009-04-07  Larry Ewing  <lewing@novell.com>
9106         * grid.cpp (MeasureOverride): use the star fraction of the
9107         available size when measuring.
9109         * border.cpp: restrict the return value to available size.
9111 2009-04-07  Geoff Norton  <gnorton@novell.com>
9113         * pipeline.cpp|h: Ensure that we can post ReportSeekCompleted back
9114         to the media thread from any thread.  Fixes seeking on SmoothHD
9115         sites.
9117 2009-04-07  Geoff Norton  <gnorton@novell.com>
9119         * bitmapimage.cpp|h: Ensure we stop getting events from any 
9120         active downloaders once we're disposed.
9121         * brush.cpp|h: Ensure we stop getting events from any 
9122         active BitmapImages once we're disposed.
9124 2009-04-07  Jeffrey Stedfast  <fejj@novell.com>
9126         * glyphs.cpp (CleanupDownloader): New helper method.
9127         (DownloadFont): Don't delete the uri after we're done, we do not
9128         own this object!
9129         (OnPropertyChanged): Use Uri::IsNullOrEmpty().
9131 2009-04-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9133         * runtime.cpp: layers is an EventObject, unref instead of
9134           delete.
9136         * collection.h: Have a protected dtor so that nobody can
9137           delete this class directly ever again.
9139 2009-04-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9141         * runtime.cpp: Add a few null checks.
9143 2009-04-07  Stephane Delcroix  <sdelcroix@novell.com>
9145         * application.cpp: uri->ToString() allocates memory, free it after
9146         use.
9148 2009-04-06  Chris Toshok  <toshok@ximian.com>
9150         * runtime.cpp|.h (Surface::Attach): split this method effectively
9151         in half: stuff we do before the loaded events are fired, and stuff
9152         we do after.  The second half is in Surface::ToplevelLoaded.  This
9153         fixes playboy.covertocover.com coming up, as the alert that
9154         vertigo pops up via Surface::LoadEvent was causing a sub-mainloop
9155         to screw with our async events.
9157 2009-04-06  Chris Toshok  <toshok@ximian.com>
9159         * uielement.cpp|.h (UIElement::GetTransformToUIElementWithError):
9160         flesh this method out some.  I don't like the walks we have to do
9161         here.  Also, rename this to *WithError so we can report the error
9162         back to managed land from here instead of doing it in C#.
9164         * cbinding.cpp|.h: regen.
9166 2009-04-06  Chris Toshok  <toshok@ximian.com>
9168         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
9169         in case we didn't notify listeners, output the moon error if there
9170         was one.
9172 2009-04-06  Chris Toshok  <toshok@ximian.com>
9174         * xaml.cpp (value_from_str): quiet spew (which in this case
9175         indicates an error when there isn't one.)
9177 2009-04-06  Chris Toshok  <toshok@ximian.com>
9179         * brush.h: include imagesource.h, not bitmapimage.h
9181         * brush.cpp: include bitmapimage.h here.
9183 2009-04-06  Geoff Norton  <gnorton@novell.com>
9185         * bitmapimage.cpp: Stop leaking the resource here.
9187 2009-04-06  Geoff Norton  <gnorton@novell.com>
9189         * codec-version.h.in: Bump
9191 2009-04-06  Geoff Norton  <gnorton@novell.com>
9193         * application.cpp: We want ToString here, not just the path of the
9194         uri.
9195         * bitmapimage.cpp|h: We need to do this async, since the events
9196         might be registered in managed code before a yield.
9198 2009-04-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9200         * security.c: Add jtr.dll to the list of platform assemblies,
9201           it's an assembly used by managed tests which contains unsafe
9202           code and pinvoke methods.
9204 2009-04-06  Stephane Delcroix  <sdelcroix@novell.com>
9206         * multiscaleimage.h: ad the 3.0 DPs and property accessors
9208 2009-04-05  Chris Toshok  <toshok@ximian.com>
9210         * easing.cpp|.h: add EasingFunctionBase::SetEasingFunction so that
9211         managed subclasses can register a delegate.
9213         * cbinding.cpp|.h: regen.
9215 2009-04-04  Geoff Norton  <gnorton@novell.com>
9217         * mediaplayer.cpp: Ensure that we invalidate for planar data as well.
9219 2009-04-04  Geoff Norton  <gnorton@novell.com>
9221         * pipeline.cpp|h: Support YV12 from MediaStreamSource as well
9223 2009-04-04  Geoff Norton  <gnorton@novell.com>
9225         * media.h: Removed unused define
9226         * mediaplayer.cpp|h: We need to support RGBA video formats now, so 
9227         lets track what the decoder is giving us (pass-thru is the only decoder
9228         which will provide RGBA from MSS, we still pass around yuv and rgb
9229         internally).  If the format is RGBA we have to incur a one-frame penalty
9230         to recreate our cairo surfaces.
9231         * pipeline.cpp|h: Support RGBA pixel formats.  Don't support RGB from 
9232         MediaStreamSource.  Mark the pass-thru frames as decoded.
9234 2009-04-04  Chris Toshok  <toshok@ximian.com>
9236         * animation.h|.cpp: add Easing{Color,Double,Point}KeyFrame types.
9238         * type.h, type-generated.cpp, dependencyproperty.g.cpp, value.h,
9239         cbinding.h|.cpp: regen.
9240         
9241 2009-04-03  Chris Toshok  <toshok@ximian.com>
9243         * animation.h: add EasingFunctionProperty to
9244         Color/Double/PointAnimation.
9246         * animation.cpp (DoubleAnimation::GetCurrentValue): if there's an
9247         easing function, apply it to progress.
9248         (ColorAnimation::GetCurrentValue): if there's an easing function,
9249         apply it to progress.
9250         (PointAnimation::GetCurrentValue): if there's an easing function,
9251         apply it to progress.
9253         * easing.h, easing.cpp: implementations of all the easing
9254         functions.  still missing are BounceEase and ElasticEase.
9256         * enums.h, enums.cpp (enum EasingMode): new enum.
9258         * Makefile.am: add easing.h/easing.cpp
9260         * type.h, type-generated.cpp, cbinding.h|.cpp,
9261         dependencyproperty.g.cpp, value.h: regen.
9262         
9263 2009-04-03  Geoff Norton  <gnorton@novell.com>
9265         * multiscaleimage.cpp: Guard against 0x0 MSI's to prevent a cairo bug
9266         which renders garbage on the screen on amd64.
9268 2009-04-03  Aaron Bockover  <abockover@novell.com>
9270         * cbinding.h:
9271         * runtime.h:
9272         * dependencyproperty.g.cpp:
9273         * cbinding.cpp: Add generated binding for Surface::GetToplevel, needed
9274         by Moonlight.Gtk.XamlHost
9276 2009-04-03  Larry Ewing  <lewing@novell.com>
9278         * popup.h:
9279         * popup.cpp: Make sure that we hide any active layers when Child
9280         changes and that we show any new ones.  Fixes part of
9281         PopupExample2.  Give IsOpen a default value.
9283         Regenerate.
9285 2009-04-03  Chris Toshok  <toshok@ximian.com>
9287         * animation.h: remove a couple of ancient (and unused) method and
9288         function declarations, and re-order
9289         public/private/protected (seriously, this makes my eyes bleed.)
9290         Also move the "internal classes" to the end.
9292 2009-04-03  Chris Toshok  <toshok@ximian.com>
9294         * clock.cpp (Clock::Begin): remove the COMPATABILITY_BUGS stuff,
9295         since that's for compatability with 1.0, which we no longer are.
9296         
9297 2009-04-03  Alan McGovern  <amcgovern@novell.com>
9299         * textbox.h: TextBox does validation in both the getter and
9300           setter of its TextProperty, so we have to manually implement
9301           it.
9303 2009-04-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9305         * security.c: Include "config.h" to get
9306           MONO_ENABLE_CORECLR_SECURITY.
9308 2009-04-02  Aaron Bockover  <abockover@novell.com>
9310         Do not build code that requires Mono 2.5 or better in the case where
9311         we want Moonlight to run only in an embedded desktop app scenario; in
9312         this case, CoreCLR security and non-default app domains are not needed
9314         * security.c (security_enable_coreclr): If MONO_ENABLE_CORECLR_SECURITY
9315         is not defined, this function is now a noop
9317         * deployment.cpp: If MONO_ENABLE_APP_DOMAIN_CONTROL is not defined, do
9318         not implement app domain loading/unloading; factor out all common init
9319         code that was duplicated in both ctors into InnerConstructor
9320         
9321         * deployment.h: Define InnerConstructor
9323 2009-04-02  Larry Ewing  <lewing@novell.com>
9325         * uielement.h:
9326         * uielement.cpp: move the bulk of the paint ftb logic from surface
9327         to here since we will be using this in more places.  Make some of
9328         the ftb logic protected now.
9330         * bitmapsource.h:
9331         * writeablebitmap.h:
9332         * writeablebitmap.cpp: Land Geoff's initial Render implementation
9333         with a few changes.
9335         Regenerate.
9336         
9337 2009-04-02  Larry Ewing  <lewing@novell.com>
9338         
9339         * dirty.cpp:
9340         * runtime.h:
9341         * runtime.cpp: Treat full_screen_message as another layer.  Make
9342         sure that we mark layers as loaded.  Popups should render now.
9344 2009-04-02  Alan McGovern  <amcgovern@novell.com>
9346         * runtime.cpp: the real toplevel element must always be at
9347           position 0 in the layers list. Fixes the situation where we
9348           open a popup before setting attaching the surface.
9350 2009-04-02  Stephane Delcroix  <sdelcroix@novell.com>
9352         * multiscaleimage.h|cpp: use *AnimationUsingKeyFrames instead of
9353         linear animation, animate for 4 secs instead of .4, use steep spline
9354         to start fast finish smoothly. For botn panning and zooming.
9356 2009-04-02  Alan McGovern  <amcgovern@novell.com>
9358         * popup.h:
9359         * popup.cpp:
9360         * dependencyproperty.g.cpp: The Child property has similar
9361           validation to a ContentControl. Fixes three tests.
9363 2009-04-02  Alan McGovern  <amcgovern@novell.com>
9365         * popup.h:
9366         * popup.cpp:
9367         * dirty.cpp:
9368         * runtime.h:
9369         * cbinding.h:
9370         * runtime.cpp:
9371         * cbinding.cpp:
9372         * dependencyproperty.g.cpp: Popups are treated as top level
9373           elements which are rendered on top of all other elements. To
9374           handle this a list of all toplevel elements (layers) is kept
9375           in the surface. Mouse events are captured within a toplevel
9376           element and not visible to other toplevel elements.
9378 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
9380         * multiscaleimage.cpp (ZoomAboutLogicalPoint): zoom around the point,
9381         not to the center of the control
9383 2009-04-01  Andreia Gaita  <avidigal@novell.com>
9384     
9385         * window-gtk.cpp: Only connect the scroll-event signal if we're
9386         not running on the desktop (otherwise, gecko won't get the
9387         signals)
9389 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
9391         * uri.h: no longer expose GetOriginalString(), it leads to buggy
9392         code.
9394 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
9396         * mediaelement.cpp:
9397         * bitmapimage.cpp:
9398         * deepzoomimagetilesource.cpp: g_free the memory allocated by
9399         uri->ToString()
9401 2009-04-01  Chris Toshok  <toshok@ximian.com>
9403         * window-gtk.cpp (MoonWindowGtk::button_press): reinstate
9404         the (desktop extension -ized) button check here.  this wouldn't be
9405         necessary if the plugin could insert its signal handler before the
9406         window's, but alas, gtk...
9408 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
9410         * application.cpp (GetResource): use the uri path, not
9411         originalstring
9413 2009-04-01  Jeffrey Stedfast  <fejj@novell.com>
9415         * expression.cpp|h: Removed from the build.
9416         not running on the desktop (otherwise, gecko won't get the
9417         signals)
9419 2009-04-01  Chris Toshok  <toshok@ximian.com>
9421         * runtime.cpp (Surface::HandleUIButtonRelease): if desktop
9422         extensions are turned on, allow button 3 (right mouse).
9423         (Surface::HandleUIButtonPress): same.
9425         * window-gtk.cpp (MoonWindowGtk::button_release): don't suppress
9426         non-button 1 presses here.
9428 2009-04-01  Chris Toshok  <toshok@ximian.com>
9430         * eventargs.cpp (MouseWheelEventArgs::GetWheelDelta): flip the
9431         sign here so we have the same behavior that lutz's demo expects
9432         from windows.
9434 2009-04-01  Geoff Norton  <gnorton@novell.com>
9436         * uri.cpp|h: Add IsNullOrEmpty
9437         * bitmapimage.cpp: Clean up this call to use Uri::IsNullOrEmpty
9439 2009-04-01  Geoff Norton  <gnorton@novell.com>
9441         * bitmapimage.cpp: Ensure we deregister the events too.
9443 2009-04-01  Geoff Norton  <gnorton@novell.com>
9445         * bitmapimage.cpp: If the UriSource is changed, then we should abort
9446         and clean up any existing downloaders.
9448 2009-04-01  Geoff Norton  <gnorton@novell.com>
9450         * brush.cpp: ImageSource is a nullable property so we need to new
9451         one up here if we dont have one already.
9453 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
9455         * multiscaleimage.h|.cpp: reuse BitmapImage for tile downloading
9456         and creating cairo surfaces.
9458 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
9460         * bitmapimage.cpp: compare uri against its DefaultValue on UriSource
9461         property changed.
9463 2009-04-01  Chris Toshok  <toshok@ximian.com>
9465         * uielement.h (class UIElement): add
9466         MouseRightButton{Down,Up}Event and MouseWheelEvent.
9468         * runtime.cpp|.h (RUNTIME_INIT_DESKTOP): enable desktop
9469         extensions.
9470         (Surface::HandleUIScroll): new method, emit a MouseWheelEvent.
9472         * eventargs.cpp|.h (class MouseWheelEventArgs): new class.
9474         * window-gtk.cpp|.h (MoonWindowGtk::scroll): new method for mouse
9475         wheel action.
9476         (MoonWindowGtk::EnableEvents): connect the scroll-event.
9477         (MoonWindowGtk::InitializeCommon): if desktop extensions are
9478         enabled, add GDK_SCROLL_MASK.
9480         * xaml.cpp (xaml_is_valid_event_name): if we're running with
9481         desktop extensions, expose the right button events and mouse
9482         wheel.
9484         * value.h, cbinding.h, cbinding.cpp, type-generated.cpp: regen.
9486 2009-03-31  Jeffrey Stedfast  <fejj@novell.com>
9488         * enums.h: Well what do ya know... TextWrapping enum wasn't the
9489         same as the TextWrapping.cs enum, this is likely the case of some
9490         text layout wonkyness.
9492         * textblock.cpp (TextBlock::MeasureOverride): Set the
9493         ActualWidth/Height DP values here after calling Layout(), this
9494         seems to be what Silverlight does (can't be set in FWE::Measure()
9495         because it doesn't have the actual extents, it just has the
9496         desiredSize). Also don't reset dirty back to true after laying out
9497         the text.
9498         (TextBlock::Layout): Restructured slightly.
9500 2009-03-31  Stephane Delcroix  <sdelcroix@novell.com>
9502         * bitmapimage.cpp: use Uri::ToString () instead of OriginalString, as
9503         originalstrings aren't updated on Uri::Combine ().
9505 2009-03-31  Stephane Delcroix  <sdelcroix@novell.com>
9507         * bitmapimage.h: Set a DefaultValue for ProgressProperty
9509 2009-03-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9511         * src.mdp: Updated some project files.
9513 2009-03-31  Stephane Delcroix  <sdelcroix@novell.com>
9515         * multiscaleimage.cpp: Invalidate on ZIndex change, or on subimages 
9516         added/removed
9518 2009-03-31  Stephane Delcroix  <sdelcroix@novell.com>
9520         * multiscaleimage.h|.cpp: remove the AddTickCall workaround for 
9521         the race while emitting ImageOpenSucceded. Test if the source is
9522         a deepzoom before casting (avoid g_warnings on the console). Change a 
9523         printf to LOG_MSI.
9525 2009-03-30  Chris Toshok  <toshok@ximian.com>
9527         * timemanager.cpp|.h: split this out from clock.cpp|.h
9529         * animation.cpp, clock.cpp, clock.h, dependencyobject.cpp,
9530         libmoon.h, mediaplayer.cpp, runtime.cpp, textbox.cpp,
9531         timeline.cpp, uielement.cpp: track the above change.
9533         * Makefile.am: add timemanager.cpp|.h
9535         * cbinding.h, type-generated.cpp: regen
9537 2009-03-30  Geoff Norton  <gnorton@novell.com>
9539         * bitmapsource.cpp: When caching a native surface ensure we dont
9540         destroy it on every GetSurface pass, but we do clean it up in
9541         Invalidate.
9543 2009-03-30  Chris Toshok  <toshok@ximian.com>
9545         * application.h, border.h, contentcontrol.h, control.h,
9546         cornerradius.h, deployment.h, expression.h, frameworkelement.h,
9547         grid.h, multiscaleimage.h, size.h, style.h, template.h, textbox.h,
9548         transform.h, type.h, usercontrol.h: remove @SilverlightVersion
9549         metadata attributes.
9552 2009-03-30  Chris Toshok  <toshok@ximian.com>
9554         * downloader.h: add pinvokes for a few of the downloader_* C
9555         functions.
9557         * clock.h|.cpp (class TimeManager): add a CBinding/PInvoke for
9558         AddTickCall, and remove the manual implementation.
9560         * dependencyobject.h (class EventObject): add a PInvoke for
9561         event_object_get_surface.
9563         * cbinding.h, cbinding.cpp: regen
9565 2009-03-30  Sebastien Pouliot  <sebastien@ximian.com>
9567         * security.c: Ensure mono_assembly_setrootdir is always called
9568         while enabled coreclr is dependent on the MOON_DISABLE_SECURITY
9569         variable and the availability of a platform directory.
9571 2009-03-30  Geoff Norton  <gnorton@novell.com>
9573         * brush.h: Brush.ImageSource is stupid, and of course not consistent
9574         with Image.Source
9575         * bitmapimage.cpp: Nuke some debug spew.
9576         * dependencyproperty.g.cpp: Funky cold medina.
9578 2009-03-30  Larry Ewing  <lewing@novell.com>
9580         * brush.cpp (OnPropertyChanged): check for the right property and
9581         fixup a harmless typo.
9582         
9583         * media.cpp (OnPropertyChanged): fixup a (harmless) logic typo
9585 2009-03-30  Jeffrey Stedfast  <fejj@novell.com>
9587         * font.cpp (FontFace::GetExtents): Instead of calculating our
9588         ascent/descent and height values from 2 different ways, calculate
9589         ascent/descent the same way we calculated height. This seems to
9590         give slightly more accurate results (previous logic rounded up to
9591         the nearest whole pixel for ascent/descent).
9593 2009-03-30  Geoff Norton  <gnorton@novell.com>
9595         * media.h: Hide some API that never should have been public.
9596         * media.cpp: ImageBrush no longer uses a image internally.
9597         * bitmapimage.cpp|h: Part name is a const char * since we dup
9598         it here.
9599         * brush.cpp|h: Migrate away from using a Image internally
9600         and consume the new BitmapImage API.
9602 2009-03-30  Geoff Norton  <gnorton@novell.com>
9604         * bitmapimage.cpp: Ensure we fall back to downloading if we 
9605         cannot find the image as a resource.
9607 2009-03-30  Chris Toshok  <toshok@ximian.com>
9609         * deployment.h|.cpp: combing the desktop and browser cases (the
9610         desktop case coming from jeff's patch) into one method, where the
9611         different root_domain behavior is determined by the boolean
9612         argument.
9614         * runtime.cpp (runtime_init): pass an initial boolean to
9615         Deployment::Initialize to tell whether or not we should create the
9616         root domain (i.e. whether or not we should initialize mono.)
9617         (RUNTIME_INIT_BROWSER): add RUNTIME_INIT_CREATE_ROOT_DOMAIN.
9619 2009-03-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9621         * security.c: Revert latest fix, the buildbots aren't ready
9622           for this yet.
9624 2009-03-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9626         * security.c: Always call mono_assembly_setrootdir, even if
9627           CoreCLR is disabled. This should fix buildbots where
9628           mono/mcs and moonlight are installed into different
9629           prefixes.
9631 2009-03-30  Geoff Norton  <gnorton@novell.com>
9633         * media.cpp: Stop leaking a cairo pattern in Image::Render
9635 2009-03-30  Stephane Delcroix  <sdelcroix@novell.com>
9637         * deepzoomimagetilesource.cpp: revert latest change, don't advance
9638         twice. Fixes collections.
9640 2009-03-29  Chris Toshok  <toshok@ximian.com>
9642         * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
9643         add a sanity check here to make sure the autocreated value is of a
9644         compatible type.
9646         * animation.h|.cpp: remove the /*Timeline*/ comments from
9647         everywhere -- stop pretending the type names are the same as WPF.
9649 2009-03-29  Geoff Norton  <gnorton@novell.com>
9651         * media.cpp: Ensure that the ImageSource we get is a BitmapImage
9652         before treating it as such.
9654 2009-03-29  Geoff Norton  <gnorton@novell.com>
9656         * Makefile.am, bitmapimage.cpp|h, bitmapsource.cpp|h,
9657           writeablebitmap.cpp|h, brush.cpp, enums.h, eventargs.cpp|h,
9658           imagesource.cpp|h, media.cpp|h, mediaplayer.h, pipeline.cpp:
9659         Update the image based source to have a properly implemented
9660         BitmapImage.  I've also moved all this code to the SL3 API which
9661         injects a BitmapSource in between ImageSource and BitmapImage,
9662         and adds support for WriteableBitmap.
9664         Basically now all the cairo logic lives in ImageSource and 
9665         BitmapSource.  All the pixbuf loader logics and downloader logic
9666         is isolated in BitmapImage.
9668         * cbinding.cpp|h, dependencyproperty.g.cpp, type-generated.cpp,
9669           type.h, value.h: Regenerate  
9671 2009-03-29  Chris Toshok  <toshok@ximian.com>
9673         * provider.h, provider.cpp, dependencyproperty.h: change
9674         AutoCreator signature to take the DependencyObject as the first
9675         parameter.
9677 2009-03-29  Chris Toshok  <toshok@ximian.com>
9679         * dependencyproperty.h|.cpp: rework the autocreate functionality.
9680         instead of a boolean flag, we pass a function pointer.  We keep
9681         IsAutoCreated() around (just func != NULL) and add
9682         GetAutoCreator() so the AutoCreateProvider can call the method
9683         when it needs a value.
9685         Also, remove the empty ctor since it doesn't initialize any
9686         fields (and it also isn't called.)
9688         * provider.h (class AutoCreators): new class, containing the
9689         default autocreator which just calls type->CreateInstance().
9691         * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
9692         call the property's AutoCreator function if there is one.
9693         (AutoCreators::default_autocreator): new function for the default
9694         case.  basically some code that was ripped out of
9695         ::GetPropertyValue
9697         * dependencyproperty.g.cpp: regen.
9699 2009-03-29  Chris Toshok  <toshok@ximian.com>
9701         * uielement.cpp (UIElement::OnLoaded): now that we don't walk the
9702         tree in OnLoaded, don't do anything at all if we're already
9703         Loaded.
9705 2009-03-29  Chris Toshok  <toshok@ximian.com>
9707         * eventargs.h: consistenfy everything, and make
9708         CollectionChangedEventArgs fields private, not public.  add
9709         accessors.
9711         * dependencyobject.h (PropertyChangedEventArgs): make
9712         old_value/new_value private and add accessors.
9714         * *.cpp|.h: track the above changes.
9715         
9716 2009-03-29  Chris Toshok  <toshok@ximian.com>
9718         * dependencyproperty.h|.cpp: rename AutoCreate to IsAutoCreated.
9720         * dependencyobject.cpp:, provider.cpp: track above change.
9722 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
9724         * deployment.cpp|h (Initialize): If a platform directory is
9725         specified then we initialize the CoreCLR security model.
9726         * runtime.cpp|h: Initialize the runtime using the plugin
9727         directory (when applicable, i.e. browser mode).
9728         * security.c|h: New. Handle the CoreCLR security model 
9729         initialization and platform code detection.
9730         * Makefile.am: Add security.[c|h] to the build
9732 2009-03-28  Jeffrey Stedfast  <fejj@novell.com>
9734         * frameworkelement.cpp (OnPropertyChanged): Instead of setting
9735         ActualWidth/Height to 0 in the non-LayoutContainer case, use
9736         ClearValue() those properties instead. Fixes some TextBlock cases.
9738         * textblock.cpp (GetSize): Check isnan() rather than 0.
9739         (Render): The dirty flag should never be set at this point, so
9740         don't bother with it. Set TextLayout's AvailableWidth to our
9741         ActualWidth value.
9742         (ArrangeOverride): Don't set dirty back to true after we've
9743         arranged, this is why dirty was true in ::Render()
9745 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
9747         * textblock.cpp (Layout): Fixed the special-case logic. If no text
9748         has ever been set, then the extents should be 0,0. However, if
9749         they have ever been set but the text is currently empty, then use
9750         the font height as the ActualHeight value. Use a state variable to
9751         check if the text has ever been set rather than trying to check
9752         other things which are not reliable.
9754 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
9756         * size.h (Size::GrowBy): If the width or height are infinite going
9757         in, then leave them infinite going out.
9759         * textblock.cpp (TextBlock::GetSize): New method to get the
9760         TextBlock's size.
9761         (TextBlock::Render): Use GetSize() instead of GetRenderSize().
9762         (class TextBlockDynamicPropertyValueProvider): Same.
9764 2009-03-27  Chris Toshok  <toshok@ximian.com>
9766         * uielement.h (class UIElement): add LostMouseCaptureEvent.
9768         * type-generated.cpp: regen.
9770 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
9772         * multiscaleimage.h|.cpp: sort the subimages by ZIndex, Invalidate on
9773         subimage collection items changed.
9775 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
9777         * multiscalesubimage.h|.cpp:
9778         * multiscaleimage.cpp: remove the link to msi parents and don't try to
9779         Invalidate from subimage.
9781 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
9783         * collection.cpp: do not use generated cbinding in
9784         MultiScaleSubImageZIndexComparer.
9786 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
9788         * multiscalesubimage.h: set a default ZIndex value
9790 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
9792         * textblock.cpp (TextBlock::UpdateLayoutAttributes): New method to
9793         update the TextLayout's text and attributes.
9794         (TextBlock::OnPropertyChanged): If the Text or Inlines properties
9795         change, immediately call UpdateLayoutAttributes().
9796         (TextBlock::Layout): No longer sets up the TextLayout's attributes
9797         as this is already done. Also no longer takes a cairo_t argument
9798         since it's never used, instead it now takes a Size constraint
9799         argument.
9800         (TextBlock::CalcActualWidthHeight): Removed, no longer needed.
9801         (TextBlock::MeasureOverride): Rewritten / simplified.
9802         (TextBlock::ArrangeOverride): Same.
9803         (class TextBlockDynamicPropertyValueProvider): Updated.
9804         (TextBlock::OnCollectionItemChanged): Call UpdateFontDescription
9805         on the Inline that changed.
9806         (TextBlock::UpdateFontDescriptions): New method to update the font
9807         descriptions on all inlines.
9808         (TextBlock::OnPropertyChanged): Update the font descriptions on
9809         all inlines whenever a font property changes.
9810         (TextBlock::SetFontSource): Call UpdateFontDescriptions().
9811         (TextBlock::DownloaderComplete): Same.
9813         * textbox.cpp (TextBoxView::Render): Set the layout's
9814         AvailableWidth to the render size width.
9815         (TextBoxView::Layout): Don't worry about constraint.width being
9816         INFINITY anymore, TextLayout() now handles INFINITY.
9818         * layout.cpp: Instead of using -1.0 to mean 'unset' for extents
9819         and max width/height constraints, use NAN and
9820         INFINITY (respectively). This will prevent TextBox/Block from
9821         having to use hacks if their width/height constraints are
9822         INFINITY.
9823         (TextLayout::HorizontalAlignment): Since MaxWidth might be
9824         INFINITY, we need to base this on a new property called
9825         AvailableWidth, which is the width available for rendering (where
9826         MaxWidth is only used for wrapping).
9828 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
9830         * deepzoomimagetilesource.cpp (DeepZoomImageTileSource::GetTileLayer):
9831         After finding the baseUri's filename, advance beyond the / before
9832         passing it to uri->Combine().
9834         * uri.cpp (Uri::Combine): If the uri has no path and the
9835         relative_path does not begin with a /, don't prepend one.
9837 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
9839         General cleanup of the TextBoxBase abstraction.
9841         * textbox.cpp (TextBoxView::UpdateText): Get rid of special-casing
9842         of PasswordBox.
9843         (PasswordBox::SyncDisplayText): Generate a masked password string
9844         using the specified PasswordChar.
9845         (PasswordBox::SyncText): Call SyncDisplayText ().
9846         (PasswordBox::OnPropertyChanged): When the PasswordProperty
9847         changes, call SyncDisplayText().
9848         (PasswordBox::GetDisplayText): Override TextBoxBase's to return
9849         our masked password string.
9850         (PasswordBox::ctor): Initialize display text
9851         (PasswordBox::dtor): Delete display text.
9852         (TextBox::GetDisplayText): Simply return GetText ()
9854 2009-03-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9856         * playlist.cpp: MergeWith: need to clone uris, otherwise it'll
9857           double free.
9859 2009-03-27  Jackson Harper  <jackson@ximian.com>
9861         * xaml.cpp: Despite the docs saying differently
9862         (http://msdn.microsoft.com/en-us/library/cc917841(VS.95).aspx)
9863         sys:Boolean is also legal. (I wonder what else is).
9865 2009-03-27  Jackson Harper  <jackson@ximian.com>
9867         * xaml.cpp: Fix typo in LookupNamedItem so exists returns the
9868         correct value.
9869         - When we are populating the context resource dictionaries we need
9870         to include elements that are resource dictionaries not just
9871         elements have have dictionaries.  This fixes elements looking up
9872         items in their top level RD (like in generic xaml).
9874 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
9876         * xaml.cpp: Source attribute of MultiScaleImage, even while starting with a
9877         '/', are relative uris.
9879 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
9881         * multiscaleimage.cpp: if a tile is already being downloaded, don't
9882         start a 2nd downloader for the same uri.
9884 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
9886         * deepzoomimagetilesource.cpp: Uris composed of a single file name
9887         are fine too. don't discriminate !
9889 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
9891         * uri.cpp: fix Combine when the original path is a single file,
9892         without a leading '/'
9894 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
9896         * multiscalesubimage.h|.cpp: fix the mess I was doing on uris in
9897         the overloaded ctor now that we have a proper Uri struct
9899 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
9901         * uri.h, uri.cpp: add Combine (const Uri*).
9903 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
9905         * multiscaleimage.h|.cpp: Emit MotionFinishedEvent
9907 2009-03-26  Chris Toshok  <toshok@ximian.com>
9909         * deployment.h|.cpp: be a little more fragile (and a lot less
9910         evil) about the way we're exposing Mono types in our headers.
9911         just put a typedef for MonoDomain in deployment.h instead of
9912         including appdomain.h.  Include appdomain.h from deployment.cpp.
9914 2009-03-26  Chris Toshok  <toshok@ximian.com>
9916         * uielement.h|.cpp (class UIElement): add the ability to do
9917         instant and delayed emission of Loaded events.
9918         (UIElement::PostSubtreeLoad): perhaps poorly named, but the
9919         @load_list is a list of UIElement which will be walked in order in
9920         a tick call, emitting OnLoaded on all of them.
9921         (UIElement::EmitSyncLoaded): walk the same list as would be passed
9922         to PostSubtreeLoad, emitting it now.
9923         (UIElement::WalkTreeForLoaded): this does a post-order tree walk
9924         building up the list which is passed to PostSubtreeLoad or
9925         EmitSubtreeLoad.  The out bool parameter tells us whether we
9926         should delay the emission or not. Currently the only thing that
9927         delays emission is a control with a style applied (even a default
9928         style.)  We also set a PENDING_LOADED flag on all elements during
9929         the walk.
9930         (UIElement::OnLoaded): no longer walk the tree here.  only emit
9931         Loaded on this one element.  Clear the PENDING_LOADED flag while
9932         we're at it.
9933         (UIElement::ElementAdded): complicate matters slightly here so
9934         that it follows the following two rules:
9936         1) if @this is loaded, walk the tree and either emit or post the
9937         load based on what the out param tells us to do.
9939         2) if @this is pending_loaded, walk the tree and always post.
9940         
9941         * frameworkelement.h (class FrameworkElement): unfortunately we
9942         need access to "default_style_applied" from UIElement.
9944         * control.h|.cpp: remove OnLoaded implementation from here.
9946         * runtime.cpp (Surface::Attach): move the Loaded handling *after*
9947         the zombie check.  not sure why we were ever doing it before.  but
9948         most importantly, this always Posts the loaded state, it doesn't
9949         emit it synchronously.  This allows us to do the changes in
9950         Application.cs/Deployment.cs that are needed to get ncaa working.
9952 2009-03-26  Chris Toshok  <toshok@ximian.com>
9954         * trigger.cpp (EventTrigger::SetTarget): fix regression, and ifdef
9955         out the code that allows other events to be used.  Maybe in SL3
9956         they'll allow it.
9958 2009-03-26  Jeffrey Stedfast  <fejj@novell.com>
9960         * textbox.cpp: Reengineered TextBox and PasswordBox to inherit
9961         from a new TextBoxBase class which handles almost all of the logic
9962         for us.
9964 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
9966         * multiscaleimage.cpp: replace the ldexp (1.0, n) by 1 << n
9968 2009-03-26  Jeffrey Stedfast  <fejj@novell.com>
9970         * textbox.cpp: Reengineered TextBox and PasswordBox to inherit
9971         from a new TextBoxBase class which handles almost all of the logic
9972         for us.
9974 2009-03-26  Jeffrey Stedfast  <fejj@novell.com>
9976         * deepzoomimagetilesource.cpp (DeepZoomImageTileSource::GetTileLayer):
9977         Use the new Uri::Combine() method.
9979         * uri.cpp (Uri::Combine): New method to combine a relative path to
9980         an existing Uri.
9982 2009-03-26  Chris Toshok  <toshok@ximian.com>
9984         * animation.cpp, clock.cpp: move some class-static fields around
9985         so they make more sense.
9987 2009-03-26  Chris Toshok  <toshok@ximian.com>
9989         * clock.h: move enum FillBehavior...
9991         * enums.h: ... to here.
9993 2009-03-26  Chris Toshok  <toshok@ximian.com>
9995         * animation2.h: nuke, moving everything into animation.h.
9997         * clock.h|.cpp, timesource.h|.cpp, timeline.h|.cpp: split out all
9998         the timesource/timeline stuff into separate files to reduce
9999         clock.cpp's size/complexity a bit.
10001         * mediaplayer.cpp, mediaelement.cpp, media.cpp,
10002         mms-downloader.cpp: track new locations of things (that were moved
10003         out of clock.h|.cpp)
10004         
10005         * cbinding.h, cbinding.cpp, type-generate.cpp,
10006         dependencyproperty.g.cpp: regen.
10007         
10008         * Makefile.am: add/remove files.
10009         
10010 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
10012         * multiscaleimage.h|.cpp: fix optimal_layer caclulation for tiles
10013         with an aspect_ratio < 1.0 (portrait images).
10015 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
10017         * multiscaleimage.h|.cpp: replace the single downloader code by
10018         a list of downloader, speed up downloading a lot. (Set --arbitrary--
10019         to 6 dlders for now)
10021 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
10023         * multiscaleimage.h|.cpp: Download directly from Render*
10025 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
10027         * multiscaleimage.h|.cpp: DownloadUri downloads a Uri (sic). Use an Uri
10028         as cache key, use the new get_image_uri_func everywhere.
10030 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
10032         * tilesource.h:
10033         * deepzoomimagetilesource.h|.cpp: change the signature of
10034         get_image_uri_func. It returns a bool indicating success, the Uri is
10035         now a method arg, and no longer returned as a string pointer. Fixes 
10036         some random crashes with managed tilesoources.
10038 2009-03-25  Chris Toshok  <toshok@ximian.com>
10040         * uri.h (struct Uri): add accessor methods for all of the fields.
10041         The fields are still public for now, since a few places (e.g.,
10042         plugin-debug, playlist), make direct modifications.
10044         * multiscalesubimage.cpp, playlist.cpp, downloader.cpp,
10045         glyphs.cpp, mediaelement.cpp, application.cpp, media.cpp: use
10046         accessors when getting values.
10047         
10048 2009-03-25  Stephane Delcroix  <sdelcroix@novell.com>
10050         * uri.h, uri.cpp: GetHashCode (), so Uris can be used as keys for
10051         hash_tables.
10053 2009-03-25  Jeffrey Stedfast  <fejj@novell.com>
10055         * mediaelement.cpp (MediaElement::GetStateName): Don't pass an sl2
10056         argument to enums_int_to_str() anymore.
10058         * trigger.cpp (EventTrigger::SetTarget): Surface::IsSilverlight2()
10059         no longer exists, don't bother checking it. If the target is other
10060         than the Loaded event, we need to treat the whole thing as
10061         Silverlight2 anyway.
10063         * runtime.cpp (Surface::Surface): No longer takes a silverlight2
10064         argument or keeps such a flag.
10065         (Surface::EmitEventOnList): Don't need to care about the
10066         silverlight2 flag.
10067         (Surface::HandleUIKeyPress): Same.
10068         (Surface::HandleUIKeyRelease): Here too.
10070         * enums.cpp (enums_str_to_int): No longer takes an sl2 argument.
10071         (enums_int_to_str): Same.
10073         * xaml.cpp (value_from_str_with_typename): No longer takes an sl2
10074         argument.
10075         (value_from_str): Same.
10076         (convert_value_type): Same.
10077         (xaml_set_property_from_str): Same.
10079 2009-03-25  Geoff Norton  <gnorton@novell.com>
10081         * Makefile.am: 
10082         * binding.cpp: 
10083         * binding.h: 
10084         * cbinding.cpp: 
10085         * cbinding.h: 
10086         * frameworkelement.cpp: 
10087         * frameworkelement.h: 
10088         * type-generated.cpp: 
10089         * type.h: 
10090         * value.h: 
10091         * xaml.cpp:  Bindings live 100% in managed land now
10093 2009-03-25  Alan McGovern  <amcgovern@novell.com>
10095         * animation.cpp: Revert the changes in r130133 as they
10096           resulted in double frees of the Value *.
10098 2009-03-25  Jeffrey Stedfast  <fejj@novell.com>
10100         * value.cpp (Value::FreeValue): Don't dereference uri if it is
10101         NULL.
10103 2009-03-25  Stephane Delcroix  <sdelcroix@novell.com>
10105         * multiscaleimage.cpp: emit ViewportChanged
10107 2009-03-25  Stephane Delcroix  <sdelcroix@novell.com>
10109         * multiscaleimage.cpp: renders layer 0 too, drop some old debug code
10111 2009-03-25  Jackson Harper  <jackson@ximian.com>
10113         * xaml.cpp: Can put this back now that bindings are convertering
10114         strings properly.  Don't try to create a value object if we are
10115         just going into managed anyways.
10117 2009-03-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10119         * runtime.h:
10120         * runtime.cpp: Move IsVersionSupported implementation here,
10121           add GetBackgroundColor and sprinkle generator annotations.
10123         * cbinding.h:
10124         * cbinding.cpp: Regenerated.
10126 2009-03-25  Alan McGovern  <amcgovern@novell.com>
10128         * uri.cpp: Scheme was being used uninitialised if the if
10129           (!*start) check succeeded.
10131 2009-03-24  Chris Toshok  <toshok@ximian.com>
10133         * playlist.cpp (PlaylistParser::OnASXStartElement): use
10134         uri->IsScheme()
10135         (PlaylistParser::OnSMILStartElement): use uri->IsScheme()
10137         * uri.h, uri.cpp (struct Uri): add "bool IsScheme(const char
10138         *scheme)" so we can stop twiddling internals.
10140 2009-03-24  Chris Toshok  <toshok@ximian.com>
10142         * downloader.cpp: s/protocol/scheme for Uris
10144         * playlist.cpp: s/protocol/scheme for Uris
10146         * uri.h, uri.cpp: s/protocol/scheme for Uris.
10148 2009-03-24  Chris Toshok  <toshok@ximian.com>
10150         * uri.cpp: do as much as we can to get isAbsolute set correctly.
10152 2009-03-25  Andreia Gaita  <avidigal@novell.com>
10154         * clock.h: remove unused timeline field
10156 2009-03-25  Andreia Gaita  <avidigal@novell.com>
10158         * clock.cpp: Refresh the clock's duration, it might have changed
10159         after it's creation
10161 2009-03-24  Jeffrey Stedfast  <fejj@novell.com>
10163         * value.cpp (Value::Value): If the input value has a NULL uri,
10164         don't call Uri::Copy(), simply set the new uri to NULL too.
10166         * uri.cpp (Uri::Copy): If the 'from' argument is NULL, nullify the
10167         members in the 'to' argument. This should never happen anymore,
10168         but if it does, don't allow 'to' to have invalid pointers.
10170 2009-03-24  Jackson Harper  <jackson@ximian.com>
10172         * xaml.cpp: Need to make this a little smarter, revert for now
10173         because it breaks hardrock.
10175 2009-03-24  Jeffrey Stedfast  <fejj@novell.com>
10177         * layout.cpp (TextLayout::Layout*Wrap*): Fixed to not give 0.0
10178         actual_height extents if the text is "".
10180         * textbox.cpp (TextBoxView::UpdateText): Make sure that we never
10181         set NULL text on the layout so that we won't crash inside
10182         TextLayout::GetCursor() inside g_utf8_offset_to_pointer().
10184 2009-03-24  Jackson Harper  <jackson@ximian.com>
10186         * xaml.cpp: Don't attempt to convert values if we are going to
10187         managed anyways. This prevents things that can be created easily
10188         from strings being created from expressions.
10190 2009-03-24  Jackson Harper  <jackson@ximian.com>
10192         * animation2.h:
10193         * animation.cpp: Use an OBJECT for the Value property.
10194         * dependencyproperty.g.cpp: Regen
10195         
10196 2009-03-24  Stephane Delcroix  <sdelcroix@novell.com>
10198         * uri.h|uri.cpp: new Equals () methods, so we can use its generated
10199         cbinding as GCompareFunc.
10201 2009-03-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10203         * pipeline.cpp: Fix breakage.
10205 2009-03-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10207         * pipeline.h:
10208         * pipeline.cpp: Add a PassThroughDecoder for when the demuxer
10209           gives ready-to-present data. Make it handle pcm, rgb, rgba
10210           and yv12 formats.
10212         * type.h:
10213         * value.h:
10214         * type-generated.cpp: Regenerated.
10216 2009-03-23  Stephane Delcroix  <sdelcroix@novell.com>
10218         * deepzoomimagetilesource.h|cpp: pass a *Uri to the ctor, related
10219         changes to keep working
10221 2009-03-23  Jeffrey Stedfast  <fejj@novell.com>
10223         * uri.cpp (Uri::operator==): If all the != compares pass, return
10224         true. Don't let control reach the end of a non-void function!
10226         * textbox.cpp (TextBoxView::UpdateCursor): Emit a new cursor
10227         position changed event.
10229 2009-03-23  Chris Toshok  <toshok@ximian.com>
10231         * uri.cpp (Uri::Uri): I don't like this fix, mostly because it was
10232         due to vertigo doing some weird stuff that I don't fully
10233         understand :) but in the interest of not requiring every usage to
10234         include a null check, init originalString to g_strdup("") here.
10236 2009-03-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10238         * pipeline.cpp: FillBuffers: fix warning. NullDecoder: Chain
10239           Dispose.
10241 2009-03-23  Chris Toshok  <toshok@ximian.com>
10243         * uri.cpp (Uri::Copy): return immediately if @from == null.
10245 2009-03-21  Chris Toshok  <toshok@ximian.com>
10247         * bitmapimage.cpp (BitmapImage::OnPropertyChanged): pass the Uri
10248         to Application:GetResource.
10250         * application.[h,cpp] (Application::GetResource): this takes a Uri
10251         instead of a string now.
10253 2009-03-21  Chris Toshok  <toshok@ximian.com>
10255         * uri.[h,cpp]: a few changes:
10256           1. Add "bool isAbsolute" and "char* originalString" fields.
10257           2. Remove Clone and add a static Copy method which Value can use
10258              to copy all the internal fields.
10259           3. Add Free method.
10260           4. make it a struct so we'll only box when explicitly asked to in
10261              Value.cs.
10262           5. add an operator== so we can do non-reference comparisons in
10263              value.cpp
10265         * dependencyobject.h,
10266         dependencyobject.cpp (DependencyObject::SetMarshalledValueWithError):
10267         remove.
10269         * bitmapimage.[h,cpp]: UriSourceProperty is a Uri, not a string.
10271         * glyphs.[h,cpp]: FontUriProperty is a Uri, not a string.
10272         
10273         * deepzoomimagetilesource.h: UriSourceProperty is a Uri, not a
10274         string.
10275         
10276         * media.cpp: source->GetUriSource() returns a Uri*
10277         
10278         * mediaelement.[h,cpp]: SourceProperty is a Uri, not a string.
10280         * multiscalesubimage.[h,cpp] (MultiScaleSubImage::MultiScaleSubImage):
10281         use Uris more.
10283         * playlist.cpp (Playlist::MergeWith): don't Clone() the uris, as
10284         the Value ctor does that for us.
10286         * xaml.cpp (value_from_str): add Type::URI case, and rework the
10287         Type::BITMAPIMAGE case to use a Uri object.
10289         * validators.[h,cpp]: rename NonNullStringValidator to
10290         NonNullValidator.  All uses before didn't depend on the
10291         "string"-ness of the value, and we can make use of it for the Uri
10292         stuff.
10294         * value.h.in, value.cpp: add Uri support, and remove
10295         Value::Unmarshal.
10297         * dependencyproperty.g.cpp, cbinding.cpp|.h, type-generated.cpp,
10298         value.h: regen.
10300         * textblock.h, frameworkelement.h: track name change of NonNullStringValidator
10302 2009-03-20  Jeffrey Stedfast  <fejj@novell.com>
10304         * textbox.cpp (TextBoxView::UpdateText): Split out from
10305         TextBoxView::Layout(). Sets the text on the layout engine.
10306         (TextBoxView::Layout): Moved most of the logic into UpdateText()
10307         and the rest into Render(). We now just set the MaxWidth and lay
10308         out the text.
10309         (TextBoxView::Render): If dirty, after calling Layout(), call
10310         UpdateCursor(false) and clear the dirty flag.
10311         (TextBoxView::OnModelChanged): If the text changes, update it
10312         immediately on our layout context by calling UpdateText().
10313         (TextBoxView::SetTextBox): Call UpdateText() here as well and make
10314         it more robust against a NULL textbox argument.
10316 2009-03-20  Jeffrey Stedfast  <fejj@novell.com>
10318         * textbox.cpp (TextBoxView::Layout): No longer takes a cairo
10319         context argument since it never actually uses it anyway.
10320         (TextBoxView::MeasureOverride): Don't create a temporary cairo
10321         context since it never gets used.
10322         (TextBoxView::ArrangeOverride): Same.
10324 2009-03-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10326         * pipeline.h:
10327         * pipeline.cpp:
10328         * pipeline-asf.cpp: Re-implement fallback to http when mms
10329           fails.
10331 2009-03-20  Jeffrey Stedfast  <fejj@novell.com>
10333         * layout.cpp (TextLayout::SetText): Handle text being NULL a bit
10334         better.
10336 2009-03-20  Jackson Harper  <jackson@ximian.com>
10338         * xaml.cpp: Make sure we go to managed when using property element
10339         syntax for setting properties of managed kinds.
10341 2009-03-20  Jeffrey Stedfast  <fejj@novell.com>
10343         * layout.cpp (TextLayout::SetMaxWidth): If the new MaxWidth is
10344         larger than the current ActualWidth (and no wrapping has been
10345         done), then no need to re-layout. This should help improve
10346         performance of many cases of TextBox/Block MeasureOverride() and
10347         ArrangeOverride().
10348         (TextLayout::LayoutWrapWithOverflow): If we have to wrap a line,
10349         set is_wrapped to true.
10350         (TextLayout::LayoutWrap): Same.
10351         (TextLayout::Layout): Reset is_wrapped to false before laying out
10352         the text.
10354 2009-03-19  Larry Ewing  <lewing@novell.com>
10356         * multiscaleimage.cpp (RenderSingle): move the clipping to the
10357         outer loop here too.
10359 2009-03-19  Larry Ewing  <lewing@novell.com>
10361         * multiscaleimage.cpp (RenderCollection): rework the collection
10362         rendering slightly by moving the subimages out of the loop.
10364 2009-03-18  Chris Toshok  <toshok@ximian.com>
10366         * dependencyobject.cpp (unregister_depobj_names): another side of
10367         the TagProperty coin.  don't unregister names from it, since we
10368         aren't registering names from it.
10369         (DependencyObject::SetParent): remove the USERCONTROL extra
10370         registration from here.  it's not necessary now that jackson has
10371         fixed where we register the names.
10373         * dependencyproperty.cpp (DependencyProperty::RegisterFull): only
10374         freeze the default value if the property is not custom.
10376 2009-03-18  Jeffrey Stedfast  <fejj@novell.com>
10378         Fixes a crash in the Microsoft.SilverlightControls
10379         ControlsExtended unit tests (specifically the DatePickerTest).
10381         * control.h (class Control): Set a DefaultValue for the Foreground
10382         property.
10384         * textblock.h (class TextBlock): Same.
10386 2009-03-18  Jackson Harper  <jackson@ximian.com>
10388         * xaml.cpp: When we use x:Name to set an elements name, make sure
10389         that it gets set in the namescope of it's containing element.
10390         * dependencyobject.cpp|h: New method that allows setting objects
10391         name in a different namescope, this will also result in the name
10392         being set in the objects namescope.
10393         - Allow duplicate objects if they are the same object
10394         * namescope.cpp: Allow duplicates if they are the same object.
10396 2009-03-18  Jeffrey Stedfast  <fejj@novell.com>
10398         * textbox.cpp (TextBox::Initialize): Don't bother connecting to
10399         MouseEnter/Leave, we don't care.
10400         (TextBoxView::TextBoxView): Connect to MouseLeftButtonDown/Up.
10401         (TextBoxView::OnMouseLeftButtonDown): Proxy the event to our
10402         parent TextBox control.
10403         (TextBoxView::OnMouseLeftButtonUp): Same.
10405         * runtime.cpp (Surface::FocusElement): Don't do all the checks
10406         here, they are now done in Control::Focus().
10407         (Surface::HandleMouseEvent): Don't loop to FocusElement() here, we
10408         now expect this to be done in the MouseLeftButtonDown event
10409         callback.
10411         * control.cpp (Control::Focus): New method to focus a control.
10413 2009-03-18  Jb Evain  <jbevain@novell.com>
10415         * deployment.cpp: add a MOON_PROFILER environment variable
10416         to control profiling of the embedded mono.
10418 2009-03-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10420         * pipeline.h:
10421         * pipeline.cpp: Remove unused field.
10423 2009-03-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10425         * pipeline-asf.cpp: Fix visitmix.
10427 2009-03-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10429         * debug.h:
10430         * debug.cpp:
10431         * deployment.cpp: Add signal handlers for crash detection in
10432           libmoon instead of libshocker, this way there's not a race
10433           condition between loading mono and installing a signal
10434           handler in libshocker (the signal handler has to get
10435           installed before loading mono, otherwise we'll crash for
10436           real due to managed exceptions getting caught by the signal
10437           handler).
10439 2009-03-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10441         * pipeline.cpp: More asserts.
10443 2009-03-17  Jeffrey Stedfast  <fejj@novell.com>
10445         * xap.cpp (Xap::Unpack): Canonicalize the extracted filename to
10446         lowercase.
10448 2009-03-17  Jeffrey Stedfast  <fejj@novell.com>
10450         * xap.cpp (Xap::Unpack): Don't mix & match malloc/g_free, don't
10451         shadow the fname method argument, and don't leak if
10452         finfo.external_fa has the 4th bit set.
10454 2009-03-17  Chris Toshok  <toshok@ximian.com>
10456         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
10457         don't do the SetParent stuff (even when the value is a
10458         DependencyObject) if the property is UIElement::TagProperty.  This
10459         fixes the cyclic tree warning in RichTextBox.  Right now it's
10460         hardcoded to check for that property, but we need to move it to
10461         the DP metadata, and do an audit of other "typeof(object)" DP's to
10462         make sure we aren't setting parent where we shouldn't be.
10464 2009-03-17  Stephane Delcroix  <sdelcroix@novell.com>
10466         * collection.h|cpp: allow MSISICollections to be sorted by ZIndex
10468 2009-03-16  Jackson Harper  <jackson@ximian.com>
10470         * template.cpp: It doesn't really change anything because
10471         templates are never parented, but technically they should be in non
10472         temporary namescopes.
10474 2009-03-16  Jeffrey Stedfast  <fejj@novell.com>
10476         * textbox.cpp (TextBox::CursorDown, TextBox::CursorUp): Fixed to
10477         go up/down 'n' lines instead of always 1 if n wouldn't overflow.
10479 2009-03-16  Stephane Delcroix  <sdelcroix@novell.com>
10481         * multiscaleimage.cpp:
10482         * multiscalesubimage.h|cpp: keep a ref to the parent MSI, Invalidate
10483         it on VP origin or width changed.
10485 2009-03-13  Stephane Delcroix  <sdelcroix@novell.com>
10487         * multiscaleimage.cpp: fix the clipping issue for collections
10489 2009-03-13  Chris Toshok  <toshok@ximian.com>
10491         * type.h, type-generated.cpp: regen.
10493 2009-03-13  Chris Toshok  <toshok@ximian.com>
10495         * xaml.cpp (value_from_str): in the int32 and int64 case, we need
10496         to parse until we get an invalid character, and return the value
10497         parsed up to that point.  it's only an error if there's no valid
10498         characters.
10500 2009-03-13  Chris Toshok  <toshok@ximian.com>
10502         * textblock.h (class Inline): inlines don't permit multiple
10503         parents (Fixes RunTest.RunMultipleParents).
10505 2009-03-13  Geoff Norton  <gnorton@novell.com>
10507         * xap.cpp: Zip files can contain directory entires, we shouldn't
10508         try to open them as files.
10510 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10512         * xaml.cpp:
10513         * control.cpp: Added a null check to prevent crashes.
10515 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10517         * mediaelement.h:
10518         * mediaelement.cpp: Attach to Deployment::ShuttingDownEvent
10519           and clean up upon shutdown.
10521         * pipeline.h:
10522         * pipeline.cpp: Remove a broken attempt to ensure that we
10523           don't leave Media threads running after having shut down.
10525 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10527         * playlist.cpp: Dispose: fix a typo - dispose the media not
10528           ourselves.
10530 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10532         * playlist.cpp: DownloadProgressChangedHandler: Don't do
10533           anything if we've been disposed. Fixes a warning. 
10535 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10537         * mediaelement.cpp: Dispose: We need to dispose the media
10538           player too.
10540 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10542         * downloader.h: DownloaderResponse: Add virtual ref/unref
10543           methods.
10545 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10547         * mediaplayer.cpp: SetTimeout: Add null-checks to prevent
10548           crashes when we can't find a time manager. Also if we can't
10549           remove a timeout, we have to leak ourselves, otherwise the
10550           timeout might get called after we're destroyed.
10552 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10554         * deployment.h:
10555         * deployment.cpp:
10556         * type-generated.cpp: Added Deployment::ShuttingDownEvent.
10557           This will be used by MediaElement to ensure that all media
10558           threads are cleaned up even if the MediaElement itself is
10559           leaked.
10561 2009-03-13  Stephane Delcroix  <sdelcroix@novell.com>
10563         * multiscaleimage.cpp: no longer use precompiled table for morton
10564         layout, but use short and fast function in place.
10566 2009-03-13  Stephane Delcroix  <sdelcroix@novell.com>
10568         * multiscaleimage.cpp: check for null tiles uri returned by
10569         get_tile_func
10571 2009-03-13  Stephane Delcroix  <sdelcroix@novell.com>
10573         * multiscaleimage.cpp: compute the tie opacity on rendering, avoid
10574         having to loop over all the tiles on every tick.
10576 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10578         * runtime.cpp: Surface::Dispose: call SetSurface (NULL) on the
10579           toplevel element before disposing it, since the SetSurface
10580           will be propagated to all descendants, while Dispose will
10581           detach descendants (preventing subsequent SetSurface calls
10582           to reach them).
10584 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10586         * mediaplayer.cpp: Open: when we add an event handler to the
10587           video stream's FirstFrameEnqueued event, the first frame
10588           might already be in the queue, so just call LoadVideoFrame
10589           once always. Fixes test-canvas-no-size.html.
10591 2009-03-12  Geoff Norton  <gnorton@novell.com>
10593         * src/runtime.cpp: MouseLeaveEvent is a MouseEventArgs
10595 2009-03-12  Geoff Norton  <gnorton@novell.com>
10597         * deepzoomimagetilesource.cpp: Ensure we dont override default values
10598         if nothing has been provided in the XML
10600 2009-03-12  Geoff Norton  <gnorton@novell.com>
10602         * animation.cpp:
10603         * animation.h: Implement SkipToFill
10605 2009-03-12  Larry Ewing  <lewing@novell.com>
10607         * canvas.cpp: don't chain up the FE in the overides that is very
10608         wrong these days.
10610 2009-03-12  Chris Toshok  <toshok@ximian.com>
10612         * runtime.cpp (Surface::CreateArgsForEvent): fix crash in the rich
10613         text demo when you click on the buttons.  we need to be creating
10614         RoutedEventArgs, not EventArgs.
10616 2009-03-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10618         * codec-version.h.in: Bump.
10620 2009-03-12  Alan McGovern  <amcgovern@novell.com>
10622         * dependencyproperty.cpp: 1) Refactor the code so that
10623           open/closing parens are parsed in a separate step to
10624           typename/property name. Then merge the codepaths for the
10625           default and '(' case.
10626         2) Attached properties can only be specified inside parens. So
10627           "Canvas.Left" is invalid but "(Canvas.Left)" is valid.
10628         3) For non-attached properties both "Rectangle.RadiusX" and
10629           "(Rectangle.RadiusX)" are acceptable.
10631 2009-03-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10633         * pipeline.cpp: Add a null check.
10635 2009-03-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10637         * audio.cpp: Use media's thread-safe event handling.
10639         * playlist.h:
10640         * playlist.cpp: PlaylistRoot: keep a reference to our media
10641           player (i.e. don't use MediaElement's media player, it may
10642           change). Use the thread-safe event support in media.
10644         * mediaplayer.h:
10645         * mediaplayer.cpp: Use media's thread-safe event handling.
10646           Don't tick while waiting for the media to get the first
10647           frame, just attach an event handler to
10648           FirstFrameEnqueuedEvent.
10650         * pipeline.h:
10651         * pipeline.cpp: IMediaObject: Add thread-safe event support.
10652           Media: inherit from IMediaObject to get the thread-safe
10653           event support.
10655         * pipeline-asf.cpp: ASFDemuxer::SeekAsyncInternal: don't
10656           ignore ASFReader::Seek's result, handle it correctly.
10657           EnqueueGetFrame: requeue a get frame request if we don't
10658           have enough data yet.
10660 2009-03-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10662         * pipeline.h: Move IMediaObject above Media so that Media can
10663           inherit from IMediaObject.
10665 2009-03-12  Andreia Gaita  <avdigal@novell.com>
10667         * clock.[h|cpp]: Fix DispatcherTimer when the timer is stopped and
10668         started during the tick event; in some cases the time between these
10669         two calls was enough to have an extra tick on the time manager, and
10670         the DispatcherTimer would be advanced again even though it was
10671         stopped, and this would happen after the Completed handler was
10672         removed and before it was added again.
10673         Fixes the RestartTimer2 test and SilverlightChess.
10675 2009-03-11  Jeffrey Stedfast  <fejj@novell.com>
10677         * textbox.cpp (TextBox::OnPropertyChanged): Don't create selection
10678         brushes here anymore.
10679         (class TextBoxDynamicPropertyValueProvider): Return default
10680         selection brushes if they've been initialized (happens in
10681         TextBoxView::Render).
10682         (TextBoxView::Render): Initialize the selection brushes if they
10683         haven't already been.
10685 2009-03-11  Alan McGovern  <amcgovern@novell.com>
10687         * dependencyproperty.cpp: Fix issues in resolve_property_path
10688           with some complex paths. Add two new NUnit tests which
10689           verify the correct properties are animated.
10691 2009-03-11  Jeffrey Stedfast  <fejj@novell.com>
10693         * text.cpp|h: Split into textblock.cpp|h and glyphs.cpp|h
10695         * downloader.cpp (downloader_deobfuscate_font): Moved here from
10696         text.cpp and made public.
10698 2009-03-11  Jeffrey Stedfast  <fejj@novell.com>
10700         * layout.cpp (TextLayoutGlyphCluster::Render): If we have nothing
10701         to render, no-op.
10703 2009-03-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10705         * brush.cpp: ImageBrush::image_failed: we need to ref the
10706           eventargs when we do emit chaining.
10708 2009-03-11  Chris Toshok  <toshok@ximian.com>
10710         * border.cpp (Border::OnPropertyChanged): Border is ever the red
10711         headed stepchild.  It has its own validation wrt SetLogicalParent,
10712         that behaves like the InvalidOperationException case in
10713         FrameworkElement, but throws ArgumentException instead of IOE.
10715 2009-03-11  Chris Toshok  <toshok@ximian.com>
10717         * canvas.h, canvas.cpp (Canvas::OnCollectionItemChanged): move the
10718         Top/Left property changed handling from OnSubPropertyChanged to
10719         here, and remove OnSubPropertyChanged.  Basically property changes
10720         on items in collections are never communicated back using
10721         OnSubPropertyChanged.  That is reserved for direct children of the
10722         object (fill/stroke brushes, etc.)
10724         * grid.h, grid.cpp: same.
10726         * dependencyobject.cpp (DependencyObject::NotifyListenersOfPropertyChange):
10727         remove this use of GetParent (yay!) since we don't implicitly
10728         notify our logical parent if an attached property was changed.  we
10729         just notify all listeners.
10731         * clock.h, clock.cpp, animation.cpp: in an effort to disambiguate,
10732         rename GetParent/SetParent to GetParentClock/SetParentClock.
10734 2009-03-10  Chris Toshok  <toshok@ximian.com>
10736         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
10737         hook up (and unhook) the collection events if the dob is a
10738         Type::COLLECTION.  Remove the stupid parent check that was
10739         breaking everything.  Pass in our MoonError parameter to
10740         OnPropertyChanged so we can communicate it back.
10741         (DependencyObject::ClearValue): unhook from the collection events.
10743         * dependencyobject.h (SetLogicalParent, GetLogicalParent): remove.
10744         these methods are now in FrameworkElement.
10745         (SetParent, GetParent): their replacements.  Hopefully these are
10746         not long for this world, and I'm working on getting rid of them.
10747         they are used in very few places now (basically collection.cpp and
10748         provider.cpp).
10749         (collection_changed, collection_item_changed): two new
10750         EventHandlers so we can make collection stop calling directly into
10751         its parent.
10752         (OnPropertyChanged): add a MoonError* arg here so we can transmit
10753         errors back from the various OnPropertyChanged overrides.
10754         
10755         * validators.h,
10756         validators.cpp (Validators::ContentControlContentValidator): add
10757         half of the "multiple parents for .Content" checks here.  This
10758         runs before the value is actually set and checks to see if the
10759         logical parent is a Panel subclass.  If it is it throws an
10760         ArgumentException instead of an InvalidOperationException (don't
10761         ask me.)
10763         * collection.cpp, collection.h: remove the assumption that we can
10764         just call into our parent to notify of collection/collection item
10765         changes.  instead just emit an event.
10767         * eventargs.h: define CollectionItemChangedEventArgs for the new
10768         Collection::ItemChangedEvent.
10769         
10770         * contentcontrol.h,
10771         contentcontrol.cpp (ContentControl::OnPropertyChanged): call
10772         SetLogicalParent on the old/new contents if they're
10773         FrameworkElements, and if either returns an error, return
10774         immediately.
10776         * usercontro.h, usercontrol.cpp (UserControl::OnPropertyChanged):
10777         same.
10779         
10780         * frameworkelement.cpp, frameworkelement.h: move
10781         Set/GetLogicalParent here, and make the InvalidOperationException
10782         on multiple parents unconditional.
10783         
10784         * panel.cpp (Panel::OnCollectionChanged): if the new/old child is
10785         a FrameworkElement, set its logical parent.
10787         * animations.*, bitmapimage.*, border.*, brush.*, canvas.*,
10788         control.*, deepzoomimagetilesource.*, geometry.*, grid.*, media.*,
10789         mediaelement.*, multiscaleimage.*, popup*, shape.*, stylus.*,
10790         textbox.*, text.*, transform.*, uielement.*: change all the
10791         OnPropertyChanged signatures to include MoonError*
10793         * cbinding.*, dependencyproperty.g.cpp, type-generated.cpp,
10794         type.h, value.h: regen.
10796         * resources.cpp: s/LogicaParent/Parent.
10797         
10798         * provider.h, provider.cpp (StylePropertyValueProvider::unlink_converted_value):
10799         not really part of this larger change, but needed for the
10800         toggleref stuff.  we need to call SetParent on all the
10801         DO-subclassed converted values so they never reference a trashed
10802         parent pointer.
10803         (get_parent): add more cases here, none of which I'm sure are
10804         correct.
10806 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
10808         * textbox.cpp (PasswordBox::OnPropertyChanged): Fixed.
10809         (TextBox::TextBox): New protected ctor that PasswordBox's ctor can
10810         chain up to.
10811         (PasswordBox::PasswordBox): Chain up to the TextBox ctor we want,
10812         so that we don't register event callbacks twice. Doh.
10814 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
10816         * validators.cpp (Validators::PasswordValidator):
10817         Removed. PasswordBox::PasswordProperty is internal, so we map it
10818         to TextBox::TextProperty and manually implement the
10819         getter/setter (which si where we manually throw an
10820         ArgumentNullException if set to null).
10822         * textbox.cpp (PasswordBox::OnPropertyChanged): Manually syncing
10823         Password and Text properties sucks, let's not do it. Instead,
10824         we'll map PasswordProperty to TextProperty on the managed
10825         side. Also need to Invalidate() if PasswordChar changes.
10826         (TextBoxView::Layout): Mask the text with PasswordChars if we are
10827         rendering a PasswordBox's content.
10829 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
10831         * textbox.cpp (PasswordBox::OnPropertyChanged): Keep the Text and
10832         Password properties in sync. Don't emit a PasswordChanged event,
10833         that's mapped to TextChanged on the managed side.
10834         (TextBox::OnApplyTemplate): Handle Border and Panel
10835         ContentElements as well.
10837         * textbox.h (class PasswordBox): Get rid of the
10838         PasswordChangedEvent and also some of the properties that it
10839         shares with TextBox.
10841 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
10843         * contentcontrol.cpp (ContentControl::ContentControl): Use the
10844         nice new ManagedTypeInfo ctor.
10846         * type.h.in (struct ManagedTypeInfo): Added a nice ctor.
10848         * textbox.cpp (TextBox::Initialize): New protected method; all of
10849         the old ctor logic was moved here so that PasswordBox could reuse
10850         it.
10851         (TextBox::TextBox): Call Initialize() with out type info.
10852         (PasswordBox::PasswordBox): Call Initialize() with out type info.
10853         (PasswordBox::Cursor*): Override some of TextBox's cursor
10854         navigation because we don't "see" whitespace or lines.
10856 2009-03-10  Larry Ewing  <lewing@novell.com>
10858         * textbox.cpp (OnApplyTemplate): don't crash it ContentElement
10859         isn't found in the template.
10861 2009-03-10  Jackson Harper  <jackson@ximian.com>
10863         * xaml.cpp: Don't use GetLogicalParent here because the parenting
10864         hasn't been setup yet. Wse the XamlElementInstance tree for
10865         figuring out who our parent is.
10867 2009-03-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10869         * brush.cpp: ImageBrush::image_failed: propagate event args.
10871 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
10873         * layout.cpp (TextLayout::Layout*Wrap*): Changed the outer while
10874         loops into do-while loops so that the line->height and
10875         line->descent get set properly. Needed to fix
10876         TextLayout::GetCursor().
10878 2009-03-10  Jackson Harper  <jackson@ximian.com>
10880         * xaml.cpp: Do some basic type conversion for resources, this
10881         allows you to do things like store a font family as
10882         <clr:String>Arial</clr:String>.
10884 2009-03-10  Jackson Harper  <jackson@ximian.com>
10886         * value.h:
10887         * value.h.in: Consistentify method name.
10888         
10889 2009-03-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10891         * uielement.cpp: GetTimeManager: if we don't have a surface,
10892           try to get it from the deployment.
10894 2009-03-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10896         * pipeline-ui.cpp:
10897         * pipeline-nocodec-ui.cpp: Set current deployment in
10898           ResponseEvent.
10900 2009-03-09  Larry Ewing  <lewing@novell.com>
10902         * border.cpp (Render): set the fill rule after drawing the clip
10903         geometry since it will set the fill rule for itself.
10905 2009-03-09  Chris Toshok  <toshok@ximian.com>
10907         * enums.cpp (cursors_map): add the missing Size* members here.
10908         gets the
10909         http://www.adefwebserver.com/DotNetNukeHELP/Misc/Silverlight/GanttChart/Default.aspx
10910         gallery site to the point where it's displaying a UI.
10912 2009-03-09  Jeffrey Stedfast  <fejj@novell.com>
10914         * textbox.cpp (TextBox::KeyPressUnichar): Fixed a logic goof that
10915         caused a segfault.
10917 2009-03-09  Jeffrey Stedfast  <fejj@novell.com>
10919         * textbox.cpp (TextBox::TextBox): Initialize have_offset to false
10920         and cursor_offset to 0.0. Silverlight doesn't use character column
10921         when moving the cursor up/down, it uses the cursor's x-offset.
10922         (TextBox::CursorDown): Implement using TextLayoutLines.
10923         (TextBox::CursorUp): Same.
10924         (TextBoxView::GetLineFromY): New convenience method.
10925         (TextBoxView::GetLineFromIndex): Another new method.
10927         * layout.cpp (TextLayoutLine::GetCursorFromX): New convenience
10928         method.
10929         (TextLayout::GetCursorFromXY): Moved the remaining logic into
10930         TextLayoutLine::GetCursorFromX().
10931         (TextLayout::GetLineFromY): Provide the line index to our caller,
10932         if requested.
10933         (TextLayout::GetLineFromIndex): New convenience method.
10935 2009-03-09  Jeffrey Stedfast  <fejj@novell.com>
10937         * textbox.cpp (TextBoxView::UpdateCursor): We shouldn't need the
10938         cursor == 0 hack anymore.
10940 2009-03-09  Andreia Gaita  <avidigal@novell.com>
10941     
10942         * dependencyobject.cpp: revert r128895 (toggleref changes) for now,
10943         needs more tests
10945 2009-03-09  Andreia Gaita  <avidigal@novell.com>
10947         * dependencyobject.cpp: do the toggleref callbacks so the managed
10948         side can dispose of things properly
10950 2009-03-09  Jeffrey Stedfast  <fejj@novell.com>
10952         * layout.cpp (unichar_combining_class): New function to protect
10953         against using Glib's g_unichar_combining_class() if the API isn't
10954         available.
10956 2009-03-09  Jackson Harper  <jackson@ximian.com>
10958         * xaml.cpp: Store the top element in the xaml context so we can
10959         still lookup handlers when parsing templates.
10961 2009-03-09  Stephane Delcroix  <sdelcroix@novell.com>
10963         * multiscaleimage.cpp: fix the loop ending conditions for images
10964         with extreme aspect ratios.
10966 2009-03-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10968         * deployment.cpp: Add support for setting the root directory
10969           using MOON_PATH.
10971 2009-03-06  Larry Ewing  <lewing@novell.com>
10973         * multiscaleimage.cpp (Render): cache the surface type as a
10974         similar surface to the rendering target to speed up rendering a
10975         bit.
10977 2009-03-06  Larry Ewing  <lewing@novell.com>
10978         
10979         * layout.cpp (SetText): handle null text here.
10981 2009-03-06  Geoff Norton  <gnorton@novell.com>
10983         * codec-version.h.in: When we change the layout of 
10984         dependencyobject, we need to bump the ABI
10986 2009-03-06  Alan McGovern  <amcgovern@novell.com>
10988         * clock.h:
10989         * cbinding.h:
10990         * animation.h:
10991         * cbinding.cpp:
10992         * animation.cpp: If the PropertyPath supplied to the
10993           TargetPropertyProperty is a DependencyProperty, we need a
10994           special method to retrieve it. Normally PropertyPaths which
10995           are instantiated with a DependencyProperty are returned as
10996           'null' from native. Also add method for getting the manual
10997           target.
10999 2009-03-06  Alan McGovern  <amcgovern@novell.com>
11001         * clock.h:
11002         * ChangeLog:
11003         * cbinding.h:
11004         * animation.h:
11005         * cbinding.cpp:
11006         * animation.cpp: Revert - I didn't mean to commit that yet.
11007           It's not complete.
11009 2009-03-06  Alan McGovern  <amcgovern@novell.com>
11011         * propertypath.h: Need to null check the path before passing
11012           to strcmp - It is possible for the path to be null now.
11014 2009-03-06  Andreia Gaita  <avidigal@novell.com>
11016         * dependencyobject.[h|cpp]: Add toggleref event registration
11017         and handler
11019         * cbinding.[h|cpp]: regen
11021 2009-03-05  Jeffrey Stedfast  <fejj@novell.com>
11023         * layout.cpp (FindLastWord): We need to walk backwards, not
11024         forewards. Oops.
11026 2009-03-05  Alan McGovern  <amcgovern@novell.com>
11028         * propertypath.h: If we set a propertypath with a
11029           DependencyProperty, set the 'path' string to null. This
11030           avoids extra marshalling when it's not needed.
11032 2009-03-04  Geoff Norton  <gnorton@novell.com>
11034         * deployment.cpp: Finalizing the domain destroys all objects
11035         immediately.  Its possible that we might end up invoking more
11036         finalizers in the unref drain thta begins after dispose, so 
11037         we're going to force a full gc and finalizer run of the collected
11038         objects here and allow ~Deployment to finalize the entire domain.
11040 2009-03-04  Jeffrey Stedfast  <fejj@novell.com>
11042         * pipeline.cpp (Media::DisposeObjectInternal): Return
11043         MEDIA_SUCCESS so that control doesn't reach the end of a non-void
11044         function.
11046         * layout.cpp (TextLayout::GetCursorFromXY): Don't use
11047         g_unichar_iszerowidth().
11048         (TextLayout::GetCursor): Same.
11050 2009-03-04  Larry Ewing  <lewing@novell.com>
11052         * border.cpp, border.h: clean up the path_only drawing a
11053         little. set CanFindElement more appropriately.
11055         * panel.cpp: undo the path_only logic a bit.
11057         * frameworkelement.cpp: make FindElementInHostCoordinates a little
11058         simpler.
11060         * uielement.cpp, uielement.h: Make the CanFindElement default be
11061         false, and remove the broken in_stroke check.
11063 2009-03-04  Stephane Delcroix  <sdelcroix@novell.com>
11065         * multiscaleimage.h|cpp: generate PInvoke for Setters so the
11066         animations are used from managed Set() too
11068 2009-03-04  Stephane Delcroix  <sdelcroix@novell.com>
11070         * multiscaleimage.h|cpp: pan and zoom animation in
11071         Viewport[Origin|Width] properties Setters
11073 2009-03-04  Jeffrey Stedfast  <fejj@novell.com>
11075         * layout.cpp: Disable debug printfs unless layout debugging is
11076         enabled.
11078 2009-03-04  Jeffrey Stedfast  <fejj@novell.com>
11080         Fixes the last failing case in LineBreakBasic1.htm
11082         * layout.cpp (layout_word_wrap): When checking for last_word, use
11083         <= instead of < because inptr, at this point, is at the first byte
11084         *after* the character just gobbled up.
11086 2009-03-04  Jeffrey Stedfast  <fejj@novell.com>
11088         Fixes ActualWidth/Height extents for LineBreakBasic1.htm
11090         * layout.cpp (TextLayout::LayoutWrapWithOverflow): ActualWidth
11091         extents include trailing LWSP if-and-only-if that trailing LWSP is
11092         on the last line.
11093         (TextLayout::LayoutNoWrap): Same.
11094         (TextLayout::LayoutWrap): Same.
11096 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
11098         * layout.cpp (GenerateGlyphCluster): Don't crash if glyph->path is
11099         NULL.
11101         * font.cpp (TextFont::GetGlyphInfo): If unichar is
11102         0xFEFF (zero-width no-break space), then return a global
11103         GlyphInfo. We do this because at least some fonts won't have this
11104         glyph and we don't want to render an empty box (the default
11105         glyph).
11107 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
11109         * layout.cpp (layout_word_wrap): Silverlight ignores breaking
11110         rules for glyphs that the font doesn't contain.
11112 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
11114         * layout.cpp (layout_word_wrap): Oops, need to keep op.inptr and
11115         op.prev up-to-date if we combine chars.
11117 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
11119         Fixes a few more cases in LineBreakClasses.htm
11121         * layout.cpp (utf8_find_last_word): If a zero-width space follows
11122         a combining mark, treat the zws as part of a word and not lwsp.
11123         (layout_word_lwsp): Do NOT ignore zero-width characters, let the
11124         font metrics do the talking.
11125         (TextLayout::LayoutNoWrap): Same.
11126         (layout_word_overflow): Same combining-mark fix as above.
11127         (layout_word_wrap): Same. Also changed the way we keep track of
11128         break opportunities. After discoverign that we need to wrap, get
11129         the break-type for the follwoing character before working
11130         backwards. Try to return false if we manage to squeeze the entire
11131         word onto the line anyway.
11133 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
11135         Fixes LineBreakBasic2.htm and some parts of LineBreakClasses.htm
11137         * layout.cpp (BreakSpace): Treat tab as a BREAK_SPACE.
11138         (utf8_find_last_word): Use BreakSpace() instead of
11139         g_unichar_isspace() since that's how the rest of our breaking
11140         logic works.
11141         (FindLastWord): Same.
11142         (layout_word_lwsp): Don't canonicalize all LWSP as a SPACE, just
11143         do it for tabs.
11144         (LayoutNoWrap): Same.
11146 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
11148         * layout.cpp (TextLayout::SetTextWrapping): Default unknown values
11149         to Wrap here so that we can avoid a re-layout if the old wrapping
11150         mode was 'Wrap'.
11152 2009-03-02  Jeffrey Stedfast  <fejj@novell.com>
11154         Fixes some wrapping issues in LineBreakBasic1.htm
11156         * layout.cpp (TextLayout::LayoutWrap): Use a new 'wrapped' state
11157         variable to keep track of whether or not the layout_word_wrap()
11158         function returned. We want to keep 'linebreak' as a separate
11159         state. If we were told to wrap, but we've reached the end of the
11160         run, postpone wrapping until the next run (which might start with
11161         lwsp).
11163 2009-03-02  Jeffrey Stedfast  <fejj@novell.com>
11165         Fixes for AdobeFonts.htm
11167         * layout.cpp (TextLayoutGlyphCluster::Render): Give the underline
11168         its own Fill() so that if any glyphs have a tail that descends
11169         below the baseline into the underline, the fill doesn't negate
11170         itself where the paths overlap.
11171         (GenerateGlyphCluster): Use the font->Ascender() to get the
11172         baseline offset from the top. Height() + Descender() isn't quite
11173         right. Should probably fix other places that use that strategy as
11174         well, but one step at a time.
11176 2009-03-02  Jeffrey Stedfast  <fejj@novell.com>
11178         * textbox.cpp (TextBoxView::TextBoxView): Init selection_changed
11179         to false.
11180         (TextBoxView::Render): If the selection has changed, update the
11181         selection on the layout engine.
11182         (append_runs): Removed; no longer needed.
11183         (TextBoxView::Layout): Updated to use the new layout APIs.
11184         (TextBoxView::OnModelChanged): When the selection changes, don't
11185         set dirty to true. Instead, set selection_changed to true.
11186         (TextBoxView::SetTextBox): Set the default text attributes on our
11187         layout with the textbox as the source.
11189         * text.cpp (TextBlock::Layout): Updated to use the new text layout
11190         APIs.
11192         * layout.cpp: All new layout/rendering engine.
11194 2009-03-04  Geoff Norton  <gnorton@novell.com>
11196         * deployment.cpp: When we dispose the domain, we force a full GC
11197         run to happen, otherwise objects could retain a ref to the deployment
11198         causing ~Deployment to never be called.
11200 2009-03-04  Jackson Harper  <jackson@ximian.com>
11202         * xaml.cpp|h: Add a new method for grabbing the element_name of a
11203         xaml element instance from managed.
11205 2009-03-04  Alan McGovern  <amcgovern@novell.com>
11207         * src.mdp: Add missing files to the MD solution
11209 2009-03-03  Chris Toshok  <toshok@ximian.com>
11211         * collection.cpp (DependencyObjectCollection::AddedToCollection):
11212         add a check for PermitsMultipleParents here.
11214         * collection.h (UIElementCollection::AddWithError): remove.
11216         * dependencyobject.h (DependencyObject::PermitsMultipleParents):
11217         return true by default.
11219         * style.h (class Setter): setters don't permit multiple parents.
11221         * uielement.h (class UIElement): neither do uielements.
11223         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
11224         change the UIElement test to a PermitsMultipleParents test.
11226 2009-03-03  Chris Toshok  <toshok@ximian.com>
11228         * cbinding.h, cbinding.cpp: regen.
11229         
11230         * collection.h, collection.cpp (DependencyObjectCollection::AddedToCollection): if
11231         the parent of the DO is a collection, throw an exception.
11232         (UIElementCollection::CanAdd): remove.
11233         (DependencyObjectCollection::CanAdd): remove.
11234         (HitTestCollection::CanAdd): remove.
11236         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
11237         reinstate the multiple parents warning, but make it a MoonError,
11238         and make it only apply to visual elements (UIElement subclasses,
11239         specifically).
11241         * dependencyobject.h (GetLogicalParentIncludingCollections): add a
11242         new getter for just the logical_parent field, which is horribly
11243         named.
11244         (GetLogicalParent): add a pinvoke for this.
11246 2009-03-03  Jackson Harper  <jackson@ximian.com>
11248         * xaml.cpp|h: SetProperty now takes a Value instead of a
11249         DependencyObject, this allows us to set properties on things like
11250         enums.
11252 2009-03-03  Geoff Norton  <gnorton@novell.com>
11254         * pipeline.cpp:
11255         * pipeline-ui.cpp: Stop storing the mscodec path in the configuration
11256         file.
11258 2009-03-03  Alan McGovern  <amcgovern@novell.com>
11260         * value.cpp:
11261         * propertypath.h: Complete the implementation of PropertyPath.
11262           If it is constructed with a DependencyProperty in managed,
11263           propagate this to native.
11265         * dependencyproperty.cpp: If the property path instance was
11266           constructed with a DependencyProperty *, immediately return
11267           it.
11269 2009-03-03  Alan McGovern  <amcgovern@novell.com>
11271         * animation.h:
11272         * animation.cpp: Implement the required exceptions for managed
11273           code when starting storyboards which are missing properties
11274           or can't find the target element/property.
11276 2009-03-03  Alan McGovern  <amcgovern@novell.com>
11278         * src.mdp: Add propertypath.h to the MD solution
11280 2009-03-03  Alan McGovern  <amcgovern@novell.com>
11282         * animation.h:
11283         * animation.cpp: Storyboards should always use the surface in
11284           the current deployment when starting. They don't have to be
11285           explicitly attached to a surface - SL2 has different
11286           semantics as compared to SL1 which caused some of the 1.0
11287           tests to flag this as a regression.
11289 2009-03-03  Alan McGovern  <amcgovern@novell.com>
11291         * ChangeLog:
11292         * animation.h:
11293         * animation.cpp: Revert last change. I have the test failing
11294           locally now.
11296 2009-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11298         * pipeline-asf.cpp: Add a null check.
11300 2009-03-03  Alan McGovern  <amcgovern@novell.com>
11302         * animation.h:
11303         * animation.cpp: Storyboards should always use the surface in
11304           the current deployment when starting. They don't have to be
11305           explicitly attached to a surface.
11307 2009-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11309         * dependencyobject.cpp: EventObject::SetSurface: only warn
11310           about wrong thread if we're actually change something.
11312         * mediaplayer.cpp: Call DisposeObject on the media to dispose
11313           the frames.
11315         * pipeline.h:
11316         * pipeline.cpp: Add Media::DisposeObject to have objects
11317           disposed on the media thread.
11319 2009-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11321         * pipeline.cpp: Add a missing base call to Dispose.
11323 2009-03-02  Geoff Norton  <gnorton@novell.com>
11325         * pipeline.cpp: SetSource (uri) is not required to be called before
11326         SetSource (Downloader, PartName) from the javascript API.
11328 2009-03-02  Geoff Norton  <gnorton@novell.com>
11330         * deployment.cpp: Enable signal chaning
11332 2009-03-02  Jeffrey Stedfast  <fejj@novell.com>
11334         * textbox.cpp (TextBox::Paste): New method to paste the
11335         contents. Since pasting text is asyncronous, we have to emit our
11336         own events and can't rely on them happening inside OnKeyDown().
11337         (TextBoxView::OnModelChanged): Don't allow 'dirty' to get set to
11338         false if updating the layout returns false.
11340 2009-03-01  Andrés G. Aragoneses  <aaragoneses@novell.com>
11342         * runtime.cpp: Add an EOL at the end of a printf.
11344 2009-03-01  Jeffrey Stedfast  <fejj@novell.com>
11346         * utils.h: Mark our g_ptr_array_insert*() symbols as internal, we
11347         don't want to be exporting these symbols.
11349 2009-02-27  Stephane Delcroix  <sdelcroix@novell.com>
11351         * multiscaleimage.cpp: use the tiles containing the shared thumbs for
11352         the highest levels of DZ collections. Saves a lot of network traffic.
11354 2009-02-26  Sebastien Pouliot  <sebastien@ximian.com>
11356         * resources.cpp: Simplify (old glib) Clear and use the "right" macro
11358 2009-02-26  Chris Toshok  <toshok@ximian.com>
11360         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
11361         more tweaking of inheritance behavior.  if the parentProperty
11362         exists, check the local value, and if it exists, return that.
11363         otherwise return return GetValue.
11365 2009-02-26  Chris Toshok  <toshok@ximian.com>
11367         * border.cpp (Border::OnPropertyChanged): robustificate this a
11368         touch.
11370 2009-02-26  Chris Toshok  <toshok@ximian.com>
11372         * cbinding.h, cbinding.cpp: regen.
11374         * frameworkelement.cpp (FrameworkElement::FrameworkElement):
11375         initialize default_style_appled to false.
11376         (FrameworkElement::SetDefaultStyle): new method, so that the
11377         managed code can set the default style without going through the
11378         CLR property wrapper (and the DP system), since (stupidly, imo)
11379         the default style isn't exposed by the Style property.
11380         (FrameworkElement::Measure): I don't like doing this hear, but
11381         according to dave relyea's blog, templates are applied when
11382         Measure is called.  we could add an internal measure hook so that
11383         this code could live in control.cpp, but for now this hack will
11384         do.
11386         * frameworkelement.h: expose SetDefaultStyle (GeneratePInvoke too)
11387         and add the default_style_applied field.
11388         
11389         * control.cpp (Control::OnLoaded): only apply the default style
11390         here if we haven't already (to handle the case where the object is
11391         created programmatically).
11393         * xaml.cpp (end_element_handler): according to the blog post in
11394         the added comment, controls defined in XAML get their default
11395         style applied when the end tag is seen.
11397 2009-02-26  Jeffrey Stedfast  <fejj@novell.com>
11399         * textbox.cpp (TextBuffer::Resize): If we fail to downsize, don't
11400         return failure.
11401         (TextBuffer::Replace): Don't call Resize() if the replacement text
11402         is shorter than the old subtext because the realloc() would lose
11403         data before we had a chance to shift things into place.
11405 2009-02-26  Sebastien Pouliot  <sebastien@ximian.com>
11407         * resources.cpp: Fix crash on SLED (old glib) when clearing the 
11408         hashtable (somehow this did not crash before)
11410 2009-02-25  Jackson Harper  <jackson@ximian.com>
11412         * xaml.cpp: Remove some old code that was preventing non-dob
11413         values from being set to native properties.
11415 2009-02-25  Jeffrey Stedfast  <fejj@novell.com>
11417         * textbox.cpp (TextBuffer::Substring): New method to get a
11418         substring.
11419         (class TextBoxUndoAction*): New classes to represent different
11420         types of Undo/Redo actions.
11421         (class TextBoxUndoStack): New Undo/Redo stack class.
11422         (TextBox::TextBox): Initialize undo/redo stacks.
11423         (TextBox): Destroy undo/redo stacks.
11424         (TextBox::KeyPressBackSpace): Record an undo action.
11425         (TextBox::KeyPressDelete): Same.
11426         (TextBox::KeyPressUnichar): Here too.
11427         (TextBox::OnKeyDown): Call Undo() and Redo() when appropriate.
11428         (TextBox::OnPropertyChanged): Record undo actions for setting
11429         SelectedText and Text properties.
11430         (TextBox::Undo): Undo the most recent action.
11431         (TextBox::Redo): Redo the most recent action.
11433 2009-02-25  Stephane Delcroix  <sdelcroix@novell.com>
11435         * multiscaleimage.h|cpp: return the next tile to download
11436         in RenderSingle, RenderCollection. so the download is triggered
11437         from a single place.
11439 2009-02-25  Stephane Delcroix  <sdelcroix@novell.com>
11441         * multiscaleimage.h|cpp: split Render in RenderSingle,
11442         RenderCollection.
11444 2009-02-24  Chris Toshok  <toshok@ximian.com>
11446         * dependencyobject.cpp (EventObject::FinishEmit): if handlers are
11447         added to the list during emission, we can end up doing the Finish
11448         decrements when we didn't do the Start increments, leading to a
11449         negative events->emitting count.  This causes us to spin in
11450         unref_delayed on shutdown.  Fixes bug #479364.
11452         r: kangaroo.
11454 2009-02-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11456         * codec-version.h.in: Bump abi version.
11458         * mediaplayer.h:
11459         * mediaplayer.cpp: Handle frames with width/height set, and
11460           change our cairo surface accordingly.
11462         * pipeline.h:
11463         * pipeline.cpp: Add width/height to MediaFrame, to support
11464           frames with different sizes than the initial size specified
11465           in the stream.
11467 2009-02-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11469         * dependencyobject.cpp: Emit: Add a null check.
11471 2009-02-23  Jeffrey Stedfast  <fejj@novell.com>
11473         * textbox.cpp (TextBoxView::Paint): Try to draw a crisp
11474         1-pixel-wide line for the cursor... apparently cairo has forsaken
11475         1-pixel-wide lines.
11477 2009-02-23  Jeffrey Stedfast  <fejj@novell.com>
11479         * layout.cpp (TextLayout::GetCursor): Revert previous round()
11480         change, this isn't the right way to do it.
11482         * textbox.cpp (TextBoxView::BeginCursorBlink): Call
11483         UpdateCursor().
11484         (TextBox::OnPropertyChanged): Keep proper selection_anchor/cursor
11485         state.
11487 2009-02-23  Stephane Delcroix  <sdelcroix@novell.com>
11489         * multiscaleimage.cpp: remove some debugs, clean the render loops,
11490         cleanly dispose the hashtable and its components
11492 2009-02-23  Jeffrey Stedfast  <fejj@novell.com>
11494         * layout.cpp (TextLayout::GetCursor): Round the cursor's x
11495         position to the nearest whole number (makes the cursor look
11496         nicer).
11498         * textbox.cpp (TextBoxView::Paint): Always paint the cursor black.
11500 2009-02-23  Chris Toshok  <toshok@ximian.com>
11502         * xaml.cpp (value_from_str): handle Type::OBJECT here by just
11503         assuming the value is a string.  Fixes Tag.htm.
11505 2009-02-23  Geoff Norton  <gnorton@novell.com>
11507         * debug.cpp: Don't go poking around in managed land if we don't have
11508         a MonoDomain ()
11510 2009-02-23  Stephane Delcroix  <sdelcroix@novell.com>
11512         * multiscaleimage.cpp: Render () in relative coordinates
11514 2009-02-23  Stephane Delcroix  <sdelcroix@novell.com>
11516         * multiscaleimage.h|cpp: use filename as cache keys
11518 2009-02-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11520         * pipeline.h:
11521         * pipeline.cpp: Only decode on the media thread.
11523 2009-02-23  Alan McGovern  <amcgovern@novell.com>
11525         * uielement.h:
11526         * dependencyproperty.g.cpp: Tag is a System.Object, not a
11527           string.
11529 2009-02-22  Geoff Norton  <gnorton@novell.com>
11531         * pipeline.cpp|h: Add extra_data from managed for AudioStream too
11533 2009-02-22 Geoff Norton  <gnorton@novell.com>
11535         * cbinding.cpp|h: Regen
11536         * pipeline.cpp|h: When constructing a new VideoStream pass the
11537         extra_data from managed.
11539 2009-02-22  Geoff Norton  <gnorton@novell.com>
11541         * pipeline-asf.cpp:
11542         * pipeline.cpp|h: Add some missing codecs.
11544 2009-02-20  Jeffrey Stedfast  <fejj@novell.com>
11546         * layout.cpp (TextLayout::Layout*Wrap*): Always need to update
11547         actual_width, segment->end, etc - even if all we had was
11548         whitespace. Try to keep better track of this state as well.
11549         (TextLayout::GetCursor): The cursor height is actually the same as
11550         the line height.
11552         * textbox.cpp (TextBox::TextBox): Init inkeypress state to false.
11553         (TextBox::OnKeyDown): Set inkeypress to true at the beginning and
11554         false at the end.
11555         (TextBox::OnPropertyChanged): Check for inkeypress so we don't
11556         syncronize things too early (we want to do it in SyncAndEmit() at
11557         the end of OnKeyDown()). Also updated to keep proper emit state.
11558         (TextBox::ClearSelection): Only sync selected text if we aren't in
11559         OnKeyDown().
11560         (TextBox::Select): Same.
11562 2009-02-20  Jeffrey Stedfast  <fejj@novell.com>
11564         * textbox.cpp (TextBuffer::Resize): Return bool - true if we were
11565         able to resize or false if we failed.
11566         (TextBuffer::*): If Resize fails, return.
11567         (TextBox::CursorPrevWord): Only nagivate back so long as i >
11568         begin. Prevents us from returning -1 when begin is 0.
11569         (TextBuffer::Cut): Fixed the logic - we don't want to memmove the
11570         total number of bytes left after cutting, we only want to memmove
11571         the bytes after the cut point.
11573         * moon-path.c (moon_path_ensure_space): New function to replace
11574         the ENSURE_SPACE() macro and moon_path_expand(). Returns bool so
11575         that callers can tell if they have enough space to add the data
11576         they want. Fixed callers to check the return value and return w/o
11577         adding curves, lines, whatever. While this will mean that
11578         Moonlight won't render the path correctly, at least we won't
11579         crash.
11581 2009-02-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11583         * mediaplayer.cpp: Open: Show the first frame upon opening a
11584           video.
11586 2009-02-19  Sebastien Pouliot  <sebastien@ximian.com>
11588         * size.cpp|h: Add FromStr (copied from Point)
11589         * xaml.cpp: Parse Type::SIZE
11591 2009-02-19  Jeffrey Stedfast  <fejj@novell.com>
11593         * stylus.h (class StylusPoint): In managed-land, this class is
11594         actually a struct, so until we find a better way, mark property
11595         accessors for pinvoking.
11596         (class StylusPointCollection): Add AddStylusPoints to the list of
11597         methods to create pinvoke stubs for.
11598         (class StylusInfo): Fixed to have a managed class
11599         autogenerated (internal).
11601         * brush.cpp (VideoBrush::SetSource): Implemented.
11603 2009-02-19  Sebastien Pouliot  <sebastien@ximian.com>
11605         * dependencyobject.cpp|h: The parameter is not needed anymore
11606         since the xaml code was updated to work without using the
11607         logical parent.
11609 2009-02-19  Jackson Harper  <jackson@ximian.com>
11611         * xaml.cpp: Implement StaticResource element syntax.
11613 2009-02-18  Jeffrey Stedfast  <fejj@novell.com>
11615         * geometry.h (class PathGeometry): Don't autocreate the
11616         FiguresProperty until we can figure out why it breaks the PDC
11617         site.
11619 2009-02-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11621         * mediaelement.h: We always want OnPropertyChanged for
11622           PositionProperty. Fixes seeking to start/0.
11624         * dependencyproperty.g.cpp: Regenerated.        
11626 2009-02-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11628         * mediaelement.cpp: ctor: Initialize flags correctly.
11630 2009-02-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11632         * playlist.cpp:
11633         * pipeline.cpp:
11634         * pipeline-asf.cpp:
11635         * mediaelement.cpp: g_warn_if_failed -> g_return_if_failed to
11636           make sled (glib 2.10) happy.
11638 2009-02-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11640         * pipeline.h:
11641         * pipeline.cpp:
11642         * playlist.cpp:
11643         * mediaelement.h:
11644         * mediaelement.cpp: Initial implementation of
11645           MediaStreamSource.
11647         * cbinding.h:
11648         * cbinding.cpp: Regenerated.
11650 2009-02-18  Alan McGovern  <amcgovern@novell.com>
11652         * clock.h:
11653         * clock.cpp:
11654         * animation.h:
11655         * animation.cpp: Storyboards are considered 'children' if they
11656           ever were attached as a child of another timeline. The
11657           current status doesn't appear to matter.
11658           (StoryboardTest.RemoveChildThenStart).
11660 2009-02-18  Stephane Delcroix  <sdelcroix@novell.com>
11662         * multiscaleimage.h|cpp: remove GetViewPortHeight, fix the rendering
11663         of single images
11665 2009-02-17  Chris Toshok  <toshok@ximian.com>
11667         * text.cpp (TextBlock::TextBlock): remove this hack.
11669 2009-02-17  Chris Toshok  <toshok@ximian.com>
11671         * textbox.cpp (TextBox::OnPropertyChanged): add the same hardening
11672         to the SelectedText case, and also don't perform the remaining
11673         operations if g_utf8_to_ucs4_fast fails.
11675 2009-02-17  Jeffrey Stedfast  <fejj@novell.com>
11677         * dependencyobject.cpp: Now takes an only_changed argument; if
11678         true, then only return the properties which have been
11679         changed (plus any values which have been auto-created).
11681         * mediaelement.cpp (MediaElement::MediaElement): Set
11682         BufferingTimeProperty and PositionProperty in the ctor, we can't
11683         use DefaultValue nor AutoCreateValue for these since they need to
11684         be returned by ReadLocalValue() immediately after instantiating a
11685         new MediaElement object.
11687         * media.h (class MediaAttribute): Set managed namespaces for
11688         MediaAttribute and MediaAttributeCollection, we have internal
11689         managed implementations of these now.
11691         * text.h (class TextBlock): Changed default LineHeightProperty
11692         value from NaN to 0.0 (docs say NaN is the default, but not
11693         according to the unit tests).
11695         * textbox.h (class TextBox): Changed default TextProperty value
11696         from "" to null (docs say "" is the default, but not according to
11697         the unit tests).
11699         * media.cpp (Image::Image): Fix the SourceProperty to be
11700         autocreated.
11702         * shape.cpp (Polygon::Polygon): Don't set a point
11703         collection. We'll make it autocreated instead.
11704         (Polyline::Polyline): Same.
11706         * geometry.h (class PathFigure): Set the default value of
11707         IsFilledProperty to true.
11708         (class PathGeometry): AutoCreate the FiguresProperty.
11709         (class PolyBezierSegment): AutoCreate the PointsProperty.
11710         (class PolyLineSegment): AutoCreate the PointsProperty.
11711         (class PolyQuadraticBezierSegment): AutoCreate the PointsProperty.
11713         * deployment.h (class AssemblyPart): Set the default value of
11714         AssemblyPart::SourceProperty to "".
11716         * mediaelement.h: Set the default value of CurrentState to Closed.
11718         * mediaelement.cpp (MediaElement::MediaElement): Don't need to set
11719         Markers or Attributes properties, these are autocreated.
11721 2009-02-17  Alan McGovern  <amcgovern@novell.com>
11723         * animation.cpp: Missed out on a "!" when changing from
11724           GetIsChild to GetIsRootStoryboard
11726 2009-02-17  Alan McGovern  <amcgovern@novell.com>
11728         * cbinding.h:
11729         * cbinding.cpp: Regenerated
11731         * animation.h:
11732         * animation.cpp: Add *WithError functions so that storyboards
11733           can throw the right exceptions when they are not the root
11734           Storyboard.
11736 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11738         * mediaelement.cpp: Add some null checks.
11740 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11742         * mediaelement.h:
11743         * mediaelement.cpp: Move bitfields into our flags field.
11744           Remove allow_downloads and related methods, no longer used.
11746 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11748         * mediaelement.h:
11749         * mediaelement.cpp: Remove GetDownloaderPolicy, not used
11750           anymore.
11752 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11754         * pipeline.h:
11755         * playlist.h:
11756         * playlist.cpp:
11757         * pipeline.cpp:
11758         * mediaelement.cpp: Make SetSource (Stream) work again.
11760 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11762         * mp3.h:
11763         * mp3.cpp:
11764         * audio.h:
11765         * audio.cpp:
11766         * audio-alsa.cpp:
11767         * pipeline-ffmpeg.h:
11768         * yuv-converter.cpp:
11769         * pipeline-ffmpeg.cpp: Update according to new pipeline api.
11771         * playlist.h:
11772         * pipeline.h:
11773         * pipeline.cpp:
11774         * playlist.cpp:
11775         * mediaplayer.h:
11776         * mediaelement.h:
11777         * pipeline-asf.h:
11778         * mediaplayer.cpp:
11779         * pipeline-asf.cpp:
11780         * mediaelement.cpp:
11781         * mms-downloader.h:
11782         * mms-downloader.cpp: Rework pipeline to be async to support
11783           MediaStreamSource.
11785         * type.h:
11786         * value.h:
11787         * cbinding.h:
11788         * cbinding.cpp:
11789         * type-generated.cpp:
11790         * dependencyproperty.g.cpp: Regenerated.
11792         * codec-version.h.in: Bump codec abi.
11794         * downloader.cpp: Include uri.h.
11796         * downloader.h: Add accessor for failed_msg.
11798         * enums.h:
11799         * enums.cpp: Rename MediaElementState to MediaState.
11801         * mutex.h: Added, a pthread implementation of a mutex allowing
11802           easy c++ usage.
11804         * template.h: Inlcude xaml.h and add a forward declaration of
11805           XamlContext.
11807         * window.h: Add a forward declaration of MoonWindow.
11809         * src.mdp: Updated.
11811         * dependencyobject.h:
11812         * dependencyobject.cpp: Added EVENTHANDLER macro. Added
11813           support for emititng events from other than the main thread
11814           (by marshalling the event emission to the main thread).
11816 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11818         * deployment.cpp: Use printf instead of g_warning for a
11819           message which is always printed. Makes it less annoying to
11820           break on g_log while debugging.
11822 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11824         * type.h:
11825         * value.h:
11826         * type-generated.cpp: Regenerate.
11828 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11830         * pipeline.h:
11831         * pipeline.cpp:
11832         * mediaelement.h:
11833         * mediaelement.cpp: Remove MediaErrorEventArgs.
11835 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11837         * debug.h: Added LOG_MP3.
11839         * runtime.cpp: Surface ctor: set the surface of the current
11840           deployment to the ourself.
11842 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11844         * runtime.h: Add a VERIFY_MAIN_THREAD sanity macro.
11846         * runtime.cpp: Add support for MOONLIGHT_DEBUG=all.
11848 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11850         * runtime.h:
11851         * runtime.cpp: CreateDownloader: take an EventObject instead
11852           of UIElement.
11854 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11856         * runtime.h:
11857         * runtime.cpp: Add mp3 support to MOONLIGHT_DEBUG.
11859 2009-02-17  Atsushi Enomoto  <atsushi@ximian.com>
11861         * geometry.h, geometry.cpp, dependencyproperty.g.cpp:
11862           Fixed type of ArcSegment::Size from Point to Size.
11864 2009-02-16  Jeffrey Stedfast  <fejj@novell.com>
11866         * text.h: Default TextBlock font size seems to be 11px in SL2 as
11867         opposed to 14.667 in SL1.
11869 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11871         * brush.h:
11872         * media.cpp:
11873         * mediaelement.cpp: Move image_brush_compute_pattern_matrix
11874           from media.cpp/mediaelement.cpp to brush.h to avoid having
11875           two declarations of the same method.
11877 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11879         * brush.cpp: Include mediaplayer.h here.
11881 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11883         * dependencyobject.cpp: Change our g_error into a g_warning.
11884           Reffing an object with refcount = 0 can actually happen now.
11886 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11888         * dependencyobject.cpp: AddTickCallInternal: if we don't have
11889           a surface, get it from the deployment.
11891 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11893         * dependencyobject.cpp: EventObject. unref and null out the
11894           deployment in the dtor instead of in Dispose.
11896 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11898         * dependencyobject.h:
11899         * dependencyobject.cpp: Add
11900           DependencyObject::RemoveAllHandlers.
11902 2009-02-16  Alan McGovern  <amcgovern@novell.com>
11904         * animation.cpp: Remove the calls to ref/unref as they are
11905           unnecessary.
11907 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11909         * libmoon.h: Don't include playlist.h here. Fixes issues with
11910           the plugin when playlist.h includes expat.
11912 2009-02-16  Alan McGovern  <amcgovern@novell.com>
11914         * cbinding.h:
11915         * animation.h:
11916         * cbinding.cpp:
11917         * animation.cpp: Implement the managed side of
11918           Storyboard.GetCurrentState ().
11920 2009-02-16  Alan McGovern  <amcgovern@novell.com>
11922         * type.h:
11923         * type.h.in: The renaming changes in r126921 break the build
11924           if the generator is run because type.h.in didn't contain the
11925           CopyProperties prototype.
11927 2009-02-16  Geoff Norton  <gnorton@novell.com>
11929         * media.cpp:
11930         * downloader.h: Downloaders created in javascript can suffer the
11931         same shared-cache firefox bug, so we need to expose the buffer
11932         to the image layer in case this is the place.
11934 2009-02-14  Jeffrey Stedfast  <fejj@novell.com>
11936         * dependencyobject.cpp (DependencyObject::GetProperties): New
11937         method to get an array of all properties on the object (including
11938         currently attached properties).
11940         * type.cpp (Type::CopyProperties): Renamed from GetProperties()
11941         and changed what it does a bit. Now takes an 'inherited' argument
11942         and returns a GHashTable of properties keyed by GetHashKey().
11944 2009-02-14  Chris Toshok  <toshok@ximian.com>
11946         * dependencyobject.h, dependencyobject.cpp: rename
11947         "current_values" as "local_values".  current_values now means
11948         "local values + autocreated values".  At this point, add
11949         GetCurrentValues which returns a new hashtable containing a union
11950         of both sets, and add FreeCurrentValues to destroy it.
11952         * provider.cpp (LocalPropertyValueProvider::GetPropertyValue): use
11953         DependencyObject::GetLocalValues instead of GetCurrentValues.
11955 2009-02-13  Chris Toshok  <toshok@ximian.com>
11957         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
11958         fix a number of logical errors.  gets inlines properly inheriting
11959         text properties.
11961 2009-02-14  Jeffrey Stedfast  <fejj@novell.com>
11963         * type.cpp (Type::GetProperties): New method to get an array of
11964         DependencyProperties for a Type.
11966 2009-02-13  Geoff Norton  <gnorton@novell.com>
11968         * playlist.cpp: Check these string with g_ascii_str* as well.
11969         Also these should be case-insensitive checks.
11971 2009-02-13  Jeffrey Stedfast  <fejj@novell.com>
11973         * mediaelement.h (class MediaElement): NaturalVideoWidth/Height
11974         should be ints, not doubles.
11976         * text.h (class Glyphs): Set the DefaultValues for
11977         UnicodeStringProperty, IndicesProperty, and FontUriProperty to "".
11979         * bitmapimage.cpp (BitmapImage::BitmapImage): Don't call
11980         SetUriSource("") (it's already the DefaultValue).
11982 2009-02-13  Geoff Norton  <gnorton@novell.com>
11984         * media.cpp|h: Ensure we're comparing magics with unsigned values, and 
11985         fix a logic bug that prevented us from proplery writing progressive pixbuf
11986         loaders.
11988 2009-02-13  Jeffrey Stedfast  <fejj@novell.com>
11990         * multiscaleimage.h (class MultiScaleImage): Rename the
11991         SubImageCollectionProperty to SubImagesProperty to match
11992         Silverlight.
11994 2009-02-13  Geoff Norton  <gnorton@novell.com>
11996         * runtime.cpp|h: Add a new overload to control the gdk_pixbuf_loader
11997         behaviour.
11998         * media.cpp|h: Ensure that we only load jpeg/png images like microsoft
11999         does when running in the browser profile.
12001 2009-02-13  Alan McGovern  <amcgovern@novell.com>
12003         * value.cpp: Use the GPOINTER_TO_INT macro as suggested rather
12004           than casting to a 64bit then 32bit value.
12006 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
12008         * multiscaleimage.h|cpp: drop the friend here too
12010 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
12012         * tilesource.h: drop the friends
12014 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
12016         * Makefile.am: remove deepzoomimagetilesource.h from the
12017         include_headers. no one should code against it.
12019 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
12021         * multiscaleimage.cpp:
12022         * deepzoomimagetilesource.h|cpp: dzits no longer have any friends
12024 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
12026         * multiscaleimage.cpp: timing macros
12028 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
12030         * multiscaleimage.cpp: embed the rendering in push_group/pop_group then
12031         paint at once to avoid flickering.
12033 2009-02-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12035         * downloader.cpp: Sprinkle a few SetCurrentDeployments. Fixes
12036           a crash when downloading mms streams (due to not having
12037           deployment set).
12039 2009-02-12  Geoff Norton  <gnorton@novell.com>
12041         * playlist.cpp: Ensure that we don't poke around in random memory
12042         if we have an invalid entry in our parser.
12044 2009-02-12  Alan McGovern  <amcgovern@novell.com>
12046         * value.cpp: Add an assert in case the gchandle value is out
12047           of range.
12049 2009-02-12  Alan McGovern  <amcgovern@novell.com>
12051         * value.cpp: Fix compile error on x64 when casting a void* to
12052           a gint32.
12054 2009-02-12  Alan McGovern  <amcgovern@novell.com>
12056         * value.cpp: Managed objects are stored in native as
12057           GCHandles. Use the mono api to get the target of that
12058           GCHandle so that they can be compared correctly in
12059           value.cpp. Remove hack in ItemCollection.cs which worked
12060           around this bug.
12062 2009-02-12  Stephane Delcroix  <sdelcroix@novell.com>
12064         * multiscalesubimage.h|cpp: add id, n as ctor params, make the ctor
12065         public, drop a friend.
12066         * deepzoomimagetilesource.h|cpp: EndElement is now a class method, drop
12067         a friend.
12069 2009-02-12  Stephane Delcroix  <sdelcroix@novell.com>
12071         * deepzoomtilesource.cpp: some g_ascii love
12073 2009-02-11  Chris Toshok  <toshok@ximian.com>
12075         * text.h: Inline's fontsize default value is 11.  looks like
12076         textblock is the only case where it differs.
12078 2009-02-11  Jeffrey Stedfast  <fejj@novell.com>
12080         * eventargs.h (MouseEventArgs::GetEvent): Expose the raw GdkEvent.
12082         * textbox.cpp (TextBoxView::ConnectBlinkTimeout): Get the cursor
12083         blink timeout from the GtkSettings.
12084         (TextBox::OnKeyDown): Don't bother printing the buffer anymore,
12085         things seem to have been debugged enough now.
12086         (TextBox::CursorLineBegin): New convenience method.
12087         (TextBox::CursorLineEnd): Same.
12088         (TextBox::OnMouseLeftButtonDown): Implemented double and
12089         triple-click. Capture mouse if single-click.
12090         (TextBox::OnMouseLeftButtonUp): Release mouse capture.
12091         (TextBox::CursorPrevWord): Don't allow ourselves to go beyond the
12092         beginning of the line.
12094 2009-02-11  Alan McGovern  <amcgovern@novell.com>
12096         * text.h:
12097         * shape.h:
12098         * media.h:
12099         * panel.h:
12100         * text.cpp:
12101         * border.h:
12102         * panel.cpp:
12103         * shape.cpp:
12104         * textbox.h:
12105         * media.cpp:
12106         * border.cpp:
12107         * textbox.cpp:
12108         * uielement.h:
12109         * uielement.cpp:
12110         * mediaelement.h:
12111         * mediaelement.cpp:
12112         * multiscaleimage.h:
12113         * multiscaleimage.cpp: Switch FindElementsInHostCoordinates to
12114           use the ::Render codepaths instead of it's own custom
12115           codepath. Added an extra parameter to ::Render () to specify
12116           whether or not the paths appended to the cairo_t should be
12117           filled/stroked/clipped. This allows a whole bunch of NUnit
12118           tests to pass.
12120         * usercontrol.cpp:
12121         * frameworkelement.cpp: Add an extra parameter to ::Render ()
12122           to specify whether or not the paths appended to the cairo_t
12123           should be filled/stroked/clipped so it can be shared with
12124           the managed hittesting.
12125         Switch FindElementsInHostCoordinates to use the ::Render
12126           codepaths instead of it's own custom codepath. This allows a
12127           whole bunch of NUnit tests to pass.
12129 2009-02-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12131         * grid.h:
12132         * text.h:
12133         * clock.h:
12134         * panel.h:
12135         * shape.h:
12136         * style.h:
12137         * media.h:
12138         * popup.h:
12139         * brush.h:
12140         * canvas.h:
12141         * border.h:
12142         * stylus.h:
12143         * control.h:
12144         * trigger.h:
12145         * textbox.h:
12146         * geometry.h:
12147         * template.h:
12148         * namescope.h:
12149         * uielement.h:
12150         * animation.h:
12151         * transform.h:
12152         * collection.h:
12153         * downloader.h:
12154         * animation2.h:
12155         * deployment.h:
12156         * bitmapimage.h:
12157         * application.h:
12158         * usercontrol.h:
12159         * mediaelement.h:
12160         * contentcontrol.h:
12161         * multiscaleimage.h:
12162         * frameworkelement.h:
12163         * dependencyobject.h:
12164         * multiscalesubimage.h:
12165         * dependencyproperty.g.cpp:
12166         * deepzoomimagetilesource.h: Make DP backing fields const.
12168 2009-02-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12170         * grid.cpp:
12171         * text.cpp:
12172         * panel.cpp:
12173         * media.cpp:
12174         * shape.cpp:
12175         * popup.cpp:
12176         * brush.cpp:
12177         * border.cpp:
12178         * canvas.cpp:
12179         * stylus.cpp:
12180         * control.cpp:
12181         * textbox.cpp:
12182         * geometry.cpp:
12183         * uielement.cpp:
12184         * transform.cpp:
12185         * usercontrol.cpp:
12186         * bitmapimage.cpp:
12187         * mediaelement.cpp:
12188         * contentcontrol.cpp:
12189         * dependencyobject.h:
12190         * multiscaleimage.cpp:
12191         * dependencyobject.cpp:
12192         * frameworkelement.cpp:
12193         * deepzoomimagetilesource.cpp: PropertyChangedEventArgs: make
12194           dp and id fields private and add accessors.
12196 2009-02-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12198         * type.h:
12199         * grid.h:
12200         * text.h:
12201         * shape.h:
12202         * style.h:
12203         * clock.h:
12204         * brush.h:
12205         * media.h:
12206         * panel.h:
12207         * popup.h:
12208         * grid.cpp:
12209         * canvas.h:
12210         * xaml.cpp:
12211         * type.cpp:
12212         * border.h:
12213         * stylus.h:
12214         * text.cpp:
12215         * media.cpp:
12216         * type.h.in:
12217         * textbox.h:
12218         * shape.cpp:
12219         * panel.cpp:
12220         * trigger.h:
12221         * brush.cpp:
12222         * control.h:
12223         * template.h:
12224         * geometry.h:
12225         * stylus.cpp:
12226         * canvas.cpp:
12227         * border.cpp:
12228         * namescope.h:
12229         * uielement.h:
12230         * control.cpp:
12231         * animation.h:
12232         * textbox.cpp:
12233         * transform.h:
12234         * animation2.h:
12235         * collection.h:
12236         * provider.cpp:
12237         * geometry.cpp:
12238         * downloader.h:
12239         * deployment.h:
12240         * application.h:
12241         * transform.cpp:
12242         * bitmapimage.h:
12243         * usercontrol.h:
12244         * uielement.cpp:
12245         * animation.cpp:
12246         * mediaelement.h:
12247         * usercontrol.cpp:
12248         * mediaelement.cpp:
12249         * contentcontrol.h:
12250         * multiscaleimage.h:
12251         * contentcontrol.cpp:
12252         * frameworkelement.h:
12253         * dependencyobject.h:
12254         * multiscaleimage.cpp:
12255         * dependencyproperty.h:
12256         * multiscalesubimage.h:
12257         * frameworkelement.cpp:
12258         * dependencyobject.cpp:
12259         * dependencyproperty.cpp:
12260         * dependencyproperty.g.cpp:
12261         * deepzoomimagetilesource.h:
12262         * deepzoomimagetilesource.cpp: Change our static
12263           DependencyProperty backing fields to store an integer id
12264           instead of an instance to a DependencyProperty. This way we
12265           can have true per-deployment dependency properties.
12267 2009-02-11  Alan McGovern  <amcgovern@novell.com>
12269         * shape.cpp:
12270         * panel.cpp:
12271         * collection.h:
12272         * usercontrol.h:
12273         * usercontrol.cpp:
12274         * frameworkelement.cpp: Commit some more updates to the
12275           managed hittesting.
12277 2009-02-10  Jeffrey Stedfast  <fejj@novell.com>
12279         * layout.cpp (TextLayout::Layout*Wrap*): Kern between runs. Fixes
12280         xchatitis in TextBox.
12282 2009-02-10  Jeffrey Stedfast  <fejj@novell.com>
12284         * fontfamily.h (struct FontFamily): Implemented != operator.
12286         * text.cpp (Inline::Equals): Fixed the fontfamily check.
12288         * provider.cpp (AutoCreatePropertyValueProvider::SetSurface): Removed.
12290         * dependencyobject.cpp (DependencyObject::Dispose): Fixed to
12291         dispose autocreated values too.
12292         (DependencyObject::RemoveAllListeners): Same here.
12293         (DependencyObject::RegisterAllNamesRootedAt): And here.
12294         (DependencyObject::UnregisterAllNamesRootedAt): Here too.
12296 2009-02-10  Jeffrey Stedfast  <fejj@novell.com>
12298         * panel.cpp (Panel::GetSubtreeObject): Override UIElement's
12299         GetSubtreeObject so that we can auto-create our Children property
12300         and set it if it hasn't already been set.
12302         * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
12303         We need to clear the LocalProvider value as well, if there is
12304         one. Also, don't allow setting a Value* with a null
12305         DependencyObject if it is an autocreate property.
12306         (DependencyObject::ClearValue): Clear the LocalProvider value too.
12307         (DependencyObject::SetSurface): SetSurface on autocreated values too.
12309         * dependencyproperty.cpp (DependencyProperty::DependencyProperty):
12310         Now takes another bool arg to specify whether it is allowed to
12311         autocreate new DP values.
12312         (DependencyProperty::Register): Updated.
12313         (DependencyProperty::RegisterFull): Updated, now also takes an
12314         autocreate arg.
12316         * provider.cpp (AutoCreatePropertyValueProvider): A new provider
12317         which sits below DefaultValue.
12319         * *.cpp (*::ctor): Remove calls to SetValue()
12321         * *.h: Added AutoCreateValue where appropriate.
12323 2009-02-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12325         * color.h: fabs is in math.h.
12327 2009-02-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12329         * list.h:
12330         * list.cpp: Add a simple ArrayList implementation.
12332         * type.h:
12333         * cbinding.h:
12334         * cbinding.cpp:
12335         * type-generated.cpp:
12336         * dependencyproperty.g.cpp: Regenerated.
12338         * dependencyproperty.h:
12339         * dependencyproperty.cpp: RegisterCustom: removed, no longer
12340           used anywhere. RegisterNull: incorporated into
12341           RegisterFull. Register[Full]: take another Types* argument
12342           so that the registration doesn't have to look it up in the
12343           deployment for every call (this way we can later register
12344           dependency properties in the Types ctor). Also move any
12345           logic from the individial Register overloads to
12346           RegisterFull, this way we don't have different logic
12347           depending on the overload.
12349         * type.cpp:
12350         * type.h.in: Keep a list of all properties for all types on
12351           the Types* instance, and remove the custom properties (hash
12352           and list) on the Type* instance, keeping only one hash
12353           table for both native and custom properties.
12355 2009-02-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12357         * brush.h:
12358         * runtime.h:
12359         * window-gtk.h:
12360         * downloader.h:
12361         * usercontrol.h:
12362         * file-downloader.h: Only use G_BEGIN/END_DECLS around c
12363           methods (and in files with no c methods remove completely).
12365 2009-02-10  Jackson Harper  <jackson@ximian.com>
12367         * xaml.h|cpp: New method for getting the key of an element
12368         instance.
12369         - Pass the element instance data for the values to set property
12370         when we have one, otherwise pass NULL.
12372 2009-02-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12374         * dependencyproperty.g.cpp: Temporary fix for > 1 xap per
12375           process: don't check if DPs have been created before
12376           recreating them.
12378 2009-02-10  Alan McGovern  <amcgovern@novell.com>
12380         * border.cpp: Corner rounding is now taken into account when
12381           hittesting a Border
12383 2009-02-10  Fernando Herrera  <fherrera@novell.com>
12385         * value.cpp: Fix GetIsNull call casting in the copy
12386         constructor.
12388 2009-02-09  Chris Toshok  <toshok@ximian.com>
12390         * value.cpp: call SetIsNull everywhere so we can always check
12391         GetIsNull.
12393 2009-02-09  Alan McGovern  <alan.mcgovern@gmail.com>
12395         * border.h:
12396         * shape.cpp:
12397         * border.cpp:
12398         * frameworkelement.cpp: Three more of the NUnit tests are now
12399           passing for FindElementsInHostCoordinates
12401 2009-02-09  Alan McGovern  <alan.mcgovern@gmail.com>
12403         * panel.h:
12404         * shape.h:
12405         * shape.cpp:
12406         * panel.cpp:
12407         * uielement.h:
12408         * frameworkelement.cpp: Commit some more of the hittest code.
12410 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
12412         * type.h.in (class Types): Added a private static field to record
12413         whether or not the static DP's have already been registered.
12415 2009-02-09  Geoff Norton  <gnorton@novell.com>
12417         * deployment.cpp: Support enabling coreclr for moonlight so we
12418         can start dogfooding this.
12420 2009-02-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12422         * deployment.cpp: Remove redundant call to SetObjectType.
12424 2009-02-08  Chris Toshok  <toshok@ximian.com>
12426         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
12427         add inheritance of FrameworkElement::DataContextProperty.
12429         * frameworkelement.[cpp,h]: remove all the databinding stuff from
12430         here - it's all handled in managed code now.
12432         * dependencyproperty.[cpp,h]: add SetPropertyChangedCallback.
12434         * cbinding.[cpp,h]: regen.
12436 2009-02-07  Sebastien Pouliot  <sebastien@ximian.com>
12438         * xaml.cpp: Adjust lookup to find StaticResources defined in 
12439         a ResourceDictionary. re-fix parsing of generic.xaml for the
12440         SL toolkit (unit tests)
12442 2009-02-07  Larry Ewing  <lewing@novell.com>
12444         * border.cpp (Border::ArrangeOverride): 
12445         * usercontrol.cpp (UserControl::ArrangeOverride): Fix padding on
12446         border children.
12448         * grid.cpp (Grid::MeasureOverride): distribute the allocation
12449         across auto dimensions when it makes sense.
12450         
12451 2009-02-07  Larry Ewing  <lewing@novell.com>
12453         * grid.cpp (Grid::MeasureOverride): don't give our whole
12454         allocation to the first column.
12456 2009-02-07  Sebastien Pouliot  <sebastien@ximian.com>
12458         * stylus.cpp: Committed a variation of Geoff patch to fix
12459         the crash when running moon-unit
12461 2009-02-07  Geoff Norton  <gnorton@novell.com>
12463         * cbinding.cpp|h: Regenerate
12464         * deployment.cpp|h: API cleanup
12465         * downloader.cpp|h: Generate some code that doesn't need to be
12466         hand maintained.  Clean up some API to prevent a crash when
12467         unregistering downloaders.
12469 2009-02-07  Geoff Norton  <gnorton@novell.com>
12471         * color.h:
12472         * cornerradius.h:
12473         * point.h:
12474         * rect.h:
12475         * size.h: Account for an epsilon when comparing these structures
12476         to avoid erroneously emitting false results.
12478 2009-02-07  Jeffrey Stedfast  <fejj@novell.com>
12480         * text.cpp (TextBlock::GetTextInternal): Now takes an
12481         InlineCollection argument.
12482         (TextBlock::OnPropertyChanged): Pass args->new_value to
12483         GetTextInternal() so that we avoid unnecesary recursion in the
12484         case that we're being called as a result of a GetValue() of the
12485         InlinesProperty.
12486         (TextBlock::OnCollectionChanged): Updated.
12487         (TextBlock::OnCollectionItemChanged): Updated.
12489 2009-02-06  Larry Ewing  <lewing@novell.com>
12491         * shape.cpp (Shape::ArrangeOverride): take alignment into account
12492         when Stretch == None.
12494         * media.cpp (Image::ArrangeOverride):
12495         * mediaelement.cpp (MediaElement::ArrangeOverride): take alignment
12496         into account when Stretch == None.
12498         * grid.cpp, grid.h: keep track of the automagical w/h make handle
12499         it properly when alignment is not stretch.  Fixes leaf control
12500         placement on "the moment".
12502 2009-02-06  Larry Ewing  <lewing@novell.com>
12504         * type.cpp:
12505         * playlist.cpp:
12506         * enums.cpp (enum_from_str): use g_ascii_strcasecmp.
12508         * deepzoomimagetilesource.cpp (start_element): use g_ascii_strtod.
12510         * xaml.cpp (value_from_str): replace use g_ascii_strcasecmp
12511         everywhere.
12513 2009-02-06  Larry Ewing  <lewing@novell.com>
12515         * control.cpp (Control::Control): remove bad setting of
12516         foreground.
12518 2009-02-06  Jackson Harper  <jackson@ximian.com>
12520         * xaml.cpp|h: Add a new method for retrieving the control template
12521         parent of a xaml element instance (called from unmanaged).
12522         - quick hack to force binding expressions to be parsed in managed.
12524 2009-02-06  Jeffrey Stedfast  <fejj@novell.com>
12526         * keyboard.cpp (Keyboard::MapKeyValToKey): Map alternative names
12527         for *+/- and . to our Key enum needed for the DLR Console app.
12529 2009-02-06  Jeffrey Stedfast  <fejj@novell.com>
12531         * Reverted previous commit as I goofed the unit test on
12532         Windows. Once I fixed it, the logic I worked so hard to achieve
12533         wasn't correct :(
12535 2009-02-06  Larry Ewing  <lewing@novell.com>
12537         * frameworkelement.cpp (FrameworkElement::Arrange): don't align if
12538         we are the toplevel.
12540 2009-02-06  Jeffrey Stedfast  <fejj@novell.com>
12542         See InkPresenter's ClearValue unit test
12544         1. Calling SetValue() in ctors was gross.
12545         2. it was wrong because ReadLocalValue() on Silverlight got "Unset"
12546         3. it broke things if ClearValue was used and/or if the properties
12547            were set to null
12549         * dependencyobject.cpp (DependencyObject::GetDefaultValue): New
12550         method to query for a default property value as used by the
12551         PropertyValueProviders.
12552         (DependencyObject::ReadLocalValue): Read the value directly from
12553         the hash table.
12555         * provider.cpp (LocalValuePropertyValueProvider::GetPropertyValue):
12556         Call DependencyObject::GetDefaultValue() to try and get a default
12557         value. If successful, set it on the current_values hash table.
12559         * *.cpp: Fixed all classes that had ctors that called SetValue()
12560         to instead override GetDefaultValue().
12562 2009-02-06  Chris Toshok  <toshok@ximian.com>
12564         * uielement.cpp (UIElement::SetSurface): if we have a subtree
12565         object (which is a UIElement), set its surface too.  Fixes the
12566         ContentPresenter textblocks in ItemsControl.
12568 2009-02-06  Stephane Delcroix  <sdelcroix@novell.com>
12570         * deepzoomimagetilesource.cpp: set subimage width/height
12571         * multiscaleimage.cpp: do not download subimages .xml, we can work
12572         without them
12574 2009-02-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12576         * cbinding.h:
12577         * cbinding.cpp: Regenerated.
12579         * dependencyobject.h:
12580         * dependencyobject.cpp:
12581           DependencyObject::ProviderValueChanged: Add a MoonError
12582           argument to be able to marshal managed exceptions through
12583           native code. ClearValue: Add a MoonError argument to match
12584           the signature of ProviderValueChanged.
12586         * dependencyproperty.h: Make NativePropertyChangedHandler
12587           take a MoonError argument to be able to marshal managed
12588           exceptions through native code.
12590         * error.h:
12591         * error.cpp: Add a gchandle_ptr field to hold managed
12592           exceptions.
12594         * frameworkelement.h:
12595         * frameworkelement.cpp: Update according to ClearValue
12596           signature changes.
12598         * provider.cpp: Update according to ProviderValueChanged
12599           signature changes.
12601 2009-02-06  Stephane Delcroix  <sdelcroix@novell.com>
12603         * morton-layout-table.inc: pre-computed table for Morton Layout 
12604         indices.
12606 2009-02-06  Stephane Delcroix  <sdelcroix@novell.com>
12608         * multiscaleimage.cpp: fix the most annoying rendering issue for
12609         subimages.
12611 2009-02-06  Jackson Harper  <jackson@ximian.com>
12613         * xaml.cpp: Store a list of resource dictionaries on the xaml
12614         context, so control templates can use these to lookup resources.
12615         Also go back to using the XamlElementInstance's for walking up the
12616         tree, this allows us to parse before parenting items.
12618 2009-02-05  Geoff Norton  <gnorton@novell.com>
12620         * deepzoomimagetilesource.cpp|h: We don't want to download all of
12621         the sub images at creation time, so allow them to defer, otherwise
12622         we might fire off hundreds of downloaders at once.
12624 2009-02-05  Jackson Harper  <jackson@ximian.com>
12626         * xaml.cpp: Use the case sensitive Type::Find (fixes parsing
12627         Double).
12629 2009-02-05  Jeffrey Stedfast  <fejj@novell.com>
12631         * dependencyobject.cpp (DependencyObject::ReadLocalValue): Renamed
12632         to be more consistent with the managed API.
12634         * frameworkelement.cpp (FrameworkElement::ReadLocalValue): Same.
12636 2009-02-05  Geoff Norton  <gnorton@novell.com>
12638         * multiscaleimage.cpp|h: We must emit this event on the main thread
12640 2009-02-05  Alan McGovern  <alan.mcgovern@gmail.com>
12642         * panel.h:
12643         * shape.h:
12644         * border.h:
12645         * cbinding.h:
12646         * uielement.h:
12647         * cbinding.cpp:
12648         * uielement.cpp:
12649         * frameworkelement.h:
12650         * frameworkelement.cpp: Create an unmanaged version of
12651           FindElementsInHostCoordinates
12653 2009-02-05  Geoff Norton  <gnorton@novell.com>
12655         * cbinding.cpp|h:
12656         * dependencyproperty.g.cpp:
12657         * type-generated.cpp: Regenerate
12658         * collection.h: Generate bindings for the multiscalesubimage collection.
12659         * deepzoomimagetilesource.cpp: Trigger a download when we get our URI 
12660         * multiscaleimage.cpp|h: Hide SubImages in a internal property until
12661         we can marshal collections as ReadOnly into managed automatically.
12662         Also emit the ImageOpenSucceeded event when we're done parsing.
12664 2009-02-05  Jackson Harper  <jackson@ximian.com>
12666         * type.cpp|h|h.in: Type:Find does need to be insensitive for JS.
12667         So I've added an ignore_case flag that the parser can use.
12669 2009-02-05  Jackson Harper  <jackson@ximian.com>
12671         * type.cpp: As far as I can tell, Type::Find does not need to be
12672         case sensitive. This fixes "Double" being found when we register
12673         it as "double".
12675 2009-02-05  Jeffrey Stedfast  <fejj@novell.com>
12677         Save some additional state for an optimization I'd like to do.
12679         * layout.cpp (TextLayout::LayoutWrapWithOverflow): Keep track of
12680         character offset for each TextLine.
12681         (TextLayout::LayoutNoWrap): Same.
12682         (TextLayout::LayoutWrap): Here too.
12684 2009-02-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12686         * deployment.cpp: Fix typo.
12688 2009-02-05  Alan McGovern  <alan.mcgovern@gmail.com>
12690         * frameworkelement.cpp: Reverting r125649 as it's incorrect.
12692 2009-02-05  Jeffrey Stedfast  <fejj@novell.com>
12694         * textbox.cpp (TextBox::OnMouseLeftButtonDown): Don't use
12695         ClearSelection() because we'll be syncing the SelectedText in
12696         SyncAndEmit() anyway.
12698         * layout.cpp (TextLayout::Layout*Wrap*): Oops, fix outer loop to
12699         exit when inptr >= inend rather than when *inptr == 0.
12700         (TextLayout::GetCursorFromXY): Slightly improved.
12702 2009-02-05  Sebastien Pouliot  <sebastien@ximian.com> 
12704         * dependencyobject.cpp|h: Let GetLogicalParent optionally report
12705         a collection for it's parent. This is needed in some cases like
12706         a Style inside a ResourceDictionary that defines "{StaticResource..."
12707         that other Style needs (e.g. SL toolkit unit tests)
12708         * xaml.cpp: Adjust lookup to find StaticResources defined in 
12709         a ResourceDictionary
12711 2009-02-05  Stephane Delcroix  <sdelcroix@novell.com>
12713         * multiscaleimage.cpp: Renders subimages
12715 2009-02-05  Jeffrey Stedfast  <fejj@novell.com>
12717         Memory Optimization:
12719         * textbox.cpp (append_runs): Updated. Also fixed a bug which would
12720         sometimes append empty TextRuns to the list.
12722         * text.cpp (TextBlock::Layout): Updated. No longer need to use the
12723         retarded TextRun linebreak ctor.
12725         * layout.cpp (TextRun): Changed TextRuns a bit, all members are
12726         now private but accessors have been added to get the values. Get
12727         rid of the crlf field and ctor params. We also no longer "strdup"
12728         for the ucs4 ctor since TextBox is the only consumer of that API
12729         and it is not constructed using a temp buffer.
12730         (TextSegment): Updated a bit for TextRun changes.
12731         (TextLayout): Updated for TextRun changes.
12733 2009-02-05  Sebastien Pouliot  <sebastien@ximian.com> 
12735         * style.cpp|h: Remove "style-hack" from SetterBaseCollection 
12736         since that collection has no need to know about the style itself.
12737         Simplify the API a bit.
12738         * xaml.cpp: Introduce an hack for SetterBase tp workaround the 
12739         fact that the current parser adds elements to the collections
12740         before setting their properties (and a SetterBase would seal
12741         itself when added to a collection).
12743 2009-02-05  Jb Evain  <jbevain@novell.com>
12745         * propertypath.h: new type.
12746         * value.h.in, value.cpp: make Value deal with PROPERTYPATH.
12747         * xaml.cpp (value_from_str): parse Kind::PROPERTYPATH.
12748         * animation.h: change type of Storyboard.TargetPropertyProperty
12749         from string to PropertyPath.
12750         * animation.cpp: update accordingly.
12751         * dependecyproperty.h (resolve_property_path): now takes a PropertyPath.
12752         * dependecyproperty.cpp: update accordingly.
12753         * value.h, type-generated.cpp, type.h, dependecyproperty.h.cpp: regen.
12755 2009-02-05  Jackson Harper  <jackson@ximian.com>
12757         * xaml.cpp|h: Use the kind for getting content property names.
12759 2009-02-04  Chris Toshok  <toshok@ximian.com>
12761         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
12762         fix property inheritance to walk back up the tree (instead of just
12763         looking at the direct parent.)  Also, we can't use the parent's
12764         kind directly, we have to use parent->Is().
12766 2009-02-04  Larry Ewing  <lewing@novell.com>
12768         * grid.cpp (Grid::ArrangeOverride): make the resizing logic only
12769         apply when the final value is not equal to the measured value.
12771 2009-02-04  Jackson Harper  <jackson@ximian.com>
12773         * xaml.cpp|h: When setting properties pass in the
12774         XamlElementInstance.
12775         - Function so named items can be looked up from managed.
12776         * cbinding.cpp|h: regen.
12778 2009-02-04  Aaron Bockover  <abockover@novell.com>
12780         * color.cpp: Use double_garray_from_str to parse sc# color strings, fixing
12781         bug where the blue channel was dropped in sc#r,g,b
12783 2009-02-04  Sebastien Pouliot  <sebastien@ximian.com>
12785         * collection.cpp|h: Override AddWithError on UIElementCollection
12786         to return an error on duplicate elements
12788 2009-02-04  Jeffrey Stedfast  <fejj@novell.com>
12790         * color.cpp (read_next_double): Use g_ascii_strtod().
12791         (color_from_str): Use g_ascii_strcasecmp().
12793         * textbox.cpp (TextBox::OnKeyDown): Implemented Cut/Copy/Paste.
12795 2009-02-04  Larry Ewing  <lewing@novell.com>
12797         * grid.cpp (Grid::ArrangeOverride): thanks to the listbox test
12798         case we implement star columns in a matching manor.
12800         * mediaelement.cpp (MediaElement::Render): disable mediaelement
12801         pixel snapping for now, we'll deal with this at a higher level.
12803 2009-02-04  Chris Toshok  <toshok@ximian.com>
12805         * type.cpp (type_is_dependency_object): no need to c&p the entire
12806         method, just call Type::IsSubclassOf with the kinds.
12808 2009-02-04  Jeffrey Stedfast  <fejj@novell.com>
12810         * textbox.cpp (TextBoxView::ConnectBlinkTimeout): Use
12811         TimeManager's timeout functions instead of calling g_timeout_add()
12812         ourselves.
12814 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
12816         * multiscaleimage.cpp: prepare the rendering for subimages.
12818 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
12820         * multiscalesubimage.h|cpp: GetViewportHeight () utility method.
12822 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
12824         * deepzoomimagetilesource.cpp: set the aspect ratio for subimages on
12825         subimage creation.
12827 2009-02-04  Jeffrey Stedfast  <fejj@novell.com>
12829         * textbox.cpp (TextBox::TextBox): Initialize our 'selecting' state
12830         to false. Get rid of maxlen state, it's not needed.
12831         (TextBox::KeyPressUnichar): Use GetMaxLength() instead of a maxlen
12832         class member variable.
12833         (TextBox::SyncAndEmit): Renamed from KeyPressThaw() since it's
12834         useful for mouse events too.
12835         (TextBox::KeyPressFreeze): Removed.
12836         (TextBox::OnMouseLeftButtonDown): Set our 'selecting' state to
12837         true, get the cursor from the x,y coordinates and update the
12838         selection to be zero-length starting at the cursor position.
12839         (TextBox::OnMouseLeftButtonUp): Set 'selecting' state to false.
12840         (TextBox::OnMouseMove): If we are in the 'selecting' state,
12841         translate current mouse coordinates into a new cursor position and
12842         update selection start/length.
12843         (TextBoxView::GetCursorFromXY): New helper method.
12844         (TextBoxView::TextBoxView): Set our cursor to be the IBeam.
12846         * layout.cpp (TextLayout::GetCursorFromXY): Implemented.
12848 2009-02-04  Jackson Harper  <jackson@ximian.com>
12850         * template.cpp|h: Add a function for creating xaml template
12851         bindings.
12853 2009-02-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12855         * audio.cpp:
12856         * audio-pulse.cpp: More SetCurrentDeployments.
12858 2009-02-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12860         * audio.cpp: One more SetCurrentDeployment.
12862 2009-02-04  Alan McGovern  <amcgovern@novell.com>
12864         * frameworkelement.cpp: Fixed hit tests which didn't do what
12865           i meant them to do and added new tests. Panels should not
12866           swallow a click when hit testing, so we should never abort
12867           checking children.
12869 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
12871         * multiscalesubimage.cpp: fix the source uri in the subimage
12872         ctor. the source for the subimage is now parsed.
12874 2009-02-04  Alan McGovern  <amcgovern@novell.com>
12876         * type.h:
12877         * value.h:
12878         * cbinding.h:
12879         * uielement.h:
12880         * cbinding.cpp:
12881         * collection.h:
12882         * uielement.cpp:
12883         * collection.cpp:
12884         * type-generated.cpp: Hook up the managed hittesting code to
12885           the native hit testing code.
12887 2009-02-04  Stephane Delcroix <sdelcroix@novell.com>
12889         * multiscaleimage.cpp: iterate the collection and not the GList
12890         anymore.
12892 2009-02-04  Stephane Delcroix <sdelcroix@novell.com>
12894         * multiscalesubimage.h|cpp:
12895         * deepzoomimagetilesource.cpp: add a uri parameter to MSISI ctor
12896         so we can compute the UriSource based on parent's one
12898 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
12900         * collection.cpp: MultiScaleSubImageCollection ctor
12902 2009-02-03  Larry Ewing  <lewing@novell.com>
12904         * dirty.cpp (Surface::UpdateLayout): hack some sizing logic into
12905         the toplevel logic.
12907         * usercontrol.cpp: fix missing modification.
12909 2009-02-03  Larry Ewing  <lewing@novell.com>
12911         * frameworkelement.cpp (FrameworkElement::Arrange): shrink the
12912         clip by the margin.
12914 2009-02-03  Geoff Norton  <gnorton@novell.com>
12916         * frameworkelement.cpp (Arrange): If we have a negative margin,
12917         it moves our layout slot, instead of clipping it, as such we need
12918         to adjust the clipping path accordingly in these cases to accomodate
12919         this.
12921 2009-02-03  Jeffrey Stedfast  <fejj@novell.com>
12923         * textbox.cpp (TextBoxView::ResetCursorBlink): We don't care about
12924         ReadOnly status afterall.
12925         (TextBoxView::OnModelChanged): Same.
12926         (TextBox::OnKeyDown): If we are ReadOnly, don't allow editing of
12927         the buffer.
12929         * control.h: Control's default FontSize is 11, not 14.666 like
12930         TextBlock's.
12932 2009-02-03  Larry Ewing  <lewing@novell.com>
12934         * shape.cpp (Shape::ArrangeOverride): invalidate the path cache
12935         when we arrange.  Fixes the rectangle bg on pdc.
12937 2009-02-03  Jeffrey Stedfast  <fejj@novell.com>
12939         * textbox.cpp (TextBox::OnPropertyChanged): Set the default
12940         SelectionBackground and SelectionForeground brushes if
12941         SelectionLength gets to be >0.
12942         (TextBox::TextBox): Don't set them here. Initialize a new state
12943         variable, cursor_column to 0.
12944         (TextBox::CursorDown): Update cursor_column and fix some
12945         inconsistencies with Microsoft's logic. Renamed and c++'ified from
12946         move_down().
12947         (TextBox::CursorUp): Same idea here.
12948         (TextBox::CursorNextWord): Renamed/c++'ified from next_word().
12949         (TextBox::CursorPrevWord): Same idea.
12950         (TextBox::KeyPress*Down): Save/Restore cursor_column state after
12951         updating SelectionStart/Length properties.
12952         (TextBox::KeyPress*Up): Same.
12953         (TextBox::KeyPressHome): We can set cursor_column to 0 here.
12954         (TextBox::OnPropertyChanged): If Text, SelectedText,
12955         SelectionStart or SelectionLength chanegs, we need to reset
12956         cursor_column to -1 (aka "unknown").
12958 2009-02-03  Larry Ewing  <lewing@novell.com>
12960         * grid.cpp (Grid::ArrangeOverride): remove a bunch of the old code
12961         and apply the finalsize adjustments to the existing values.
12962         Handle the empty row/col case specially.
12964         * usercontrol.cpp: revert accicdental diabling (for now).
12966 2009-02-03  Jeffrey Stedfast  <fejj@novell.com>
12968         * textbox.cpp (TextBuffer::Replace): Do the right thing if length
12969         goes beyond the end of the buffer.
12970         (TextBuffer::Cut): Same.
12972         * layout.cpp (RenderSegment): Extend the selection line
12973         Silverlight's TextBox does if the selection crosses over the CRLF
12974         sequence at the end of a line.
12976 2009-02-03  Larry Ewing  <lewing@novell.com>
12978         * border.cpp:
12979         * usercontrol.cpp:
12980         * frameworkelement.cpp: handle the specified size case as well.
12982 2009-02-03  Jb Evain  <jbevain@novell.com>
12984         * xaml.cpp (PrimitiveNamespace::FindElement): correctly retrieve
12985         primitive types.
12987 2009-02-03  Jeffrey Stedfast  <fejj@novell.com>
12989         * textbox.cpp: Rewrote selection logic and vastly simplified
12990         cursor movement along the way.
12992 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12994         * type.h:
12995         * type.cpp:
12996         * type.h.in:
12997         * dependencyproperty.h:
12998         * dependencyproperty.cpp: Remove the need for
12999           DependencyProperty to be a friend class of Type.
13001 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
13003         * multiscalesubimage.h: DefaultValues for DPs.
13005 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
13007         * deepzoomimagetilesource.h|cpp:
13008         * multiscaleimage.h|cpp:
13009         * multiscalesubimage.h|cpp: fill the subimages on MSI
13011 2009-02-03  Sebastien Pouliot  <sebastien@ximian.com>
13013         * deployment.h: Don't use 'volatile' before glib 2.10 (e.g. sled10)
13014         because that was not part of the API before then (and it breaks
13015         compilation).
13017 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13019         * type.h:
13020         * type.cpp:
13021         * type.h.in: Type: don't make Types a friend class of Type.
13023 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13025         * animation.h:
13026         * animation.cpp: Remove animation_init, it's empty.
13028         * audio.cpp: We need to set the current deployment on the
13029           audio thread (but without touching mono at all).
13031         * cbinding.h:
13032         * cbinding.cpp:
13033         * type-generated.cpp:
13034         * dependencyproperty.g.cpp: Regenerated.
13036         * dependencyobject.h:
13037         * dependencyobject.cpp: Move object accounting and delayed
13038           unref handling to Deployment.
13040         * dependencyproperty.h: Remove DependencyProperty::Shutdown,
13041           it's empty.
13043         * deployment.cpp: Add a SetCurrent overload which allows us
13044           to specify whether the current appdomain should be updated
13045           too. GetCurrent: Never access mono if the current domain is
13046           NULL. Move object tracking and delayed unrefs here.
13048         * deployment.h: Add a SetCurrent overload which allows us to
13049           specify whether the current appdomain should be updated
13050           too. Move object tracking and delayed unrefs here.
13052         * runtime.cpp: Move object tracking reports to Deployment.
13053           Remove unnecessary static init and shutdown methods.
13055         * type.h:
13056         * type.cpp:
13057         * type.h.in: Completely remove all static Type
13058           initialization, we now rely on the Types* on the current
13059           Deployment.
13061 2009-02-03  Sebastien Pouliot  <sebastien@ximian.com>
13063         * style.cpp: Remove extra logic and comment the main "bad" hack
13064         still required not to cause regressions. Affected test cases
13065         will marked as known issues until the XAML parser issue (which
13066         is adding elements to collections before setting their properties)
13067         is fixed.
13069 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13071         * window-gtk.cpp: Add missing Deployment::SetCurrent calls.
13073 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13075         * namescope.cpp: NamScope::ObjectDestroyedEvent: upon object
13076           destruction the name might not be available anymore, so
13077           loop over the entire hash tables looking for the object to
13078           remove instead of trying to lookup with a null key. Fixes a
13079           crash while running moon-unit.
13081 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13083         * xaml.cpp: Use property accessors on Type instead of
13084           accessing the fields.
13086 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
13088         * debug.h:
13089         * runtime.h|runtime.cpp: new LOG_MSI macro.
13091 2009-02-03  Fernando Herrera  <fherrera@novell.com>
13093         * runtime.cpp:
13094         * runtime.h: Move moonlight_flags and runtime_flags to 64bits
13095         as we reached the 32bits limit for debug.
13097 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
13099         * deepzoomimagetilesource.h|cpp: Parse Collections.
13101 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
13103         * deepzoomimagetilesource.h|cpp: data structures to parse
13104         DZ images with subimages. Move the common parts of both ctors
13105         in Init ()
13107 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
13109         * tilesource.h:
13110         * deepzoomimagetilesource.h|cpp: fix some compilation warning, move
13111         some methods and fields to the private section.
13113 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
13115         * multiscalesubimage.h|cpp: re-use the tilesource to parse subimages
13117 2009-02-02  Chris Toshok  <toshok@ximian.com>
13119         * popup.h, popup.cpp: this inherits from FrameworkElement, not
13120         DependencyObject.
13122         * dependencyobject.cpp (dispose_value): this method is doing *way*
13123         too much.  we can't just blindly dispose of our values.  they
13124         could be shared across multiple elements.  don't even unref them
13125         here, as deleting the value does that.
13127         * type-generated.cpp: regen.
13129 2009-02-02  Larry Ewing  <lewing@novell.com>
13131         * mediaelement.cpp:
13132         * media.cpp (Image::UpdateSize): update horrible hacks that are
13133         used when we are part of canvas until they can be removed
13134         completely
13136 2009-02-02  Larry Ewing  <lewing@novell.com>
13138         2009-02-02  Chris Toshok  <toshok@ximian.com>
13140         * enums.cpp (keyboard_navigation_mode_map): add
13141         (initialize_enums): add TabNavigation property handling, mapping
13142         to keyboard_navigation_mode_map.
13144 2009-02-02  Geoff Norton  <gnorton@novell.com>
13146         * bitmapimage.h: 
13147         * xaml.cpp: Inject ImageSource underneath BitmapImage so that
13148         custom xaml that attaches a ImageSource can work.  Every
13149         ImageSource is a BitmapImage in SL2
13150         * type-generated.cpp:
13151         * type.h:
13152         * value.h: Regen
13154 2009-02-02  Larry Ewing  <lewing@novell.com>
13156         * border.cpp:
13157         * usercontrol.cpp:
13158         * frameworkelement.cpp (FrameworkElement::ArrangeOverride): only
13159         stretch back out to finalsize in the stretch case.
13161 2009-02-02  Jeffrey Stedfast  <fejj@novell.com>
13163         * layout.cpp (TextRun): 'crlf' is now a short rather than a 2-bit
13164         int because, duh, the range is -2 to 1, not 0 to 3 and so
13165         TextLine::crlf was being set to -2 instead of 2.
13166         (TextLayout::GetCursor): A minor tweak to get things to work if
13167         the cursor is right after the last char which is a \r.
13169         * textbox.cpp (TextBuffer::Cut): Fixed, this was totally broken
13170         before.
13171         (move_down): Need to use a loop when advancing back to the
13172         previous column so we don't go beyond EOL.
13173         (move_up): Same, but more fixes as well.
13175 2009-02-02  Jeffrey Stedfast  <fejj@novell.com>
13177         * textbox.cpp: Moved all event handling back to TextBox since
13178         that's the focusable element.
13180         * runtime.cpp (Surface::HandleMouseEvent): Loop until we find the
13181         first Control subclass that we can focus.
13183 2009-02-02  Sebastien Pouliot  <sebastien@ximian.com>
13185         * dependencyproperty.g.cpp:Regenerated
13186         * style.cpp|h: Use validators on Setter instead of overriding
13187         SetValueWithErrorImpl on SetterBase
13188         * validators.cpp|h: Addvalidator for checking sealed Setter
13190 2009-02-02  Larry Ewing  <lewing@novell.com>
13192         * border.cpp (Border::Render): don't fill the whole are with the
13193         border brush only fill the BorderThickness.  
13195 2009-02-02  Larry Ewing  <lewing@novell.com>
13197         * textbox.cpp, textbox.h: first pass at implementing arrange and
13198         measure.
13200         * text.cpp: request with padding too.
13202 2009-02-02  Chris Toshok  <toshok@ximian.com>
13204         * textbox.h (class TextBox): store the contentElement as an
13205         instance field so we can update it in OnPropertyChanged.
13207         * textbox.cpp (TextBox::OnApplyTemplate): this is seriously
13208         disgusting, and *SHOULD* be handled in the textbox template, but
13209         we can't handle it in ours in case people replace it.  if the
13210         ContentElement template child has DP's named
13211         VerticalScrollBarVisibility and HorizontalScrollBarVisibility, set
13212         them based on the value of ours.
13213         (TextBox::OnPropertyChanged): handle property changes on our
13214         VerticalScrollBarVisibility/HorizontalScrollBarVisibility
13215         properties by proxying them to our contentElement.
13217 2009-02-02  Alan McGovern  <amcgovern@novell.com>
13219         * media.cpp:
13220         * bitmapimage.cpp: Image.Source defaults to a BitmapImage
13221           with a uri of string.empty.
13223 2009-02-02  Chris Toshok  <toshok@ximian.com>
13225         * rect.h (struct Rect): we can be Grown by a negative amount. make
13226         sure we don't drop below 0 on width/height, since everything blows
13227         up when we do.
13229 2009-02-02  Alan McGovern  <amcgovern@novell.com>
13231         * bitmapimage.h:
13232         * dependencyproperty.g.cpp: The default value for
13233           Bitmap.ImageSource is an empty string.
13235 2009-02-02  Jeffrey Stedfast  <fejj@novell.com>
13237         * textbox.cpp (TextBox::OnPropertyChanged): Emit ModelChanged
13238         events when the selection or text changes. TextBoxView cannot
13239         depend on getting those events if things are changed
13240         programatically.
13241         (TextBox::KeyPressThaw): Don't ever bother with emitting
13242         ModelChanged events here, they'll be emitted in
13243         OnPropertyChanged(), now.
13244         (TextBoxView): We no longer listen to TextChanged or
13245         SelectionChanged events.
13246         (TextBoxView::ResetCursorBlink): New method to do all of the
13247         proper state checking to see if the cursor should be rendered
13248         which calls the appropriate Begin/Delay/EndCursorBlink() method.
13249         (TextBoxView::OnModelChanged): Updated to handle Text and
13250         Selection changes. Dropped CursorPosition because it is no longer
13251         necessary.
13252         (TextBoxView::OnFocusIn): Set focused to true before calling
13253         ResetCursorBlink().
13254         (append_runs): Don't forget to append the LineBreak to the Runs
13255         list.
13256         (TextBoxView::SetTextBox): Need to sync some additional state.
13258 2009-02-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13260         * runtime.cpp: ~Surface: don't call DrainUnrefs, we might
13261           already be in one, and DrainUnrefs isn't recursive anymore.
13263 2009-02-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13265         * src.mdp: Updated to use new MD features (ChangeLog and log
13266           message policy).
13268 2009-02-02  Stephane Delcroix  <sdelcroix@novell.com>
13270         * deepzoomimagetilesource.h|cpp: add a parsed_callback.
13271         * multiscaleimage.cpp: re-render on parsed_cb, starting rendering
13272         immediately.
13274 2009-02-02  Stephane Delcroix  <sdelcroix@novell.com>
13276         * deepzoomimagetilesource.h|cpp: parse DisplayRects, returns NULL
13277         in GetTileLayer for missing tiles.
13279 2009-02-02  Stephane Delcroix  <sdelcroix@novell.com>
13281         * multiscaleimage.cpp: render lower layer if the current layer
13282         contains NULL tiles.
13284 2009-02-02  Chris Toshok  <toshok@ximian.com>
13286         * frameworkelement.cpp (FrameworkElement::ArrangeOverride):
13287         correct apparent c&p error.
13289 2009-02-01  Larry Ewing  <lewing@novell.com>
13291         * control.cpp, control.h:
13292         * usercontrol.cpp, usercontrol.h: move ArrangeOverride and
13293         MeasureOverride here from control where they are only used for
13294         binding.
13296 2009-02-01  Larry Ewing  <lewing@novell.com>
13298         * thickness.cpp (Thickness::FromStr): 
13299         * cornerradius.cpp (CornerRadius::FromStr): don't pass a max value
13300         that will cause the rest to be filled with 0.  Fixes parsing of
13301         single value entries.
13303         * frameworkelement.cpp: arrange based on the adjusted rect.
13305 2009-02-01  Chris Toshok  <toshok@ximian.com>
13307         * contentcontrol.cpp (ContentControl::OnPropertyChanged): remove
13308         the ApplyTemplate gunk here, as the template doesn't change when
13309         our content does - the ContentPresenter in our control template
13310         will changed based on our content.
13312         * xaml.cpp (dependency_object_set_attributes):
13313         handle_xaml_markup_extension has three possible return states.
13314         "Need SetValue", "Don't SetValue", and "Error".  the bool return
13315         value is the first two (true == need_setvalue), and p->error_args
13316         determines the last one.
13317         (handle_xaml_markup_extension): add a comment detailing the
13318         need_setvalue return value, and make the return values consistent.
13319         TemplateBindings are weird in that they don't (for now) set a
13320         value, but require that we don't continue on with the set value
13321         machinery in dependency_object_set_attributes.
13323         Also, the TemplateBinding handling in the case of
13324         Property1={TemplateBinding Property2} was attaching things such
13325         that updates to source.Property1 would update target.Property2.
13326         This is exactly backward - it should have been source.Property2 =>
13327         target.Property1.  We got lucky in a vast number of instances
13328         because the property names were the same.
13330 2009-02-01  Sebastien Pouliot  <sebastien@ximian.com> 
13332         * style.cpp: Revert first part (always seal) of last patch due to
13333         regressions.
13335 2009-02-01  Sebastien Pouliot  <sebastien@ximian.com>
13337         * style.cpp: Always seal setters when added to collection (unit 
13338         tested) and unrelated to style (which may not be assigned, SIGSEGV)
13340 2009-01-31  Geoff Norton  <gnorton@novell.com>
13342         * animation.cpp: Its possible for a Storyboard to have TargetName
13343         and TargetProperty set, but be unresolvable, and still use a parent
13344         manual target (See Axelerate3D).
13346 2009-01-31  Chris Toshok  <toshok@ximian.com>
13348         * collection.h, collection.cpp (class UIElementCollection):
13349         UIElements can be reparented logical parent-wise, but can't have
13350         more than one *visual* parent.
13352 2009-01-31  Larry Ewing  <lewing@novell.com>
13354         * border.cpp:
13355         * control.cpp:
13356         * frameworkelement.cpp: rather than trying to fix the rendering
13357         fix the layout_xform to handle margins automatically.
13359 2009-01-31  Larry Ewing  <lewing@novell.com>
13361         * border.cpp (Border::Render): try to match the interior
13362         CornerRound behavior a littler closer.
13364 2009-01-31  Larry Ewing  <lewing@novell.com>
13366         * rect.cpp (Rect::Draw): fix typo in rect drawing.
13368 2009-01-31  Larry Ewing  <lewing@novell.com>
13370         * cornerradius.h: add == and != overloads.
13372         * uielement.cpp: don't include the layout clip if we are
13373         tranforming the bounds.  The layout clip only applies to local
13374         space.
13376         * border.cpp: restore the graphics context after clipping.
13378 2009-01-31  Larry Ewing  <lewing@novell.com>
13380         * rect.cpp, rect.h: move the rounded drawing here for now until
13381         there is a better place.
13382         
13383         * border.cpp: start drawing the borderbrush and using border
13384         thickness.
13385         
13386 2009-01-31  Larry Ewing  <lewing@novell.com>
13388         control.cpp: fix arranged size with border thickness or padding.
13390         border.cpp: fix arranged size with border thickness or
13391         padding. fix rendering with margins.
13393         panel.cpp: fix rendering with a margin.
13395 2009-01-31  Larry Ewing  <lewing@novell.com>
13397         * border.cpp (Border::Render): add corner radius rendering logic
13398         here for now.
13400 2009-01-31  Stephane Delcroix  <sdelcroix@novell.com>
13402         * multiscaleimage.h|cpp: ensure there's only one downloader running,
13403         fixes the issue where wrong images were cached.
13405 2009-01-31  Sebastien Pouliot  <sebastien@ximian.com>
13407         * contentcontrol.h: Add @CallInitialize so the event gets
13408         registred (in the managed side) and we can now track content
13409         changes.
13411 2009-01-30  Geoff Norton  <gnorton@novell.com>
13413         * textbox.cpp: FontFamily is now a FontFamily not a string.
13415 2009-01-30  Chris Toshok  <toshok@ximian.com>
13417         * xaml.cpp: fix ResourceDictionary once and for all.
13419 2009-01-30  Geoff Norton  <gnorton@novell.com>
13421         * deployment.cpp|h: Ensure that any downloaders that might
13422         call back into managed land are aborted before we throw out the
13423         domain.
13424         * downloader.cpp|h: Add a nice interface to DownloaderRequest
13425         and DownloaderResponse to save some code duplication in deployment
13427 2009-01-30  Geoff Norton  <gnorton@novell.com>
13429         * mediaelement.cpp:  If we finish downloading before we can
13430         fill the buffer, we still need to emit this event.
13432 2009-01-30  Chris Toshok  <toshok@ximian.com>
13434         * usercontrol.h (class UserControl): make managed access to
13435         ContentProperty protected internal, not just protected.
13437         * dependencyobject.h (class DependencyObject): generate a
13438         cbinding/pinvoke for SetLogicalParent.
13440         * cbinding.h, cbinding.cpp: regen.
13442 2009-01-30  Jeffrey Stedfast  <fejj@novell.com>
13444         * textbox.cpp (TextBox::KeyPressUnichar): Fixed to update
13445         SelectionStart/Length.
13447 2009-01-30  Geoff Norton  <gnorton@novell.com>
13449         * runtime.cpp: Let managed code change the fullscreen state.
13450         * cbinding.cpp|h: Regenerate
13452 2009-01-30  Chris Toshok  <toshok@ximian.com>
13454         * xaml.cpp (dependency_object_set_property): remove the ugly
13455         assumption - we know if the property type is managed now.
13457 2009-01-30  Jeffrey Stedfast  <fejj@novell.com>
13459         * textbox.cpp (TextBox::KeyPress<key>): Update an internal 'emit'
13460         state rather than returning a changed mask. Also modified to treat
13461         selection.start as the cursor position when selection.length is
13462         0. Otherwise refer to the cursor state to figure out which end of
13463         the selection the cursor is at (for growing/shrinking).
13464         (TextBox::KeyPressFreeze): Reset 'emit' state.
13465         (TextBox::KeyPressThaw): Sync and then emit our changed events.
13466         (TextBox::OnPropertyChanged): Updated for ClearSelection() API
13467         change.
13468         (TextBox::ClearSelection): Now takes a 'start' argument to set
13469         SelectionStart to (e.g. cursor position).
13470         (TextBox::Select): Now longer needs to do a freeze/thaw.
13471         (TextBoxView::OnKeyDown): Updated.
13473 2009-01-30  Chris Toshok  <toshok@ximian.com>
13475         * control.h, control.cpp: same story with InsideObject.
13477 2009-01-30  Chris Toshok  <toshok@ximian.com>
13479         * control.h, control.cpp: remove Control::Render.  handling of the
13480         background property is left to a templatebinding in the visual
13481         tree of the applied template.
13483 2009-01-30  Chris Toshok  <toshok@ximian.com>
13485         * provider.cpp (StylePropertyValueProvider::SealStyle): call
13486         ProviderValueChanged on all values in the style so the object can
13487         do things with them.
13489         * frameworkelement.cpp (FrameworkElement::OnPropertyChanged): add
13490         a comment about SealStyle calling ProviderValueChanged.
13492 2009-01-30  Chris Toshok  <toshok@ximian.com>
13494         * xaml.cpp: when parsing multiple buffers (as we do when hydrating
13495         from a template), we need to keep track of the total offset from
13496         the start of all buffers, since XML_GetCurrentByteIndex returns a
13497         value with that range, it's not the byte index into the current
13498         buffer (unless there's only 1).  Fixes templates stored inside of
13499         other templates.
13501 2009-01-30  Andreia Gaita  <avidigal@novell.com>
13503         * clock.cpp: no use stopping if it's already stopped
13505 2009-01-30  Andreia Gaita  <avidigal@novell.com>
13507         * clock.cpp: reset the state flags as well
13509 2009-01-30  Larry Ewing  <lewing@novell.com>
13511         * text.cpp (TextBlock::Render): Start taking padding into account
13512         and limit the max size to actual not to the arranged value.
13514 2009-01-30  Jeffrey Stedfast  <fejj@novell.com>
13516         * textbox.h (TextBox::GetCursor): Cursor position is aka
13517         selection.start.
13519         * textbox.cpp (TextBox::Freeze): Renamed from PreKeyPress().
13520         (TextBox::Thaw): Decrement freeze count and emit events when we
13521         reach 0.
13522         (TextBox::OnPropertyChanged): When SelectionStartProperty or
13523         SelectionLengthProperty change, call SyncSelectedText(). Fixed the
13524         selection.start/cursor positioning logic when TextProperty or
13525         SelectedTextProperty changes.
13526         (TextBoxView::OnKeyDown): Updated to sue the new Freeze()/Thaw()
13527         methods.
13529 2009-01-30  Larry Ewing  <lewing@novell.com>
13531         * grid.cpp (Grid::ArrangeOverride): fix the minimum measure size
13532         computation.
13534 2009-01-30  Sebastien Pouliot  <sebastien@ximian.com>
13536         * frameworkelement.cpp: Make sure bounds_with_children is always
13537         initialized before being used.
13539 2009-01-30  Geoff Norton  <gnorton@novell.com>
13541         * mediaelement.cpp: Emit MediaOpenedEvent as soon as we've opened the
13542         media.  Fixes the thumber moving on PDC player.
13544 2009-01-30  Jackson Harper  <jackson@ximian.com>
13546         * xaml.cpp: Fixup logic for setting both Key and Name, I was wrong
13547         about them being legal if they are equal.
13549 2009-01-30  Larry Ewing  <lewing@novell.com>
13551         * grid.cpp (Grid::ArrangeOverride): hack around spans in
13552         rebuilding the table until we understand them better.
13554 2009-01-30  Larry Ewing  <lewing@novell.com>
13556         * frameworkelement.cpp:
13557         * border.cpp:
13558         * control.cpp (Control::ArrangeOverride): use alignment properly
13559         in these places as well
13561 2009-01-30  Larry Ewing  <lewing@novell.com>
13563         * frameworkelement.cpp (FrameworkElement::Arrange): don't modify
13564         the alignment here.
13566 2009-01-30  Stephane Delcroix  <sdelcroix@novell.com>
13568         * multiscaleimage.cpp: load png too
13570 2009-01-30  Stephane Delcroix  <sdelcroix@novell.com>
13572         * multiscaleimage.cpp: change the vporigin to relative coords
13574 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13576         * dependencyobject.cpp: EventObject::unref: don't try to get the
13577         typename if there's no deployment around.
13579         * pipeline.cpp: Media::Shutdown: set the current deployment before
13580         looping over each media.
13582 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13584         * deployment.cpp: Remove dead code.
13586 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13588         * downloader.cpp: Downloader::Write: update current deployment.
13590 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13592         * mp3.cpp:
13593         * audio.cpp:
13594         * pipeline.cpp:
13595         * mediaplayer.cpp:
13596         * audio-pulse.cpp:
13597         * mediaelement.cpp:
13598         * pipeline-asf.cpp:
13599         * mms-downloader.cpp:
13600         * pipeline-ffmpeg.cpp: %llu => G_UINT64_FORMAT.
13602 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13604         * deployment.cpp: Comment out log spammer.
13606         * runtime.cpp: Add some sanity checks.
13608         * dependencyobject.cpp: Set current deployment for delayed unrefs too.
13610 2009-01-30  Stephane Delcroix  <sdelcroix@novell.com>
13612         * deepzoomimagetilesource.cpp: normalize ViewportWidth
13614 2009-01-30  Sebastien Pouliot  <sebastien@ximian.com>
13616         * cbinding.cpp|h: Regenerated
13617         * geometry.h: Get bindings/pinvoke on Geometry::GetBounds
13618         * rect.h: Add new ctor so the generator code can work
13620 2009-01-30  Stephane Delcroix  <sdelcroix@novell.com>
13622         * tilesource.h|cpp:
13623         * deepzoomimagetilesource.h|cpp:
13624         * multiscaleimage.cpp: as we can't assume there's a managed DZITS,
13625         implement the DZ parser in native code.
13627 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13629         * mediaplayer.cpp: MediaPlayer: Set object type correctly.
13631 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13633         * deployment.cpp: Allow setting the current deployment to NULL.
13635 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13637         * mediaelement.cpp: Handle MediaElementStateIndividualizing and
13638         AcquiringLicense in all switch statements to fix gcc warnings.
13640 2009-01-30  Geoff Norton  <gnorton@novell.com>
13642         * debug.cpp: Use the proper headers here, we need them anyways.
13643         * window.h: Store the deployment we were created in.
13644         * window-gtk.cpp: Ensure we set our deployment before starting
13645         to call into our heirarchy.
13647 2009-01-30  Jb Evain  <jbevain@novell.com>
13649         * deployment.h: make Deployment::Surface DP internal.
13651 2009-01-29  Geoff Norton  <gnorton@novell.com>
13653         * deployment.h: Surface is now a DP on the deployment so we 
13654         can share it with managed.
13655         * dependencyproperty.g.cpp: Regen
13656         * clock.cpp: Get the surface of the Deployment we're in so that
13657         clocks from Dispatcher timer end up on the right surface.
13659 2009-01-29  Geoff Norton  <gnorton@novell.com>
13661         * deployment.cpp: Trust the domain over the TLS slot since mono
13662         will switch that on us on any thread really.
13664 2009-01-29  Geoff Norton  <gnorton@novell.com>
13666         * clock.cpp|h: Ensure that we set the correct deployment from the 
13667         clock ticks before traversing back into our heirarchy.
13669 2009-01-29  Jackson Harper  <jackson@ximian.com>
13671         * xaml.cpp: Add support for the primitive types in mscorlib.  This
13672         will get properly formed strings, doubles, and int32s working for
13673         now, we don't handle the oddities of the SL parsing properly yet
13674         though.
13676 2009-01-29  Jackson Harper  <jackson@ximian.com>
13678         * type-generated.cpp: regen
13680 2009-01-29  Larry Ewing  <lewing@novell.com>
13682         * frameworkelement.cpp (FrameworkElement::Arrange): unref the clip
13683         geometry.
13685         * grid.cpp: unref the dummy columns we create here.
13687 2009-01-29  Jeffrey Stedfast  <fejj@novell.com>
13689         * textbox.cpp (TextBoxView::ArrangeOverride): Removed.
13691         * textbox.h: Shuffle some internal accessors/events around.
13693 2009-01-29  Larry Ewing  <lewing@novell.com>
13695         * text.cpp, text.h: implement basic layout size rules and strip
13696         the custom actual* properties.  Still a hack but passable for now.
13698         regenerate.
13700 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13702         * runtime.h:
13703         * runtime.cpp: Surface: Implement Dispose and call Dispose on the
13704         toplevel object. PaintToDrawable: Update current deployment.
13706 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13708         * uielement.cpp: Dispose: add a null-check, and only walk the visual
13709         tree if we haven't been disposed already.
13711 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13713         * namescope.h:
13714         * namescope.cpp: Namespace: Implement Dispose and remove all entries
13715         from our names hash table there.
13717 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13719         * xaml.cpp: XamlLoader::CreateFromFile: Add a ref to avoid a crash later
13720         on upon destruction.
13722 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13724         * dependencyobject.h:
13725         * dependencyobject.cpp: EventObject: Added SetCurrentDeployment: updates
13726         Deployment::Current. Emit DestroyedEvent in Dispose instead of the
13727         dtor.
13729 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13731         * mediaelement.h:
13732         * mediaelement.cpp: Implement Dispose and put most of the cleanup there
13733         instead of in the dtor. media_element_advance_frame: we need to set
13734         the current deployment here.
13736 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13738         * collection.cpp: Collection::Dispose: Post-chain Dispose instead of
13739         pre-chain. Set array's size to 0 after deleting all the values.
13741         * pipeline.cpp: Post-chain Dispose instead of pre-chain. Since there's
13742         one media thread per Media object, there's no need to set the current
13743         deployment for each work node, just set it at thread start.
13744         MediaClosure::SetContext: fix refcounting bug.
13746         * pipeline-asf.cpp: Post-chain Dispose instead of pre-chain.
13748 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13750         * deployment.h:
13751         * deployment.cpp: Deployment: Enable support managed stackframes after
13752         initializing mono. Implement Dispose, and upon destruction set
13753         current application to NULL.
13755 2009-01-29  Stephane Delcroix  <sdelcroix@novell.com>
13757         * tilesource.h|cpp: image size is long
13759 2009-01-29  Stephane Delcroix  <sdelcroix@novell.com>
13761         * deepzoomimagetilesource.cpp: set the callback to NULL in ctor
13763 2009-01-29  Stephane Delcroix  <sdelcroix@novell.com>
13765         * multiscaleimage.cpp: ElementToLogicalPoint, ZoomAboutLogicalPoint:
13766         logical is [0,1],[0,1]
13768 2009-01-28  Larry Ewing  <lewing@novell.com>
13770         * frameworkelement.cpp (FrameworkElement::MeasureOverride): 
13771         it might help to actually measure things, so do that... *sigh*
13773 2009-01-28  Larry Ewing  <lewing@novell.com>
13775         * shape.cpp (Shape::ComputeStretchBounds): remove the old
13776         width/height short circuiting when one or the other of
13777         width/height was not set simply use the lyaout clip when it is
13778         around.  Might need a little more work but it is definitely
13779         needed.
13781 2009-01-28  Larry Ewing  <lewing@novell.com>
13783         * frameworkelement.cpp, frameworkelement.h: layout and arrange
13784         children if there are any.  set IsLayoutContainer to true if we
13785         have kids.
13787 2009-01-28  Larry Ewing  <lewing@novell.com>
13789         * frameworkelement.cpp (FrameworkElement::HitTest): move the
13790         majority of the hit test logic here.  Now we only walk the
13791         children once and we only call InsideObject when we must.
13792         InsideObject now only checks the local object subtree is handled
13793         in HitTest.
13795         * panel.cpp, panel.h:
13796         * control.cpp, control.h:
13797         * border.cpp, border.h:
13798         * text.cpp, text.h: remove the old HitTest and rework InsideObject
13799         for the new rule.
13801         * uielement.cpp: make InsideClip potentially a little faster.
13803 2009-01-28  Larry Ewing  <lewing@novell.com>
13804         
13805         * uielement.cpp (UIElement::OnPropertyChanged): invalidate measure
13806         on visibility.
13808         * control.cpp:
13809         * border.cpp:
13810         * canvas.cpp: skip invisible elements.
13812 2009-01-28  Jeffrey Stedfast  <fejj@novell.com>
13814         * textbox.cpp (TextBoxView::Layout): We need to break the text
13815         apart by lines so that the TextLayout engine can handle them
13816         properly.
13818         * layout.cpp (TextLayout::LayoutWrapWithOverflow): Copy run->crlf
13819         over to line->crlf for each LineBreak.
13820         (TextLayout::GetCursor): Need to keep track of the line-ending
13821         character sequences as well.
13823         * layout.h (TextRun::IsLineBreak): New method to check if the run
13824         represents a LineBreak, cleaner than manually checking for text ==
13825         NULL.
13826         (TextRun::ctor): LineBreak version now takes a crlf argument to
13827         specify which line ending sequence it is.
13829 2009-01-28  Jeffrey Stedfast  <fejj@novell.com>
13831         * textbox.cpp (move_down): Fixed to handle any line-ending.
13832         (move_up): Same.
13833         (next_word): Same.
13834         (prev_word): Same.
13835         (TextBox::KeyPressBackSpace): Handle backspacing over any eoln
13836         sequence.
13837         (TextBox::KeyPressDelete): Same.
13838         (TextBox::KeyPressHome): Same.
13839         (TextBox::KeyPressEnd): Same.
13840         (TextBox::KeyPressRight): Same.
13841         (TextBox::KeyPressLeft): Same.
13842         (TextBoxView::OnKeyDown): Hitting Enter in a Silverlight TextBox
13843         inserts a \r character, not a \n, nor a \r\n.
13845         * text.cpp (TextBlock::Layout): Handle \r and \r\n as line-ending
13846         formats too.
13847         (TextBlock::SetTextInternal): Canonicalize line endings in our
13848         temp buffer.
13850         * layout.cpp (TextRun::TextRun): Don't worry about line endings...
13852 2009-01-28  Jackson Harper  <jackson@ximian.com>
13854         * xaml.cpp: Fix logic for setting name and key on
13855         storyboards. Rules are:
13856             1. You can set both if you set the name before the key
13857             2. You can set both if both values are equal
13858         
13859 2009-01-28  Chris Toshok  <toshok@ximian.com>
13861         * style.cpp (SetterBaseCollection::AddedToCollection): chain up to
13862         DependencyObjectCollection::AddedToCollection.
13863         (SetterBaseCollection::RemovedFromCollection): chain up to
13864         DependencyObjectCollection::RemovedFromCollection.
13866 2009-01-28  Sebastien Pouliot  <sebastien@ximian.com>
13868         * dependencyproperty.g.cpp: Regenerated
13869         * enums.cpp|h: Add MediaElementState
13870         * playlist.cpp: Use new MediaElementState enum
13871         * mediaelement.cpp|h: Use new MediaElementState enum
13873 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13875         * dependencyobject.cpp: ~EventObject: only inc objects_destroyed once.
13877 2009-01-27  Larry Ewing  <lewing@novell.com>
13879         * grid.cpp: limit the reduction in size to zero.
13881 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13883         * runtime.cpp:
13884         * dependencyobject.cpp: Fix building with object tracking.
13886 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13888         * debug.h: Surround logging macros with #if LOGGING instead of #if
13889         DEBUG.
13891 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13893         * dependencyobject.cpp: Move the OBJECT_TRACK macro here from the
13894         header, it's not used anywhere but in this file.
13896         * dependencyobject.h: Remove OBJECT_TRACKING from here, it's done at
13897         configure time now.
13899 2009-01-28  Jeffrey Stedfast  <fejj@novell.com>
13901         * textbox.cpp (TextBoxView::OnModelChanged): Handle updates to
13902         ReadOnly status.
13903         (TextBox::OnPropertyChanged): Emit ReadOnly model-changed event.
13905 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13907         * uielement.h: Make Dispose public.
13909 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13911         * codec-version.h.in:
13912         * dependencyobject.h:
13913         * dependencyobject.cpp: EventObject: Make the flags field an gint32
13914         field (to keep size consistent), put the flags at the upper bits and
13915         use the remaining lower bits for the object id. This requires a codec
13916         abi bump.
13918 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13920         * dependencyobject.cpp: Use bitfields correctly.
13922 2009-01-28  Sebastien Pouliot  <sebastien@ximian.com>
13924         * text.cpp: FontFamily can be NULL so we can't just access its
13925         source field without a check. Fix SIGSEGV when running moon-unit.
13926         * value.cpp: FontFamily is not a (managed) struct so it can have
13927         a NULL value. Fix SIGSEGV when creating a Value out of a NULL
13928         FontFamily in moon-unit.
13930 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13932         * type.h:
13933         * type-generated.cpp: Regenerated.
13935 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13937         * type.h:
13938         * type.h.in:
13939         * cbinding.h:
13940         * cbinding.cpp:
13941         * type-generated.cpp: Regenerated.
13943 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13945         * audio.h:
13946         * audio.cpp:
13947         * audio-pulse.h:
13948         * audio-alsa.cpp:
13949         * audio-pulse.cpp: Don't register any audio threads, they may interact
13950         badly with the gc and deadlock. Audio threads shouldn't be doing
13951         anything which requires the current deployment to be set anyway.
13953 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13955         * pipeline.h:
13956         * pipeline.cpp: AudioStream: call SetObjectType.
13958 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13960         * dependencyobject.h:
13961         * dependencyobject.cpp: Add an EventObject ctor overload which takes a
13962         Type::Kind. In EventObject::ref don't warn about inexistent
13963         deployments for audio objects.
13965 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13967         * dependencyobject.cpp: EventObject::GetDeployment: Fix warning.
13969 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13971         * audio.h:
13972         * audio.cpp:
13973         * audio-pulse.h:
13974         * audio-alsa.cpp:
13975         * audio-pulse.cpp: Every AudioSource already has deployment set (since
13976         they inherit from EventObject), use that to set the current
13977         deployment.
13979 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13981         * src.mdp: Updated.
13983 2009-01-27  Chris Toshok  <toshok@ximian.com>
13985         * pipeline.cpp: include codec-version.h
13987         * pipeline-ui.cpp: same.
13989         * pipeline.h: remove the MOONLIGHT_CODEC_ABI_VERSION #define from
13990         here.
13992         * codec-version.h.in: new file.  update the
13993         MOONLIGHT_CODEC_ABI_VERSION #define here when things change.
13995 2009-01-27  Larry Ewing  <lewing@novell.com>
13997         * mediaelement.cpp (MediaElement::MeasureOverride): correct
13998         argument order.
14000 2009-01-27  Larry Ewing  <lewing@novell.com>
14002         * frameworkelement.cpp, frameworkelement.h: move generic
14003         bounds_with_children computation here for now.  Make
14004         GetSubtreeBounds return bounds or bounds_with_children based on
14005         having children. Start setting the layout clip in arrange (it will
14006         probably move later).  Rework the layout_xform logic slightly.
14008         * uielement.cpp: remove the generic render warning, it is ok not
14009         to override here if there is nothing local you need to draw.  When
14010         intersecting bounds with the clip path take the layout clip into
14011         account too.
14012         
14013         * text.cpp: update for bounds changes.  Don't recompute the
14014         natural bounds every pass.
14016         * mediaelement.cpp, mediaelement.h:
14017         * media.cpp, media.h: rework arrange and measure to match shape.
14018         Remove overridden bounds logic since it is no longer needed. Only
14019         use the odd width/height setting logic when we aren're part of a
14020         layout tree. Use the layout clip when drawing.
14022         * shape.cpp: clean up the bounds logic. Use the layout clip when
14023         drawing.
14025         * control.cpp, control.h:
14026         * border.cpp, border.h: use the layout clip when rendering, remove
14027         overrides for bounds now that fe handles them.
14029         
14030 2009-01-27  Chris Toshok  <toshok@ximian.com>
14032         * Makefile.am (libmoon_include_headers): add fontfamily.h
14034         * fontfamily.h: add struct.
14035         
14036         * control.h, text.h: FontFamilyProperty is of type FontFamily now.
14038         * text.cpp: FontFamilyProperty is a FontFamily struct now, not a
14039         string.
14041         * value.cpp: add FontFamily logic, and remove FONTFAMILY from the
14042         unmarshaled bits.
14044         * value.h.in (struct Value): add FontFamily and guint32 cases.
14046         * xaml.cpp (value_from_str): add case for FONTFAMILY.
14048         * value.h, type-generated.cpp, dependencyproperty.g.cpp: regen.
14050 2009-01-27  Geoff Norton  <gnorton@novell.com>
14052         * audio-pulse.cpp|h: Use the Deployment sourced from the player
14053         * dependencyobject.cpp: Fix the warning to not use triple not
14054         negative logic
14055         * deployment.cpp: If we find the deployment from the domain,
14056         put it in the tls slot to make future lookups use the fast-path.
14058 2009-01-27  Jeffrey Stedfast  <fejj@novell.com>
14060         * textbox.cpp (TextBox::TextBox): Don't connect to KeyDown/Up
14061         events anymore. Instead of having a bool 'emit' flag, use
14062         something closer to gtk's freeze_count.
14063         (TextBox::OnKeyDown): Moved to TextBoxView.
14064         (TextBox::OnKeyUp): Same.
14065         (TextBox::SelectAll): Now returns bool to specify if the selection
14066         has changed.
14067         (TextBox::PreKeyPress): Freeze event emission for our state
14068         changes.
14069         (TextBox::PostKeyPress): Thaw them and emit the events.
14070         (TextBoxView::OnKeyDown): Before processing the KeyEvent, call
14071         textbox->PreKeyPress() and after processing, call
14072         textbox->PostKeyPress().
14074 2009-01-27  Jackson Harper  <jackson@ximian.com>
14076         * value.cpp: unmarshall fonts properly.
14078 2009-01-27  Geoff Norton  <gnorton@novell.com>
14080         * dependencyobject.cpp|h:
14081         * mediaplayer.cpp: Remove the stupidity from my last commit.
14082         * audio.cpp: We're in the right thread and Deployment here, use
14083         Deployment::GetCurrent().
14085 2009-01-27  Geoff Norton  <gnorton@novell.com>
14087         * dependencyobject.cpp|h: Add a SetDeployment() call to lazy set
14088         the deployment on a EO.
14089         * deployment.cpp: Add some more logging.
14090         * mediaplayer.cpp: Inherit our Deployment from the MediaElement
14091         who owns us.
14093 2009-01-27  Geoff Norton  <gnorton@novell.com>
14095         * audio-alsa.cpp:
14096         * audio-pulse.cpp: Register the worker-thread's with mono and set our
14097         deployment correctly.
14098         * audio.cpp|h: Inherit the deployment from the MediaPlayer and keep it
14099         around so that our audio-players can register the thread with mono.
14101 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14103         * pipeline.cpp: WorkerLoop: set the current deployment for every work
14104         item.
14106         * deployment.h:
14107         * deployment.cpp: Add RegisterThread.
14109 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14111         * deployment.cpp: Deployment: Add some logging, fix indentation and call
14112         the DependencyObject ctor which takes a Deployment instead of the
14113         default ctor.
14115 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14117         * dependencyobject.h:
14118         * dependencyobject.cpp: Add EventObject and DependencyObject ctors which
14119         take a Deployment*, and an Initialize method which is called by both
14120         ctors of each type.
14122 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14124         * deployment.h: Initialize doesn't need cbinding/pinvoke.
14126 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14128         * debug.h: Add LOG_DEPLOYMENT.
14130         * runtime.h:
14131         * runtime.cpp: Add LOG_DEPLOYMENT. Call Deployment::Initialize in
14132         runtime_init.
14134 2009-01-27  Geoff Norton  <gnorton@novell.com>
14136         * deployment.cpp|h: Lock our access to the hash.  Remove a SetCurrent()
14137         instance since its just sugar and cant be bound anyways.
14139 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14141         * dependencyobject.h:
14142         * dependencyobject.cpp: Move ref to cpp file and add some sanity checks.
14144 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14146         * dependencyobject.h:
14147         * dependencyobject.cpp: Add Deployment* and flags fields on EventObject.
14149 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14151         * collection.cpp: Collection::Dispose: Call base class Dispose too.
14153 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14155         * grid.h:
14156         * type.h:
14157         * text.h:
14158         * size.h:
14159         * popup.h:
14160         * shape.h:
14161         * value.h:
14162         * media.h:
14163         * error.h:
14164         * panel.h:
14165         * brush.h:
14166         * clock.h:
14167         * style.h:
14168         * stylus.h:
14169         * border.h:
14170         * canvas.h:
14171         * binding.h:
14172         * runtime.h:
14173         * trigger.h:
14174         * control.h:
14175         * textbox.h:
14176         * pipeline.h:
14177         * geometry.h:
14178         * template.h:
14179         * namescope.h:
14180         * uielement.h:
14181         * animation.h:
14182         * eventargs.h:
14183         * resources.h:
14184         * transform.h:
14185         * collection.h:
14186         * animation2.h:
14187         * downloader.h:
14188         * expression.h:
14189         * deployment.h:
14190         * tilesource.h:
14191         * bitmapimage.h:
14192         * usercontrol.h:
14193         * application.h:
14194         * mediaelement.h:
14195         * contentcontrol.h:
14196         * multiscaleimage.h:
14197         * dependencyobject.h:
14198         * type-generated.cpp:
14199         * frameworkelement.h:
14200         * multiscalesubimage.h:
14201         * deepzoomimagetilesource.h: Include all types derived from EventObject
14202         in the type system and remove the IncludeInKinds annotations from
14203         those classes.
14205 2009-01-27  Chris Toshok  <toshok@ximian.com>
14207         * xaml.cpp (XamlElementInstanceManaged::TrySetContentProperty):
14208         add the "XamlElementInstance* value" overload.  part of axelerate
14209         fix.
14210         (XamlElementInfoManaged::GetContentProperty): pass
14211         obj->AsDependencyObject() to GetContentPropertyName, instead of
14212         obj (which is a Value*).
14214 2009-01-26  Chris Toshok  <toshok@ximian.com>
14216         * xaml.cpp (XNamespace::IsParentResourceDictionary, SetAttribute):
14217         some behavior with x:Key/x:Name only happens when the element is a
14218         child of a ResourceDictionary.
14220 2009-01-26  Larry Ewing  <lewing@novell.com>
14222         * grid.cpp: rework proportional contribution of auto columns.
14224         * uielement.cpp: remove the slot logic from the transform here we
14225         will compute it in arrange.
14227 2009-01-26  Larry Ewing  <lewing@novell.com>
14229         * grid.cpp (Grid::ArrangeOverride): fix a an error in the loop
14230         bounds.
14232 2009-01-26  Geoff Norton  <gnorton@novell.com>
14234         * deployment.cpp: Cleanup our usage of hash a bit to avoid some
14235         senseless compare/branches.
14237 2009-01-26  Larry Ewing  <lewing@novell.com>
14239         * shape.cpp (Shape::Clip): hack back in shape clipping until the
14240         layout clip logic fixed.
14242 2009-01-26  Geoff Norton  <gnorton@novell.com>
14244         * deployment.cpp: Remove a useless null guard now that we have
14245         Deployment::Initialize.  Don't rudely nuke the TLS slot we might not
14246         own.
14248 2009-01-26  Geoff Norton  <gnorton@novell.com>
14250         * deployment.cpp|h:  Deployment now does all the domain book keeping
14251         for us, so that calls to GetCurrent will return the Deployment for 
14252         the appropriate context, it will also set the MonoDomain* appropriately
14253         where necessary.
14255 2009-01-26  Jeffrey Stedfast  <fejj@novell.com>
14257         * textbox.cpp (class TextBoxDynamicPropertyValueProvider):
14258         Removed.
14259         (TextBox::OnPropertyChanged): Guard SelectedTextProperty and
14260         TextProperty from reentrancy.
14261         (TextBox::EmitSelectionChanged): Update the value before emitting
14262         the event, this way we don't need the dynamic provider.
14263         (TextBox::EmitTextChanged): Same.
14264         (TextBox::OnKeyDown): Handle key == GDK_Return.
14266 2009-01-26  Jeffrey Stedfast  <fejj@novell.com>
14267         
14268         * textbox.cpp (class TextBoxDynamicPropertyValueProvider): We need
14269         to handle the TextProperty as well.
14270         (TextBox::TextBox): Init text_changed to false.
14271         (TextBox::EmitSelectionChanged): New helper method to set
14272         selection_changed to true and then emit the event.
14273         (TextBox::EmitTextChanged): Same idea.
14274         (TextBox::OnPropertyChanged): Use the new Emit helper methods.
14275         (TextBox::ClearSelection): Same.
14276         (TextBox::Select): Same.
14278 2009-01-26  Sebastien Pouliot  <sebastien@ximian.com>
14280         * animation.h: Change validators for TargetNameProperty and
14281         TargetNameProperty
14282         * dependencyproperty.g.cpp: Regenerated
14283         * validators.cpp|h: Add new IsTimelineValidator that check that
14284         the instance is derived from Timeline.
14286 2009-01-26  Larry Ewing  <lewing@novell.com>
14287         
14288         * border.cpp:
14289         * canvas.cpp:
14290         * dirty.cpp:
14291         * control.cpp, control.h:
14292         * frameworkelement.cpp, frameworkelement.h:
14293         * src/grid.cpp:
14294         * src/media.cpp:
14295         * src/mediaelement.cpp:
14296         * src/shape.cpp:
14297         * src/uielement.cpp:
14298         * src/usercontrol.h: Fix things to match the test results.  Still
14299         a few regressions in shapes.
14300         
14301 2009-01-26  Larry Ewing  <lewing@novell.com>
14303         * border.cpp (Border::MeasureOverride): 
14305 2009-01-26  Larry Ewing  <lewing@novell.com>
14307         * grid.cpp (Grid::MeasureOverride): handle out of bounds
14308         rows/columns the way the tests indicate.
14310 2009-01-24  Larry Ewing  <lewing@novell.com>
14312         * border.cpp (Border::MeasureOverride): Fix a width/height mixup.
14314 2009-01-24  Larry Ewing  <lewing@novell.com>
14316         * uielement.h (class UIElement): add IsLayoutContainer () to test
14317         if a given element wants to do the layout dance.  Hopefully this
14318         can be removed once the logic is more clear.
14320         * panel.h:
14321         * canvas.h:
14322         * border.h:
14323         * usercontrol.h: add IsLayoutContainer values.
14324         
14325 2009-01-26  Larry Ewing  <lewing@novell.com>
14327         * frameworkelement.cpp: tests show some really crazy behavior in
14328         the short circuit case, try to emulate that.
14330 2009-01-26  Larry Ewing  <lewing@novell.com>    
14332         * frameworkelement.cpp (FrameworkElement::Measure): remove the
14333         short circuit.
14335         * media.cpp: fix rendering.
14337 2009-01-26  Larry Ewing  <lewing@novell.com>
14338         
14339         * control.cpp: 
14340         * border.cpp: Try to get alignment working visually.
14342         * frameworkelement.cpp: hack the needed behavior in until I
14343         understand the problem better.
14345         * mediaelement.cpp, mediaelement.h:
14346         * media.cpp: use the layout values in stretching
14348 2009-01-26  Larry Ewing  <lewing@novell.com>
14350         * frameworkelement.cpp:
14351         * shape.cpp:
14352         * media.cpp:
14353         * mediaelement.cpp, mediaelement.h: fix up the bounds to use the
14354         new methods.
14356 2009-01-26  Larry Ewing  <lewing@novell.com>
14358         * media.h:
14359         * media.cpp: add bounds logic.
14361         * dirty.cpp:
14362         * control.cpp:
14363         * canvas.cpp:
14364         * border.cpp: start trying to deal with
14365         alignment.
14367         * frameworkelement.cpp: compute the layout_xform.
14368         
14369         * uielement.cpp, uielement.h: add layout_xform and use it.
14370         
14371         * shape.cpp: try something else in measure.
14373         * size.h: add == and != overrides.
14375 2009-01-26  Jeffrey Stedfast  <fejj@novell.com>
14377         * brush.cpp (VisualBrush::SetupBrush): Updated.
14379         * uielement.cpp (UIElement::Render): Render our subtree in the
14380         Region* version of this method and get rid of the old x,y,w,h
14381         version.
14383         * text.cpp (TextBlock::Render): Override the Render() that takes a
14384         Region.
14385         (Glyphs::Render): Same.
14387         * textbox.cpp (TextBoxView::Render): Same.
14389         * shape.cpp (Shape::Render): Here too.
14391 2009-01-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14393         * src.mdp: Update.
14395 2009-01-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14397         * type.cpp: Revert r124497.
14399 2009-01-26  Sebastien Pouliot  <sebastien@ximian.com>
14401         * transform.cpp: Add comment about a difference between SL2/ML 
14402         in caching/computing the resulting matrix value (exposed in SL2) 
14403         of a TransformGroup
14405 2009-01-26  Jackson Harper  <jackson@ximian.com>
14407         * xaml.cpp: Move this check into a function since it will be used
14408         in a few places.
14410 2009-01-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14412         * type.cpp: Type::Find: Check for NULL deployment to avoid crashes.
14414 2009-01-26  Chris Toshok  <toshok@ximian.com>
14416         * animation2.h, animation.[cpp,h], application.[cpp,h], asf/asf.h,
14417         binding.[cpp,h], bitmapimage.[cpp,h], brush.[cpp,h],
14418         canvas.[cpp,h], clock.[cpp,h], collection.[cpp,h],
14419         contentcontrol.[cpp,h], deepzoomimagetilesource.[cpp,h],
14420         dependencyobject.[cpp,h], dependencyproperty.h,
14421         deployment.[cpp,h], downloader.[cpp,h], error.[cpp,h],
14422         eventargs.[cpp,h], expression.[cpp,h], frameworkelement.[cpp,h],
14423         geometry.[cpp,h], grid.[cpp,h], media.[cpp,h],
14424         mediaelement.[cpp,h], multiscaleimage.[cpp,h],
14425         multiscalesubimage.h, namescope.[cpp,h], pipeline.h,
14426         popup.[cpp,h], resources.[cpp,h], runtime.[cpp,h], shape.[cpp,h],
14427         size.[cpp,h], style.[cpp,h], stylus.[cpp,h], textbox.[cpp,h],
14428         text.[cpp,h], tilesource.[cpp,h], transform.[cpp,h],
14429         trigger.[cpp,h], uielement.[cpp,h], uri.h, usercontrol.cpp,
14430         usercontrol.h: move some methods (mostly ctor/dtor) to the .cpp
14431         files, and remove GetObjectType - call SetObjectType instead.  Add
14432         @IncludeInKinds everywhere on types we want in the Kinds array -
14433         nothing is implicit now.  Also, add @SkipValue on types that
14434         shouldn't automatically appear in the Value struct (As* method,
14435         etc).
14437         * border.[cpp,h], control.[cpp,h], panel.[cpp,h]: same as above,
14438         but also call SetSubtreeObject at the right times (basically
14439         whenever our subtree object changes).
14441         * template.[cpp,h]: do the GetObjectType/SetObjectType switch here
14442         too.  also, rework the control template application step - don't
14443         cache the tree and duplicate it.  just reparse.  hook up template
14444         bindings properly as well.  with this change buttons are starting
14445         to look right.
14447         * type.cpp: total_event_count = my_events +
14448         parent->total_event_count, so if my_events == 0...
14449         
14450         * xaml.cpp (start_element): reverse the subclass check.
14452         * cbinding.cpp, cbinding.h, type-generated.cpp, type.h, value.h: regen
14454         * Makefile.am: add expression.cpp, and there's no need for
14455         separate file lists anymore.
14457 2009-01-25  Chris Toshok  <toshok@ximian.com>
14459         * dependencyproperty.cpp (DependencyProperty::RegisterManagedProperty):
14460         this registers a custom property.  Fixes moon-unit failures.
14461         
14462 2009-01-25  Chris Toshok  <toshok@ximian.com>
14464         * value.cpp (Value::Value): allow ManagedTypeInfo of NULL - fixes
14465         moon-unit crash.
14467 2009-01-25  Chris Toshok  <toshok@ximian.com>
14469         * xaml.cpp: mostly just remove the NULL's we were passing to the
14470         various DependencyObject methods that used to require an
14471         additional_types arg.
14472         (dependency_object_set_attributes): one important fix here - force
14473         the loader to do the SetValue if the type is URI, or if the type
14474         of the object itself is a custom type.  Also, if we've converted
14475         the string to a valid value already, don't pass a string to the
14476         loader - this keeps us from passing "{Binding foo...}" to the
14477         loader to setvalue on a databound property.  This does uncover a
14478         failing in our managed code, though, that there's no way to deal
14479         with the unmanaged BindingExpression from managed code.
14481         * application.cpp, application.h: instead of having a
14482         MonoDomain->Application mapping, we now have a
14483         MonoDomain->Deployment mapping, so Application::GetCurrent maps to
14484         Deployment::GetCurrent()->GetCurrentApplication().
14485         
14486         * deployment.cpp, deployment.h: flesh out Deployment, along with
14487         the MonoDomain->Deployment mapping.  Also add a per-deployment
14488         Types* object, so we can look them up anywhere in the engine
14489         without having to rely on the managed layer passing
14490         additional_types.
14491         
14492         * type.h.in, type.cpp: remove additional_types from all the apis.
14493         the currently registered custom types are always available from
14494         the Current deployment, which Type::Find uses.  Also, add
14495         IsCustomType which lets us check if a type is one of our special
14496         built-in types, or if it's one that's been registered dynamically.
14498         * value.h.in, value.cpp: remove additional_types.
14500         * dependencyproperty.h, dependencyproperty.cpp: remove
14501         additional_types.
14503         * dependencyobject.h, dependencyobject.cpp: remove
14504         additional_types.
14506         * uielement.h: add cbindings/pinvokes for ElementAdded and
14507         ElementRemoved.
14509         * contentpresenter.h, contentpresenter.cpp: remove - this is 100%
14510         managed now.
14511         
14512         * Makefile.am: remove contentpresenter.{h,cpp}
14514         * type.h, type-generated.cpp, value.h, cbinding.cpp, cbinding.h:
14515         regen.
14517 2009-01-25  Sebastien Pouliot  <sebastien@ximian.com>
14519         * cbinding.cpp|h: Regenerated
14520         * transform.cpp|h: Add GetMatrix (w/bindings).
14522 2009-01-23  Geoff Norton  <gnorton@novell.com>
14524         * xaml.cpp:  This is case-insensitive here too.
14526 2009-01-23  Geoff Norton  <gnorton@novell.com>
14528         * dependencyobject.cpp:  Avoid a SIGSEGV if the parent_scope is null.
14530 2009-01-23  Jeffrey Stedfast  <fejj@novell.com>
14532         * utils.cpp (managed_stream_read_func): Fixed to do as intended.
14533         (managed_stream_write_func): Same.
14535         * textbox.cpp (next_word): Implemented.
14536         (prev_word): Implemented.
14538 2009-01-23  Andreia Gaita  <avidigal@novell.com>
14540         * clock.[h|cpp]: Add RemoveTickCall() to remove callbacks from the
14541         list in case the dispatcher gets destroyed before they are processed.
14543 2009-01-23  Geoff Norton  <gnorton@novell.com>
14545         * utils.cpp: Remove some g_error and handle ridiculously large
14546         zip files to appease glib.
14548 2009-01-23  Sebastien Pouliot  <sebastien@ximian.com>
14550         * dependencyproperty.g.cpp: regenerated
14551         * brush.h: Set default values for RadialGradientTransform points
14553 2009-01-23  Stephane Delcroix  <sdelcroix@novell.com>
14555         * multiscaleimage.cpp: add a bool so render knows if it was
14556         invalidated locally or not, and should keep rendering the upper
14557         layers or restart from the bottom.
14559 2009-01-23  Geoff Norton  <gnorton@novell.com>
14561         * pipeline.h: Move ManagedStreamCallbacks to utils so other things
14562         can use them
14563         * utils.cpp|h: Implement a minizip io-style wrapper around
14564         ManagedStreamCallbacks so that we can unzip from / to managed Stream's. 
14566 2009-01-23  Stephane delcroix  <sdelcroix@novell.com>
14568         * multiscaleimage.cpp: no longer crash on null uri
14570 2009-01-23  Sebastien Pouliot  <sebastien@ximian.com>
14572         * xaml.cpp: Fix SIGSEGV when we're parsing something that turns out
14573         to be valid (xml-wise) but not a DO (e.g. a Color).
14575 2009-01-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14577         * src.mdp: Added new files.
14579 2009-01-22  Chris Toshok  <toshok@ximian.com>
14581         * textbox.h, textbox.cpp (class PasswordBox): move the ctor to
14582         .cpp, and call SetDefaultStyleKey to get that working.
14584 2009-01-22  Chris Toshok  <toshok@ximian.com>
14586         [ fixes to get http://www.life-silverlight.com/ to come up with
14587         exceptions ]
14589         * enums.cpp (initialize_enums): add a mapping for the property
14590         VerticaalContentAlignment using the vertical_alignment_map.
14592         * uielement.h, uielement.cpp: move SetVisualParent to the .cpp
14593         file.  Also, call SetSurface in SetVisualParent, so things like
14594         controls templates get the right surface assigned to them (they
14595         have no logical parent, only a visual one.)
14597         * contentpresenter.cpp (ContentPresenter::OnLoaded): follow the
14598         other template stuff - create a temp namescope here.  it won't be
14599         merged, so nothing to worry about.  Also, don't call
14600         PrepareContentPresenter here.  do it after we look up text and
14601         root in OnApplyTemplate.
14602         (ContentPresenter::OnApplyTemplate): prepare the content
14603         presenter.
14605 2009-01-22  Jeffrey Stedfast  <fejj@novell.com>
14607         * contentpresenter.cpp (ContentPresenter::PrepareContentPresenter):
14608         Clean up the goto.
14609         (ContentPresenter::OnLoaded): Only unref the template if it isn't
14610         null.
14612         * contentpresenter.h (ContentPresenter::GetElementRoot):
14613         Implemented temporary binding hack.
14615         * contentpresenter.cpp (ContentPresenter::PrepareContentPresenter):
14616         Implemented.
14617         (ContentPresenter::OnPropertyChanged): Call
14618         PrepareContentPresenter() instead of ApplyTemplate().
14619         (ContentPresenter::OnApplyTemplate): Implemented.
14621 2009-01-22  Chris Toshok  <toshok@ximian.com>
14623         * application.h, application.cpp: make surface a per-application
14624         thing, and add GetSurface/SetSurface.
14626         * cbinding.h, cbinding.cpp: regen.
14628 2009-01-22  Jeffrey Stedfast  <fejj@novell.com>
14630         * contentcontrol.cpp (ContentControl::ContentControl): I'm
14631         guessing this needs to call SetDefaultStyleKey as well.
14633         * textbox.cpp (TextBoxView): Get rid of the TextBoxProperty
14634         because that causes problems (the TextBox already has a logical
14635         parent). Instead, we'll just keep track of it internally
14636         ourselves.
14637         (TextBoxView::SetTextBox): Do what OnPropertyChanged() used to do
14638         when the TextBox property changed.
14640         * contentpresenter.cpp (ContentPresenter::ContentPresenter): Set
14641         the default style key.
14642         (ContentPresenter::OnLoaded): Load the default template.
14644         * contentpresenter.cpp|h: New source files. Subclass Control even
14645         though in managed-land, we technically subclass
14646         FrameworkElement. This way we can take advantage of Control's
14647         template logic.
14649 2009-01-22  Chris Toshok  <toshok@ximian.com>
14651         * xaml.cpp (dependency_object_set_attributes): commit jackson's
14652         patch (with one slight modification) so everyone can have the
14653         wonderful world of non-broken setters.
14655 2009-01-22  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14657         * dependencyobject.h:
14658         * dependencyobject.cpp: Remove comment about weak refs, and #if DEBUG
14659         around object counters (we define DEBUG always anyways, and the
14660         counters are always useful).
14662 2009-01-22  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14664         * dependencyobject.cpp: Protect objects_alive with a mutex.
14666 2009-01-22  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14668         * dependencyobject.h:
14669         * dependencyobject.cpp: Remove the weak ref stuff, it's never been of
14670         any use.
14672 2009-01-22 Stephane delcroix  <sdelcroix@novell.com>
14674         * tilesource.h:
14675         * deepzoomimagetilesource.h|cpp: only download the deepzoomfile the
14676         first time it's needed.
14678 2009-01-21  Geoff Norton  <gnorton@novell.com>
14680         * application.cpp: If we're set to NULL remove the application 
14681         from the hash table.
14683 2009-01-21  Geoff Norton  <gnorton@novell.com>
14685         * Makefile.am: Add bitmapimage.cpp to the build
14686         * application.cpp|h: Add a new callback into Application to
14687         return a resource stream.
14688         * bitmapimage.cpp|h: Add a local buffer backed (possibly) by
14689         a managed resource stream and make this all native.
14690         * brush.cpp|h: Brush.ImageSource is now a BitmapImage
14691         * media.cpp|h: Image.Source is now a BitmapImage
14692         * xaml.cpp: BitmapImage can be constructed from a string in xaml
14693         * cbinding.cpp|h:
14694         * dependencyproperty.g.cpp: Regenerate
14696 2009-01-21  Larry Ewing  <lewing@novell.com>
14698         * grid.cpp (Grid::MeasureOverride): rework the incremental
14699         contribution logic.
14701 2009-01-21  Jeffrey Stedfast  <fejj@novell.com>
14703         * contentcontrol.cpp (ContentControl::OnPropertyChanged):
14704         Implemented by calling ApplyTemplate() when ContentTemplate or
14705         Content properties change.
14706         (ContentControl::OnPropertyChanged): Emit a ContentChangedEvent
14707         when the content changes.
14709 2009-01-21  Larry Ewing  <lewing@novell.com>
14711         * grid.cpp: store measurement info in the row and column
14712         definitions and don't allocate the arrays.
14714 2009-01-21  Larry Ewing  <lewing@novell.com>
14716         * grid.cpp, grid.h:  Hack things to handle missing row
14717         definitions and clean up some old errors.
14719 2009-01-21  Jeffrey Stedfast  <fejj@novell.com>
14721         * textbox.cpp (TextBox::OnApplyTemplate): Use SetValue() directly
14722         rather than SetContent() since SetContent() has been removed.
14723         * contentcontrol.h (class ContentControl): Updated a bit, we're
14724         going to actually use this unmanaged class now.
14725         (class ContentControl): Set PropertyType for ContentProperty to
14726         'object' and get rid of the generated accessors.
14728 2009-01-21  Jackson Harper  <jackson@ximian.com>
14730         * dependencyobject.cpp|h: When setting values, unmarshal values
14731         first.
14732         * value.h|cpp: Add unmarshal function so we can convert types
14733         coming from managed.
14734         * type.h:
14735         * cbinding.cpp|h:
14736         * type-generated.cpp: Regenerated.
14737         
14738 2009-01-21  Sebastien Pouliot  <sebastien@ximian.com>
14740         * dependencyproperty.g.cpp: Regenerated
14741         * text.cpp|h: Revert earlier change as it "turns black" too many
14742         things. DRT #47 will fail until I find the right fix :(
14744 2009-01-21  Larry Ewing  <lewing@novell.com>
14746         * grid.cpp (Grid::ArrangeOverride): make the basic cases work
14747         correctly.
14749 2009-01-21  Alan McGovern  <amcgovern@novell.com>
14751         * popup.cpp: Remove debug code from svn.
14753 2009-01-21  Alan McGovern  <amcgovern@novell.com>
14755         * popup.h:
14756         * popup.cpp:
14757         * cbinding.h:
14758         * Makefile.am:
14759         * cbinding.cpp:
14760         * type-generated.cpp: Initial attempt at trying to get Popup.Child
14761         rendering.
14763 2009-01-21  Sebastien Pouliot  <sebastien@ximian.com>
14765         * dependencyproperty.g.cpp: Regenerated
14766         * text.cpp|h: Move ForegroundProperty from a DefaultValue to a
14767         ctor initialized value. This means that GetLocalValue won't return
14768         null for this property, which makes it behave correctly for SL1/JS
14769         applications.
14770         [Fix DRT#47 failing since r123884]
14772 2009-01-20  Chris Toshok  <toshok@ximian.com>
14774         * application.h, application.cpp: switch from using a static
14775         Application* for "Current" to a hashtable mapping MonoDomain* to
14776         Application*.
14778 2009-01-20  Jackson Harper  <jackson@ximian.com>
14780         * xaml.cpp: Lookup resources in Application.Resources if we don't
14781         find the resource in the tree.
14783 2009-01-20  Chris Toshok  <toshok@ximian.com>
14785         * dependencyproperty.g.cpp, type-generated.cpp, cbinding.h,
14786         cbinding.cpp: regen.
14788         * Makefile.am (libmoon_include_headers): add application.h
14789         (libmoon_la_SOURCES): add application.cpp
14791         * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
14792         if the style was set, call Application::ApplyStyle -- doesn't
14793         actually *apply* the style, it just converts the values.
14795         * style.cpp (SetterBase::SetValueWithErrorImpl): we allow setting
14796         the ConvertedValueProperty after the setter is sealed.
14798         * style.h (class Setter): add ConvertedValueProperty.
14800         * textbox.h (class TextBox): remove @CallInitialize.
14802         * textbox.cpp (TextBox::TextBox): i hate the way this is
14803         expressed (we need a ManagedTypeInfo ctor/dtor), but set
14804         DefaultStyleKey here instead of in managed land.
14806         * provider.cpp (StylePropertyValueProvider::GetPropertyValue):
14807         return the converted property value, not the original (which may
14808         have been a string.)
14809         (StylePropertyValueProvider::SealStyle): only put setters in the
14810         hash if their converted value is non-null.
14812         * control.h (class Control): generate accessors for
14813         DefaultStyleKey.
14815         * control.cpp (Control::OnLoaded): do the default style
14816         application here.
14817         (Control::ApplyTemplate): output a little spew so we
14818         can tell if we're applying a template.
14820         * application.h, application.cpp: move Application here, and make
14821         it a full DO subclass.  It no longer maps to the managed
14822         ApplicationInternal.
14824         * deployment.h: remove Application from here.
14826 2009-01-20  Jackson Harper  <jackson@ximian.com>
14828         * xaml.cpp: When we create templates make sure we track the
14829         template ourself, we can't rely on the ControlTemplate still
14830         having a surface when it is applied.
14832 2009-01-20  Jeffrey Stedfast  <fejj@novell.com>
14834         * keyboard.cpp (Keyboard::OnKeyPress): Update modifiers.
14835         (Keyboard::OnKeyRelease): Same.
14837 2009-01-20  Jackson Harper  <jackson@ximian.com>
14839         * clock.h: Set namespace for Duration and RepeatBehavior
14841 2009-01-20  Sebastien Pouliot  <sebastien@ximian.com>
14843         * dependencyproperty.g.cpp: Regenerated
14844         * uielement.h: Re-apply default value for RenderTransformProperty
14846 2009-01-19  Larry Ewing  <lewing@novell.com>
14848         * runtime.cpp:
14849         * window.h:
14850         * window-gtk.cpp, window-gtk.h: clean up the set background
14851         clearing logic and make it general.
14853 2009-01-19  Larry Ewing  <lewing@novell.com>
14855         * window-gtk.cpp (MoonWindowGtk::InitializeCommon): clear the
14856         window to white by default.
14858 2009-01-19  Larry Ewing  <lewing@novell.com>
14859         
14860         * grid.cpp (Grid::ArrangeOverride): clean up debug spew start
14861         implementing arrangeoverride.
14863 2009-01-19  Larry Ewing  <lewing@novell.com>
14865         * dirty.cpp (Surface::UpdateLayout): make sure we layout the full
14866         screen message too.
14868 2009-01-19  Jackson Harper  <jackson@ximian.com>
14870         * uri.h:
14871         * binding.h: Get kinds generated for these guys.
14872         * type.h:
14873         * type-generated.cpp: updated
14874         
14875 2009-01-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14877         * src.mdp: Update.
14879 2009-01-19  Jackson Harper  <jackson@ximian.com>
14881         * grid.h: GridLength lives in System.Windows.
14883 2009-01-19  Jackson Harper  <jackson@ximian.com>
14885         * color.h: Colours are in System.Windows.Media.
14887 2009-01-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14889         * pipeline.h: Instead of overriding GetTypeName for media clases
14890         override GetObjectType so that the generator puts these classes into
14891         our type system. This will fix a lot of the "event not registered"
14892         warnings.
14894         * type.h:
14895         * value.h:
14896         * type-generated.cpp: Regenerated.
14898 2009-01-19  Alan McGovern  <amcgovern@novell.com>
14900         * type.h:
14901         * src.mdp:
14902         * popup.h:
14903         * value.h:
14904         * popup.cpp:
14905         * cbinding.h:
14906         * cbinding.cpp:
14907         * type-generated.cpp:
14908         * dependencyproperty.g.cpp: Create an unmanaged peer for the Popup class
14910 2009-01-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14912         * type-generated.cpp: When scanning headers in src/ scan src/asf/ too.
14913         Add support for 'unsigned X' types (used in src/asf/).
14915 2009-01-18  Geoff Norton  <gnorton@novell.com>
14917         * xaml.cpp: Only unref the surface if it exists.
14919 2009-01-18  Geoff Norton  <gnorton@novell.com>
14921         * dependencyobject.cpp:  Ensure that the parent scope registration
14922         behavior is only applied to UserControl's.
14924 2009-01-18  Geoff Norton  <gnorton@novell.com>
14926         * xaml.cpp: Only ref the surface if it exists.
14928 2009-01-18  Larry Ewing  <lewing@novell.com>
14930         * dirty.cpp (Surface::UpdateLayout): pass the full size in always.
14932         * grid.cpp, grid.h (Grid::ArrangeOverride): hook up and empty
14933         arrange method for now.
14935 2009-01-18  Larry Ewing  <lewing@novell.com>
14937         * control.cpp: update invaliate/measure to look more like border
14938         (still wrong) and remove some debug spew.
14940 2009-01-18  Sebastien Pouliot  <sebastien@ximian.com>
14942         * cbinding.h|cpp, type.h, value.h: Regenerated
14943         * transform.h: Add UnmanagedMatrix (which is a DO accessible to
14944         managed code) and a new method to get the address of the matrix
14945         elements.
14946         * type-generated.cpp: Regenerated to include UNMANAGEDMATRIX
14948 2009-01-17  Larry Ewing  <lewing@novell.com>
14950         * canvas.cpp (Canvas::MeasureOverride): 
14951         * frameworkelement.cpp (Frameworkelement::MeasureOverride): simplify.
14953 2009-01-17  Jackson Harper  <jackson@ximian.com>
14955         * xaml.cpp: Dont create items for property elements. The element
14956         name for property elements can be an abstract type.
14958 2009-01-17  Jackson Harper  <jackson@ximian.com>
14960         * xaml.cpp: Don't try to set properties that are collections,
14961         they've already had the items added in add_child.
14963 2009-01-17  Jackson Harper  <jackson@ximian.com>
14965         * xaml.cpp|h: Change CreateObject to LookupObject and give it a
14966         flag for actually creating the object. This allows us to verify
14967         the type on hydrated elements without creating another instance
14968         and prevents a circular dependency when elements load themself in
14969         their LoadComponent xaml.
14971 2009-01-17  Geoff Norton  <gnorton@novell.com>
14973         * dependencyobject.cpp:  A custom UserControl has a local namescope
14974         but also needs to be locatable in its parent namescope.
14976 2009-01-16  Jeffrey Stedfast  <fejj@novell.com>
14978         * layout.cpp (TextLayout::GetCursor): Fixed to support segments of
14979         different font size (not that TextBox really needs that since all
14980         runs will be the same exact font).
14982         * textbox.cpp (TextBoxView::UpdateCursor): New convenience method
14983         to update the cursor rect.
14984         (TextBoxView::Layout): Update the cursor after we finish laying
14985         the text out.
14986         (TextBoxView::OnModelChanged): Updated to use UpdateCursor().
14987         (TextBox::OnKeyDown): Prevent character entry if buffer->len >=
14988         maxlen.
14990 2009-01-16  Jackson Harper  <jackson@ximian.com>
14992         * xaml.cpp: NULL is OK if it's being explicitly set.
14994 2009-01-16  Jeffrey Stedfast  <fejj@novell.com>
14996         * textbox.cpp (TextBoxView::OnModelChanged): Invalidate the old
14997         cursor region and the new cursor region.
14998         (TextBoxView::Paint): Paint the cursor as well.
15000         * layout.cpp (Layout::GetCursor): Implemented.
15002 2009-01-16  Larry Ewing  <lewing@novell.com>
15004         * frameworkelement.cpp (FrameworkElement::MeasureOverride):
15005         fix typo.
15006         
15007         * panel.cpp, panel.h: remove arrange override and make measure
15008         override return (0,0) always.
15009         
15010 2009-01-16  Larry Ewing  <lewing@novell.com>
15012         * panel.cpp: Make ArrangeOverride and MeasureOverride do something
15013         closer to the right thing.
15015 2009-01-16  Jeffrey Stedfast  <fejj@novell.com>
15017         * textbox.cpp (TextBox::ArrangeOverride): Removed.
15018         (TextBox::Background) needs to return NULL if not selected mode -
15019         we don't want to be redrawing the normal bg.
15021 2009-01-16  Geoff Norton  <gnorton@novell.com>
15023         * xaml.cpp|h: Allocate a GCHandle to the ManagedXamlLoader if
15024         we're going to keep it alive to apply control templates.
15026 2009-01-16  Geoff Norton  <gnorton@novell.com>
15028         * template.cpp: Add the namescope to the closure to avoid
15029         referencing random memory.
15030         * xaml.cpp: We create a new XamlLoader when applying control 
15031         templates, and inherit the callbacks.  Set vm_loaded to true in
15032         this case.
15034 2009-01-16  Jeffrey Stedfast  <fejj@novell.com>
15036         * textbox.cpp (TextBox::TextBox): Don't init the selection
15037         brushes, they must come from the style.
15039 2009-01-16  Larry Ewing  <lewing@novell.com>
15041         * border.cpp, border.h:
15042         * uielement.cpp, uielement.h:
15043         * panel.cpp, panel.h:
15044         * canvas.cpp, canvas.h:
15045         * control.cpp, control.h:  Remove GetTransformFor completely, use
15046         the layout slot x/y when computing the local transform,
15047         invalidatemeasure (for now) when updating the tranform.
15049         * dirty.cpp: hack in the intial Left/Top stuff until we can clean
15050         up the logic here.
15052 2009-01-16  Larry Ewing  <lewing@novell.com>
15054         * frameworkelement.cpp (FrameworkElement::Arrange): don't stretch
15055         unless stretch is specified.
15057 2009-01-16  Geoff Norton  <gnorton@novell.com>
15059         * mediaelement.h: The MediaElement.Source is a Uri on the managed
15060         side.
15062 2009-01-16  Jackson Harper  <jackson@ximian.com>
15064         * xaml.cpp: FindTypeName type names dont' always have a
15065         namespace/assembly.
15066         - Special case Application and don't try to find it's name since
15067         it is renamed in the managed code. (Need to figure out a better
15068         solution here).
15069         - Pass in NULL for setting propertys and let the underlying types
15070         determine whether or not that is an error.
15072 2009-01-16  Jackson Harper  <jackson@ximian.com>
15074         * xaml.cpp: Before going to managed to create an element, scan the
15075         xnamespace for the x:Class attribute and pass that in as the
15076         element name if we have one, this allows you to use abstract names
15077         for the elements as long as the x:Class is a complete type. Should
15078         also allow us to optimize out a trip into managed.
15080 2009-01-16  Jackson Harper  <jackson@ximian.com>
15082         * xaml.cpp: The xaml context needs to store the callbacks so that
15083         we can properly invoke managed code in a template.
15085 2009-01-16  Jackson Harper  <jackson@ximian.com>
15087         * dependencyproperty.cpp: This warning isn't really needed and now
15088         with managed DP lookup's, this scenario happens about a trillion
15089         times during parsing of generic.xaml.
15091 2009-01-16  Larry Ewing  <lewing@novell.com>
15093         * uielement.h (class UIElement): remove the default value from
15094         RenderTransformProperty until the bugs it introduces are resolved.
15096         * dependencyproperty.g.cpp:Regenerated.
15098 2009-01-15  Sebastien Pouliot  <sebastien@ximian.com>
15100         * dependencyproperty.g.cpp: Regenerated
15101         * grid.h: Add default values for [Column|Row]Definition Width
15102         and Height
15103         * xaml.cpp: Fix most cases (except empty) of GridLength
15105 2009-01-15  Geoff Norton  <gnorton@novell.com>
15107         * downloader.cpp|h: Add downloader_response_abort.
15109 2009-01-15  Jackson Harper  <jackson@ximian.com>
15111         * xaml.cpp|h: We need to pass a pointer to the elements parent
15112         object to managed code, this is so we can look up a Setter's
15113         Style.
15114         - Let managed handle Type::DEPEPENDENCYPROPERTY attributes.
15115         
15116 2009-01-15  Jackson Harper  <jackson@ximian.com>
15118         * dependencyproperty.cpp: Patch mostly by rolf. Allows property
15119         lookup to work on custom types that subclass custom types.
15120         * template.cpp: Now that templates work pretty well, lets reduce
15121         the spam a bit.
15123 2009-01-15  Sebastien Pouliot  <sebastien@ximian.com>
15125         * dependencyproperty.g.cpp: Regenerated to include the specified 
15126         type (and not the implied one from the default value)
15127         * uielement.h: RenderTransformProperty defaults to a empty (identity)
15128         MatrixTransform
15130 2009-01-15  Jeffrey Stedfast  <fejj@novell.com>
15132         * textbox.cpp: Removed default_*[fore,back]ground() functions as
15133         well as textbox_shutdown() since they are no longer needed.
15134         (TextBox::TextBox): Initialize the default SelectionBackground and
15135         SelectionForeground brushes.
15137         * layout.h (struct TextSelection): Removed brushes from
15138         TextSelection struct.
15140 2009-01-15  Jeffrey Stedfast  <fejj@novell.com>
15142         * mediaelement.cpp (MediaElementPropertyValueProvider::GetPropertyValue):
15143         Cannot compare a guint64 with -1, presuming the comparison was
15144         meant to be against TimeSpan_FromPTS (position) instead.
15146         * textbox.cpp: Emit SelectionChanged events with RoutedEventArgs
15147         instead of SelectionChangedEventArgs.
15149         * eventargs.cpp (RoutedEventArgs::RoutedEventArgs): New helper
15150         ctor that takes a source.
15152         * textbox.h (class SelectionChangedEventArgs): Removed, this type
15153         of EventArgs is not actually emitted by TextBox as I had
15154         originally thought. TextBox's SelectionChanged event uses
15155         RoutedEventArgs.
15157 2009-01-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
15159         * type-generated.cpp:
15160         * dependencyproperty.g.cpp: Regenerated.
15162         * mediaelement.h:
15163         * mediaelement.cpp: Inherit directly from FrameworkElement instead of
15164         MediaBase. This requires copying some code from MediaBase into
15165         MediaElement (which at some later stage would move into Media).
15167 2009-01-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
15169         * cbinding.h:
15170         * cbinding.cpp: Regenerated.
15172         * type.h:
15173         * type.cpp:
15174         * type.h.in:
15175         * type-generated.cpp:
15176         * dependencyproperty.h:
15177         * dependencyproperty.cpp: Add support for looking up custom dependency
15178         properties by name.
15180 2009-01-15  Sebastien Pouliot  <sebastien@ximian.com>
15182         * xaml.cpp: Free Value on error inside ManagedNamespace.FindElement.
15183         Add comment on value_from_str_with_typename to update NativeMethods.cs
15185 2009-01-15  Larry Ewing  <lewing@novell.com>
15187         * panel.cpp:
15188         * border.cpp:
15189         * control.cpp:
15190         * frameworkelement.cpp: start taking layout slot into account when
15191         computing bounds.
15193 2009-01-15  Jackson Harper  <jackson@ximian.com>
15195         * xaml.cpp: Storyboard are allowed to have an x:Name and an
15196         x:Key. This is for backwards compatibility because SL1 didn't have
15197         x:Key. It's also stupid.
15199 2009-01-15  Jackson Harper  <jackson@ximian.com>
15201         * xaml.cpp: Add a fake element to templates with all the imported
15202         namespaces. This allows all the namespaces imported in the main
15203         source to work in the template.
15205 2009-01-14  Jeffrey Stedfast  <fejj@novell.com>
15207         * textbox.cpp (TextBoxView::OnSelectionChanged): Force a
15208         re-layout.
15209         (TextBoxView::Layout): Build the text runs based on the selection.
15210         (TextBoxView::Paint): Updated to no longer pass the selection
15211         state to the layout engine.
15213         * layout.h (class ITextSource): Added a Background() accessor and
15214         changed the Foreground() accessor to take a bool selected
15215         argument.
15217         * layout.cpp (RenderSegment): Render the background if non-NULL.
15218         (TextRun::TextRun): Now takes a 'selected' state.
15219         (TextLayout::Render): No longer takes selection or cursor
15220         arguments.
15222 2009-01-14  Jackson Harper  <jackson@ximian.com>
15224         * xaml.cpp: Fix x:Null handling.
15226 2009-01-14 Sebastien Pouliot  <sebastien@ximian.com> 
15228         * brush.h: Add default values used by some brushes
15229         * dependencyproperty.g.cpp: Regenerated
15231 2009-01-14  Larry Ewing  <lewing@novell.com>
15233         * panel.cpp (Panel::GetTransformFor): override gettransformfor for
15234         now.
15236 2009-01-14  Jackson Harper  <jackson@ximian.com>
15238         * xaml.cpp: Add the namespaces to the xaml context.
15240 2009-01-14  Jeffrey Stedfast  <fejj@novell.com>
15242         * textbox.cpp (TextBox::CursorBackSpace): Implemented.
15243         (TextBox::CursorDelete): Implemented.
15245         * layout.cpp (RenderSegment): Split out from RenderLine().
15247 2009-01-14  Jackson Harper  <jackson@ximian.com>
15249         * xaml.cpp: Apparently there is a new NULL on the block.  Use
15250         SetIsNull instead of a NULL Value* now.
15252 2009-01-14  Jackson Harper  <jackson@ximian.com>
15254         * template.cpp: initialize xaml_context. (fixes shutdown crash)
15256 2009-01-14  Jackson Harper  <jackson@ximian.com>
15258         * type.h|h.in: typo. Don't ask me how, but somehow I accidently flipped
15259         these before my last patch.
15261 2009-01-14  Jackson Harper  <jackson@ximian.com>
15263         * xaml.cpp: Styles use their TargetType as their
15264         ResourceDictionary key.
15265         - Handle the new type MANAGEDTYPEINFO by allowing the managed code
15266         to parse it.
15267         * value.cpp|h|.h.in:
15268         * type.h|h.in: New type, ManagedTypeInfo. Contains info for
15269         loading managed types.
15270         * style.h:
15271         * control.h:
15272         * template.h: Use ManagedTypeInfo when we have a System.Type on
15273         the managed side.
15274         * dependencyproperty.g.cpp:
15275         * typegenerated.cpp: Regen
15277 2009-01-14  Jeffrey Stedfast  <fejj@novell.com>
15279         * textbox.cpp: More fixes for cursor movement & keyboard selection.
15281 2009-01-14  Sebastien Pouliot  <sebastien@ximian.com> 
15283         * grid.cpp (MeasureOverride): Free allocated arrays
15285 2009-01-14  Sebastien Pouliot  <sebastien@ximian.com>
15287         * grid.cpp: Add a bunch of NULL checks for width and height to avoid
15288         crashes when running the SDK controls unit tests.
15290 2009-01-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
15292         * dependencyobject.cpp: Fix
15293         media/video/test-reset-media-element-source.html.
15295 2009-01-14  Alan McGovern  <amcgovern@novell.com>
15297         * enums.cpp: Control.HorizontalContentAlignment should map to the
15298         HorizontalAlignment enum.
15300 2009-01-14  Stephane Delcroix  <sdelcroix@novell.com>
15302         * deepzoomtilesource.h|cpp: download the source on UriSourceProperty
15303         changed.
15305 2009-01-14  Stephane Delcroix  <sdelcroix@novell.com>
15307         * deepzoomtilesource.h: mark it with CallInitialize
15309 2009-01-14  Stephane Delcroix  <sdelcroix@novell.com>
15311         * tilesource.h|cpp: autogenerate the cbinding
15313         * deepzoomimagetilesource.h|cpp: define a downloaded cb to poke the
15314         managed side for xml parsing.
15316 2009-01-13  Chris Toshok  <toshok@ximian.com>
15318         * xaml.cpp (XamlLoader::CreateFromFileWithError): strdup the error
15319         message
15320         (XamlLoader::CreateFromStringWithError): same.
15321         (XamlLoader::HydrateFromStringWithError): same.
15322         (~XamlLoader): unref the error_args.
15323         (XamlLoader::HydrateFromString): no need to ref the object again
15324         here if it was passed in.
15326 2009-01-13  Larry Ewing  <lewing@novell.com>
15328         * uielement.cpp, uielement.h (class LayoutInformation): add
15329         LayoutInformation class to hold the layout related attached
15330         properties. (will move it later).
15332         * frameworkelement.cpp: use the new layout information and use it
15333         for invalidation.
15335         * border.cpp: fix the arrange logic.
15337 2009-01-13  Larry Ewing  <lewing@novell.com>
15338         
15339         * shape.cpp: switch over to using the computed values for stretch.
15341         * frameworkelement.cpp:
15342         * uielement.cpp: 
15343         * dirty.cpp, dirty.h:  Try to get invalidation logic close to
15344         correct.
15346 2009-01-13  Larry Ewing  <lewing@novell.com>
15348         * shape.cpp: treat rect and ellipse like normal framework elements.
15349         
15350 2009-01-13  Larry Ewing  <lewing@novell.com>
15352         * frameworkelement.cpp:
15353         * control.cpp:
15354         * canvas.cpp:
15355         * media.cpp: 
15356         * mediaelement.cpp: 
15357         * panel.cpp: Use the layout values for values we used to compute
15358         directly.
15360 2009-01-13  Larry Ewing  <lewing@novell.com>
15362         * grid.cpp (Grid::MeasureOverride): make sure we stay inside the
15363         collection while iterating.
15365 2009-01-13  Larry Ewing  <lewing@novell.com>
15367         * src/canvas.cpp
15368         * src/frameworkelement.cpp
15369         * src/media.cpp
15370         * src/panel.cpp, src/panel.h: layout updates
15372 2009-01-13  Larry Ewing  <lewing@novell.com>
15374         * canvas.cpp (Canvas::ArrangeOverride): pass in the requested
15375         size.
15377         * media.cpp, media.h: add ArrangeOverride/MeasureOverride.
15379 2009-01-13  Larry Ewing  <lewing@novell.com>
15381         * shape.cpp, shape.h: start moving cleaning up references to width
15382         and height and moving towards using the layout logic.  Remove
15383         stale LargestRect stuff
15385         * runtime.c, dirty.h: stub in an update layout function.
15387         * border.cpp, canvas.cpp: try to match some more tests.
15389 2009-01-13  Jeffrey Stedfast  <fejj@novell.com>
15391         * textbox.cpp (TextBox::CursorPageDown): Implemented.
15392         (TextBox::CursorPageUp): Implemented.
15393         (TextBox::CursorHome): Implemented.
15394         (TextBox::CursorEnd): Implemented.
15395         (TextBox::CursorDown): Implemented.
15396         (TextBox::CursorUp): Implemented.
15397         (TextBox::OnKeyDown): Implemented Select-All keybinding and
15398         stubbed out cut/copy/paste.
15400 2009-01-13  Sebastien Pouliot  <sebastien@ximian.com> 
15402         * dependencyproperty.g.cpp: Regenerated
15403         * shape.h|cpp: Remove DefaultValue for Poly[gon|line].Points and 
15404         Shape.StrokeDashArray and set them in the constructors (which is 
15405         bit ifferent and fix Polyhedra animation).
15407 2009-01-13  Sebastien Pouliot  <sebastien@ximian.com>
15409         * dependencyproperty.g.cpp: Regenerated
15410         * shape.h: Add DefaultValue for Poly[gon|line].Points and Shape
15411         StrokeDashArray since they are not NULL in SL2
15413 2009-01-13  Alan McGovern  <amcgovern@novell.com>
15415         * src.mdp: Add the provider stuff to the MD solution
15417 2009-01-13  Chris Toshok  <toshok@ximian.com>
15419         * provider.cpp (StylePropertyValueProvider::SealStyle): only
15420         insert the setter into the hash if the setter's value matches the
15421         type of the setter's property.  Fixes
15422         StyleTest.InvalidValueProgrammatically.
15424 2009-01-13  Jackson Harper  <jackson@ximian.com>
15426         * xaml.cpp|h: Add the ability to lookup full uri's based on local
15427         prefixes. This is so managed can convert something like
15428         'local:' into 'clr-namespace=Foo;assembly=bar'
15430 2009-01-13  Jackson Harper  <jackson@ximian.com>
15432         * xaml.cpp|h: Pass the ParserInfo to every callback, this will
15433         allow us to call back into unmanaged to do extra stuff.
15435 2009-01-13  Stephane Delcroix  <sdelcroix@novell.com>
15437         * tilesource.h|cpp: add a callback and a method to set the callback
15438         so we can poke the managed GetTileLayers.
15440 2009-01-12  Chris Toshok  <toshok@ximian.com>
15442         * style.cpp, style.h (Style::GetPropertyValue): remove this.  it's
15443         been replaced by the hash lookup in the style provider.
15445         * dependencyobject.cpp (DependencyObject::ClearValue): i hate this
15446         change... apparently there's something that happens to lower
15447         precedence providers after you call ClearValue, but *only if the
15448         local value was actually cleared*.  yuck.
15450         * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
15451         remove the Style sealing from SetValueWithErrorImpl, and move it
15452         here where it should have been all along.  Also, do the sealing
15453         via the Style value provider, so it can make things a bit more
15454         efficient.
15456         * provider.cpp (StylePropertyValueProvider::SealStyle): new
15457         method, called by FWE::OnPropertyChanged when the style is
15458         initially set.  we cache the setters (keyed by DP) in a hashtable.
15459         (StylePropertyValueProvider::RecomputePropertyValue): this is the
15460         magic method that DependencyObject::ClearValue calls, which causes
15461         the style provider to refresh its cache for the listed property.
15463 2009-01-12  Jackson Harper  <jackson@ximian.com>
15465         * xaml.cpp: Fix typo, makes ControlTemplates inside of
15466         ControlTemplates work properly.
15468 2009-01-12  Jackson Harper  <jackson@ximian.com>
15470         * xaml.cpp: Add MOON_NOFAIL_MISSING_PROPS, this is a temp hack so
15471         we can load some sites and see which properties are missing, right
15472         now it will only work for attributes. Intentionally not using the
15473         debug flags stuff, because i don't want this hack to stay around
15474         for very long.
15476 2009-01-12  Jackson Harper  <jackson@ximian.com>
15478         * xaml.cpp: Stop trying to set attributes once we hit the first
15479         error.
15481 2009-01-12  Jeffrey Stedfast  <fejj@novell.com>
15483         * collection.cpp (InlineCollection::Equals): New convenience
15484         method to replace text.cpp's inlines_simple_text_equal().
15486         * textbox.h (class TextBox): Now implements ITextSource.
15488         * text.cpp (Inline::UpdateFontDescription): New convenience method
15489         to populate the cached TextFontDescription since we can no longer
15490         rely on doing so from within OnPropertyChanged().
15491         (Inline::Equals): Base comparison method used by
15492         InlineCollection::Equals().
15493         (Run::Equals): Compare the Text property as well.
15494         (TextBlock::Layout): Call UpdateFontDescription() on each Inline
15495         as we iterate through them. Also updated for TextRun ctors.
15496         (TextBlock::OnCollectionItemChanged): Simplified a bit. The basic
15497         premise is that we do not want to force a layout calculation to be
15498         redone, we just need to invalidate if all that changed was a
15499         foreground brush.
15500         (inlines_simple_text_equal): Removed, use
15501         InlineCollection::Equals() instead.
15502         (TextBlock::SetTextInternal): Updated to use
15503         InlineCollection::Equals().
15505         * text.h (class Inline): Now implements the ITextSource
15506         interface. Moved the local TextFontDescription and autogen state
15507         into the private section and added accessors for them.
15509         * layout.cpp|h (class ITextSource): New interface sued by TextRuns
15510         and the internal Layout logic to grab a run's foreground brush and
15511         text decorations.
15512         (TextRun::ctor): No longer take TextDecoration,
15513         TextFontDescription, or Brush arguments, instead takes an
15514         ITextSource that it can query for those properties when it needs
15515         to.
15516         (RenderLine): Updated to get the decorations and foreground brush
15517         from the ITextSource.
15519 2009-01-12  Alan McGovern  <amcgovern@novell.com>
15521         * validators.h:
15522         * validators.cpp:
15523         * mediaelement.h:
15524         * dependencyproperty.g.cpp: Add range validation to TimeSpan
15526 2009-01-12  Jackson Harper  <jackson@ximian.com>
15528         * xaml.cpp: Moved nameditem lookup into the parser info so we can
15529         use the parser context data to lookup resources.  This allows
15530         templates to reference StaticResources.
15532 2009-01-12  Alan McGovern  <amcgovern@novell.com>
15534         * clock.cpp: Minimum FPS is clamped at 1.
15535         
15536 2009-01-12  Jackson Harper  <jackson@ximian.com>
15538         * xaml.cpp|h: Create a xaml context object so we can save some
15539         state information for buffered templates.
15540         * template.h|cpp: Updated xaml methods.
15542 2009-01-12  Alan McGovern  <amcgovern@novell.com>
15544         * animation.h:
15545         * validators.h:
15546         * validators.cpp:
15547         * dependencyproperty.g.cpp: Add correct validator for
15548         Storyboard.TargetName and Storyboard.TargetProperty
15550 2009-01-12  Sebastien Pouliot  <sebastien@ximian.com>
15552         * grid.h: Hide RowDefinitionCollection ctor from managed code
15553         * frameworkelement.cpp, provider.cpp: Even is Is(Type::Style)
15554         returns true the Style value can still be NULL (fix two new crash
15555         in SDK control unit tests)
15557 2009-01-12  Andreia Gaita  <avidigal@novell.com>
15559         * stackpanel.cpp|h: removed, stackpanel is now done in managed
15560           land
15562         * cbinding.cpp|h, dependencyproperty.g.cpp,
15563           type-generated.cpp, type.h,
15564           value.h: regen
15565     
15566         * Makefile.am, src.mdp: update build
15568 2009-01-11  Chris Toshok  <toshok@ximian.com>
15570         * layout.h, layout.cpp (RenderLine): default_fg is unnecessary
15571         now.  the run fg will always be initialized.
15572         (TextRun::TextRun): the fg pointer is Brush*, not Brush**.
15573         (TextLayout::Render): no need to pass in the default foreground.
15575         * runtime.cpp (runtime_shutdown): text_shutdown is gone.
15577         * text.h, text.cpp: stop caching the foreground.  and there's no
15578         need to create the default foreground brush in code.  it's simply
15579         the default value of the Foreground dependency property.
15580         (inlines_simple_text_equal): this needed fixing up since the font
15581         flags really aren't used for inheritance anymore - we need (and
15582         really, always needed to) compare the actual values, not just if
15583         they're set.
15584         (text_shutdown): no need for this anymore.
15585         
15586         * textbox.cpp (TextBoxView::Paint): same.  no more default_fg
15587         needed.
15589 2009-01-11  Chris Toshok  <toshok@ximian.com>
15591         * dependencyobject.h, dependencyobject.cpp: make DO's freezable.
15592         if a DO is frozen, any SetValue() call raises an
15593         UnauthorizedAccessException.  We use this for default values of
15594         DependencyProperties.
15596         * dependencyproperty.cpp (DependencyProperty::DependencyProperty):
15597         freeze the default value.
15599 2009-01-11  Andreia Gaita  <avidigal@novell.com>
15601         * clock.h|cpp (DispatcherTimer): Don't destroy the clock on Stop(), 
15602         it could be called in the middle of a tick. Instead, just reset and 
15603         reuse the clock on every tick. Track if the timer is stopped during 
15604         a tick so the clock is not relaunched. Set a default duration so 
15605         it's never automatic.
15607 2009-01-11  Chris Toshok  <toshok@ximian.com>
15609         * text.h, text.cpp (class Inline): generate accessors for
15610         FontFamily, FontSize, and TextDecoration.
15611         (class Inline, class TextBlock): add an internal DP for the font
15612         filename.
15613         (Inline::OnPropertyChanged): the only case that's needed at the
15614         moment is foreground, but that's slated for the axe as well.
15615         
15616         * dependencyproperty.g.cpp: regen.
15618         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
15619         make sure we inherit properly across the logical tree if the node
15620         doesn't have a visual parent (this fixes inheritance for non
15621         UIElement's, like Runs).  Also, add the FontFilename property to
15622         the list of things that inherit.
15624         * dependencyobject.h,
15625         dependencyobject.cpp (DependencyObject::ProviderValueChanged): new
15626         method.  Providers can call this whenever the value at their
15627         precedence level has changed.  It contains all the smarts to
15628         correctly generate OnPropertyChanged method calls in the face of
15629         all the provider levels.
15631 2009-01-10  Jeffrey Stedfast  <fejj@novell.com>
15633         * textbox.cpp (TextBox::OnKeyDown): Changed a bit. We need to emit
15634         TextChangedEvent and SelectionChangedEvent. Don't combine those
15635         into the ModelChangedEvent that is only meant for TextBoxView.
15636         (TextBox::OnPropertyChanged): Emit TextChangedEvent and
15637         SelectionChangedEvent appropriately.
15638         (TextBoxView::OnSelectionChanged): New event callback handler.
15639         (TextBoxView::OnTextChanged): Same.
15640         (TextBoxView::OnModelChanged): Don't handle text/selection change
15641         notification here anymore, because those 'change' enum types have
15642         been dropped.
15643         (TextBoxView::OnPropertyChanged): Need to listen to more events.
15645 2009-01-10  Jeffrey Stedfast  <fejj@novell.com>
15647         * value.cpp (Value::Value): the const char* ctor now takes a bool
15648         argument specifying whether to take ownership of the string
15649         buffer.
15651         * textbox.cpp (class TextBoxDynamicPropertyValueProvider): We
15652         don't need to keep a char* selection, we only need it temporarily
15653         while creating the Value*.
15654         (TextBox::OnKeyDown): Check for AcceptsReturn when Enter is
15655         pressed.
15656         (TextBox::ClearSelection): Don't set the TextProperty value
15657         anymore. Also don't bother with the setvalue state variable
15658         anymore.
15659         (TextBox::OnPropertyChanged): Don't worry about setvalue state
15660         here anymore.
15661         (TextBox::TextBox): Get rid of 'setvalue' state.
15663 2009-01-10  Geoff Norton  <gnorton@novell.com>
15665         * media.cpp: surface->filename might be NULL, so we need to guard
15666         against this in our cleanup accordingly.
15668 2009-01-09  Chris Toshok  <toshok@ximian.com>
15670         * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
15671         oops.  we still need to seal the style if that's the thing we're
15672         setting.
15674 2009-01-09  Chris Toshok  <toshok@ximian.com>
15676         * Makefile.am (libmoon_include_headers): add provider.h
15677         (libmoon_la_SOURCES): add provider.cpp
15679         * provider.h, provider.cpp: clean up this some.  the only provider
15680         really not being used right now is the Animation value provider,
15681         since the animation code assumes it can just set local values.
15682         
15683         * shape.cpp (Shape::OnPropertyChanged): no need to look up the
15684         default value - GetValue will return it now.
15686         * textbox.h, textbox.cpp (class
15687         TextBoxDynamicPropertyValueProvider): new custom provider class to
15688         replace the ::GetValue override.  Install it in the ctor.
15690         * text.h, text.cpp (class TextBlockDynamicPropertyValueProvider):
15691         new custom provider class to replace the ::GetValue override.
15692         Install it in the ctor.
15693         (GetBoundingWidth, GetBoundingHeight): don't use
15694         GetValueNoDefault.
15695         (SetActualHeight, SetActualWidth): no longer needed.
15696         (textblock_property): no longer needed.
15697         (Inline::GetDefaultValue): no longer needed.  the inherited
15698         property provider handles it.
15699         (TextBlock::OnPropertyChanged): no need to deal with
15700         Actual{Height,Width}Property here anymore.
15701         
15702         * frameworkelement.cpp (FrameworkElement::FrameworkElement):
15703         remove styles initialization.
15704         (FrameworkElement): remove styles destruction.
15705         (FrameworkElement::ClearValue): this doesn't need any styles stuff
15706         anymore - just clear the binding if we have one, and otherwise
15707         chain up.
15708         (FrameworkElement::GetLocalValue): I'm not sure why this was
15709         looking things up via a style, as styles are a lower priority than
15710         local values.  if there's a binding return that, otherwise chain
15711         up.
15712         (FrameworkElement::SetValueWithErrorImpl): remove the styles stuff
15713         here.
15714         (FrameworkElement::UpdateFromStyle): remove.  the style lookup is
15715         done in the style provider.
15718         * style.h, style.cpp (SetterBaseCollection::SetStyle): remove the
15719         public Style* field and use SetStyle to set it.
15720         (Style::GetPropertyValue): new method.  this should probably be a
15721         hash lookup instead of the linear lookup, but for now this will
15722         work.
15723         (SetterBaseCollection::ValidateSetter): make this a static method
15724         on the class instead of just a C function.
15726         * dependencyobject.h: add a couple more GetValue overrides to deal
15727         with precedence levels.  Remove GetDefaultValue, as it's no longer
15728         needed - we can finally use DependencyProperty::GetDefaultValue as
15729         it's meant to be used.
15731         * dependencyobject.cpp (DependencyObject::GetLocalValue): change
15732         this to just call the LocalValue provider.
15733         (DependencyObject::GetValue (DependencyProperty* property)): call
15734         the overload that lets us specify a starting precedence (start at
15735         the highest precedence level).
15736         (DependencyObject::GetValue (DependencyProperty *property,
15737         PropertyPrecedence startingAtPrecedence)): new method.  loop over
15738         the providers until one of them gives us a value.
15739         (DependencyObject::GetValueSkippingPrecedence): we need this for
15740         looking up the value of FrameworkElement::StyleProperty from
15741         inside the style provider.
15742         (DependencyObject::GetValueNoDefault): reimplement this for the
15743         time being using the providers.
15744         (DependencyObject::DependencyObject): register all the default
15745         providers.  we leave a DynamicValue slot open for subclasses who
15746         want to implement "computed" properties.
15747         (DependencyObject): free all the providers.
15749         * dependencyproperty.g.cpp: regen
15751 2009-01-09  Geoff Norton  <gnorton@novell.com>
15753         * media.cpp: Remove a unnecessary synthesized PropertyChangedEvent
15755 2009-01-09  Geoff Norton  <gnorton@novell.com>
15757         * media.cpp: Ensure that we actually do change the value of the 
15758         Source property when we call MediaBase::SetSource (char*)
15760 2009-01-09  Jeffrey Stedfast  <fejj@novell.com>
15762         * text.cpp (TextBlock::OnPropertyChanged): Update our TextLayout
15763         with layout-hint changes (including TextWrapping hints).
15764         (TextBlock::Layout): Don't pass 'hints' to layout->Layout()
15765         anymore. Also no need to set the wrapping mode here anymore as it
15766         is set in OnProeprtyChanged() now.
15768         * layout.cpp (TextLayout): Move TextLayoutHints into TextLayout,
15769         it doesn't make sense to have them separate.
15771         * textbox.cpp (class TextBox): Get rid of TextLayoutHints state,
15772         we'll pass changes directly to the View as they get updated.
15773         (TextBox::OnPropertyChanged): If the layout hints change, set
15774         changed to the appropriate TextBoxModelChanged hint enum. Also
15775         pass the PropertyChangedEventArgs to the ModelChangedEventArgs
15776         ctor so that TextBoxView can grab the new value to update its
15777         state.
15778         (TextBoxView::OnModelChanged): Handle the new enums.
15779         (TextBoxView::OnPropertyChanged): Sync our layout-hints state when
15780         a new TextBox gets set.
15782 2009-01-09  Alan McGovern  <amcgovern@novell.com>
15784         * dependencyproperty.cpp: 'validator' should never be null - it should
15785         be default_validator instead. Regression caused by previous change to
15786         generator.
15788 2009-01-09  Alan McGovern  <amcgovern@novell.com>
15790         * validators.cpp: Validator only converts -1 to null. All other values
15791         appear to be left the same
15793 2009-01-09  Alan McGovern  <amcgovern@novell.com>
15795         * validators.h:
15796         * mediaelement.h:
15797         * validators.cpp: Add a validator to AudioStreamIndex. This converts
15798         negative values to null, as the unit tests show.
15800 2009-01-09  Alan McGovern  <amcgovern@novell.com>
15802         * dependencyproperty.h:
15803         * dependencyproperty.cpp:
15804         * dependencyproperty.g.cpp: Make it possible to use validators with
15805         Nullable properties.
15807 2009-01-08  Jeffrey Stedfast  <fejj@novell.com>
15809         * text.cpp (Glyphs::SetFill): Removed, autogenerated now.
15810         (Glyphs::GetFill): Same.
15812         * text.h (class Glyphs): GenerateAccessors for FillProperty too.
15814         * textbox.cpp (TextBox::CursorRight): Implemented.
15815         (TextBox::CursorLeft): Implemented.
15816         (TextBox::GetValue): New override to set the SelectedText property
15817         if the selection has been changed since the last request.
15819         * eventargs.cpp (KeyEventArgs::IsModifier): Work around gtk < 2.10.
15821         * text.cpp (TextBlock::Layout): Fix bug #435798 in a slightly
15822         different way so that we don't have to use GetValueNoDefault().
15824 2009-01-08  Larry Ewing  <lewing@novell.com>
15826         * text.cpp (TextBlock::Layout): use nan logic for FE:Width here.
15828         * geometry.h, geometry.cpp (class RectangleGeometry): remove
15829         GetRadius logic everything is handled property by the properties
15830         these days.
15832 2009-01-08  Jeffrey Stedfast  <fejj@novell.com>
15834         * textbox.cpp (TextBox::OnKeyDown): Updated a bit to use the new
15835         KeyEventArgs APIs.
15837         * keyboard.cpp (Keyboard::KeyIsChar): Removed.
15838         (Keyboard::KeyToChar): Removed.
15839         (Keyboard::KeyIsMovement): Removed.
15841         * eventargs.cpp (KeyEventArgs::GetModifiers): Renamed from
15842         GetState() to make the purpose clearer.
15843         (KeyEventArgs::IsModifier): New helper method.
15844         (KeyEventArgs::GetKeyVal): New helper method.
15845         (KeyEventArgs::GetUnicode): New helper method.
15847         * textbox.cpp (TextBox::OnPropertyChanged): Get rid of the 'dirty'
15848         state, all places that set dirty=true are now handled by
15849         TextBoxView instead. Only call Invalidate() when appropriate. For
15850         selection state changes, check setvalue state to see if we need to
15851         do anything.
15852         (TextBox::ClearSelection): New helper method to clear the
15853         selection.
15854         (TextBox::OnKeyDown): Properly clear the selection using
15855         ClearSelection() so that the DP values get updated.
15857 2009-01-08  Larry Ewing  <lewing@novell.com>
15859         * shape.cpp, shape.h: remove all the GetValueNoDefault logic,
15860         replace it with proper NAN state.  Remove MixedWidthAndHeight for
15861         c&p checks that will be removed in the layou code.
15862         
15863         * frameworkelement.cpp: more nan cleanup.
15865         * border.cpp:
15866         * control.cpp: handle nan.
15868 2009-01-08  Alan McGovern  <amcgovern@novell.com>
15870         * style.h:
15871         * value.h:
15872         * value.h.in:
15873         * frameworkelement.cpp:
15874         * dependencyproperty.g.cpp: Add the ability to map a DependencyProperty
15875         to/from native. This removes a hack in Style where DP's used to be
15876         looked up by name, which couldn't be done with properties registered
15877         through C#. Fixes 2 NUnit tests.
15879 2009-01-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
15881         * validators.h:
15882         * validators.cpp: Added DoubleGreaterThanZeroValidator.
15884         * mediaelement.h: Use double validator instead of int validator for
15885         double properties.
15887         * dependencyproperty.g.cpp: Regenerated.
15889 2009-01-08  Alan McGovern  <amcgovern@novell.com>
15891         * dependencyobject.cpp: *Warning - Changing default values* When
15892         DO.ClearValue is called, we always return 'NULL' as the new value.
15893         This is incorrect as the pattern: do.ClearValue (property),
15894         do.GetValue (property) will actually return do.GetDefaultValue
15895         (DependencyProperty*). This change fixes a failing assertion in
15896         StyleTest.cs - ModifyAfterBinding.
15898 2009-01-08  Sebastien Pouliot  <sebastien@ximian.com>
15900         * cbinding.h|cpp, collection.h, type.h, type-generated.cpp, value.h:
15901         Regenerated for ITEM_COLLECTION
15903 2009-01-08  Alan McGovern  <amcgovern@novell.com>
15905         * text.cpp:
15906         * dependencyobject.h:
15907         * dependencyobject.cpp: Reinstate GetDefaultValue as it was actually
15908         overridden by Inlines
15910 2009-01-07  Larry Ewing  <lewing@novell.com>
15912         * frameworkelement.cpp, frameworkelement.h:
15913         move all the various duplicate versions GetTransformOrigin here.
15915         * mediaelement.cpp: fix GetTransformOrigin for new default values.
15916         
15917         * shape.cpp, shape.h:
15918         * canvas.cpp, canvas.h:
15919         * media.cpp, media.h:
15920         * shape.cpp, shape.h:
15921         * stackpanel.cpp, stackpanel.h: remove c&p code from all over.
15923         Fixes run-tests 27
15925 2009-01-07  Geoff Norton  <gnorton@novell.com>
15927         * collection.cpp: Ensure that we call any AddWithError overrides
15928         that might exist in a subclass (like TimelineMarkerCollection) as
15929         it could affect the integer returned.
15931 2009-01-07  Geoff Norton  <gnorton@novell.com>
15933         * xaml.cpp, file-downloader.cpp: TextStream::Open has been renamed
15934         to TextStream::OpenFile
15935         * utils.h|cpp: Refactor TextStream to read in-memory and file buffers
15936         * downloader.cpp: GetResponseText needs to ensure it returns data in
15937         UTF-8, and doesn't handle zip files.
15939 2009-01-07  Jeffrey Stedfast  <fejj@novell.com>
15941         * textbox.cpp (TextBox::OnKeyDown): Added support for keyboard
15942         input a bit. Cutting a lot of corners for now, but oh well.
15943         (TextBoxView::TextBoxView): Hooked up some cursor blinking
15944         action. We don't actually render the cursor yet tho.
15946         * keyboard.cpp (Keyboard): Moved into it's own source file from
15947         eventargs.cpp. I have a sneaking suspicion that this logic will
15948         get large and complicated someday soon.
15950 2009-01-07  Sebastien Pouliot  <sebastien@ximian.com>
15952         * dependencyobject.cpp (set_surface): Add null check since the 
15953         hashtable can contain Value with a NULL DependencyObject
15955 2009-01-07  Larry Ewing  <lewing@novell.com>
15957         * canvas.cpp:
15958         * frameworkelement.cpp:
15959         * shape.cpp: Quick hacks to get test 0 passing after the default
15960         value changes.
15962 2009-01-07  Chris Toshok  <toshok@ximian.com>
15964         * textbox.h (class TextBox): add @CallInitialize so we can set the
15965         DefaultStyleKey.
15967         * control.cpp (Control::OnLoaded): move FrameworkElement::OnLoaded
15968         call to before ApplyTemplate(), as the template isn't applied
15969         until after the Loaded event is fired.
15971 2009-01-07  Geoff Norton  <gnorton@novell.com>
15973         * downloader.h|cpp: Work around mozilla bug #444160 by keeping an in
15974         memory cache of all downloads <= 64KB that are streamed in 1 shot.
15976 2009-01-07  Sebastien Pouliot  <sebastien@ximian.com>
15978         * contentcontrol.h|cpp: Remove properties that are not in SL2 final
15979         * dependencyproperty.g.cpp: Regenerated.
15981 2009-01-07  Alan McGovern  <amcgovern@novell.com>
15983         * uielement.h:
15984         * validators.h:
15985         * validators.cpp:
15986         * dependencyproperty.g.cpp: If C# passes a null cursor to C++, convert
15987         it to the default cursor instead.
15989 2009-01-06  Larry Ewing  <lewing@novell.com>
15991         * uielement.h (class UIElement): add a default value to
15992         UIElement::CusorProperty, fixes a crossing event crash.
15994         * uielement.cpp (UIElement::ElementRemoved): remove the element
15995         from the dirty list since it is an orphan now.
15997         * runtime.cpp (Surface::PaintToDrawable): add some logging.
15999 2009-01-06  Jeffrey Stedfast  <fejj@novell.com>
16001         * textbox.cpp (TextBox::OnKeyDown): Added some keyboard keypress
16002         callbacks so that we can eventually make TextBox receive keyboard
16003         input. Currently the events never seem to fire, tho.
16005 2009-01-06  Sebastien Pouliot  <sebastien@ximian.com>
16007         * enums.h: Add enums values for MouseCursorSize[NS|WE]
16008         * window-gtk.cpp: Display MouseCursorSize[NS|WE] cursors
16010 2009-01-06  Alan McGovern  <amcgovern@novell.com>
16012         * frameworkelement.cpp:
16013         * dependencyobject.cpp: Fixes so that StyleTests.NullLocalValue passes
16014         again after my previous commit changing the handling of
16015         GetValue/GetLocalValue.
16017 2009-01-06  Alan McGovern  <amcgovern@novell.com>
16019         * cbinding.h:
16020         * cbinding.cpp:
16021         * dependencyobject.h:
16022         * dependencyobject.cpp: Nuke DO.GetDefaultValue as it just wraps the
16023         DP.GetDefaultValue function. Fixed the implementation of 'null'
16024         Value*. Now a Value* with GetIsNull () == true will be returned as
16025         'NULL' for calls to GetValue or GetValueNoDefault. This makes
16026         Value.GetIsNull opaque to native code so existing null checks will
16027         work as they should. The only function which is aware of GetIsNull is
16028         GetLocalValue, and this correctly handles this case.
16030 2009-01-06  Alan McGovern  <amcgovern@novell.com>
16032         * textbox.h:
16033         * validators.h:
16034         * validators.cpp:
16035         * dependencyproperty.g.cpp: Ensure correct exception is thrown when a
16036         null string is passed to PasswordBox.Password. Use correct range
16037         validation for MaxLength.
16039 2009-01-06  Alan McGovern  <amcgovern@novell.com>
16041         * frameworkelement.h:
16042         * frameworkelement.cpp:
16043         * dependencyproperty.g.cpp: Default value for FE.Height and FE.Width is
16044         NAN.
16046 2009-01-06  Alan McGovern  <amcgovern@novell.com>
16048         * style.h:
16049         * style.cpp:
16050         * frameworkelement.cpp: Implement proper validation of Setters and also
16051         correctly implement behaviour of sealed/unsealed styles. They are now
16052         passing all the NUnit tests except for one.
16054 2009-01-05  Chris Toshok  <toshok@ximian.com>
16056         * frameworkelement.h, frameworkelement.cpp: remove all reference
16057         to template_namescope.
16059         * template.cpp (ControlTemplate::Apply): remove call to
16060         FrameworkElement::SetTemplateNameScope - just set it as the
16061         namescope on the root of the applied template.  This way name
16062         references within the template resolve correctly.
16064         * control.cpp (Control::GetTemplateChild): with the above change,
16065         this just becomes template_root->FindName ()
16067 2009-01-05  Sebastien Pouliot  <sebastien@ximian.com>
16069         * runtime.cpp: Add a null check in Surface::FocusElement since both
16070         the C bindings and the MouseLeftButtonDown event can call it with a
16071         NULL value causing a SIGSEGV.
16073 2009-01-05  Jeffrey Stedfast  <fejj@novell.com>
16075         * textbox.cpp (TextBox::OnApplyTemplate): Override. Insert a
16076         TextBoxView in the appropriate place.
16078         * control.cpp (Control::GetTemplateChild): Now takes a const
16079         char*.
16081 2009-01-05  Alan McGovern  <amcgovern@novell.com>
16083         * uielement.h: Cursor shouldn't have a default value in SL2.
16085         * template.cpp:
16086         * dependencyobject.h:
16087         * dependencyobject.cpp:
16088         * dependencyproperty.g.cpp: DO.Name defaults to String.Empty. Modify
16089         code calling NameScope::[Un]RegisterName to ignore empty names just
16090         like it ignores null names.
16092 2009-01-05  Alan McGovern  <amcgovern@novell.com>
16094         * validators.h:
16095         * validators.cpp:
16096         * frameworkelement.h:
16097         * frameworkelement.cpp:
16098         * dependencyproperty.h:
16099         * dependencyproperty.cpp:
16100         * dependencyproperty.g.cpp: We need a reference to the current
16101         DependencyProperty so that write-once properties can be properly
16102         validated. Moved validation of StyleProperty from
16103         FrameworkElement.SetValue into the new StyleValidator.
16105 2009-01-05  Alan McGovern  <amcgovern@novell.com>
16107         * validators.h:
16108         * validators.cpp:
16109         * dependencyobject.cpp:
16110         * dependencyproperty.h:
16111         * dependencyproperty.cpp: When validating the Value we need a reference
16112         to the current DependencyObject as some properties are
16113         write-once/read-only
16115 2009-01-02  Jeffrey Stedfast  <fejj@novell.com>
16117         * textbox.cpp (TextBox): No longer maintains a TextLayout nor a
16118         dirty flag. TextBox is basically just a model now. Also added a
16119         ModelChanged event.
16120         (TextBox::Render): Removed.
16121         (TextBox::GetValue): Removed, dunno why it was ever overridden.
16122         (TextBox::OnPropertyChanged): Emit a ModelChangedEvent when the
16123         view needs to be updated.
16124         (TextBoxView): New class that renders the contents of a TextBox
16125         control.
16127         * value.cpp (Value::GetIsNull): Fixed compiler warning.
16129         * pipeline.h (class MediaMarker): dtor needs to be virtual.
16131 2009-01-02  Sebastien Pouliot  <sebastien@ximian.com>
16133         * validators.cpp: Remove the printf calls (that won't compile under
16134         SLED10 without changing includes).
16136 2008-12-22  Alan McGovern  <amcgovern@novell.com>
16138         * border.h:
16139         * validators.h:
16140         * validators.cpp:
16141         * dependencyproperty.g.cpp: Add validators for the Border class
16143         * value.h:
16144         * value.cpp:
16145         * value.h.in: unused_padding is now used as a bitfield. Currently used
16146         to indicate whether an object is null or not
16148         * frameworkelement.cpp: the styles hashtable only indicates if the
16149         current value comes from a style. It does not show if a dp has been
16150         bound to a style. If the current value is cleared, we need to update
16151         from the style to repopulate the styles hashtable and correctly set
16152         the style value. This can be optimised by passing the current dp to
16153         UpdateFromStyle.
16155         * dependencyobject.cpp: When do.SetValue (dp, null) is called, correctly
16156         set the null value as opposed to calling do.ClearValue(dp).
16158 2008-12-22  Andreia Gaita  <avidigal@novell.com>
16160         * cbinding.h|cpp, type-generated.cpp, type.h, value.h:
16161         Regenerated for DispatcherTimer
16163         * animation.h: Move Completed events to the timeline
16165         * clock.h|cpp: Add DispatcherTimer class, a timeline to drive a
16166         clock whose duration is the timer Interval property. The timeline's
16167         completed event is a tick of the timer, and the clock gets restarted
16168         when it completes.
16169         Save the current time when a clock starts so that clocks that are
16170         set to be started on the next tick with BeginOnTick include the time
16171         between the BeginOnTick call and the actual Begin in their elapsed
16172         time. Also, clocks beneath the time manager root clock now track time
16173         since they were started, and not since the time manager started.
16175 2008-12-20  Larry Ewing  <lewing@novell.com>
16177         * mediaelement.cpp (MediaElement::UpdateProgress): 
16178         * media.cpp (Image::UpdateProgress): Change the delta from 0.0005
16179         to 0.05 which appears to be what the docs actually say.
16181 2008-12-19  Sebastien Pouliot  <sebastien@ximian.com>
16183         * cbinding.cpp|h: Regenerated for read-only DP.
16184         * dependencyproperty.h: Expose IsReadOnly. Add read_only parameter 
16185         to RegisterManagedProperty.
16187 2008-12-19  Alan McGovern  <amcgovern@novell.com>
16189         * src.mdp:
16190         * animation.h:
16191         * dependencyproperty.g.cpp: Add validation + tests for
16192         Storyboard.TargetNameProperty and TargetPropertyProperty
16194 2008-12-18  Chris Toshok  <toshok@ximian.com>
16196         * control.h, text.h, frameworkelement.h, grid.h, mediaelement.h,
16197         textbox.h: decorate properties with @Validator attributes which
16198         the generator uses to generate the proper call to
16199         DependencyProperty::RegisterFull.
16201         * control.h, text.h, frameworkelement.h, grid.h, mediaelement.h,
16202         textbox.cpp: Remove the calls to
16203         DependencyProperty::SetValueValidator.  They're generated by the
16204         generator now from our metadata.
16206         * dependencyproperty.cpp, dependencyproperty.h: add new parameter
16207         to RegisterFull prototypes so we can supply a validator at
16208         registration time.
16210         * dependencyproperty.g.cpp: regen.
16211         
16212 2008-12-18  Chris Toshok  <toshok@ximian.com>
16214         * validators.cpp, validators.h: move these into a class instead of
16215         static C methods, and don't include C methods into every file.  we
16216         were getting warnings every time they went unused, and namespacing
16217         with C++ is better than #including them all over the place.
16219         * grid.cpp, control.cpp, text.cpp, mediaelement.cpp, textbox.cpp,
16220         dependencyproperty.cpp, frameworkelement.cpp: track change above.
16221         
16222 2008-12-18  Chris Toshok  <toshok@ximian.com>
16224         * xaml.cpp (class XamlElementInstanceManaged): this instance can
16225         be a DependencyObject sometimes.  we need an instance field to
16226         tell.
16227         (XamlElementInstanceManaged::XamlElementInstanceManaged): when
16228         @obj, set is_dependency_object to true.  This fixes setting x:
16229         namescope properties on managed DependencyObject subclasses, as in
16230         '<Button x:Name="foo" />'.
16231         (dependency_object_add_child): remove the template case from here.
16232         it'll be handled differently (being parsed at application time,
16233         essentially).
16235 2008-12-18  Alan McGovern  <amcgovern@novell.com>
16237         * text.cpp:
16238         * control.cpp:
16239         * validators.h:
16240         * mediaelement.cpp:
16241         * multiscaleimage.h:
16242         * multiscaleimage.cpp:
16243         * frameworkelement.cpp: Add validation to DPs
16245 2008-12-18  Alan McGovern  <amcgovern@novell.com>
16247         * mediaelement.cpp: Add validation for NaturalVideoHeight and
16248         NaturalVideoWidth.
16250 2008-12-18  Alan McGovern  <amcgovern@novell.com>
16252         * src.mdp:
16253         * grid.cpp:
16254         * textbox.h:
16255         * textbox.cpp:
16256         * Makefile.am:
16257         * dependencyobject.h:
16258         * frameworkelement.h:
16259         * frameworkelement.cpp:
16260         * dependencyproperty.cpp: Move parameter validation for DP's to use the
16261         new ValueValidator callback.
16263         * validators.h: All validators are defined in this header file so they
16264         can be easily reused for different DPs.
16266 2008-12-18  Alan McGovern  <amcgovern@novell.com>
16268         * grid.cpp: Correctly set the validators - forgot to revert changes
16269         before committing.
16271 2008-12-18  Alan McGovern  <amcgovern@novell.com>
16273         * grid.cpp:
16274         * dependencyobject.cpp:
16275         * dependencyproperty.h:
16276         * dependencyproperty.cpp: Add the ability to validate the value for a
16277         DependencyProperty before setting it.
16279 2008-12-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16281         * text.h, text.cpp: Remove some useless code.
16283 2008-12-16  Alan McGovern  <amcgovern@novell.com>
16285         * cbinding.h:
16286         * cbinding.cpp:
16287         * dependencyproperty.h: If a default value has been set in native code,
16288         propagate that to managed code.
16290 2008-12-15  Chris Toshok  <toshok@ximian.com>
16292         * template.cpp (ControlTemplate::Apply): make sure we clear the
16293         toplevel namescope from the template tree.  instead we keep a
16294         different namescope around (full of the duplicated elements) which
16295         is populated during DuplicateObject.
16297 2008-12-15  Jeffrey Stedfast  <fejj@novell.com>
16299         * xaml.cpp: Macroize the static tables.
16300         (create_binding_expression_from_markup): Got rid of
16301         BindingExtension::path.
16302         (xaml_markup_parse_binding): Update the markup pointer before a
16303         successful return.
16305 2008-12-15  Jackson Harper  <jackson@ximian.com>
16307         * xaml.cpp: fix typo.
16308         - remove sneaky debug
16310 2008-12-15  Jackson Harper  <jackson@ximian.com>
16312         * xaml.cpp: Always check if we are in buffering mode. (Otherwise
16313         we'll get cdata content at the end of a template or a namespace
16314         handler during a template).
16316 2008-12-15  Alan McGovern  <amcgovern@novell.com>
16318         * grid.h:
16319         * dependencyproperty.g.cpp: ShowGridLines is true by default.
16321 2008-12-15  Alan McGovern  <amcgovern@novell.com>
16323         * control.cpp: Default foreground brush is black
16325 2008-12-12  Jackson Harper  <jackson@ximian.com>
16327         * xaml.cpp: Remove some old code.
16329 2008-12-12  Jackson Harper  <jackson@ximian.com>
16331         * xaml.cpp: Still need to call setproperty on non managed
16332         attributes, they could be events.
16334 2008-12-12  Jackson Harper  <jackson@ximian.com>
16336         * xaml.cpp: A little cleanup so that we only try setting non-dp
16337         attributes on managed objects. (previously we would try but fail,
16338         so the results are basically the same, just less waste).
16340 2008-12-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16342         * runtime.h: Make DetachDownloaders public so that the plugin can call
16343           it.
16345 2008-12-12  Alan McGovern  <amcgovern@novell.com>
16347         * textbox.cpp: Add bounds checking to SelectionStartProperty too
16349 2008-12-12  Alan McGovern  <amcgovern@novell.com>
16351         * textbox.h:
16352         * textbox.cpp: Add range checking for MaxLengthProperty and
16353         SelectionLengthProperty
16355 2008-12-11  Sebastien Pouliot  <sebastien@ximian.com>
16357         * dependencyobject.h: Name setter is public in SL2 final.
16359 2008-12-11  Chris Toshok  <toshok@ximian.com>
16361         * control.h, control.cpp: hook up TemplateApplied event.
16363         * type-generated.cpp: regen.
16365 2008-12-11  Chris Toshok  <toshok@ximian.com>
16367         * control.h (class Control): generate cbinding/pinvoke for
16368         GetTemplateChild.
16370         * cbinding.h, cbinding.cpp: regen.
16372 2008-12-11  Alan McGovern  <amcgovern@novell.com>
16374         * textbox.cpp: Unbreak the build.
16376 2008-12-11  Alan McGovern  <amcgovern@novell.com>
16378         * textbox.cpp: It should not be possible to set a null value as the
16379         password.
16381 2008-12-11  Alan McGovern  <amcgovern@novell.com>
16383         * textbox.h:
16384         * dependencyproperty.g.cpp: Fix several issues with default values for
16385         TextBox and PasswordBox
16387 2008-12-11  Andreia Gaita  <shana@jitted.com>
16389         * cbinding.h|cpp, clock.h: Framerate accessors
16391 2008-12-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16393         * audio.cpp: Enqueue: don't enqueue anything if we've reached EOF. Also
16394           remove some stale code.
16396 2008-12-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16398         * mediaplayer.cpp, mediaplayer.h: Added locking to accesses to the
16399           audio field. Added comments/explicit verification in every method
16400           describing which methods must be thread-safe and which aren't.
16402 2008-12-10  Jeffrey Stedfast  <fejj@novell.com>
16404         * xaml.cpp (parser_error): Now takes varargs to simplify
16405         things. Fixed all callers to not strdup/g_strdup_printf (and leak)
16406         the message argument.
16407         (create_binding_expression_from_markup): Check that the source is
16408         a DO before casting.
16410 2008-12-10  Alan McGovern  <amcgovern@novell.com>
16412         * type.h:
16413         * textbox.h:
16414         * type-generated.cpp:
16415         * dependencyproperty.g.cpp: PasswordCharProperty should be a char. This
16416         is represented by an int32 in unmanaged code.
16418 2008-12-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16420         * audio-pulse.cpp: Fix int->enum conversion.
16422 2008-12-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16424         * audio-pulse.h, audio-pulse.cpp: PulsePlayer: Use enum instead of
16425           random constants for the connected variable.
16427 2008-12-10  Jackson Harper  <jackson@ximian.com>
16429         * xaml.cpp: Add a buffering mode to the parser, this mode is used
16430         for templates and simply buffers all the text without doing
16431         any real parsing. So everything between a
16432         <DataTemplate>..</DataTemplate> block is turned into a string.
16434 2008-12-10  Alan McGovern  <amcgovern@novell.com>
16436         * textbox.h:
16437         * textbox.cpp: Implement the SelectAll function and raise an event when
16438         the Password changes
16440         * type.h:
16441         * value.h:
16442         * cbinding.h:
16443         * cbinding.cpp:
16444         * type-generated.cpp:
16445         * dependencyproperty.g.cpp: Commit the files from the generator.
16447 2008-12-10  Alan McGovern  <amcgovern@novell.com>
16449         * textbox.h: Partial implementation of the PasswordBox control
16451 2008-12-09  Chris Toshok  <toshok@ximian.com>
16453         * template.h, template.cpp: add DataTemplates.
16455         * cbinding.h, cbinding.cpp, value.h, type.h, type-generated.cpp:
16456         regen.
16457         
16458 2008-12-09  Jeffrey Stedfast  <fejj@novell.com>
16460         * xaml.cpp (create_binding_expression_from_markup): Converter can
16461         also take a StaticResource.
16463         * playlist.cpp: Don't use ctype is*() with a char argument, these
16464         functions are meant to take unsigned char values cast to an
16465         int. Use the g_ascii_is*() functions instead.
16467         * xaml.cpp (create_binding_expression_from_markup):
16468         ConverterParameter can either be a string or a StaticResource. If
16469         it is a StaticResource, lookup the resource object.
16471         * binding.cpp (BindingExpressionBase::SetConverterParameter): Now
16472         takes a Value* since we need to handle either string or
16473         DependencyObject.
16475 2008-12-09  Jackson Harper  <jackson@ximian.com>
16477         * xaml.cpp: Don't use the cpp initializers.
16478         - More consistent naming.
16480 2008-12-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16482         * audio-pulse.cpp, audio-pulse.h: Improve locking while waiting for
16483           pulseaudio to initialize - keep waiting if we get spurious wakeups.
16485 2008-12-09  Jeffrey Stedfast  <fejj@novell.com>
16487         * xaml.cpp (create_binding_expression_from_markup): Lookup the
16488         StaticResource property for Source.
16490         * binding.cpp (BindingExpressionBase::SetSourceName): Removed. No
16491         longer needed.
16492         (BindingExpressionBase::*): No longer do dynamic lookup of the
16493         source_name.
16495 2008-12-09  Sebastien Pouliot  <sebastien@ximian.com>
16497         * usercontrol.cpp|h: Remove @CallInitialize and set IsTabStop to 
16498         false in C++ constructor.
16500 2008-12-09  Jeffrey Stedfast  <fejj@novell.com>
16502         * xaml.cpp (handle_xaml_markup_extension): Lots more refactoring
16503         action.
16504         (xaml_markup_parse_binding): Fixed to handle
16505         "Source={StaticResource ...}" syntax.
16507 2008-12-08  Sebastien Pouliot  <sebastien@ximian.com>
16509         * usercontrol.h: Tag with @CallInitialize since IsTabStop is false
16510         for UserControl while it's true for Control
16512 2008-12-08  Jeffrey Stedfast  <fejj@novell.com>
16514         * xaml.cpp: A bit of refactoring...
16516         * binding.cpp (BindingExpressionBase::SetConverterParameter):
16517         Added.
16518         (BindingExpressionBase::SetConverterCulture): Same.
16519         (BindingExpressionBase::SetConverter): Same.
16520         (BindingExpressionBase::SetSourceName): Same.
16521         (BindingExpressionBase::AttachListener): Lookup the source by name
16522         if we don't already have it.
16523         (BindingExpressionBase::GetValue): Same.
16524         (BindingExpressionBase::UpdateSource): Same.
16526         * xaml.cpp (binding_expression_from_str): Finished implementing.
16528 2008-12-07  Jeffrey Stedfast  <fejj@novell.com>
16530         Fixes bug #444872
16532         Patches by Argiris Kirtzidis
16534         * dependencyobject.h: Fix forward declarations of classes declared
16535         struct.
16537         * multiscaleimage.cpp (MultiScaleImage::RenderLayer): Use floating
16538         point constant to make sure we get the correct overload in MSVC.
16540         * playlist.cpp (duration_from_asx_str): Same.
16542         * value.cpp (Value::FreeValue): Free corner radius.
16544 2008-12-05  Geoff Norton  <gnorton@novell.com>
16546         * audio-pulse.cpp: PulseAudio sometimes gives us errors sync, 
16547         and sometimes async.  Lets ensure we can actually connect before
16548         continuing on.
16550 2008-12-05  Jeffrey Stedfast  <fejj@novell.com>
16552         * runtime.cpp (Surface::FocusElement): Removed #if SL_2_0 check.
16554         * dependencyobject.cpp (DependencyObject::IsValueValid): Removed
16555         #if SL_2_0 check.
16557         * binding.h (class Binding): Added more bool members.
16559         * xaml.cpp (binding_expression_from_str): New method to
16560         parse {Binding} markup syntax into a BindingExpression.
16561         (handle_xaml_markup_extension): Parse Binding markup extensions.
16563 2008-12-05  Chris Toshok  <toshok@ximian.com>
16565         * deepzoomimagetilesource.h (class DeepZoomImageTileSource): fix
16566         the GenerateAccessors thing the right way.
16568         * dependencyproperty.g.cpp: regen.
16569         
16570 2008-12-05  Jackson Harper  <jackson@ximian.com>
16572         * xaml.cpp: Move the markup extension handler out of
16573         set_attributes, ideally each markup extension will get it's own
16574         function eventually.
16576 2008-12-05  Jeffrey Stedfast  <fejj@novell.com>
16578         * binding.cpp (Binding::SetPropertyPath): Fixed to take a const
16579         char *
16581         * xaml.cpp: Conditionally define DEBUG, which I guess is a
16582         temporary thing, in a way which will not spew gcc warnings.
16584 2008-12-05  Jackson Harper  <jackson@ximian.com>
16586         * xaml.cpp: Let managed code own it's Value pointers.
16588 2008-12-04  Jackson Harper  <jackson@ximian.com>
16590         * xaml.cpp: We can store the Value* in the base element instance
16591         now, since they all use a Value.
16593 2008-12-05  Fernando Herrera  <fherrera@novell.com>
16595         * playlist.cpp:
16596         * playlist.h: Don't check duration at playlist level but let MediaPlayer
16597         handle it. Don't do a delayed element->Play() for repeats because that
16598         can broke js doing "e.Play();e.Stop()"
16600 2008-12-04  Fernando Herrera  <fherrera@novell.com>
16602         * playlist.cpp (Playlist::Open): Check duration properly.
16604 2008-12-04  Jeffrey Stedfast  <fejj@novell.com>
16606         * binding.cpp: Get rid of excessive use of 'this' keyword.
16608 2008-12-04  Geoff Norton  <gnorton@novell.com>
16610         * playlist.cpp: 100ms not 10s should be when we start playing the
16611         playlist entries.
16613 2008-12-04  Larry Ewing  <lewing@novell.com>
16615         * layout.cpp (RenderLine): do all the filling in one pass rather
16616         than adding a stroke at the end.  Tidy up the path creation and
16617         modification logic.
16619 2008-12-04  Jeffrey Stedfast  <fejj@novell.com>
16621         We only support vector fonts, so get rid of the TextFont::Render()
16622         API that is only useful as an abstraction over rendering as bitmap
16623         vs pathing. Leave the *Path() APIs which are the only ones
16624         actually used.
16626         * layout.cpp (RenderLine): Don't bother checking IsScalable(), all
16627         fonts are scalable for now.
16629         * font.cpp (TextFont::RenderGlyphPath): Removed.
16630         (TextFont::Render): Same.
16632 2008-12-04  Sebastien Pouliot  <sebastien@ximian.com>
16634         * control.h: Changed my mind and moved DefaultStyleKeyProperty and
16635         IsEnabledProperty to the managed world
16636         * dependencyproperty.g.cpp: regenerated
16638 2008-12-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16640         * pipeline.cpp: IMediaDemuxer::GetBufferedSize: Only calculate buffered
16641           size using video and audio streams. Fixes #456154.
16643 2008-12-04  Jackson Harper  <jackson@ximian.com>
16645         * xaml.cpp: The element instance now has ownership of the Value
16646         objects.
16648 2008-12-03  Jackson Harper  <jackson@ximian.com>
16650         * xaml.cpp: Cleanup managed namespaces when we shutdown.
16651         - Reduce the number of Value's we are creating. These still aren't
16652         being freed properly, but at least there isn't as many of them.
16654 2008-12-03  Geoff Norton  <gnorton at novell.com>
16656         * media.cpp: Ensure we null our reference to the image loader in
16657         all the failure cases to avoid a possible double free/unref.
16659 2008-12-03  Alan McGovern  <amcgovern@novell.com>
16661         * binding.h:
16662         * frameworkelement.h:
16663         * frameworkelement.cpp: If a Binding has bound to a datacontext, refresh
16664         the binding when the context is altered.
16666 2008-12-03  Alan McGovern  <amcgovern@novell.com>
16668         * frameworkelement.h:
16669         * dependencyproperty.g.cpp: DataContext should take 'object'
16671 2008-12-03  Jackson Harper  <jackson@ximian.com>
16673         * xaml.cpp: Call setproperty for all the children in the property
16674         block, this is needed because we aren't doing as much magic
16675         collection handling in addchild anymore.
16677 2008-12-02  Sebastien Pouliot  <sebastien@ximian.com>
16679         * control.h: Add DefaultStyleKeyProperty and IsEnabledProperty
16680         * dependencyproperty.g.cpp: regenerated
16682 2008-12-02  Jackson Harper  <jackson@ximian.com>
16684         * xaml.cpp: Map in enumerations in 2.0. So you can do something
16685         like <Visibility>Collapsed</Visibility>
16686         * enums.h|cpp: Expose a function so we can check if a certain enum
16687         exists.
16689 2008-12-02  Jackson Harper  <jackson@ximian.com>
16691         * xaml.cpp: We can map in non-DO managed elements now, so check to
16692         make sure it's actually a dependency object.
16693         - Pass NULL for the property name if we weren't able to query for
16694         a content property name.  The managed backing might be able to
16695         find a name some other way.
16697 2008-12-02  Jackson Harper  <jackson@ximian.com>
16699         * xaml.cpp: Return false if the base content property setter didnt
16700         work.
16702 2008-12-02  Alan McGovern  <amcgovern@novell.com>
16704         * cbinding.h:
16705         * cbinding.cpp:
16706         * dependencyproperty.h:
16707         * dependencyproperty.cpp: Ensure the default value of a CustomDP is
16708         propagated to the unmanaged
16710 2008-12-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16712         * dependencyobject.cpp: We need to raise changed events when clearing
16713           values too.
16714         * cbinding.cpp, cbinding.h: Regenerated.
16716 2008-12-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16718         * dependencyproperty.h: Added a IsNullable setter (instead of adding
16719           yet another parameter to the Register methods).
16721 2008-12-02  Andreia Gaita  <shana@jitted.com>
16723         * Makefile.am, stackpanel.cpp|h: Add StackPanel implementation
16725 2008-12-02  Andreia Gaita  <shana@jitted.com>
16727         * panel.cpp: Fix debugging messages
16729 2008-12-01  Larry Ewing  <lewing@novell.com>
16731         * brush.cpp, brush.h: add Fill and Stroke methods to brush so that
16732         we can handle image and video brush opacity properly.
16734         * src/control.cpp
16735         * src/layout.cpp
16736         * src/panel.cpp
16737         * src/shape.cpp
16738         * src/text.cpp: use the new Fill and Stroke methods when using
16739         brushes.  Fixes test-imagebrush-opacity* when the masters are
16740         correctly updated.
16742 2008-12-01  Chris Toshok  <toshok@ximian.com>
16744         * frameworkelement.h: add decl for ClearBindingExpression.
16745         
16746         * frameworkelement.cpp (FrameworkElement::ClearBindingExpression):
16747         factor out the 2 operations (Detach + hash_remove) here since
16748         we'll be calling it in a couple places.
16749         (binding_destroy): this should delete value, not call ValueFree.
16750         (FrameworkElement::SetBindingExpression): call
16751         ClearBindingExpression if there's a current one, and don't ref the
16752         expression.  Value will hold one.
16753         (FrameworkElement::ClearValue): a couple of changes.
16754         
16755         1. Call ClearBindingExpression instead of just removing the
16756         binding from the hash (and not detaching it...)
16758         2. don't remove the style value from the style has.
16760         3. instead of looping over all the setters in the style just set
16761         the value back to the value in the styles hash.
16762         
16763         4. if we're going to be resetting the value to the style, don't
16764         notify listeners in UIElement::ClearValue.  it'll happen in
16765         SetValue.
16767 2008-12-01  Geoff Norton  <gnorton@novell.com>
16769         * audio.cpp: Fix a logic error that prevented falling back to alsa when
16770         built with both pulse and alsa support.
16772         r: toshok
16774 2008-12-01  Chris Toshok  <toshok@ximian.com>
16776         * template.cpp, template.h: when copying the tree over, register
16777         the template element names to their instantiated counterparts.
16778         and build up a NameScope object as we go.
16780         * frameworkelement.cpp: add a "template_namescope" which maps
16781         names that were registered in the template itself to elements in
16782         the instantiated visual tree.
16784         * control.cpp (Control::GetTemplateChild): look the child up in
16785         the template namescope, not against the visual tree.
16787 2008-12-01  Jackson Harper  <jackson@ximian.com>
16789         * xaml.cpp: Value types can not have properties set on them.
16791 2008-12-01  Fernando Herrera  <fherrera@novell.com>
16793         * mediaelement.cpp:
16794         * mediaplayer.cpp:
16795         * pipeline.cpp:
16796         * playlist.cpp:
16797         * playlist.h: Implement Server side playlists. Still missing duration based
16798         constraints.
16800 2008-12-01  Alan McGovern  <amcgovern@novell.com>
16802         * border.h: ChildProperty should not be exposed
16804 2008-12-01  Alan McGovern  <amcgovern@novell.com>
16806         * frameworkelement.cpp: If a null value is being set to a DP when using
16807         databinding, clear the value instead. Makes test pass. (left this out
16808         of the last commit)
16810 2008-11-28  Alan McGovern  <amcgovern@novell.com>
16812         * binding.h:
16813         * cbinding.h:
16814         * binding.cpp:
16815         * cbinding.cpp:
16816         * frameworkelement.cpp: DataBinding now works for one-way, one-time and
16817         two-way bindings with managed objects.
16819 2008-11-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16821         * audio.cpp: Remove a print_stack_trace.
16823 2008-11-27  Andreia Gaita  <shana@jitted.com>
16825         * runtime.cpp: enable debug #if that was disabling the D key.
16827 2008-11-27  Alan McGovern  <amcgovern@novell.com>
16829         * frameworkelement.cpp: Fix some build breakage under the SL1 profile.
16831 2008-11-27  Alan McGovern  <amcgovern@novell.com>
16833         * binding.h:
16834         * cbinding.h:
16835         * binding.cpp:
16836         * cbinding.cpp:
16837         * frameworkelement.cpp: Allow the Binding class to be mapped between
16838         managed and unmanaged code.
16840 2008-11-26  Larry Ewing  <lewing@novell.com>
16842         * shape.cpp (Shape::IsCandidateForCaching): add more logic to
16843         avoid the cache in special cases.
16845 2008-11-26  Jackson Harper  <jackson@ximian.com>
16847         * xaml.cpp|h: clean up the managed/plugin interface, use Values
16848         for most things instead of expected DependencyObjects.
16849         * deepzoomimagetilesource.h|cpp: Add the uri property and a public
16850         constructor so we can parse these from attributes.
16851         * cbinding.h|cpp:
16852         * dependencyproperty.g.cpp: regen
16854 2008-11-26  Alan McGovern  <amcgovern@novell.com>
16856         * frameworkelement.cpp: Store a Value * rather than
16857         BindingExpressionBase in the bindings hashtable to allow
16858         GetLocalValue to work.
16860 2008-11-26  Alan McGovern  <amcgovern@novell.com>
16862         * frameworkelement.h:
16863         * dependencyobject.h:
16864         * frameworkelement.cpp: Styles are now used/ignored correctly when local
16865         values are set/unset. Added tests for this.
16867         * dependencyobject.cpp: GetLocalValueWithError should call GetLocalValue
16869         * shape.cpp: args->new_value will be null if DO.ClearValue has been
16870         called. In this case use DP.DefaultValue
16872 2008-11-26  Alan McGovern  <amcgovern@novell.com>
16874         * binding.h:
16875         * cbinding.h:
16876         * binding.cpp:
16877         * cbinding.cpp:
16878         * frameworkelement.h:
16879         * dependencyobject.h:
16880         * frameworkelement.cpp:
16881         * dependencyobject.cpp: Implement a basic ReadLocalValue equivalent for
16882         unmanaged code. Only handles databindings.
16884 2008-11-26  Alan McGovern  <amcgovern@novell.com>
16886         * binding.h:
16887         * cbinding.h:
16888         * binding.cpp:
16889         * cbinding.cpp:
16890         * frameworkelement.cpp: Rename the members of BidningExpressionBase to
16891         better reflect their actual usage.
16893 2008-11-26  Alan McGovern  <amcgovern@novell.com>
16895         * style.h:
16896         * style.cpp:
16897         * collection.h:
16898         * collection.cpp: InsertWithError should return a bool to match Insert
16900         * media.h:
16901         * media.cpp: Fix regression introduced in r119963 when changing which
16902         collection functions were virtual
16904 2008-11-25  Larry Ewing  <lewing@novell.com>
16906         * uielement.cpp (UIElement::FrontToBack): enable ftb on 90 degress
16907         rotations as well.
16909         * media.cpp (Image::GetCoverageBounds): be slightly smarter about
16910         computing coverage.
16912 2008-11-25  Geoff Norton  <gnorton@novell.com>
16914         * cbinding.(cpp|h): Regenerate
16915         * downloader.h: Expose the status code and status text to the
16916         DownloaderResponse object.
16918 2008-11-25  Alan McGovern  <amcgovern@novell.com>
16920         * style.h:
16921         * error.h:
16922         * style.cpp:
16923         * cbinding.h:
16924         * cbinding.cpp:
16925         * collection.h:
16926         * dependencyproperty.g.cpp: Added full support for sealing styles.
16928 2008-11-25  Stephane Delcroix  <sdelcroix@novell.com>
16930         * multiscaleimage.h: element_to_logical_point
16932 2008-11-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16934         * cbinding.cpp, cbinding.h: Regenerated.
16936 2008-11-24  Larry Ewing  <lewing@novell.com>
16938         * media.cpp (MediaBase::SetSource): only queue a tick if we need
16939         to, fixes regression on mediaelement downloaders.
16941         r:toshok
16943 2008-11-24  Larry Ewing  <lewing@novell.com>
16945         * mediaelement.cpp (MediaElement::GetCoverageBounds): be more
16946         precise about the coverage bounds.  Use the coveragebounds when
16947         invalidating based on position so that we don't invalidate a lot
16948         more area than we need to.  Only use CAIRO_FILTER_FAST when
16949         playing use the default when in other states.
16951 2008-11-24  Geoff Norton  <gnorton@novell.com>
16953         * media.cpp: If we do a SetSource on a image element with a 
16954         completed downloader, short circuit the async call, as the downloader
16955         theoretically can be immediately reused in javascript after the call.
16956         Also remove the internal completed event after its been fired, for the
16957         same reason (downloader reuse).  Fixes halo3
16958         
16959         r: lewing
16961 2008-11-24  Larry Ewing  <lewing@novell.com>
16963         * media.cpp, media.h: hide USE_OPT_RGB24 inside MOON_FORMAT_* use
16964         them where appropriate.
16966         * mediaplayer.cpp: use MOON_FORMAT_RGB.
16968 2008-11-24  Larry Ewing  <lewing@novell.com>
16970         * brush.cpp, brush.h: add IsAnimating member to indicate if the
16971         brush is expected to change each render tick.
16973         * shape.cpp: don't cache animating brushes.
16975 2008-11-22  Jeffrey Stedfast  <fejj@novell.com>
16977         * frameworkelement.cpp (FrameworkElement::SetBindingExpression):
16978         Set the destination element and property on the binding expression
16979         so that we can easily get at them in the callback when the source
16980         property changes. Instead of passing 'this' as the user_data
16981         argument to the property change handler, pass the expression.
16982         (FrameworkElement::BoundPropertyChanged): No longer need to
16983         iterate thru the hash table, we now are able to get all the info
16984         we need from the binding expression.
16985         (FrameworkElement::bound_property_changed): Updated.
16987 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
16989         * frameworkelement.cpp (FrameworkElement::BoundPropertyChanged):
16990         Implemented properly (I think/hope).
16992 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
16994         * binding.cpp (BindingExpressionBase::AttachListener): Now takes a
16995         callback and user data.
16996         (BindingExpressionBase::DetachListener): Now takes a callback.
16998         * frameworkelement.cpp (FrameworkElement::BoundPropertyChanged):
16999         Moved here from binding.cpp.
17000         (FrameworkElement::SetBindingExpression): Made protected instead
17001         of public.
17002         (FrameworkElement::GetBindingExpression): Same.
17004 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
17006         * frameworkelement.cpp: Fixed to build w/o SL2 support.
17008 2008-11-21  Larry Ewing  <lewing@novell.com>
17010         * brush.cpp (VideoBrush::SetupBrush): make sure we use the fast
17011         filter in videobrush when scaling.
17013         r: kangaroo
17015 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
17017         * binding.cpp (changed_cb): Implemented... but it's
17018         wrong. Committing anyay with a big FIXME explaining why it's
17019         wrong.
17021         * frameworkelement.cpp (FrameworkElement::SetBindingExpression):
17022         New method to set a binding expression for a property.
17023         (FrameworkElement::GetBindingExpression): Get the binding
17024         expression for a property.
17025         (FrameworkElement::SetValueWithErrorImpl): Cleaned up the binding
17026         stuff to make the logic a bit clearer.
17028 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
17030         * binding.cpp (BindingExpressionBase::AttachListener): We want to
17031         use AddPropertyChangeHandler(), not AddPropertyChangeListener() -
17032         we want to provide our own callback, not re-use
17033         OnSubPropertyChanged() for a purpose it wasn't meant for.
17035         * frameworkelement.cpp (FrameworkElement::OnSubPropertyChanged):
17036         #if 0'd out, we might not need this afterall.
17038         * panel.cpp (Panel::OnSubPropertyChanged): Reverted back to only
17039         chaining up if the property change wasn't handled.
17041         * text.cpp (Inline::OnSubPropertyChanged): Same.
17042         (TextBlock::OnSubPropertyChanged): Same.
17043         (Glyphs::OnSubPropertyChanged): Same.
17045 2008-11-21  Larry Ewing  <lewing@novell.com>
17047         * shape.cpp: disable custom layout code as it seems to have
17048         changed in 2.0 final.
17050 2008-11-21  Alan McGovern  <amcgovern@novell.com>
17052         * frameworkelement.cpp: If a style is already set, you cannot set it
17053         again.
17055 2008-11-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17057         * value.cpp, value.h, value.h.in: Added a npobj field and Value ctor to
17058           create such a Value.
17060 2008-11-21  Alan McGovern  <amcgovern@novell.com>
17062         * frameworkelement.cpp: Implement initial support for using a Style when
17063         it is present.
17065 2008-11-20  Jeffrey Stedfast  <fejj@novell.com>
17067         * text.cpp (Inline::OnSubPropertyChanged): Always chain up.
17068         (TextBlock::OnSubPropertyChanged): Always chain up.
17069         (Glyphs::OnSubPropertyChanged): Always chain up.
17071         * geometry.cpp (Geometry::OnSubPropertyChanged): Always chain up.
17073         * brush.cpp (Brush::OnSubPropertyChanged): Always chain up.
17075         * panel.cpp (Panel::OnSubPropertyChanged): Always chain up.
17077         * binding.cpp (BindingExpressionBase::GetValue): Implemented, but
17078         might not be correct.
17080         * frameworkelement.cpp (FrameworkElement::OnSubPropertyChanged):
17081         Stubbed out.
17083 2008-11-20  Jeffrey Stedfast  <fejj@novell.com>
17085         * binding.cpp (BindingExpressionBase::AttachListener): Now takes
17086         an FE argument as the listener.
17087         (BindingExpressionBase::DetachListener): Same.
17089         * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
17090         Fixed up a bit.
17092 2008-11-20  Alan McGovern  <amcgovern@novell.com>
17094         * src.mdp:
17095         * binding.h:
17096         * binding.cpp:
17097         * frameworkelement.cpp: Add more support code for databinding.
17099 2008-11-19  Geoff Norton  <gnorton@novell.com>
17101         * audio.cpp: If we fail to initialize pulseaudio, lets try alsa before
17102         giving up on media entirely.
17104         r: toshok
17106 2008-11-19  Jeffrey Stedfast  <fejj@novell.com>
17108         Note: the way this is abstracted will probably go thru several
17109         iterations of change.
17111         * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
17112         Do special handling if setting a binding expression or if the
17113         value is replacing a binding expression.
17115         * dependencyobject.cpp (DependencyObject::IsValueValid): Made
17116         protected, no reason for this to be public.
17117         (DependencyObject::SetValueWithErrorImpl): New virtual method, has
17118         all the code logic of the old SetValueWithError().
17119         (DependencyObject::SetValueWithError): Call IsValueValid() and
17120         then SetValueWithErrorImpl().
17122 2008-11-19  Jeffrey Stedfast  <fejj@novell.com>
17124         * frameworkelement.cpp (FrameworkElement::IsValueValid):
17125         Overridden so that we can check if the Value is a
17126         BindingExpression. All DependencyProperties of FrameworkElements
17127         may be data-bound.
17129 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17131         * mediaplayer.h, mediaplayer.cpp: Make MediaPlayer use MediaElement's
17132           Rendered/DroppedFramesPerSecond DP.
17133         * pipeline.cpp: Fix warning.
17135 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17137         * dependencyproperty.g.cpp: Regenerated.
17138         * grid.h: ColumnDefinitionCollection doesn't have a public ctor.
17139         * mediaelement.h: Add RenderedFramesPerSecond, DownloadProgressOffset
17140           and DroppedFramesPerSecond.
17142 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17144         * cbinding.cpp, cbinding.h, dependencyproperty.g.cpp, text.h, type.h,
17145           type-generated.cpp, value.h: Added InputMethod.
17147 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17149         * geometry.cpp: Fix breakage in r119300.
17151 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17153         * dependencyproperty.g.cpp, transform.h: Corcompare.
17154         * geometry.h: Move FillRule from Geometry to
17155           PathGeometry/GeometryGroup.
17157 2008-11-18  Jeffrey Stedfast  <fejj@novell.com>
17159         * expression.h, binding.cpp|h: added to the build
17161 2008-11-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17163         * animation2.h, dependencyproperty.g.cpp: Corcompare fixes.
17165 2008-11-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17167         * uielement.h: Define UseLayoutRounding accessors to unbreak build.
17169 2008-11-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17171         * dependencyproperty.g.cpp, frameworkelement.h, style.h, trigger.h,
17172           uielement.h: More corcompare work.
17174 2008-11-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17176         * cbinding.cpp, cbinding.h, trigger.h, type.h, type-generated.cpp,
17177           value.h: Add TriggerBase, make EventTrigger inherit from it and
17178           regenerate.
17180 2008-11-17  Jeffrey Stedfast  <fejj@novell.com>
17182         * enums.cpp (initialize_enums): Map BindingMode in unmanaged land.
17184 2008-11-17  Michael Dominic K.  <mdk@mdk.am>
17186         * clock.cpp: Fixing seek-test-multiple-repeat.html (a problem with multiple 
17187         repeats when seeking anims with RepeatBehavior >= 2.0).
17189 2008-11-17  Michael Dominic K.  <mdk@mdk.am>
17191         * clock.cpp: When running without idle hint (runtime init) do not apply it 
17192         here. Makes the idle hint switch actually do something and makes debugging
17193         easier.
17195 2008-11-14  Michael Dominic K.  <mdk@mdk.am>
17197         * animation.cpp:
17198         * animation.h: The KeySpline quadratics used to generate interpolation
17199         values are generated dynamically = faster and less mem.
17201 2008-11-14  Michael Dominic K.  <mdk@mdk.am>
17203         * animation.cpp:
17204         * animation.h: Slightly more nice value caching.
17206 2008-11-14  Geoff Norton  <gnorton@novell.com>
17208         * pipeline-ui.cpp:
17209         * codec-url.h:  Update to the final URLs for beta 1
17211         r: miguel
17213 2008-11-14  Geoff Norton  <gnorton@novell.com>
17215         * pipeline-ui.(cpp|h): Rework the pipeline for codec installation to 
17216         handle the pango markup we're using.
17218         r: miguel
17220 2008-11-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17222         * mediaelement.cpp: SetMedia: when getting the playlist for an
17223           asxdemuxer, set the media for it. Fixes a memory leak (the media
17224           should get disposed with the playlist gets disposed).
17225         * pipeline.cpp, pipeline.h: Implement ASXDemuxer::Dispose.
17226         * playlist.cpp, playlist.h: Implement Playlist[Entry]::GetTypeName, and
17227           add a parameter to PlaylistEntry::SetMedia to specify whether the
17228           entry should start playing the media or not.
17230 2008-11-13  Sebastien Pouliot <sebastien@ximian.com>
17232         * runtime.cpp (running_on_nvidia): Fix leak of Display
17233         r: kangaroo
17235 2008-11-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17237         * mediaelement.cpp: MediaElement::Play: we want to queue a PlayNow
17238           request even if we're currently playing, there might be a PauseNow
17239           request already queued.
17241 2008-11-11  Sebastien Pouliot <sebastien@ximian.com>
17243         * pipeline-asp.cpp: Fix case where get_audio_data returns NULL
17244         r: fer
17246 2008-11-11  Geoff Norton  <gnorton@novell.com>
17248         * Makefile.am: Only build the appropriate pipeline-ui based on wether
17249         we're building on a os/arch combo that supports the SMP.
17250         * codec-url.h: Set the appropriate CODEC_URL for our target platform
17251         * pipline-nocodec-ui.(cpp|h): New UI for unsupported OS/Arch targets
17252         of the codec install pipeline.
17254 2008-11-11  Geoff Norton  <gnorton@novell.com>
17256         * debug.h: Its unlikely that debug flags will be set.
17258         r: spouliot
17260 2008-11-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17262         * pipeline.cpp: IMediaStream::Dispose: delete our queue of frames.
17263           Plugs a memory leak.
17265 2008-11-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17267         * playlist.cpp: Playlist::Dispose: dispose all the items in our entries
17268           too.
17270 2008-11-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17272         * pipeline.cpp, pipeline.h: Plug a memory leak.
17274 2008-11-10  Geoff Norton  <gnorton@novell.com>
17276         * runtime.cpp: Do not enable debug features by default, and remove a 
17277         superflous warning.
17278         r: toshok
17280 2008-11-10  Geoff Norton  <gnorton@novell.com>
17282         * runtime.cpp: Force NVIDIA binary driver to go to the image backend
17283         to work around serious performance problems when we use accelerated
17284         rendering with it.
17285         r: toshok
17287 2008-11-10  Chris Toshok  <toshok@ximian.com>
17289         * runtime.cpp (copy_input_list_from_node): rename
17290         copy_input_list_with_visibility_check to this method.  the
17291         caller (HandleMouseEvent) already walks over the list to determine
17292         if an element has total render or hittest visibility == false.  By
17293         definition, everything before that in the input list (the input
17294         list is ordered from most deeply nested to the root) also has
17295         those == false, so we can short circuit things by traversing from
17296         the tail of the list, and then only copying the nodes we've seen
17297         before (but which come after) the offending one.
17299 2008-11-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17301         * mediaplayer.cpp, mediaelement.cpp, playlist.cpp, playlist.h,
17302           pipeline.cpp: Instead of calling Media::Dispose in MediaElement,
17303           move that to Playlist(Entry) and Dispose of the playlist instead.
17304           This makes re-playing already played content in playlists work
17305           again.
17307 2008-11-10  Michael Dominic K.  <mdk@mdk.am>
17309         * animation.cpp:
17310         * animation.h: Cache some vals internally in *Animation for better 
17311         performance in loop-called routines.
17313 2008-11-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17315         * audio.cpp, audio.h, mediaelement.cpp, mediaplayer.cpp, mediaplayer.h:
17316           Implement MediaElement.AudioStreamIndex.
17318 2008-11-07  Michael Dominic K.  <mdk@mdk.am>
17320         * clock.cpp: Fixing one broken block in the AnimationMatrix2 test. 
17321         It was broken but diff was too small to be picked by the test runner.
17323 2008-11-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17325         * pipeline-ffmpeg.cpp: FfmpegDecoder::DecodeFrame: for audio packets we
17326           need to keep decoding until the entire input has been consumed.
17328 2008-11-06  Geoff Norton  <gnorton@novell.com>
17330         * pipline(-ui).cpp: Move the codec location on more time.
17331         r: miguel
17333 2008-11-05  Michael Dominic K.  <mdk@mdk.am>
17335         * animation.cpp:
17336         * animation.h: Fixing one more mem-leak case. Fixes #436068.
17338 2008-11-06  Stephane Delcroix  <sdelcroix@novell.com>
17340         * downloader.h: change the signature of downloaderRequestFinishedHandler
17341         to pass the resulting uri.
17343         * downloader.cpp: validate the returned uri against redirection policies
17345         r:gnorton
17347 2008-11-05  Jeffrey Stedfast  <fejj@novell.com>
17349         Patches by Argiris Kirtzidis to fix bug #441687
17351         * audio.cpp: Use g_alloca() to create dynamically sized arrays on
17352         the stack rather than relying on g++ features.
17354         * clock.cpp: Applied MSVC portability patch which implements
17355         gettimeofday().
17357 2008-11-04  Fernando Herrera  <fherrera@novell.com>
17359         * mediaplayer.cpp: Add logging information about selected streams
17360         properties.
17362 2008-11-03  Jeffrey Stedfast  <fejj@novell.com>
17364         See tests/xaml/test-textblock-actualheight.html and
17365         test-textblock-hittest.html as compared with Microsoft
17366         Silverlight.
17368         * layout.cpp (TextLayout::Layout*): trailing LineBreak elements
17369         actually do count toward ActualHeight metrics.
17371 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17373         * audio-pulse.cpp: OnContextStateChanged: always print an error message
17374           if we fail to connect to pa daemon.
17376 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17378         * mediaelement.h, mediaelement.cpp: Add a MissingCodecs flag and don't
17379           invalidate when that flag is set.
17381 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17383         * runtime.cpp: get_flags: take the default flags as an argument, this
17384           way the environment variables can disable flags which are enabled
17385           by default.
17387 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17389         * pipeline-ui.cpp, runtime.h, runtime.cpp, pipeline.cpp: Only enable ms
17390           codecs by default for browsers.
17392 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17394         * mediaplayer.cpp: FrameCallback: If the frame couldn't be retrieved
17395           because of a buffer underflow and we're waiting for the initial
17396           frame, enqueue a request for another frame. Fixes #440317.
17398 2008-11-03  Larry Ewing  <lewing@novell.com>
17400         * rect.h (struct Rect): clamp the intersection w/h to 0 fixes some
17401         extreme exposure issues in popfly.
17403 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17405         * runtime.h: Remove #include <config.h> from headers
17407 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17409         * mp3.h, mp3.cpp: Mp3FrameReader::TryReadFrame: if we don't succeed in
17410           reading a header, try to sync to one. FindMpegHeader: Return proper
17411           error code (MEDIA_NO_MORE_DATA) if we can't read more data. Fixes
17412           #426440 (slideshow doesn't go beyond the first slide).
17414 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17416         * mediaelement.h, mediaelement.cpp: When a AutoPlay=False media is
17417           opened, the final state is Stopped, not Paused. When media finish,
17418           the final state is Paused, not Stopped. Fixes #365827.
17420 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17422         * audio-alsa.cpp: Add another dlopened symbol, fixes an unresolved
17423           external reference.
17425 2008-11-03  Fernando Herrera  <fherrera@novell.com>
17427         * audio-alsa.cpp:
17428         * audio-pulse.cpp:
17429         * audio.cpp:
17430         * audio.h:
17431         * debug.cpp:
17432         * debug.h:
17433         * dependencyobject.cpp:
17434         * downloader.cpp:
17435         * font.cpp:
17436         * http-streaming.cpp:
17437         * layout.cpp:
17438         * media.cpp:
17439         * mediaelement.cpp:
17440         * mediaplayer.cpp:
17441         * mms-downloader.cpp:
17442         * pipeline-asf.cpp:
17443         * pipeline-ffmpeg.cpp:
17444         * pipeline-ui.cpp:
17445         * pipeline.cpp:
17446         * playlist.cpp:
17447         * runtime.cpp:
17448         * runtime.h:
17449         * text.cpp:
17450         * textbox.cpp:
17451         * xaml.cpp:
17452         * yuv-converter.cpp: Change debug macros to runtime conditionals based
17453           on MOONLIGHT_DEBUG env variable of compile time. Checks are only
17454           enabled if configured with --with-debug=yes option.
17456 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17458         * debug.cpp: Don't dlopen mono, just link with it if -with-debug is
17459           specified.
17461 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17463         * pipeline-ffmpeg.cpp: Revert r117547 and related.
17465 2008-11-02  Chris Toshok  <toshok@ximian.com>
17467         * text.cpp (TextBlock::InsideObject): textblocks are hit only in
17468         their ActualWidth/ActualHeight, not in the full bounding
17469         rectangle.  Fixes bug #434258.
17471 2008-10-31  Chris Toshok  <toshok@ximian.com>
17473         * runtime.h, runtime.cpp: remove transparency from properties of
17474         the surface
17475         (Surface::PaintToDrawable): add a @transparent argument to this
17476         method.
17478         * window-gtk.cpp (MoonWindowGtk::expose_event): pass the window's
17479         transparency to Surface::PaintToDrawable.
17481         * window.h: move the idea of transparency here from Surface.
17483 2008-10-31  Jeffrey Stedfast  <fejj@novell.com>
17485         Portability patch by Argiris Kirtzidis.
17487         * *.cpp: s/#if false/#if 0/g and s/#if true/#if 1/g
17489         * xaml.cpp (start_element): strchr() returns const.
17490         (repeat_behavior_from_str): Same.
17492 2008-10-31  Larry Ewing  <lewing@novell.com>
17494         * runtime.cpp (Surface::PaintToDrawable): instead of the content
17495         type check if active_window is fullscreen. This is uglier but the
17496         mozilla hands us rgb drawables not rgba drawables so until we have
17497         a better plan this will solve the problem.
17499 2008-10-31  Larry Ewing  <lewing@novell.com>
17501         * runtime.cpp (Surface::PaintToDrawable): only follow the
17502         transparent path if our target supports it.
17504 2008-10-31  Sebastien Pouliot  <sebastien@ximian.com>
17506         * pipeline-asp.cpp (ASFDemuxer::ReadHeader): Fix logic when skipping
17507         a bad stream so we dont include NULL holes streams[]
17509 2008-10-31  Michael Dominic K.  <mdk@mdk.am>
17511         * runtime.cpp: Reverting for now the recent crossing events 
17512         changes -- causes issues with Ink Journal.
17514 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17516         * pipeline.h, pipeline.cpp: Added IMediaStream::GetMediaTypeName.
17517         * mediaplayer.cpp: Use IMediaStream::GetMediaTypeName instead of
17518           complex ifs on the GetType return value.
17520 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17522         * debug.cpp: dlopen libmono too for our stack walking methods.
17524 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17526         * pipeline-ffmpeg.cpp: Don't use ffmpeg version defines which aren't
17527           present in older ffmpeg version (r10885).
17529 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17531         * pipeline-ffmpeg.cpp: DecodeFrame: free the frame after error
17532           conditions.
17534 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17536         * pipeline-ffmpeg.cpp: dlopen ffmpeg.
17538 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17540         * pipeline.cpp: Fix warning (variable might be used uninitialized).
17542 2008-10-30  Jeffrey Stedfast  <fejj@novell.com>
17544         Fix for bug #435815.
17546         * stylus.cpp (StrokeCollection::AddedToCollection): Override so
17547         that we can avoid aborting if a stroke already has a logical
17548         parent (not an error for strokes).
17550         * error.h (MoonError::Clear): New convenience method.
17552 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17554         * libmoon.h: Fix build.
17556 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17558         * audio.cpp, brush.cpp, cbinding.h, dependencyproperty.g.cpp,
17559           Makefile.am, media.cpp, media.h, mediaelement.cpp, mediaelement.h,
17560           mediaplayer.cpp, mediaplayer.h, pipeline.cpp, type-generated.cpp,
17561           src.mdp, playlist.cpp: Split MediaElement out from media.[cpp|h]
17562           into its own mediaelement.[cpp|h].
17564 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17566         * type-generated.cpp, Makefile.am, media.h, mediaplayer.cpp,
17567           mediaplayer.h, mplayer.cpp, mplayer.h, src.mdp: Rename
17568           mplayer.[cpp|h] -> mediaplayer.[cpp|h].
17570 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17572         * cbinding.cpp, cbinding.h: Regenerated.
17574 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17576         * audio.cpp, audio-pulse.cpp, media.cpp, mms-downloader.h, mp3.cpp,
17577           mplayer.h, pipeline.cpp, pipeline.h, pipeline-asf.cpp,
17578           pipeline-asf.h, src.mdp, xaml.cpp: Move asf related bits from
17579           pipeline.[h|cpp] to pipeline-asf.[h|cpp].
17581 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17583         * pipeline.h: IMediaDemuxer: Add Source getter.
17584         * pipeline.cpp: IMediaDemuxer::GetLastAvailablePts: don't take into
17585           account streams which aren't selected. IMediaStream::AppendFrame:
17586           update last available pts with the frame's pts.
17587         * media.cpp: MediaElement::CalculateBufferingProgress: never use last
17588           available pts to calculate buffering progress for streams which can
17589           seek to directly to the requested pts. Fix math to check for
17590           negative values to avoid weird results.
17592 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17594         * media.cpp, media.h: MediaElement: fix buffering progress after
17595           seeking regression - don't only use the buffer level in the
17596           pipeline to report buffering progress, but take into accout the
17597           point from where we seek.
17598         * mp3.h, mp3.cpp: Store the AudioStream in the frame reader and update
17599           the stream's LatestAvailablePts field whenever we read a frame.
17600           Also rename the previous 'stream' (IMediaSource*) field to 'source'
17601           to avoid confusion with AudioStream.
17602         * pipeline.cpp, pipeline.h: Add a last_available_pts field to
17603           IMediaStream and the corresponding GetLastAvailablePts to
17604           IMediaDemuxer, enabling the calculation of correct buffering
17605           progress after a seek. This also requires a codec abi version bump.
17607 2008-10-29  Sebastien Pouliot  <sebastien@ximian.com>
17609         * clock.h: Change MilliSeconds_[From|To]Pts to use the new
17610         PTS_PER_MILLISECOND define.
17611         * mplayer.cpp: Rework fix on GetTimeoutInterval to avoid a division
17612         resulting in zero (and the endless loop of #439631).
17614 2008-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17616         * mplayer.cpp: GetTimeoutInterval: Calculate timeout correctly. Fixes
17617           #439631.
17619 2008-10-28  Jeffrey Stedfast  <fejj@novell.com>
17621         * downloader.cpp (scheme_is): Check protocol non-null.
17622         (same_scheme): Same.
17624         * uri.cpp (Uri::Parse): If no protocol is found, init to NULL
17625         instead of file. Also make sure to parse the path in all valid
17626         cases.
17628 2008-10-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17630         * mplayer.cpp: LoadVideoFrame: if target_pts is invalid, set 0 as
17631           target_pts.
17632         * media.cpp: AdvanceFrame: handle cases where position = -1 and don't
17633           do anything.
17635 2008-10-27  Jeffrey Stedfast  <fejj@novell.com>
17637         * uri.cpp (Uri::Parse): Do a bit better than just strchr() for ':'
17638         to parse out the uri scheme.
17640 2008-10-27  Jeffrey Stedfast  <fejj@novell.com>
17642         Performance optimization patch for bug #409793
17644         * stylus.cpp (Stroke::AddStylusPointToBounds): Modified to take a
17645         Rect bounds argument so that we can update a bounds of our
17646         choosing.
17647         (Stroke::ComputeBounds): Updated.
17648         (Stroke::OnCollectionChanged): Update our new 'dirty' bounds.
17649         (Stroke::OnCollectionItemChanged): Same.
17650         (InkPresenter::PostRender): Reset stroke dirty regions.
17651         (InkPresenter::OnCollectionItemChanged): Invalidate only the
17652         stroke's dirty region.
17654 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17656         * media.cpp: TryOpen: Don't try to open anything if downloaded_file is
17657           null.
17659 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17661         * mplayer.cpp: LoadVideoFrame: Don't check if buflen = 0, makes things
17662           work with ffmpeg.
17663         * pipeline-ffmpeg.cpp, pipeline-ffmpeg.h: CleanState: Properly clean
17664           up/reset codec. DecodeFrame: ffmpeg might delay output one frame,
17665           i.e. the decoder output is the input of the previous time we called
17666           avcodec_decode_video, so keep track of pts from previous frame and
17667           properly set pts of the decoded frame.
17669 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17671         * mplayer.cpp: LoadVideoFrame: show the frame if the end pts of the
17672           frame is above the target pts (previously we only showed the frame
17673           if the start pts was above the target pts, causing us to show one
17674           frame too late). Fixes test-asf-demuxer-shuffled-payloads.html.
17676 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17678         * media.cpp: MediaElement::Play: Call Play when in Opening state too.
17680 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17682         * mplayer.cpp: AdvanceFrame/GetCurrentPts: if the audio isn't playing
17683           we should just work as if there's no audio at all. The video might
17684           play after the audio has stopped if the a/v streams have different
17685           length.
17687 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17689         * pipeline.cpp: Media::ClearQueue: delete the list nodes with the
17690           queue_mutex unlocked, since the node dtor may cause unrefs, causing
17691           other dtors to be called, and it may all end up in Media::Dispose
17692           which will then try to lock the mutex again (and deadlock).
17694 2008-10-24  Jeffrey Stedfast  <fejj@novell.com>
17696         * font.cpp (style_info_parse): Tokenize the style string so that
17697         the individual sub-parsers can be a bit smarter than than
17698         strstr().
17699         (style_width_parse): Made smarter - now handles lwsp between
17700         multi-word width specifiers (or no lwsp at all).
17701         (style_weight_parse): Same.
17703 2008-10-23  Larry Ewing  <lewing@novell.com>
17705         * media.cpp: remove compute bounds since it mirrors
17706         FrameworkElement now.
17708 2008-10-23  Larry Ewing  <lewing@novell.com>
17710         * shape.cpp, shape.h: remove origin fixup GetOriginPoint and
17711         GetSizeForBrush.
17713 2008-10-23  Jeffrey Stedfast  <fejj@novell.com>
17715         * textbox.cpp (TextBox::Paint): Updated.
17717         * text.cpp (TextBlock::Paint): Updated.
17719         * layout.cpp (TextLayout::Render): Swapped origin & offset
17720         arguments which feels more natural to me.
17722 2008-10-23  Sebastien Pouliot  <sebastien@ximian.com>
17724         * pipeline.cpp: (ASFDemuxer::ReadHeader): Don't allow video height or
17725         width over 2048 pixels since this is likely to be corrupted values.
17726         * pipeline.h: Define MAX_VIDEO_[HEIGHT|WIDTH] to 2048 (I'm sure that
17727         someday people will laugh at me for proposing such a small value)
17729 2008-10-23  Larry Ewing  <lewing@novell.com>
17731         * layout.cpp, layout.h: Change the Render api to drop the uielement argument. 
17733         * textbox.cpp:
17734         * text.cpp: call layout with the new arguments.
17735         
17736 2008-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17738         * mplayer.cpp: Pause: Don't set the SeekSynched flag. This would cause
17739           fast-forwarding video when seeking to a position which hadn't been
17740           downloaded (since we automatically pause the video then). Fixes
17741           #435908.
17743 2008-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17745         * mplayer.h, mplayer.cpp: Implement RenderedFramesPerSecond and
17746           DroppedFramesPerSecond. Only in SL 2.0, but very useful for
17747           debugging 1.0 too.
17749 2008-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17751         * pipeline.h, pipeline.cpp: Increase codec ABI version (IMediaStream
17752           changed size). IMediaStream: Remove msec_per_frame, it's already in
17753           VideoStream. VideoStream: make msec_per_frame be pts_per_frame to
17754           loose less precision.
17755         * mplayer.cpp: Calculate advance frame timeout based on video fps.
17757 2008-10-22  Chris Toshok  <toshok@ximian.com>
17759         * runtime.cpp (Surface::HandleUICrossing): disable the crossing
17760         check from r116528 in the case of a windowless plugin (where
17761         event->window == NULL).  Also, active_window->GetGdkWindow should
17762         never be trusted to return the actual window - it's use is
17763         strictly to find the screen/monitor for full-screening.  In the
17764         windowless case it returns the toplevel netscape window.
17766 2008-10-22  Larry Ewing  <lewing@novell.com>
17768         * brush.cpp, brush.h: remove the uielement references from the api
17769         pass the required information as a rect to SetupBrush instead.
17771         * shape.cpp, shape.h:
17772         * panel.cpp:
17773         * layout.cpp:
17774         * text.cpp:
17775         * uielement.cpp:
17776         * control.cpp:
17777         * broder.cpp: update SetupBrush callers for the new signature.
17779 2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17781         * audio.h, audio.cpp: AudioSource: Initialize last_write_pts and
17782           last_current_pts to their max value, to detect when they haven't
17783           been set yet. Properly reinitialize these variables (to their max
17784           values) in Stop, and make GetCurrentPts return G_MAXUINT64 for this
17785           case.
17786         * mplayer.cpp: AdvanceFrame: the audio might return G_MAXUINT64 for
17787           current pts, handle this. Fixes fast-forwarding issue in #435908.
17789 2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17791         * mp3.cpp: Mp3Demuxer::SeekInternal: Initialize result so that we don't
17792           use random memory if we don't have a reader.
17794 2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17796         * mms-downloader.cpp: Add logging methods.
17798 2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17800         * media.cpp: Sprinkle Dispose calls to plug leaks.
17802 2008-10-20  Chris Toshok  <toshok@ximian.com>
17804         * pipeline.cpp (Media::RegisterMSCodecs): free libmscodecs_path
17805         before reassigning (and reallocating memory for) it.
17807         * dependencyobject.h, dependencyobject.cpp: add an optional
17808         argument to all the EventObject::AddHandler* overloads, called
17809         data_dtor, which is invoked just before the EventClosure is
17810         destroyed so that the data can be freed.
17812 2008-10-20  Chris Toshok  <toshok@ximian.com>
17814         * window-gtk.h, window-gtk.cpp: move the Surface conversion from
17815         MouseCursor -> GtkCursor here.
17817         * runtime.h, runtime.cpp: surface only deals with MouseCursors
17818         anymore.  the gtk support is in window-gtk now.
17819         
17820         * window.h: remove SetCursor (GdkCursor) and add
17821         SetCursor (MouseCursor), so subclasses of MoonWindow can do their
17822         own thing.
17824 2008-10-20  Jeffrey Stedfast  <fejj@novell.com>
17826         * media.cpp (MediaElement::MediaOpened): If the stream decoder is
17827         null, use null for the decoder_name. Fixes a segfault.
17829 2008-10-20  Sebastien Pouliot  <sebastien@ximian.com>
17831         * pipeline.cpp (ASFDemuxer::ReadHeader): Don't count invalid streams
17832         since a lot of loops don't handle NULL values.
17834 2008-10-20  Michael Dominic K.  <mdk@mdk.am>
17836         * runtime.cpp: More fixes to crossing events: when entering fullscreen
17837         ignore the crossing events coming from previous window. Otherwise we get
17838         double enter/leave pair.
17840 2008-10-20  Michael Dominic K.  <mdk@mdk.am>
17842         * window-gtk.cpp: GetGdkWindow () - handle the fullscreen window case 
17843         correctly (no parent window).
17845 2008-10-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17847         * debug.h, pipeline.cpp, audio.cpp: #define print_stack_trace to
17848           nothing if not DEBUG is set, removing the need for surrounding all
17849           print_stack_trace calls with #if DEBUG.
17851 2008-10-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17853         * pipeline.cpp: Remove debugging code.
17855 2008-10-17  Michael Dominic K.  <mdk@mdk.am>
17857         * animation.cpp:
17858         * animation.h:
17859         * applier.h: Fixing one more osbcure case of Storyboard transitions where
17860         stopping a prev sboard makes the next one starting from bad base value.
17862 2008-10-17  Michael Dominic K.  <mdk@mdk.am>
17864         * runtime.cpp: Make sure we get the new pointer motion notify when 
17865         entering/leaving fullscreen. This fixes the fullscreen-enter-leave test 
17866         but interestingly doesn't fix the original problem of #434267.
17868 2008-10-17  Sebastien Pouliot  <sebastien@ximian.com>
17870         * runtime.cpp (Surface::PaintToDrawable): Don't leak cairo context
17871         when using "backend=image".
17873 2008-10-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17875         * pipeline.cpp: NullDecoder::OpenVideo: Fix comment (logo is centered
17876           now, not tiled), and fix inner loop, we were including one pixel
17877           too many for width and height.
17879 2008-10-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17881         * pipeline.cpp: RegisterMSCodecs: if there's no codec in
17882           ~/.mozilla/plugins, use just the filename of the codec library and
17883           make dlopen search for it. This makes it easier to run parallell
17884           tests from different revisions without having the codecs from each
17885           revision overwrite eachother in user's home.
17887 2008-10-16  Geoff Norton  <gnorton@novell.com>
17889         * pipeline.cpp: Dont tile our logo, it looks like ass.  Lets
17890         center it in the available window instead.
17892 2008-10-16  Geoff Norton  <gnorton@novell.com>
17894         * pipeline-ui.cpp: Avoid a resize when realizing which causes an
17895         annoying flicker in the codec window.
17897 2008-10-16  Geoff Norton  <gnorton@novell.com>
17899         * pipeline.cpp: Unbreak the world.
17901 2008-10-16  Geoff Norton  <gnorton@novell.com>
17903         * pipeline(-ui).cpp: Use the updated mscodec name and location.
17905 2008-10-16  Fernando Herrera  <fherrera@novell.com>
17907         * playlist.cpp: Fix a segfault parsing ASX3 malformed files.
17909 2008-10-16  Sebastien Pouliot  <sebastien@ximian.com> 
17911         * text.cpp (TextBlock::Layout): Delay allocation of List so that we
17912         don't leak when TextBlock::TextProperty is NULL.
17914 2008-10-16  Sebastien Pouliot  <sebastien@ximian.com>
17916         * runtime.cpp (Surface::SetCursor): Unref cursors once they are set
17917         on the window. Fix one more leak.
17919 2008-10-16  Jb Evain  <jbevain@novell.com>
17921         * collection.cpp: TriggerCollection, UIElementCollection, InlineCollection:
17922         mark managed constructor internal.
17924 2008-10-16  Jb Evain  <jbevain@novell.com>
17926         * collection.cpp (RemoveAtWithError): throw an ArgumentOutOfRangeException
17927         instead of an ArgumentException when providing an out of range index.
17929 2008-10-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17931         * window-gtk.cpp, window.h: Add file header and fix copy-paste error.
17933 2008-10-15  Chris Toshok  <toshok@ximian.com>
17935         * runtime.cpp (Surface::HandleUIKeyPress): check to see if the key
17936         is already down, and if so, don't emit another event.  (really?
17937         there's a test for this?  ugh.).  also, let Keyboard know the key
17938         is down.
17939         (Surface::HandleUIKeyRelease): let Keyboard know the key is up.
17941         * eventargs.h, eventargs.cpp (class Keyboard): augment Keyboard
17942         quite a bit -- it might soon deserve its own file.  It now
17943         maintains a static hashtable of keys that are pressed/released
17944         inside the moonlight plugin, and has logic to map a gdk keyval to
17945         Key, and query if a particular key is pressed.
17947 2008-10-15  Larry Ewing  <lewing@novell.com>
17949         * uielement.cpp: fix the transform ordering.
17951         * canvas.cpp, canvas.h: handle the toplevel canvas correctly.
17953 2008-10-15  Larry Ewing  <lewing@novell.com>
17955         * uielement.cpp, uielement.h: remove UpdatePosition and
17956         ComputePosition, all transform changes are handled in
17957         ComputeTransform now.
17959         * shape.cpp, shape.h: update for the new transform api.
17960         
17961         * dirty.cpp, dirty.h: remove DirtyPostion is it no longer needed.
17962         
17963         * canvas.cpp: Use UpdateTransform. 
17965         * point.h: add a (lame) == operator.
17966         
17967 2008-10-15  Larry Ewing  <lewing@novell.com>
17969         * geometry.cpp, geometry.h: add shape bounds caching to all
17970         geometry classes apply the transform when retrieving the bounds.
17971         Make GetBounds the public bounds interface and make the
17972         computation interface protected.
17974         * shape.cpp, uielement.cpp: call use GetBounds not ComputeBounds.
17976 2008-10-14  Larry Ewing  <lewing@novell.com>
17978         * geometry.cpp, geometry.h: remove unused arguments to
17979         ComputeBounds remove caching from PathGeometry.
17981         * uielement.cpp, shape.cpp: call with correct arguments.
17983 2008-10-14  Larry Ewing  <lewing@novell.com>
17985         * uielement.cpp, uielement.h: make ComputeTransform virtual and
17986         have it return a bool.
17988         * shape.cpp, shape.h: override ComputeTransform and optimize the
17989         bounds computations.  Use a general ComputeShapeBounds for actual
17990         drawn bounds compuations for now.
17991         
17992         * dirty.cpp (Surface::ProcessDownDirtyElements): add a short
17993         circuit path to DirtyTransform for elements that can recompute
17994         without updating bounds.
17996 2008-10-13  Larry Ewing  <lewing@novell.com>
17998         * geometry.cpp, geometry.h: remove unused arguments from function
17999         prototypes.
18000         
18001         * uielement.cpp, shape.cpp: update calls.
18002         
18003 2008-10-15  Jeffrey Stedfast  <fejj@novell.com>
18005         Fix for bug #435798
18007         * text.cpp (TextBlock::TextBlock): Let OnPropertyChanged() know
18008         that we are setting the default brush/inlines.
18009         (TextBlock::Layout): If no Text value has yet been set, use 0.0 as
18010         the actualHeight.
18012 2008-10-14  Chris Toshok  <toshok@ximian.com>
18014         * window-gtk.h, window-gtk.cpp (MoonWindowGtk::GetGdkWindow): ref
18015         the return value.
18016         (MoonWindowGtk::InitializeFullScreen): unref the return value of
18017         GetGdkWindow.
18019         * cbinding.h, cbinding.cpp: regen so we don't have to use void*
18020         for the parent parameter to MoonWindowGtk.
18022 2008-10-14  Sebastien Pouliot  <sebastien@ximian.com>
18024         * applier.cpp|h: Add a readonly flag to ensure nothing gets added in
18025         the hashtable while we're flushing it on shutdown. Add a few more
18026         checks and avoid re-creating the hashtable on flush.
18028 2008-10-14  Geoff Norton  <gnorton@novell.com>
18030         * pipeline-ffmpeg.cpp:  FFMpeg changed the API with version #52, no
18031         longer requiring the bits_per_pixel.
18033 2008-10-14  Stephane Delcroix  <sdelcroix@novell.com>
18035         * window.h: GetGdkWindow () method
18037         * window-gtk.h|.cpp: implement GetGdkWindow, new ctor signature
18038         taking the parent window reference. Only go fullscreen on the monitor
18039         moonlight is running on.
18041         * runtime.cpp: call the new MoonWindowGtk ctor
18043 2008-10-14  Fernando Herrera  <fherrera@novell.com>
18045         * pipeline-ui.cpp: Override codecs download URL with
18046         MOONLIGHT_CODEC_URL env variable if present.
18048 2008-10-13  Jeffrey Stedfast  <fejj@novell.com>
18050         * xaml.cpp (XamlLoader::CreateFromFile): Since we use the nread
18051         variable expecting it to be the value returned from read(), don't
18052         modify it inside the loop, use another variable for that. Before
18053         eating leading whitespace, make sure we have data.
18055 2008-10-13  Fernando Herrera  <fherrera@novell.com>
18057         * audio.cpp: Fix AudioSources::GetNext iteration for next playing
18058         source logic. Fixes bug #433267
18060 2008-10-13  Jeffrey Stedfast  <fejj@novell.com>
18062         * media.cpp (MediaElement::Play): Don't add a TickCall to start
18063         playing if we haven't even opened the media yet. Fixes bug
18064         #434462.
18066 2008-10-13  Michael Dominic K.  <mdk@mdk.am>
18068         * dependencyproperty.cpp: Fixing a mem leak.
18070 2008-10-13  Michael Dominic K.  <mdk@mdk.am>
18072         * animation.cpp: Reverting the whole attaching-to-prev storage in Begin. 
18073         This fixes some recent problems in PopFly.
18075 2008-10-10  Jeffrey Stedfast  <fejj@novell.com>
18077         * downloader.cpp (validate_policy): Made static so we don't export
18078         this symbol.
18080 2008-10-10  Sebastien Pouliot  <sebastien@ximian.com>
18082         * dependencyproperty.cpp (detach_target_func): Fix bad function 
18083         signature for GHFunc.
18084         * dependencyobject.cpp (unref_object): Fix bad function signature
18085         for GFunc.
18087 2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18089         * pipeline.h, pipeline.cpp: Media: Add a BufferingEnabled flag, don't
18090           start buffering until this is set to true (starts out as false).
18091         * media.cpp: Only enable buffering on the media after reading the
18092           markers, otherwise we may loose markers in the beginning of the
18093           media. Fixes test-asf-demuxer-big-markers.html. Also don't add a
18094           tick call to notify the MediaElement that a marker has been added,
18095           always check in AdvanceFrame.
18096         * mplayer.cpp: Add a null check in a printf.
18098 2008-10-10  Larry Ewing  <lewing@novell.com>
18100         * media.cpp (Image::DownloaderComplete): handle the case where the
18101         sureface uri and the new uri are the same.
18103 2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18105         * pipeline-logo.cpp: New logo.
18107 2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18109         * media.cpp: MediaElement::Reinitialize: Dispose the media to break
18110           cyclic refs.
18111         * mplayer.cpp: AdvanceFrame: don't decode here anymore, we shouldn't
18112           get non-decoded frames anymore. Open: Handle null demuxers,
18113           shouldn't happen, but at least we won't crash if it happens.
18114         * pipeline.cpp, pipeline.h: Media::~Media: move cleanup to Dispose.
18115           Media::Open: unref the decoder after giving it to the stream, the
18116           stream now take a ref on the decoder. Media::EnqueueWork:
18117           queued_requests might be nothing if we're disposed. IMediaStream:
18118           move cleanup to dispose and take a ref on the decoder. Add decoder
18119           getter/setters, and update code to use them.
18121 2008-10-10  Sebastien Pouliot  <sebastien@ximian.com>
18123         * applier.cpp: Fix another bad function signatures for GFunc.
18125 2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18127         * audio.cpp, pipeline-ffmpeg.cpp, pipeline.h, mplayer.cpp: Remove
18128           FRAME_COPY_DECODED_DATA and always copy decoded data. Fixes video
18129           stuttering when using ffmpeg.
18131 2008-10-09  Jackson Harper  <jackson@ximian.com>
18133         * runtime.cpp: The resize event is only emitted when switching
18134         from fullscreen to non fullscreen.
18136 2008-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18138         * pipeline.cpp, pipeline.h: Properly ref/unref MediaMarkers instead of
18139           deleting them.
18141 2008-10-09  Jackson Harper  <jackson@ximian.com>
18143         * runtime.cpp: When we change to/from fullscreen there should be a
18144         resize event.
18146 2008-10-09  Sebastien Pouliot  <sebastien@ximian.com>
18148         * media.cpp (Image::CreateSurface): Protect against a NULL
18149         filename (valid value). This will avoid crash like bug #433810
18150         even if, in this case, the problem lies elsewhere (bad downloader
18151         which looks related to #433814).
18153 2008-10-09  Jeffrey Stedfast  <fejj@novell.com>
18155         * font.cpp (FontFace::LoadDefaultFace): Pass the families to
18156         LoadDefaultFont() for font name comparison, we need to match the
18157         font names exactly or fall back to the next font.
18159 2008-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18161         * audio.cpp: Add a nullcheck.
18163 2008-10-08  Sebastien Pouliot  <sebastien@ximian.com>
18165         * media.cpp (Image::IsSurfaceCached): Don't leak (actually 
18166         don't dupe) uri.
18168 2008-10-08  Jeffrey Stedfast  <fejj@novell.com>
18170         * font.cpp: Add fallback for Liberation fonts.
18172         * pipeline.cpp (Media::Warning): Replacement for both
18173         Media::AddMessage() methods.
18175 2008-10-08  Sebastien Pouliot  <sebastien@ximian.com>
18177         * applier.cpp: Fix function signatures for GFunc and GHFunc.
18178         Fix random crash when closing silverlight world #433461
18180 2008-10-08  Larry Ewing  <lewing@novell.com>
18181         * window-gtk.cpp (MoonWindowGtk::realized): make sure we remove
18182         any existing render_cb attachments before adding new ones in case
18183         our realize wordering is out of sync.
18185         Fixes the rest of b.n.c #432975
18187 2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18189         * mp3.cpp: Fix boolean->MediaResult logic.
18191 2008-10-08  Jackson Harper  <jackson@ximian.com>
18193         * playlist.cpp|h: When we encounter invalid characters in an
18194         attribute try to patch them and reparse the document.
18196 2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18198         * mp3.h, mp3.cpp: Fix mpeg_frame_duration to use the static array of
18199           block sizes instead of hard-coded almost-matching values. Make
18200           mpeg_frame_length return a floating point value, and in ReadHeader
18201           calculate total duration using floating point. Fixes
18202           test-mp3-media-properties.html
18204 2008-10-08  Stephane Delcroix  <stephane@delcroix.org>
18206         * runtime.cpp: CAIRO_VERSION_XXX symbols no longer available in cairo
18207         1.8.0, changing the error msg.
18209 2008-10-08  Sebastien Pouliot  <sebastien@ximian.com>
18211         * xaml.cpp (XamlElementInstanceNative::SetProperty): Avoid SIGSEGV
18212         on bad XAML input when no (NULL) dependecy property is returned.
18214 2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18216         * pipeline.h, pipeline.cpp: Add a marker field to MediaFrame and make
18217           MediaMarker refcounted. Fix a couple of crashing leakfixes, and
18218           simplify cleanup code a tiny bit.
18220 2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18222         * audio-pulse.h: Remove unused method definition.
18224 2008-10-07  Jeffrey Stedfast  <fejj@novell.com>
18226         * animation.cpp (AnimationStorage::AttachToPrevStorage): Delete
18227         the old baseValue before allocating a new one.
18229         * mms-downloader.cpp (MmsDownloader::ProcessHeaderPacket): Need to
18230         delete dx_info when we're done with it. Also get rid of the
18231         unneeded parser pointer since we're just using this->parser
18232         anyway.
18234 2008-10-07  Sebastien Pouliot  <sebastien@ximian.com>
18236         * runtime.cpp (Surface::SetCursor): Don't create the GdkPixmap and
18237         GdkColor unless we need them. Unref the pixmap after the call to
18238         gdk_cursor_new_from_pixmap.
18240 2008-10-06  Jeffrey Stedfast  <fejj@novell.com>
18242         * pipeline.h (IMediaStream::dtor): Delete the frame. This prevents
18243         a MediaFrame leak-per-node whenever the queue is cleared.
18245         * pipeline.cpp (ASFMarkerDecoder::DecodeFrame): Free the
18246         frame->bufefr before updating it to point to a new malloc'd
18247         buffer.
18248         (ASFDemuxer::TryReadFrame): Delete the frame on error.
18249         (IMediaStream::PopFrame): After getting the node's frame, set the
18250         node->frame to NULL.
18252 2008-10-06  Larry Ewing  <lewing@novell.com>
18254         * media.cpp, media.h: rework image code to skip using a downloader
18255         when a cached image surface is available.  Fix a crash where
18256         multiple loading errors occur for a single image.  Rewrite
18257         existing SetSourceAsync ticks when the source changes again before
18258         the initial tick was processed.  
18260         The goal here is to greatly reduce the work we do in cases where
18261         existing sources are moved between images. Future work should
18262         consist of moving things to the ImageSource model internally.
18264 2008-10-06  Sebastien Pouliot  <sebastien@ximian.com> 
18266         * text.cpp (Glyphs::Layout): Handle NULL values coming from 
18267         GetGlyphInfo. Avoid crash in DRT #177 (not sure why it did 
18268         not come up before today or why it now fails anyway).
18270 2008-10-06  Jeffrey Stedfast  <fejj@novell.com>
18272         * brush.cpp (ImageBrush::TargetLoaded): Don't bother with g_atomic
18273         stuff, it's too expensive for what we need.
18274         (ImageBrush::TargetUnloaded): Same.
18276 2008-10-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18278         * dependencyobject.h, dependencyobject.cpp: Fix SLED10.
18280 2008-10-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18282         * pipeline.cpp: Reorganize some code.
18284 2008-10-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18286         * audio.cpp, audio.h: Access the Media directly to enqueue frames,
18287           avoiding the need for a tick call on the main thread. If audio
18288           underflowed and we don't have more data available, set buffer
18289           underflow flag on the media player.
18290         * playlist.cpp, playlist.h: Playlist::Parse: until the source has all
18291           the data available, return MEDIA_NOT_ENOUGH_DATA.
18292         * downloader.cpp, downloader.h: Remove RequestPosition methods, no
18293           longer needed.
18294         * mms-downloader.h, mms-downloader.cpp: Added Set|GetRequestedPts, and
18295           use that value to determine if we should seek or not.
18296         * mplayer.cpp, mplayer.h: Add a BufferUnderflow flag, set when
18297           audio/video needs more data, but the buffer is empty.
18298         * pipeline.cpp, pipeline.h: Media: Change how buffering works: we now
18299           have an in-memory buffer of demuxed frames (one queue for frames
18300           for each stream), and calculate buffer size from that.
18301           ProgressiveSource: open an additional file descriptor for writing,
18302           makes locking unnecessary. Change al io to return failure if there
18303           is not enough data, this allows us to remove all the
18304           blocking/waiting logic. MemoryQueueSource: push seeks to
18305           MmsDownloader, instead of waiting for MmsDownloader to check for
18306           pending seeks. FileSource: don't reinvent the wheel and use stdio
18307           to get buffered io instead of having buffering logic ourselves.
18308         * mp3.h, mp3.cpp: Implemented non-blocking reading to support buffer
18309           underruns correctly.
18310         * media.cpp: MediaElement: Retrieve buffer size from the demuxer
18311           instead of calculating it. Handle MEDIA_NOT_ENOUGH_DATA errors when
18312           trying to open media and retry later on.
18314 2008-10-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18316         * src.mdp: Updated.
18318 2008-10-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18320         * dependencyobject.cpp: Use atomic operations with
18321           objects_created|destroyed.
18323 2008-10-02  Chris Toshok  <toshok@ximian.com>
18325         * resources.cpp (glib_is_stupid): we need to cast value in order
18326         to delete it.
18328 2008-10-02  Geoff Norton  <gnorton@novell.com>
18330         * media.cpp,pipeline-ffmpeg.cpp,yuv-converter.cpp,mplayer.cpp:
18331         Add some headers needed to compile when #undef DEBUG
18333 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com> 
18335         * xaml.cpp:  Fix mixup between delete and g_free
18337 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com>
18339         * value.cpp: Fix == for KeyTime (padding too). Add comments and
18340         indent method correctly.
18342 2008-10-02  Jeffrey Stedfast  <fejj@novell.com>
18344         * xaml.cpp: Move the definition of XamlElementInfo to the top so
18345         that g++ doesn't complain about deleting an incomplete type inside
18346         the XamlElementInstance dtor. Also gets rid of other g++ compiler
18347         warnings.
18349         * list.cpp (List::InsertAfter): New convenience function to sort
18350         of balance the API.
18352         * font.cpp (FontFace::Load): Don't ref the default face, it is
18353         returned to us with a ref already.
18355 2008-10-02  Jackson Harper  <jackson@ximian.com>
18357         * xaml.cpp: Now that Info's aren't shared, Instance's can free
18358         them.  Also properties need to free their name.
18360 2008-10-02  Larry Ewing  <lewing@novell.com>
18362         * geometry.cpp (Geometry::OnSubPropertyChanged): move
18363         OnSubPropertChanged to Geometry to pick up transform changes until
18364         a better solution is devised.  Fixes updated
18365         test-clip-invalid-update.htm.
18367 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com>
18369         * value.cpp: Fix == for Duration and RepeatBehavior. We can't
18370         use memcmp to compare them since they include (unassigned)
18371         padding. Both structs overrides their == operator so we use that.
18373 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com> 
18375         * resources.cpp: Free the values (not only their content) when
18376         the hash table is destroyed. Correctly (delete) free the value
18377         when compiled against glib < 2.12 (e.g. SLED10).
18379 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com>
18381         * geometry.cpp: Remove last patch to GeometryGroup::Draw as this
18382         mess clipping. Add similar fill rule setting code in Geometry::Draw
18383         because Shape::Fill is not called for clipping (but the fill rule
18384         still applies). Comment both so I don't mess with them again :)
18386 2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
18388         * font.cpp (FontFace::LoadGlyph): We need to force the font size
18389         if we don't own it, since we don't know what the current size is
18390         set to.
18391         (FontFace::Kerning): Same.
18392         (FontFace::GetExtents): Here too.
18394 2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
18396         Attempt #2 at fixing bug #430766.
18398         * font.cpp (FontFace::LoadFontFace): Don't load non-scalable fonts
18399         - this helps us do better fallback for bug #430766.
18400         (FontFace::LoadDefaultFace): Do manual fallback of fonts. First
18401         try to use the Microsoft Lucida Sans font if available. If not,
18402         fall back to GNOME's Bitstream Vera Sans font. Then fallback to
18403         DejaVu Sans and finally to X.Org's Luxi Sans font (which doesn't
18404         render many of the glyphs in bug #430766, hence why it is last
18405         choice). If the user doesn't have the X.Org fonts, he's SOL.
18407 2008-10-01  Sebastien Pouliot  <sebastien@ximian.com>
18409         * value.h[.in],value.cpp: Fix operator == to work for non-DO and
18410         non-string values. This fix the issue of removing stuff from a
18411         ResourceDictionary (while a copy still exists in the underlying
18412         Collection).
18414 2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
18416         Attempt #1 at fixing bug #430766.
18418         * font.cpp (FontFace::LoadDefaultFace): Pass NULL as the families
18419         argument to LoadFontFace() so that we don't fail when matching the
18420         loaded family name.
18422 2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
18424         * font.cpp (FontFace::OpenFontDirectory): Now a static class
18425         method.
18426         (FontFace::LoadFontFace): New static method which tries to load an
18427         FT_Face given an FcPattern and a list of families.
18428         (FontFace::FontFace): No longer tries to load an FT_Face, instead
18429         we have it passed to us as an argument.
18430         (FontFace::LoadDefaultFace): New static method to load a global
18431         FT_Face representing the default system font.
18432         (FontFace::GetDefault): Instantiates a new FontFace using the
18433         global system default FT_Face.
18434         (FontFace::Load): Now takes only a TextFontDescription (much
18435         cleaner/simpler). If we are loading the default system font or if
18436         loading the requested font fails, simply return a new FontFace
18437         based on the global system default FT_Face.
18438         (TextFont::TextFont): Now takes fewer arguments (cleaner API,
18439         yay!).
18440         (TextFont::Load): Now only takes a TextFontDescription argument to
18441         make the API simpler/cleaner.
18442         (TextFontDescription::CreatePattern): Now public and takes a
18443         'sized' argument specifying whether or not the created pattern
18444         should include the size field. This is needed because TextFont
18445         caches based on all attributes while FontFace caches on everything
18446         but size. Also, don't include weight, width, or slant if our font
18447         family is the default (Portable User Interface is not allowed to
18448         have any of those attributes).
18449         (TextFontDescription::IsDefault): New method to decide if our
18450         family is the default or not.
18451         (TextFontDescription::GetFamilies): New convenience method to
18452         strsplit the family string into an array.
18453         (TextFontDescription::SetFamily): If the value "Portable User
18454         Interface" is set, set our family to NULL instead.
18456 2008-10-01  Sebastien Pouliot  <sebastien@ximian.com>
18458         * geometry.cpp (GeometryGroup::Draw): Make sure the original
18459         fill rule is still in effect at the end of drawing the group.
18461 2008-10-01  Chris Toshok  <toshok@ximian.com>
18463         * geometry.cpp (GeometryGroup::Draw): reinstate the call to
18464         cairo_set_fill_rule removed in r105643.  This fixes
18465         http://mapul.com/Tutorials.html.
18467 2008-10-01  Sebastien Pouliot  <sebastien@ximian.com>
18469         * shape.cpp: (Shape::InsideObject) Move cairo_save after the 
18470         extents.PointInside check since there was no cairo_restore
18471         if false was returned. Looks likely that false was not much
18472         returned (if ever).
18474 2008-09-30  Chris Toshok  <toshok@ximian.com>
18476         * stylus.cpp (Stroke::OnCollectionItemChanged): we need to
18477         recompute our bounds when an item (can only be a stylus point)
18478         changes its properties.  Fixes stroke bounds in the face of
18479         dragging text in inkjournal.
18481 2008-10-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18483         * audio-pulse.cpp, audio-pulse.h: Don't use callbacks with
18484           pa_stream_[cork|trigger|flush|drain] since the audio source might
18485           have gotten deleted by the time the callback is called.
18487 2008-09-30  Chris Toshok  <toshok@ximian.com>
18489         * dirty.cpp (Surface::ProcessDownDirtyElements): use
18490         AddDirtyElement instead of |= to set flags, since it might require
18491         dirty list manipulation.
18493 2008-09-30  Sebastien Pouliot  <sebastien@ximian.com>
18495         * xaml.cpp: Fix (again) the leaks in dependency_object_add_child, 
18496         this time with new/delete to make it work with non-DO.
18498 2008-09-30  Sebastien Pouliot  <sebastien@ximian.com> 
18500         * xaml.cpp: Better fix for the leaks in dependency_object_add_child.
18502 2008-09-30  Sebastien Pouliot  <sebastien@ximian.com>
18504         * xaml.cpp: Fix leak in dependency_object_add_child when AddWithError
18505         returns false.
18507 2008-09-30  Stephane Delcroix  <sdelcroix@novell.com>
18509         * downloader.cpp: fix the leak in validate_policy.
18511 2008-09-30  Sebastien Pouliot  <sebastien@ximian.com>
18513         * debug.cpp: Make sure allocated 'binary' is freed in every case
18514         inside addr2line_offset.
18516 2008-09-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18518         * audio-alsa.cpp: Close the pcm in the dtor, not in Close. Refcounting
18519           ensures that the dtor won't be called while playing or that we'll
18520           be playing destructed sources, but Close might be called at any
18521           time.
18523 2008-09-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18525         * pipeline.cpp: NullDecoder::DecodeAudioFrame: protected against int
18526           underflows and /0 errors.
18528 2008-09-29  Chris Toshok  <toshok@ximian.com>
18530         * dependencyobject.cpp (DependencyObject::RegisterAllNamesRootedAt):
18531         if during the course of traversing the tree, we come across a temp
18532         namescope, merge that up instead of recursing down even further.
18533         (DependencyObject::SetLogicalParent): only clear the namescope if
18534         we're merging ourselves into a parent namescope.
18536         * canvas.cpp (Canvas::Canvas): remove the temp namescope creation
18537         here.  the parser does it for us if we're parsing an element, and
18538         programmatically created objects don't seem to have them.
18540 2008-09-29  Jeffrey Stedfast  <fejj@novell.com>
18542         * media.cpp (MediaBase::GetDownloaderPolicy): New virtual method
18543         to get the download policy based on the uri. By default, returns
18544         MediaPolicy.
18545         (MediaElement::GetDownloaderPolicy): Return StreamingPolicy if
18546         mms://
18547         (MediaBase::SetAllowDownloads): Use GetDownloaderPolicy() instead
18548         of hardcoding mms:// check.
18549         (MediaBase::OnPropertyChanged): Same.
18551         * brush.cpp (ImageBrush::SetSurface): Remove previous hack.
18552         (ImageBrush::TargetLoaded): Call SetAllowDOwnloads(true) on our
18553         image once we have at least 1 target which is loaded in the visual
18554         tree.
18555         (ImageBrush::TargetUnloaded): Disallow image downloads once our
18556         loaded_count falls back to 0.
18557         (ImageBrush::AddTarget): Listen to the target's Loaded/Unloaded
18558         events.
18559         (ImageBrush::RemoveTarget): Remove our listeners for the Loaded
18560         and Unloaded events placed on the target object.
18562         * uielement.cpp (UIElement::ClearLoaded): Emit an UnloadedEvent.
18564         * dependencyobject.cpp (DependencyObject::SetValueWithError): Call
18565         AddTarget()/RemoveTarget() on DO property values as they are
18566         set/unset.
18567         (DependencyObject::AddTarget): New virtual method which gets
18568         called on DependencyObject property values when they are set on a
18569         target.
18570         (DependencyObject::RemoveTarget): Same but when unset.
18572         * media.cpp (MediaBase::SetAllowDownloads): New method to handle a
18573         state-change of allowing new downloads vs not.
18574         (MediaBase::OnLoaded): Call SetAllowDownloads(true).
18576 2008-09-29  Jeffrey Stedfast  <fejj@novell.com>
18578         * brush.cpp (ImageBrush::SetSurface): Update the image's Loaded
18579         state. Fixes some regressions introduced by moving the async
18580         downloading logic from MediaBase::SetSurface() into
18581         ImageBase::OnLoaded().
18583 2008-09-29  Sebastien Pouliot  <sebastien@ximian.com>
18585         * pipeline-ffmpeg.cpp: Free extradata, if allocated, on failure.
18587 2008-09-28  Chris Toshok  <toshok@ximian.com>
18589         * xaml.cpp (XNamespace::SetAttribute): don't both RegisterName and
18590         SetValue (NameProperty) - just set the NameProperty, it'll update
18591         the proper namescope automatically.
18592         (get_parent): remove.
18593         (set_parent): remove.  we no longer need to maintain a temporary
18594         chain while parsing.  there's also no need for set_parent(NULL)
18595         anywhere.
18596         (XamlElementInstance::TrySetContentProperty): if there was an
18597         error in DependencyObject::SetValueWithError or
18598         Collection::AddWithError, raise a parser error.
18599         (dependency_object_add_child): call
18600         Collection/ResourceDictionary::AddWithError, and raise a
18601         parser_error if it fails.  also, remove set_parent (NULL) calls.
18603         * dependencyobject.h,
18604         dependencyobject.cpp (DependencyObject::MergeNameScopes): remove.
18605         (DependencyObject::RegisterAllNamesRootedAt): this now takes a
18606         MoonError argument so we can signal when there's been a conflict.
18607         (DependencyObject::SetLogicalParent): this also now takes a
18608         MoonError argument, and this is where ALL the namescope merging
18609         code lives.  It's been removed from everywhere else.  Also, this
18610         change means we can no longer be setting/clearing the parent in
18611         xaml.cpp, as it destroys temp namescopes.
18613         * namescope.h, namescope.cpp (NameScope::MergeTemporaryScope): add
18614         a MoonError parameter, so we can communicate back an
18615         error (conflicting names) properly.
18616         (NameScope::Dump): new method.
18617         
18618         * collection.h, collection.cpp (Collection::AddWithError): new
18619         method, generate a binding for this instead of Add.  This allows
18620         us to check for name conflicts when a DOCollection is updated.
18621         (Collection::InsertWithError): same.  Also, this method has
18622         something quirky about it - it calls AddedToCollection *before*
18623         the collection is modified.  suck, but the logic in that code
18624         needs to be run before the change occurs.
18625         (Collection::AddedToCollection): add a MoonError arg so we can
18626         properly pass errors back up.
18627         (DependencyObjectCollection::RegisterAllNamesRootedAt): add the
18628         MoonError arg.
18629         (DependencyObjectCollection::AddedToCollection,
18630         DependencyObjectCollection::RemovedFromCollection): remove
18631         namescope handling from here.
18632         
18633         * animation.h,
18634         animation.cpp (KeyFrameCollection::AddedToCollection): track api
18635         change to Collection::AddedToCollection.
18637         * resources.h, resources.cpp: track changes to AddedToCollection,
18638         RegisterAllNamesRootedAt, and AddWithError.  Also, remove
18639         namescope handling code from here.
18641         * cbinding.cpp, cbinding.h, type-generated.cpp: regen.
18642         
18643 2008-09-28  Chris Toshok  <toshok@ximian.com>
18645         * geometry.cpp (Geometry::OnPropertyChanged): this method was
18646         never chaining up to DependencObject::OnPropertyChanged, which it
18647         must do for properties whose ownerType != Geometry.
18649 2008-09-28  Chris Toshok  <toshok@ximian.com>
18651         * media.cpp (TimelineMarkerCollection::Add): no need to check the
18652         element type of the value, by the time it makes it here it should
18653         already be the right type.
18655 2008-09-26  Jeffrey Stedfast  <fejj@novell.com>
18657         * media.cpp (MediaBase::OnLoaded): Logic moved here from
18658         SetSurface().
18659         (MediaBase::OnPropertyChanged): Check IsLoaded() to see if we
18660         should start the downloader yet.
18662         * xaml.cpp: Revert the hydrating check for SetSurface() from the
18663         previous commit. This is causing a bunch of failures :(
18665 2008-09-26  Jeffrey Stedfast  <fejj@novell.com>
18667         * xaml.cpp (XamlLoader::HydrateFromString): Properly initialize
18668         parser_info->hydrating and parser_info->hydrate_expecting based on
18669         whether or not we are really doing a HydrateFromString() vs
18670         CreateFromString().
18671         (create_element_info_from_imported_managed_type): Only
18672         SetSurface() if we are hydrating.
18673         (XamlElementInstanceNative::CreateItem): Same.
18674         (XamlElementInfoManaged::CreateElementInstance): Here too.
18675         (XamlElementInfoManaged::CreateWrappedElementInstance): And here.
18676         (XamlElementInfoManaged::CreatePropertyElementInstance): And here...
18677         (XamlElementInfoImportedManaged::CreateElementInstance): Same.
18678         (XamlElementInfoImportedManaged::CreateWrappedElementInstance): And here.
18679         (XamlElementInfoImportedManaged::CreatePropertyElementInstance): Here too.
18681 2008-09-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18683         * dependencyobject.cpp, dependencyobject.h: Make objects_created and
18684           objects_destroyed thread-safe. Added MOONLIGHT_OBJECT_TRACK_TYPE to
18685           track a specific type, might be useful when the id varies from run
18686           to run. Make Dispose public.
18687         * media.cpp: Reinitialize: Dispose the downloaded_file if we're being
18688           destructed.
18689         * pipeline.cpp, pipeline.h: Implement MemoryQueueSource::Dispose, and
18690           cleanup properly there instead of in the dtor. This breaks a
18691           circular reference between ASFPacket/ASFDemuxer/MemoryQueueSource.
18693 2008-09-26  Stephane Delcroix  <sdelcroix@novell.com>
18695         * downloader.cpp: use StreamingPolicy for streaming
18697 2008-09-25  Jeffrey Stedfast  <fejj@novell.com>
18699         * runtime.cpp (Surface::ShowFullScreenMessage): Don't use
18700         g_str_has_prefix() on NULL strings.
18702 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18704         * pipeline.cpp: RegisterMSCodecs: Don't duplicate that much code, and
18705           only print messages to stdout if MOONLIGHT_OVERRIDES=codecs=debug.
18707 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18709         * downloader.cpp: validate_policy: Fix boolean logic according to
18710           comment, fixes crash.
18712 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18714         * media.cpp: Plug one more leak.
18716 2008-09-25  Stephane Delcroix  <sdelcroix@novell.com>
18718         * downloader.cpp: neforce security policies on Open ()
18720 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18722         * pipeline.cpp, pipeline.h: Added Media::IsMSCodecsInstalled, and look
18723           for the mp3 codecs in libmscodecs.so, libmscodecs-mp3.so doesn't
18724           exist anymore.
18726 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18728         * pipeline-ui.cpp: AdaptToParentWindow: free the toplevels list.
18730 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18732         * downloader.cpp: Fix a potential leak.
18734 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18736         * dependencyobject.cpp: DependencyObject::RemoveListener: We need to
18737           delete the listener link, not only remove it. Plugs a leak.
18739 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18741         * audio-pulse.h, clock.h, layout.h, pipeline.h, template.h,
18742           yuv-converter.h: Sprinkle virtual on some destructors.
18744 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18746         * internal-downloader.h, file-downloader.h, mms-downloader.h: Fix
18747           another leak.
18749 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18751         * audio-pulse.cpp: Another leak plugged.
18753 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18755         * debug.cpp: Fix stack traces.
18757 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18759         * audio-pulse.cpp: Add a missing unref.
18761 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18763         * pipeline-ui.cpp: Store libmscodecs.so in ~/.mozilla/plugins.
18765 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18767         * pipeline-ui.cpp: Hush.
18769 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18771         * pipeline.cpp, pipeline.h: Added an abi_version to codec registration
18772           functions.
18774 2008-09-24  Aaron Bockover  <abockover@novell.com>
18776         * pipeline-ui.cpp: 
18777         * pipeline-ui.h: Redesigned the dialog to conform to the GNOME HIG 
18778         in regards to header messages, detail messages, spacing, padding, and
18779         button layout; use a GtkDialog instead of a GtkWindow, and take all
18780         input through the dialog's response signal; require the user to explicitly
18781         tell us that they never want to see the installer again instead of 
18782         assuming on cancel; fix crash when cancelling while downloading
18784 2008-09-24  Jeffrey Stedfast  <fejj@novell.com>
18786         * dependencyproperty.cpp (resolve_property_path): Fixicated.
18788 2008-09-24  Sebastien Pouliot  <sebastien@ximian.com>
18790         * pipeline.cpp: Fix a valgrind complaint when a NULL parameter is 
18791         given to g_file_test 
18793 2008-09-24  Jeffrey Stedfast  <fejj@novell.com>
18795         * dependencyproperty.cpp (resolve_property_path): Cleaned up the
18796         code, robustified, and fixed bug #429396.
18798 2008-09-24  Sebastien Pouliot  <sebastien@ximian.com>
18800         * dependencyproperty.cpp: Fix SIGSEGV when parsing something that
18801         does not exists.
18802         [Fix bug #429396]
18804 2008-09-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18806         * pipeline-ui.cpp, pipeline-ui.h: UI to download and install codecs.
18807         * pipeline-logo.cpp, pipeline-logo.inc: Renamed pipeline-logo.inc to
18808           pipeline-logo.cpp and made it an extern variable to avoid
18809           duplicating the entire image in the binary for every time we want
18810           to use it.
18811         * pipeline.cpp, pipeline.h: RegisterMSCodecs: Read the path to ms
18812           codecs from our configuration, and always register ms codecs first
18813           in the list. NullDecoder: fix a buffer overrun and update according
18814           to pipeline-logo changes.
18815         * moonlightconfiguration.cpp, moonlightconfiguration.h: Added: a class
18816           to store our configuration.
18817         * media.cpp: MediaElement::MediaOpened: if any of the streams is
18818           handled by a nulldecoder, it means we don't have ms codecs
18819           installed. If so, show the codec downloader UI.
18820         * Makefile.am, src.mdp: Updated.
18822 2008-09-23  Chris Toshok  <toshok@ximian.com>
18824         * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
18825         back out (#if false) this change for now.
18827 2008-09-23  Stephane Delcroix  <sdelcroix@novell.com>
18829         * runtime.h|cpp: Surface::GetSourceLocation()
18831 2008-09-23  Sebastien Pouliot  <sebastien@ximian.com>
18833         * uielement.cpp: Delete the temporary region before returning on an
18834         invisible element (common in defiwind).
18836 2008-09-22  Chris Toshok  <toshok@ximian.com>
18838         * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
18839         another case we hadn't addressed - if the object we're merging
18840         *from* doesn't have a namescope, we iterate over the entire tree,
18841         registering names into our (possibly temporary, if it didn't exist
18842         before) namescope.  Fixes firstfloorsoftware.com (bug #425268).
18844         * xaml.cpp (XamlElementInstanceNative::CreateItem): fix memory
18845         leak.
18847 2008-09-22  Jeffrey Stedfast  <fejj@novell.com>
18849         * dependencyobject.cpp (merge_namescope): Return the parent_ns so
18850         that our caller doesn't have to call FindNameScope() in case it
18851         was created.
18852         (DependencyObject::MergeTemporaryNameScopes): Adjust for above API
18853         change.
18855 2008-09-22  Larry Ewing  <lewing@novell.com>
18857         * geometry.cpp (Geometry::Draw): fix the transform brokeness that
18858         crept in.  Fixes test-geometry-transform.xaml
18860 2008-09-22  Michael Dominic K.  <mdk@mdk.am>
18862         * animation.cpp:
18863         * clock.cpp:
18864         * clock.h: 0-time animations are valid (as in: passing the timeline
18865         validation test) but do nothing. Fixes the clock11 test.
18867 2008-09-22  Michael Dominic K.  <mdk@mdk.am>
18869         * animation.cpp:
18870         * animation.h: Attach storage only once. Fixes a crash in clock21.html.
18872 2008-09-19  Jeffrey Stedfast  <fejj@novell.com>
18874         Fix for bug #427560
18876         * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
18877         Use FindNameScope() to get the scope to merge into, and only call
18878         this once - don't re-get it ever loop.
18880 2008-09-19  Jeffrey Stedfast  <fejj@novell.com>
18882         * dependencyobject.cpp (EventObject::AddXamlHandler): New method
18883         to add a handler from XAML so that we can force the listener token
18884         to be 0, like Silverlight does.
18886 2008-09-19  Michael Dominic K.  <mdk@mdk.am>
18888         * animation.cpp:
18889         * animation.h: Attach the storage to the prev storage on the
18890         partuclar AnimationClock/Storage Begin, not when the parent
18891         storyboard begins. That fixes: #412074 .
18893 2008-09-19  Stephane Delcroix  <sdelcroix@novell.com>
18895         * src/downloader.cpp:
18896         * src/downloader.h: DownloadAccessPolicy enum, used as dl.Open
18897         argument. Drop downloder_open method.
18898         * src/media.cpp:
18899         * src/playlist.cpp:
18900         * src/deepzoomimagetilesource.cpp:
18901         * src/text.cpp: use the new Open with the corresponding policy.
18903 2008-09-19  Sebastien Pouliot  <sebastien@ximian.com>
18905         * media.cpp: Reduce the pixbuffer leaks on popfly.com. The biggest
18906         offenders are gone now but it's still leaking in a few cases.
18908 2008-09-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18910         * pipeline.cpp: MediaFrame::~MediaFrame: Free the buffer before calling
18911           any custom Cleanup methods (allowing the Cleanup method to free
18912           buffer if g_free isn't the way to do it).
18914 2008-09-18  Jeffrey Stedfast  <fejj@novell.com>
18916         Fixes bug #410619.
18918         * dependencyobject.cpp (class EventLists): Init current_token to
18919         1. Popfly uses a token of 0 to mean no-listener (sorta like gtk
18920         apps use 0 to mean that a g_signal is not connected).
18922 2008-09-18  Geoff Norton  <gnorton@novell.com>
18924         * media.cpp: Stop leaking pixbuf loaders.
18926 2008-09-18  Sebastien Pouliot  <sebastien@ximian.com>
18928         * mp3.cpp: Need to g_strdup the "mp3" string or we could crash when
18929         g_free-ing it later.
18931 2008-09-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18933         * pipeline.cpp: Check for register_mswmv in libmscodecs.so, and honor
18934           RUNTIME_INIT_CODECS_DEBUG.
18935         * runtime.h, runtime.cpp: Add a runtime init flag to print codec debug
18936           info.
18938 2008-09-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18940         * src.mdp: Updated.
18941         * pipeline.cpp, pipeline.h: Add a generic null decoder, shows a
18942           moonlight logo for video and plays silence for audio.
18943         * mp3.cpp, mp3.h: Remove NullMp3Decoder, no longer needed.
18944         * mplayer.cpp: RenderFrame: take stride into account when blitting rgb
18945           data.
18946         * pipeline-logo.inc: Added.
18948 2008-09-17  Larry Ewing  <lewing@novell.com>
18950         * border.cpp:
18951         * control.cpp:
18952         * grid.cpp:
18953         * frameworkelement.cpp: start filling in InvalidateArrange and
18954         InvalidateMeasure calls.
18956         * panel.cpp:
18957         * panel.h:
18958         * canvas.h:
18959         * canvas.cpp (Canvas::OnCollectionItemChanged): move the ZIndex
18960         change handling here from panel since it is a Canvas property.
18962 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18964         * pipeline.h: Remove some dead code.
18966 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18968         * runtime.h, runtime.cpp: Instead of having a flag to enable ms codecs,
18969           add flags to disable both ffmpeg and ms codecs and include them by
18970           default.
18971         * pipeline.cpp: register_mscodecs: look for libmscodecsmp3.so too
18972           (until it gets integrated in libmscodecs.so), and register the mp3
18973           codec. Media::Initialize: Update according to runtime init flag
18974           changes, and always register null encoders.
18976 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18978         * pipeline.cpp, runtime.cpp, runtime.h: Add a runtime override to not
18979           delete downloaded media files.
18981 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18983         * dependencyobject.cpp: Add TODO.
18985 2008-09-17  Jackson Harper  <jackson@ximian.com>
18987         * xaml.cpp: Don't try setting the content prop in managed if there
18988         is no cdata content (we're just dealing with spaces).
18990 2008-09-17  Larry Ewing  <lewing@novell.com>
18992         * grid.cpp (Grid::MeasureOverride): fix the span accumulators to
18993         use the right index value.
18995 2008-09-17  Sebastien Pouliot  <sebastien@ximian.com>
18997         * frameworkelement.cpp: Fix moon-unit SIGSEGV when unreferencing
18998         SizeChangedEventArgs.
19000 2008-09-17  Michael Dominic K.  <mdk@mdk.am>
19002         * clock.cpp:
19003         * clock.h: Separate raising events from raising completed events. 
19004         In certain clock hierarchies this would cause us to emit completed event
19005         before raising animation setter events.
19007         * applier.cpp: Enabling the applier again.
19008         * applier.h: Animation resets don't have INSTANT precedence. The just 
19009         have higher precedence than normal animation setters.
19011 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19013         * audio-pulse.cpp: Remove stray characters.
19015 2008-09-16  Chris Toshok  <toshok@ximian.com>
19016         
19017         * dirty.h, dirty.cpp: add DirtyMeasure/DirtyArrange.
19019         * frameworkelement.h, frameworkelement.cpp
19020         (FrameworkElement::UpdateLayout): override
19021         UIElement::UpdateLayout, and if that base class method returns
19022         true, emit LayoutUpdatedEvent.
19024         * uielement.h, uielement.cpp (UIElement::InvalidateMeasure): add
19025         DirtyMeasure.
19026         (UIElement::InvalidateArrange): add DirtyArrange.
19027         (UIElement::DoMeasure): this should drive the measure process -
19028         needs filling in, though.
19029         (UIElement::DoArrange): this should drive the arrange
19030         process. same.
19031         (UIElement::UpdateLayout): change return type to bool.  call
19032         DoMeasure and DoArrange synchronously, and return true if we
19033         arrange.
19035         * runtime.cpp (Surface::Attach): call InvalidateMeasure on the new
19036         toplevel.
19038         * cbinding.h, cbinding.cpp: regen.
19040 2008-09-16  Larry Ewing  <lewing@novell.com>
19042         * clock.cpp: make AddTimeout take a priority. Make the render
19043         timeout slightly lower than default so that we process gdk events
19044         before rendering.
19046         * media.cpp: raise the priority of the media timeout so that it
19047         doesn't drop below default or the render tick.
19049 2008-09-16  Chris Toshok  <toshok@ximian.com>
19051         * dirty.h, dirty.cpp: add a priority queue-like setup for the
19052         dirty lists, where priority == level in the visual hierarchy.
19053         Processing the down dirty list proceeds from lower "priority" to
19054         higher, and the up dirty list proceeds from higher to lower.
19055         * runtime.h, runtime.cpp: use the new dirty lists.
19057         * uielement.h, uielement.cpp: add a visual_level field, which is
19058         updated when the element is added to the
19059         hierarchy (this->visual_level = parent->visual_level + 1).
19061 2008-09-16  Jackson Harper  <jackson@ximian.com>
19063         * xaml.cpp: keys should be a property of the instance.
19065 2008-09-16  Fernando Herrera  <fherrera@novell.com>
19067         * pipeline.cpp: Register MS codecs if MOONLIGHT_OVERRIDES
19068           has codecs=microsoft.
19069         * runtime.h: Do not default to RUNTIME_INIT_MICROSOFT_CODECS
19070           in RUNTIME_INIT_BROWSER.
19072 2008-09-16  Jackson Harper  <jackson@ximian.com>
19074         * xaml.cpp: Move cdata handling code into the content property
19075         setters, allow managed content property setters to set values from
19076         strings.
19078 2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19080         * audio-pulse.cpp: dlsym another method previously forgotten.
19082 2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19084         * multiscaleimage.h, textbox.h: Use quotes to include our headers.
19086 2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19088         * audio-alsa.cpp: Use dlopen/dlsym to access all alsa methods, and
19089           don't link with alsa anymore
19091 2008-09-16  Jb Evain  <jbevain@novell.com>
19093         * template.h (TemplateBinding): decorate with a SLVersion=2.
19095 2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19097         * audio-pulse.cpp: Use dlopen/dlsym to access all pa methods, and don't
19098           link with pulseaudio anymore. Hopefully fixes #425560.
19100 2008-09-16  Fernando Herrera  <fherrera@novell.com>
19102         * asf/asf-structures.h:
19103         * asf/asf.cpp:
19104         * asf/asf.h:
19105         * mplayer.h:
19106         * pipeline.h: Don't use relative paths in #includes.
19107         * Makefile.am: Add -Iasf
19109 2008-09-15  Michael Dominic K.  <mdk@mdk.am>
19111         * src/applier.cpp: Disabling the applier for now, it seems there are still
19112         some tiny 'issues' with it.
19114 2008-09-15  Chris Toshok  <toshok@ximian.com>
19116         * dependencyobject.h, dependencyobject.cpp: add real
19117         PropertyChange callbacks (so we can implement listeners without
19118         the listener being a dependencyobject - which is nice for
19119         TemplateBindings, which don't need all that overhead.)
19120         
19121         * template.h, template.cpp: switch over to using this new listener
19122         interface.
19124 2008-09-15  Chris Toshok  <toshok@ximian.com>
19126         * xaml.cpp (dependency_object_set_attributes): add the
19127         TemplateBinding to the item, not the containing template.
19129 2008-09-15  Larry Ewing  <lewing@novell.com>
19131         * applier.h: really disable the applier to make changes instant,
19132         fixes page turn and the test regressions.
19134         * applier.cpp: ref and unref the object to avoid crashes on
19135         popfly.
19137 2008-09-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19139         * src.mdp: Updated with new files.
19141 2008-09-12  Larry Ewing  <lewing@novell.com>
19143         * grid.cpp (Grid::Measure): accumulate colspan width and pass
19144         pixel size restrictions on to the children.
19146 2008-09-11  Michael Dominic K.  <mdk@mdk.am>
19148         * animation.cpp:
19149         * applier.cpp:
19150         * applier.h: Adding some defines for applier precedences + a way
19151         to instant apply with precedence == 0.
19153 2008-09-10  Michael Dominic K.  <mdk@mdk.am>
19155         * clock.cpp: Properly emit the Completed event after the properties have
19156         been applied.
19158 2008-09-09  Michael Dominic K.  <mdk@mdk.am>
19160         * animation.cpp:
19161         * applier.cpp: Removing debug messages, adding proper free code.
19163 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
19165         * animation.cpp:
19166         * animation.h:
19167         * applier.cpp: Do not set the values, instead move them to applier. 
19169 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
19171         * applier.cpp:
19172         * clock.cpp:
19173         * clock.h:
19174         * runtime.cpp:
19175         * runtime.h: Moving the Applier instance to TimeManager.
19177 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
19179         * runtime.cpp:
19180         * runtime.h: Adding Applier to Surface.
19182 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
19184         * applier.cpp:
19185         * applier.h: Adding a basic Flush method, totally bad for now.
19187 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
19189         * applier.cpp:
19190         * applier.h: Adding basic Apply function that applies all the changes
19191         to objects.
19193 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
19195         * applier.cpp:
19196         * applier.h: Adding basic method to add property to apply on object.
19198 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
19200         * Makefile.am:
19201         * applier.cpp:
19202         * applier.h: Introducing the applier helper class. Will be used 
19203         to apply property changes in order.
19205 2008-09-11  Jackson Harper  <jackson@ximian.com>
19207         * xaml.cpp: Move some of the content property setting logic into
19208         the XamlElementInstance's.
19210 2008-09-11  Stephane Delcroix  <sdelcroix@novell.com>
19212         * multiscaleimage.cpp: draw a pattern that should look like
19213         a MSI (currently still wrong)
19215 2008-09-10  Jeffrey Stedfast  <fejj@novell.com>
19217         * text.h (class Run): Apparently Run's TextProperty is internal in
19218         managed-land.
19220 2008-09-10  Larry Ewing  <lewing@novell.com>
19222         * border.cpp:
19223         * frameworkelement.cpp:
19224         * shape.cpp, shape.h:
19225         * canvas.cpp: update to pass the new more extensive tests.
19227 2008-09-10  Larry Ewing  <lewing@novell.com>
19229         * size.h:  Tweak to match updated tests.
19231 2008-09-09  Chris Toshok  <toshok@ximian.com>
19233         * style.h (class Setter): make ValueProperty's PropertyType
19234         'object' instead of 'Managed'.
19236         * template.cpp (FrameworkTemplate::AddXamlBinding): make this a
19237         little more bulletproof.
19238         (ControlTemplate::DuplicateObject): XamlTemplateBinding can return
19239         NULL, don't create a TemplateBindingNode (and add it to the list)
19240         in that case.
19242         * type.h.in (class Type): remove OBJECT - it gets autogenerated
19243         now.
19245         * xaml.cpp (start_element): we need to set inst->parent before
19246         setting the attributes, as the attributes might include a
19247         StaticResource (or TemplateBinding) that requires us to walk back
19248         up the tree.
19249         (XamlElementInfoNative::CreateElementInstance): create a
19250         XamlElementInstanceTemplate if the type is a subclass of
19251         FRAMEWORKTEMPLATE.
19252         (dependency_object_set_attributes): return out of this after
19253         adding the templatebinding (so we don't end up in the managed xaml
19254         loader code trying to set properties to "{TemplateBinding ...}"
19255         Also, if the property type is OBJECT, call into the loader (like
19256         we do with MANAGED), and fix the logic check on
19257         p->loader->SetAttribute in that case.
19259         * type.h, type-generated.cpp: regen.
19261 2008-09-09  Sebastien Pouliot  <sebastien@ximian.com>
19263         * xaml.cpp: Don't unref NULL collections. Fix regression when
19264         parsing invalid points (or doubles).
19266 2008-09-08  Chris Toshok  <toshok@ximian.com>
19268         * xaml.h, xaml.cpp: stopgap before jackson gets the completely
19269         managed approach to managed object parsing going.  a few key
19270         changes:
19272         1) xaml_load_managed_object takes an out bool
19273         parameter (is_dependency_object) so the managed code can create
19274         non-DO subclasses, and then the parser will pass that GCHandle
19275         back to managed code in set_attribute.
19277         2) added an add_child callback to the loader so that managed DO
19278         subclasses (and non-subclasses) can deal with collection
19279         properties.  theres no ContentProperty handled in managed code,
19280         yet.
19282 2008-09-08  Geoff Norton  <gnorton@novell.com>
19284         * audio-*.(cpp|h): The Alsa code requires us to join the play
19285         thread before we remove the audio sources otherwise we can 
19286         end up in a race accessing closed pcm's when shutting down.
19288 2008-09-08  Geoff Norton  <gnorton@novell.com>
19290         * audio.cpp: Ensure that we dont enter an infinite loop before
19291         we actually start playing a source.
19293 2008-09-08  Larry Ewing  <lewing@novell.com>
19295         * frameworkelement.cpp: make things 1.0 safe.
19297 2008-09-08  Larry Ewing  <lewing@novell.com>
19299         * frameworkelement.cpp (FrameworkElement::Arrange): rework to
19300         match some of the Measure logic
19302         * border.cpp:
19303         * canvas.cpp, canvas.h:
19304         * control.cpp, control.h: rework arrange implementation to match
19305         the measure logic and the current thinking on arrange.
19307         * uielement.cpp, uielement.h: expose render_size accessor.
19309 2009-09-08  Stephane Delcroix  <sdelcroix@novell.com>
19311         * tilesource.h|cpp: keep the source and tiles info on the c++ side
19313         * multiscaleimage.cpp: draw a cairo pattern instead of nothing
19315 2008-09-08  Larry Ewing  <lewing@novell.com>
19317         * grid.cpp: Chain collection changed up properly.
19319 2008-09-07  Larry Ewing  <lewing@novell.com>
19321         * thickness.h (struct Thickness): add +/-/- to thickness to clean
19322         up some of the other code.
19324         * rect.h: remove ShrinkBy now that we can negate thickness
19326         * size.h: clean things and make GrowBy stop at 0 now that we can
19327         deal with thickness addition outside of things.
19329         * canvas.cpp:
19330         * frameworkelement.cpp: 
19331         * control.cpp:
19332         * border.cpp: subtract the padding and border thickness from
19333         available size before passing it to children.  Handle some corner
19334         cases in measure with ugly hacks.
19335         
19336 2008-09-07  Larry Ewing  <lewing@novell.com>
19338         * canvas.cpp, canvas.h:         
19339         * control.cpp, control.h:
19340         * border.cpp:
19341         * grid.cpp:
19342         * panel.cpp, panel.h: refactor MeasureOverride to return the size of the
19343         actual contents.
19345         * frameworkelement.cpp: Make measure pre and post condition the
19346         output rather than doing it in the overrides themselves.
19348         * size.h: make sure min/max will never set a known size to NAN.
19350 2008-09-07  Chris Toshok  <toshok@ximian.com>
19352         * type.h.in: add OBJECT kind.
19354         * type.h, cbinding.h, cbinding.cpp, type-generated.cpp: regen.
19356 2008-09-06  Chris Toshok  <toshok@ximian.com>
19358         * value.cpp (Value::CreateUnref): don't use 'Foo foo = Foo(args);'
19359         - instead use 'Foo foo(args)'.  the former creates 2 objects to
19360         the latter's 1.
19362         * media.cpp (MediaElement::GetValue): same.
19364         * uielement.cpp: same.
19366         * error.h, error.cpp (class MoonError): make this a class instead
19367         of a struct, add a default ctor, remove Dispose and use ~MoonError
19368         instead, add FillIn methods that take a "code" as well as an
19369         ErrorType to support the parser.
19371         * dependencyobject.h, dependencyobject.cpp: some api cleanup - get
19372         rid of GError and use MonoError exclusively, move the internal
19373         EventLists/EventList types to the .cpp file.  Also, remove a few
19374         redundant methods on DependencyObject.  The hit at call sites is
19375         negligable (one additional line, perhaps), and the call sites are
19376         few and far between.
19378         * xaml.cpp (dependency_object_set_attributes)
19379         (dependency_object_set_property): call
19380         DependencyObject::SetValueWithError.
19382         * animation.cpp (KeyFrameCollection::GetKeyFrameForTime): look up
19383         the property here.  the DO api is gone.
19385 2008-09-06  Chris Toshok  <toshok@ximian.com>
19387         * grid.h, grid.cpp: flesh out some of the
19388         OnPropertyChanged/OnSubPropertyChanged/OnCollectionChanged stuff.
19389         Also add in a completely broken and unfinished MeasureOverride
19390         implementation.  It passes some of the tests, but not for the
19391         right reasons :) Lastly, move the GridUnitType enum to enums.h
19393         * enums.h: move GridUnitType here, and rename its elements to have
19394         a "GridUnitType" prefix.
19396         * xaml.cpp: track GridUnitType enum references.
19398         * dependencyproperty.g.cpp: fix up attached properties getters to
19399         return default values if there is one.
19401 2008-09-05  Jeffrey Stedfast  <fejj@novell.com>
19403         * text.cpp (TextBlock::OnPropertyChanged): TextAlignment doesn't
19404         actually change the lauout, so no need to set the dirty flag when
19405         it changes.
19406         (TextBlock::Layout): Updated to handle Silverlight 2.0 TextBlock's
19407         Padding property.
19408         (TextBlock::Paint): Same.
19410 2008-09-05  Larry Ewing  <lewing@novell.com>
19412         * uielement.cpp: use render bounds rather than bounds to determine
19413         if we have something to draw.
19415         * stylus.h, stylus.cpp: remove the EmptyBackground method.
19417         Fixes the annotation regression in page turn (again).
19418         
19419 2008-09-04  Larry Ewing  <lewing@novell.com>
19421         * uielement.h (class UIElement): generate managed accessors for
19422         the subtree hack.
19424 2008-09-04  Chris Toshok  <toshok@ximian.com>
19426         * xaml.cpp (dependency_object_add_child): add code here for
19427         FrameworkTemplate, call SetVisualTree with the child.
19429         * control.cpp (Control::Control): init bindings.
19430         (Control::~Control): unref applied_template and delete bindings.
19431         (Control::ApplyTemplate): make sure we return false here from a
19432         few error places (NULL template, a template with a NULL
19433         visual_tree.)
19435         * template.cpp (FrameworkTemplate::FrameworkTemplate): init
19436         visual_tree to NULL.
19437         (FrameworkTemplate::~FrameworkTemplate): unref visual_tree.
19438         (FrameworkTemplate::SetVisualTree): new method, set visual_tree
19439         and ref it.
19440         (ControlTemplate::DuplicateObject): we need to special case a
19441         couple of classes (collections, templates) in order to traverse
19442         them.. ugh.
19443         (ControlTemplate::Apply): if the visual_tree is null, don't try to
19444         copy it.
19446         * template.h (class FrameworkTemplate): add SetVisualTree method
19447         for the parser.
19449 2008-09-04  Larry Ewing  <lewing@novell.com>
19451         * uielement.cpp, uielement.h: new methods GetSubtreeObject and
19452         ElementAdded ElementRemoved.
19454         * dependencyobject.h: remove ContentAdded, ContentRemoved.
19455         
19456         * collection.cpp, collection.h: rename ContentWalker to
19457         VisualTreeWalker use GetSubtreeObject () rather than content for walking.
19459         * template.cpp, template.h: make Apply return the newly created
19460         tree.
19462         * panel.cpp, panel.h:
19463         * control.cpp, control.h: add template_root child that isn't
19464         hooked into the normal tree.  Start implementing ApplyTemplate and
19465         GetTemplateChild.
19467         * usercontrol.cpp: mess around with Content a little in making it
19468         use the ElementAdded ElementRemoved logic since UserControl
19469         doesn't really support template changes.
19470         
19471         * border.h: implement GetSubtreeObject. 
19473         * stylus.cpp:
19474         * dirty.cpp:
19475         * frameworkelement.cpp:
19476         * canvas.cpp, canvas.h: update for new treewalker.
19478 2008-09-04  Jeffrey Stedfast  <fejj@novell.com>
19480         * layout.cpp (TextLayout::Render): Added some new arguments which
19481         aren't actually used yet but will be eventually (assuming I
19482         continue with this approach).
19484         * textbox.cpp (TextBox::Paint): Don't bother painting the
19485         background, control does this for us.
19487 2008-09-04  Stephane Delcroix  <sdelcroix@novell.com>
19489         * tilesource.h, deepzoomimagetilesource.h|.cpp: move the dzits in its
19490         own file, implement the downloader.
19492 2008-09-03  Chris Toshok  <toshok@ximian.com>
19494         * dependencyobject.h: as much as i hate this, add
19495         GetCurrentValues() for the template stuff.
19497         * xaml.cpp: add XamlElementInstanceTemplate and initial support
19498         for TemplateBindings.
19500         * template.h, template.cpp: add a bunch of stuff for templates.
19502         * control.h, control.cpp: add OnLoaded and OnPropertyChanged to
19503         watch for template property changes, and apply the template in
19504         OnLoaded (or if we're already loaded).  Also, add accessors for
19505         TemplateProperty.
19507         * dependencyproperty.g.cpp: regen.
19509 2008-09-03  Larry Ewing  <lewing@novell.com>
19511         * frameworkelement.cpp (FrameworkElement::MeasureOverride): use
19512         the new Size methods.
19514         * border.cpp, border.h: add some initial (broken) rendering
19515         support, rework measure to use some of the new rect and size
19516         methods.
19518 2008-09-03  Jeffrey Stedfast  <fejj@novell.com>
19520         * textbox.cpp (TextBox::OnPropertyChanged): When the AcceptsReturn
19521         property chanegs, no need to re-layout or invalidate - according
19522         to my little test program, Silverlight 2 Beta 2 does not change
19523         the rendered text when this property changes - any newlines in the
19524         input text stay there.
19526 2008-09-03  Sebastien Pouliot  <sebastien@ximian.com> 
19528         * resources.cpp: (ContainsKey) Don't crash if a null key is
19529         supplied. (Remove) same. (Add) same.
19531 2008-09-03  Jeffrey Stedfast  <fejj@novell.com>
19533         * enums.cpp (initialize_enums): Map Horizontal and
19534         VerticalScrollBarVisibility properly.
19536         * textbox.cpp (TextBox::CalcActualWidthHeight): Removed, I don't
19537         think we need this for TextBox controls since their
19538         ActualWidth/Height aren't based on the text extents afaik.
19539         (TextBox::Paint): Implemented, sorta.
19541 2008-09-03  Chris Toshok  <toshok@ximian.com>
19543         * resources.cpp (ResourceDictionary::Clear): add pre-glib 2.12
19544         code.
19546 2008-09-03  Larry Ewing  <lewing@novell.com>
19548         * uielement.cpp, uielement.h: 
19549         (UIElement::FrontToBack): Make FrontToBack non-virtual and move
19550         the generic logic here.
19552         * control.cpp, control.h:
19553         * panel.cpp, panel.h: Remove ftb logic, everything is handled in
19554         uielement now.
19556 2008-09-03  Larry Ewing  <lewing@novell.com>
19558         * uielement.cpp, uielement.h: 
19559         * media.cpp, media.h:
19560         * panel.cpp, panel.h:
19561         * shape.cpp, shape.h: Add GetCoverageBounds virtual method
19562         to let elements compute their own opaque coverage.
19564 2008-09-03  Stephane Delcroix  <sdelcroix@novell.com>
19566         * multiscaleimage.h|.cpp: new MultiScaleImage type
19568 2008-09-02  Chris Toshok  <toshok@ximian.com>
19570         * resources.h, resources.cpp: constify this.
19571         (ResourceDictionary::Remove): fix g_hash_table_lookup_extended
19572         logic.
19574         * xaml.cpp (XamlElementInstance::LookupNamedResource): implement
19575         resource lookups.
19576         (dependency_object_set_attributes): add support for StaticResource
19577         lookups.  going to refactor all this to add support for
19578         TemplateBinding.
19580 2008-09-02  Jeffrey Stedfast  <fejj@novell.com>
19582         * eventargs.h (class CollectionChangedEventArgs): Implemented
19583         accessor methods to get/set the event arg values.
19585         * trigger.cpp (EventTrigger::SetTarget): Fixed to not need to
19586         strdup the event_name string and also updated to use an accessor
19587         method to prevent a possible NULL dereference.
19589 2008-09-02  Michael Dominic K.  <mdk@mdk.am>
19591         * animation.cpp:
19592         * animation2.h: Reworking the animation hookup storage fix. Checking for
19593         subclass is plain dumb. Just make an exception for ObjectAnimation.
19595 2008-09-02  Michael Dominic K.  <mdk@mdk.am>
19597         * animation.cpp: Fixing a problem in animation hookup 
19598         storage -- the type/kind that the animation generates has to be the subclass
19599         of the type/kind the target property is ready to accept.
19601 2008-09-01  Stephane Delcroix  <sdelcroix@novell.com>
19603         * multiscalesubimage.h: fixing code generation decorators
19605 2008-09-01  Stephane Delcroix  <sdelcroix@novell.com>
19607         * multiscalesubimage.h: new type
19609 2008-08-29  Jeffrey Stedfast  <fejj@novell.com>
19611         * layout.cpp (TextLayout::LayoutWrap): Keep track of when 'words'
19612         end so that we can fall back to that position as the line
19613         width (we don't want to include trailing spaces unless
19614         underlined).
19615         (TextLayout::Render): If the line width is greater than the
19616         allowable width, keep the line left-aligned like Silverlight does.
19618 2008-08-29  Chris Toshok  <toshok@ximian.com>
19620         * resources.cpp (ResourceDictionary::Clear): call
19621         Collection::Clear after we've cleared the hash so the hash will be
19622         empty in event handlers.
19624 2008-08-29  Jeffrey Stedfast  <fejj@novell.com>
19626         * layout.cpp (TextLayout::Layout): Do a slightly better job of
19627         keeping track of line->width - still not 100% correct.
19629 2008-08-28  Chris Toshok  <toshok@ximian.com>
19631         * Makefile.am: add resources.h and resources.cpp
19633         * xaml.cpp (class XamlElementInfo): add x:Key field (since this
19634         can't set a field on the object -- it might be a value type).
19635         (class XamlElementInstanceValueType): remove the empty
19636         implementation of SetAttributes.  we'll define it later.
19637         (XNamespace::SetAttribute): handle name/key behavior here.  Only
19638         allow one of them to be set on an object. Also, only attempt to
19639         set DependencyObject::NameProperty on an item if it's not a value
19640         type.
19641         (start_element): don't add value type children to their parent in
19642         start_element (as we haven't read the data that will allow us to
19643         create the value typed object.)  we need to push this off to the
19644         end_element handler.  also return early if there are problems
19645         setting attributes.
19646         (end_element_handler): if we're creating a value typed ELEMENT,
19647         add the child to the parent here.
19648         (dependency_object_add_child): add some ResourceDictionary
19649         validation here (if there's no key, etc), and actually call
19650         dict->Add(key, child).
19651         (XamlElementInstanceNative::CreateItem): don't crash if we failed
19652         to create an item.  (fixes one of the crashes caused by the
19653         ResourceDictionaryTests - ParseDouble)
19654         (XamlElementInstanceValueType::SetAttributes): call
19655         value_type_set_attributes.
19656         (value_type_set_attributes): stripped down version of
19657         dependency_object_set_attributes, as there are only a handful (is
19658         it really only x:Name and x:Key?) attributes we handle on value
19659         types.
19660         (globally): always call set_parent as opposed to
19661         ->SetLogicalParent.  we might not be dealing with a DO-subclass.
19663         * xaml.h (class XamlLoader): remove the explicit C api calls
19664         xaml_create_from_file, xaml_create_from_str, and
19665         xaml_hydrate_from_str.  Replace them with instance methods on
19666         XamlLoader (CreateFromFile, CreateFromString, and
19667         HydrateFromString, respectively) Add WithError variants of the
19668         these, and have the generator generate bindings for them so we can
19669         throw parse exceptions into managed code.
19671         * error.h (struct MoonError): add XAML_PARSE_EXCEPTION.
19673         * value.h.in (struct Value): add Is overload with
19674         additional_types.
19676         * uielement.h: include resources.h.
19678         * collection.h, collection.cpp: change the api in a few ways to
19679         make ResourceDictionary easier to write - make Count virtual,
19680         remove all the type checks for element type from methods, and add
19681         that check to Collection::CanAdd.  ResourceDictionary overrides
19682         that and always returns true.  Make Clear return a bool.
19684         * animation.h, animation.cpp: track collection changes.
19686         * stylus.h, stylus.cpp: track Collection::CanAdd change, and move
19687         implementations to the .cpp file.
19689         * resources.h, resources.cpp: split out the code for
19690         ResourceDictionary here.  ResourceDictionary is an odd fish.  In
19691         1.0 land, it provides the same api as a collection, and things can
19692         be looked up by name via findName.  In 2.0 land, items in
19693         ResourceDictionaries have to have either an x:Key or x:Name
19694         attribute.  If both are lacking it's an error.  If the former is
19695         specified you can only get at it through Resources["name"].  If
19696         the latter is specified, you can use both Resources["name"] or
19697         findName("name").
19699         * dependencyobject.cpp, dependencyobject.h: add Is and GetType
19700         overloads that take additional_types.  Make IsValueValid take an
19701         additional_types parameter too.  Expose ClearValue to managed code
19702         so we can actually clear the Value* to null without using
19703         the (unsupported from the generator) old method of passing
19704         IntPtr.Zero (Value* now maps to "ref Value" in generated
19705         pinvokes.)  Lastly add a SetValueWithError method so we can throw
19706         exceptions in managed code.
19708         * border.h: add defaults for Padding and BorderThickness.
19710         * border.cpp: simplify things a bit since we don't have to worry
19711         about padding/border thickness being NULL.
19713         * depenencyproperty.g.cpp, value.h, type-generated.cpp: regen.
19715 2008-08-28  Jeffrey Stedfast  <fejj@novell.com>
19717         * layout.cpp (TextLayout::Render): Respect TextAlignment.
19719 2008-08-26  Chris Toshok  <toshok@ximian.com>
19721         * dependencyobject.cpp (DependencyObject::SetLogicalParent): get
19722         rid of this g_assert, it's crashing the moon-unit tests.  just
19723         warn and bail.
19724         (DependencyObject::SetSurface): don't do anything if the surface
19725         is already set to the same value.
19727         * animation.cpp (Storyboard::SetSurface): don't do anything if
19728         GetSurface() == surface.
19730         * text.cpp (Glyphs::SetSurface): same.
19732         * uielement.cpp (UIElement::SetSurface): same.
19734         * brush.cpp (ImageBrush::SetSurface): same.
19736         * media.cpp: same.
19738         * collection.cpp (DependencyObjectCollection::SetSurface): same.
19739         (Collection::RemoveAtWithError): this (against logic) raises
19740         ArgumentException, not ArgumentOutOfRangeException.
19742 2008-08-25  Chris Toshok  <toshok@ximian.com>
19744         * rect.h, rect.cpp: rename the w/h fields to width/height, since
19745         every other instance of similar fields are named that.
19747         * value.cpp, border.cpp, window-gtk.cpp, control.cpp, runtime.cpp,
19748         uielement.cpp, geometry.cpp, shape.cpp, frameworkelement.cpp,
19749         brush.cpp: track rect change.
19751 2008-08-25  Chris Toshok  <toshok@ximian.com>
19753         * border.h, border.cpp: implement ArrangeOverride, and fix up some
19754         test failures in MeasureOverride.
19756         * frameworkelement.cpp (FrameworkElement::Arrange): it seems we
19757         also set the desired size here (to the final size we get from
19758         ArrangeOverride.)
19760 2008-08-25  Michael Dominic K.  <mdk@mdk.am>
19762         * animation2.h: Advertise self (ObjectAnimationUsingKeyFrames) as providing
19763         proper kinds of values (TYPE::DEPENDENCY_OBJECT).
19765 2008-08-25  Michael Dominic K.  <mdk@mdk.am>
19767         * animation.cpp:
19768         * animation2.h: Properly guard 2.0 stuff with if SL_2_0 .
19769         Also adding validation methods.
19771 2008-08-25  Michael Dominic K.  <mdk@mdk.am>
19773         * animation.cpp:
19774         * animation2.h: Base work for ObjectAnimationUsingKeyFrames 
19775         implementation.
19777 2008-08-24  Geoff Norton <gnorton@novell.com>
19778         
19779         * media.h: Add a new overload to set the SourceProperty from managed land.
19780         * media.cpp: Support async source changing downloader creation for ImageSource
19781         * cbinding.(cpp|h): Regen
19783 2008-08-23  Geoff Norton  <gnorton@novell.com>
19785         * mplayer.cpp: Only ref the audio if we have it as well.
19787 2008-08-23  Geoff Norton  <gnorton@novell.com>
19789         * bitmapimage.h: Add to the build
19791 2008-08-23  Geoff Norton  <gnorton@novell.com>
19793         * cbinding.cpp|h, dependencyproperty.g.cpp, type-generated.cpp,
19794           type.h, value.h: Regenerated
19795         * downloader.cpp|h: Return failure state for downloader->GetResponse
19796         * runtime.h: Generate C bindings for IsMainThread.
19798 2008-08-23  Larry Ewing  <lewing@novell.com>
19800         * animation.cpp, animation.h: make ControlPoint1 and ControlPoint2
19801         properties.  Move the quadratic generation into
19802         GenerateQuadratics.
19804         Regenrate and remove the managed wrappers.
19805         
19806 2008-08-23  Larry Ewing  <lewing@novell.com>
19807         
19808         * xaml.cpp (value_from_str): fixed crossed commits with Auto
19809         parsing.
19811         * collection.cpp (ContentWalker::Step): add some debug logic to
19812         protect against an error case for now.
19814 2008-08-23  Chris Toshok  <toshok@ximian.com>
19816         * Makefile.am (libmoon_la_SOURCES): add cornerradius.cpp
19818         * thickness.h, thickness.cpp: rename thickness_from_str to
19819         Thickness::FromStr, and make it return a bool instead of a
19820         pointer, as Point and Rect do.
19822         * cornerradius.h, cornerradius.cpp: add CornerRadius::FromStr.
19824         * xaml.cpp (value_from_str): use the CornerRadius parsing method,
19825         and track the change to the Thickness one.
19827 2008-08-23  Larry Ewing  <lewing@novell.com>
19829         * xaml.cpp (value_from_str): quick auto hack so we can test
19830         controls more.
19832         * runtime.cpp (RenderNode::Render): fix typo in merge
19834 2008-08-23  Larry Ewing  <lewing@novell.com>
19836         * uielement.cpp, uielement.h: move basic ftb logic here from
19837         panel.  Start storing extents allong with bounds.
19839         * panel.cpp, panel.h: move most ftb logic to uielement.cpp.  Use
19840         content walker.
19842         * stylus.cpp, stylus.h: rework the PostRender hack by chaining up
19843         to uielement in front_to_back mode unconditionaly.
19845         * runtime.cpp, runtime.h: make RenderNode members private and move
19846         the ftb override logic here and out of the PostRender call.
19847         
19848         * shape.cpp|h, frameworkelement.cpp|h, media.cpp, text.cpp: store
19849         extents.
19851         * control.cpp, control.h: implement basic functionality.
19853 2008-08-22  Chris Toshok  <toshok@ximian.com>
19855         * color.h, rect.h, point.h: remove the copy ctors.  we don't need
19856         them, and they were causing crashes (!)
19858 2008-08-22  Chris Toshok  <toshok@ximian.com>
19860         * frameworkelement.cpp (FrameworkElement::MeasureOverride): always
19861         take the margins into account, even when we're childless.
19863         * panel.h, panel.cpp: add MeasureOverride which always returns
19864         0,0.
19866         * border.h (class Border): add property accessors for everything.
19868         * border.cpp (Border::MeasureOverride): new implementation.
19870         * value.h.in, value.cpp: add CornerRadius support, and remove the
19871         unnecessary casts (and in the Rect/Point cases, calls to the copy
19872         ctor)
19874         * value.h, dependencyproperty.g.cpp: regenerate.
19875         
19876 2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
19878         * textbox.h (class SelectionChangedEventArgs): Added
19879         Text/SelectionChangedEventArgs.
19881 2008-08-22  Chris Toshok  <toshok@ximian.com>
19883         * frameworkelement.cpp (FrameworkElement::Measure): instead of
19884         always calling MeasureOverride here, we call the registered manage
19885         callback if there is one.  So, we proxy into managed code here,
19886         invoke the virtual method FWE.MeasureOverride, and if there's no
19887         subclass override (or if it chains up for some reason), we end up
19888         in MeasureOverride by virtue of the pinvoke in
19889         FrameworkElement.cs.
19890         (FrameworkElement::MeasureOverride): move all the logic for the
19891         default MeasureOverride implementation here.  it's pretty
19892         braindead - takes margins into account, measures our child, makes
19893         sure our size is between Min/Max.  That's about it.
19894         (FrameworkElement::Arrange): same drill as ::Measure.
19895         (FrameworkElement::ArrangeOverride): still (incorrectly) return
19896         finalSize.
19898 2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
19900         * textbox.h: Made ArrangeOverride() virtual and added
19901         SelectionChangedEvent.
19903 2008-08-22  Chris Toshok  <toshok@ximian.com>
19905         * dependencyobject.cpp (DependencyObject::GetContent): guard
19906         against the value being NULL.
19908 2008-08-22  Larry Ewing  <lewing@novell.com>
19910         * collection.cpp (ContentWalker::ContentWalker): make
19911         ContentWalker understand directions (Logical, ZForward, ZReverse).
19913 2008-08-22  Larry Ewing  <lewing@novell.com>
19915         * runtime.cpp (Surface::PaintToDrawable): restore the x/y offsets
19916         when drawing in the image backend.
19918 2008-08-22  Chris Toshok  <toshok@ximian.com>
19920         * frameworkelement.h, frameworkelement.cpp: add in the layout foo
19921         - provide implementations of Measure and Arrange that just call
19922         MeasureOverride and ArrangeOverride.  These are virtual and meant
19923         to be overridden either in unmanaged code (by simply overriding
19924         them), or in managed code (RegisterManagedOverrides is called in
19925         FWE.Initialize.)  Decorate the class with @CallInitialize so the
19926         managed ctor calls it.
19928         * uielement.h, uielement.cpp: remove the PInvoke/CBinding for the
19929         ctor, and add the layout methods.  Measure and Arrange are pure
19930         virtual.
19932         * cbinding.h, cbinding.cpp, type-generated.cpp: regen.
19933         
19934 2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
19936         * textbox.cpp (TextBox::Layout): Implemented rough layout.
19938         * layout.cpp (TextRun::TextRun): New ctor for use with TextBox.
19940 2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
19942         * textbox.cpp (TextBox::ArrangeOverride): Added.
19944         * frameworkelement.h (class FrameworkElement): Changed default
19945         Width/Height values to NAN.
19947         * textbox.cpp: Initial implementation of TextBox, Layout and
19948         Rendering logic still missing.
19950 2008-08-22  Larry Ewing  <lewing@novell.com>
19952         * usercontrol.cpp (UserControl::OnPropertyChanged): make sure the
19953         values are there.
19955 2008-08-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19957         * audio-alsa.cpp: Call Underflowed () when we run out of data.
19959 2008-08-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19961         * mplayer.h, mplayer.cpp: Remove the Eof state and add two separate
19962           VideoEnded and AudioEnded states. Implement handling of VideoEnded
19963           state, and call MediaElement::MediaEnded when both states have been
19964           reached.
19965         * media.h, media.cpp: Rename AudioFinished to MediaFinished and handle
19966           all media finished (both video and audio) logic there.
19968 2008-08-21  Larry Ewing  <lewing@novell.com>
19970         * uielement.cpp (UIElement::ComputeLocalTransform): clean up
19971         accumulated transform logic.  Keep the parent TransformFor out of
19972         the local_transform.
19974 2008-08-21  Larry Ewing  <lewing@novell.com>
19976         * uielement.cpp (UIElement::Dispose): add logic removed from
19977         panel.
19979         * dirty.cpp (Surface::PropagateDirtyFlagToChildren): use
19980         ContentWalker.
19982 2008-08-21  Chris Toshok  <toshok@ximian.com>
19984         [ fixes annotations not showing up in pageturn due to a NULL
19985         background on the ink presenter ]
19987         * stylus.h, stylus.cpp (class InkPresenter): add an override of
19988         EmptyBackground().  If we have a non-empty stroke bounding
19989         rectangle, return false.  Otherwise fall back to
19990         Panel::EmptyBackground.
19992         * panel.h, panel.cpp (class Panel): add EmptyBackground() virtual
19993         method.  the panel implementation returns true if GetBackground()
19994         returns NULL.  Use this virtual method instead of an explicit
19995         GetBackground() call in Panel::FrontToBack.
19997 2008-08-21  Jeffrey Stedfast  <fejj@novell.com>
19999         * enums.cpp: Added ScrollBarVisibility enum
20001         * text.cpp (TextBlock::OnPropertyChanged): Er... we need to
20002         invalidate if the TextWrappingProperty changes too.
20004 2008-08-21  Chris Toshok  <toshok@ximian.com>
20006         * border.h, border.cpp, cornerradius.h: add new
20007         types.
20009         * Makefile.am: add border/cornerradius to the file list.
20011         * type.h, value.h, cbinding.cpp, cbinding.h, type-generated.cpp,
20012         dependencyproperty.g.cpp: regen.
20014 2008-08-21  Jeffrey Stedfast  <fejj@novell.com>
20016         * textbox.h (class TextBox): The TextBox namespace should be
20017         System.Windows.Controls
20019         * stackpanel.h (class StackPanel): #include panel.h
20021 2008-08-21  Jeffrey Stedfast  <fejj@novell.com>
20023         * textbox.h: Initial implementation of the TextBox class (just
20024         stubs atm).
20026         * value.h.in (struct Value): Don't use int32_t or uint64_t,
20027         etc. Be consistent and use the glib types.
20029         * layout.cpp (TextLayout::Layout): Fixed
20030         LineStackingStrategy/LineHeight issues. If we are using
20031         BlockLineHeight & the specified LineHeight is not Auto, then we
20032         need to use 0.0 as the descender.
20034 2008-08-21  Chris Toshok  <toshok@ximian.com>
20036         * animation.h: make KeyFrame::Get/SetKeyTime pure virtual, and add
20037         accessors to all the subclasses.  They're autogenerated from the
20038         respective class's DP's.
20040         * animation2.h: same.
20042         * animation.cpp: remove KeyFrame::Get/SetKeyTime implementations.
20044         * control.h (class Control): add some more GenerateAccessors.
20046         * control.cpp: and remove the manual implementations here.
20048         * dependencyproperty.g.cpp: regen.
20050 2008-08-21  Larry Ewing  <lewing@novell.com>
20052         * animation.cpp (KeyFrameCollection::OnSubPropertyChanged): remove
20053         debug spew.
20055         * xaml.cpp (value_from_str): unref the collections we create after
20056         setting them.
20058 2008-08-21  Jackson Harper  <jackson@ximian.com>
20060         * xaml.cpp: Can't rely on the type for getting a managed element's
20061         name, we have to pull it from the element name provided to the
20062         XamlElementInfo.
20064 2008-08-21  Chris Toshok  <toshok@ximian.com>
20066         * dependencyobject.cpp (DependencyObject::HasProperty): pass
20067         additional_types to IsSubclassOf.
20069         * type.h, type.cpp: add IsSubclassOf variants that take
20070         additional_types.  Fixes lookup problems of non-custom DP's on
20071         managed subclasses.
20073 2008-08-21  Chris Toshok <toshok@ximian.com>
20075         * value.h.in (struct Value): make all single arg primitive value
20076         typed ctors "explicit" so c++ won't do any magic implicit
20077         conversion from value type to Value.
20079         * value.h: regen
20081         * runtime.cpp (Surface::ShowFullScreenMessage): need to create the
20082         Value()'s explicitly.
20084         * collection.cpp (DoubleCollection::FromStr): same.
20086 2008-08-20  Larry Ewing  <lewing@novell.com>
20088         * dependencyobject.cpp (create_temp_namescope): don't leak the
20089         temporary namescope we create.  Also don't create it over and over
20090         again.
20092 2008-08-20  Larry Ewing  <lewing@novell.com>
20094         * dependencyobject.cpp|h: Add ContenAdded and ContentRemoved
20095         virtual methods so that we can begin to simplify content rules.
20097         * dirty.cpp (Surface::PropagateDirtyFlagToChildren): use
20098         GetContent to handle the children in a generic way.
20100         * uielement.cpp|h: start moving generic uielement content logic
20101         here.  Implement OnLoaded and deal with content directly.
20102         
20103         * canvas.cpp|h: remove obsolete methods. Move most of zindex
20104         property logic from panel to here.
20106         * panel.cpp|h: move ZIndex logic to canvas and move OnLoaded logic
20107         to uielement.
20109         * control.cpp|h: generate accessors, start remove OnLoaded and
20110         SetSurface.
20112         * dependencyproperty.g.cpp: regen.
20113         
20114 2008-08-20  Chris Toshok  <toshok@ximian.com>
20116         * text.cpp, text.h: generate accessors for Glyph properties.
20118         * geometry.cpp, grid.cpp, media.cpp, panel.cpp, runtime.cpp,
20119         shape.cpp, stylus.cpp, transform.cpp, trigger.cpp, uielement.cpp,
20120         xaml.cpp: make another pass through files switching to C++
20121         accessors from GetValue(FooClass::FooProperty)->AsFoo().
20123         * dependencyproperty.g.cpp: regen.
20125 2008-08-20  Chris Toshok  <toshok@ximian.com>
20127         * animation.cpp, animation.h, brush.cpp, brush.h, canvas.cpp,
20128           canvas.h, clock.cpp, clock.h, collection.cpp, collection.h,
20129           frameworkelement.cpp, frameworkelement.h, geometry.cpp,
20130           geometry.h, grid.h, media.cpp, media.h, namescope.cpp,
20131           namescope.h, panel.cpp, panel.h, playlist.cpp, shape.cpp,
20132           shape.h, stackpanel.h, style.h, stylus.cpp, stylus.h, text.cpp,
20133           text.h, transform.cpp, transform.h, trigger.h, uielement.cpp,
20134           uielement.h, xap.cpp, xap.h:
20136           mostly, decorate almost all DependencyProperties with
20137           @GenerateAccessors, add in lots of new ones that weren't present
20138           before (to the .h), and remove all those implementations from
20139           the .cpp files.
20141           Also, don't use #if SL_2_0 in the headers.  we can't depend on
20142           that being defined (especially once we install).  Any
20143           2.0-specific behavior needs to be done in the .cpp files.  There
20144           are still a few things that are wrong wrt
20145           this (dependencyproperty.g.cpp needs to define the DP's
20146           regardless of version, they can just be NULL in the 1.0 case for
20147           2.0 properties, for instance.)
20149         * cbinding.cpp, cbinding.h, dependencyproperty.g.cpp: regen
20151 2008-08-20  Chris Toshok  <toshok@ximian.com>
20153         * uielement.h (ClearLoaded): use &=, not |=, here.  fixes tests.
20155 2008-08-20  Jeffrey Stedfast  <fejj@novell.com>
20157         * layout.cpp (TextLayout::Layout): Updated to take a
20158         TextLayoutHints argument for providing hints like text alignment
20159         and line stacking/height.
20161         * text.cpp (class TextBlock): Updated a bit for Silverlight
20162         2.0. All of the properties added in 2.0 are now there, although
20163         only 2 of them are respected at the moment (line stacking strategy
20164         & line height).
20166         * enums.cpp|h: Added LineStackingStrategy and TextAlignment enums.
20168 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20170         * audio.cpp: NULL out the player instance after deleting it.
20172 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20174         * audio-pulse.cpp, audio-pulse.h: Close: Detect if Close has been
20175           called and if so, do nothing.
20177 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20179         * audio.cpp: We only support 1 or 2 channels for the moment.
20181 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20183         * media.cpp, media.h: Fix buffering progress to take into account that
20184           the first pts isn't necessarily 0 (happens for live media).
20186 2008-08-20  Chris Toshok  <toshok@ximian.com>
20188         * runtime.cpp (Surface::HandleMouseEvent): make sure not to emit
20189         Focus events on click in a 1.0 context.
20191 2008-08-20  Jackson Harper  <jackson@ximian.com>
20193         * xaml.cpp|h: Setting properties requires the xaml namespace so it
20194         can lookup managed types. TODO: It also needs the default
20195         assembly, but I am thinking of moving that to the loader.
20197 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20199         * mplayer.cpp: Properly ref/unref the AudioSource.
20201 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20203         * media.h: Remove G_BEGIN/END_DECLS and two unnecessary #includes.
20205 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20207         * media.cpp, media.h, runtime.cpp: Remove media_init, just make
20208           runtime_init call Media::Initialize directly.
20210 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20212         * media.h, media.cpp: Remove media_element_advance_frame from header,
20213           no need to make it public.
20215 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20217         * mplayer.cpp: AdvanceFrame: only return true if we actually processed
20218           any frames. SeekCallback: clear the queue of audio frames as well.
20219         * media.h, media.cpp: Removed SetPreviousPosition, no longer needed.
20220           Don't change previous_position while we're seeking, and don't make
20221           it go backwards.
20222         * audio.cpp, audio.h: Added AudioSource::ClearFrames.
20224 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20226         * runtime.cpp: Fix 1.0 build. No idea if the fix is correct.
20228 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20230         * cbinding.cpp, cbinding.h, xap.h: Mark Xap as 2.0 only for the
20231           generator.
20233 2008-08-20  Stephane Delcroix  <sdelcroix@novell.com>
20235         * canvas.h, canvas.cpp:
20236         * uielement.h, uielement.cpp: move the ZIndexProperty and Get/Set-ers
20237         from uielement to Canvas. Drop the non-static Get/Set-Top/Left ()
20239         * panel.cpp, collection.cpp: related changes.
20241 2008-08-20  Stephane Delcroix  <sdelcroix@novell.com>
20243         * uielement.h: change the generator instructions so the 
20244         NameProperty is generated in FrameworkElement.
20246 2008-08-19  Chris Toshok  <toshok@ximian.com>
20248         * dependencyobject.h,
20249         dependencyobject.cpp (DependencyObject::GetContent): ripped this
20250         out of a hack, should prove useful for the work coming up.
20252 2008-08-19  Chris Toshok  <toshok@ximian.com>
20254         * runtime.cpp (Surface::FocusElement): fix the IsTabStop check.
20256 2008-08-19  Chris Toshok  <toshok@ximian.com>
20258         * control.h, control.cpp (class Control): generate a binding for
20259         Control::InitializeFromXaml and drop the 2 manual C bindings.
20261         * cbinding.h, cbinding.cpp: regen.
20263 2008-08-19  Chris Toshok  <toshok@ximian.com>
20265         * xap.h, xap.cpp (class Xap): rename xap_unpack to Xap::Unpack.
20266         autogenerate our binding for it.
20268         * cbinding.h, cbinding.cpp: regen.
20270 2008-08-19  Chris Toshok  <toshok@ximian.com>
20272         * eventargs.h, eventargs.cpp (class Keyboard): make this more of a
20273         real class, and remove the implementation of
20274         keyboard_get_modifiers.  instead, provide a c++ method (both a
20275         getter and setter) and annotate the Getter with
20276         GenerateCBinding/GeneratePInvoke.
20278         * collection.h, collection.cpp: reorder the class decls (why do
20279         people put private first?) and make CollectionIterator a real
20280         class, with annotated methods.  Also, move
20281         double_collection_from_str and point_collection_from_str to
20282         DoubleCollection::FromStr and PointCollection::FromStr
20283         respectively.  move double_garray_from_str out of here (to
20284         utils.h/utils.cpp)
20286         * utils.h, utils.cpp: new (hopefully last) home for
20287         double_garray_from_str.
20289         * point.h, point.cpp (struct Point): rename point_from_str to
20290         Point::FromStr.  no reason to have a C method for that.
20292         * rect.h, rect.cpp (struct Rect): same thing with Rect::FromStr.
20294         * window-gtk.h (class MoonWindowGtk): mark the ctor and
20295         GetWidget() with GenerateCBinding/GeneratePInvoke.
20297         * window-gtk.cpp: and remove their implementations.
20299         * xaml.cpp: convert over to all the new ::FromStr methods.
20301         * thickness.cpp: track new home of double_garray_from_str.
20303         * cbinding.h, cbinding.cpp: regen.
20305 2008-08-19  Chris Toshok  <toshok@ximian.com>
20307         * uielement.h, uielement.cpp: make almost all data
20308         private/protected.  Add a couple of methods to aid in
20309         this (IsLoaded, ClearLoaded, TransformPoint).  Get rid of the
20310         cbinding for transform_point - it's never used.  Also, re-order
20311         the header to put public things first, then protected then
20312         private.
20314         * runtime.cpp: use IsLoaded.
20316         * panel.cpp: use ClearLoaded.
20318         * text.cpp, shape.cpp, eventargs.cpp, frameworkelement.cpp: use
20319         TransformPoint.
20321 2008-08-19  Chris Toshok  <toshok@ximian.com>
20323         * runtime.cpp (Surface::HandleMouseEvent): don't compare the input
20324         lists, as we will almost always have identical lists.  compare the
20325         head of the new list to focused_element to determine if focus
20326         changes.
20328 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20330         * pipeline.cpp: Beautify error messages.
20332 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20334         * media.cpp: test-inexistent-media(s) were failing due to ISP's
20335           tendency to return search pages for failed dns lookups. Fixed tests
20336           after testing with sane DNS settings and did the appropiate change
20337           in code (raise correct error message/number).
20339 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20341         * runtime.h: Make RUNTIME_INIT values sequential.
20343 2008-08-19  Chris Toshok  <toshok@ximian.com>
20345         * xaml.cpp (xaml_hydrate_from_str): make sure to set the surface
20346         of the object before parsing so that objects don't switch from the
20347         loader's surface to NULL as they're added to the hierarchy while
20348         being parsed.
20350 2008-08-19  Larry Ewing  <lewing@novell.com>
20352         * shape.cpp (Shape::InsideObject): check the extents first, then
20353         reorder the stroke/fill tests to test for the most likely first.
20355         Helps speed up sliverlight.net/world a bit.
20357 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20359         * mplayer.h, pipeline.h: No need to surround GetTypeName with
20360           OBJECT_TRACKING anymore.
20362 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20364         * audio.cpp, audio.h, audio-alsa.cpp, audio-alsa.h, audio-pulse.cpp,
20365           audio-pulse.h: Added, our new audio abstraction/implementation.
20366         * Makefile.am, src.mdp, type-generated.cpp: Updated.
20367         * mplayer.cpp, mplayer.h: Moved audio code into its own file(s).
20368         * runtime.cpp, runtime.h: Add runtime overrides for audio.
20370 2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
20372         * xap.cpp (xap_unpack): Fixed compiler warning.
20374 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20376         * media.cpp: Include headers mplayer.h doesn't include anymore.
20377           MediaElement::SetMedia: only set audio data on the MediaPlayer if
20378           the media has audio. TImelineMarkerCollection::Add: don't call the
20379           base class' Add, call base's Insert instead. Fixes a stack overflow
20380           since base class' Add calls Insert, which TimelineMarkerCollection
20381           overrides to call Add.
20383 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20385         * enums.cpp: Wrap 2.0-only code in SL_2_0.
20387 2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
20389         * zip/unzip.c: Get rid of unused variable.
20391         * value.cpp (Value::ToString): Get rid of unused variable.
20393 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20395         * dependencyobject.h: EventObject::ref: print a stack trace before the
20396           abort if we can, and fix typo in the abort message.
20398 2008-08-19  Geoff Norton  <gnorton@novell.com>
20400         * xap.cpp: Ensure we can actually enter the directory we're creating.
20402 2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
20404         * mplayer.cpp: Silence the compile warning.
20406         * color.cpp (color_from_str): Got rid of unused variable.
20408         * xaml.cpp (dependency_object_set_attributes): Don't need to use
20409         strlen(str) == 0 to figure out if the string is empty, just check
20410         the first char.
20411         (wrap_type): Removed. Doesn't seem to be used any longer.
20412         (get_type_for_property_name): Same.
20413         (panel_add_child): Same.
20414         (dependency_object_set_property): Made static.
20415         (dependency_object_set_attributes): Same.
20416         (dependency_object_hookup_event): Same.
20417         (dependency_object_missed_property): Same.
20419         * dependencyproperty.cpp (resolve_property_path): Use proper
20420         integer types and avoid calling strlen if all we care to know is
20421         if the string is empty.
20423         * runtime.cpp (Surface::Paint): Get rid of an annoying debug
20424         printf.
20425         (Surface::HandleMouseEvent): Removed unused variable.
20427 2008-08-19  Chris Toshok  <toshok@ximian.com>
20429         * trigger.cpp (EventTrigger::SetTarget): make the 2.0 case more
20430         robust - handle Type.Event notation, making sure that the type is
20431         valid for the target.
20433 2008-08-19  Larry Ewing  <lewing@novell.com>
20435         * runtime.cpp|h: add override to use sofware fallbacks for
20436         rendering.
20438 2008-08-19  Chris Toshok  <toshok@ximian.com>
20440         * trigger.cpp (EventTrigger::SetTarget): do the AddHandler in both
20441         1.0 and 2.0 cases.  big oops.
20443 2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
20445         * dependencyobject.cpp (DependencyObject::GetObjectType): Get rid
20446         of a warning that is no longer valid.
20448 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20450         * downloader.h, downloader.cpp: Add a request field to
20451           DownloaderResponse, and a response field to DownloaderRequest. When
20452           a request is aborted, also abort the response. This fixes a crash
20453           when we aborted the request before receiving a response, the
20454           response had no idea the request had been aborted (since the
20455           request didn't store the response after creating it, it couldn't
20456           notify the response of the abort), and happily accessed deleted
20457           objects.
20459 2008-08-18  Chris Toshok  <toshok@ximian.com>
20461         * runtime.cpp (Surface::CreateArgsForEvent): new method, create
20462         the right kind of args for a given event.  we should probably
20463         autogenerate this.
20464         (Surface::EmitEventOnList): use CreateArgsForEvent.  Only create
20465         one instance of the event args that we use to bubble along the
20466         element list.  If it's a RoutedEventArgs subclass, set the source
20467         to be the first element in the list, and check the "Handled"
20468         attribute after every emit to see if we should finish early (this
20469         provides for 2.0 semantics).
20470         (Surface::FocusElement): unfortunately the event generation is
20471         async, so add a tick call if we need to.  if we already have a
20472         tick call (meaning >= 1 focus change has happened already in this
20473         tick), we drop the intervening change(s).  This is likely wrong.
20474         (Surface::GenerateFocusChangeEvents): emit GotFocus/LostFocus on
20475         the proper element lists.
20476         (Surface::HandleUIKeyPress, Surface::HandleUIKeyRelease): if we're
20477         silverlight2 (and we have a focused element), emit the event on
20478         the list of elements from the focused element back up to the root.
20479         Otherwise just emit it on the toplevel.
20481         * runtime.h (class Surface): add GetFocusedElement/FocusElement
20482         methods, which are used to implement
20483         FocusManager.GetFocusElement() and Control.Focus().
20485         * uielement.h, uielement.cpp (class UIElement): remove a bunch of
20486         Emit$Event() methods that were never used.
20488         * trigger.cpp: in 2.0, you can put other events in RoutedEvent,
20489         not just "Loaded".  there are parsing rules that we can't make use
20490         of here, so more work will likely have to happen in the parser.
20492         * trigger.h (class EventTrigger): add registered_event_id.
20494         * cbinding.h, cbinding.cpp: regenerate.
20496 2008-08-18  Geoff Norton  <gnorton@novell.com>
20497         
20498         * type-generated.cpp, cbinding.cpp|h: Rengerated
20499         * dependencyobject.h: Bind DependencyObject .ctor
20501 2008-08-18  Geoff Norton  <gnorton@novell.com>
20503         * deployment.h: Move CrossDomainAccess to
20504         * enums.h|cpp: Register CrossDomainAccess so that AppMainfest
20505         can specify values from the enum.
20507 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20509         * cbinding.cpp, cbinding.h, uielement.h: Mark
20510           UIElement::GetTransformToUIElement as 2.0, fixes 1.0 build.
20512 2008-08-18  Larry Ewing  <lewing@novell.com>
20514         * panel.cpp|h: remove SetSurface override, the
20515         DependencyObjectCollection::SetSurface does the work already.
20517 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
20519         * uielement.cpp: Autogenerate more of the bindings, make
20520         desired_size private, etc.
20522 2008-08-18  Geoff Norton  <gnorton@novell.com>
20523         
20524         * eventargs.cpp|h: Change the return type to int, fix the build.
20526 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
20528         * uielement.cpp (uielement_get_surface): Removed.
20529         (uielement_invalidate): Removed.
20530         (uielement_set_transform_origin): Removed.
20532         * transform.cpp: Removed manual c-bindings.
20534         * text.cpp: Removed manual c-bindings for property accessors.
20536 2008-08-18  Geoff Norton  <gnorton@novell.com>
20538         * type-generated.cpp, cbinding.cpp|h: Rengerated
20539         * uielement.cpp|h, type.h, value.h: Keyboard->Key
20540         * runtime.cpp|h: Move key translation to eventargs, and pass the
20541         raw GdkEventKey to KeyEventArgs.
20542         * eventargs.cpp|h: Implement KeyEventArgs bound to the managed stuff
20543         and remove the old KeyboardEventArgs.
20545 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
20547         * stylus.h: Moved required manual c-bindings into G_*_DECLS block.
20549         * size.cpp: Removed manual ctor c-binding.
20551         * shape.cpp: Removed manual c-bindings for property accessors.
20553 2008-08-18  Geoff Norton  <gnorton@novell.com>
20555         * media.cpp|h, cbinding.cpp|h: Implement support for generating Image's
20556         from managed Streams.
20558 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
20560         * runtime.cpp: Removed manual c-bindings for Surface and renamed
20561         Get/SetTrans() to Get/SetTransparent().
20563         * panel.cpp: Removed manual c-bindings for property accessors.
20565         * media.cpp: Removed manual c-bindings for property accessors and
20566         other methods that are now autogenerated.
20568 2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20570         * dependencyobject.h: Make the generator happy.
20572 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
20574         * geometry.cpp: Removed manual c-bindings for property accessors.
20576 2008-08-18  Michael Dominic K.  <mdk@mdk.am>
20578         * runtime.h: Caller is "in main thread" also when the main_thread
20579         pointer equals NULL (no surface has been created).
20581 2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20583         * debug.cpp: Fix a leak found by valgrind.
20585 2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20587         * dependencyobject.h: Make GetTypeName virtual if we're tracking
20588           objects, enables better output of lost objects.
20590 2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20592         * dependencyobject.cpp: DrainUnrefs: since unreffing objects may cause
20593           more objects to be enqueued for unref, loop until there are none
20594           left.
20596 2008-08-17  Geoff Norton  <gnorton@novell.com>
20598         * downloader.cpp|h: Add a method for DownloaderResponse to 
20599         support a Header Visitor.
20601 2008-08-17  Geoff Norton  <gnorton@novell.com>
20603         * uielement.h: Expose desired_size as public to fix the build.
20605 2008-08-17  Chris Toshok  <toshok@ximian.com>
20607         * uielement.h, frameworkelement.h: can't use SL_2_0 in headers.
20609 2008-08-17  Chris Toshok  <toshok@ximian.com>
20611         * Makefile.am (libmoon_include_HEADERS): INCLUDE_MONO_RUNTIME ->
20612         INCLUDE_MANAGED_CODE.
20614 2008-08-15  Larry Ewing  <lewing@novell.com>
20616         * clock.cpp|h: add methods Jeff removed back. 
20618 2008-08-15  Chris Toshok  <toshok@ximian.com>
20620         * stylus.h (class DrawingAttributes): all managed DP fields are
20621         private.
20622         (class Stroke): DrawingAttributesProperty and StylusPointsProperty
20623         are private in managed-land.
20625 2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
20627         * grid.h: Autogenerate bindings for GetActualWidth/Height
20629         * grid.cpp: Removed manual c-bindings.
20631         * frameworkelement.cpp: Removed manual c-bindings.
20633 2008-08-15  Chris Toshok  <toshok@ximian.com>
20635         * eventargs.h (enum CollectionChangedAction): change Reset to
20636         Cleared, and add Clearing to handle the old functionality in
20637         DependencyObject::OnCollectionClear.
20639         * dependencyobject.h (class DependencyObject): remove
20640         OnCollectionClear.  we handle that case in OnCollectionChanged
20641         now.
20643         * panel.h, panel.cpp (Panel::OnCollectionChanged): move
20644         OnCollectionClear code to here.
20646         * uielement.cpp (UIElement::OnCollectionChanged): add
20647         ActionClearing code here.
20649         * stylus.cpp, text.cpp: track CollectionChangedAction enum change.
20651         * collection.cpp (Collection::Clear): use
20652         EmitChanged (CollectionChangedActionClearing,...) instead of
20653         OnCollectionClear.
20655 2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
20657         * eventargs.cpp|h: Same.
20659         * control.cpp: Same.
20661         * contentcontrol.cpp: Removed manual property accessor c-bindings.
20663         * clock.cpp: Removed manual c-bindings for things that can be
20664         autogenerated.
20666         * brush.cpp|h: Removed manual c-bindings for property accessors.
20668         * animation.cpp|h: Added some convenience c++ property accessors and
20669         got rid of all of the manual c-bindings. Fixed them to be
20670         auto-generated.
20672         * stylus.cpp: Added c++ property accessors and updated the code to
20673         use them (cleans up some code) and also got rid of the c binding
20674         accessors. We'll autogenerate these.
20676 2008-08-15  Sebastien Pouliot  <sebastien@ximian.com>
20678         * layout.cpp: Don't add kerning before a dot (.). This match SL
20679         behavior (i.e. it's not a "sliding dot" algorithm like I expected)
20680         and the effect is visible in a few DRT (like #184).
20682 2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
20684         * uielement.cpp (UIElement::GetTriggers): Added for convenience.
20685         (UIElement::Dispose): Use the new convenience method.
20687 2008-08-15  Chris Toshok  <toshok@ximian.com>
20689         * panel.cpp (Panel::ChildRemoved): queue a ZIndex re-sort here.
20690         (Panel::ChildAdded): call item->OnLoaded if we're loaded, and
20691         queue a re-sort.
20692         (Panel::OnCollectionChanged): simplify this since the code moved
20693         to ChildAdded/ChildRemoved.
20695         * panel.h, panel.cpp (Panel::Dispose): loop over our children
20696         setting their visual parent to NULL.
20698         * uielement.h, uielement.cpp (UIElement::Dispose): loop over the
20699         trigger collection removing ourselves as the target.
20700         (UIElement::OnPropertyChanged): handle TriggersProperty here -
20701         remove target from the old triggers and set target on the new
20702         ones.
20703         (UIElement::OnCollectionChanged): new method, handle
20704         TriggersCollection.
20706         * dependencyobject.cpp: be consistent in our treatment of
20707         LogicalParent - clear it in every place we're removing a DO.  Warn
20708         if we're setting it again on the same DO.
20710         * collection.h, collection.cpp: remove triggercollection's
20711         added/removedfromcollection, adn remove uielementcollection's
20712         removedfromcollection.  Also, stop using a separate closure.  The
20713         collection's LogicalParent always has the same value - use that.
20715 2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
20717         * clock.cpp (TimeManager::SourceTick): Instead of always using up
20718         to 1/30 of a second for flushing the async queue, use only the
20719         time remaining in our render pass to flush it.
20721 2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20723         * animation.h: KeyTimeProperty isn't nullable in managed code.
20725 2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20727         * cbinding.cpp, cbinding.h: Regenerated.
20728         * media.cpp, media.h: Add a MediaElement::SetStreamSource, and hack it
20729           to at least open the source.
20730         * pipeline.cpp, pipeline.h: Added ManagedStreamSource.
20732 2008-08-15  Jackson Harper  <jackson@ximian.com>
20734         * xaml.cpp: Need to advance after F.
20736 2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20738         * animation.h, dependencyproperty.g.cpp: KeyTime is nullable. Fixes MS
20739           DRT#114.
20741 2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20743         * dependencyproperty.g.cpp: Regenerated.
20745 2008-08-14  Larry Ewing  <lewing@novell.com>
20747         * animation.h (class KeyFrame): remove the KeyTime DP and make
20748         the ctor private this is an abstract class.
20750         * animation.cpp: retrieve the property via name.
20752 2008-08-14  Jeffrey Stedfast  <fejj@novell.com>
20754         * clock.cpp (TimeManager::SourceTick): Call InvokeTickCall() as
20755         many times as we can in 1/30th of a second. Major visual
20756         performance improvement for bug #395160.
20758 2008-08-14  Jackson Harper  <jackson@ximian.com>
20760         * xaml.cpp|h: We need to pass a pointer to the top level control
20761         when hooking up a managed event, the managed code uses this to
20762         find the method to invoke.
20764 2008-08-14  Jeffrey Stedfast  <fejj@novell.com>
20766         * uielement.cpp: Implemented property accessors for ZIndex
20768         * collection.cpp (UIElementZIndexComparer): Use
20769         UIElement::GetZIndex(). If, in the future, we make GetZIndex()
20770         return a cached value, now we'll automagically benefit from it.
20772 2008-08-14  Jeffrey Stedfast  <fejj@novell.com>
20774         ZIndex sorting optimization for bug #395160
20776         * panel.cpp (Panel::UpdateTotalHitTestVisibility): Don't iterate
20777         over the z_sorted list, it might not yet be
20778         populated (e.g. ResortZIndex() may not have been called yet).
20779         (Panel::OnPropertyChanged): Set a DirtyChildrenZIndices bit if the
20780         new collection is non-null.
20781         (Panel::OnCollectionChanged): Queue ZIndex resorts as appropriate.
20782         (Panel::OnLoaded): Queue a resort here too.
20784         * collection.cpp (UIElementCollection::AddedToCollection):
20785         Removed. We don't want to do the zindex sortign here anymore. Too
20786         slow. Instead, we'll have Panel::OnCollectionChanged() set the
20787         DirtyChildrenZIndices dirty flag so that the renderer forces a
20788         resort.
20789         (UIElementCollection::Insert): Removed, no need to override
20790         anymore since we won't be resorting by zindex here anymore.
20791         (UIElementCollection::ResortByZIndex): Now that z_sorted isn't
20792         maintained as items are added/inserted, we need to always init the
20793         z_sorted array here even if we only have 1 item.
20795 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20797         * xaml.cpp, pipeline.cpp: Don't use base_unref, call unref on the
20798           instance.
20799         * playlist.cpp: Use DependencyObject::SetName instead of the C method.
20800         * dependencyobject.h, dependencyobject.cpp: Generate all c methods, as
20801           well as Name accessors.
20802         * cbinding.h, dependencyproperty.g.cpp, cbinding.cpp: Regenerated.
20803         * runtime.cpp: Updated according to new method names.
20805 2008-08-14  Jackson Harper  <jackson@ximian.com>
20807         * xaml.cpp: We now create property instances from the property's
20808         type info not the property's parent type. This will allow us to
20809         have a managed attached property on a native object.
20811 2008-08-14  Chris Toshok  <toshok@ximian.com>
20813         * Makefile.am (libmoon_la_SOURCES): add thickness.cpp
20815         * thickness.h, thickness.cpp: add thickness_from_str.
20817         * xaml.cpp: add thickness parsing.
20819 2008-08-14  Jackson Harper  <jackson@ximian.com>
20821         * xaml.cpp: Need to lookup property element name's in their
20822         namespace so that managed attached properties can be set.
20824 2008-08-14  Jackson Harper  <jackson@ximian.com>
20826         * xaml.cpp: If there is a dot in the element name we can assume
20827         it's a property (or at least not an element).  This should prevent
20828         some extra calls into managed code to try to create types from
20829         property names.
20831 2008-08-13  Geoff Norton  <gnorton@novell.com>
20833         * runtime.cpp|h, clock.cpp|h: Move the g_idle_idd and g_timeout
20834         calls into the time manager.
20836 2008-08-13  Geoff Norton  <gnorton@novell.com>
20838         * runtime.cpp|h: Add a binding for g_idle_add.
20840 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20842         * cbinding.cpp, cbinding.h, eventargs.cpp, eventargs.h: Generate two
20843           MouseEventArgs methods.
20845 2008-08-14  Jackson Harper  <jackson@ximian.com>
20847         * type-generated.cpp: Value types.
20849 2008-08-13  Jackson Harper  <jackson@ximian.com>
20851         * xaml.cpp: Make sure we set content properties.
20853 2008-08-13  Jackson Harper  <jackson@ximian.com>
20855         * xaml.cpp: Add support for parsing value types.
20857 2008-08-13  Chris Toshok  <toshok@ximian.com>
20859         * panel.cpp (Panel::OnCollectionChanged): we only need to call
20860         OnLoaded on the new child.
20862 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20864         * stylus.h: StylusInfo doesn't have a managed equivalent.
20866 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20868         * dependencyproperty.h: Generate CBinding and PInvoke for IsAttached.
20869         * cbinding.cpp, cbinding.h: Regenerated.
20871 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20873         * type.cpp: Remove spew.
20874         * dependencyobject.cpp: GetValue*WithError: Fix error messages to say
20875           we're trying to get values, not set them.
20877 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20879         * dependencyproperty.g.cpp: Regenerated.
20880         * geometry.h: Added IsFilled property.
20882 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20884         * brush.h: Set correct managed DP access and property types.
20886 2008-08-13  Jeffrey Stedfast  <fejj@novell.com>
20888         * *.h: Added GeneratePInvoke attribute to each ctor
20890 2008-08-13  Jeffrey Stedfast  <fejj@novell.com>
20892         * text.cpp: s/Inlines/InlineCollection/g
20894         * xaml.cpp: s/Inlines/InlineCollection/g
20896         * collection.h (class InlineCollection): Renamed from Inlines.
20898         * trigger.h (class TriggerAction): Generate C Binding for ::Fire()
20899         and also the ctor. Needed to prevent a crash in test-props.html
20901 2008-08-13  Geoff Norton  <gnorton@novell.com>
20903         * runtime.cpp|h: Reuse the old html_timer infrastructure for the
20904         intial DispatcherTimer implementation.
20906 2008-08-13  Jeffrey Stedfast  <fejj@novell.com>
20908         * media.h (class MediaElement): Make MarkersProperty internal for
20909         managed-side.
20911         * grid.h (class Grid): Make Column/RowDefinitionsProperties
20912         internal for managed-side.
20914         * text.h (class TextBlock): Make InlinesProperty internal for
20915         managed-side.
20917         * panel.h (class Panel): Update ChildrenProperty managed property
20918         access.
20920         Also added newlines to the end of some files to silence compile
20921         warnings.
20923 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20925         * dependencyproperty.g.cpp, type.h, type-generated.cpp, value.h,
20926           cbinding.cpp, cbinding.h: Regenerated.
20927         * geometry.h: Annotation fix.
20928         * Makefile.am, src.mdp: Added tilesource.h
20929         * tilesource.h: Added.
20931 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20933         * src.mdp, Makefile.am: Added animation2.h
20934         * type.h, type-generated.cpp, value.h, cbinding.cpp, cbinding.h,
20935           dependencyproperty.g.cpp: Regenerated.
20936         * animation.h: Added missing 2.0 DPs and more annotations.
20937         * animation2.h: Added, contains 2.0 animation classes.
20938         * clock.h: There are no managed equivalent of TimelineGroup and
20939           ParallelTimeline, remove their Namespace annotation.
20941 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20943         * shape.h: Fix warning.
20945 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20947         * shape.h: The managed Shape class must be constructable, so make all
20948           pure virtual methods from the native Shape class just virtual.
20949         * cbinding.cpp, cbinding.h, type-generated.cpp: Regenerated.
20951 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20953         * animation.h, brush.h, cbinding.cpp, cbinding.h, clock.h,
20954           dependencyproperty.g.cpp, frameworkelement.h, geometry.h, panel.h,
20955           text.h, transform.h, type-generated.cpp, usercontrol.h: Added more
20956           annotations to make gui-compare happier.
20958 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20960         * control.h, dependencyobject.h, deployment.h, frameworkelement.h,
20961           style.h, template.h, trigger.h, uielement.h: Gui-compare annotation
20962           tweaking.
20964 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20966         * stackpanel.h, src.mdp, Makefile.am, cbinding.cpp, cbinding.h,
20967           dependencyproperty.g.cpp, enums.cpp, enums.h, type.h,
20968           type-generated.cpp, value.h: Added a native StackPanel class and
20969           generate the managed StackPanel.
20971 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20973         * brush.h, contentcontrol.h, deployment.h, downloader.h, media.h,
20974           namescope.h, stylus.h, transform.h: Tweak some annotations.
20976 2008-08-12  Chris Toshok  <toshok@ximian.com>
20978         * style.h (class Style): make the "Setters DP" field private.
20980         * template.h (class ControlTemplate): add TargetType DP
20982         * dependencyproperty.g.cpp: regen.
20984 2008-08-12  Chris Toshok  <toshok@ximian.com>
20986         * style.h (class Setter): hack for the DependencyProperty valued
20987         property.  we need to parse a string DP name in a context where we
20988         don't know the type to apply to it, so we need to have a string
20989         backed property.
20991         * dependencyproperty.g.cpp: regen.
20993 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20995         * collection.h: Annotate Collection.
20997 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20999         * animation.h, clock.h, collection.h, error.h, eventargs.h, media.h,
21000           size.h, style.h, template.h, trigger.h: Add @Namespace annotations.
21002 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21004         * src.mdp: Updated.
21006 2008-08-12  Chris Toshok  <toshok@ximian.com>
21008         * collection.cpp (Collection::Clear): make a temporary copy of the
21009         array so we can zero out the ptrarray before calling
21010         RemovedFromCollection.
21012 2008-08-12  Jackson Harper  <jackson@ximian.com>
21014         * xaml.h:
21015         * xaml.cpp: Hydrate now passes in the default assembly name and
21016         path (we can probably do away with path's I think that's just a
21017         holdover from 1.1).  If no assembly name is specified in the
21018         custom xmlns, the default's are used.
21020 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21022         * trigger.h, control.h, deployment.h, text.h, dependencyproperty.g.cpp,
21023           style.h, uielement.h, grid.h, media.h: Tweaked annotations to
21024           support managed DP accessor generation.
21026 2008-08-12  Jeffrey Stedfast  <fejj@novell.com>
21028         * collection.cpp (Collection::SetCount): Convenience function.
21029         (Collection::Clear): Use SetCount().
21030         (Collection::Insert): Same.
21031         (Collection::RemoveAt): Same.
21033         * media.cpp (TimelineMarkerCollection::Add): Chain up to direct
21034         parent class rather than base class - while the
21035         DependencyObjectCollection might not currently override Add/Insert
21036         methods, if at some later point overrides are added, then we need
21037         to do no work here.
21039         * collection.cpp (DependencyObjectCollection::SetValueAt):
21040         Removed (not used anywhere).
21041         (Collection::SetValueAtWithError): This needs to call
21042         SetValueAt(), not GetValueAt().
21043         (Collection::SetValueAt): Delete the removed Value after emitting
21044         the event so we don't leak it.
21046 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21048         * animation.h, brush.h, clock.h, control.h, dependencyobject.h,
21049           deployment.h, downloader.h, frameworkelement.h, media.h, text.h,
21050           trigger.h, uielement.h: Use string instead of char* as
21051           @PropertyType.
21053 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21055         * animation.h, brush.h, canvas.h, clock.h, collection.h,
21056           contentcontrol.h, control.h, dependencyobject.h, deployment.h,
21057           downloader.h, frameworkelement.h, geometry.h, grid.h, media.h,
21058           namescope.h, panel.h, shape.h, style.h, stylus.h, text.h,
21059           transform.h, trigger.h, uielement.h, usercontrol.h: Added
21060           @Namespace annotations, and changed @PropertyType which were
21061           declared as gint32 (and are enums) to use the actual enum type.
21062         * dependencyproperty.g.cpp: Updated.
21064 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21066         * src.mdp: Updated.
21068 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21070         * dependencyproperty.h, type.h, type-generated.cpp, value.h: Added
21071           DependencyProperty to the Kind enum.
21073 2008-08-11  Chris Toshok  <toshok@ximian.com>
21075         * deployment.h (class Application): add ResourceProperty.
21077         * style.h: add ValueProperty.
21079         * cbinding.h, cbinding.cpp: hm, looks like I forgot to regen these
21080         after adding the Version=2.0 stuff to the collection api.
21082         * dependencyproperty.g.cpp: regen.
21084 2008-08-11  Chris Toshok  <toshok@ximian.com>
21086         * error.h, error.cpp: add an enum to MoonError that lets us
21087         specify which exception to raise.
21088         
21089         * collection.h, collection.cpp: a few changes:
21091         1. make most methods take Value* now instead of Value, to ease the
21092         autogenerated bindings.  Leave in Add/Remove taking (Value v) so
21093         we can let c++ do some implicit conversion lifting for us.  Leave
21094         the (Value) variants as non-virtual, and make the Value* ones
21095         virtual.
21097         2. Make ::Add call ::Insert, instead of duplicating all the code.
21099         3. Move all calls of AddedToCollection and RemovedFromCollection
21100         to *after* the work has been done (they're past-tense, so do what
21101         their name implies.)  This means subclasses can assume the item is
21102         already in the array (or removed from it) when those methods are
21103         called.  The one holdout to this utopian ideal is Clear().  we
21104         need to fix that.
21106         4. Switch from overriding GetValue to handle CountProperty (and
21107         leaking a Value* every time we get it) to setting the
21108         CountProperty whenever we need to (in Insert/RemoveAt).
21110         5. Add special GetValueAtWithError, SetValueAtWithError, and
21111         RemoveAtWithError methods, that allow us to effectively raise
21112         exceptions from the unmanaged code.  Use the new
21113         MoonError::ErrorKind enum to specify which exception.
21115         6. remove a bunch of C api, which is now autogenerated.
21116         
21117         * dependencyproperty.g.cpp (dependency_property_g_init): regen to
21118         pick up Collection::CountProperty's default value.
21120         * cbinding.h, cbinding.cpp: autogen'ed collection api.
21122         * stylus.h, media.h, media.cpp: track collection changes.
21124         * dependencyobject.cpp: track MoonError enum change.
21126 2008-08-11  Chris Toshok  <toshok@ximian.com>
21128         * dependencyproperty.g.cpp: regen.
21130         * control.h (class Control): add StyleProperty.
21132 2008-08-11  Sebastien Pouliot  <sebastien@ximian.com>
21134         * layout.cpp: Compute line's height with more precision. This 
21135         removes the cumulative difference (over multiple lines) with
21136         Silverlight implementation. Fix DRT#209 (enough to PASS) and 
21137         improve several other ones (already passing but imperfect).
21139 2008-08-11  Chris Toshok  <toshok@ximian.com>
21141         * style.h: comment out 2 problematic DP's for now.
21143         * dependencyproperty.g.cpp: regen
21145 2008-08-11  Chris Toshok  <toshok@ximian.com>
21147         * style.h, style.cpp: add Style, SetterBase, Setter, and
21148         SetterBaseCollection unmanaged types.
21150         * Makefile.am: add them to the 2.0 build.
21152         * type.h, type-generated.cpp, value.h, cbinding.h, cbinding.cpp,
21153         dependencyproperty.g.cpp: regenerate from style.h/style.cpp.
21154         
21155 2008-08-11  Jeffrey Stedfast  <fejj@novell.com>
21157         * shape.cpp (Polyline::OnCollectionChanged): Invalidate the path
21158         cache.
21159         (Polygon::OnCollectionChanged): Same.
21161         * text.cpp (TextBlock::OnPropertyChanged): Set dirty to true when
21162         the TextDecorationsProperty changes too. Fixes the "underline
21163         hyperlinks" portion of bug #412986.
21165 2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21167         * xaml.cpp: Remove debug spew.
21169 2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21171         * array.cpp, array.h: Removed, no longer needed.
21172         * collection.cpp, collection.h: Moved double_garray_from_str to
21173           collection.cpp|h.
21174         * geometry.cpp, libmoon.h, Makefile.am, point.cpp, point.h, rect.cpp,
21175           shape.cpp, src.mdp, type.h, value.cpp, value.h, value.h.in,
21176           xaml.cpp: Remove the double and point arrays, no longer needed.
21177         * type-generated.cpp: Remove the double and point arrays, no longer
21178           needed. Implement support for 2.0 events.
21180 2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21182         * runtime.cpp: Fix a crash (xaml parser tries to access the NULL loader
21183           during parsing).
21185 2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21187         * dependencyproperty.g.cpp: Surround 2.0 DP declarations in #if SL_2_0.
21189 2008-08-09  Jeffrey Stedfast  <fejj@novell.com>
21191         * *.h: Removed *_new() prototypes which are autogenerated in
21192         cbinding.h
21194 2008-08-08  Chris Toshok  <toshok@ximian.com>
21196         * template.h, template.cpp: new file, stub implementations for
21197         FrameworkTemplate and ControlTemplate.
21199         * Makefile.am: add template.h/cpp.
21201         * control.h: add Template property.
21203         * frameworkelement.h: add some 2.0 events.
21205         * cbinding.h, cbinding.cpp, type.h, dependencyproperty.g.cpp,
21206         value.h, type-generated.cpp: regenerate.
21207         
21208 2008-08-08  Chris Toshok  <toshok@ximian.com>
21210         * xaml.h, xaml.cpp: we need to propagate the 2.0-ness of the
21211         parser around in various methods (starting from the public
21212         xaml_set_property_from_str and value_from_str*) in order to get it
21213         down to where it's needed for the enum_* calls.
21215         * enums.h, enums.cpp: add a "sl2" argument so we can resolve
21216         sl1/sl2 specific enum values, and add the 2.0 specific
21217         Horizontal/VerticalAlignment mappings.
21219 2008-08-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21221         * runtime.cpp: Remove comments to self :)
21223 2008-08-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21225         * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
21226           control.h, deployment.h, text.h, trigger.cpp, dependencyobject.h,
21227           canvas.cpp, transform.h, downloader.cpp, transform.cpp,
21228           animation.h, grid.cpp, shape.h, animation.cpp, deployment.cpp,
21229           control.cpp, runtime.cpp, text.cpp, clock.h, contentcontrol.h,
21230           clock.cpp, uielement.h, collection.h, geometry.h,
21231           contentcontrol.cpp, frameworkelement.h, uielement.cpp, grid.h,
21232           collection.cpp, geometry.cpp, shape.cpp, dependencyobject.cpp,
21233           frameworkelement.cpp, namescope.cpp, brush.h, panel.h, stylus.h,
21234           namescope.h, media.cpp, brush.cpp, usercontrol.h: Remove DP
21235           registration from *_init methods, and remove *_init methods which
21236           turned out to be empty after that.
21238 2008-08-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21240         * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
21241           control.h, deployment.h, text.h, trigger.cpp, dependencyobject.h,
21242           canvas.cpp, transform.h, downloader.cpp, transform.cpp,
21243           animation.h, grid.cpp, downloader.h, shape.h,
21244           dependencyproperty.g.cpp, animation.cpp, deployment.cpp,
21245           control.cpp, runtime.cpp, text.cpp, dependencyproperty.h,
21246           Makefile.am, clock.h, contentcontrol.h, dependencyproperty.cpp,
21247           clock.cpp, uielement.h, collection.h, geometry.h,
21248           contentcontrol.cpp, frameworkelement.h, src.mdp, uielement.cpp,
21249           grid.h, collection.cpp, geometry.cpp, shape.cpp,
21250           dependencyobject.cpp, frameworkelement.cpp, namescope.cpp, media.h,
21251           brush.h, panel.h, stylus.h, namescope.h, media.cpp, brush.cpp,
21252           usercontrol.h: Generate dependency property registration.
21254 2008-08-07  Chris Toshok  <toshok@ximian.com>
21256         * collection.h, collection.cpp (double_collection_from_str): new
21257         method.
21258         (point_collection_from_str): new method.
21260         * xaml.cpp (value_from_str): add support for
21261         DoubleCollection/PointCollection properties.  leave
21262         DoubleArray/PointArray in for now, although nothing should use it.
21264         * shape.h, shape.cpp, geometry.h, geometry.cpp: switch all
21265         PointArray/DoubleArray properties to using
21266         PointCollection/DoubleCollection.  This is unfortunately a
21267         necessity due to the 2.0 changes, but it should be transparent for
21268         everything else.
21270 2008-08-07  Larry Ewing  <lewing@novell.com>
21272         * shape.cpp (Shape::ShiftPosition): add an unfortunate restriction
21273         on ShiftPosition interaction with the shape cache to fix the
21274         droppings we were seeing in AnimationMatrix and
21275         StoryBoard_ModifyProperty.htm.
21277 2008-08-07  Geoff Norton  <gnorton@novell.com>
21279         * media.cpp: When the MediaElement source changes set the
21280         BufferingProgress back to 0 otherwise we may never emit a 
21281         BufferingProgressChangedEvent for the new source.
21283 2008-08-07  Sebastien Pouliot  <sebastien@ximian.com>
21285         * layout.cpp: Handle negative horiBearingX correctly. This gives
21286         better visual results in DRT #47 (same width value, up to 2 
21287         decimal) and #209 (not enough to make it PASS but I doubt the 
21288         master is ok, since I can't duplicate its output).
21290 2008-08-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21292         * dependencyobject.cpp: HasProperty: accept attached properties for
21293           now.
21295 2008-08-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21297         * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
21298           control.h, deployment.h, text.h, thickness.h, trigger.cpp,
21299           canvas.cpp, transform.h, color.h, downloader.cpp, eventargs.cpp,
21300           transform.cpp, animation.h, grid.cpp, downloader.h, eventargs.h,
21301           shape.h, animation.cpp, size.h, deployment.cpp, control.cpp,
21302           text.cpp, clock.h, contentcontrol.h, clock.cpp, uielement.h,
21303           point.h, collection.h, geometry.h, contentcontrol.cpp,
21304           frameworkelement.h, uielement.cpp, grid.h, collection.cpp,
21305           geometry.cpp, shape.cpp, frameworkelement.cpp, media.h, brush.h,
21306           rect.h, panel.h, stylus.h, media.cpp, brush.cpp, usercontrol.h: Add
21307           instructions to generate c constructors in headers and remove *_new
21308           implementations from cpp files.
21309         * dependencyobject.h: Typedef function pointer to avoid making the
21310           generator understand function pointer syntax. Update comments to
21311           new syntax.
21312         * cbinding.h, value.h, src.mdp, cbinding.cpp: Updated.
21313         * type.h, type.h.in: Updated comments to new syntax.
21314         * mms-downloader.h: Use C++ syntax.
21315         * dependencyproperty.h, dependencyproperty.cpp: Make
21316           dependency_property_register_managed_property a method on the type
21317           and update comments to new syntax.
21318         * type-generated.cpp: Updated by new generator, which did actually
21319           catch a few errors.
21321 2008-08-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21323         * dependencyproperty.cpp: DP: Comment out the duplicate DP warning
21324           until it's fixed.
21326 2008-08-06  Geoff Norton  <gnorton@novell.com>
21328         * dependencyproperty.cpp: When registering a clashing DP
21329         return the original so that the code can act on it as it
21330         expects.  Fixes about 18 DRT regressions.
21332 2008-08-06  Chris Toshok  <toshok@ximian.com>
21334         * uielement.h, uielement.cpp: add GetTransformToUIElement, the
21335         unmanaged equivalent to the managed UIElement.TransformToVisual.
21337         Also change the signature of HitTest to take a Point, not two
21338         doubles.  Add a HitTest overload that takes a Rect in
21339         preparation for 2.0.
21341         * panel.h, panel.cpp: track HitTest signature change.
21343         * control.h, control.cpp: track HitTest signature change.
21345 2008-08-06  Chris Toshok  <toshok@ximian.com>
21347         * transform.h, transform.cpp: add a convenience ctor for Matrix
21348         that takes a cairo_matrix_t*.
21350 2008-08-06  Chris Toshok  <toshok@ximian.com>
21352         * type-generated.cpp (type_infos): fix ctors for UIElement and
21353         UIElementCollection.
21355 2008-08-06  Chris Toshok  <toshok@ximian.com>
21357         * frameworkelement.h, frameworkelement.cpp: add
21358         DataContextProperty.
21360 2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21362         * type.cpp: Fix for old glib in sled.
21364 2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21366         * dependencyproperty.cpp, type.cpp, type.h, type.h.in,
21367           type-generated.cpp: Add custom properties to a GSList instead of
21368           the hash table given that several custom properties can be
21369           registered on the same type with the same name.
21371 2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21373         * src.mdp: Make src and plugin projects build.
21375 2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21377         * src.mdp: Updated.
21379 2008-08-05  Chris Toshok  <toshok@ximian.com>
21381         * transform.h, transform.cpp, brush.cpp: Add GeneralTransform as a
21382         superclass of Transform, and move all the current Transform stuff
21383         there.
21385         * type.h, type-generated.cpp, value.h: resync
21387 2008-08-05  Chris Toshok  <toshok@ximian.com>
21389         * uielement.h, uielement.cpp, frameworkelement.h,
21390         frameworkelement.cpp: move the UIElement DPs back - the move to
21391         FrameworkElement breaks tests.
21393         * collection.cpp (TriggerCollection::AddedToCollection): quiet
21394         this down.
21395         (TriggerCollection::RemovedFromCollection): same.
21397 2008-08-05  Chris Toshok  <toshok@ximian.com>
21399         * frameworkelement.h, frameworkelement.cpp: add in the 2.0-only
21400         DependencyProperties.  we need a way to limit access to these to
21401         only the 2.0 case.
21403         * uielement.h, uielement.cpp: CursorProperty, ResourcesProperty,
21404         TagProperty, TriggersProperty are moved to
21405         frameworkelement.h/.cpp.
21406         
21407         * runtime.cpp (Surface::UpdateCursorFromInputList): CursorProperty
21408         moved from UIElement to FrameworkElement.
21410         * size.h, size.cpp: add SizeChangedEventArgs.
21412         * thickness.h: move this type here
21414         * control.h: #include thickness.h
21416         * type.h, value.h, type-generated.cpp: regenerate for
21417         SIZECHANGEDEVENTARGS.
21418         
21419 2008-08-05  Chris Toshok  <toshok@ximian.com>
21421         * Makefile.am (libmoon_la_SOURCES): enums.c => enums.cpp
21423         * enums.h: add comment about keeping MouseCursors enum in sync
21424         with Cursor.cs.
21426         * enums.cpp: make all the mappings use symbols instead of integer
21427         constants.  Also, rename enums.c to enums.cpp so it can include
21428         the .h files for enums not in enums.h.
21430 2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21432         * src.mdp: Remove visual.cpp|h from here too.
21434 2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21436         * brush.cpp, brush.h, dirty.cpp, panel.cpp, panel.h, type.h,
21437           type-generated.cpp, uielement.cpp, uielement.h, value.h,
21438           visual.cpp, visual.h, collection.h, collection.cpp, Makefile.am,
21439           libmoon.h: Deleted Visual (moved content into UIElement), and
21440           renamed VisualCollection to UIElementCollection.
21442 2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21444         * cbinding.cpp, cbinding.h, dependencyobject.cpp, dependencyobject.h:
21445           GetValueWithError: Add a parameter to specify the exact type
21446           (including managed subclassing) of the object. HasProperty: use
21447           that parameter to determine if the type has the specified property
21448           or not.
21449         * dependencyproperty.cpp, dependencyproperty.h: DependencyProperty: Add
21450           a is_custom field to determine if the property is our own or not.
21452 2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21454         * cbinding.cpp, cbinding.h: Updated.
21455         * dependencyobject.h, dependencyobject.cpp, dependencyproperty.cpp,
21456           dependencyproperty.h, runtime.cpp, runtime.h, type.cpp, type.h,
21457           type.h.in, type-generated.cpp: Create a Types class which may
21458           contain additional types. Change the DP/DO/Type overloads
21459           containing a Surface to take a Types argument instead.
21461 2008-08-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21463         * dependencyobject.cpp: Implement Get[No[Default]]ValueWithError.
21465 2008-08-04  Michael Dominic K.  <mdk@mdk.am>
21467         * animation.cpp:
21468         * clock.cpp:
21469         * clock.h: Adding method to store a manual target (instead of a named target)
21470         for a timeline. This will be used to bind a Storyboard.SetTarget 2.0 method.
21472 2008-08-04  Michael Dominic K.  <mdk@mdk.am>
21474         * animation.cpp:
21475         * animation.h: A little bit of C API for KeySpline.
21477 2008-08-04  Michael Dominic K.  <mdk@mdk.am>
21479         * runtime.cpp: _get_surface can only be called from the main thread.
21481 2008-08-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21483         * src.mdp, cbinding.h, cbinding.cpp: Updated.
21484         * Makefile.am: Include error.cpp.
21485         * error.h, error.cpp: Added MoonError.
21486         * dependencyproperty.h: Make RegisterFull 2.0 only.
21487         * dependencyobject.h, dependencyobject.cpp: Added and implemented
21488           Get[[No]Default]ValueWithError and a HasProperty method which takes
21489           into account properties registered on a surface.
21491 2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21493         * canvas.cpp, grid.cpp: Use C++ binding instead of C binding.
21494         * media.cpp: Use property accessors instead of GetValue.
21496 2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21498         * cbinding.cpp, cbinding.h: Update.
21499         * dependencyproperty.cpp: RegisterFull: Only wrap method code in
21500           SL_2_0, fixed 1.0 build.
21502 2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21504         * dependencyproperty.h: Make GetName return a const char*, and rename
21505           parameters from readonly to read_only (to not conflict with C#
21506           keywords).
21508 2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21510         * src.mdp: Updated.
21511         * dependencyproperty.cpp, dependencyproperty.h, Makefile.am: Generate
21512           DependencyProperty's C methods.
21513         * cbinding.cpp, cbinding.h: Added.
21514         * typegen, typegen/typegen.cs, typegen/typegen.sh: Moved typegen to
21515           moon/generators, and add methodgen to generate pinvokes, and cgen
21516           to generate c bindings.
21518 2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21520         * dependencyobject.cpp, dependencyproperty.cpp, dependencyproperty.h:
21521           Implement property changed callbacks.
21523 2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21525         * contentcontrol.h, control.h: Fix includes.
21527 2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21529         * pipeline-ffmpeg.cpp: Fix warning.
21531 2008-08-01  Jeffrey Stedfast  <fejj@novell.com>
21533         * dependencyobject.cpp (EventObject::Dispose): Call
21534         SetSurface (NULL)
21535         (EventObject::unref): Don't call SetSurface() here anymore.
21537 2008-08-01  Michael Dominic K.  <mdk@mdk.am>
21539         * runtime.cpp|h: Adding few utility functions to modify the flags
21540         at runtime -- provided that there are no surfaces currently
21541         present. Would be nice to be able to somehow do it before calling
21542         runtime_init ().
21544 2008-08-01  Michael Dominic K.  <mdk@mdk.am>
21546         * runtime.cpp|h: Adding an expose handoff custom
21547         function that can be set on surface.  It's called just after
21548         render_cb when something has been updated on the screen.
21550 2008-08-01  Michael Dominic K.  <mdk@mdk.am>
21552         * runtime.cpp|h: Adding a global surface list and an
21553         ability to access it.  I have a bad feeling we need some locking
21554         in the _get_surface_list function.
21556 2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21557         
21558         * src.mdp: Updated.
21560 2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
21562         This is the proper fix for bug #412443
21564         * visual.cpp (VisualCollection::Dispose): Implement Dispose()
21565         method.
21566         (VisualCollection::RemovedFromCollection): Now that we know we are
21567         disposing, we can unset VisualParent here instead of in our
21568         dtor/Dispose() method, saving us from having to interate over our
21569         children twice.
21571         * collection.cpp (Collection::Dispose): Implement a Dispose()
21572         method which does what the dtor used to do.
21574         * dependencyobject.cpp (EventObject::unref): Call Dispose() just
21575         before deleting the object.
21577 2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
21579         * dependencyobject.cpp (struct Listener): Comment out the listener
21580         reffing from previous commit. I don't think this is correct.
21582         * visual.cpp (VisualCollection): Set z_sorted to NULL after
21583         freeing it so that parent class dtor calling
21584         RemovedFromCollection() will not poke at free'd memory.
21586 2008-07-31  Geoff Norton  <gnorton@novell.com>
21588         * Makefile.am: Undo part of the recent Makefile changes as they broke 
21589         the 1.0 build.
21591 2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
21593         Fixes bug #412443
21595         * dependencyobject.cpp (DependencyObject::AddPropertyChangeListener):
21596         Ref the listener.
21597         (DependencyObject::RemovePropertyChangeListener): Unref the listener.
21599 2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
21601         * animation.cpp (KeyFrameCollection::RemovedFromCollection): Oops,
21602         this needs to chain up to
21603         DependencyObjectCollection::RemovedFromCollection() rather than
21604         AddedToCollection(). Duh.
21606 2008-07-30  Jeffrey Stedfast  <fejj@novell.com>
21608         * contentcontrol.cpp|h: Added.
21610         * enums.h: Moved some font/text enums here from font.h
21612 2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21614         * dependencyproperty.cpp: Fix build.
21616 2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21618         * runtime.cpp: Fix 1.0 build.
21620 2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21622         * dependencyproperty.cpp, dependencyproperty.h, runtime.cpp, runtime.h,
21623           type.cpp, type.h, type.h.in, typegen/typegen.cs,
21624           type-generated.cpp: Store DependencyProperties in the Type* instead
21625           of a hashtable keyed on the kind.
21627 2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21629         * dependencyobject.cpp: IsValueValid: treat all MANAGED types as valid,
21630           given that since we might not have access to the surface where the
21631           type was registered, it's not possible to do any type checking 
21632         * dependencyproperty.cpp, dependencyproperty.h, runtime.cpp, runtime.h:
21633           Implement registration of managed properties on a surface.
21634         * type.cpp, type.h, type.h.in: Implement a Type::Find which can look in
21635           types registered on a surface, added a Type::MANAGED enum value.
21636         * typegen/typegen.cs, type-generated.cpp, value.h, value.h.in: Add a
21637           MANAGED type.
21639 2008-07-29  Jeffrey Stedfast  <fejj@novell.com>
21641         * text.cpp (inline_new): Added.
21643 2008-07-29  Jackson Harper  <jackson@ximian.com>
21645         * xaml.cpp: Add a set_parent call, I need to do some fanagling
21646         there so collection items don't have their parents set.
21647         - Managed items that are being hydrated or created using x:Class
21648         need to get content properties from the managed world.
21649         
21650 2008-07-28  Chris Toshok  <toshok@ximian.com>
21652         * value.cpp, value.h.in, value.h, type.h, typegen/typegen.cs,
21653         type-generated.cpp: Add Size foo.
21655 2008-07-28  Jeffrey Stedfast  <fejj@novell.com>
21657         * value.cpp (Value::FreeValue): Oops, free Thickness.
21659 2008-07-28  Chris Toshok  <toshok@ximian.com>
21661         * control.h (struct Thickness): reorder fields to match managed
21662         struct.
21664 2008-07-28  Jeffrey Stedfast  <fejj@novell.com>
21666         * typegen/typegen.cs: Added Thickness.
21668         * value.h.in, type.h.in: Added Thickness.
21670         * value.cpp: Implemented Thickness value ctor/etc.
21672         * enums.h: Added more 2.0-specific enums.
21674         * control.cpp|h: Implemented property accessors/bindings and
21675         Thickness struct.
21677 2008-07-28  Michael Dominic K.  <mdk@mdk.am>
21679         * animation.cpp: When starting an SB that has been started already make sure to
21680         remove the Completed handler before the teardown. Fixes #405518.
21682 2008-07-28  Chris Toshok  <toshok@ximian.com>
21683         
21684         * collection.cpp (collection_iterator_next): move the check for
21685         index-in-range to after the increment of it.  that way managed
21686         code doesn't step off the end of the list.
21688 2008-07-26  Chris Toshok  <toshok@ximian.com>
21690         * eventargs.h, eventargs.cpp: some 2.0 event stuff.  Make the
21691         MouseEventArgs and KeyboardEventArgs classes subclasses of a new
21692         class - RoutedEventArgs.  Also, add a "Handled" field to both
21693         MouseEventArgs and KeyboardEventArgs.  Lastly add a "Keyboard"
21694         class to map to the 2.0 static Keyboard class.  it exposes nothing
21695         but a Modifiers property, which isn't updated at present, but will
21696         be by the Surface code (in the key event handler).
21698         * type.h, value.h, type-generated.cpp: sync - new ROUTEDEVENTARGS
21699         type/value.
21701 2008-07-26  Chris Toshok  <toshok@ximian.com>
21703         * enums.h (enum ModifierKey): 2.0 specific enum for use by the
21704         Keyboard class.
21706 2008-07-26  Jackson Harper  <jackson@ximian.com>
21708         * xaml.cpp: If there isn't a managed content property, try looking
21709         for an unmanaged one.
21711 2008-07-26  Jackson Harper  <jackson@ximian.com>
21713         * xaml.h|cpp: Create elements for imported managed namespaces.
21714         
21715 2008-07-25  Chris Toshok  <toshok@ximian.com>
21717         * runtime.h, runtime.cpp: reformat the class decl to put public:
21718         stuff first.  add "bool silverlight2" to the surface ctor so we
21719         can start to use it for behavioral differences (routed event
21720         handlers, key events, focus, etc).
21722 2008-07-25  Jeffrey Stedfast  <fejj@novell.com>
21724         * stylus.h (StrokeCollection::CanAdd): Strokes can exist in
21725         multiple StrokeCollections at a time but they cannot be added to
21726         the same collection multiple times. Do not default to
21727         DependencyObjectCollection::CanAdd()'s behavior because it checks
21728         that the logical parent is unset (which will not be accurate for
21729         strokes).
21730         (StylusPointCollection): Same as StrokeCollection.
21732         * xaml.cpp (dependency_object_add_child): Set the logical parent
21733         of items to NULL before adding them to a collection.
21735         * collection.h (class Collection): Removed 'unique' field, it's
21736         not necessary afterall.
21737         (Collection::CanAdd): New virtual method to check if the value can
21738         be added to the collection (by default always returns true).
21739         (DependencyObjectCollection::CanAdd): Override CanAdd() by
21740         checking if the object being added has a logical parent. If it
21741         already has a parent, it cannot be added (this is how Silverlight
21742         behaves).
21744         * collection.cpp (Collection::Add): There's no such thing as
21745         'unique' anymore. Don't check if the value is already contained
21746         within our collection like the old code used to do, instead call
21747         our new virtual method CanAdd() to see if we can add it.
21748         (Collection::Insert): Check CanAdd().
21749         (Collection::SetValueAt): Check CanAdd().
21751 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
21753         * collection.cpp (collection_add): Fixed.
21755         * collection.h: Get rid of convenience wrappers that aren't even
21756         used. Also removes the need for previous commit.
21758 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
21760         * collection.h (class DependencyObjectCollection): Add virtual
21761         Add(), Clear() and Insert(). This makes it possible for subclasses
21762         to chain up if they need to override any of these.
21763         (class DoubleCollection): Same.
21764         (class PointCollection): Here too.
21766         * visual.cpp (VisualCollection::Clear): Chain up to
21767         DependencyObjectCollection::Clear() rather than
21768         Collection::Clear().
21769         (VisualCollection::Insert): Don't bother resizing the z_sorted
21770         array here, it will be done inside ResortByZIndex() anyway.
21771         (VisualCollection::Insert): Chain up to
21772         DependencyObjectCollection::Insert() rather than
21773         Collection::Insert()
21775 2008-07-24  Geoff Norton  <gnorton@novell.com>
21777         * downloader.cpp: When a downloader is reused reset the completed
21778         state when we get the new Open call.
21780 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
21782         * text.cpp (inlines_simple_text_equal): Fixed a stupid typo.
21784         * collection.cpp (DependencyObjectCollection::RemovedFromCollection):
21785         Unregister the NameScope the same way the old Collection::Remove()
21786         way did it. This way seems the most correct (RemoveAt() was
21787         totally broken and SetVal() doesn't seem right afterall).
21789 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
21791         * collection.cpp: Added c-wrappers for creating new
21792         collections. Also changed the c-bindings for
21793         setting/adding/inserting/etc items to the collection to take
21794         Value* instead of Value. Should make it simpler for the managed
21795         code to pass that.
21797 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
21799         * collection.cpp (DependencyObjectCollection::RemovedFromCollection):
21800         Unregister the NameScope the same way it was done in the more
21801         common case in the old code (why were there different ways?).
21803         * text.cpp (TextBlock::OnCollectionChanged): Chain up.
21804         (TextBlock::OnCollectionItemChanged): Same.
21806         * brush.cpp (GradientBrush::OnCollectionChanged): Chain up.
21807         (GradientBrush::OnCollectionItemChanged): Chain up and notify
21808         listeners.
21810         * geometry.cpp (GeometryGroup::OnCollectionChanged): Chain up.
21811         (GeometryGroup::OnCollectionItemChanged): Chain up and notify
21812         listeners.
21813         (PathGeometry::OnCollectionChanged): Chain up.
21814         (PathGeometry::OnCollectionItemChanged): Chain up and notify
21815         listeners.
21816         (PathFigure::OnCollectionChanged): Chain up.
21817         (PathFigure::OnCollectionItemChanged): Chain up and notify
21818         listeners.
21820         * shape.cpp (Polygon::OnCollectionChanged): Chain up.
21821         (Polygon::OnCollectionItemChanged): Same.
21822         (Polyline::OnCollectionChanged): Same.
21823         (Polyline::OnCollectionItemChanged): Same.
21825         * stylus.cpp (Stroke::OnCollectionItemChanged): Need to
21826         call NotifyListersOfPropertyChange().
21828         * transform.cpp (TransformGroup::OnCollectionItemChanged): Need to
21829         call NotifyListersOfPropertyChange().
21831 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
21833         * collection.cp|h: Reworked Collections a lot. Collection is now a
21834         generic collection of Values. Added 3 new collections:
21835         DependencyObjectCollection (which holds DO's like the old
21836         Collection class did), DoubleCollection and PointCollection.
21838         * dependencyobject.h (DependencyObject::OnCollectionChanged):
21839         Changed the way this works to reflect the managed API.
21841         *.cpp|h: Updated to reflect above changes.
21843 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
21845         * utils.cpp (g_ptr_array_insert): New utility function.
21846         (g_ptr_array_insert_sorted): Call g_ptr_array_insert() once we
21847         find the index where we want to add the item.
21849 2008-07-23  Chris Toshok  <toshok@ximian.com>
21851         * panel.cpp, xaml.cpp, stylus.cpp, usercontrol.cpp, canvas.cpp,
21852         transform.cpp, grid.cpp, animation.cpp, text.cpp,
21853         dependencyproperty.h, dependencyproperty.cpp, uielement.cpp,
21854         geometry.cpp, shape.cpp, dependencyobject.cpp,
21855         frameworkelement.cpp, media.cpp, brush.cpp: a couple of
21856         DependencyPropertyChanges:
21858         1. switch to the Silverlight/WPF naming of the two Types.
21859         type/value_type change to owner_type/property_type.
21861         2. go all gtk-3.0, and make things private with accessors.
21863 2008-07-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21865         * animation.cpp, brush.cpp, canvas.cpp, clock.cpp, collection.cpp,
21866           dependencyobject.cpp, dependencyobject.h, dependencyproperty.cpp,
21867           dependencyproperty.h, deployment.cpp, downloader.cpp,
21868           frameworkelement.cpp, geometry.cpp, grid.cpp, media.cpp,
21869           namescope.cpp, panel.cpp, runtime.cpp, shape.cpp, stylus.cpp,
21870           text.cpp, transform.cpp, trigger.cpp, uielement.cpp,
21871           usercontrol.cpp, xaml.cpp: Move Register(Full|Nullable) and
21872           GetDependencyObject from DependencyObject to DependencyProperty.
21874 2008-07-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21876         * dependencyobject.h, dependencyproperty.h, Makefile.am,
21877           dependencyproperty.cpp, src.mdp, dependencyobject.cpp: Move
21878           DependencyProperty to its own file before it grows bigger.
21880 2008-07-21  Jackson Harper  <jackson@ximian.com>
21882         * xaml.cpp: Add back in the ability to create elements from
21883         managed elements using the x:Class syntax.
21885 2008-07-21  Jackson Harper  <jackson@ximian.com>
21887         * user-control.h:
21888         * type-generated.cpp: The UserControl's Content Property name is
21889         Content not ContentProperty.
21891 2008-07-21  Jeffrey Stedfast  <fejj@novell.com>
21893         * collection.cpp (collection_add): Fixed to return int.
21895 2008-07-21  Jackson Harper  <jackson@ximian.com>
21897         * xaml.cpp: Add support for parsing GridLength attribute values.
21899 2008-07-19  Geoff Norton  <gnorton@novell.com>
21901         * mms-downloader.(cpp|h):  Ensure that we always stream-select a marker
21902         stream when there is one available.  Fixes drt #2.
21903         Refactor some code duplication into a utility method.
21905 2008-07-19  Jackson Harper  <jackson@ximian.com>
21907         * xaml.cpp: We can't blindly assume an object has a content
21908         property.
21910 2008-07-19  Jackson Harper  <jackson@ximian.com>
21912         * type-generated.cpp: UserControl has a content property.
21913         * value.h|.h.in|.cpp: Add GridLength to Value.
21915 2008-07-18  Geoff Norton  <gnorton@novell.com>
21917         * media.cpp: Revert InitialBuffer work around as it has some unexpected
21918         consequences. :(
21920 2008-07-18  Geoff Norton  <gnorton@novell.com>
21922         * media.cpp: Clear the InitialBuffer state when we seek as well, as that will
21923         get a new burst from the mms server with AccelBW.
21925 2008-07-18  Geoff Norton  <gnorton@novell.com>
21927         * media.cpp: If we're using a mms source we can attempt to start playing the 
21928         first time before the entire 5s buffer is full due to AccelBW/AccelDuration.
21929         Fixes c9 stream start lag.
21931 2008-07-18  Geoff Norton  <gnorton@novell.com>
21932         
21933         * mms-downloader.cpp: Set LinkBW, AccelBW and AccelDuration so we can fill
21934         our initial buffer quickly.
21936 2008-07-18  Geoff Norton  <gnorton@novell.com>
21938         * pipeline.(cpp|h), mp3.(cpp|h): Break mp3 out into its own files.
21939         * Makefile.am: Add mp3.(cpp|h) to the build.
21940         * pipeline-ffmpeg.cpp: MP3 streamed over asf will bunch multiple frames
21941         together, so we need to split them up and pass them to avcodec_decode_audio2
21942         one at a time.  Its also possible that we could get a partial frame, so we need
21943         to buffer that data. Fixes mms+mp3.
21945 2008-07-18  Jeffrey Stedfast  <fejj@novell.com>
21947         Fix for bug #410206
21949         * text.h (TextBlock::GetBoundingHeight): Return the larger of the
21950         2 values.
21951         (TextBlock::GetBoundingWidth): Same.
21953 2008-07-18  Chris Toshok  <toshok@ximian.com>
21955         * Makefile.am (libmoon_include_HEADERS): add window.h and
21956         window-gtk.h
21957         (libmoon_la_SOURCES): add window-gtk.cpp
21959         * window.h: abstract class for windows, that surface will use to
21960         deal with window/widget level operations.
21962         * window-gtk.h, window-gtk.cpp: MoonWindow implementation using
21963         gtk widgets.
21965         * runtime.h, runtime.cpp: factor out all the widget stuff from
21966         this file, along with all "width" and "height" fields.  now
21967         Surface knows nothing about widgets or windowless.  It speaks to
21968         MoonWindow implementations instead.  Add several public methods
21969         that the window implementations can call (anything HandleUI*) to
21970         communicate events back to the surface.
21972         * canvas.cpp: surface->Get{Width,Height} ==>
21973         surface->GetWindow()->Get{Width,Height}.
21974         
21975 2008-07-18  Michael Dominic K.  <mdk@mdk.am>
21977         * clock.cpp:
21978         * media.cpp: Reverting prev change, different solution: process the tick calls
21979         before processing the render.
21981 2008-07-18  Michael Dominic K.  <mdk@mdk.am>
21983         * media.cpp: If the downloader is already completed, don't do an extra async 
21984         call when setting source. Fixes the downloader-set-source... testcase.
21986 2008-07-18  Michael Dominic K.  <mdk@mdk.am>
21988         * media.cpp: Fixing a crasher in case bad parameters passed from js.
21990 2008-07-18  Jackson Harper  <jackson@ximian.com>
21992         * xaml.h: New delegates and functions for the loader.  We need to
21993         call back into managed code when we import a xaml namespace so
21994         that it knows which objects are available and we need a new
21995         function for creating those objects.
21997 2008-07-18  Jackson Harper  <jackson@ximian.com>
21999         * usercontrol.cpp|h: Add C functions for accessing the Content
22000         element.
22002 2008-07-17  Jackson Harper  <jackson@ximian.com>
22004         * type.h:
22005         * value.h:
22006         * type-generated.cpp:
22007         * deployment.cpp|h: Add an Application type.  This doesnt directly
22008         map to the managed Application because it inherits from
22009         DependencyObject, but it allows us to parse Application XAML files
22010         and then we can pull the values we need.
22012 2008-07-17  Jackson Harper  <jackson@ximian.com>
22014         * libmoon.h: Add usercontrol.h, I want access to this in the
22015         plugin debug code.
22017 2008-07-17  Jackson Harper  <jackson@ximian.com>
22019         * xaml.cpp: Had a backwards IsSubclassOf here causing
22020         UserControl's content property to not get set (and I imagine many
22021         other content properties).
22022         * usercontrol.h: Add the ContentProperty metadata.
22024 2008-07-17  Stephane Delcroix  <sdelcroix@novell.com>
22026         * downloader.h|cpp: provide hooks for DownloadeRequest
22028 2008-07-17  Jeffrey Stedfast  <fejj@novell.com>
22030         * pipeline.cpp (FileSource::ReadInternal): EOF isn't an error.
22032         * runtime.cpp (surface_create_downloader): We need to actually
22033         return the downloader here or our caller will just get garbage ;-)
22035 2008-07-17  Michael Dominic K.  <mdk@mdk.am>
22037         * clock.cpp: When _USE_IDLE_HINT is not sent, don't do idle hinting.
22039         * runtime.h: On desktop and browser by default use idle hinting.
22041 2008-07-17  Michael Dominic K.  <mdk@mdk.am>
22043         * runtime.cpp: Adding "idlehint" to moonlight overrides that will 
22044         control the use of idle hint in the clocks.
22046 2008-07-17  Stephane Delcroix  <sdelcroix@novell.com>
22047         
22048         * runtime.h|cpp: add surface_get_downloader
22050 2008-07-16  Larry Ewing  <lewing@novell.com>
22052         * runtime.cpp: try to get the resize logic correct for all cases,
22053         including popfly, ControlState.htm and fullscreen tests.
22055         Fixes the (non)rendering issues in the popfly game creator.
22057 2008-07-16  Geoff Norton  <gnorton@novell.com>
22059         * mplayer.cpp: Its possible that extremely small audio files will
22060         never fill the sound buffer enough causing us to never call snd_pcm_open.
22061         Ensure that we open the buffer to play the sound before shutting down
22062         the player.
22064 2008-07-16  Geoff Norton  <gnorton@novell.com>
22066         * pipeline.cpp: Update to be able to build with LOG_PIPELINE still
22068 2008-07-16  Sebastien Pouliot  <sebastien@ximian.com>
22070         * layout.cpp: (TextLayout::LayoutWrap) Don't let actualWidth be 
22071         greater than Width. Fix MS DRT#184 and #208. ALso makes #206 
22072         looks better (but it already passed)
22074 2008-07-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22076         * pipeline.cpp, pipeline.h: ProgressiveSource: clean up a bit, this
22077           class doesn't do anything live/mms anymore. LiveSource: removed
22078           completely, never used. Added MemoryNestedSource to wrap another
22079           MemorySource without messing with its current position pointer.
22080           MemoryQueueSource: store already parsed packets instead of
22081           MemorySources in the queue, saves a memory allocation and prevents
22082           parsing each packet twice when buffering (once for the code which
22083           determines the last available pts, and again for the normal
22084           demuxing code path).
22085         * mms-downloader.cpp: Updated to not delete asf parser, unref it
22086           instead.
22087         * mplayer.cpp: Enqueue 3 audio frames instead of 10, makes the pipeline
22088           wait a bit longer before ending up waiting for more data (which
22089           causes the MediaElement to go into buffering mode).
22090         * media.cpp: ProgressiveSource ctor doesn't take any bool arguments
22091           anymore.
22093 2008-07-15  Larry Ewing  <lewing@novell.com>
22095         * dirty.cpp (Surface::AddDirtyElement): quick patch from toshok to
22096         fix a regression in the fullscreen message code.
22098 2008-07-15  Jb Evain  <jbevain@novell.com>
22100         * deployment.cpp|h: start updating Deployment to sl2b2.
22102 2008-07-15  Jb Evain  <jbevain@novell.com>
22104         * deployment.h: remove SupportedCulture and SupportedCultureCollection
22105         as they no longer exist.
22106         * value.h, type.h, type-generated.cpp: regenerate.
22108 2008-07-15  Jb Evain  <jbevain@novell.com>
22110         * deployment.cpp|h: rename RuntimeVersion DP to RuntimeVersionProperty.
22112 2008-07-15  Jb Evain  <jbevain@novell.com>
22114         * list.cpp: set pointers to NULL instead of 0.
22116 2008-07-14  Geoff Norton  <gnorton@novell.com>
22118         * mplayer.cpp: If we've already reached the EOF in the audio stream
22119         don't keep processing GetNextBuffer.  This was causing us to emit
22120         MediaEnded more than once, causing failures in the test suite.
22122 2008-07-14  Geoff Norton  <gnorton@novell.com>
22124         * downloader.cpp:  Change completed to check a bool instead of 
22125         filename, as filename can now be set before the downloader is in fact
22126         completed.
22128 2008-07-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22130         * media.cpp: Initialize Media with our downloader.
22131         * pipeline.cpp: Media::Open: Check if the source has ended while
22132           waiting for an asfparser. Remove print_stack_traces.
22134 2008-07-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22136         * internal-downloader.h: Add InternalDownloader::GetType to allow the
22137           derived internal downloader to tell what kind of internal
22138           downloader it is.
22139         * file-downloader.h: Implement InternalDownloader::GetType.
22140         * downloader.h: Make the internal downloader publicly accessible. Add a
22141           Downloader::IsAborted method.
22142         * mms-downloader.h, mms-downloader.cpp: Implement
22143           InternalDownloader::GetType. Store the ASFParser we create in the
22144           class instance, so that the pipeline can get it. No need to write
22145           the header packet to the stream anymore.
22146         * media.cpp: Don't unref in AddTickCall callbacks anymore. Fix
22147           calculation of buffering progress to take into account that the
22148           currently available pts might be before the last played pts.
22149         * mplayer.cpp, mplayer.h, downloader.cpp: Don't unref in AddTickCall
22150           callbacks anymore.
22151         * pipeline.cpp, pipeline.h: Make the Media ctor take a Downloader
22152           argument and access the internal mms downloader on that Downloader
22153           to get the asf parser. Remove Read/Seek support from
22154           MemoryQueueSource, and just add a Pop method which returns a
22155           MemorySource for the next packet in the queue. Also add support to
22156           return all the packets in the queue as an array so that the
22157           ASFParser can easily determine the last pts available.
22158         * clock.cpp, clock.h: Use our own thread-safe Queue instead of GList +
22159           g_mutex. Also make TickCall take a ref to the data parameter until
22160           the tick call has been made. This also ensures that the data
22161           parameter gets unreffed correctly when the tick call is never made
22162           (such as when we skip calls due to the TimeManager getting shut
22163           down).
22164         * dependencyobject.cpp: Don't ref in AddTickCall anymore.
22166 2008-07-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22168         * playlist.cpp: Fix warning.
22170 2008-07-11  Sebastien Pouliot  <sebastien@ximian.com>
22172         * font.cpp: (FontFace::LoadGlyph) Use linearHoriAdvance instead 
22173         of horiAdvance since the later is rounded to an integer. FixMS
22174         DRT#45 and get better results (less differences) on many font
22175         related tests.
22177 2008-07-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22179         * http-streaming.cpp, playlist.cpp: Add missing #include <config.h>
22181 2008-07-11  Sebastien Pouliot  <sebastien@ximian.com>
22183         * font.cpp: (font_conic_to) Directly use moon_quad_curve_to 
22184         instead of doing it's own second to third order calculation.
22186 2008-07-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22188         * mplayer.cpp: Don't store target pts from audio thread if we're paused
22189           (audio thread might not have gotten the pause request yet).
22191 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22193         * pipeline.cpp: Don't Signal more than once. I have no idea why the
22194           waiting thread doesn't wake up though.
22195         * mplayer.cpp: Comment out a printf, and always break the play loop
22196           when we're doing rw access.
22198 2008-07-10  Sebastien Pouliot  <sebastien@ximian.com>
22200         * geometry.cpp|h: Remove useless code for computing bounds on
22201         PathFigure (now all handled at PathGeometry level).
22203 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22205         * mplayer.cpp: Fix a couple of leaks.
22207 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22209         * pipeline.cpp: There's no need to call AudioPlayer::Initialize
22210           anymore.
22211         * runtime.cpp, runtime.h: Added
22212           RUNTIME_INIT_AUDIO_NO_MMAP/audio=mmap|rw to runtime flags.
22213         * mplayer.cpp, mplayer.h: Implement support for using RW access mode in
22214           addition to the already supported MMAP access mode for alsa. This
22215           also required a major refactoring to only call alsa on the audio
22216           thread due to buggy pulseaudio hanging us (and the rest of the
22217           machine) otherwise.
22219 2008-07-10  Sebastien Pouliot  <sebastien@ximian.com>
22221         * shape.cpp|h: (ComputeStretchBounds) Move shape-specific code
22222         inside each type (and out of the general case).
22224 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22226         * dependencyobject.cpp: Fix leak.
22228 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22230         * debug.cpp: Make valgrind happy.
22232 2008-07-09  Geoff Norton  <gnorton@novell.com>
22234         * media.cpp: Ensure that we clear our old loader when we set
22235         a new source.
22237 2008-07-09  Fernando Herrera  <fherrera@novell.com>
22239         * pipeline.cpp: Always set MemoryQueueSource element's size
22240         based to offset+n even for live sources.
22242 2008-07-09  Jeffrey Stedfast  <fejj@novell.com>
22244         Fixes for bug #406934
22246         * text.cpp (Glyphs::SetSurface): Override so that we can start
22247         downloading the font as soon as the element gets (re)attached.
22248         (Glyphs::OnPropertyChanged): If we aren't attached, set
22249         uri_changed to true so that when we are (re)attached, we can start
22250         the download.
22252         * media.cpp (MediaBase::MediaBase): Init new state variable
22253         'source_changed' to false.
22254         (MediaBase::SetSurface): If source_changed and we are being
22255         attached to a surface, initiate a download.
22256         (MediaBase::SetSource): Set source_changed to false.
22257         (MediaBase::OnPropertyChanged): Handle SourceProperty changes for
22258         our subclasses.
22259         (MediaElement::OnPropertyChanged): Don't handle SourceProperty
22260         changes anymore, let MediaBase do that for us.
22261         (Image::OnPropertyChanged): Same.
22263 2008-07-09  Geoff Norton  <gnorton@novell.com>
22265         * mms-downloader.cpp: Remove the guard we had against copying
22266         random memory and provide the correct amount of data to the 
22267         pipeline from each packet.
22269 2008-07-09  Geoff Norton  <gnorton@novell.com>
22270         
22271         * downloader.(cpp|h): NotifyFinished is now the finished
22272         event.  The filename will be set (if available) in SetFilename.
22273         * media.(cpp|h): Change to progressivly loading the image
22274         where available (fixes popfly).  We still fallback to file loading
22275         for the JS downloader case for now.
22277 2008-07-09  Larry Ewing  <lewing@novell.com>
22279         * runtime.cpp (Surface::motion_notify_callback): don't call
22280         get_pointer when in windowless mode, I don't think we can trust
22281         the results.
22283         * runtime.h (class Surface): make widget public so that we can
22284         peek at it in windowless mode.
22286 2008-07-08  Sebastien Pouliot  <sebastien@ximian.com>
22288         * xaml.cpp: Always do a move after closing a path. Fix DRT test
22289         #138 (even if it was passing too!) for a bad (extra) arc.
22291 2008-07-08  Larry Ewing  <lewing@novell.com>
22293         * runtime.cpp, runtime.h: remove a bunch of code rot relating to
22294         temporary cairo surfaces that is no longer used.
22296 2008-07-08  Sebastien Pouliot  <sebastien@ximian.com>
22298         * shape.cpp: Consider PenLineCap when computing bounds using
22299         cairo. Fix (even if it was passing) some corners in DRT test #7
22301 2008-07-08  Jeffrey Stedfast  <fejj@novell.com>
22303         * xaml.h: Reorganized a bit.
22305 2008-07-07  Chris Toshok  <toshok@ximian.com>
22307         * dirty.cpp (Surface::AddDirtyElement): don't add elements to the
22308         list if they lack a visual parent (and aren't the toplevel.)
22309         Fixes bug #406935.
22311 2008-07-07  Larry Ewing  <lewing@novell.com>
22313         * shape.cpp (Rectangle::BuildPath): handle some special case
22314         degenerates slightly differently.
22316         Fixes most of test-shape-rectangle-matrix.xaml.
22318 2008-07-07  Larry Ewing  <lewing@novell.com>
22320         * shape.cpp (Ellipse::BuildPath): a thickness equal to a width
22321         degenerates in drawing, use the workaround there too.
22323         Fixes shape #5 in test/xaml/assorted/stroke-thickness-test.html
22325 2008-07-03  Larry Ewing  <lewing@novell.com>
22327         * geometry.cpp (RectangleGeometry::ComputeBounds): simplify the
22328         rectangle geometry computation.  It matches in the sl
22329         implementation now.
22331         * shape.cpp: simplify rectangle and ellipse drawing and bounds so
22332         that they match the sl implementation and deal with degenerate
22333         cases better.  Try to avoid setting up a clip rectangle when it
22334         isn't needed.
22336 2008-07-07  Chris Toshok  <toshok@ximian.com>
22338         [ fixes the media element not showing up in flowers-for-you, bug
22339         #382490. ]
22340         * media.h, media.cpp: move Image::use_img_{width,height} and
22341         Image::updating into MediaBase and rename then
22342         use_media_{width,height} and updating_size_from_media.
22343         (MediaElement::OnPropertyChanged) duplicate the
22344         WidthProperty/HeightProperty stuff here (c&p from
22345         Image::OnPropertyChanged - this should probably just be refactored
22346         to MediaBase.  will do this later).
22347         (MediaBase::ComputeBounds): we don't need the subclass
22348         ComputeBounds methods.  Just put it here, as they share the same
22349         behavior.
22350         (MediaElement::SetMedia): remove the call to ComputeBounds here,
22351         since the new block of use_media_{width,height} checks will call
22352         UpdateBounds if they need to.
22353         
22354 2008-07-07  Fernando Herrera  <fherrera@novell.com>
22356         * media.cpp:
22357         * pipeline.cpp:
22358         * pipeline.h: Implement MemoryQueueSource::NotifyFinished so
22359         we don't wait for new packets when the downloader has finished.
22360         Also calculate size based on offset + n for mms streams, so the
22361         ASFReader can check Eof based on positions.
22363 2008-07-05  Chris Toshok  <toshok@ximian.com>
22365         * dirty.cpp: remove the down_dirty_node_succ and
22366         up_dirty_node_pred code from here.  it arguably helped speed up
22367         insertions into the dirty lists, but at the cost of lots of
22368         dangling pointers.  we always walk up the tree looking for a
22369         down/up node.  works, and is much simpler.  and fixes bug #362561.
22371         * uielement.h, uielement.cpp: remove the down_dirty_node_succ and
22372         up_dirty_node_pred code.
22373         
22374 2008-07-04  Sebastien Pouliot  <sebastien@ximian.com>
22376         * xaml.cpp: Avoid a SIGSEGV in dependency_object_set_attributes
22377         when the atchname is invalid.
22379 2008-07-04  Chris Toshok  <toshok@ximian.com>
22381         * runtime.cpp (Surface::EmitEventOnList): don't leak the event
22382         args here.
22384 2008-07-03  Chris Toshok  <toshok@ximian.com>
22386         * animation.h, animation.cpp: the *KeyFrame KeySplineProperty
22387         values need to be initialized in the ctors, not in animation_init.
22389 2008-07-03  Sebastien Pouliot  <sebastien@ximian.com>
22391         * shape.cpp: Add back the cairo_[save|restore] in ::Draw methods
22392         since they are needed for stretching.
22394 2008-07-03  Jeffrey Stedfast  <fejj@novell.com>
22396         * text.cpp (TextBlock::Render): Check to see if we need to
22397         calculate layout before painting.
22399 2008-07-03  Sebastien Pouliot  <sebastien@ximian.com>
22401         * moon-path.c|h: Draw ellipse clockwise to match Silverlight.
22402         Also remove the closing point since it's not needed (but that was
22403         not the problem, just a small memory saving).
22404         [Re-fix bug #391684]
22406 2008-07-02  Jeffrey Stedfast  <fejj@novell.com>
22408         * text.h (TextBlock::GetBoundingWidth/Height): Use
22409         GetValueNoDefault() so we don't get 0.0 for the width/height if
22410         unset.
22412         Fixes for bug #404858
22414         * runtime.cpp: Added SHOW_TEXTBOXES bit flag.
22416         * layout.cpp: Don't keep track of bbox_width and height anymore,
22417         it was never actually set to anything other than
22418         actual_width/height anyway.
22420         * text.cpp (TextBlock::Paint): If SHOW_TEXTBOXES, render a green
22421         bounding box around the text (this is to aid in debugging text
22422         which may have a transform applied to it).
22424         * text.h (class TextBlock): Removed bbox_width and
22425         bbox_height. These were never anything other than
22426         actual_width/height respectively anyway.
22427         (TextBlock::GetBoundingWidth): Return the FrameworkElement::Width
22428         if set, else the ActualWidth.
22429         (TextBlock::GetBoundingHeight): Same.
22431 2008-07-02  Sebastien Pouliot  <sebastien@ximian.com>
22433         * shape.cpp: Remove cairo_save|restore from [Shape|Path]::Draw
22434         since their callers already do this. Simplify a bit Shape::
22435         InsideObject to check ret only if a Clip is present (instead of
22436         always checking it).
22438 2008-07-02  Chris Toshok  <toshok@ximian.com>
22440         * runtime.h, runtime.cpp: get rid of the cursor_func,
22441         invalidate_func, render_func stuff.  Instead use 3 virtual
22442         methods: SetCursor(GdkCursor*), Invalidate(Rect), and
22443         ProcessUpdates().  That way the plugin can instantiate a
22444         WindowlessSurface which overrides those methods instead of having
22445         the stupid callback mechanism we had.
22447 2008-07-02  Chris Toshok  <toshok@ximian.com>
22449         * runtime.h, runtime.cpp: virtualize SetCursor so the plugin can
22450         override the behavior.
22452 2008-07-02  Sebastien Pouliot  <sebastien@ximian.com>
22454         * moon-path.c: Revert ordering change I made in r105586 to fix
22455         a clipping issue (fillrule bug) as this breaks stroke dash (which
22456         confirm the original behaviour was the correct one).
22457         [Fix most of #404858]
22459 2008-07-01  Jeffrey Stedfast  <fejj@novell.com>
22461         Fixes for bug #405514.
22463         * text.cpp (TextBlock::Layout): If the Text property is empty,
22464         default the actualHeight to the font's height.
22465         (TextBlock::OnPropertyChanged): If the FrameworkElement::Width
22466         property changes, we need to set dirty to true (in most cases) so
22467         that the actual width/height values are recalculated.
22469 2008-06-30  Sebastien Pouliot  <sebastien@ximian.com>
22471         * shape.cpp|h: Use Cairo by default to ComputeBounds. In effect 
22472         this change Polyline and Polygon to use Cairo instead of (faster
22473         but less acurate) custom code. In reality PathGeometry (PML) is 
22474         much more used than those Poly[line|gon] and (upcoming) caching 
22475         negate much of the impact.
22476         * geometry.cpp: Use the more precise (and surviving) 
22477         calc_line_bounds function that accept PenLineCap.
22479 2008-06-30  Jeffrey Stedfast  <fejj@novell.com>
22481         * shape.cpp (Shape::OnPropertyChanged): If the Stroke property
22482         chanegs between null and an actual brush (in either direction),
22483         invalidate the cached path because the shape may need to
22484         recalculate the stroke offsets.
22486 2008-06-30  Sebastien Pouliot  <sebastien@ximian.com>
22488         * xaml.cpp: Move reading the first point of C|Q beziers into the 
22489         loop. Fix quite a few misrendering for http://xmldocs.net/ball
22490         [Partial fix for #404858]
22492 2008-06-30  Chris Toshok  <toshok@ximian.com>
22494         * dirty.cpp: add all the ordering smarts to keep the two dirty
22495         lists partially sorted.  hopefully this won't be a huge
22496         performance hit.
22498         * uielement.h, uielement.cpp: add 2 new dirty pointers.  a "succ"
22499         pointer for the down dirty list, and a "pred" for the up dirty
22500         list.
22502 2008-06-30  Jeffrey Stedfast  <fejj@novell.com>
22504         * list.cpp (List::InsertBefore): Handle a NULL @before.
22506 2008-06-30  Geoff Norton  <gnorton@novell.com>
22508         * mms-downloader.cpp: Rework Fernando's incomplete packet guard to be a little
22509         more sane while we determine how to fix this properly.
22511 2008-06-30  Jeffrey Stedfast  <fejj@novell.com>
22513         * shape.cpp (Shape::ComputeShapeBounds): Reverted my previous fix,
22514         it's not correct.
22515         (Ellipse::ComputeShapeBounds): Same.
22517 2008-06-30  Michael Dominic K.  <mdk@mdk.am>
22519         * animation.cpp: Make sure our default KeySplines parameters are correct
22520         to generate a linear dynamics curve as Silverlight. Fixes #404850.
22522 2008-06-30  Fernando Herrera  <fherrera@novell.com>
22524         * pipeline.cpp: don't use g_queue_clear as is present only in glib >= 2.14
22526 2008-06-30  Fernando Herrera  <fherrera@novell.com>
22528         * pipeline.h:
22529         * pipeline.cpp: Implement the packet writer MemoryQueueSource.
22530         * asf/asf.h:
22531         * asf/asf.cpp: 
22532         * media.h:
22533         * media.cpp: Use MemoryQueueSource for all mms streams
22534         * mms-downloader.cpp: Don't try to parse/write incomplete data packets.
22536 2008-06-29  Chris Toshok  <toshok@ximian.com>
22538         * panel.cpp (Panel::OnCollectionChanged): when the ZIndex of a
22539         child changes, invalidate them here.
22541         * dirty.cpp (Surface::ProcessDownDirtyElements): and remove the
22542         subtree invalidate from the zindex processing here.
22544 2008-06-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22546         * pipeline-ffmpeg.cpp: Add debug spew.
22547         * media.cpp: Remove debug spew.
22549 2008-06-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22551         * media.cpp, media.h: Add streamed markers to the media element on the
22552           main thread.
22554 2008-06-28  Geoff Norton  <gnorton@novell.com>
22556         * downloader.h: The finished event raises a success condition now
22557         so that we can notify failure on unsuccessful downloads.
22559 2008-06-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22561         * mplayer.h: Add AudioPlayer::Drain to drain whatever data the audio
22562           has stored, now called by the MediaPlayer when seeking. Execute the
22563           'seeking complete' logic on the main thread (marshalling
22564           SeekCallback to the main thread). Always use the thread-safe
22565           AddTickCallSafe instead of AddTickCall, and override
22566           EventSurface::SetSurface to lock/unlock the required locks.
22567         * mplayer.cpp: Add AudioPlayer::Drain to drain whatever data the audio
22568           has stored, now called by the MediaPlayer when seeking. Execute the
22569           'seeking complete' logic on the main thread (marshalling
22570           SeekCallback to the main thread), and set the previous_position on
22571           the MediaElement to the seeked-to position when the seek is
22572           finished. Always use the thread-safe AddTickCallSafe instead of
22573           AddTickCall, and override EventSurface::SetSurface to lock/unlock
22574           the required locks.
22575         * dependencyobject.cpp, dependencyobject.h: Split AddTickCall into a
22576           thread-safe version (AddTickCallSafe) and don't do any locking in
22577           AddTickCall. Add SetSurfaceLock/Unlock so that types overriding
22578           SetSurface can do the proper locking.
22579         * media.cpp, media.h: CheckMarkers: Don't try to detect seeking by
22580           comparing to/from pts, MediaPlayer will now set previous_position
22581           correctly when seeking. AdvanceFrame: only check markers if we
22582           advanced or if we're not seeking. SetSurface: add proper locking,
22583           and use AddTickCallSafe where appropiate.
22585 2008-06-27  Larry Ewing  <lewing@novell.com>
22587         * uielement.cpp (UIElement::OnPropertyChanged): opcacity mask
22588         affects the subtree as well.
22590 2008-06-27  Larry Ewing  <lewing@novell.com>
22592         * uielement.cpp (UIElement::OnPropertyChanged): on things that can
22593         potentially be trapped by the Invalidate visibility check we need
22594         to invalidate the whole subtree before we start processing the
22595         dirty lists to avoid ordering issues.
22597         Fixes test/xaml/assorted/rendering-glitches2.html.
22599 2008-06-27  Chris Toshok  <toshok@ximian.com>
22601         * panel.cpp (Panel::FrontToBack): add a special case for
22602         non-translucent (but NULL background) panels - we don't render
22603         them at all.
22605 2008-06-27  Larry Ewing  <lewing@novell.com>
22607         * panel.cpp (Panel::FrontToBack): treat opacity specially for
22608         panel since we need the right subtree render region in PreRender.
22610 2008-06-27  Jeffrey Stedfast  <fejj@novell.com>
22612         * downloader.cpp (dummy_downloader_create_web_request): Return
22613         NULL to fix a compile warning about control reaching the end of a
22614         non-void function.
22616 2008-06-27  Stephane Delcroix  <sdelcroix@novell.com>
22618         * downloader.[h|cpp]: move browserrequest/response from the plugin
22619         as downloaderrequest/response.
22621 2008-06-26  Chris Toshok  <toshok@ximian.com>
22623         * runtime.h (RUNTIME_INIT_DESKTOP, RUNTIME_INIT_BROWSER): enable
22624         the shape cache.
22626         * shape.h, shape.cpp (Shape::IsCandidateForCaching): remove the
22627         condition that was keeping small surfaces from being cached, so
22628         bubblemark gets a win from this (from ~38 to 70+ fps on my
22629         laptop).
22630         (Shape::ShiftPosition): if we have a cached surface, set the
22631         device offset to mirror the new bounds x/y.
22633 2008-06-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22635         * clock.h, clock.cpp, dependencyobject.h, downloader.cpp,
22636           dependencyobject.cpp, mplayer.h, media.h, mplayer.cpp, media.cpp:
22637           Change AddTickCall to take a TickCallHandler (EventObject*)
22638           function pointer and a EventObject * tick_data instead of untyped
22639           function pointer/tick_data.
22641 2008-06-26  Chris Toshok  <toshok@ximian.com>
22643         * dependencyobject.h,
22644         dependencyobject.cpp (DependencyProperty::DependencyProperty):
22645         convert the name to downcase prior to registering and prior to
22646         calling g_hash_table_lookup to remove the casecmp overhead from
22647         our key comparisons.  store the converted name in DP::hash_key.
22649         * runtime.h, runtime.cpp: remove strcase_equal (use g_strcasecmp)
22650         and strcase_hash.
22652         * type.cpp: strcase_equal -> g_strcasecmp.
22654         * playlist.cpp (PlaylistParser::OnStartElement): same.
22656 2008-06-26  Jeffrey Stedfast  <fejj@novell.com>
22658         * pipeline.cpp (ASXDemuxerInfo::Supports): Fix broken boolean
22659         logic/compiler warning and at the same time simplified.
22661         * shape.cpp (Shape::ComputeShapeBounds): Need to take stroke
22662         thickness into consideration. Fixes bug #400657.
22663         (Ellipse::ComputeShapeBounds): Same.
22665 2008-06-26  Chris Toshok  <toshok@ximian.com>
22667         * dirty.cpp (Surface::ProcessDownDirtyElements): add code to
22668         re-sort the children by zindex.
22670         * dirty.h (enum DirtyType): add DirtyChildrenZIndices.
22672         * panel.cpp (Panel::OnCollectionChanged): don't resort-by-zindex
22673         here.  just add it to the dirty list.
22675         * transform.h, transform.cpp: move the OnSubPropertyChanged method
22676         to MatrixTransform, so we can notify our listeners with the right
22677         property.
22679 2008-06-26  Chris Toshok  <toshok@ximian.com>
22681         * transform.h, transform.cpp (Transform::OnSubPropertyChanged): we
22682         need this to deal with sub-dependencyobjects of transforms (in
22683         this case, MatrixTransform's Matrix object.)  when you set
22684         properties on these subobjects, we need to update the transform.
22686 2008-06-26  Chris Toshok  <toshok@ximian.com>
22688         * brush.h, brush.cpp (Brush::OnSubPropertyChanged): add this (i
22689         think it used to be there and was removed by me in a flurry of
22690         propertychanged event fixing way back) to take care of brushes
22691         properly causing the uielement to invalidate when the Brush's
22692         transform/relativetransform changes.
22694 2008-06-26  Sebastien Pouliot  <sebastien@ximian.com>
22696         * geometry.h: #ifdef out GeometryFlags until we start using it.
22697         * shape.cpp: Remove unused global variable.
22699 2008-06-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22701         * mplayer.cpp: AudioFinished: Check if we still have audio when the
22702           callback is reached. Fixes test-double-stop.html.
22704 2008-06-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22706         * mplayer.cpp: When calculating start_time take into account current
22707           position. Fixes test-video-only-seek.html (and fox seeking without
22708           audio).
22710 2008-06-25  Jeffrey Stedfast  <fejj@novell.com>
22712         * mms-downloader.cpp: Got rid of overuse of this-> and some int vs
22713         uint comparisons.
22715 2008-06-25  Sebastien Pouliot  <sebastien@ximian.com>
22717         * geometry.cpp: Cache bounds, both logical and "physical" for
22718         PathFigure. This reduce the number of time we need to call 
22719         cairo_[path|stroke|fill]_extents functions and speed up many
22720         sites.
22721         * geometry.h: Add stuff needed for geometry.cpp changes.
22722         * xaml.cpp: Change geometry_from_str to directly create a 
22723         moon_path and avoid the PathFigure[Collection] DO. This match
22724         how Silverlight handle Path Markup Language (PML) and reduce
22725         memory requirements when huge PML are used.
22727 2008-06-24  Chris Toshok  <toshok@ximian.com>
22729         * shape.cpp (calc_offsets): we don't want to divide by the sin,
22730         because as angle approaches either 0, PI, or PI/2, the sin will
22731         approach 0, and therefore the deltas will grow very, very large.
22732         Turns out multiplying is what we want.
22734 2008-06-24  Larry Ewing  <lewing@novell.com>
22736         * runtime.cpp (Surface::Resize): set the width and height properly
22737         in the windowless case, let the widget resize logic handle it
22738         otherwise.
22739         (Surface:render_cb): don't process dirty elements if we are in a
22740         zombie state, just clear the dirty lists and move on.  Fixes a
22741         crash we were seeing when calling ForceRender on a zombie plugin.
22743 2008-06-24  Chris Toshok  <toshok@ximian.com>
22745         * runtime.cpp: in the switch from function pointer to integer in
22746         the HandleMouseEvent stuff, I didn't catch that C++ apparently
22747         doesn't flag NULL as different from 0.  This was causing the
22748         "HandleMouseEvent (NULL" to become effectively become
22749         "HandleMouseEvent (UIElement::DestroyedEvent" which of course
22750         breaks all sorts of things.  In bug 401884 it was causing the
22751         namescope to drop the named item from its hashtable, causing the
22752         tattoo needle to not move vertically.
22754 2008-06-23  Chris Toshok  <toshok@ximian.com>
22756         * uielement.cpp (UIElement::PreRender): comment from the code is
22757         changelog-worthy:
22758         
22759         we need this check because ::PreRender can (and will) be called
22760         for elements with empty regions.
22761         
22762         The region passed in here is the redraw region intersected with
22763         the render bounds of a given element.  For Panels with no
22764         width/height specified in the xaml, this region will be
22765         empty. (check panel.cpp::FrontToBack - we insert the ::PreRender
22766         calling node if either the panel background or any of the children
22767         intersect the redraw region.)  We can't clip to the empty region,
22768         obviously, as it will keep all descendents from drawing to the
22769         screen.
22771 2008-06-23  Chris Toshok  <toshok@ximian.com>
22773         * uielement.h, uielement.cpp (UIElement::ShiftPosition): virtualize
22774         the "bounds.x = p.x; bounds.y = p.y" code, since subclasses have
22775         other, more specialized bounds that also need updating.
22777         * panel.h, panel.cpp (Panel::ShiftPosition): new method, chain up
22778         to UIElement::ShiftPosition and also update bounds_with_children.
22780         * stylus.h, stylus.cpp (InkPresenter::ShiftPosition): new method,
22781         chain up to Canvas::ShiftPosition, and also update render_bounds.
22783 2008-06-23  Chris Toshok  <toshok@ximian.com>
22785         * canvas.cpp (Canvas::OnSubPropertyChanged): allow switching
22786         between UpdatePosition and UpdateTransform according to the
22787         updatepos=yes/no override.
22789         * runtime.h, runtime.cpp: add updatepos=yes/no override.
22790         
22791 2008-06-23  Michael Dominic K.  <mdk@mdk.am>
22793         * clock.cpp: Fixing a problem with repeating animations. Fixes #401983.
22795 2008-06-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22797         * media.cpp: Don't check markers if from > to, no markers will ever be
22798           found in that interval. Also detect forward seeks by checking the
22799           difference between from and to, if difference > 1s, behave as a
22800           seek (and don't emit markers in that interval). 
22801         * pipeline-ffmpeg.cpp: Give more missing information to ffmpeg.
22803 2008-06-20  Jeffrey Stedfast  <fejj@novell.com>
22805         * animation.h: Added "Property Accessor" comments and grouped the
22806         property accessors, etc.
22808         * dependencyobject.cpp (EventObject::SetSurface): Reworded debug
22809         printf.
22810         (EventObject::AddTickCall): Same.
22812         * dependencyobject.h (EventObject::GetSurface): Don't amke this
22813         virtual, nothing overrides it currently.
22815 2008-06-20  Michael Dominic K.  <mdk@mdk.am>
22817         * animation.cpp:
22818         * animation.h:
22819         * clock.cpp:
22820         * clock.h: When detaching/reattaching to Surface execute a special
22821         handler on clocks that (in case of animation clocks) removes the update
22822         property handler. This fixes the (regressed some time ago)
22823         StoryboardEnterLeave semantics test.
22825 2008-06-19  Jackson Harper  <jackson@ximian.com>
22827         * animation.h: 
22828         * type-generated.cpp: Make sure the content property is set.
22830 2008-06-19  Larry Ewing  <lewing@novell.com>
22832         * uielement.cpp (UIElement::PreRender): work around what appears
22833         to be a bug in the ftb logic by not clipping to the render region.
22835         * clock.cpp (SystemTimeSource::Start): make the timer priority
22836         DEFAULT again since otherwise we can get into starvation
22837         situations.
22839         * uielement.cpp (UIElement::PreRender): don't save/restore around
22840         the clip changes, they restrict the group bounds and speed up
22841         opacity related masking substantially.  (See bubblemark).
22843 2008-06-19  Jeffrey Stedfast  <fejj@novell.com>
22845         * font.cpp (FontFace::GetExtents): Only set face pixel size if the
22846         requested size is not what we already have set.
22847         (FontFace::LoadGlyph): Same.
22848         (FontFace::Kerning): Need to set pixel sizes here or our kerning
22849         could be off.
22851 2008-06-19  Chris Toshok  <toshok@ximian.com>
22853         * canvas.cpp (Canvas::OnSubPropertyChanged): call
22854         ui->UpdatePosition instead of UpdateTransform.  Since
22855         UpdateTransform calls UpdateBounds, this should save us a
22856         sometimes costly (in the case of Shape's) trip through
22857         ComputeBounds.
22859         * uielement.h, uielement.cpp: Add UpdatePosition (adds the dirty
22860         node) and ComputePosition (called from ProcessDownDirtyElements.)
22861         (UIElement::ComputePosition): Apply the inverse absolute transform
22862         to the bounds x/y, compute the new transform, then reapply it to
22863         the bounds x/y to compute our new position.
22864         (UIElement::UpdateTransform): clear the DirtyPosition flag.
22865         (UIElement::UpdatePosition): only add the DirtyPosition flag if
22866         the Dirty*Transform flags aren't already set.
22868         
22869         * dirty.cpp (Surface::ProcessDownDirtyElements): add blocks for
22870         Clip, LocalClip, and Position (only Position is implemented).
22872         * dirty.h: clean up the enum some, and add 3 new passes (only one
22873         of which, DirtyPosition, is implemented).
22875 2008-06-19  Jeffrey Stedfast  <fejj@novell.com>
22877         * transform.cpp: Started adding property accessor methods.
22879         * canvas.cpp (Canvas::[G,S]etLeft): Implemented.
22880         (Canvas::[G,S]etTop): Same.
22882         * uielement.cpp (UIElement::[G,S]etLeft): Moved to Canvas.
22883         (UIElement::[G,S]etTop): Same.
22885 2008-06-19  Chris Toshok  <toshok@ximian.com>
22887         * rect.h: add Get{Top,Bottom}{Left,Right} methods.
22889         * point.h, point.cpp: add Transform method.
22891 2008-06-19  Michael Dominic K.  <mdk@mdk.am>
22893         * animation.cpp: In a *AnimationUsingKeyFrames if we don't have any
22894         keyframes specified the duration is 0, not Automatic. This fixes the 
22895         http://www.etonline.com/silverlight/grammys50/ website.
22897 2008-06-18  Sebastien Pouliot  <sebastien@ximian.com>
22898         
22899         * geometry.cpp: Use the new moon-path functions for ArcSegment
22900         and QuadraticBezierSegment
22901         * moon-path.c: Change some validation to use g_return_if_fail
22903 2008-06-18  Jeffrey Stedfast  <fejj@novell.com>
22905         * runtime.cpp (Surface::ShowFullScreenMessage): Simplified to use
22906         SetLeft().
22908         * control.cpp (Control::GetTransformFor): Simplified.
22910         * uielement.cpp (UIElement::SetLeft): Added for setting
22911         Canvas.Left property.
22912         (UIElement::GetLeft): Same.
22913         (UIElement::SetTop): Same.
22914         (UIElement::GetTop): Same.
22916         * canvas.cpp (Canvas::GetTransformFor): Simplified.
22918 2008-06-18  Sebastien Pouliot  <sebastien@ximian.com>
22920         * shape.cpp: When possible (i.e. if we won't change the bounds
22921         anyway) avoid the second pass inside Shape::ComputeStretchBounds.
22922         This reduce (but does not eliminate) a BIG bottleneck for SL
22923         applications with many path using stretch (e.g. SL world).
22925 2008-06-18  Geoff Norton  <gnorton@novell.com>
22927         * media.cpp: The state when Seeking should not be changed to Stopped.
22928         Fixes another test.
22930 2008-06-17  Jeffrey Stedfast  <fejj@novell.com>
22932         Partial fix for bug #400657.
22934         * dependencyobject.cpp (DependencyObject::IsValueValid): If the
22935         value is a null dependency object, don't check that the types
22936         match - it doesn't matter.
22938         * color.cpp (color_to_string): New convenience utility function to
22939         aid in debugging. Returns a pointer to a static string buffer, so
22940         be careful...
22942 2008-06-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22944         * playlist.cpp, playlist.h: Only unref/null out the media in
22945           PlaylistEntry::Stop if we're a playlist and not if we're a single
22946           file.
22948 2008-06-17  Sebastien Pouliot  <sebastien@ximian.com>
22950         * moon-path.c|h: Add moon_quad_curve_to and moon_arc_to so they
22951         can be reused without a PathFigure-derived instance. Refactor
22952         code to expand/realloc paths to reduce duplication.
22954 2008-06-16  Chris Toshok  <toshok@ximian.com>
22956         * uielement.cpp (UIElement::OnPropertyChanged): call
22957         Invalidate(GetSubtreeBounds()) and UpdateBounds() directly instead
22958         of FullInvalidate.
22959         (UIElement::OnSubPropertyChanged): same.
22961 2008-06-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22963         * playlist.cpp: When Merging items only merge duration if the source
22964           has duration.
22965         * media.cpp: MediaElement::MediaOpened: when setting the media on the
22966           current item in the playlist, make sure we set the media on a
22967           PlaylistEntry, not on a (nested) Playlist.
22969 2008-06-16  Jeffrey Stedfast  <fejj@novell.com>
22971         * yuv-converter.cpp (YUVConverter::YUVConverter): Replace
22972         g_error() with g_warning(). There's really nothing else we can do
22973         here...
22974         (YUVConverter::Convert): Check if rgb_uv is NULL, if it is try
22975         allocating it again? Maybe some resources have been released since
22976         the ctor was called?
22978         * pipeline-ffmpeg.cpp (FfmpegDecoder::DecodeFrame): Replace
22979         g_error() with a g_warning() and return MEDIA_OUT_OF_MEMORY error.
22981         * mplayer.cpp (MediaPlayer::Open): Change g_error() into a
22982         g_warning() and return fail.
22984 2008-06-16  Michael Dominic K.  <mdk@mdk.am>
22985         
22986         * clock.cpp: Don't do the ExtraRepeat action when seeking.
22988 2008-06-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22990         * media.cpp, media.h: Move Play/Pause due to AutoPlay logic into one
22991           method.
22992         * playlist.cpp: When we stop, clear out our media. This fixes an issue
22993           where we didn't correctly download a file if it was stopped after
22994           it was opened, but before fully downloaded, and then restarted.
22996 2008-06-13  Jeffrey Stedfast  <fejj@novell.com>
22998         * dependencyobject.cpp (include): stdlib.h for strtol()
23000         Fix for jumping to the last page in PageTurn.
23002         * uielement.cpp (UIElement::OnSubPropertyChanged): Need to call
23003         UpdateTotalRenderVisibility() when the clip changes.
23005 2008-06-13  Michael Dominic K.  <mdk@mdk.am>
23007         * animation.cpp:
23008         * moon-curves.c:
23009         * moon-curves.h: Cleaning up the KeySpline curve implementation a bit.
23011 2008-06-13  Michael Dominic K.  <mdk@mdk.am>
23013         * Makefile.am:
23014         * animation.cpp:
23015         * animation.h:
23016         * moon-curves.c:
23017         * moon-curves.h: First version of the new algho for calculating the "y
23018         at x" for KeySplines, now with 200% more accuracy guaranteed! Fixes the
23019         AnimationMatrix2 test.
23021 2008-06-12  Jackson Harper  <jackson@ximian.com>
23023         * xaml.cpp: Remove some cruft.
23024         - Rename Custom to Managed
23025         - We don't need element maps for the namespaces anymore
23026         - Deploy can go into the default list of namespaces.
23028 2008-06-12  Fernando Herrera  <fherrera@novell.com>
23030         * playlist.cpp: Parse ASX2 files using GKeyFile API to have sane NULL
23031         terminated strings. Also keep any uri paramson the mms Ref.
23033 2008-06-12  Jackson Harper  <jackson@ximian.com>
23035         * xaml.cpp: Use the new stuff for creating wrapped types.
23036         - make XamlElementInstance pure virtual.
23038 2008-06-12  Jackson Harper  <jackson@ximian.com>
23040         * xaml.cpp: Clean up API for creating wrapped dependency objects.
23042 2008-06-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23044         * type.cpp: Fix type verification to not check 2.0 types for 1.0
23045           builds.
23047 2008-06-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23049         * media.cpp, media.h: Don't AutoPlay playlists which have already been
23050           autoplayed. Make Play/Pause/Stop/Seek async.
23051         * playlist.cpp, playlist.h: Add a AutoPlayed field to Playlist.
23053 2008-06-12  Chris Toshok  <toshok@ximian.com>
23055         * control.cpp, control.h, deployment.h, frameworkelement.h,
23056         grid.h, runtime.cpp, size.h, type-generated.cpp, type.h,
23057         uielement.h, value.h, xaml.cpp: I was a little too aggressive.  we
23058         can't use SL_2_0 in most places in headers (or rather, shouldn't).
23059         It might be a good idea to remove all references to it, but this
23060         at least gets the ms-tests running and passing again --with-mono.
23061         Switch to using SL_2_0 around the #includes in the .cpp files, and
23062         in value.h/type.h just include the 2.0 types.
23064         * usercontrol.h, usercontrol.cpp: split out the code from
23065         control.h, control.cpp here.
23067         * Makefile.am: add usercontrol.[h,cpp]
23069         * typegen/typegen.cs: fix up the header emission.
23071 2008-06-12  Sebastien Pouliot  <sebastien@ximian.com>
23073         * geometry.cpp|h: Refactor work between PathGeometry and PathFigure
23074         ComputeBounds to avoid creating/destroying a new cairo context for
23075         each figure (it's now shared). Refactor PathFigure::Build not to scan
23076         the path list twice and rely on moon-path automatic size increase.
23077         Also avoid cairo_fill_extents if the path can't be filled or no fill
23078         brush is present.
23080 2008-06-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23082         * runtime.cpp: CreateDownloader: don't allow creating downloaders if we
23083           can't get a surface, nor if the surface is a zombie.
23084         * text.cpp, playlist.cpp, media.cpp: Surface::CreateDownloader may
23085           return NULL now, add a null check.
23087 2008-06-11  Jackson Harper  <jackson@ximian.com>
23089         * xaml.cpp: Move GetKind to the info.  Doesn't make sense for
23090         Instances to have a kind (they can access their kind from their
23091         info).
23093 2008-06-11  Sebastien Pouliot  <sebastien@ximian.com>
23095         * geometry.cpp: Remove unneeded cairo_save|restore inside Draw 
23096         methods (since Shape::Draw already does it) and remove
23097         cairo_set_fill_rule (since Shape::Fill does it).
23099 2008-06-11  Jackson Harper  <jackson@ximian.com>
23101         * xaml.cpp: Clean up the namespace map when destroying the parser.
23103 2008-06-11  Sebastien Pouliot  <sebastien@ximian.com>
23105         * geometry.h: Fix GeometryGround::ComputeBounds so it does
23106         not always returns 0,0,0,0 (from Geometry).
23108 2008-06-11  Geoff Norton <gnorton@novell.com>
23110         * downloader.cpp: Only Abort if we have a surface.
23111         * runtime.cpp: Detach the downloaders when we zombify.
23113 2008-06-11  Sebastien Pouliot  <sebastien@ximian.com>
23115         * moon-path.c: Reorder ellipse points so the fill rule can be 
23116         applied correcly (e.g. filling or clipping).
23118 2008-06-11  Michael Dominic K.  <mdk@mdk.am>
23120         * clock.cpp: Fixing seeking on nested storyboards. Fixes
23121         seek-test-nested-storyboard.xaml in assorted and one more
23122         AnimationMatrix2 block. Now only one left to fix...
23124 2008-06-10  Geoff Norton  <gnorton@novell.com>
23126         * mms-downloader.cpp: Reset our internal state after seeking so
23127         we can resume the stream in the right place.
23129 2008-06-10  Geoff Norton  <gnorton@novell.com>
23131         * mms-downlodaer.cpp: Remove some improperly commited debug code
23133 2008-06-10  Chris Toshok  <toshok@ximian.com>
23135         * control.h, control.cpp, deployment.h, uielement.h,
23136         uielement.cpp, frameworkelement.h, value.h, grid.h, size.h, xap.h,
23137         runtime.cpp: wrap everything SL2.0 with INCLUDE_MONO_RUNTIME (for
23138         now.  I'll be changing that ifdef soon.)  Also, mark all 2.0
23139         specific types with the following typegen pragma: /*
23140         @SilverlightVersion="2" */ so that the generated files contain the
23141         proper ifdefs as well.
23143         * type-generated.cpp, type.h, value.h: resync with new ifdefs.
23145 2008-06-10  Jackson Harper  <jackson@ximian.com>
23147         * dependencyobject.cpp: Add todo for Name validation.
23149 2008-06-11  Fernando Herrera  <fherrera@novell.com>
23151         * xaml.cpp: Accept numbers and strings representing numbers as
23152         values for BOOL properties. Also accept "true" and "false" case
23153         variants.
23154         * playlist.cpp: ASX2 files can use ?MSWMExt=.asf and &MSWMExt=.asf
23155         ending uris, so just check for "MSWMExt=.asf".
23156         Fixes hsn.tv, bug #362328.
23158 2008-06-10  Jackson Harper  <jackson@ximian.com>
23160         * xaml.cpp: ContentProperty should be on the ElementInfo not the
23161         ElementInstance, since you can only have one content property per
23162         a type.
23164 2008-06-10  Geoff Norton  <gnorton@novell.com>
23165         
23166         * mms-downloader.cpp: Fix some looping logic when seeking (partially
23167         fixed).  Fix a typo when enumerating the streams array to not exceed
23168         the bounds.
23170 2008-06-10  Jackson Harper  <jackson@ximian.com>
23172         * xaml.cpp: Remove default prefix override check.  This must have
23173         only been in one of the early versions of SL because I can't get
23174         SL to do it anymore.  This helps fix video page turn.
23176 2008-06-10  Jackson Harper  <jackson@ximian.com>
23178         * xaml.cpp: Remove x:Code since this isn't used in SL 2.0.
23180 2008-06-10  Chris Toshok  <toshok@ximian.com>
23182         * dependencyobject.h, dependencyobject.cpp: split the Emit()
23183         machinery up into 3 methods.  StartEmit, DoEmit, and FinishEmit.
23184         StartEmit returns a context object passed to the other two
23185         methods.
23187         * runtime.h, runtime.cpp: use the new
23188         EventObject::{Start,Do,Finish}Emit methods to make event bubbling
23189         more transactional - any changes made to the listener list for the
23190         event we're bubbling up, for any element in our input list, are
23191         delayed until after the event has propagated.  Fixes our test id
23192         191 (test-bubbling.html) as well as bug #351568.
23194 2008-06-10  Sebastien Pouliot  <sebastien@ximian.com>
23196         * shape.cpp|h: Don't call ComputeShapeBounds(true) unless we need
23197         its value (i.e. Stretch != None). Make Shape::ComputeShapeBounds
23198         reuse it's physical bounds for logical instead of computing it 
23199         twice.
23201 2008-06-10  Michael Dominic K.  <mdk@mdk.am>
23203         * animation.cpp:
23204         * animation.h:
23205         * clock.cpp:
23206         * clock.h: Replacing CreateClock with AllocateClock implementation and
23207         making sure the latter is called for Storyboards. That fixes the nested
23208         storyboards inside other storyboards...
23209         test-animation-nested-storyboard.xaml and one step more for
23210         AnimationMatrix2.
23212 2008-06-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23214         * dependencyobject.h: Another greppable comment.
23216 2008-06-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23218         * dependencyobject.cpp: Add comment to assert which shows up while
23219           grepping.
23221 2008-06-06  Geoff Norton  <gnorton@novell.com>
23223         * file-downloader.h: Fix a bug between argument sending and class
23224         variables that was causing us to free and strdup the free'd pointer.
23226 2008-06-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23228         * mms-downloader.cpp: Return NULL from GetDownloadedFilename and
23229           GetResponseText.
23231 2008-06-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23233         * src.mdp: Updated.
23235 2008-06-06  Jeffrey Stedfast  <fejj@novell.com>
23237         * xaml.cpp: Don't use the c++ ctor initializer stuff, it breaks if
23238         members change order (like it did recently).
23239         (wrap_dependency_object): Get rid of unused variables.
23241         * media.cpp (Image): Made bools share a single int.
23243 2008-06-06  Jackson Harper  <jackson@ximian.com>
23245         * xaml.cpp: Use the Type system for looking up elements, make
23246         things a little more OOP so we can easily add some of the 2.0
23247         features.  Note:  This is going to break x:Code and deployment
23248         temporarily.
23249         
23250 2008-06-05  Geoff Norton  <gnorton@novell.com>
23252         * downloader.cpp, downloader.h: More refactoring to hide the zip related
23253         details in the FileDownloader.  NOTE: The exposure of the file downloader
23254         to the Text side is ugly and should be cleaned up.
23255         * text.cpp: Access obfuscated font details thru the FileDownloader API.
23256         * file-downloader.cpp, mms-downloader.cpp, internal-downloader.h: Expose
23257         the filename thru the downlodaer api.
23258         * downloader.cpp: No longer leak InternalDownloaders.
23260 2008-06-05  Geoff Norton <gnorton@novell.com>
23262         * mms-downloader.cpp, mms-downloade.h: Implement time measuring of
23263         the $P packet pair, and implement and initial algorithm to do proper
23264         bandwidth stream selection.
23266 2008-06-05  Geoff Norton <gnorton@novell.com>
23267         
23268         * downloader.cpp:  Remove some left over unused variables, and the
23269         is_valid_mms_type inline.
23271 2008-06-05  Geoff Norton <gnorton@novell.com>
23273         * Makefile.am: Add file-downloader and mms-downloader to the build.
23274         * file-downloader.(cpp|h): This class is a implementation of the new
23275         InternalDownloader class utilized by the downloader to differentiate
23276         between MMS and regular requests.  We should move the zip logic here.
23277         * mms-downloader.(cpp|h): This class is the MMS implementation of the
23278         InternalDownloader class.
23279         * internal-downloader.h: Route callbacks from the plugin thru this class
23280         to their appropriate file (NPStream) / MMS based implementations.
23281         * downloader.cpp: Update the API to call the InternalDownloader based
23282         representation instead of large if (mms) branches.
23284 2008-06-05  Geoff Norton  <gnorton@novell.com>
23286         * downloader.cpp, downloader.h:  Initial implementation of MMS inside
23287         libmoon.  The API has been extended to register two additional callbacks
23288         to set HTTP headers, and the HTTP body.
23290 2008-06-05  Michael Dominic K.  <mdk@mdk.am>
23292         * xaml.cpp: Removing the "broken parsing" of RepeatBehavior in
23293         --with-compatibility-bugs mode. It looks like the parsing is fine. The
23294         bug is now "implemented" in clock.cpp.
23296 2008-06-05  Michael Dominic K.  <mdk@mdk.am>
23298         * clock.cpp: In ComputeNewTime when we're going over our duration time
23299         and we're AutoReversed, check actually how big the diff is cause it
23300         might be that we need to "wrap around self" and switch to forward time
23301         direction anyways (such is the case with seeking). 
23303         In other words, allow to seek into particular interation of
23304         RepeatBehavior="XXXx", not only the first one. Fixes one more
23305         AnimationMatrix2 block and seek-test-multiple-repeat.xaml in assorted.
23307         This prolly needs a littlbe bit more work still, similiar mechanism
23308         needs to be present in DoRepeat etc.
23310 2008-06-05  Stephane Delcroix  <sdelcroix@novell.com>
23312         * stylus.cpp: fixing a bug. stupid me.
23314 2008-06-05  Stephane Delcroix  <sdelcroix@novell.com>
23316         * rect.h: new Rect (Point, Point) ctor, new ExtendTo (point) and
23317         ExtendTo (double, double) methods.
23319         * stylus.h|cpp: new StylusPointCollection::GetBounds (), check for
23320         intersection of bounds and StylusPointCollection::GetBounds in HitTest
23321         to avoid checking for stroke intersection in most of the cases. Speed
23322         up erasing in inkJournal.
23324 2008-06-04  Michael Dominic K.  <mdk@mdk.am>
23326         * clock.cpp: Interesting -- looks like in SL the timespan-based 
23327         RepeatBehavior is scaled by the SpeedRatio. Ie. 00:00:10 with SpeedRatio
23328         0.5 becomes 00:00:05. I wonder if it's a bug or intended feature?
23329         Anyways, implementing this and fixing two more blocks in
23330         AnimationMatrix2.
23332 2008-06-04  Michael Dominic K.  <mdk@mdk.am>
23334         * clock.cpp: Slightly reworking the seek offsett calculations to include
23335         the SpeeRatio multiplier but do not apply it to BeginTime. Fixes one
23336         more block in AnimationMatrix2 and the test-seek-spee-ratio-begin.xaml
23337         assorted test.
23339 2008-06-04  Michael Dominic K.  <mdk@mdk.am>
23341         * clock.cpp: When seeking include the SpeedRatio calculations. Fixes the
23342         test-seeking-speed-ratio.xaml from assorted tests and one more block in
23343         the AnimationMatrix2 test. 
23345 2008-06-03  Jeffrey Stedfast  <fejj@novell.com>
23347         * control.cpp (user_control_new): %p does what %x was trying to do
23348         in this case, but without compile warnings :)
23350 2008-06-03  Jeffrey Stedfast  <fejj@novell.com>
23352         Glyphs rendering optimization.
23354         * text.cpp (Glyphs::Layout): Accumulate the glyph paths here
23355         instead of re-looping this logic again in Glyphs::Render().
23356         (Glyphs::Render): Just blit the path.
23358 2008-06-03  Chris Toshok  <toshok@ximian.com>
23360         * dependencyobject.cpp (DependencyObject::SetValue): Simplify this
23361         a bunch and remove all the redundant checks.
23362         
23363         (DependencyObject::MergeTemporaryNameScopes): merge both DO and
23364         Collection versions into the same method to reduce code
23365         duplication.
23367         * dependencyobject.h: no need to provide multiple overloads for
23368         MergeTemporaryNameScopes.
23370 2008-06-03  Jeffrey Stedfast  <fejj@novell.com>
23372         Text rendering optimization via reduction of font loading.
23374         * font.cpp (FontFace): A new abstraction for FT_Face which is
23375         meant to prevent Moonlight from ahving to load the same font face
23376         multiple times just because the FontSize attributes don't match.
23377         (TextFont): Greatly simplified this class by using FontFace.
23379 2008-06-02  Jackson Harper  <jackson@ximian.com>
23381         * xaml.cpp: Make sure we don't try to look up Content Properties
23382         on anything but elments.  Property elements are given the
23383         XamlElementInfo of their parent so GetContentProperty on a
23384         PROPERTY element will return the parent's content property.
23386 2008-06-02  Michael Dominic K.  <mdk@mdk.am>
23388         * clock.cpp: If we have duration-based RepeatBehavior set the
23389         repeat_count to 1 in bug-mode (--with-compatibility-bugs).
23391 2008-06-02  Michael Dominic K.  <mdk@mdk.am>
23392         
23393         * xaml.cpp: SL seems to correctly parse 0:0:0 TimeSpans in "bug-mode"
23394         even.
23396         * clock.cpp: Remove the RepeatBehavior=1.0 forcing in Validate when
23397         RepeatBehavior=0:0:0.
23399 2008-06-02  Michael Dominic K.  <mdk@mdk.am>
23401         * clock.cpp: Even more timeline validation rules.
23403 2008-06-02  Sebastien Pouliot  <sebastien@ximian.com>
23405         * font.cpp: Use the existing DOUBLE_FROM_26_6 instead of dividing
23406         by 64.0 since this makes it clear why we're doing it.
23408 2008-05-30  Michael Dominic K.  <mdk@mdk.am>
23410         * clock.cpp: Don't validate animations that have Duration of "00:00:00"
23411         and RepeatBehavior="Stop". That is what SL does. Fixes the clock41.xaml
23412         test.
23414 2008-05-30  Michael Dominic K.  <mdk@mdk.am>
23416         * xaml.cpp: Adding a compatibility option
23417         (--with-compatibility-bugs=yes) that introduces a Silverlight 1.0
23418         RepeatBehavior bug.
23420 2008-05-30  Michael Dominic K.  <mdk@mdk.am>
23422         * clock.cpp: Ceil the delta and ret_time. This is a very poor-man's
23423         protection against the desync's coming from integers (TimeSpan) being
23424         multiplied by floating values (SpeedRatio). Better to be non-precise
23425         forward than backward.
23427 2008-05-30  Michael Dominic K.  <mdk@mdk.am>
23429         * clock.cpp: The initial ticking difference needs to be multiplied by
23430         the SpeedRatio as well. This fixes few timing desyncs. Fixes
23431         clock40.xaml, test-animation-hold-stop-speed.xaml and the RoyalBlue
23432         block from the AnimationMatrix2.
23434 2008-05-29  Jeffrey Stedfast  <fejj@novell.com>
23435         
23436         * media.cpp (Image::OnPropertyChanged): Just like MediaElement, if
23437         you set an Image's Source property to an empty string (or null),
23438         it stops rendering the image.
23440 2008-05-29  Stephane Delcroix  <sdelcroix@novell.com>
23442         * stylus.cpp: fix intersect_line_2d to fix the inkJournal thing.
23444 2008-05-29  Jeffrey Stedfast  <fejj@novell.com>
23446         * layout.cpp|h (TextRun::IsUnderlined): Replacement for
23447         TextLayout::IsUnderline().
23448         (TextLayout::IsUnderline): Removed.
23450         * font.h (enum TextDecorations): Add a comment explaining that
23451         this is meant to be used as bit flags and not a normal
23452         enumeration.
23454 2008-05-29  Sebastien Pouliot  <sebastien@ximian.com>
23456         * font.h: Revert TextWrapping change as it regress DRT tests
23457         (it's possible that the value were right, but did not match
23458         the managed value used by Silverlight 1.1).
23460 2008-05-29  Jackson Harper  <jackson@ximian.com>
23462         * type.cpp: INVALID types don't have content properties.
23463         * dependencyobject.h: Content properties are stored on the Type so
23464         we don't need to store them here.
23465         * xaml.cpp: Get content properties from the Type system instead of
23466         the parser's internal type map.
23467         - We don't need to do any special handling in the start_element
23468         handler for content properties anymore.
23469         * control.cpp|h: We don't need to expose the content property
23470         anymore.
23471         - Mark the content property for controls.
23472         
23473 2008-05-29  Sebastien Pouliot  <sebastien@ximian.com>
23475         * font.h: Fix enum values for TextWrapping
23476         * layout.cpp: Fix regression (in earlier commit) for wrapping.
23478 2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23480         * debug.cpp: Fix an invalid read issue found with valgrind.
23482 2008-05-29  Sebastien Pouliot  <sebastien@ximian.com>
23484         * layout.h|cpp: Handle invalid values for TextDecorations and
23485         TextWrapping like Silverlight does.
23487 2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23489         * runtime.cpp: When setting the background color delete any previoys
23490           background color.
23492 2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23494         * uielement.cpp: Fix minor leak.
23496 2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23498         * src.mdp: Updated.
23500 2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23502         * http-streaming.cpp: Handle quoted feature strings.
23504 2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23506         * downloader.cpp: Null out request_position in the ctor.
23508 2008-05-28  Michael Dominic K.  <mdk@mdk.am>
23510         * clock.cpp: Reverting the change that invalidates the timelines which
23511         have 00:00:00 duration. It is actually supported by SL. 
23513 2008-05-28  Michael Dominic K.  <mdk@mdk.am>
23515         * clock.cpp: In Clock::ComputeNewTime all those checks are useless.
23516         Multiply always instead of recursing down into properties.
23518 2008-05-28  Michael Dominic K.  <mdk@mdk.am>
23520         * animation.cpp: If "To" and "By" are not specified use the
23521         defaultOriginValue always instead of "start" (which might be "From").
23522         Fixes the test-animation-only-from.xaml and the green block in
23523         AnimationMatrix2.
23525 2008-05-28  Michael Dominic K.  <mdk@mdk.am>
23527         * clock.cpp: When Validating the timeline, if RepeatBehavior is
23528         incorrect make it 1.0 instead of marking the timeline as invalid.
23530 2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23531         
23532         * downloader.cpp: Fix typo.
23534 2008-05-28  Sebastien Pouliot  <sebastien@ximian.com>
23536         * enums.c: Fix None value in style_simulations_map and remove
23537         unneeded one (they exists only in WPF but SL parser does not like
23538         them).
23539         * font.cpp|h: Fix FontStyle and FontWeigth properties when the 
23540         supplied value are invalid. Add new constants specific to SL.
23541         * text.h: Add simulation_none. Share an integer between all bool
23542         flags.
23543         * text.cpp: Invalid values for StyleSimulation does not render
23544         the Glyphs.
23545         * runtime.cpp: Invalid MouseCursor values hides the cursor.
23547 2008-05-27  Jeffrey Stedfast  <fejj@novell.com>
23549         Fixes the Legend (Space Invaders) demo without breaking
23550         storyboard_EnterLeaveSemantics.htm.
23552         * clock.cpp|h (Clock::Completed): New virtual method which gets
23553         called when a clock completes.
23554         (Clock::ComputeNewTime): If a clock completes (has no more
23555         repeats, etc) then call ::Complete().
23556         (ClockGroup::ClockGroup): Changed the name of emitted_complete to
23557         emit_completed which has also changed the meaning a bit.
23558         (ClockGroup::Begin): Updated.
23559         (ClockGroup::RaiseAccumulatedEvents): If emit_completed is true,
23560         then emit the Completed event and reset emit_completed back to
23561         false so we don't re-emit.
23562         (ClockGroup::Completed): Set emit_completed to true.
23564 2008-05-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23566         * media.cpp: MediaElement: Fix refcounting for our 'media' field. In
23567           DownloaderComplete only emit DownloadProgressChangedEvent if we
23568           have a surface.
23570 2008-05-27  Michael Dominic K.  <mdk@mdk.am>
23572         * xaml.cpp: Adding a comment/explanation about the RepeatBehavior and
23573         Silverlight 1.0/2.0 situation.
23575 2008-05-26  Michael Dominic K.  <mdk@mdk.am>
23577         * clock.cpp: Don't validate timelines that have specified duration of
23578         00:00:00. Fixes the test-animation-zero-duration test.xaml.
23580 2008-05-26  Michael Dominic K.  <mdk@mdk.am>
23582         * clock.cpp:
23583         * clock.h: When Validating the Timeline also make sure that the
23584         RepeatBehavior is correct, otherwise don't start the anim. Fixes the
23585         test-animation-zero-repeat-behavior test and brings us closer with
23586         AnimationMatrix2 test.
23588 2008-05-26  Michael Dominic K.  <mdk@mdk.am>
23590         * clock.cpp: When Validating TimelineGroup don't forget to call parent's
23591         base validation method.
23593 2008-05-26  Michael Dominic K.  <mdk@mdk.am>
23595         * xaml.cpp: Reverting spouliot's commit from 2008-05-08. It looks like
23596         SL supports the RepeatBehavior="XX:XX:XX" just fine. This fixes the
23597         test-aniamtion-repeat-behavior.xaml test.
23599 2008-05-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23601         * src.mdp: Updated.
23603 2008-05-23  Sebastien Pouliot  <sebastien@ximian.com>
23605         * text.cpp: (Glyphs::InsideObject) Avoid expensive, and unneeded,
23606         cairo_save/cairo_restore since we don't use the context.
23608 2008-05-23  Stephane Delcroix  <sdelcroix@novell.com>
23610         * dependencyobject.[h|cpp]: merge namescopes on SetValue.
23612 2008-05-23  Jeffrey Stedfast  <fejj@novell.com>
23614         * font.cpp (TextFont::PixelsPerEM): Removed, the logic was broken.
23616         * text.cpp (Glyphs::Layout): Reverted previous commit and go back
23617         to the magic math.
23618         (Glyphs::Render): Same.
23620 2008-05-22  Chris Toshok  <toshok@ximian.com>
23622         * stylus.h, stylus.cpp (Stroke::HitTest): correct our width/height
23623         code.  Only include the +2 to each side if the outline color is
23624         non-transparent.
23625         (Stroke::AddStylusPointToBounds): same.
23626         (Stroke::OnPropertyChanged): new method.  we need to recompute the
23627         bounds if our DrawingAttributes change.
23628         (Stroke::OnSubPropertyChanged): same, if width/height/online-color
23629         of the drawing attributes change.
23631 2008-05-22  Sebastien Pouliot  <sebastien@ximian.com>
23633         * brush.cpp: Fix defaults when wrong values are being used for
23634         enumerations from Javascript.
23635         [Fix part of #340799]
23637 2008-05-22  Jackson Harper  <jackson@ximian.com>
23639         * dependencyobject.cpp: Only merge temp namescopes.
23641 2008-05-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23643         * dependencyobject.cpp, dependencyobject.h: EventObject: instead of
23644           surrounding event emission with ref/unref, set a flag specifying
23645           that we're doing event emission, and catch unrefs which would cause
23646           object destruction replacing them with a delayed unref.
23648 2008-05-21  Chris Toshok  <toshok@ximian.com>
23650         * collection.cpp (Collection::Add): remove the check for AddToList
23651         returning -1.  It never will.  Also, call SetSurface() on the new
23652         child *before* we create the Collection::Node for it, so we can
23653         tell (in SetSurface) if it's being added individually to the
23654         surface, or as part of a subtree.  This is required to fix
23655         storyboard_EnterLeaveSemantics.
23657         * animation.cpp (Storyboard::SetSurface): resume the clock when
23658         we're reattached to the surface, but *only* if we're being added
23659         as part of a subtree (that is, we already have a logical parent
23660         when we hit this method.)
23662         * clock.cpp (Clock::Begin): revert the previous
23663         change (has_started needs to be initialized to false).  Required
23664         to fix storyboard_EnterLeaveSemantics.htm.  We'll need to figure
23665         out another way to fix the site (or a better way that fixes one
23666         without breaking the other.)
23668 2008-05-21  Jeffrey Stedfast  <fejj@novell.com>
23670         * text.cpp (Glyphs::Layout): Use PixelsPerEM() instead of
23671         hard-coding the EM units ourselves.
23672         (Glyphs::Render): Same.
23674         * font.cpp (TextFont::PixelsPerEM): New convenience function.
23676         * clock.cpp (Clock::Begin): Init has_started to true. Fixes
23677         http://www.tek.co.jp/Legend
23679         * animation.cpp (Storyboard::storyboard_completed): Merged
23680         teardown_clockgroup() and invoke_completed() into a single
23681         callback. Also makes it so that we don't have to remove 2
23682         CompletedEvent handlers (which we were not doing properly afaict
23683         in Storyboard::Stop).
23684         (Storyboard::Stop): After unregistering the CompletedEvent handler
23685         and stopping the root_clock, tear down the clock group.
23687 2008-05-21  Larry Ewing  <lewing@novell.com>
23689         * shape.cpp (Ellipse::BuildPath): try to shape our degenerate
23690         ellipses a little better.
23691         (Shape::ComputeStretchBounds): modify the needs_clip logic a
23692         little to catch the degenerate ellipse cases we were running into.
23694         Fixes test-shape-ellipse-stroke*.xaml.
23696 2008-05-21  Michael Dominic K.  <mdk@mdk.am>
23698         * clock.cpp: Include the offsett coming from the BeginTime in the
23699         seek_time calculations. Fixes seek-test-begin-time and
23700         seek-test-wrapping-set tests. Brings us closer with AnimationMatrix2.
23702 2008-05-21  Michael Dominic K.  <mdk@mdk.am>
23704         * clock.cpp: Actually do set the seek_time before using it.
23706 2008-05-21  Michael Dominic K.  <mdk@mdk.am>
23708         * clock.cpp: When seeking ClockGroup, don't seek children as weel
23709         (results in cumulative behavior).
23711 2008-05-21  Sebastien Pouliot  <sebastien@ximian.com>
23713         * font.cpp: (TextFont::Path) Avoid expensive save of cairo 
23714         context since only the transform is changed (current point 
23715         location is not part of the context).
23717 2008-05-20  Larry Ewing  <lewing@novell.com>
23719         * runtime.cpp (Surface::motion_notify_callback): always return
23720         true in the windowed motion handler otherwise we something steals
23721         mouse events from us.
23723         Fixes most of MouseInput.htm
23725 2008-05-20  Michael Dominic K.  <mdk@mdk.am>
23727         * clock.cpp: Fixing a problem where timeline with BeginTime set do not
23728         respond at all to Seek. Brings us closer with AnimationMatrix2.
23730 2008-05-19  Jackson Harper  <jackson@ximian.com>
23732         * xaml.cpp: Only do the type wrapping if we are dealing with
23733         collection types, otherwise we just ignore the property decl.
23735 2008-05-19  Jackson Harper  <jackson@ximian.com>
23737         * xaml.cpp: When we wrap a property we need to ignore the property
23738         element so that the children get added to the wrapped object
23739         properly.
23740         * dependencyobject.cpp: We also need to merge the collection's
23741         namescope because collections can be created with their own temp
23742         namescope using createFromXaml.
23743         
23744 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
23746         * animation.cpp:
23747         * animation.h:
23748         * clock.cpp:
23749         * clock.h: Changing ExtraRepeatHandler to ExtraRepeatAction to avoid
23750         confusion.
23752 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
23754         * animation.cpp:
23755         * animation.h: Adding an implementation for ExtraRepeatHandler to
23756         AnimationClock that fetches target value and sets it on
23757         AnimationStorage. Fixes clock37.xaml test.
23759 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
23761         * animation.cpp:
23762         * animation.h: Adding helper methods to get target value out of the
23763         given AnimationTimeline. We're still missing implementations for
23764         keyframe-based anims. Coming soon.
23766 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
23768         * animation.cpp:
23769         * animation.h: Adding two helper methods to AnimationStorage:
23770         GetStopValue (get's current base or (if set) stop value) and
23771         UpdatePropertyWithValue to manually force prop to a given state.
23773 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
23775         * clock.cpp:
23776         * clock.h: Addin a virtual ExtraRepeatHandler to Clock class fired on
23777         repeat. By default does nothing.
23779 2008-05-19  Jackson Harper  <jackson@ximian.com>
23781         * xaml.cpp: When createFromXaml ('<some property>...</property>')
23782         is called, we need to create and return an object that represents
23783         that property.  ie createFromXaml ('<Canvas.Triggers>...); should
23784         return a ResourceDictionary object.
23786 2008-05-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23788         * downloader.cpp: Fix warnings.
23790 2008-05-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23792         * clock.cpp: Added comment.
23794 2008-05-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23796         * runtime.cpp: Destroy EventObject::objects_alive upon runtime
23797           shutdown.
23799 2008-05-16  Miguel de Icaza  <miguel@novell.com>
23801         * dependencyobject.h (DependencyObject::GetContentProperty):
23802         returns a DependencyProperty that is the target for the content of
23803         a XAML content assignment. 
23805         * xaml.cpp (XNamespace::SetAttribute): while hydrating, ignore the
23806         Class attribute as the object has already been created. 
23808         (start_element): Add support for the ContentPropertyAttribute on
23809         DependencyObjects to the XAML parser.       This is very primitive
23810         support at this point, and does not support collections, or type
23811         conversions as specified on the docs. 
23813         * control.cpp (Control::SetContent): Refactor setting the
23814         real_object into its own routine.     Currently takes a Surface
23815         parameter, not clear that this is even needed, but kept for
23816         compatibility with the old code. 
23818         (UserControl::OnPropertyChanged): Hook up setting the Content
23819         property.
23821         * runtime.cpp (Surface::Attach): Let the widget be UIElement.
23823 2008-05-16  Larry Ewing  <lewing@novell.com>
23825         * shape.cpp: draw ellipses with no width/height specified as the
23826         ms tests indicate.
23828         Fixes StretchAndShapes.xaml.
23830 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23832         * media.cpp: Abort the downloader when we emit MediaFailed, and always
23833           emit a DownloadProgressChangedEvent with 1.0 when we're finished
23834           downloading (we won't get any writes if the file has already been
23835           downloaded and mozilla just gives us the filename).
23837 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23839         * src.mdp: Updated.
23841 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23843         * downloader.cpp: Don't emit any events if we don't have a surface. Add
23844           warnings to Send(Internal) when we have no surface (the plugin is
23845           already checking for it, so if the warning is printed we're doing
23846           something else wrong).
23847         * runtime.h, runtime.cpp: Surface: keep a list of the downloaders we
23848           create, and when the toplevel canvas changes or the surface is
23849           destroyed clear the downloader's surface pointer.
23851 2008-05-16  Jeffrey Stedfast  <fejj@novell.com>
23853         * downloader.cpp (Downloader::Abort): Set download progress to 0.
23855 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23857         * downloader.cpp: Don't emit nor set DownloadProgress(ChangedEvent) in
23858           NotifySize, mozilla calls NotifySize for every write.
23860 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23862         * type.cpp, type.h, type.h.in: Added Type::LookupEventName.
23864 2008-05-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23866         * playlist.cpp: If we're stopping a playlist, reopen the first entry.
23867         * media.h: MediaElement: Make EmitMediaOpened and Reinitialize public
23868           so that Playlist can call them.
23870 2008-05-15  Larry Ewing  <lewing@novell.com>
23872         * runtime.cpp (Surface::button_press_callback): stop firefox from
23873         stealing our focus in the widget case by always returning true on
23874         button press events.  There may be a better way to handle this by
23875         only returning true if the press lands on and element but this at
23876         least improves the situation.
23878         Fixes FullScreenKey.htm.
23880 2008-05-15  Michael Dominic K.  <mdk@mdk.am>
23882         * clock.cpp: Also apply the idle_hint when the ClockGroup itself goes to
23883         Filling state, this makes the idle optimization cover all the cases. Big
23884         perf boost expected.
23885         
23886 2008-05-14  Jeffrey Stedfast  <fejj@novell.com>
23888         Fix for tests/xaml/test-directory-in-zip.html
23890         * media.cpp (Image::Image): Initialize some new state variables to
23891         keep track of whether or not the FrameworkElement::Width and
23892         Height values are ever manually set.
23893         (Image::DownloaderComplete): Properly set the Width/Height
23894         property values based on whether a particular Width/Height have
23895         been requested. Use the image's native width/height if not.
23896         (Image::OnPropertyChanged): Listen for changes to Width/Height
23897         properties.
23899 2008-05-14  Larry Ewing  <lewing@novell.com>
23901         * src/uielement.cpp (UIElement::PostRender): clear any existing
23902         paths when rendering the bounds rectangle.
23904 2008-05-14  Jeffrey Stedfast  <fejj@novell.com>
23906         * media.cpp (MediaElement::MediaOpened): Use GetAutoPlay() instead
23907         of the more complex GetValue API.
23909         * pipeline.cpp (IMediaSource::ReadSome): Don't return false on
23910         error, return -1 (since this is an int32 return value, not bool).
23912 2008-05-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23914         * media.cpp, media.h: Added MediaElement::IsLive, and move
23915           initialization of this field to before our MediaPlayer is opened.
23916         * mplayer.cpp, mplayer.h: For live sources the first frame might not
23917           come with pts = 0, so store that pts so that later we can correctly
23918           calculate how much we've actually played.
23920 2008-05-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23922         * mplayer.cpp, mplayer.h: Add support for Duration tags in ASX files.
23923         * playlist.h, playlist.cpp: Added a PlaylistEntry::HasDuration method,
23924           and skip entries with zero duration.
23926 2008-05-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23928         * dependencyobject.cpp: EventObject::AddTickCall: make sure we release
23929           the read lock if don't have a surface or timemanager.
23931 2008-05-14  Michael Dominic K.  <mdk@mdk.am>
23933         * clock.cpp: No need to SoftStop the ClockGroup itself (unlike the
23934         children) on DoRepeat (). Fixes a small regression in clock21.xaml
23935         introduced with last commit.
23937 2008-05-14  Michael Dominic K.  <mdk@mdk.am>
23939         * clock.cpp:
23940         * clock.h: Fixing a case for Clock when the clock has RepeatBehavior but
23941         it doesn't start from 00:00:00. Fixes #388745 (clock22.xaml test).
23943 2008-05-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23945         * runtime.cpp: Don't call Attach (NULL) in Surface::Zombify, it causes
23946           crashes when javascript removes the plugin in an eventhandler.
23948 2008-05-13  Jeffrey Stedfast  <fejj@novell.com>
23950         * media.cpp (MediaElement::DownloaderFailed): Make this more
23951         easily extensible.
23953 2008-05-13  Fernando Herrera  <fherrera@novell.com>
23955         * media.cpp: Fix mms:// and rtsp:// fallback uri rewrite.
23957 2008-05-13  Jeffrey Stedfast  <fejj@novell.com>
23959         * media.cpp (MediaBase::SetSourceAsyncCallback): Prevent memory
23960         corruption of the source.* variables by creating local references
23961         to them and setting source.* to NULL before calling
23962         SetSourceInternal().
23964 2008-05-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23966         * clock.cpp, clock.h: Remove InvokeOnMainThread.
23967         * dependencyobject.cpp, dependencyobject.h: EventObject: added
23968           AddTickCall. Requred when adding ticks from other than the 
23969           main thread.
23970         * downloader.cpp: Send: use a TimeManager to add the timeout.
23971         * media.cpp, media.h, mplayer.h, mplayer.cpp: Don't use
23972           TimeManager::InvokeOnMainThread anymore, add the timeouts using a
23973           TimeManager instance.
23975 2008-05-12  Jeffrey Stedfast  <fejj@novell.com>
23977         * list.cpp (List::List): Init length to 0.
23978         (List::Clear): Reset length to 0.
23979         (List::Append): length++
23980         (List::Prepend): length++
23981         (List::Insert): length++
23982         (List::InsertBefore): length++
23983         (List::Unlink): length--
23984         (List::Length): Fixed to be O(0) instead of O(n)
23986         * stylus.cpp (StrokeCollection::HitTest): Use List::IsEmpty()
23987         instead of comparing List::Length() to 0.
23988         (Stroke::HitTest): Same.
23990 2008-05-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23992         * media.cpp: Set the MediaOpenedEmitted flag before emitting the event,
23993           prevents us from emitting the event again as a consequence of what
23994           any of the event handlers do.
23996 2008-05-12  Michael Dominic K.  <mdk@mdk.am>
23998         * animation.cpp:
23999         * dependencyobject.cpp: Fix a crash due to bad destroy recursion.
24001 2008-05-12  Michael Dominic K.  <mdk@mdk.am>
24003         * animation.cpp:
24004         * animation.h:
24005         * dependencyobject.cpp:
24006         * dependencyobject.h: Float the AnimationStorage only when it's the
24007         current storage.
24009 2008-05-12  Michael Dominic K.  <mdk@mdk.am>
24011         * animation.cpp:
24012         * animation.h: Introduce floating state for animation storage that has
24013         it's clock destroyed but it hasn't been stopped before. We need to keep the
24014         animation storage (reffed from the DependencyProperty hash) around to be
24015         able to get proper value for the next (continous) Storyboard on same
24016         property. Fixes #383879 and #375275.
24018 2008-05-09  Geoff Norton <gnorton@novell.com>
24020         * mplayer.cpp, pipeline.cpp, pipeline.h:  When iterating streams
24021         ensure that we select the stream with the highest available bit
24022         rate, opposed to the first stream that we come across.
24024 2008-05-09  Jeffrey Stedfast  <fejj@novell.com>
24026         * dependencyobject.cpp (DependencyObject::FindName): Don't need
24027         nested if/elses.
24029         * namescope.cpp (NameScope::FindName): Simplify.
24031 2008-05-08  Larry Ewing  <lewing@novell.com>
24033         * shape.cpp: silence some warnings.
24035 2008-05-08  Larry Ewing  <lewing@novell.com>
24037         * shape.h: remove ClipOnWidthAndHeight method, replace with
24038         needs_clip variable.
24039         
24040         * shape.cpp (Shape::ComputeStretchBounds): set needs_clip based on
24041         the actual size of the object before and after the stretch and the
24042         stretch flags.  
24044         Speeds up Sprawl and a lot of other applications that use stretch
24045         extensively.
24047 2008-05-08  Larry Ewing  <lewing@novell.com>
24049         * runtime.cpp (Surface::expose_to_drawable): fill the background
24050         instead of painting and don't create the clip until the rendering
24052 2008-05-08  Miguel de Icaza  <miguel@novell.com>
24054         * xaml.cpp (xaml_hydrate_from_str): New method to hydrate an
24055         existing DependencyObject with the contents of a XAML string.  
24057         Needed for Silverlight 2.0 support, for the new model:
24058         create object then do LoadComponent on it.
24060 2008-05-08  Sebastien Pouliot  <sebastien@ximian.com>
24062         * xaml.cpp: RepeatBehavior does not use the (documented) 0:0:0
24063         notation.
24065 2008-05-07  Jeffrey Stedfast  <fejj@novell.com>
24067         * font.cpp: Removed old layout code.
24068         (TextFont::GetGlyphInfo): Updated to use some handy Fixed->Double
24069         conversion macros to make understanding the code easier. Also,
24070         added FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH bit flag to fix layout
24071         of broken fixed-width CJK fonts.
24073         * clock.cpp (TimeManager::Stop): Added for convenience.
24074         (SystemTimeSource::SystemTimeSource): Init frequency to -1 so we
24075         can make sure it is init'd properly via SetTimerFrequency() before
24076         Start()ing.
24078         * runtime.cpp (Surface::Attach): Call our time_manager's Start(),
24079         not it's source's Start(). We need things like frequency to be
24080         setup and other values to be initialized properly.
24081         (Surface::Attach): After calling canvas->OnLoaded(), check that we
24082         are not zombied - if we are, return.
24084 2008-05-07  Larry Ewing  <lewing@novell.com>
24086         * runtime.cpp (Surface::Zombify): call Attach (NULL) to notify the
24087         objects that the surface is undead.
24089 2008-05-06  Jeffrey Stedfast  <fejj@novell.com>
24091         * animation.cpp (animation_shutdown): Renamed from
24092         animation_destroy().
24094         * text.cpp (text_shutdown): Renamed from text_destroy().
24096         * clock.cpp: Don't include gtk.h for just gtk_timeout_add(),
24097         include glib.h and use g_timeout_add() instead.
24098         (SystemTimeSource::SystemTimeSource): Init the timeout_id to 0,
24099         not -1 (the timeout ids are uint, not int).
24100         (SystemTimeSource::SetTimerFrequency): Updated.
24101         (SystemTimeSource::Start): Updated.
24102         (SystemTimeSource::Stop): Updated.
24104         * list.cpp (List::Remove): Don't need to search for the node, we
24105         already have a pointer to it.
24107 2008-05-07  Larry Ewing  <lewing@novell.com>
24109         * runtime.cpp (Surface::Resize): handle a resize in windowless mode
24110         gracefully.
24112         Fixes part of windowless resizing.
24113         
24114 2008-05-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24116         * media.cpp: Handle the rtsp protocol too.
24117         * playlist.cpp, playlist.h: Store base and source_name as Uris.
24118           Implement GetFullSourceName better, and do some uri validation.
24119         * uri.h, uri.cpp: Added a allow_trailing_sep flag to Uri::Parse,
24120           disables canonicalization of trailing directory separators since
24121           asx playlists may treat urls differently depending on the presence
24122           or absence of any trailing directory separators. Added Clone ().
24124 2008-05-06  Michael Dominic K.  <mdk@mdk.am>
24126         * animation.cpp:
24127         * animation.h: When attaching new animation storage and previous storage
24128         exist, flag it as non-resetable (meaning that the storage will never
24129         reset animated property to base/stop value). This fixes the
24130         storyboard-stopping-two.html test.
24132 2008-05-06  Michael Dominic K.  <mdk@mdk.am>
24134         * dependencyobject.cpp:
24135         * dependencyobject.h: DependencyProperty::AttachAnimationStorage now
24136         returns the previously attached AnimationStorage.
24138         * animation.cpp:
24139         * animation.h: When attaching new animation storage try to inherit the
24140         resetValue from the previously attached storage. Reset value is the
24141         value that we reset to when storyboard is stopped (originally it always
24142         used to be the base value of the current AnimationStorage). 
24144         This replicates the bahavior of SL where starting a new (second)
24145         storyboard on a property renders the prev storyboard useless
24146         (non updating the prop) but keeps it's "starting value" for storyboard
24147         reset. In other words we can say that starting a new storyboard on a
24148         prop makes this new storyboard a "continuation" of the prev storyboard.
24150 2008-05-05  Larry Ewing  <lewing@novell.com>
24152         * runtime.cpp (Surface::render_cb): only call ForceRender if we
24153         dirtied something.
24155 2008-05-05  Larry Ewing  <lewing@novell.com>
24157         * runtime.cpp: update the (almost unused) frame count where it can
24158         get hit in windowless.  Clear existing paths before rendering the
24159         expose box.
24161         Minor cleanups to help with debugging the expose regions.
24163 2008-05-05  Jeffrey Stedfast  <fejj@novell.com>
24165         * clock.cpp (TimeManager::Shutdown): Renamed from
24166         TimeManager::Stop() and also updated to remove all registered
24167         timeouts.
24169         * runtime.cpp (Surface): We no longer keep track of signal ids, we
24170         simply remove all signals on the widgets with 'this' as the user
24171         data.
24173         * clock.cpp (TimeManager::Stop): Added. New method to stop the
24174         time manager.
24176         * runtime.cpp (Surface::Zombify): Stop the time manager, prevents
24177         emission of timeout events.
24179 2008-05-05  Michael Dominic K.  <mdk@mdk.am>
24181         * src/shape.cpp: Reverting sde's stretch thing for now, breaks a lot of
24182         other stuff.
24184 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24186         * media.cpp, media.h, playlist.cpp, playlist.h: MediaElement: when
24187           playing playlists, we only emit MediaEnded if we're playing the
24188           last entry in the playlist. Call Playlist::OnEntryEnded manually
24189           instead of letting the playlist rely on the MediaEnded event, since
24190           the MediaEnded event isn't raised for all entries. Playlist: Added
24191           IsCurrentEntryLastEntry.
24193 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24195         * media.cpp: MediaElement::UpdateProgress: Don't call BufferingComplete
24196           until the pipeline got all the data it was waiting for.
24198 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24200         * media.cpp, media.h: Add an EmitMediaOpened method and emit
24201           MediaOpened somewhat more aggressively, but only once.
24203 2008-05-05  Jeffrey Stedfast  <fejj@novell.com>
24205         * text.cpp (Glyphs::GetSizeForBrush): Use this->width and
24206         this->height for the brush size - fixes TextTransforms.xaml once
24207         again.
24209 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24211         * media.cpp: Don't emit any BufferingProgressChanged events in
24212           OnPropertyChanged.
24214 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24216         * pipeline-ffmpeg.cpp: Give more information to ffmpeg, otherwise
24217           ffmpeg won't decode any wma audio.
24219 2008-05-05  Stephane Delcroix  <sdelcroix@novell.com>
24221         * shape.cpp: draw the line caps with the stretch_transform matrix.
24222         Finetune the stretch computation again.
24224 2008-05-05  Miguel de Icaza  <miguel@novell.com>
24226         * src/control.cpp: Add a skeleton UserControl, to get a bit
24227         further on the loading of a Silverlight 2 application. 
24229         See the TODO, there are still many limitations.
24231 2008-05-04  Larry Ewing  <lewing@novell.com>
24233         * runtime.cpp: restrict invalidations to the active windowless
24234         bounds.
24236         Fixes massive drawing issues on http://my.liveatedu.com/ where
24237         were creating invalidations with a negative coords.
24239 2008-05-04  Miguel de Icaza  <miguel@novell.com>
24241         * xap.cpp: Expose xap_unpack, include when Mono runtime is
24242         included. 
24244         * deployment.cpp: Small fixups.
24246         * xaml.cpp (deploy_namespace): New namespace used to parse
24247         AppManifest.xaml files that start with a <Deployment> tag on the
24248         http://schemas.microsoft.com/client/2007/deployment namespace. 
24249         
24250         (xaml_init): Register the deployment classes.
24252         * type.cpp (type_is_dependency_object): Add new helper method
24253         to determine if a Kind is a DEPENDENCYOBJECT, the list is no
24254         longer separated in value-types and DependencyObjects, so its not
24255         possible to do a fast lookup from managed code. 
24257 2008-05-04  Chris Toshok  <toshok@ximian.com>
24259         [ fixes #361906, while simultaneously keeping halo3,
24260         ControlLife.htm, and ControlState.htm happy ]
24261         
24262         * runtime.h, runtime.cpp, type-generated.cpp: move back to the
24263         LoadEvent instead of the broken Attaching event, reverting
24264         r102288.
24266         * panel.h, panel.cpp: add a "emitting_loaded" guard around the
24267         body of OnLoaded so we don't end up re-entering this method.
24268         Also, revert r102196 as the ordering of parent-to-child was
24269         correct originally, there were just other ordering constraints we
24270         weren't handling.
24272         * control.h, control.cpp: same.
24274         * dependencyobject.h, dependencyobject.cpp: add a count field to
24275         EventClosure so we can support the "only_unemitted" arg in
24276         EventObject::Emit.  The idea is that the Loaded event seems to
24277         only be emitted on those events that haven't yet been emitted.
24278         This may also be implemented just by making Loaded event handlers
24279         one-shot (removing themselves after they fire), but this is easy
24280         enough and works.  The only event with this odd behavior (that I
24281         know of) is Loaded.
24283         * uielement.cpp (UIElement::OnLoaded): set the IS_LOADED
24284         flag (which may actually be useless now, given the Emit change)
24285         but don't emit Loaded only when the flag is unset.
24287         * collection.cpp: remove the last bit of closure access from
24288         VisualCollection.  The OnLoaded call now happens in
24289         Panel::OnCollectionChanged, in 1 spot as opposed to 3 different
24290         spots in VisualCollection.
24292 2008-05-02  Sebastien Pouliot  <sebastien@ximian.com>
24294         * text.cpp|h: Adjust Glyphs::InsideObject with bounds changes.
24295         [Complete the fix for #383870]
24297 2008-05-02  Jeffrey Stedfast  <fejj@novell.com>
24299         * text.cpp (Glyphs::Layout): Take negative vOffset attr's for
24300         glyphs into account when calculating extents. Fix usage of OriginX
24301         and OriginY as far as extents goes.
24302         (Glyphs::GetOriginPoint): Don't leak the TextFont.
24303         (Glyphs::GetTransformOrigin): Always use 0.0,0.0 as the
24304         RenderTransformOrigin, Microsoft's implementation for Glyphs
24305         doesn't seem to take into account the width/height of the bounding
24306         box.
24307         (Glyphs::Layout): Use OriginX,OriginY as the bounding box origin
24308         rather than MIN (OriginX, 0), Min (OriginY, 0)
24310 2008-05-02  Sebastien Pouliot  <sebastien@ximian.com>
24312         * text.cpp|h: Add Glyphs::InsideObject so Mouse events will work.
24313         [Partial fix for #383870, bounds are not always correct]
24315 2008-05-02  Jeffrey Stedfast  <fejj@novell.com>
24317         * text.cpp (Glyphs::Render): Cache the glyph string in a moon-path
24318         rather than copying it from the cairo context for the same reason
24319         we did this for TextBlock segment path caching.
24321 2008-05-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24323         * playlist.h, playlist.cpp: Implemented ClientSkip.
24324         * media.cpp: Handle playlists entry with ClientSkip set correctly.
24326 2008-05-02  Michael Dominic K.  <mdk@mdk.am>
24328         * animation.cpp:
24329         * animation.h: For the KeySpline: getting rid of the ugly lookup-table
24330         with x -> y values and instead using a two-way curve approximation
24331         methodology for calculating the Spline progress. This is not 100% accurate
24332         (same as original bezier) for fine-grained values but removes all the
24333         precision problems and greatly improves the quality for long KeySpline
24334         animations (no more jags). 
24336 2008-05-01  Larry Ewing  <lewing@novell.com>
24338         * uielement.cpp (UIElement::OnPropertyChanged): go ahead and
24339         invalidate here as changes in the upstream opacity could make us
24340         unable to invalidate later.
24342         Fixes invalidation of last hex in a sprawl run.
24344 2008-05-01  Larry Ewing  <lewing@novell.com>
24346         * runtime.cpp: Fix a bunch of rendering bugs in windowless mode.
24347         Previously there were no time manager handlers listening to events
24348         in windowless mode so we were missing expose events.  Make all
24349         invalidations go throw Invalidate so that they get picked up in
24350         windowless.  Take into account that exposes go to a full size
24351         window in windowless mode so we don't need to subtract the device
24352         offsets.
24354         Fixes most of the issues with
24355         http://silverlight.r2musings.com/weatherwidget/default.aspx and
24356         fixes the harness failure on ZIndex.htm.
24357         
24358 2008-05-01  Chris Toshok  <toshok@ximian.com>
24360         * runtime.h, runtime.cpp: remove the LoadEvent and instead add an
24361         AttachingEvent, which is emitted after the toplevel control is set
24362         on the surface, but before UIElement::LoadedEvent is emitted on
24363         it.  Used by the plugin for hooking up the plugin onLoad handler.
24365 2008-05-01  Jeffrey Stedfast  <fejj@novell.com>
24367         * layout.cpp (RenderLine): Instead of grabbing the cairo_path_t
24368         from the cairo_t after pathing out all of the glyphs for a segment
24369         of text, keep our own moon_path for caching. Apparently the path
24370         gotten from cairo_copy_path() has whatever transforms are on the
24371         context pre-applied which is the cause for the breakage in bug
24372         #375279.
24374         * font.cpp (TextFont::AppendPath): New method to append a glyph's
24375         path to a moon_path for caching purposes.
24377 2008-04-30  Fernando Herrera  <fherrera@novell.com>
24379         * media.cpp: at MediaElement::DownloaderFailed if the uri was a mms://
24380         stream, fallback to http:// uri
24382 2008-04-30  Michael Dominic K.  <mdk@mdk.am>
24384         * panel.cpp:
24385         * panel.h: Adding the panel_add_child helper method used by the ancient
24386         demo. It actually makes sense.
24388 2008-04-30  Michael Dominic K.  <mdk@mdk.am>
24390         * Makefile.am:
24391         * collection.h:
24392         * text.cpp:
24393         * xaml.cpp: Include the utils.h locally in .cpp file and remove it from
24394         the install. This way we don't need to bundle the zip includes.
24396 2008-04-30  Stephane Delcroix  <sdelcroix@novell.com>
24398         * shape.cpp: calc_line_bounds: compute the start|end caps in the
24399         bounds.
24401 2008-04-30  Sebastien Pouliot  <sebastien@ximian.com>
24403         * panel.cpp: Emit Loaded on Canvas before it's child.
24404         [Fix part #361906 - i.e. back to original issue]
24406 2008-04-30  Fernando Herrera  <fherrera@novell.com>
24408         * downloader.cpp:
24409         * downloader.h: export downloader_get_downloaded_file without the
24410         partName.
24412 2008-04-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24414         * pipeline.cpp: Mp3FrameReader/Demuxer: Calculate frame duration
24415           correctly, and calculate file duration as MS seems to be doing it.
24416           SkipFrame: when seeking don't take into account the size of the
24417           mpeg header, since we only peaked it. 
24419 2008-04-29  Michael Dominic K.  <mdk@mdk.am>
24421         * shape.cpp: Clipping is not taken into account with cairo_in_*
24422         functions therefore do the hit-test in two steps -- first check if
24423         within clipping bounds and then check if within shape bounds. Fixes
24424         #383894 and test-shape-cursor-clipping.xaml test. 
24426 2008-04-28  Chris Toshok  <toshok@ximian.com>
24428         * runtime.cpp (Surface::Attach): emit the canvas's Loaded event
24429         before we emit our own Load event (and trigger the plugin's onLoad
24430         handler).
24432 2008-04-28  Chris Toshok  <toshok@ximian.com>
24434         * runtime.cpp (Surface::Attach): always emit Resize on Attach.
24435         fixes ControlState.htm.
24437 2008-04-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24439         * typegen/typegen.cs: Minor fix to support C constructors immediately
24440           prepended with *.
24441         * type-generated.cpp: Regenerated (includes a lot more C constructors
24442           now).
24444 2008-04-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24446         * geometry.h: Include glib.h before using glib macros.
24448 2008-04-28  Michael Dominic K.  <mdk@mdk.am>
24450         * xaml.cpp: Silently skip the attributes that are empty instead of
24451         throwing an error. Fixes the test-parser-empty-property.xaml and
24452         #383904.
24454 2008-04-28  Michael Dominic K.  <mdk@mdk.am>
24456         * brush.cpp: Make sure to use proper width for image stretching params.
24457         Fixes the image-brush-stretch-set.html and bug #383938.
24459 2008-04-25  Jeffrey Stedfast  <fejj@novell.com>
24461         * shape.cpp: Added property accessors.
24463 2008-04-25  Chris Toshok  <toshok@ximian.com>
24465         * type-generated.cpp: add the Surface Loaded event.
24467         * runtime.cpp (Surface::widget_destroyed): null out s->widget if
24468         it matches too.  no more dangling pointers.
24470         * runtime.h, runtime.cpp: give the Surface class a Load
24471         event (used to run the JS OnLoad event in the plugin) and an
24472         IsLoaded accessor.
24474         * xaml.cpp (dependency_object_hookup_event): raise a parser error
24475         if an event is specified with a javascript: prefix.
24476         
24477 2008-04-25  Larry Ewing  <lewing@novell.com>
24479         * stylus.cpp (InkPresenter::OnCollectionChanged): wrap the stroke
24480         changed logic inside a type check.
24482 2008-04-25  Jeffrey Stedfast  <fejj@novell.com>
24484         * xaml.cpp (geometry_from_str): Use the new gemoetry property
24485         accessor methods.
24487         * geometry.cpp: Added property accessor methods
24489 2008-04-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24491         * media.cpp: Always emit DownloadProgressEvents, even if we're
24492           buffering.
24494 2008-04-25  Stephane Delcroix  <sdelcroix@novell.com>
24496         * stylus.cpp: InkPresenter::OnCollectionChanged: call the parent 
24497         method, so the Canvas.Top, Canvas.Left properties are read. Fixes
24498         inkJournal.
24500 2008-04-25  Geoff Norton  <gnorton@novell.com>
24502         * pipeline-ffmpeg.cpp, pipeline-ffmpeg.h:  Support using ffmpeg's
24503         new libavcodec/avcodec.h
24505 2008-04-25  Jeffrey Stedfast  <fejj@novell.com>
24507         * runtime.cpp (runtime_init): No longer need to call
24508         assembly_part_init().
24510         * deployment.cpp (assembly_part_init): Moved into
24511         deployment_init().
24513         * deployment.h: Added missing virtual dtors.
24515         * collection.cpp (Collection::GetCount): Added.
24517 2008-04-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24519         * media.cpp: Set DownloadProgress to 0 when media fails to load.
24521 2008-04-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24523         * media.cpp: MediaElement::CheckMarkers: if the marker is from a live
24524           stream, emit it even if we missed it by up to 0.1 s. Refactored
24525           parts of UpdateProgress into GetBufferedSize. Emit MediaOpened only
24526           after we've either started playing or finished buffering. Emit
24527           MediaFailed/InvalidFileFormat if we failed to initialize the media.
24528           Reinitialize the media synchronously in SetSource.
24529         * media.h: Added
24531 2008-04-25  Michael Dominic K.  <mdk@mdk.am>
24533         * runtime.cpp:
24534         * uielement.cpp:
24535         * uielement.h: Also include the IsHitTestVisible status when checking
24536         our input_list after handling the mouse event. This fixes the
24537         mouse-enter-leave-hit-test-visibility.html test.
24539 2008-04-25  Stephane Delcroix  <sdelcroix@novell.com>
24541         * runtime.cpp: move the hotspot for the eraser, Fixes bnc 375213.
24543 2008-04-24  Jeffrey Stedfast  <fejj@novell.com>
24545         * clock.cpp: Added property accessor methods for TimelineMarker
24546         and added c-bindings.
24548         * downloader.cpp: Same.
24550         * media.cpp: Added property accessors so that it isn't
24551         necessary to use long-winded c-function names to get property
24552         values. Also made all c-wrappers call the c++ property accessor
24553         methods.
24555 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24557         * mplayer.cpp: When a video-only media reaches its end, set target_pts
24558           to the last rendered pts, since that's what is reported as our
24559           current position.
24561 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24563         * mplayer.cpp: When a video-only media reaches its end, set target_pts
24564           to the last rendered pts, since that's what is reported as our
24565           current position.
24567 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
24569         * runtime.cpp:
24570         * uielement.cpp:
24571         * uielement.h: Renaming UIElement::GetActualRenderVisibility to
24572         UIElement::GetActualTotalRenderVisibility for better name matching.
24574 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
24576         * runtime.cpp: Another perf fix for the fix -- make it a corner case
24577         when the new_input_list needs to be copied. In most cases we can just
24578         reuse it. 
24580 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
24582         * runtime.cpp:
24583         * uielement.cpp:
24584         * uielement.h: Ooops, so my prev fix was correct but *totally* dumb from
24585         the perf/sanity point of view. Here goes a better refactor.
24587         Adding UIElement::GetActualRenderVisibility which returns the visibility
24588         (like UIElement::ComputeTotalRenderVisibility) without setting the
24589         flags.
24591 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
24593         * runtime.cpp: After emitting the events make sure to update our
24594         input_list since it can be changed -- as a result of somebody ie.
24595         changing element's visibility in the enter/leave callback. Fixes the
24596         #375220 (Microsoft downloads index chars).
24598 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
24600         * animation.cpp: Do a slightly more precise generation of key-spline
24601         tables. Improves smoothness ie. in test-animation-slow-keyspline.xaml.
24603 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24605         * media.cpp, media.h: MediaElement: add a handler for DownloaderFailed
24606           and raise MediaFailed.
24608 2008-04-24  Stephane Delcroix  <sdelcroix@novell.com>
24610         * geometry.h:
24611         * geometry.cpp:
24612         * shape.cpp:
24613         * shape.h: override some Compute[Shape]Bounds method to pass a matrix
24614         argument. Allows measuration of transformed Pathes and a 2nd pass to 
24615         refines the guesses we're doing for Stretches.
24617 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24619         * src.mdp: Updated.
24621 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24623         * media.cpp, pipeline.cpp, pipeline.h: Addded
24624           ProgressiveSource::NotifyFinished to notify that the download has
24625           finished. This is required for streaming downloads which download 0
24626           bytes, otherwise the pipeline will hang waiting for data.
24628 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24630         * collection.cpp, collection.h: TimelineMarkerCollection needs to be
24631           sorted at all times, added a virtual Collection::AddToList method
24632           which appends the item to the list (and overriden by
24633           TimelineMarkerCollection to add it in the correct position to keep
24634           the collection ordered).
24636 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24638         * clock.cpp, clock.h: Added property accessors to TimelineMarker.
24640 2008-04-23  Jeffrey Stedfast  <fejj@novell.com>
24642         * panel.cpp: Add property accessors and added c-bindings.
24644 2008-04-23  Geoff Norton  <gnorton@novell.com>
24646         * Makefile.am: Fix make dist when building with ffmpeg.
24648 2008-04-23  Jeffrey Stedfast  <fejj@novell.com>
24650         * frameworkelement.cpp: Added property accessors so that it isn't
24651         necessary to use long-winded c-function names to get property
24652         values. Also made all c-wrappers call the c++ property accessor
24653         methods.
24655         * text.cpp: Added property accessors to all text classes so that
24656         it isn't necessary to use long-winded c-function names to get
24657         property values. Also made all c-wrappers call the c++ property
24658         accessor methods.
24659         (TextBlock::LayoutSilverlight): Removed, logic moved into
24660         ::Layout().
24662         * animation.h: Make sure all c-API _new() functions take void as
24663         argument.
24665         * uielement.cpp: Added some property accessors.
24667         * text.cpp: Use the new SolidColorBrush ctor.
24669         * brush.cpp: Added property accessors to all brush classes so that
24670         it isn't encessary to use long-winded c-function names to get
24671         property values. Also made all c-wrappers call the c++ property
24672         accessor methods.
24673         (SolidColorBrush::SolidColorBrush): New .ctor to make life
24674         simpler.
24676 2008-04-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24678         * mplayer.cpp: AudioPlayer: prevent calling SetTargetPts on the
24679           MediaPlayer with a negative pts.
24681 2008-04-23  Geoff Norton  <gnorton@novell.com>
24683         * libmoon.h: Drop mango.h
24684         
24685 2008-04-23  Geoff Norton  <gnorton@novell.com>
24687         * runtime.cpp: Remove pango support.
24688         
24689 2008-04-23  Geoff Norton  <gnorton@novell.com>
24691         * Makefile.h, text.cpp, text.h, mango.cpp, mango.h:  Remove pango 
24692         support.
24693         
24694 2008-04-23  Geoff Norton  <gnorton@novell.com>
24696         * swscale-converter.cpp, pipeline-ffmpeg.cpp, Makefile.am: Only
24697         include swscale and ffmpeg cpp files in the build if their configure
24698         flags are set.
24699         
24700 2008-04-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24702         * type.cpp: When looking for types use case-insensitive type
24703           comparison. Fixes #375230 and #375231.
24705 2008-04-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24707         * pipeline.cpp, pipeline.h: MediaClosure: add SetContextUnsafe which
24708           don't take a ref to the context, and add a context_refcounted field
24709           to keep track of refcounting. This is required for long-living
24710           closures which would otherwise cause circular references. Add and
24711           implemetn a ASFMarkerDecoderInfo class, and implement notification
24712           of found markers back to listeners.
24713         * src.mdp: Updated.
24714         * downloader.cpp, downloader.h: Downloader: Add a streaming_features
24715           field, so that the plugin can return information about mms streams.
24716         * http-streaming.cpp, http-streaming.h: Added
24717           parse_http_streaming_features.
24718         * mplayer.h: Add property accessors for CanSeek and CanPause, and
24719           implement them. Select any marker streams.
24720         * media.h, media.cpp: MediaElement: store the marker closure in the
24721           instance, so that we can delete it upon destruction. Read the
24722           streaming features from the downloader in order to set
24723           CanSeek/CanPause properly. TryOpen: if we don't have a filename,
24724           but we do have a downloaded file, use the downloaded file as the
24725           source (might happen if streaming stops before TryOpen is called).
24726         * mplayer.cpp: Add property accessors for CanSeek and CanPause, and
24727           implement them. Select any marker streams. Don't check if we can
24728           pause in Pause (), since MediaElement implements Buffering calling
24729           Pause on us. MediaElement is already checking if media can be
24730           paused or not.
24731         * Makefile.am: Added http-streaming.h|cpp.
24733 2008-04-22  Stephane Delcroix  <sdelcroix@novell.com>
24735         * rect.h: overrides for Union and IsEmpty to take a logical bool,
24736         allowing logical bounds computation.
24737         * geometry.cpp: use the overrided Union () in Computebounds
24738         * shape.cpp: This is the stretches' Holy Grail !
24740 2008-04-22  Jeffrey Stedfast  <fejj@novell.com>
24742         * eventargs.cpp (MouseEventArgs::GetStylusPoints): Make sure
24743         event->device non-NULL.
24745 2008-04-22  Larry Ewing  <lewing@novell.com>
24747         * playlist.h: remove expat references from public symbols.
24748         * playlist.cpp: Wrap XML_Parser in simple class to hide the symbol
24749         from the plublic headers.
24751         Start cleaning things up for ff3.
24753 2008-04-22  Chris Toshok  <toshok@ximian.com>
24755         * runtime.h, runtime.cpp: add Zombify() which sets the zombie
24756         flag.  basically this allows us to unwind gracefully from an event
24757         that has caused the surface to be destroyed.  when the flag is
24758         set, we basically stop emitting UI events that we're in the
24759         process of emitting.
24760         (Surface::widget_destroyed) simplify this, and zero out the
24761         widgets here so we don't destroy them again in ~Surface().
24762         
24763         * dependencyobject.h, dependencyobject.cpp: make unref_delayed
24764         public again, and don't warn about calling it on the main thread.
24765         we need it in the plugin.
24767 2008-04-22  Jeffrey Stedfast  <fejj@novell.com>
24769         * shape.cpp (Shape::DoDraw): Cast extents to int for
24770         AddToCacheSizeCounter().
24771         (Shape::IsCandidateForCaching): Same for
24772         VerifyWithCacheSizeCounter().
24774 2008-04-22  Michael Dominic K.  <mdk@mdk.am>
24776         * animation.cpp: Safely allow now the KeyTime property to be nullable.
24777         Fixes the Animation_NegativeTst.htm test.
24779 2008-04-22  Michael Dominic K.  <mdk@mdk.am>
24781         * animation.cpp:
24782         * animation.h: Making the Storyboard::Begin return bool (true if
24783         storyboard started correctly, false otherwise).
24785 2008-04-22  Michael Dominic K.  <mdk@mdk.am>
24787         * animation.cpp:
24788         * animation.h:
24789         * clock.cpp:
24790         * clock.h: Adding a 'bool Validate ()' virtual to Timeline which is used
24791         to validate the Timeline before starting it. Timelines are always valid
24792         by default except for KeyFrame-based animations where we perform a
24793         check on the keyframes. 
24795         Storyboard doesn't start if any of it's timelines are not valid. This
24796         fixes the test-animation-invalid-keyframe-keytime.xaml test.
24798 2008-04-22  Michael Dominic K.  <mdk@mdk.am>
24800         * animation.cpp: Don't initialize the KeyTime for KeyFrame to a default
24801         value, make it be NULL by default. This currently causes a segfault in
24802         the just-added test-animation-invalid-keyframe-keytime.xaml which is
24803         fine.
24805 2008-04-22  Fernando Herrera  <fherrera@novell.com>
24807         * pipeline.h:
24808         * pipeline.cpp: set the new read position after Seeking to pts.
24809         Added ProgressiveSource::SeekInternal that refuses to Seek to a
24810         non-filled position.
24812 2008-04-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24814         * dependencyobject.cpp, dependencyobject.h: Added another SetValue
24815           overload, to enable calling all SetValues with stack objects.
24816         * xaml.cpp: Fix a Value leak.
24818 2008-04-21  Jeffrey Stedfast  <fejj@novell.com>
24820         Fixes a double-destroy bug in FullScreen.htm
24822         * runtime.cpp (Surface::Surface): Initialize normal_widget - never
24823         let it be NULL unless we are in windowless mode.
24824         (Surface::.dtor): Don't call DestroyWidget on 'widget', call it on
24825         'widget_normal' instead, this way we can't accidently destroy the
24826         fullscreen widget twice (e.g. if we are in fullscreen mode).
24827         (Surface::ConnectEvents): Record the unrealize signal id so that
24828         we can later disconnect from it.
24829         (Surface::DestroyWidget): Now takes a SignalIds argument so that
24830         we can disconnect from unrealize/destroy signals which may fire in
24831         response to destroying the widget.
24832         (Surface::InitializeWidget): Now takes a SignalIds argument so
24833         that we can save the destroy signal id.
24835 2008-04-21  Geoff Norton  <gnorton@novell.com>
24837         * runtime.cpp: Guard against freeing a list in a sub-event
24838         loop when crossings are invoked.  Fixes bug#378902
24839         
24840 2008-04-20  Miguel de Icaza  <miguel@roxanne.site>
24842         * deployment.cpp: new dependency property objects for the
24843         Deployment class.
24845         * xap.cpp: XAP loader, unpacks and instantiates deployment, but
24846         does not load assemblies in VM.  Not sure if this should be done
24847         here (and add a VM dependency) or in the plugin and later as well
24848         on mopen.
24850         * runtime.cpp: Deployment initialization.
24852         * downloader.cpp Moved some code from here into utils.cpp: Expose
24853         CreateTempDir instead of MakeTempDir that takes care of creating
24854         the directory with a unique signature.
24856 2008-04-21  Geoff Norton  <gnorton@novell.com>
24858         * yuv-converter.cpp: Emit a warning on unaliged memory and fall back
24859         to the C implementation.
24861 2008-04-18  Larry Ewing  <lewing@novell.com>
24863         * dirty.cpp (Surface::ProcessDownDirtyElements): When visibility
24864         changes invalidate our parents bounds to notify them that their
24865         subtree may have changed.
24867         Fixes the status boxes on MouseInput.htm
24869 2008-04-18  Jeffrey Stedfast  <fejj@novell.com>
24871         * runtime.cpp (Surface::ConnectEvents): Connect to focus-in-event
24872         and focus-out-event.
24873         (Surface::focus_in_callback): If we have a toplevel canvas, emit a
24874         GotFocus event on it.
24875         (Surface::focus_out_callback): If we have a toplevel canvas, emit
24876         a LostFocus event on it.
24877         (Surface::Attach): If our widget has focus, emit GotFocus event on
24878         our canvas right after we emit the Loaded event.
24880         * uielement.cpp (UIElement::EmitGotFocus): New method.
24881         (UIElement::EmitLostFocus): New method.
24883 2008-04-18  Geoff Norton  <gnorton@novell.com>
24885         * yuv-converter.cpp:  It seems that ffmpeg will occasionally
24886         over-pad the YUV buffers with a SIMD aligned amount (see
24887         timecode-*.wmv)
24888         
24889 2008-04-18  Michael Dominic K.  <mdk@mdk.am>
24891         * animation.cpp: Make sure we always return targetValue when
24892         progress >= 1.0 for Spline*KeyFrame's.
24894         This fixes the clock36.xaml test and PopFly bug of "line dirt
24895         leftovers" when collapsing block list or tutorial list.
24897 2008-04-17  Larry Ewing  <lewing@novell.com>
24899         * xaml.cpp (xaml_init): register MouseEventArgs as a dependency object.
24901 2008-04-17  Larry Ewing  <lewing@novell.com>
24903         * src/eventargs.cpp:
24904         * src/eventargs.h: 
24905         * src/type-generated.cpp:
24906         * src/value.h: add a default ctor for MouseEventArgs.
24908 2008-04-17  Larry Ewing  <lewing@novell.com>
24910         * typegen/typegen.cs: don't require an svn repo for proper
24911         functioning, try to make the error messages functional still.
24913 2008-04-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24915         * media.cpp: MediaElement::MediaOpened: Advance state to Buffering
24916           before trying to play/pause, otherwise nothing will happen (if
24917           coming from the Opening state). Fix printf.
24919 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24921         * dependencyobject.cpp, dependencyobject.h: Add an always_change flag
24922           for DependencyProperty, if a property has this flag, it will always
24923           be changed, even if the new value is the same as the old value.
24924           DependencyObject::SetValue: honor the new always_change flag.
24925         * media.cpp: Set the always_change flag to true for
24926           MediaBase::SourceProperty.
24928 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24930         * media.cpp: MediaElement: Move the Play/Pause/AutoPlay logic to
24931           MediaOpened, so that it also happens when TryLoadFinished opens the
24932           media. Fixes media not starting to play when the media was
24933           downloaded between the moment we tried to open it and it was
24934           successfully opened.
24936 2008-04-17  Jeffrey Stedfast  <fejj@novell.com>
24938         * color.cpp (color_from_str): Handle uint32 color values that are
24939         not hex.
24941 2008-04-17  Larry Ewing  <lewing@novell.com>
24943         * dependencyobject.cpp (DependencyProperty::DependencyProperty):
24944         initialize is_nullable.
24946         Fixes random failure of ParserErrors.htm.
24948 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24950         * media.cpp: MediaElement::TryOpen: always unref the FileSource we
24951           create when we're done with it.
24953 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24955         * dependencyobject.cpp, dependencyobject.h: EventObject: we need to
24956           remember how many events the current type has, since in our
24957           destructor we can't get that information anymore. Add a new
24958           EventLists class which does the book-keeping.
24960 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24962         * media.cpp: MediaElement::Reinitialize: don't call SetValue if we're
24963           in the destructor. MediaElement::SetMedia: call ComputeBounds at
24964           the end. Fixes xaml/test-canvas-no-size.html
24966 2008-04-17  Michael Dominic K.  <mdk@mdk.am>
24968         * animation.cpp: It turns out that KeyFrames doesn't have default Value
24969         of NULL but rather 0/Black/etc.  
24971         This fixes the the test-animation-null-defaults-*.xaml tests and the bug
24972         in PopFly where clicking the block list collapser wouldn't do anything
24973         (it collapses now properly like the tutorial right pane). 
24975 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24976         
24977         * src.mdp: Updated.
24979 2008-04-16  Larry Ewing  <lewing@novell.com>
24981         * type.cpp: avoid an infinite recursion in LookupEvent.
24983         Fixes a crash in RuntimeErrors.htm.
24985 2008-04-16  Larry Ewing  <lewing@novell.com>
24987         * shape.cpp (Shape::ComputeStretchBounds): get another test working.
24989 2008-04-16  Larry Ewing  <lewing@novell.com>
24991         * shape.cpp (Shape::ComputeStretchBounds): an incomplete fix to
24992         try to resolve the regression in stretch that had crept in.  Still
24993         working on a more complete patch.
24995 2008-04-16  Larry Ewing  <lewing@novell.com>
24997         * geometry.cpp (RectangleGeometry::ComputeBounds): rectangles have
24998         a logical size.
25000 2008-04-16  Jeffrey Stedfast  <fejj@novell.com>
25002         * dependencyobject.cpp (free_value): value argument may be NULL.
25004 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25006         * dependencyobject.cpp: DependencyObject: Emit DestroyedEvent before
25007           decreasing refcount, so that ref in event emission doesn't abort.
25008           Reenable ref/unref in event emission.
25010 2008-04-16  Jeffrey Stedfast  <fejj@novell.com>
25012         * dependencyobject.cpp (set_surface): value argument can be NULL.
25013         (DependencyObject::IsValueValid): Fixed compile warnings.
25015         * downloader.cpp: Properly set/reset Status and StatusText
25016         properties.
25017         (Downloader::Open): Properly reinitialize all state.
25018         (Downloader::Write): Clamp progress to 1.0 (altho it should never
25019         go above, especially not that I've fixed resetting 'total' state).
25021         * enums.c (initialize_enums): Don't cast arrays using
25022         GINT_TO_POINTER(), doesn't make any sense.
25024 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25026         * collection.cpp: Collection::EmitChanged: don't create a
25027           ChangeEventArgs if we don't need one, and unref it when we're
25028           finished with it.
25030 2008-04-16  Michael Dominic K.  <mdk@mdk.am>
25032         * clock.cpp: Add protection against division by 0.
25034 2008-04-16  Michael Dominic K.  <mdk@mdk.am>
25036         * animation.cpp:
25037         * animation.h: Don't detach the ClockGroup from parent on the Completed
25038         event. This is now finally no longer needed. While keeping the
25039         clockgroup means little perf difference it makes the whole thing much
25040         more simple to read (there is just one place that explains why Filling
25041         groups are no longer processed after Completed).
25043 2008-04-16  Larry Ewing  <lewing@novell.com>
25045         * shape.cpp: tweak the origin tweak again.  This should pass
25046         test-shape-path-stretch[34].xaml.
25048 2008-04-16  Jeffrey Stedfast  <fejj@novell.com>
25050         Fix for OMPackagingSource.htm
25052         * media.cpp (MediaElement::OnPropertyChanged): If the new source
25053         is empty, Invalidate().
25054         (MediaElement::Render): Render nothing if our downloader is NULL.
25056 2008-04-16  Larry Ewing  <lewing@novell.com>
25058         * shape.cpp: don't adjust the origin unless we are adjusting that
25059         axis.
25061 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25063         * playlist.cpp: Simplify printf.
25065 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25067         * src.mdp: Updated to (mostly) compile.
25069 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25071         * src.mdp: Updated.
25073 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25075         * typegen/typegen.sh: Updated to work correctly independently of
25076         the current directory when executed.
25078 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25080         * animation.cpp, animation.h, brush.cpp, brush.h, clock.cpp, clock.h,
25081           collection.cpp, collection.h, dependencyobject.h, downloader.cpp,
25082           downloader.h, Makefile.am, media.cpp, media.h, runtime.cpp, runtime.h,
25083           type.cpp, type.h, type.h.in, typegen/typegen.cs, type-generated.cpp,
25084           uielement.cpp, uielement.h: Initialize our type system statically.
25085         * dependencyobject.cpp: Initialize our type system statically. Comparing a
25086           Kind value to another to determine type hierarchy isn't supported
25087           anymore, use Value::Is or Type::IsSubclassOf, which are doing the right
25088           thing.
25089         * src.mdp: Updated.
25090         * type.cpp.in: Removed, no longer required.
25091         * value.cpp, value.h, value.h.in: Comparing a Kind value to another to
25092           determine type hierarchy isn't supported anymore, use Value::Is or
25093           Type::IsSubclassOf, which are doing the right thing.
25095 2008-04-16  Larry Ewing  <lewing@novell.com>
25097         * shape.cpp (Shape::ComputeStretchBounds): fix typo.
25099 2008-04-16  Larry Ewing  <lewing@novell.com>
25101         * shape.cpp (Shape::ComputeStretchBounds): fix the centering logic
25102         that got accidentally lost when fixing other bits.
25104         Fixes regression in StretchAndShapes.xaml.
25106 2008-04-16  Jackson Harper  <jackson@ximian.com>
25108         * xaml.cpp: {x:Null} evaluates to NULL, if we encounter this value
25109         we need to check if the property is Nullable and raise an error if
25110         it isn't.
25112 2008-04-16  Jackson Harper  <jackson@ximian.com>
25114         * dependencyobject.h|cpp: SetValue now validates values and
25115         returns false with a GError when invalid values are used.
25116         Subclasses can (and should) override IsValidValue to do their own
25117         value validation.
25118         * xaml.cpp: Use new SetValue that returns errors.
25119         
25120 2008-04-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25122         * media.cpp: MediaBase::SetSourceAsyncCallback: don't do anything if we
25123           don't have a surface anymore. We're probably executing after the surface
25124           has been destroyed.
25126 2008-04-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25128         * src.mdp: Updated to include typegen/*.
25129         * type.cpp, type.cpp.in, type.h, type.h.in: Added type_get_name, and fix
25130           Behaviour/Behavior inconsistency.
25132 2008-04-15  Jeffrey Stedfast  <fejj@novell.com>
25134         * media.cpp (MediaElement::OnPropertyChanged): Moved the
25135         PositionProperty seek logic into here so we could get rid of
25136         MediaElement::SetValue() overload.
25138         * dependencyobject.h (class DependencyObject): SetValue() is no
25139         longer a virtual method.
25141 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
25143         * clock.cpp: ret_time is 0 when reaching repeat_count == 0. Fixes the
25144         clock35.xaml test.
25146 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
25148         * clock.cpp: Clock::ComputeNewTime - make sure to take the speed ratio 
25149         into account also when moving back in time. 
25151         Fixes the clock34.xaml test.
25153 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
25155         * animation.cpp: Make sure to clamp the progress to 0.0 - 1.0 when we're
25156         calculating it ourselves (instead of using the CalcProgress). Otherwise
25157         we're bypassing the clamping and extending animations/values beyond
25158         their bounds. 
25160         This is a real fix for the Popfly #378390 (cannot configure the box in
25161         Popfly). Also fixes the clock34.xaml test-case.
25163 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
25165         * clock.cpp: Since we're at it, small fix in Clock::Tick -- Clamp time
25166         when previous OR current state is Clock::Active.
25168 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
25170         * clock.cpp: Reverting the change that was supposed to fix popfly. It's
25171         actually totally bad. I knew I was too fast with this one.
25173 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
25175         * clock.cpp: The time needs to be clamped always. Fixes #378390 (cannot
25176         configure the box in Popfly). Whoah, that was a nasty one.
25178 2008-04-14  Chris Toshok  <toshok@ximian.com>
25180         * runtime.cpp (Surface::Attach): don't clear the up/down dirty
25181         lists here.  Calling toplevel->SetSurface(NULL) ensures that all
25182         elements from the previous tree have their dirty elements removed,
25183         so what's left will correspond to 1) things that are about replace
25184         the current hierarchy, or 2) things that haven't actually been
25185         added to the hierarchy yet, but need to be associated with a
25186         surface.
25188         * collection.cpp (Collection::Clear): emit
25189         CollectionChangeTypeChanging event before we do the actual change
25190         so the owner can do something with the children if it needs to.
25191         (VisualCollection::VisualAdded, VisualCollection::VisualRemoved):
25192         nuke.
25193         (VisualCollection::Add): remove call to VisualAdded.  that
25194         behavior will be handled by Panel in its OnCollectionChanged
25195         method.
25196         (VisualCollection::SetVal): same.
25197         (VisualCollection::Insert): same.
25198         (VisualCollection::Remove): same, but with VisualRemoved.
25199         (VisualCollection::RemoveAt): same.
25200         (VisualCollection::Clear): remove the loop calling VisualRemoved.
25201         this will be handled by the additional
25202         CollectionChangeTypeChanging handling in panel.cpp.
25204         * enums.h (enum CollectionChangeType): add
25205         CollectionChangeTypeChanging.
25207         * panel.h, panel.cpp (Panel::OnPropertyChanged): handle the case
25208         where the ChildrenProperty is changed, by calling ChildRemoved on
25209         all the old children, and ChildAdded on all the new ones.
25210         (Panel::ChildAdded): new home for VisualCollection::VisualAdded.
25211         (Panel::ChildRemoved): new home for
25212         VisualCollection::VisualRemoved.
25213         (Panel::OnCollectionChanged): add support for
25214         CollectionChangeTypeChanging, so we can remove all children.  this
25215         change type is generated by Collection::Clear.
25217         * stylus.cpp (Stroke::OnCollectionChanged): add empty handler for
25218         CollectionChangeTypeChanging.
25219         (InkPresenter::OnCollectionChanged): same.
25221 2008-04-14  Jeffrey Stedfast  <fejj@novell.com>
25223         * media.cpp (Image::CreateSurface): Robustification of image
25224         loading.
25226 2008-04-14  Michael Dominic K.  <mdk@mdk.am>
25228         * clock.cpp:
25229         * clock.h: When calculating the new time in DoRepeat use modulo on new
25230         value. Otherwise we're 'losing' a little bit of time on every repeat and
25231         end time doesn't match with parent. This fixes a few more "jags" on
25232         animations ie. clock13.xaml.
25234 2008-04-11  Larry Ewing  <lewing@novell.com>
25236         * xaml.cpp (value_from_str): make sure we propogate the error if
25237         color_from_string returns NULL.
25239         * color.cpp (color_from_str): return NULL on invalid color values
25240         rather than simply returning black.
25242         Add an error condition to color_from_string so that we pass the
25243         color tests in ParserErrors test.
25244         
25245 2008-04-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25247         * dependencyobject.cpp: Surround event emission with ref/unref of ourselves.
25249 2008-04-11  Jeffrey Stedfast  <fejj@novell.com>
25251         * playlist.cpp: Disable debugging spew unless DEBUG_PLAYLISTS is
25252         defined.
25254         * downloader.cpp (Downloader::Send): Use
25255         TimeManager::InvokeOnMainThread() here like Rolf did in
25256         MediaBase. Simplifies things by not needing a surface.
25258         * text.cpp (TextBlock::SetFontSource): Now takes a Downloader
25259         object as opposed to a DependencyObject.
25261 2008-04-11  Michael Dominic K.  <mdk@mdk.am>
25263         * clock.cpp: in Clock, make sure we CalcProgress on the last tick before
25264         we go Filling/Stopped. Without this we never "finish off" our animations
25265         and depending on the framerate we get "jags". Fixes the clock32.xaml
25266         test.
25268 2008-04-11  Jeffrey Stedfast  <fejj@novell.com>
25270         * runtime.cpp: Make the dot and eraser cursors const to avoid
25271         compiler warnings.
25273 2008-04-11  Michael Dominic K.  <mdk@mdk.am>
25275         * enums.c: Removing bolox comment and behavior. Always return -1 on
25276         fail.
25278         * xaml.cpp: Push a g_warning when we're hitting bad enums on bad props.
25279         Should make it a little bit easier to spot problems.
25281 2008-04-11  Michael Dominic K.  <mdk@mdk.am>
25283         * dependencyobject.cpp: When calling RegisterAllNamesRootedAt be
25284         actually recursive (I'm not sure why this was commented out? Toshok?). 
25285         Fixes the sprawl end-game animation, #378748.
25287 2008-04-11  Stephane Delcroix  <sdelcroix@novell.com>
25289         * runtime.cpp: create the stylus and eraser cursors from xpm. Fixes 
25290         bnc #375213. Implemented the MouseCursorNone too.
25292 2008-04-10  Larry Ewing  <lewing@novell.com>
25294         * xaml.cpp (start_element): throw an error if there is an xml
25295         attribute on a dependency property.
25297 2008-04-10  Larry Ewing  <lewing@novell.com>
25299         * enums.c (enum_from_str): return -1 on an invalid enum string so
25300         that we can catch it as a ParserError fixes
25301         Parser_Invalid_Enum.xaml.
25303 2008-04-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25305         * media.cpp: MediaBase::SetSource: no need to get a
25306           Surface/TimeManager instance to do an asynchronous call, just
25307           call TimeManager::InvokeOnMainThread.
25309 2008-04-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25311         * mplayer.h, mplayer.cpp: Added MediaPlayer::AudioFinished, called
25312           by the audio thread when the audio finishes.
25314         * media.h, media.cpp: Added MediaElement::AudioFinished, called by
25315           the media player when the audio finishes. Enables us to raise
25316           MediaEnded for audio-only media.
25318 2008-04-10  Jeffrey Stedfast  <fejj@novell.com>
25320         * brush.cpp|media.cpp: All SetSource() entry points now take
25321         Downloader objects rather than DependencyObject arguments - the
25322         same as MSDN defines.
25324         * media.cpp (SetSourceInternal): More cleanup /
25325         simplification. Since *::SetSource() already takes steps to be
25326         async, no need to use Downloader::Send() which would introduce
25327         another delay in downloading. It should be plenty safe to call
25328         Downloader::SendNow() in all ::SetSourceInternal()
25329         implementations. Also, we now need to handle NULL downloader which
25330         we get called with if the original SetSource() was passed a NULL
25331         downloader.
25332         (Image::SetSource): Don't cleanup the surface here, do that in
25333         SetSourceInternal() so that we delay until appropriate.
25334         (Image::SetSourceInternal): If there is a downloader, delay
25335         CleanupSurface() even longer until the new image has been
25336         downloaded.
25337         (Image::DownloaderComplete): Call CleanupSurface() here.
25339 2008-04-10  Jeffrey Stedfast  <fejj@novell.com>
25341         * media.cpp: Consolidated Image and MediaElement downloader bits
25342         by putting them into MediaBase.
25344 2008-04-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25346         * dependencyobject.cpp: Guard against calling closures which have
25347           been removed during emission of previous events in the same
25348           event list: when we're emitting and a closure is removed, mark
25349           the closure as pending removal, don't call it anymore, and only
25350           remove it when we're finished emitting.
25352         * dependencyobject.h: Guard against calling closures which have
25353           been removed during emission of previous events in the same
25354           event list.
25356 2008-04-10  Michael Dominic K.  <mdk@mdk.am>
25358         * downloader.cpp:
25359         * downloader.h:
25360         * media.cpp: A straight-forward fix for "gray flashes" in comic and
25361         slideshow (#375275). It's circumventing a change to make downloaders
25362         async for Image. Jeff, maybe you can figure more?
25364         (The commit that broke the the slideshow was r99065, Jeff from
25365         2008-03-26).
25367 2008-04-10  Michael Dominic K.  <mdk@mdk.am>
25369         * shape.cpp: Little fix for new stretching algho by Stephane. Fixes the
25370         Showcase and test-shape-path-stretch2.xaml.
25372 2008-04-09  Chris Toshok  <toshok@ximian.com>
25374         * stylus.cpp (Stroke::HitTestEndcapSegment): don't fail if root_1
25375         is invalid, as root_2 might be.
25377 2008-04-09  Chris Toshok  <toshok@ximian.com>
25379         [ Fixes some odd behavior in
25380           http://www.thedatafarm.com/silverink/, and also fixes bug
25381           #375229 ]
25382         
25383         * panel.cpp (Panel::FrontToBack): Kind of a screwy change - we
25384         intersect the expose region with our RenderBounds, not our normal
25385         Bounds.  This forces us to add the ink presenter to the render
25386         list even when the exposed area is just going to redraw a stroke,
25387         not the actual canvas rectangle.  When we go to subtract, however,
25388         we still only subtract the canvas rectangle.
25390         * stylus.cpp (InkPresenter::OnPropertyChanged): invalidate the old
25391         stroke collection's bounds as well as the new stroke collection's
25392         bounds.
25393         (InkPresenter::OnCollectionChanged): when the collection has
25394         changed, we can't just use Invalidate() since that only
25395         invalidates the canvas bounds.  We need to invalidate our render
25396         bounds to get rid of strokes that are outside the canvas bounds.
25397         Also, make sure to also invalidate the new bounds of the stroke
25398         collection (it will usually be empty, but do it anyway).
25399         (InkPresenter::ComputeBounds): add logic to compute the
25400         render_bounds here.
25401         (InkPresenter::GetRenderBounds): new method.
25403         * stylus.h (class InkPresenter): add GetRenderBounds, and also add
25404         an OnPropertyChanged method so we can deal with the stroke
25405         collection being assigned to something else.
25407         * uielement.h (class UIElement): as much as I hate to do this, add
25408         yet another type of bounds (RenderBounds).  this is only here for
25409         the special case of the inkpresenter, which has the normal canvas
25410         bounds (the rectangle), the subtree bounds (which unions the
25411         canvas bounds with the bounds of strokes and children) and render
25412         bounds (which unions canvas bounds and stroke bounds.)
25414 2008-04-09  Jeffrey Stedfast  <fejj@novell.com>
25416         * dependencyobject.cpp (resolve_property_path): Alias TextElement
25417         to TextBlock to work around some buggy beta versions of Blend.
25419 2008-04-09  Stephane Delcroix  <sdelcroix@novell.com>
25421         * shape.cpp: Shape::ComputeStretchBounds: compute the stretch assuming
25422         the logical/shape bounds diff stays the same. It's IMHO as close as we
25423         can go without drawing and recalculating.
25425 2008-04-08  Jeffrey Stedfast  <fejj@novell.com>
25427         * xaml.cpp: Cleaned up some of the debugging printf's and and
25428         wrapped them in d() to declutter console spewage when unneeded.
25429         (xaml_create_from_str): ctype functions take int arguments, where
25430         normal char values are in the range 0-255 - in order to work with
25431         non-GNU, need to cast from char to unsigned char.
25433         * error.h (class ParserErrorEventArgs): Avoid using the c++ ctor
25434         initializer stuff to be consistent with other classes.
25436 2008-04-08  Sebastien Pouliot  <sebastien@ximian.com>
25438         * xaml.cpp: Fix (yesterday's fix) on parsing properties. Thanks 
25439         to Jackson.
25441 2008-04-08  Michael Dominic K.  <mdk@mdk.am>
25443         * clock.cpp:
25444         * clock.h: SkipToFill the automatic duration clock groups except if 
25445         this is the root of all roots clock (the TimeManager's clock). Due to
25446         the idle_hint optimization, we don't process those clocks anyways.
25448 2008-04-08  Michael Dominic K.  <mdk@mdk.am>
25450         * value.h: 
25451         * animation.cpp:
25452         * animation.h:
25453         * dependencyobject.cpp:
25454         * dependencyobject.h: Making sure that each property is animated only by
25455         a single animation at a time (the last one started). 
25456         From Silverlight forums:
25458         "Keep in mind Silverlight only supports a single animation on a
25459         property at a time, so if you begin multiple animations on the same
25460         property, the last one will prevail."
25462         This prevents us from overriding Filling/HoldEnd animations by sb's
25463         started before. 
25465         The implementation is: for each prop we create a hash table (when
25466         needed) which stores objects (keys) + last AnimationStorage attached
25467         (values). When new AnimationStorage is attached to a prop, the last one
25468         is notified to stop updating the target (we don't touch the clock
25469         structure). And then there is some magic to handle destroy's etc. 
25471         This fixes PopFly mouse enter/leave problems in the toolbox and the 
25472         http://www.designwithsilverlight.com/tutorials/photoGallery/gallery.html
25473         problems. Fixes #375231, #362363.
25475 2008-04-07  Jeffrey Stedfast  <fejj@novell.com>
25477         Fixes needed for Zombomatic
25479         * downloader.cpp (Downloader::GetDownloadedFilePart): When
25480         creating the full pathname for parts we are extracting, convert
25481         everything to lowercase since we need to treat archived filenames
25482         case-insensitively.
25483         (Downloader::GetUnzippedPath): Convert filenames from the zip
25484         archive to lowercase so that it is easier for us to find them
25485         case-insensitively on the filesystem once they are extracted.
25487 2008-04-07  Sebastien Pouliot  <sebastien@ximian.com>
25489         * xaml.cpp: Fix parsing properties by ensure they start with the 
25490         element name (and not something else). Fix crasher.
25492 2008-04-07  Michael Dominic K.  <mdk@mdk.am>
25494         * src/shape.cpp:
25495         * src/shape.h: Compute the origin point as a separate step after
25496         computing the shape bounds and the stretch bounds. This fixes the
25497         recently broken sprawl.
25499         I think it also fixes other things. Before, given the way code was,
25500         the stretch_bounds would affect the origin *only* in the case of Path,
25501         in other cases (Line, Polygon, Polyline...) they would be ignored.
25503 2008-04-04  Chris Toshok  <toshok@ximian.com>
25505         * stylus.cpp (Stroke::HitTestEndcapSegment): fix this method.  it
25506         was missing a bunch of tests (basically it was intersecting
25507         infinite lines with ellipses, not segments), and some of the math
25508         was wrong.
25510 2008-04-04  Jeffrey Stedfast  <fejj@novell.com>
25512         Intended to fix bug #373462, but something else is preventing that
25513         site from working now...
25515         * media.cpp (MediaElement::SetSourceInternal): PartName is no
25516         longer a const char * argument, which means we take ownership of
25517         the PartName string.
25518         (MediaElement::SetSourceAsyncCallback): New method which is the
25519         async callback for SetSource().
25520         (MediaElement::SetSource): Reinitialize() right away.
25521         (MediaElement::SetSource): Clear out any pending SetSource async
25522         data, replacing it with the new downloader/part name info.
25523         (MediaElement::SetSource): Allow a NULL downloader object but make
25524         sure we don't crash in that case either.
25526 2008-04-04  Sebastien Pouliot  <sebastien@ximian.com>
25528         * dependencyobject.cpp (resolve_property_path): Avoid crash on 
25529         invalid syntax and leaks in other error cases. Fix #377039 (more
25530         test cases coming soon).
25532 2008-04-04  Jeffrey Stedfast  <fejj@novell.com>
25534         * animation.cpp (KeyFrameCollection::GetKeyFrameForTime): Return
25535         immediately if the array len is 0, prevents a crash accessing
25536         sorted_list->pdata[0] when working backwards in the second
25537         for-loop. Fixes one of the crashes I found while investigating bug
25538         #362561.
25540 2008-04-04  Sebastien Pouliot  <sebastien@ximian.com>
25542         * runtime.cpp: Don't crash in strcase_hash if the hashtable 
25543         contains NULL values.
25545 2008-04-03  Chris Toshok  <toshok@ximian.com>
25547         * runtime.cpp (Surface::InitializeWidget): disable the
25548         GDK_POINTER_MOTION_HINT_MASK stuff for now.  we're not passing
25549         tests with it enabled.
25550         (Surface::motion_notify_callback): force the emission of a motion
25551         event.
25553 2008-04-03  Jeffrey Stedfast  <fejj@novell.com>
25555         * runtime.cpp (Surface::SetCursor): Stylus cursor should map to
25556         the pencil cursor. Also updated Hand (which should be a
25557         left-pointing hand, not right-pointing) and also Eraser (we need
25558         to make our own icon for this, but I suck at art so I'll pass for
25559         now).
25561 2008-04-03  Michael Dominic K.  <mdk@mdk.am>
25563         * shape.cpp:
25564         * shape.h: Calculate the logical extents when computing the shape bounds
25565         and pass them to the ComputeStretchBounds. They're currently not used in
25566         any way.
25568 2008-04-03  Michael Dominic K.  <mdk@mdk.am>
25570         * shape.cpp: Don't init the stretch matrix to identity on each
25571         Shape::ComputeShapeBounds. We want to be able to call it freely.
25573 2008-04-02  Michael Dominic K.  <mdk@mdk.am>
25575         * geometry.cpp: Use the cairo_path_extents to calculate the logical
25576         bounds instead of faking small stroke.
25578 2008-04-02  Michael Dominic K.  <mdk@mdk.am>
25580         * shape.cpp:
25581         * shape.h: Adding new parameter (bool logical) to all the
25582         Shape::ComputeShapeBounds functions and overrides. See prev commit for
25583         explanation of what is logical bounds.
25585         Currently all clients use logical == false. Just adding this
25586         functionality.
25588 2008-04-02  Michael Dominic K.  <mdk@mdk.am>
25590         * geometry.cpp:
25591         * geometry.h:
25592         * shape.cpp:
25593         * uielement.cpp: Adding new parameter (bool logical) to all the
25594         Geometry::ComputeBounds functions and overrides. Calculating logical
25595         bounds means calculating bounds without stroke included. Ie. a line
25596         (0,0) - (100, 0) has logical bounds of width=100, height=0, no matter
25597         what the stroke is. 
25599         Not used right now, will be used in just a few commits (all current
25600         ComputeBounds clients call it will logical == false).
25602 2008-04-02  Michael Dominic K.  <mdk@mdk.am>
25604         * shape.cpp: Don't automatically compute the stretch bounds when
25605         computing shape bounds. Instead, compute it as a separate step in
25606         Shape::ComputeBounds.
25608 2008-04-03  Chris Toshok  <toshok@ximian.com>
25610         * uielement.cpp (UIElement::EmitMouseLeave): turns out that,
25611         contrary to msdn2, MS *is* indeed emitting this event with
25612         non-null eventargs.  it's just an EventArgs object, not a
25613         MouseEventArgs.
25615 2008-04-03  Jeffrey Stedfast  <fejj@novell.com>
25617         * dependencyobject.cpp (EventObject::Emit): Unref the calldata
25618         even in the "no such event" exception case.
25620 2008-04-03  Larry Ewing  <lewing@novell.com>
25622         * xaml.cpp: (expat_parser_error): translate XML_ERROR_NO_ELEMENTS
25623         into appropriate error code.
25625 2008-04-03  Larry Ewing  <lewing@novell.com>
25627         * xaml.cpp: Generate errors when trying to set readonly properties.
25629 2008-04-03  Larry Ewing  <lewing@novell.com>
25631         * xaml.cpp: make sure we set an error if the property name isn't
25632         valid.
25634         * runtime.cpp: make it legal to attach to a NULL toplevel, hook up
25635         the needed events.
25637 2008-04-03  Larry Ewing  <lewing@novell.com>
25639         * runtime.cpp (Surface::expose_to_drawable): make sure we take
25640         allocation.x and allocation.y into account when deciding not to
25641         draw.  Should fix the disappearing gtksilver widget reported on irc.
25643 2008-04-02  Larry Ewing  <lewing@novell.com>
25645         * xaml.cpp: flush character data at the end of property elements
25646         too.
25648 2008-04-02  Jackson Harper  <jackson@ximian.com>
25650         * xaml.cpp: Add the element name for this error.
25652 2008-04-02  Chris Toshok  <toshok@ximian.com>
25654         * stylus.cpp (Stroke::HitTestEndcapSegment): fix up some math.
25655         (Stroke::HitTestEndcapPoint): same.
25656         (point_gte_line): new method.
25657         (point_lte_line): new method.
25658         (Stroke::HitTestSegmentPoint): use point_gte_line and
25659         point_lte_line to determine if the point is inside the segment.
25660         (global): wrap all spew in DEBUG_HITTEST.
25661         
25662 2008-04-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25664         * pipeline.cpp, mplayer.cpp, pipeline.h: Remove SeekToStart completely, it's
25665           just plain broken.
25667 2008-04-02  Jeffrey Stedfast  <fejj@novell.com>
25669         * media.cpp (MediaElement::UpdatePlayerPosition): Cast to same
25670         integer type when comparing.
25672         * playlist.cpp (Playlist::OnMediaEnded): Prevent a segfault in the
25673         debugging printfs. Fixes bug #375273.
25675 2008-04-01  Chris Toshok  <toshok@ximian.com>
25677         * xaml.cpp: back out the SetSurface call removal.
25679         * dependencyobject.cpp (EventObject::unref): instead,
25680         SetSurface(NULL) here before we delete the object.
25682 2008-04-01  Chris Toshok  <toshok@ximian.com>
25684         * control.cpp (Control::InitializeFromXaml): make sure to call
25685         SetSurface(NULL) on the old real_object since we're detaching it
25686         from the tree.  Call SetSurface on ourselves (really, should just
25687         be the real_object, right?) before calling the real_object methods
25688         that would cause dirty stuff to happen.
25690         * xaml.cpp (create_custom_element): don't call SetSurface here, it
25691         will cause problems if there's a parser error (since elements
25692         can/will be on the surface's dirty list after they're destroyed.)
25693         (default_create_element_instance): same.
25695 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25697         * playlist.cpp, playlist.h: A lot of fixes according to the tests.
25698         * mplayer.h, mplayer.cpp: Initialize the rgb buffer. Add a start_pts to
25699           specify where in the stream we start and (playlists can specify a
25700           starting point which isn't in the beginning), and set the duration from
25701           the playlist (if the playlist has it).
25702         * media.cpp: MediaElement::SetMedia: Handle the case if mplayer returns
25703           false from MediaPlayer::Open. MediaElement::MediaOpened: Handle the case
25704           if the recursive playlist couldn't be replaced.
25706 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25708         * media.h: Added MediaElement::GetPlaylist.
25710 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25712         * type.cpp, type.cpp.in, type.h, type.h.in, value.cpp, value.h, value.h.in:
25713           Remove Type::NPOBJ, it's not needed.
25715 2008-04-01  Michael Dominic K.  <mdk@mdk.am>
25717         * animation.cpp: Since now the clocks are synced we don't need to
25718         recursively check the states in the teardown on completed.
25720 2008-04-01  Michael Dominic K.  <mdk@mdk.am>
25722         * clock.cpp:
25723         * clock.h: Getting rid of the nasty clock desyncing (setting ClockGroup
25724         manually to Stopped but not touching the state of children).
25726         We do this by introducing a new idle_hint on ClockGroup. If idle_hint is
25727         set, we don't tick the ClockGroup no matter what the state is. Idle_hint
25728         is set when all children of ClockGroup have state != Active (ie. are
25729         filling). This can be seen as "optimization" -- not to dumbly process
25730         filling clocks which keep setting same value all the time (it creates
25731         insane recursion ie. in Showcase making it unusable). Silverlight seems
25732         to do something very similiar.
25734         Before this commit a same effect was achieved by the said "desyncing" --
25735         forcing the ClockGroup to Stopped. This approach however is a bit more
25736         clean. 
25738 2008-04-01  Michael Dominic K.  <mdk@mdk.am>
25740         * animation.cpp: Chain to parent's Clock::Stop in AnimationClock::Stop.
25742 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25744         * pipeline.cpp: Use base_unref, base_unref_delayed doesn't exist anymore.
25746 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25748         * value.cpp: Remove a few warnings which might give false positives now.
25750 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25752         * dependencyobject.h, dependencyobject.cpp: EventObject::unref: check if
25753           we're being unreffed on the main thread, if not, call unref_delayed.
25755 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25757         * runtime.cpp, runtime.h: Added a Surface::InMainThread.
25759 2008-04-01  Fernando Herrera  <fherrera@novell.com>
25761         * media.cpp: Remove the request position function when aborting the
25762         downloader.
25764 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25766         * media.cpp, media.h, mplayer.cpp, mplayer.h: Add a dtor parameter to
25767           MediaElement::Reinitialize and MediaPlayer::Close to specify if we're
25768           being called from the destructor, and if so, null out the element field
25769           of the MediaPlayer, so that we don't access a destructed media element.
25770           Add an async version of MediaPlayer::EnqueueFrames, so that the audio
25771           threads can request more data in a thread-safe manner.
25773 2008-04-01  Fernando Herrera  <fherrera@novell.com>
25775         * asf/asf.cpp:
25776         * pipeline.h: Support for live mms streams, that have packet_count as
25777         0 and return false for CanSeekToPts.
25779 2008-03-31  Chris Toshok  <toshok@ximian.com>
25781         * namescope.h, namescope.cpp: make no semblance of having a
25782         superior namescope implementation (where they get transported
25783         around with the subtree they're attached to when it's
25784         removed/re-added to the hierarchy.)  Instead follow MS's broken
25785         implementation where temporary namescopes are completely removed
25786         when merged into another one.
25788         * collection.h, collection.cpp (Collection::MergeNames): factor
25789         out some common code from Add, Insert, and SetVal. Also, deal with
25790         the fact that merging namescopes now really adds all the names to
25791         the parent namescope, so clear the old namescope.
25792         (Collection::SetVal): don't just unregister the old toplevel name,
25793         but all the names in the subtree.
25794         (Collection::Remove): same.
25795         (Collection::Clear): same.
25796         (Collection::UnregisterAllNamesRootedAt): override DO's method,
25797         recursing into all our children.
25798         (Collection::RegisterAllNamesRootedAt): same.
25799         (VisualCollection::VisualRemoved): clear the IS_LOADED flag so
25800         UIElement::OnLoaded is called again, and <BeginStoryboard>
25801         elements restart when the subtree is added to the hierarchy again.
25803         * control.h, control.cpp (Control::UnregisterAllNamesRootedAt):
25804         override and forward onto real_object.
25805         (Control::RegisterAllNamesRootedAt): same.
25806         
25807         * dependencyobject.cpp (DependencyObject::ClearValue): add a
25808         parameter to allow us to specify *not* to notify listeners of the
25809         property change.  we do this with the NameScope property, which
25810         noone should be listening too.  It was causing a tremendous
25811         performance hit when merging a lot of namescopes (as we do in
25812         inkStylusPointCount.htm)
25813         (DependencyObject::UnregisterAllNamesRootedAt): used when a DO is
25814         removed from the hierarchy, we need to unregister all the names
25815         beneath it.
25816         (DependencyObject::RegisterAllNamesRootedAt): used when a DO is
25817         added to the hierarchy, if it doesn't have a temporary
25818         namescope (in which case we just merge it).
25820 2008-03-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25822         * pipeline.cpp, pipeline.h: MemorySource: Add a value specifying if the
25823           MemorySource owns the memory or not (if it will be freed upon
25824           destruction or not).
25826 2008-03-31  Jeffrey Stedfast  <fejj@novell.com>
25828         * stylus.cpp (Stroke::HitTestEndcap): Fixed a bug where the
25829         for-loop would only use every other point as a starting point for
25830         a segment. E.g. if you had points a, b, c, d and e - the code only
25831         checked segments ab, cd, and e when it should have been checking
25832         ab, bc, cd, and de.
25834 2008-03-31  Fernando Herrera  <fherrera@novell.com>
25836         * downloader.cpp: Check if aborted before cheking for requested
25837         position.
25839 2008-03-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25841         * pipeline.cpp, pipeline.h: Moved locking down to IMediaSource from
25842           ProgressiveSource.
25843         * playlist.cpp: Updated according to pipeline changes.
25844         * mplayer.h: Fix SetState to not overwrite current bits, only current state.
25845         * media.h, media.cpp: Rework buffering progress to use the available time of
25846           media available (pts) instead of doing some funny math on file
25847           positions.
25848         * mplayer.cpp: Don't allow SetTargetPts if we're waiting for a seek.
25850 2008-03-31  Michael Dominic K.  <mdk@mdk.am>
25852         * animation.cpp: Don't Stop the Storyboard root_clock before begining
25853         the Storyboard again, just silently tear it down.
25855         Calling Stop resets the property values to base which is something we
25856         don't want. When Begin () is called on Sb in SL, the last animated
25857         values are used. 
25859 2008-03-31  Michael Dominic K.  <mdk@mdk.am>
25861         * animation.cpp:
25862         * animation.h: Adding Storyboard::DetachClockGroupFromParent () that
25863         works similar to Teardown but doesn't destroy the clock/animation
25864         hierarchy. We need this hierarchy to ie. reset prop values to base when
25865         Storyboard::Stop is called manually. 
25867         When Storyboard is completed, call DetachClockGroupFromParent (if not
25868         Teardown). Otherwise the Storyboard will ghostly change state with parent 
25869         state changes.
25871 2008-03-31  Michael Dominic K.  <mdk@mdk.am>
25873         * animation.cpp: Slightly reworking the clock_is_fully_stopped_recursive
25874         to check for NULL and report stopped == true when both ClockGroup state
25875         is Stopped and all children are Stopped. 
25877         To be honest, this never currently reports Stopped == true as we do
25878         intentional state desync when storyboard reaches end -- setting the
25879         ClockGroup state to Stopped but keeping the children in Active/Filling.
25880         This *has* to go away.
25882 2008-03-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25884         * src.mdp: Updated.
25886 2008-03-28  Jeffrey Stedfast  <fejj@novell.com>
25888         * utils.cpp (TextStream::Read): Better handling of iconv() failure
25889         cases.
25891 2008-03-28  Chris Toshok  <toshok@ximian.com>
25893         * animation.cpp, animation.h: remove Storyboard::FindSurface -
25894         EventObject::GetSurface() always returns the right thing.
25895         Override SetSurface to check whether we're being detached from or
25896         attached to a surface, and pause or resume the clock in response.
25897         This fixes some issues in storyboard_EnterLeaveSemantics.
25899 2008-03-28  Chris Toshok  <toshok@ximian.com>
25901         * dependencyobject.h,
25902         dependencyobject.cpp (DependencyObject::SetSurface): new method,
25903         set the surface for all our DependencyObject subclassed property
25904         values.
25906         * collection.h, collection.cpp (Collection::Add): SetSurface work.
25907         (Collection::Insert): same.
25908         (Collection::SetVal): same.
25909         (Collection::Remove): same.
25910         (Collection::RemoveAt): same.
25911         (Collection::Clear): same.
25912         (Collection::SetSurface): new method, iterate over all children
25913         setting the surface.
25914         (VisualCollection): remove surface logic here.
25915         (VisualCollection::VisualAdded): same.
25916         (VisualCollection::VisualRemoved): same.
25918 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25920         * mplayer.cpp: Clear all queues after a seek has completed.
25922 2008-03-28  Jeffrey Stedfast  <fejj@novell.com>
25924         * text.cpp (deobfuscate_font): Updated for CopyFileTo() rename.
25926         * downloader.cpp (Downloader::CleanupUnzipDir): Updated for
25927         RemoveDir() rename.
25928         (create_unzipdir): Updated for MakeTempDir() rename.
25930         * utils.cpp (MakeTempDir): Renamed from make_tmpdir() to try and
25931         be more consistent with moonlight API naming convensions.
25932         (RemoveDir): Renamed from moon_rmdir().
25933         (CopyFileTo): Renamed from moon_copy_file()
25935 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25937         * debug.cpp: Fix warning.
25939 2008-03-28  Michael Dominic K.  <mdk@mdk.am>
25941         * clock.cpp: Fixing the clock repeat for duration-based
25942         RepeatBehavior. 
25943         
25944         Fixes the clock14.xaml and clock31.xaml tests. All 31 clock tests are
25945         passing now (same behavior as in SL).
25947 2008-03-28  Michael Dominic K.  <mdk@mdk.am>
25949         * clock.cpp: In ComputeNewTime: when we're moving backward and hitting
25950         the bound decrease the repeat_count no matter what (if auto-reversed or
25951         not). This makes the auto-reversed storyboard work.
25953         Fixes the clock7.xaml and clock30.xaml. The only clock test broken now
25954         is clock14.xaml.
25956 2008-03-28  Michael Dominic K.  <mdk@mdk.am>
25958         * animation.cpp: Teardown the storyboard in Completed only if the root
25959         clock is stopped AND all the children are stopped too. After teardown we
25960         loose the ability to reset-back the values and Completed is
25961         fired always, even if the clock is filling (a filling clock should reset
25962         on Stop).
25963         
25964         This ie. fixes http://www.idcorporate.com.ar/ and other sites that use
25965         the popular methodology of beginning a filling Storyboard on MouseEnter
25966         and stopping it on MouseLeave.
25968 2008-03-27  Michael Dominic K.  <mdk@mdk.am>
25970         * runtime.cpp: Ignore the enter/leave crossing events coming as a 
25971         result of grab/press started/finished.
25973 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25975         * uielement.cpp, pipeline.h, media.cpp, brush.cpp: Update according to
25976           MediaPlayer changes.
25977         * mplayer.cpp, mplayer.h: Major cleanup in MediaPlayer: make all fields
25978           private, and add public accessors when required. Remove all boolean
25979           fields and add a single bit/state field with its corresponding enum and
25980           public accessors. Removed IncTargetPts, StopThreads and PauseInternal,
25981           no longer used. Removed unused defines. Made video and audio structures
25982           nested inside MediaPlayer instead of pointers (and queue inside
25983           video/audio), avoids pointer accesses and additional malloc/frees, since
25984           they were always created anyways. Don't seek to anywhere in Stop if
25985           we're stopping because we're closing, since it may cause crashes if
25986           we're closing because the MediaElement is being destructed (it may cause
25987           the MediaElement to be resurrected). Made public methods private
25988           whenever possible.
25990 2008-03-28  Fernando Herrera  <fherrera@novell.com>
25992         * asf/asf.cpp: Use the pts == 0 optimization before trying to
25993         SeekToPts.
25995         * downloader.cpp:
25996         * downloader.h: Add functions to allow request a remote postition.
25998         * media.cpp:
25999         * media.h:
26000         * pipeline.cpp:
26001         * pipeline.h: Implement SeekToPts for mms:// sources.
26003 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26004         
26005         * dependencyobject.h: Detect an unrecoverable error condition with
26006           refcounting (reffing an object with refcount of 0), and abort instead of
26007           crashing randomly and insecurely later on.
26009 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26011         * mplayer.h, mplayer.cpp: Remove more unused fields in MediaPlayer.
26013 2008-03-27  Jeffrey Stedfast  <fejj@novell.com>
26015         * downloader.cpp (Downloader::GetResponseText): Use the new
26016         TextStream class.
26018         * utils.cpp (TextStream::Open): Fixed the BOM checking, had LE/BE
26019         reversed.
26021         * xaml.cpp (xaml_create_from_file): Oops, if we read 0 bytes, make
26022         sure to exit the loop ;-)
26024 2008-03-27  Jeffrey Stedfast  <fejj@novell.com>
26026         * xaml.cpp (xaml_create_from_file): Use the new TextStream class
26027         instead of doing things the hard way. Might be more performant,
26028         definitely won't malloc/free nearly as much. Also fixed a bug
26029         where leading lwsp might be larger than our read buffer.
26031         * utils.cpp (TextStream): New class for reading text input
26032         streams, converting them to UTF-8 as they are read.
26034         * downloader.cpp (Downloader::Send): Handle the case where the
26035         attached surface is NULL.
26036         (Downloader::GetResponseText): Handle zero-length files. Also,
26037         nul-terminate the returned buffer (which is now a char* rather
26038         than a void*) since it is clear that the javascript expects to be
26039         able to use this value as a string buffer.
26041 2008-03-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26042         
26043         * mplayer.h, mplayer.cpp: Don't create any audio threads until we're
26044           requested to play audio. Don't hold the lock when polling.
26046 2008-03-26  Jeffrey Stedfast  <fejj@novell.com>
26048         * downloader.cpp (Downloader::SendInternal): New method that is
26049         basically the same as the old ::Send().
26050         (Downloader::Send): Queue the SendInternal() call via
26051         TimeManager's TickCall API.
26053 2008-03-26  Chris Toshok  <toshok@ximian.com>
26055         * dependencyobject.h, dependencyobject.cpp (class EventObject):
26056         add RemoveMatchingHandlers variants that let you pass in a
26057         predicate to test event handlers with.
26059 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26061         * pipeline.cpp, pipeline.h: ASFDemuxer: updated according to asf
26062           changes.  Added a MemoryStream.
26064         * media.cpp: Updated according to API changes.
26066 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26068         * mplayer.cpp, mplayer.h: Add a new state to the audio:
26069           WaitingForData, in which case we don't poll on that audio
26070           node (since the hardware will just tell us it's ready to recieve
26071           data). Fixes audio using 100% cpu after when it runs out of
26072           data (either because of network hiccup or the stream finished).
26074 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26076         * pipeline.cpp, mplayer.cpp, pipeline.h: Made
26077           IMediaStream::selected private and add accessors.
26079 2008-03-26  Stephane Delcroix  <sdelcroix@novell.com>
26081         * shape.h:
26082         * shape.cpp: set the dash caps for all the shapes, draw start/end caps
26083         on line and polylines.
26085 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26087         * mplayer.cpp: Remove unused fields.
26089 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26091         * debug.cpp: Correctly compute base addresses of libraries, and use a
26092           thread-safe version of strtok.
26094 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26096         * runtime.h, runtime.cpp, pipeline.cpp: Reverse the meaning of our YUV flag
26097           - it's now necessary to explicitly disable it in order to get rid of it
26098           instead of relying on a default flag to have the right value in order to
26099           get it. Makes video work with mopen again.
26101 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26103         * pipeline.cpp: Fix a crash.
26105 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26107         * mplayer.cpp: Remove Instance (), it's redundant.
26108         * mplayer.h: AudioPlayer: Remove Instance (), it's redundant. Synchronize
26109           everything in the audio player with one semaphore, it simplifies things
26110           and removes a couple of problems helgrind found.
26111         * pipeline.cpp: ~Media: Add a nullcheck. Media::Initialize: Initialize the
26112           audio player as well. Use delayed unreffing in destructors which may be
26113           called on worker threads.
26115 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26117         * runtime.cpp, runtime.h: Remove the pending unref stuff from Surface.
26118         * dependencyobject.cpp: Remove the surface-based delayed unloading, it's not
26119           thread-safe and making it thread-safe isn't worth it. Also use a pthread
26120           mutex instead of a glib mutex, since helgrind reports a lot of false
26121           positives for glib mutexes. Hold the mutex for the smallest amount of
26122           time possible, making it unnecessary to use a recursive mutex.
26124 2008-03-26  Michael Dominic K.  <mdk@mdk.am>
26126         * shape.cpp: Reverting the clip changes, it was bolox.
26128 2008-03-25  Jeffrey Stedfast  <fejj@novell.com>
26130         * pipeline.cpp (Mp3FrameReader::EstimatePtsPosition): Get rid of
26131         the assert - it was only needed during implementation to make sure
26132         the bsearch worked correctly.
26133         (Mp3FrameReader::Seek): Same.
26135 2008-03-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26137         * media.cpp: Don't access any TimeManager instance from another thread, just
26138           call the static TimeManager::InvokeOnMainThread.
26140 2008-03-25  Michael Dominic K.  <mdk@mdk.am>
26142         * src/shape.cpp: Shape is empty always when it's bounds are <= 0.0, even
26143         if Width/Height was specified. Fixes a bogus warning about infinity
26144         transformations.
26146 2008-03-25  Michael Dominic K.  <mdk@mdk.am>
26148         * src/shape.cpp: When setting the clipping for the shape also include
26149         the transformations coming from stretching. This fixes
26150         test-shape-line-stretch3 test and the missing stripes on Silverlight
26151         showcase.
26153 2008-03-24  Chris Toshok  <toshok@ximian.com>
26155         * runtime.h (class Surface): add
26156         Surface::PropagateDirtyFlagToChildren.
26158         * dirty.cpp (Surface::PropagateDirtyFlagToChildren): factor this
26159         duplicated code out of ProcessDownDirtyElements.
26161 2008-03-24  Chris Toshok  <toshok@ximian.com>
26163         * panel.cpp (Panel::FrontToBack): remove the tree walking
26164         code (where we walked up the hierarchy looking for cases where we
26165         shouldn't subtract.)  Instead, we always subtract if the local
26166         state says we can.  Instead of forcing all leaf elements to walk
26167         up to their parent panel, we assume they'll operate on local state
26168         as well, and give them a copy of the region to subtract their
26169         bounds from, instead of the real region.  We are sneaky.
26171         * uielement.cpp (UIElement::FrontToBack): Operate on our local
26172         state only, no walking up the tree.
26174 2008-03-24  Jeffrey Stedfast  <fejj@novell.com>
26176         * pipeline.cpp (mpeg_parse_header): Fix the MPEG layer parsing, it
26177         was seemingly getting layer 1 and layer 2 backwards.
26178         (mpeg_frame_length): Seems like we are never supposed to add 2
26179         bytes for 16bit crc?
26181         * layout.cpp (TextLayout::LayoutWrap): If the glyph advance is 0,
26182         then don't bother applying kerning. Fixes 2 cases in
26183         LineBreakClasses.htm
26184         (TextLayout::LayoutWrap): Disable breaking after a
26185         G_UNICODE_BREAK_AFTER if we can break before the word as this
26186         seems to fix the last test case in LineBreakBasic1.htm
26187         (TextLayout::LayoutWrap): Reverted a fix that introduced a
26188         regression but didn't fix any known test cases.
26190 2008-03-21  Michael Dominic K.  <mdk@mdk.am>
26192         * src/runtime.cpp: When calling gdk_window_get_pointer in
26193         motion_notify_ to pop more hints actually use the results as they're
26194         more valid than x,y in the event passed. Without doing so, we're not
26195         getting the last mouse coords.
26197         Fixes the nasty problem that MouseEnter/Leave is not called once in a
26198         while.
26200 2008-03-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26202         * brush.cpp, media.cpp, mplayer.cpp, mplayer.h: Refcount MediaPlayer. Rename
26203           MediaPlayer::GetSurface to GetCairoSurface so that it doesn't conflict
26204           with EventObject::GetSurface.
26206 2008-03-20  Jeffrey Stedfast  <fejj@novell.com>
26208         * font.cpp (TextFont::GetGlyphInfo): Comment out the fixed-width
26209         font hack for now.
26211         * text.cpp (deobfuscate_font): New helper function used by
26212         TextBlock and Glyphs.
26213         (TextBlock::DownloaderComplete): Check for obfuscated fonts.
26214         (Glyphs::DownloaderComplete): Same.
26216         * font.cpp (DecodeObfuscatedFontGUID): New function to decode the
26217         GUID from a string.
26218         (DeobfuscateFontFileWithGUID): Deobfuscate a font file in-place.
26219         (TextFont::OpenFontDirectory): Renamed from OpenZipArchiveFont()
26220         since we no longer get passed zip files. Instead of extracting
26221         fonts from a zip archive, we now index the fonts in the
26222         directory (if they haven't already been indexed) and then try to
26223         find the best matching font from the indexed fonts.
26224         (IndexFontDirectory): New function to index all fonts in a
26225         directory (and all subdirs).
26226         (TextFont::TextFont): Changed for other API changes.
26228 2008-03-20  Jeffrey Stedfast  <fejj@novell.com>
26230         * downloader.cpp (Downloader::IsDeobfuscated)
26231         (Downloader::SetDeobfuscated, Downloader::SetDeobfuscatedFile):
26232         Some new methods for replacing the original downloaded file with
26233         another tmp file that will need to be unlinked when the downloader
26234         is destroyed or a new file is requested.
26236         * utils.cpp (moon_copy_file): New convenience function.
26238 2008-03-20  Jeffrey Stedfast  <fejj@novell.com>
26240         * downloader.cpp (Downloader::Downloader): Initialize the unzipdir
26241         and unzipped state variables. Get rid of part_hash, no longer
26242         needed.
26243         (Downloader::CleanupUnzipDir): New method to cleanup the files
26244         extracted from any zip files we downloaded.
26245         (Downloader): Call CleanupUnzipDir ().
26246         (Downloader::GetDownloadedFile): New method that gets the original
26247         untouched downloaded file path.
26248         (Downloader::DownloadedFileIsZipped): New method to check to see
26249         if the downloaded file is a zip archive.
26250         (Downloader::GetDownloadedFilePart): A new method that replaces
26251         the old GetResponseFile() API, behaves the same as the old API.
26252         (Downloader::GetUnzippedPath): New method to get the unzip
26253         directory path (and unzip the downloaded file if it hasn't already
26254         been unzipped).
26255         (Downloader::Open): Cleanup any extracted zip files.
26257         * utils.cpp (moon_rmdir): New convenience function.
26259 2008-03-20  Larry Ewing  <lewing@novell.com>
26261         * runtime.cpp (Surface::ShowFullScreenMessage): make sure we set
26262         the surface first so that the changes to the properties cause
26263         invalidations.
26265 2008-03-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26267         * src.mdp: Added new files.
26269 2008-03-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26271         * pipeline.h: Added CanSeekToPts and SeekToPts to IMediaStream.
26273 2008-03-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26275         * pipeline.h: Added two more error conditions.
26277 2008-03-19  Jeffrey Stedfast  <fejj@novell.com>
26279         * font.cpp (TextFont::GetGlyphInfo): Use a different approach to
26280         caching glyphs. Try to take full advantage of the pre-allocated
26281         glyphs array before clobbering previously loaded glyphs.
26283 2008-03-19  Michael Dominic K.  <mdk@mdk.am>
26285         * src/dependencyobject.cpp: Making the prop resolving a bit more
26286         gracefull (smart) in case of common mistakes. 
26288         Solves test-crash-gracefull-prop-resolving.xaml.
26290 2008-03-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26292         * pipeline.cpp: We need to unlock the mutex before joining the
26293         thread. Fixes a dead-lock.
26295 2008-03-19  Geoff Norton  <gnorton@novell.com>
26297         * yuv-converter.cpp:  Use xmm0 to store a load value to avoid a
26298         repeated load.
26300 2008-03-19  Geoff Norton  <gnorton@novell.com>
26301         
26302         * yuv-converter.cpp:  More 64-bit fixes
26304 2008-03-19  Geoff Norton  <gnorton@novell.com>
26305         
26306         * yuv-converter.cpp:  Fix the test/cmp on x86-64
26308 2008-03-18  Geoff Norton  <gnorton@novell.com>
26310         * yuv-converter.cpp:  Fold RESTORE_COLOR_MODIFIERS into
26311         CALC_COLOR_MODIFIERS and prepare our own branches rather than trusting
26312         gcc.  The aligned load/store version of CALC_COLOR_MODIFIERS was
26313         clobbering (x)mm3 (green coefficient) when processing the high order
26314         pels.  I've reordered the method to remove some useless load/calc
26315         patterns that were there simply for readability and fixed the
26316         clobbering.
26317         
26318 2008-03-18  Jeffrey Stedfast  <fejj@novell.com>
26320         * font.cpp (TextFontDescription::CreatePattern): Always return the
26321         original pattern.
26322         (TextFont::Load): No longer takes a fromFile argument.
26323         (TextFont::TextFont): Cache using the original pattern (which is
26324         what we really wanted to do originally, but were caching the
26325         "closest-match" pattern before which was wrong).
26326         (TextFont::GetGlyphInfo): Use FT_Get_Char_Index() rather than
26327         FcFreeTypeCharIndex(). Doesn't fix any bugs, just avoids use of
26328         wrapper API that is unnecessary.
26329         (TextFont::GetGlyphInfo): Added a gross hack for *Che fonts.
26331 2008-03-18  Geoff Norton  <gnorton@novell.com>
26333         * yuv-converter.cpp: 768bits != 768bytes.  Implement prefetching the 
26334         cache lines for the Y plane.
26335         
26336 2008-03-18  Andrew Jorgensen  <ajorgensen@novell.com>
26338         * plugin-ffmpeg.cpp: Remove avformat dependency (not needed anymore)
26339         * plugin-ffmpeg.h: Fix conditional swscale inclusion
26341 2008-03-18  Michael Dominic K.  <mdk@mdk.am>
26343         * animation.cpp:
26344         * animation.h: Adding a new virtual method GetValueKind to Animation
26345         that returns the kind/type of values that given animation generates
26346         (doubles, points, etc.).
26348         Modyfying the HookupStorage to check if the animation type matches the
26349         type that the animated property expects. If it doesn't, bail out with a
26350         helpfull warning in the style of:
26352         "Ellipse.Fill property value type is 'Brush' but animation type is
26353         'Color'"
26355         This fixes a crash in test-crash-color-anim-on-solid.xaml and all
26356         crashes where we try to animate ie. a color property using doubles.
26358 2008-03-18  Michael Dominic K.  <mdk@mdk.am>
26360         * animation.cpp: Even more smoothing for KeySpline.
26362 2008-03-18  Michael Dominic K.  <mdk@mdk.am>
26364         * dependencyobject.cpp: Enabling back the inheritance test for property
26365         resolving but only when dealing with non-attached properties. 
26367 2008-03-17  Geoff Norton  <gnorton@novell.com>
26369         * Makefile.am:
26370         * pipeline-ffmpeg.cpp:
26371         * pipeline-ffmpeg.h:
26372         * swscale-converter.cpp:
26373         * swscale-converter.h:  Refactor the swscale based yuv2rgb converter
26374         out to a seperate file so it can be included optionally in the build.
26376 2008-03-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26378         * mplayer.cpp: Show error message, not only error number, upon thread
26379           creation failure.
26381 2008-03-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26383         * playlist.cpp, playlist.h: Add a way to determine if the playlist was
26384           created to play a single file, or if it was created from an asx file
26385           (IsSingleFile).
26387 2008-03-17  Chris Toshok  <toshok@ximian.com>
26389         * dependencyobject.cpp (EventObject::EventObject): reorder things
26390         to quiet g++.
26392 2008-03-17  Geoff Norton  <gnorton@novell.com>
26394         * yuv-converter.cpp: __attribute ((aligned ())) can be ignored
26395         for locals.  Use posix_memalign and share the instance for the 
26396         lifespan of the converter.
26397         
26398 2008-03-17  Jeffrey Stedfast  <fejj@novell.com>
26400         * font.cpp (FontPackFileFace::FontPackFileFace): Now takes an
26401         index argument, apparently FreeType2 always set face->face_index
26402         to 0 for these type fonts, so don't rely on it being accurate.
26403         (FontPack::CacheFileInfo): Pass the index value as an argument to
26404         FontPackFileFace's ctor.
26405         (TextFont::TextFont): Do hash lookups based on the matched
26406         pattern, not the original pattern passed in.
26408 2008-03-17  Jeffrey Stedfast  <fejj@novell.com>
26410         * text.h: Added #include "layout.h"
26412         * font.cpp: Removed font.cpp's layout logic which has been
26413         rewritten in layout.cpp.
26414         (TextFont::HasGlyph): It seems that Silverlight may wrap text
26415         differently depending on whether the glyph is in the font?
26417         * layout.cpp (TextLayout::LayoutWrap): More tweaking action...
26419 2008-03-17  Geoff Norton  <gnorton@novell.com>
26421         * yuv-converter.cpp: Ensure that our pointer alignment checks are
26422         64-bit safe.
26424 2008-03-17  Michael Dominic K.  <mdk@mdk.am>
26426         * animation.cpp: Interpolate linearly between keyspline values. This
26427         fixes the jags in test-animation-slow-keyspline.xaml.
26429 2008-03-17  Michael Dominic K.  <mdk@mdk.am>
26431         * animation.cpp: Fixes to the way we generate the KeySpline values to be
26432         more smooth an precise.
26434 2008-03-17  Larry Ewing  <lewing@novell.com>
26436         * runtime.cpp: go ahead and invalidate the toplevel before
26437         cleaning everything up. remove the disconnect call in
26438         DestroyWidget, all the handlers should be ok with getting called
26439         on fullscreen or the normal widget.
26441 2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
26443         * layout.cpp (TextLayout::LayoutWrap): Added some improved unicode
26444         line breaking logic.
26446 2008-03-14  Geoff Norton  <gnorton@novell.com>
26447         
26448         * yuv-converter.cpp: Remove some dead code.
26450 2008-03-14  Geoff Norton  <gnorton@novell.com>
26452         * mplayer.cpp: We actually need to align % 64 bytes on a 16 byte 
26453         bounary.  Each pel will expand to 4 bytes.  Since we process 16
26454         pels at a time in SSE2 we need 64 output bytes per iteration.
26456         * yuv-converter.cpp: Remove the rest of the unaligned move/stores
26458 2008-03-14  Sebastien Pouliot  <sebastien@ximian.com>
26460         * xaml.cpp: (flush_char_data) free data inside GString since the
26461         Value constructed around it creates it's own copy.
26463 2008-03-14  Geoff Norton  <gnorton@novell.com>
26465         * pipeline-ffmpeg.cpp: Use posix_memalign for the YUV data buffers
26466         to get a 16byte alignment for SSE2.
26467         * yuv-converter.cpp: Remove most of our unaligned load/stores.
26469 2008-03-14  Larry Ewing  <lewing@novell.com>
26471         * collection.h:
26472         * error.h:     
26473         * eventargs.h, enventargs.cpp:
26474         * type.h, type.cpp: make EventArgs a subclass of DependencyObject
26475         and all that entails.  Still need to look over the properties.
26477         * runtime.cpp, runtime.h: expose EmitError for now.
26478         
26479 2008-03-14  Larry Ewing  <lewing@novell.com>
26481         * mplayer.cpp (MediaPlayer::Open): use posix_memalign to allocate
26482         with a a 16bit alignment for the yuv converter.
26484 2008-03-14  Sebastien Pouliot  <sebastien@ximian.com>
26486         * xaml.cpp: (expat_parser_error) ParserErrorEventArgs free it's 
26487         own copy of the message.
26489 2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
26491         * font.cpp (TextRun::TextRun): Can't drop non-printable chars
26492         because soft-hyphen is apparently non-printable.
26494 2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
26496         * text.cpp (Glyphs::Layout): Check for NULL glyphs (which can
26497         happen now if the glyph does not exist in the font).
26498         (Glyphs::Render): Same.
26500         * font.cpp (TextFont::GetGlyphInfo): Added a new GetGlyphInfo
26501         which takes a unichar and index. This is now the main
26502         implementation that the other GetGlyphInfo() and
26503         GetGlyphInfoByIndex() use. The glyph table is now indexed by index
26504         rather than unichar.
26506 2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
26508         * text.cpp (Glyphs::Layout): Don't error out on (1:1) clusters
26509         without a specified index, these are ok.
26511 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
26513         * brush.cpp: In ImageBrush, if the image has not been downloaded
26514         yet, draw nothing like SL does -- instead of the grayish shadow.
26516 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
26518         * dependencyobject.cpp: Check the types of objects when
26519         resolving_property_paths and some more verbosity to the error
26520         reporting. Now test-crash-non-existing-animation-target-prop3
26521         fails with the proper warning.
26523         Also, terminate first on first error found.
26525 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
26527         * dependencyobject.cpp: Even more verbose error reporting in the
26528         resolve_property_path ().
26530 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
26532         * animation.cpp: Making the warning report proper error when can't
26533         resolve property on object. Now we're getting:
26535         "No property named
26536         (UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)
26537         on object ball, which has type Ellipse!"
26539 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
26541         * animation.cpp: Check correctly if we have object and property
26542         before trying to hookup storage.
26544         Fixes the crash in test-crash-non-existing-animation-target-prop.xaml
26545         but the warning message is still incorrect:
26547                 "No object named ball!"
26549         The object named "ball" exists but it doesn't have the requested
26550         property.
26552 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
26554         * animation.cpp: Changing few printf's to g_warnings.
26556 2008-03-14  Stephane Delcroix  <sdelcroix@novell.com>
26558         * shape.cpp: Deal with different [start|end|dash] caps for lines 
26559         and polylines.
26561 2008-03-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26563         * mplayer.cpp: Comment out printf.
26565 2008-03-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26567         * mplayer.cpp: AudioNode::Play: property calculate the delay between the
26568           play position in the hardware and the pts we just sent to alsa, and
26569           subtract it from that pts.
26571 Thu Mar 13 23:25:41 CET 2008 Paolo Molaro <lupus@ximian.com>
26573         * clock.cpp: use a monotonic clock if available to avoid issues with
26574         the system time changing.
26576 2008-03-13  Jeffrey Stedfast  <fejj@novell.com>
26578         * layout.cpp (TextRun::TextRun): Don't drop non-printable
26579         chars... somehow soft-hyphen (0xAD) is non-printable according to
26580         glib and so breaks the LineBreakBasic1.htm test.
26581         (TextLayout::LayoutNoWrap): Keep appending words to the line until
26582         a line ends beyond max_width, we don't care where it begins (it
26583         could begin way beyond max_width for all we care).
26585 2008-03-13  Chris Toshok  <toshok@ximian.com>
26587         * text.cpp (~Glyphs): don't unref the fill, since we don't take a
26588         ref on it.
26590 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26592         * mplayer.cpp: Make this build on SLED until I find a proper workaround.
26594 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26596         * media.cpp: Update according to MediaPlayer changes.
26598 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26600         * mplayer.cpp, mplayer.h, pipeline.cpp: Play audio on a single
26601         thread. Fixes #326902.
26603 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26605         * Makefile.am: Set our G_LOG_DOMAIN.
26607 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26609         * xaml.cpp: default_create_element_instance: Set the surface as soon as
26610           possible.
26612 2008-03-13  Michael Dominic K.  <mdk@mdk.am>
26614         * animation.cpp: Modyfying the KeyFrameCollection::GetKeyFrameForTime
26615         behavior. When getting the keyframe for time additionally crawl back (if
26616         needed) to find the last non-null keyframe and non-null previous
26617         keyframe. By doing so we silently ignore the frames without values set
26618         and don't crash on nullable types.
26620         Fixes the crash in AnimationMatrix2.html/xaml and in the
26621         test-animation-null-keyframe.xaml test.
26623         Remving the XXX warnings about nullabled types from file since they
26624         don't apply anymore.
26626 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26628         * visual.h, uielement.cpp, visual.cpp: Remove the 'surface' field from
26629           Visual, we're already storing the surface in the EventObject.
26630         * dependencyobject.cpp: EventObject::unref_delayed: remove the #if false,
26631           and comment out the warning, since with the current code it's entirely
26632           possible to unref a dependecyobject with no surface.
26634 2008-03-13  Stephane Delcroix  <sdelcroix@novell.com>
26636         * brush.cpp: compute relative transform as it's done in SL. We used to
26637         derelativize transform to match the absolute ones. Now we map the brush
26638         to a 1x1 square, apply the transform, and unmap back. It simplify the 
26639         computation a lot too. Fixes bnc #354892 and a bad gradient in 
26640         brushes.xaml.
26642 2008-03-12  Chris Toshok  <toshok@ximian.com>
26644         * media.cpp (expand_rgb_to_argb): use a different codepath if the
26645         rowstride isn't padded out to be divisible by 4 (or else we read
26646         off the end by a byte).
26648 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26650         * pipeline.cpp: ASFDemuxer: Only seek in the selected streams.
26652 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26654         * pipeline.cpp, pipeline.h: Break all media threads upon media shutdown.
26655         * pipeline-ffmpeg.cpp: Don't check if we've been registered before, the
26656           pipeline correctly removes registered infos upon shutdown, so if we're
26657           initialized again we should also register again.
26658         * runtime.cpp: Call Media::Shutdown do shut down the media threads before
26659           doing anything else.
26661 2008-03-12  Jeffrey Stedfast  <fejj@novell.com>
26663         * font.cpp (TextRun::TextRun): Fixed canonicalization logic.
26665         * text.cpp (TextBlock::LayoutSilverlight): When creating a list of
26666         TextRun's, if the Run contains \n's, break the text into
26667         non-linebreak and linebreak TextRun elements. Allows the
26668         TextLayout::Layout() logic to be simplified considerably.
26670 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26672         * dependencyobject.cpp: DependencyObject: Initialize our surface field to
26673           NULL.
26675 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26677         * pipeline.h, pipeline.cpp: Add logging macros. Use ErrorEventArgs for error
26678           reporting so that the errors can easily be bubbled up the pipeline. Add
26679           a 'selected' field to IMediaStream, whether the media player is using
26680           that stream or not.
26681         * error.h: Add a MediaErrorEventArgs class.
26683 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26685         * pipeline.cpp: Propagate the surface from the media element to the media.
26687 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26689         * mplayer.cpp, pipeline.cpp, pipeline.h: Add a 'selected' field to the
26690           IMediaStream, indicates whether the stream is being played or not.
26692 2008-03-12  Sebastien Pouliot  <sebastien@ximian.com>
26694         * dependencyobject.cpp: Add NULL check in method 
26695         RemovePropertyChangeListener since a bad XAML input can cause a
26696         NULL entry in the list.
26698 2008-03-12  Michael Dominic K.  <mdk@mdk.am>
26700         * runtime.cpp:
26701         * runtime.h:
26702         * shape.cpp: Properly calculate the shape cache depending on our bpp etc.
26704 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26706         * xaml.cpp: xaml_create_from_file: if there was some error loading the file,
26707           don't crash, print an error message. Dup all strings put into
26708           namespace_map, and free them all upon its destruction.
26710 2008-03-11  Larry Ewing  <lewing@novell.com>
26711         
26712         * collection.cpp (VisualCollection::VisualAdded): make sure we set
26713         the surface as the first step, dirty processing depends on it.
26714         Fixes OM_RemoveClearRemoveAt.htm regression.
26716 2008-03-11  Larry Ewing  <lewing@novell.com>
26718         * canvas.h:
26719         * canvas.cpp (Canvas::OnPropertyChanged): listen to changes on Top
26720         and Left when we are toplevel so that we can recompute our
26721         transform.
26723         * uielement.cpp: if we don't have a parent call GetTransformFor on
26724         ourself so that Top and Left are taken into account on toplevel
26725         canvases.  Fixes test-canvas-toplevel.xaml
26727 2008-03-11  Chris Toshok  <toshok@ximian.com>
26729         * clock.h, clock.cpp: a few changes, the most important
26730         being (ifdefed for now) code to put the timemanager to sleep when
26731         it's not needed for animations, rendering, or tick calls.  To do
26732         this we need a couple of changes to the clock code.  1) propagate
26733         the time_manager out to all clocks, so we can force it to tick the
26734         clock hierarchy the first time whenever a storyboard is started.
26735         2) make Clock/ClockGroup::Tick return a bool, which means "i'll be
26736         in need of another tick."  Do the same for the tick call stuff,
26737         where the bool return value means "we have more tick calls
26738         pending."  Also, add a couple of methods to the
26739         TimeManager (NeedRedraw, NeedClockTick) which will start up the
26740         timemanager if it's asleep, and set the proper flag so it'll do
26741         the right work on the next tick.
26744         * uielement.cpp: notify the timemanager that we have a redraw to
26745         process.
26746         
26747         * runtime.cpp (Surface::realized_callback): tell the time manager
26748         to redraw us to get the process moving.
26750 2008-03-11  Sebastien Pouliot  <sebastien@ximian.com>
26752         * xaml.cpp: Work around the fact that it's not always safe to 
26753         call some expat functions, like XML_GetCurrentLineNumber, if the
26754         parsing failed early.
26756 2008-03-11  Chris Toshok  <toshok@ximian.com>
26758         * namescope.h, namescope.cpp: switch from reffing the objects to
26759         using the DestroyedEvent.  Otherwise our toplevel canvas has a ref
26760         cycle with its namescope.  Also, short circuit out if we're
26761         registering the same object twice.  keeps us from having too many
26762         DestroyedEvents (since RemoveHandler only removes one).
26764         * dependencyobject.h, dependencyobject.cpp: move
26765         GetSurface/SetSurface to EventObject, and add unref_delayed as a
26766         method.  If the event object has a surface associated with it, add
26767         it to the surface's pending list of unrefs.  otherwise warn us and
26768         add it to the global list.  The warnings should be fixed as the
26769         global list really should go away.
26771         Also, before we free a value, make sure to remove our handler and
26772         unset the closure.
26774         Also, get rid of OBJECT_TRACK_ID.  use an environment variable for
26775         this.  So if you compile with OBJECT_TRACKING on, nothing new
26776         happens unless you set the "MOONLIGHT_OBJECT_TRACK_ID" environment
26777         variable to the id of the object you want to track.  Makes the
26778         turnaround time a little quicker.
26780         shift some things around in the header file while I'm making this
26781         change.
26783         * runtime.h, runtime.cpp: move some more methods to the .cpp from
26784         the .h, and also add the per-surface pending unrefs list.  This is
26785         basically a c&p of the global list from dependency.cpp.
26787         * downloader.h, downloader.cpp: remove Get/Set Surface in favor of
26788         using EventObject's.
26789         
26790 2008-03-11  Sebastien Pouliot  <sebastien@ximian.com>
26792         * xaml.cpp: Add NULL check in dependency_object_add_child since
26793         parent->parent->item may be NULL in malformed XAML files.
26795 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26797         * pipeline.h, media.cpp, pipeline.cpp: Rename GetPositionOfPts to
26798           EstimatePtsPosition and remove the estimate parameter, it's never used.
26800 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26802         * runtime.cpp: No need to scream in printfs.
26804 2008-03-11  Jeffrey Stedfast  <fejj@novell.com>
26806         * font.cpp (TextLayout::Layout): More fixes, this is getting
26807         gross.
26809 2008-03-11  Sebastien Pouliot  <sebastien@ximian.com>
26811         * xaml.cpp: Avoid crashing if the PML does not start with a 
26812         M(ove) instruction.
26814 2008-03-11  Michael Dominic K.  <mdk@mdk.am>
26816         * src/: Moving implementations from .h to .cpp, leaving only
26817         setters/getters + simple constructors in .h.
26819 2008-03-11  Larry Ewing  <lewing@novell.com>
26821         * xaml.cpp (dependency_object_set_property): throw an error if we
26822         get here without a DependencyObject.  Fixes
26823         test-property-parsing.xaml
26825 2008-03-10  Larry Ewing  <lewing@novell.com>
26827         * panel.cpp:
26828         * uielement.cpp: add more checks to the parent tree.
26830 2008-03-10  Chris Toshok  <toshok@ximian.com>
26832         * dependencyobject.cpp (~DependencyObject): use
26833         g_hash_table_foreach_remove, so the dtor of one value can't access
26834         an already destroyed DO from another value.
26836 2008-03-10  Chris Toshok  <toshok@ximian.com>
26838         * namescope.cpp: don't explicitly unref the object when removing
26839         it.  instead use base_unref as the value-dtor for the GHashTable.
26840         This will cause unrefs when the hash table is destroyed in the
26841         dtor (a case we were missing before.)
26843         * collection.h, collection.cpp (class Collection): factor out the
26844         body of Collection::Clear into a non-virtual method that we can
26845         call from the dtor.
26847 2008-03-10  Larry Ewing  <lewing@novell.com>
26849         * uielement.cpp:
26850         * panel.cpp: make sure we don't subtract the region unless non of
26851         our anscestors have a slip mask.  This should be implemented in a
26852         more efficient way.
26854 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26856         * playlist.cpp, playlist.h: Move PlaylistContent info PlaylistEntry.
26858 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26860         * dependencyobject.h, dependencyobject.cpp: Enable object counting when
26861           DEBUG is defined.
26862         * runtime.cpp: Show a message if we leak objects and DEBUG is defined.
26863         * pipeline.cpp: Remove printfs.
26865 2008-03-10  Larry Ewing  <lewing@novell.com>
26867         * geometry.h:
26868         * geometry.cpp: make IsBuilt check for actual path data as well
26869         then use it everywhere we need it.  Invalidate the path if the
26870         figures change.  Fixes test-transform-clip.htm.
26872 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26874         * playlist.cpp: Playlist::AddEntry: unref the entry after adding it.
26876 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26878         * mplayer.cpp: When stopping, we need to seek to the beginning again. Fixes
26879           #368461.
26881 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26883         * media.cpp: Update according to pipeline changes. TryOpen: our
26884           downloaded_file field may change when we call MediaOpened, so save a
26885           local copy before calling MediaOpened. Unref our playlist upon
26886           destruction, and 
26887         * mplayer.cpp: Update according to changes in the pipeline.
26888         * pipeline.cpp, pipeline.h: Delete all but one of GetNextFrameAsync, the
26889           rest aren't used. Make the remaining method take the stream as a
26890           parameter, and the resulting frame will be put in the closure. Also
26891           handle the case when the codec returns MEDIA_CODEC_DELAYED, in which
26892           case just try again with the next frame. Make MediaWork ref/unref the
26893           fields that can be ref counted. 
26894         
26895 2008-03-10  Chris Toshok  <toshok@ximian.com>
26897         [ Fixes bug #368460 ]
26898         * collection.cpp (Collection::SetVal): make sure to unregister the
26899         name of the object(s) we remove from the collection.
26900         (Collection::Remove): same.
26901         (Collection::RemoveAt): same.
26902         (Collection::Clear): same.
26904         * namescope.cpp (NameScope::RegisterName): ref the object.
26905         (NameScope::UnregisterName): unref the object.
26907 2008-03-10  Jeffrey Stedfast  <fejj@novell.com>
26909         * font.cpp (TextLayout::Layout): More line-wrap fixes - implement
26910         Silverlights TextWrapping="Wrap" bug where it doesn't ever break
26911         the last word.
26913 2008-03-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26915         * src.mdp: Updated.
26917 2008-03-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26919         * dependencyobject.h: Make the OBJECT_TRACKING stuff public.
26920         * runtime.cpp: Use GetRefCount, not refcount.
26922 2008-03-10  Chris Toshok  <toshok@ximian.com>
26924         * runtime.h, runtime.cpp: add surface_get_time_manager.
26926         * downloader.h, downloader.cpp: add downloader_get_surface.
26927         
26928 2008-03-10  Michael Dominic K.  <mdk@mdk.am>
26930         * runtime.cpp:
26931         * runtime.h:
26932         * shape.cpp: Making the shape-caching a runtime parameter
26933         (shapecache=yes). Turned off right now.
26935 2008-03-10  Michael Dominic K.  <mdk@mdk.am>
26937         * shape.cpp: Tiny refactoring to the surface-size calculation code.
26939 2008-03-10  Michael Dominic K.  <mdk@mdk.am>
26941         * runtime.h:
26942         * shape.cpp: Adding functionality to limit the amount of caching
26943         happening on one surface. Currently set to ~6mb. 
26945 2008-03-09  Larry Ewing  <lewing@novell.com>
26947         * mplayer.cpp: fix another place that used the wrong stride.
26949 2008-03-09  Geoff Norton  <gnorton@novell.com>
26951         * yuv-converter.cpp: Make sure we emms after finishing sse/mmx 
26952         instrucitons.
26954 2008-03-09  Geoff Norton  <gnorton@novell.com>
26956         * yuv-converter.cpp: Detect the CPU features at runtime.  We
26957         should now be able to distribute a 32-bit SSE2/MMX build to
26958         non SSE2/MMX machines
26960 2008-03-09  Geoff Norton  <gnorton@novell.com>
26962         * yuv-converter.cpp: Implement runtime fallbacks in the Convert
26963         function (TODO: Still need to runtime detect SSE2/MMX) 
26965 2008-03-09  Larry Ewing  <lewing@novell.com>
26967         * mplayer.cpp (MediaPlayer::Open): make the stride % 16 for now.
26969 2008-03-09  Larry Ewing  <lewing@novell.com>
26971         * mplayer.cpp (MediaPlayer::Open): use the proper stride
26972         calculation functions.
26974 2008-03-08  Geoff Norton  <gnorton@novell.com>
26976         * yuv-converter.cpp:  Implement a SSE2 version of the YUV2RGB
26977         codepath along with some code cleanup.  Still some more cleanup
26978         to do for runtime detection of CPU features.
26980 2008-03-08  Geoff Norton  <gnorton@novell.com>
26982         * yuv-converter.cpp:  Fix some erroneous math.  U' != U.
26983         These coefficients are far more sane now and our lum change is 
26984         reflected properly.
26986 2008-03-08  Chris Toshok  <toshok@ximian.com>
26988         * clock.cpp (TimeManager::SourceTick): larry gets credit for
26989         spotting this problem and suggesting the fix.  remove the
26990         hysteresis code, and *always* set a new timeout, based on what our
26991         idea of the timeout and the amount of time we spent rendering the
26992         previous frame.  This smooths things out immensely, removes (for
26993         me) the animation stutters induced by audio in sprawl, and results
26994         in fewer dropped frames.
26996 2008-03-08  Geoff Norton  <gnorton@novell.com>
26998         * yuv-converter.cpp: Fix the luminance problem (Y needs shift;
26999         and b was pulling the wrong l/h value.
27001 2008-03-08  Chris Toshok  <toshok@ximian.com>
27003         * value.cpp (Value::CreateUnrefPtr): use GetRefCount() instead of
27004         accessing dob->refcount.
27005         (Value::CreateUnref): same.
27007         * dependencyobject.h, dependency.cpp (class EventObject): reorder
27008         this class definition so that we don't have multiple
27009         public/protected/private areas.  confusing as hell :) Also, move
27010         the implementations of the non-performance critical things into
27011         the .cpp file, as they were making the .h rather cluttered (ctor,
27012         dtor, weak ref/unref.)  Lastly, make almost everything private
27013         instead of public (most importantly the refcount.)
27015         * debug.h, debug.cpp: random code cleanup.  we don't need to be
27016         concerned with adding some additional stack methods to the plugin
27017         in the DEBUG case, so go ahead and just use DEBUG here instead of
27018         STACK_DEBUG.
27020 2008-03-08  Chris Toshok  <toshok@ximian.com>
27022         * uielement.cpp, text.cpp, clock.cpp, mplayer.cpp: remove the
27023         extern guint32 moonlight_flags.
27025         * pipeline.cpp: if RUNTIME_INIT_CONVERTER_YUV, use the yuv
27026         converter, otherwise use ffmpeg.
27028         * runtime.h: add RUNTIME_INIT_CONVERTER_YUV to the list of init
27029         flags, and (my god) put the extern moonlight_flags here.
27031         * runtime.cpp: add yuv converter options. use
27032         MOONLIGHT_OVERRIDES=converter=yuv to enable it.  default is
27033         "converter=ffmpeg".
27035 2008-03-08  Geoff Norton  <gnorton@novell.com>
27037         * yuv-converter.cpp: Clear the mmx state when we're done
27038         processing.  Fixes most problems on x86_32.
27040 2008-03-08  Geoff Norton  <gnorton@novell.com>
27042         * pipeline.cpp: Disable YUV converter, its crashing on x86_32
27043         currently.
27045 2008-03-08  Geoff Norton  <gnorton@novell.com>
27046         
27047         * pipeline-ffmpeg.cpp:  Dont register YUV converter here.
27048         * pipeline.cpp: Register YUV converter here.
27050 2008-03-08  Geoff Norton  <gnorton@novell.com>
27052         * yuv-converter.cpp:  Remove some code duplication and refactor
27053         to support register starved implementations.
27055 2008-03-08  Geoff Norton  <gnorton@novell.com>
27057         * Makefile.am: Add yuv-converter.cpp to the build
27058         * yuv-conveter.*: Our YUV2RGB 420P converter.  Replaces
27059         libswscale.
27060         * pipeline-ffmpeg.cpp: Use YUVConverter instead of libswscale.
27062 2008-03-08  Chris Toshok  <toshok@ximian.com>
27064         * clock.h, clock.cpp, animation.cpp: a few clock related changes.
27066         1. Revert the change that uses "forward" to tell if we're moving
27067         forward or not.  This isn't the only indicator, as a parent clock
27068         might be ticking backward, so we really do need to use "our_delta"
27070         2. Also, we need to not clamp the time of the clock (on either
27071         end) when we're filling, as if the parent's duration is longer
27072         than ours and they autoreverse, there needs to be some padding in
27073         the reverse direction before we start again.
27075         3. Only call ComputeBeginTime() on a newly created clock if the
27076         timeline has a begin time specified.  Otherwise, use
27077         BeginOnTick/GetBeginOnTick to make it begin on the next tick.
27078         This fixes the chess animation breakage.  The problem was caused
27079         by us computing the begin time immediately in Storyboard::Begin,
27080         which would calculate the clock's begin time relative to the
27081         *previous* tick.  on the next tick, the clock was almost always at
27082         1.0 progress, which caused the animations to skip directly to the
27083         end.
27085 2008-03-08  Chris Toshok  <toshok@ximian.com>
27087         * value.cpp, type.cpp, type.cpp.in, trigger.cpp, runtime.cpp,
27088         dirty.cpp, dependencyobject.cpp: more assert removal.  we can't
27089         assert in a plugin (even if people are running a debug build it's
27090         not exactly nice to bring down their browser.)
27092 2008-03-07  Chris Toshok  <toshok@ximian.com>
27094         * value.cpp (Value::CreateUnrefPtr): don't assert here.
27095         (Value::CreateUnref): same.
27097 2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27099         * type.cpp.in, typegen.cs, type.cpp: If the type system is accessed when
27100           it's not initialized, print a warning and re-initialize it.
27102 2008-03-08  Fernando Herrera  <fherrera@novell.com>
27104         * pipeline.cpp:
27105         * playlist.cpp:
27106         * playlist.h: Add support for ASX2 playlist files returned by
27107         mediaservers when requesting a mmsh file over plain http. Fixes
27108         http://channel9.msdn.com.
27110 2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27112         * pipeline.cpp: Add a couple of null checks in ~Media. Detect ASX files
27113           case-insensitively.
27115 2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27117         * pipeline.h, pipeline.cpp: Refcount IMediaObject, and make dtors in all
27118           derived classes protected.
27119         * media.cpp: Update according to pipeline changes. TryOpen: our
27120           downloaded_file field may change when we call MediaOpened, so save a
27121           local copy before calling MediaOpened.
27123 2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27125         * clock.cpp, clock.h: Added TimeManager::InvokeOnMainThread.
27126         * mplayer.cpp: Use TimeManager::InvokeOnMainThread instead of finding a
27127           TimeManager instance to add the timeout to.
27129 2008-03-07  Sebastien Pouliot  <sebastien@ximian.com>
27131         * downloader.cpp: Fix access to Status from JScript.
27133 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27135         * mplayer.cpp: LoadVideoFrame: if we got the last frame, don't request any
27136           more frames.
27138 2008-03-07  Sebastien Pouliot  <sebastien@ximian.com> 
27140         * brush.cpp: Fix default value for ColorInterpolationMode (js
27141         unit tests)
27142         * parsertest.cpp: Adapt to API change.
27143         * xaml.cpp|h: Change value_from_str[_with_typename] to return a
27144         bool since NULL can be a valid Value in some cases (e.g. empty
27145         stuff that should not reset the DO default values).
27147 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27149         * mplayer.cpp: Add a null check before accessing any time managers.
27151 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27153         * brush.cpp, uielement.cpp: Use MediaElement::GetMediaPlayer instead of
27154           accessing the field.
27155         * media.cpp, media.h: Use MediaElement::GetMediaPlayer instead of accessing
27156           the field. Update according to pipeline changes.
27157         * mplayer.cpp, mplayer.h: Update according to pipeline changes.
27158         * pipeline.cpp, pipeline.h: Make Media inherit from EventObject so that it
27159           can be ref counted. Make MediaClosure more intelligent by ref/unreffing
27160           the context and media fields. All variations of MediaWork has a closure,
27161           so move the closure field out of the union. This simplifies
27162           Media::WorkerLoop a bit. Add a Media::SeekToStart, which is required to
27163           not cause any reads/seeks which may block. Remove SetQueueCallback, the
27164           request takes a closure now. Implement an ASXDemuxer to read ASX files.
27165         * sizes.cpp: Updated.
27166         * playlist.h, playlist.cpp: First part of the new playlist support.
27168 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27170         * dependencyobject.cpp: Make the output in EventObject::Track print
27171           atomically. Really avoids a lot of confusion if several threads are
27172           printfing at the same time.
27174 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27176         * debug.cpp: Add a couple of null checks.
27178 2008-03-06  Jeffrey Stedfast  <fejj@novell.com>
27180         * font.cpp (TextLayout::Layout): Don't wrap on a space char, ever.
27181         (TextLayout::Layout): Don't include trailing lwsp in the line
27182         width calculation unless it is the last line.
27183         (TextLayout::Layout): Don't include trailing empty lines in the
27184         height calculation.
27186 2008-03-06  Chris Toshok  <toshok@ximian.com>
27188         * clock.h, clock.cpp: some changes to make TimeManager a
27189         per-surface item, instead of a singleton/global.  The time manager
27190         creates a root clock group, just like Surface used to, which is
27191         the parent of all storyboards for a surface.
27192         
27193         * dirty.h, dirty.cpp: remove the method prototypes and globals -
27194         switch everything to be Surface:: methods.
27195         
27196         * runtime.h, runtime.cpp: get rid of our ClockGroup and Timeline
27197         for the root clock, and create a TimeManager instead.  Also, add
27198         the dirty methods/fields to Surface, even though the
27199         implementation still lives in dirty.cpp.  Also, call
27200         toplevel->SetSurface(NULL) early in our dtor so that elements can
27201         react before, e.g., the time manager has been destroyed.
27203         * media.h, media.cpp: use the surface's TimeManager instead of a
27204         global one.  Also override SetSurface so we can tell if we're
27205         losing access to it, and remove our timeout accordingly.
27207         * mplayer.cpp: use the media element's TimeManager.
27209         * visual.h, visual.cpp: add GetTimeManager() method, which just
27210         does GetSurface()->GetTimeManager().
27212         * dependencyobject.cpp (base_unref_delayed): as much as I hate to
27213         do this, use a g_idle instead of a tick call here, since we have
27214         no access to the surface.
27216         * animation.cpp (Storyboard::Begin): the surface no longer has the
27217         root clock group, the surface's TimeManager does.
27219         * panel.h, panel.cpp (SetSurface): recursively call SetSurface on
27220         our children.
27222         * uielement.h, uielement.cpp: translate global dirty calls into
27223         surface calls, and override SetSurface to remove ourselves from
27224         the dirty list if we're losing our surface.
27226         * eventargs.cpp: translate global dirty calls into surface calls.
27227         
27228 2008-03-06  Michael Dominic K.  <mdk@mdk.am>
27230         * src/clock.cpp: In ClockGroup Clamp the time *before* ticking on
27231         child clocks. Othewise children always get a small delta and keep
27232         going beyond the parent Duration bounds. Fixes the contrained
27233         storyboard examples.
27235         Also making the forward/backward ComputeNewTime behavior depend on
27236         'forward' instead of out_delta (which can be 0 if hitting bounds).
27238 2008-03-06  Sebastien Pouliot  <sebastien@ximian.com>
27240         * transform.cpp: Fix Matrix default values to match identity 
27241         matrix (and fix one js unit test).
27243 2008-03-05  Larry Ewing  <lewing@novell.com>
27245         * shape.cpp: drop the code that checks stretch when building the
27246         paths for polyline and polygon.  Fix the condition for translation.
27248 2008-03-05  Larry Ewing  <lewing@novell.com>
27250         * shape.h:
27251         * shape.cpp: refactor the stretch code slightly and fix the
27252         original stretch tests (that passed the harness but are clearly
27253         wrong).
27255 2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27257         * media.h: Made destructors in objects deriving from EventObject protected,
27258           preventing 'delete obj' and stack-allocation for these objects.
27259         
27260         * playlist.cpp: Can't delete downloaders anymore, unref it.
27262 2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27264         * animation.h, brush.h, canvas.h, clock.h, collection.h, control.h,
27265           dependencyobject.h, downloader.h, frameworkelement.h, geometry.h,
27266           namescope.h, panel.h, runtime.h, shape.h, stylus.h, text.h, transform.h,
27267           trigger.h, uielement.h, visual.h: Made destructors in objects deriving
27268           from EventObject protected, preventing 'delete obj' and stack-allocation
27269           for these objects.
27270         * demo.cpp, runtime.cpp: Can't delete a surface anymore, unref it.
27271         * dirty.h: Added header.
27273 2008-03-05  Chris Toshok  <toshok@ximian.com>
27275         * runtime.h (RUNTIME_INIT_DESKTOP, RUNTIME_INIT_BROWSER): make
27276         front-to-back rendering the default.
27278 2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27280         * clock.h, playlist.h, trigger.h, text.h, clock.cpp, playlist.cpp,
27281           trigger.cpp, dependencyobject.h, downloader.cpp, dependencyobject.cpp,
27282           media.h, animation.h, brush.h, runtime.h, media.cpp, animation.cpp,
27283           runtime.cpp, text.cpp: Updated event handling to take an EventArgs*
27284           calldata instead of a gpointer.
27285         * error.h: Added EventArgs, a base class for all *EventArgs.
27286         * collection.h: Make ChangeEventArgs inherit from EventArgs.
27287         * uielement.cpp: Create all *EventArgs on the heap and simply the code a
27288           bit.
27289         * collection.cpp: Don't allocate Collection::ChangeEventArgs on the stack.
27290         * eventargs.cpp, eventargs.h: Added EventArgs, a base class for all
27291           *EventArgs. Added MarkerReachedEventArgs.
27292         * brush.cpp: Updated event handling to take an EventArgs* calldata instead
27293           of a gpointer. ~ImageBrush: don't delete, unref.
27295 2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27297         * value.cpp: Fix warning.
27299 2008-03-05  Larry Ewing  <lewing@novell.com>
27301         * shape.cpp: Fix line, polyline and polygon to apply stretches
27302         properly (modulo pesimistic shape bounds bugs).  Mostly fixes
27303         test-shape-line-stretch2.xaml, test-shape-polyline-stretch2.xaml
27304         and test-shape-polygon-stretch2.xaml. 
27306         * shape.h: move stretch transform out of Path and into Shape.
27308         * stylus.h:
27309         * stylus.cpp: include the strokes in the subtree bounds so that we
27310         will get invalidations and update bounds when the collection
27311         changes.  There are still potential bounds issues point changes,
27312         those are being looked into.  Fixes invalidation issues in
27313         test-inkpresenter-position and test-inkpresenter-scale.
27315 2008-03-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27317         * xaml.cpp: Add a null at the end of the namespace array.
27319 2008-03-05  Jeffrey Stedfast  <fejj@novell.com>
27321         * font.cpp (TextRun::TextRun): Drop \r's and convert non-new-line
27322         white space into a simple space.
27323         (TextLayout::Layout): Treat embedded \n's as LineBreaks
27324         (TextLayout::Layout): When calculating the width of a line that
27325         ends in a space, don't include the width of the space char -
27326         Silverlight doesn't seem to.
27327         (TextLayout::Layout): Don't pad the height. Don't pad the width
27328         either, altho it seems like a padding of +2.0 is about right but
27329         ONLY if the text is in a canvas? See OMTextInline.htm's
27330         actualWidth/Height measurements as well as the out-of-tree
27331         measurement.
27333         * xaml.cpp (char_data_handler): Always create the GString cdata,
27334         we need to note leading lwsp which the old implementation didn't.
27335         (flush_char_data): Try to emulate Silverlight's chug/chomp
27336         behavior more closely.
27338 2008-03-05  Chris Toshok  <toshok@ximian.com>
27340         * canvas.cpp (Canvas::OnSubPropertyChanged): make sure to chain up
27341         to panel's OnSubPropertyChanged if we don't handle it.
27343         * dependencyobject.cpp (DependencyObject::NotifyListenersOfPropertyChange):
27344         make sure we don't call this method with NULL args.  Also, remove
27345         larry's g_warning (which wasn't the case, i tested with sprawl!),
27346         and also remove the check for matching property/parent type for
27347         attached properties.  this will break controls.
27349         * transform.h, transform.cpp: it used to be that logical parents
27350         of children could rely on OnSubPropertyChanged being invoked for
27351         any property change.  This is no longer the case - the only
27352         instance where it still happens is if there's an attached property
27353         involved.  All other cases have to use OnCollectionChanged.  So,
27354         switch OnSubPropertyChanged to OnCollectionChanged here.
27356 2008-03-05  Jeffrey Stedfast  <fejj@novell.com>
27358         * text.cpp (TextBlock::OnCollectionChanged): We need to update
27359         bounds/text even if element_args is NULL (because adding/removing
27360         an item still changes our text).
27361         (Inline::OnPropertyChanged): Use args->new_value.
27363 2008-03-05  Chris Toshok  <toshok@ximian.com>
27365         * transform.h, transform.cpp: remove
27366         TransformCollection::OnSubPropertyChanged.  it was gumming up the
27367         works.
27369 2008-03-05  Larry Ewing  <lewing@novell.com>
27371         * shape.cpp: disable the shape caching code for now unless
27372         USE_OPT_SHAPE_SURFACE_CACHING=1.
27374 2008-03-05  Michael Dominic K.  <mdk@mdk.am>
27376         * Makefile.am:
27377         * enums.c:
27378         * enums.h:
27379         * xaml.cpp: Taking out all the enum->str (and vice versa) code from
27380         xaml.cpp and putting it into a new file -> enum.c + some utilities. 
27382         The enum<->str code is not specific to xaml and is usefull from plugin as
27383         well.
27385 2008-03-05  Stephane Delcroix  <sdelcroix@novell.com>
27387         * media.cpp: close the pixbuf_loader to load the small images too.
27389 2008-03-04  Chris Toshok  <toshok@ximian.com>
27391         * runtime.cpp (Surface::expose_to_drawable): re-enable the
27392         clearing of the cairo surface, but only if we have a
27393         widget (i.e. not in the windowless plugin case.)  Should fix
27394         translucent desklets without breaking the plugin.
27396 2008-03-04  Chris Toshok  <toshok@ximian.com>
27398         [ rather large change, reworking much of the property change event
27399         system to be a little smaller api surface-wise, and also cleaning
27400         up uses of it to remove some of the accumulated cruft that we'd
27401         developed over the past 10 months.]
27402         
27403         * dependencyobject.h, dependencyobject.cpp: A few key changes:
27405         1. Attach -> AddPropertyChangeListener
27406            Detach -> RemovePropertyChangeListener
27407            NotifyAttachersOfPropertyChange -> NotifyListenersOfPropertyChange
27409            This was done to remove the confusion between "attached"
27410            properties and our use of the word "attach" to mean "listen for
27411            property changes".  Attached properties are those which
27412            implicitly notify the parent when they're changed.
27413         
27414            OnChildPropertyChanged is gone.  Canvas (the only user of it)
27415            now uses OnSubPropertyChanged to deal with child property
27416            changes.
27418         2. *PropertyChanged methods take a
27419            structure (PropertyChangedEventArgs) that contains the
27420            DependencyProperty, as well as the old and new values of it.
27421            This was to remove the need for almost every
27422            OnPropertyChangedMethod to immediately call GetValue on the
27423            property.  Passing the old value requires changing the
27424            current_values hash to not have a value destructor, so we have
27425            to manually delete values again.
27427         3. Reordered the args for
27428            AddPropertyChangeListener/RemovePropertyChangeListener so that
27429            the listener comes first and the second arg defaults to NULL.
27430            Cleans up a bit of the use of this method globally.
27432         * animation.h, animation.cpp: track OnSubPropertyChanged changes.
27434         * brush.h, brush.cpp (SolidColorBrush::OnPropertyChanged,
27435         LinearGradientBrush::OnPropertyChanged,
27436         RadialGradientBrush::OnPropertyChanged): remove, unnecessary.
27438         also lots of changes to use args->new_value instead of calling
27439         GetValue(property).
27441         Clear up confusion regarding the meaning of the property passed to
27442         AddPropertyChangeListener.
27444         * canvas.h, canvas.cpp: switch OnChildPropertyChanged to
27445         OnSubPropertyChanged.
27446         
27447         * collection.h, collection.cpp (Node::Node): don't add parent as a
27448         listener for every property change here.  We handle this
27449         specifically (and automatically) in
27450         DependencyObject::NotifyListenersOfPropertyChange, but only for
27451         attached properties.
27452         (Node::~Node): don't remove the listener here either.
27454         lots of tracking the DO api changes here too.
27456         * control.h, control.cpp: track On*PropertyChanged changes.
27458         * font.cpp: fix some warnings
27460         * frameworkelement.h, frameworkelement.cpp: track
27461         On*PropertyChanged changes.
27462         
27463         * geometry.h, geometry.cpp: track On*PropertyChanged changes.
27464         
27465         * media.h, media.cpp (MediaElement::OnPropertyChanged): remove a
27466         lot of the empty blocks here - there's nothing to do for these
27467         properties, so we might as well not bloat the code.  Also, use
27468         new_value when we can.
27469         (Image::DownloaderComplete): add a (I hope) suitably nasty comment
27470         about calling brush->OnPropertyChanged directly.  code shouldn't
27471         do this, we should figure out if we can just set the property, and
27472         if so, do that.  otherwise something else is broken.
27473         (Image::OnPropertyChanged): use new_value where we can.
27475         * panel.h, panel.cpp: remove the cached background field.  It
27476         wasn't used except to Attach/ref + Detach/unref it, and that's
27477         handled automatically by the DependencyProperty machinery.
27478         Otherwise just track the On*PropertyChanged api changes.
27480         * shape.h, shape.cpp: similarly, we don't need to ref/attach our
27481         cached stroke and fill fields.  They're populated for us (and
27482         ref'ed/unref'ed as needed), so we don't need anything additional
27483         here.  Use new_value instead of GetValue in OnPropertyChanged.
27484         Also, factor out some redundant code from all the subclass
27485         OnPropertyChanged methods that was nearly the same as the
27486         Shape::OnPropertyChanged code for it.
27488         * stylus.h, stylus.cpp: On*PropertyChanged api changes.
27490         * text.h, text.cpp: mostly On*PropertyChanged api changes, and
27491         lots of using new_value instead of GetValue, but also get rid of
27492         the cached TextBlock foreground instance field.  It's easy enough
27493         to fetch when we need it in the ::Paint method, and the
27494         dependencyobject stuff already refs and attaches to it.
27496         * transform.h, transform.cpp: lots of On*PropertyChanged api
27497         changes, and using new_value instead of GetValue.
27499         * uielement.h, uielement.cpp: remove the cached opacityMask
27500         field (it wasn't used except for attach/detach, which is handled
27501         for us.)  The usual On*PropertyChanged changes as well as using
27502         new_value instead of GetValue.
27503         
27504 2008-03-04  Jeffrey Stedfast  <fejj@novell.com>
27506         * xaml.cpp (style_simulations_map): There's only one
27507         StyleSimulation value, and that is None.
27509         * font.cpp (TextLayout::Layout): In Wrap mode, if we overflow the
27510         width and the text is not part of the first run on a line, break
27511         at the beginning of the Run. This seems to be what Silverlight
27512         does in OMTextInline.htm.
27514 2008-03-04  Larry Ewing  <lewing@novell.com>
27516         * eventargs.cpp: update the dirty list before trying calculating
27517         relative locations.
27518         
27519         * runtime.cpp (Surface::HandleMouseEvent): process dirty elements
27520         here so that our hit testing has up to date bounds.
27523         * dirty.h: remove the prototypes for up/down since it isn't safe
27524         to split the up/down passes.
27526         * src/uielement.cpp: remove dirty processing.
27527         
27528 2008-03-04  Stephane Delcroix  <sdelcroix@novell.com>
27530         * media.cpp: use a pixbuf_loader instead of the pixbuf_new_from_file to
27531         create the pixbuf from a file, allowing partial rendering of broken
27532         imagefiles, like in Image.htm
27534 2008-03-04  Jeffrey Stedfast  <fejj@novell.com>
27536         * text.cpp (Inline::GetDefaultValue): Implemented.
27538 2008-03-04  Michael Dominic K.  <mdk@mdk.am>
27540         * src/uielement.cpp: When calling uielement_transform_point, make sure our
27541         transforms are up-to-date (not dirty).
27543         Since we're updating the transform matrices only in the expose (dirty)
27544         callback it can happen that two ie. mouse events arrive before we get to
27545         the expose. If the first mouse event invalidated the transform and the
27546         second one relies on the transform (ie. tries to obtain relative mouse
27547         position) it'd get bogus values since the transform has not been
27548         regenerated yet.
27550         Fixes the drag & drop behaviour in SL ink journal (the selection tool).
27551         Fixes: #362227.
27553 2008-03-04  Michael Dominic K.  <mdk@mdk.am> 
27555         * src/dirty.cpp:
27556         * src/dirty.h: Splitting the process_dirty_elements () into two individual
27557         chunks -- process_down_dirty_elements () and process_up_dirty_elements ().
27558         process_dirty_elements () now calls both. 
27560         The point here is that we need to process down dirty elements (call
27561         process_down_dirty_elements ()) from other contextes as well.
27563 2008-03-03  Larry Ewing  <lewing@novell.com>
27565         * uielement.cpp:  Call FullInvalidate when clip changes so that
27566         our subtree bounds are updated and invalidated.  Make sure we
27567         don't reset the forced invalidate flag.
27568         
27569         * dirty.cpp: invalidate subtree bounds on forced invalidations.
27570         Fixes test-clip-invalid-update.htm.
27571         
27572 2008-03-03  Jeffrey Stedfast  <fejj@novell.com>
27574         * text.cpp (TextBlock::GetText): New method to generate a string
27575         representing the Text property from the inlines.
27576         (TextBlock::SetText): New method (split out from the old
27577         ::SetValue code) to parse the newly set text string into a list of
27578         Inlines and update out InlinesProperty if changed. Returns whether
27579         or not the inlines property changed.
27580         (TextBlock::OnPropertyChanged): Call SetText() to update out
27581         Inlines if the TextProperty value was changed by an outside
27582         source. If the InlinesProperty was changed by an outside source,
27583         update our TextProperty.
27584         (TextBlock::OnCollectionChanged): Update our TextProperty if an
27585         Inline was added or removed or if a Run element had its
27586         TextProperty changed.
27588 2008-03-03  Chris Toshok  <toshok@ximian.com>
27590         * animation.cpp: plug a memory leak in the 3
27591         UsingKeyFrames::GetCurrentValue methods.
27593 2008-03-03  Chris Toshok  <toshok@ximian.com>
27595         * transform.h, transform.cpp: Make Matrix::GetUnderlyingMatrix
27596         return a cairo_matrix_t instead of a pointer to the
27597         internal (mutable) field, and update its only use.
27599 2008-03-03  Jeffrey Stedfast  <fejj@novell.com>
27601         * media.cpp (media_element_get_audio_stream_index): Fixed to
27602         handle nullable value.
27603         (media_element_set_audio_stream_index): Same.
27604         (media_init): Register the AudioStreamIndex property as being
27605         nullable.
27606         (MediaElement::Reinitialize): Set the CurrentStateProperty to
27607         "Closed".
27609 2008-03-03  Jeffrey Stedfast  <fejj@novell.com>
27611         * media.cpp (media_init): Register AudioStreamCount,
27612         BufferingProgress, CanPause, CanSeek, CurrentState,
27613         NaturalDuration, NaturalVideoWidth, NaturalVideoHeight properties
27614         as being read-only.
27616         * text.cpp (text_init): Register ActualWidth and ActualHeight
27617         properties as ReadOnly.
27619         * transform.cpp (Matrix::GetValue): Removed.
27620         (Matrix::SetValue): Removed.
27621         (Matrix::OnPropertyChanged): Implemented.
27623 2008-03-01  Larry Ewing  <lewing@novell.com>
27625         * shape.cpp (Shape::DoDraw): refactor slightly.
27627         * geometry.cpp: fix extents calculation when there is only a fill
27628         on the shape.  Fixes test-path-stretch-fill-extents.xaml.
27629         
27630         * shape.cpp (Shape::ComputeShapeBounds): make sure shapes with
27631         negative widths or heights have no bounds.
27632         (Shape::DoDraw): Silence warning.
27634 2008-02-29  Larry Ewing  <lewing@novell.com>
27636         * shape.cpp (Shape::ComputeShapeBounds): tweak shape bounds to
27637         match StretchAndShapes.xaml.
27639         * collection.cpp (VisualCollection::Remove): don't fire
27640         VisualRemoved unless we are going to actually remove the item.
27641         Fixes OM_RemoveClearRemoveAt.htm.
27643 2008-02-29  Jeffrey Stedfast  <fejj@novell.com>
27645         * collection.cpp (VisualCollection::ResortByZIndex): Reinitialize
27646         the z_sorted array before sorting so that we can be sure the end
27647         result will be a stable sort.
27648         (VisualCollection::Insert): Don't use g_ptr_array_insert_sorted()
27649         because we need to take index into account. Instead, grow our
27650         array and call ResortByZIndex().
27652 2008-02-29  Jeffrey Stedfast  <fejj@novell.com>
27654         * text.cpp (TextBlock::GetValue): Revert memleak fix, it created
27655         an even more fun memory corruption bug.
27657 2008-02-29  Larry Ewing  <lewing@novell.com>
27658         
27659         src/control.cpp:
27660         src/frameworkelement.cpp:
27661         src/geometry.cpp:
27662         src/media.cpp:
27663         src/rect.cpp:
27664         src/rect.h:
27665         src/shape.cpp:
27666         src/text.cpp:
27667         src/uielement.cpp: Fix Rect::Transform, replace all occurances of
27668         bounding_rect_for_transformed_rect with Rect::Transform.
27670 2008-02-29  Larry Ewing  <lewing@novell.com>
27672         * geometry.cpp: apply transform to all bounds calculations.  Fixes
27673         test-geometry-bounds.xaml.
27675 2008-02-29  Larry Ewing  <lewing@novell.com>
27677         * geometry.cpp: Make sure geometry groups draw their children
27678         rather than just copying the paths so that local transforms are
27679         applied correctly.
27681 2008-02-29  Jeffrey Stedfast  <fejj@novell.com>
27683         * text.cpp (TextBlock::GetValue): Fixed memory leak.
27685         * media.cpp (MediaElement::GetValue): Fixed compile warning.
27687         * text.cpp (Inline::OnPropertyChanged): Use GetValueNoDefault()
27688         rather than calling inline_get_*() which use GetValue().
27690         * font.cpp (TextFont::TextFont): Don't let the underline thickness
27691         be < 1.0
27693         * dependencyobject.cpp (DependencyObject::GetValueNoDefault):
27694         Simplified.
27695         (DependencyObject::GetValue): Simplified.
27696         (DependencyObject::GetDefaultValue): New method to get the default
27697         value for a property (now used by GetValue()).
27699 2008-02-29  Larry Ewing  <lewing@novell.com>
27701         * geometry.cpp (PathGeometry::ComputeBounds): take the geometry
27702         transform into account when computing bounds.  Fixes
27703         CGeometry_AddToRenderList.xaml
27705 2008-02-29  Larry Ewing  <lewing@novell.com>
27707         * shape.h:
27708         * shape.cpp: export calc_line_bounds.
27710         * geometry.cpp: use calc_line_bounds from shape.h.  Fixes bounds
27711         problems on Animation_TargetingAndHandoff.xaml.
27713 2008-02-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27715         * pipeline.cpp: Add a missing const modifier.
27717 2008-02-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27719         * mplayer.cpp: Use the first streams found in the media, not the last.
27721 2008-02-28  Stephane Delcroix  <sdelcroix@novell.com>
27723         * stylus.cpp: if there's an outline, draw a line of at least 2px.
27725 2008-02-28  Stephane Delcroix  <sdelcroix@novell.com>
27727         * brush.cpp: No longer ignore out-of-bounds offest in
27728         SetupGradient. Add the bounds stop with linearinterpolation
27729         between the nearest stop and the outofbounds one. Handle the
27730         degenerated case with only outofbounds stops.
27732 2008-02-28  Michael Dominic K.  <mdk@mdk.am>
27734         * shape.cpp: Commenting a left-over debug g_warning.
27736         Additionally adding a protection against NULL in cache-size reporting (as
27737         experienced by rolf). However, if GetSurface () returns NULL in the Render
27738         callback... I guess we're screwed anyways.
27740 2008-02-28  Michael Dominic K.  <mdk@mdk.am>
27742         * xaml.cpp:
27743         * xaml.h: Adding convert_property_value_to_enum_str function to
27744         check/convert if the value for the given property can be represented by an
27745         enum string. 
27747         It would be nicer to mover all the enums tables/resolving to a separate
27748         place in future instead of gluing it to xaml.cpp.
27750 2008-02-28  Stephane Delcroix  <sdelcroix@novell.com>
27752         * shape.h|cpp: override GetSizeForBrush for Rectangle to honor the
27753         Stretch property.
27755 2008-02-27  Jeffrey Stedfast  <fejj@novell.com>
27757         * text.cpp (Glyphs::Render): Use horiBearingX for the first char
27758         in the Glyphs string just like we do for TextBlock rendering.
27760 2008-02-27  Jeffrey Stedfast  <fejj@novell.com>
27762         Fixes the last remaining issue in the TextRegressions.htm test.
27764         * xaml.cpp (flush_char_data): Only preserve LWSP in CDATA between
27765         non-autogenerated <Run>'s.
27767         * text.cpp (TextBlock::SetValue): Mark the Inlines auto-generated
27768         from the TextBlock's Text property as being auto-generated.
27770 2008-02-27  Larry Ewing  <lewing@novell.com>
27772         * shape.cpp: change the shape surface cache to cache in device
27773         coordinates and rework the candidate restrictions to reject
27774         huge shapes and allow scaled caches.
27776 2008-02-27  Larry Ewing  <lewing@novell.com>
27778         * shape.cpp: center the filled image within the new bounds.
27780 2008-02-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27782         * media.h, media.cpp: When a media is opened, seek to the current
27783         position.
27785         * value.cpp: ToString: Return 'NULL' if we're null.
27787 2008-02-27  Michael Dominic K.  <mdk@mdk.am>
27789         * src/animation.cpp: When storyboard is completed, Teardown the clocks
27790         only if we're realling stopping (not holding). Fixes the
27791         StoryBoard_ModifyProperty test.
27793 2008-02-27  Michael Dominic K.  <mdk@mdk.am>
27795         * clock.cpp: Make sure we actually hit the our_delta < 0 code 
27796         path. Fixes the AutoReversed/Repeated animations.
27798 2008-02-27  Michael Dominic K.  <mdk@mdk.am>
27800         * shape.cpp: More cases to invalidate (free mem) of the surface cache.
27802 2008-02-26  Jeffrey Stedfast  <fejj@novell.com>
27804         * font.cpp (TextFont::TextFont): Precalculate underline position
27805         and thickness. Also, we need to adjust the position based on 1/2
27806         the underline thickness.
27807         (TextLayout::Layout): Only adjust by the horiBearingX if < 0.
27808         (TextLayout::RenderLine): Same.
27810 2008-02-26  Chris Toshok  <toshok@ximian.com>
27812         * runtime.cpp (runtime_cairo_create): take the visual too, so the
27813         plugin can send ours in - we can't rely on the pixmap having a
27814         visual associated with it, because it's initialized with the
27815         _foreign api which doesn't fill in the colormap. yay.
27816         (Surface::Surface): if we're windowless don't create the widget.
27817         also, init render/render_data and invalidate/invalidate_data to
27818         NULL.
27819         (Surface::ConnectEvents): exit early if we're windowless.
27820         (Surface::Invalidate): call through the invalidate function if
27821         there is one.  otherwise, default behavior (if we have a widget).
27822         (Surface::Paint): exit early if no toplevel.
27823         (Surface::render_cb): call through the render function if there is
27824         on.
27825         (Surface::expose_to_drawable): this is most of the guts of
27826         expose_callback, changed to handle the case where we're already
27827         drawing to the backbuffer (in the windowless case) and therefore
27828         don't need the temporary pixmap.  Also, commented out some code
27829         that clears the contents - do we actually need this?  The comment
27830         for it is enormous...
27831         (Surface::expose_event_callback): just call expose_to_drawable
27832         with the widget's window.
27834         * runtime.h (class Surface): we need to make the gtk callbacks
27835         public since the plugin will be invoking them directly.  Also,
27836         switch the event methods to returning bools, and add a new method
27837         called expose_to_drawable, so the plugin can direct rendering to a
27838         pixmap in the windowless case.
27840         * uielement.h, uielement.cpp: change all the Emit* methods to
27841         return bool.
27843         * dependencyobject.h, dependency.cpp: make EventObject::Emit
27844         return true if there were handlers for the event, and false
27845         otherwise.
27847 2008-02-26  Jeffrey Stedfast  <fejj@novell.com>
27849         * text.cpp (TextBlock::TextBlock): Removed the useless
27850         text_block_set_text() call. This was just a broken hack meant to
27851         do what MDK's previous commit fixed the right way.
27853         * font.cpp (TextFont::UnderlinePosition): Fixed to take font
27854         y_scale metrics into consideration.
27855         (TextFont::UnderlineThickness): Same.
27857 2008-02-26  Michael Dominic K.  <mdk@mdk.am>
27859         * src/text.cpp: TextBlock when constructed by default has an empty
27860         Inlines collection instead of NULL. Along with all the previous
27861         commits fixes the OM_CreateAddInsert.htm test.
27863 2008-02-26  Michael Dominic K.  <mdk@mdk.am>
27865         * src/collection.cpp: Don't allow collection insert at negative
27866         position.
27868 2008-02-26  Michael Dominic K.  <mdk@mdk.am>
27870         * src/collection.cpp: Don't add the object to the collection if it
27871         already contains the object (return -1 instead).
27873 2008-02-26  Michael Dominic K.  <mdk@mdk.am>
27875         * src/animation.cpp:
27876         * src/animation.h:
27877         * src/collection.cpp:
27878         * src/collection.h: The "Add" method of collections returns int (index of
27879         the element added), not bool. As explained in:
27881         http://msdn2.microsoft.com/en-us/library/system.windows.media.visualcollection.add.aspx
27883 2008-02-25  Jeffrey Stedfast  <fejj@novell.com>
27885         * font.cpp (TextFont::OpenZipArchiveFont): Since we aren't going
27886         through FontConfig, we need to parse the font's family name to
27887         extract styleistic info so we can do proper font name matching and
27888         style matching (e.g. "Myriad Pro Cond Black Italic" should match
27889         "Myriad Pro, Condensed Black Italic").
27891 2008-02-25  Chris Toshok  <toshok@ximian.com>
27893         * runtime.h, runtime.cpp: s/drawing_area/widget and
27894         s/DrawingArea/Widget
27896         * demo.cpp: same.
27898 2008-02-25  Michael Dominic K.  <mdk@mdk.am>
27900         * src/uielement.h: Adding a virtual CacheInvalidateHint () function that
27901         can be called on the element to give it a hint that it should free it's
27902         cache for the time being.
27904         * src/collection.cpp:
27905         * src/panel.cpp:
27906         * src/panel.h: Forward CacheInvalidateHint to all children.
27908         * src/shape.cpp:
27909         * src/shape.h: Destroy the surface and path cache when hinted.
27911         In total improves our memory usage with surface/path caching, ie. in the
27912         Showcase.
27914 2008-02-22  Michael Dominic K.  <mdk@mdk.am>
27916         * src/runtime.cpp:
27917         * src/runtime.h:
27918         * src/shape.cpp:
27919         * src/shape.h: Adding functionality to report the cache size usage. By
27920         default it's turned off. MOONLIGHT_OVERRIDES="cache=show" to turn it on. 
27922 2008-02-22  Michael Dominic K.  <mdk@mdk.am>
27924         * src/shape.cpp: RoundOut to pixels the extents of the shapes. Causes us
27925         to expose a few more pixels but helps with surface caching.
27927 2008-02-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27929         * downloader.cpp: downloader_get_response_file: remove any directory
27930           components from the part name, otherwise the creation of the tmp file
27931           fails. If we're aborted, don't call any callbacks.
27932         * media.cpp: If we have a downloader and SetSource is called with a new
27933           downloader, abort the previous download, not only unref it, otherwise
27934           our callbacks and events may still get called from the old downloader.
27936 2008-02-21  Jeffrey Stedfast  <fejj@novell.com>
27938         * font.cpp (TextFont::TextFont): Simplified the fallback code.
27940 2008-02-21  Jeffrey Stedfast  <fejj@novell.com>
27942         Fixes Glyphs.xaml
27944         * text.cpp (Glyphs::SetIndices): Fixed to properly parse glyph
27945         cluster mappings.
27946         (Glyphs::Layout): Properly handle glyph clusters.
27947         (Glyphs::Render): Same.
27949 2008-02-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27951         * media.cpp: When aborting a downloader, null out the write
27952         functions too.
27954 2008-02-21  Michael Dominic K.  <mdk@mdk.am>
27956         * src/clock.cpp: Emit the Completed event when Filling as
27957         well. Together with prev commit fixes: #359024 and #324935.
27959 2008-02-21  Michael Dominic K.  <mdk@mdk.am>
27961         * src/animation.cpp:
27962         * src/animation.h: Detach the AnimationStorage update handler from the
27963         clock when the clock is stopped -- prevents us from overriding the (just
27964         reset) base value with another update.
27966 2008-02-21  Michael Dominic K.  <mdk@mdk.am> 
27968         * src/value.cpp: Implementing ToString () for DOUBLE.
27970 2008-02-21  Michael Dominic K.  <mdk@mdk.am>
27972         * src/color.cpp: A slightly more relaxed/tolerant way of parsing
27973         the colors... it's the web and it's broken by default. Fixes:
27974         #362287 (the US candidates website).
27976 2008-02-21  Stephane Delcroix  <sdelcroix@novell.com>
27978         * text.h|cpp: compute GetOriginPoint and fix GetSizeForBrush
27980 2008-02-20  Jeffrey Stedfast  <fejj@novell.com>
27982         Fixes the TextBlockFontDownloads.htm test.
27984         * font.cpp (TextFontDescription::Set*): If the new value is not
27985         the same as the old, invalidate the loaded TextFont.
27986         (TextFont::TextFont): Always compare family names unless we're
27987         requesting the "Sans" (e.g. last) fallback font.
27988         (TextFont::TextFont): If the requested family name does not match
27989         the specified font file, fall back to a system font of the same
27990         name (we were doing this for zip archievs before, but not for
27991         specified ttf font files).
27993         * text.cpp (TextBlock::SetFontSource): If the downloader is null,
27994         set the font filename to null and invalidate the textblock.
27996 2008-02-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27998         * media.cpp: Add a printf to inform when we're trying to load an
27999         mms stream.  Helps a lot when trying to identify sites depending
28000         on mms/streaming support.
28002         * runtime.cpp: Unref debug_selected_element upon
28003         destruction. Fixes a leak.
28005 2008-02-20  Michael Dominic K.  <mdk@mdk.am>
28007         * src/shape.cpp: Fixing the shape caching to work also with
28008         Path/Geometry.  Fixes: #362021.
28010 2008-02-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28012         * media.cpp: MediaElement/Image: Remove event handlers when we abort the
28013           downloader, otherwise the handlers might be called after we're
28014           destroyed.
28016 2008-02-19  Jeffrey Stedfast  <fejj@novell.com>
28018         * uri.cpp (Uri::ToString): Now takes a 'flags' argument to let us
28019         know which, if any, parts of the URI to hide.
28020         (Uri::Parse): If we don't have a protocol, don't simply assume
28021         that the entire string is the filename. We might have a fragment
28022         attached, for example.
28024         * text.cpp (Glyphs::OnPropertyChanged): Decode the URI here and
28025         get the font index (if a fragment is set). Also, use the parsed
28026         Uri's ::ToString() method to hide the fragment so that requesting
28027         the file actually works.
28028         (Glyphs::DownloaderComplete): Don't need to parse the URI here
28029         anymore, we've already got the index from OnPropertyChanged().
28031 2008-02-19  Jackson Harper  <jackson@ximian.com>
28033         * xaml.cpp: Parser error if we can't find the owner type or
28034         property name when setting properties.
28036 2008-02-19  Sebastien Pouliot  <sebastien@ximian.com> 
28038         * geometry.cpp|h: #if out GetOriginPoint which calls moon_get_origin
28040 2008-02-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28042         * pipeline-ffmpeg.cpp: Comment out error message which just shows ffmpeg's
28043           shortcomings.
28044         * media.cpp: Remove printf.
28046 2008-02-19  Sebastien Pouliot  <sebastien@ximian.com>
28048         * moon-path.c: #if out moon_get_origin since it's not used 
28049         anymore. Change cairo_path_display output to be easier to read 
28050         with negative numbers.
28052 2008-02-18  Michael Dominic K.  <mdk@mdk.am>
28054         * src/media.cpp:
28055         * src/media.h: Load images slightly faster by skipping one pixbuf blit and
28056         doing the expansion + conversion in one step.
28058         Also fixing an ugly memory leak where all RGBA images loaded were leaked
28059         (two times in memory).
28061 2008-02-15  Michael Dominic K.  <mdk@mdk.am> 
28063         * src/clock.cpp: Before processing dirty enter/leave gdk threads. We're
28064         being called from a timeout (unprotected) and we're potentially calling
28065         gdk_ invalidation functions. I think it only matters (in this case) 
28066         on non-X backends though. 
28068 2008-02-15  Michael Dominic K.  <mdk@mdk.am> 
28070         * src/uielement.cpp: Moving the debug timers for rendering slightly and
28071         uncommenting them so that they work when TIMERS is enabled.
28073 2008-02-15  Michael Dominic K.  <mdk@mdk.am> 
28075         * src/runtime.cpp:
28076         * src/runtime.h: Adding an extra DEBUG_MARKER_KEY define (disabled by
28077         default) that changes your 'd' key into a special debug key. When pressed,
28078         a message is printed to the console (region start). When pressed again,
28079         another message is printed (region end). This is usefull to see what
28080         happens in a particular part of the program timeline (ie. after click). 
28082         Makes sense obviously only with timers debugging on and stuff.
28084 2008-02-14  Michael Dominic K.  <mdk@mdk.am>
28086         * src/clock.cpp: Changing max/default FPS to 50. Empirical experience
28087         shows that SL runs by default at something around that. Also, with the
28088         recent fixes some sites are suffering from 24 (can run/look much better
28089         at higher fps).
28091 2008-02-14  Michael Dominic K.  <mdk@mdk.am> 
28093         * src/shape.cpp:
28094         * src/shape.h: Adding surface caching for shapes. The strategy
28095         is to cache big surfaces that have little transformations (such as
28096         ie. backgrounds, fade overlays, etc.). Improves performance greatly
28097         for many sites (ie. Showcase).
28099 2008-02-14  Michael Dominic K.  <mdk@mdk.am> 
28101         * src/uielement.cpp: Commenting out the timer in post-pre render as it's
28102         broken and blocks the compilation with timers on.
28104 2008-02-12  Michael Dominic K.  <mdk@mdk.am> 
28106         * src/animation.cpp:
28107         * src/animation.h: Massive fix for our KeySpline animation calculation
28108         routines (which were broken and giving wrong values). According to:
28110         http://msdn2.microsoft.com/en-us/library/ms533119(VS.85).aspx
28112         "...think of the horizontal axis as the pace with which the interpolation
28113         proceeds along the timing interval. The vertical axis is the resulting
28114         value for the animation's progress, yielded by the function that underlies
28115         the keySplines property. Another way of describing this is that the
28116         horizontal axis is the input unit time for the interval, and the vertical
28117         axis is the output unit time."
28119         Therfore, we need to perform an "Y for X" bezier lookup. The current fix is
28120         a little bit ugly -- we waste 256 bytes per KeySpline to store
28121         pre-calculated values in a lookup table. But maybe it's not soo bad, since
28122         balf function (from prev implementation) was coming up top in the
28123         profiles anyways.
28125         The only other way I can (currently) think of would be to solve a cubic
28126         equation each time we poll the KeySpline for a value. That would be,
28127         however, a *massive* performance hit. 
28129         Hence the lookup solution for now (note: the generation of the table is
28130         very fast, no cubics involved).
28132 2008-02-11  Michael Dominic K.  <mdk@mdk.am>
28134         * src/runtime.h: Fixing our debug-timing routine. It reported 10x as much
28135         as it should... yes, our redraws are slow, but not *that* slow ;)
28137 2008-02-09  Michael Dominic K.  <mdk@mdk.am> 
28139         * src/mplayer.cpp: If we have no audio devices present in the system,
28140         launch a special audio loop variant to still read/fetch audio (and discard
28141         it) so that the video playback is not blocked. Fixes: #341835.
28143 2008-02-08  Jeffrey Stedfast  <fejj@novell.com>
28144         
28145         * font.cpp (TextFont::TextFont): If the loaded font's family_name
28146         doesn't match the requested family name, fall back to the default
28147         font (it means the requested font doesn't exist on the system).
28148         (TextLayout::Layout): Added a 'first_char' state variable that can
28149         be used to figure out if if the current char is the first char on
28150         a line. This is needed for the wrapping logic.
28152 2008-02-08  Jeffrey Stedfast  <fejj@novell.com>
28154         Fixes some text layout bugs in TextBlockFontFamilies.xaml
28156         * xaml.cpp (flush_char_data): Now takes a string 'next_element'
28157         argument rather than a bool 'start' argument so that we can make
28158         sure that the previous and next element types are <Run>'s because
28159         lwsp between a <LineBreak/> and a <Run> or a </Run> and a
28160         <LineBreak/> should be ignored. Also, never g_strchomp() this
28161         cdata.
28162         (start_element_handler): Pass the name of the next element to
28163         flush_char_data().
28164         (end_element_handler): Pass NULL to flush_char_data() as the
28165         next_element argument.
28167 2008-02-08  Chris Toshok  <toshok@ximian.com>
28169         * media.cpp (MediaElement::Render): reorder things so that we're
28170         calculating the brush pattern matrix with the snapped pixels.
28172 2008-02-08  Stephane Delcroix  <sdelcroix@novell.com>
28174         * brush.cpp: fix Image|Video|VisualBrushes for Shapes.
28176 2008-02-07  Chris Toshok  <toshok@ximian.com>
28178         * media.cpp (MediaElement::Render): snap to the pixel grid if
28179         we're not rotated/skewed.
28181 2008-02-07  Sebastien Pouliot  <sebastien@ximian.com>
28183         * shape.cpp: Add comment about (missing) Path::ComputeLargestRectangle
28185 2008-02-07  Larry Ewing  <lewing@novell.com>
28187         * brush.cpp (GradientBrush::SetupGradient): treat stops > 1.0 the
28188         same as out of bounds stops.
28190         * shape.cpp: cache the results of CompouteShapeBounds in
28191         extents rect, use that value in GetSizeForBrush.
28193 2008-02-07  Jeffrey Stedfast  <fejj@novell.com>
28195         Fixes a rendering glitch for xaml similar to:
28197         <TextBlock>
28198            <Run FontStyle="Italic">This </Run>is Dodger Blue
28199         </TextBlock>
28201         * xaml.cpp (flush_char_data): Don't g_strchomp() the cdata when
28202         setting the value of a content_property (e.g. a Run).
28204 2008-02-07  Michael Dominic K.  <mdk@mdk.am>
28206         * src/color.cpp: Added support to parse scRGB-style color specificators
28207         (sc#), see #345931. The scRGB -> sRGB conversion is a bit simplified but
28208         should produce accurate-enough colors for most uses.
28210         http://silverlight.net/quickstarts/silverlight10/controls.aspx now works.
28212 2008-02-07  Sebastien Pouliot  <sebastien@ximian.com>
28214         * shape.cpp|h: Split ComputeBounds to avoid calling functions 
28215         bounding_rect_for_transformed_rect and IntersectBoundsWithClipPath
28216         inside each shape. This will enable us to reuse the non-transformed
28217         value elsewhere too. This also fix (for me) the origin point that
28218         caused problems for some brushes. Started implementing methods 
28219         ComputeLargestRectangle[Bounds] to optimize drawing.
28221 2008-02-06  Chris Toshok  <toshok@ximian.com>
28223         * frameworkelement.cpp (FrameworkElement::GetSizeForBrush): we
28224         want the untransformed size of the element.  otherwise we end up
28225         with a pattern matrix that scales things too large given that
28226         we're also scaling the element.  Fixes fullscreen mode in halo3
28227         and /fox video players (bug #335845).
28229 2008-02-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28231         * mplayer.cpp: AdvanceFrame: Create a target_pts range, if we're within the
28232           range, draw the current frame. If we're ahead of the range, do nothing
28233           (fixes some video/audio sync problems), and if we're behind drop frames.
28234           The range makes sure that we paint every frame even when the audio loop
28235           doesn't update the target pts as often as we're drawing video.
28237 2008-02-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28239         * panel.cpp, runtime.cpp: Fix warnings.
28241 2008-02-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28243         * mplayer.cpp: Simplify our advance frame loop: don't lock the queue during
28244           the entire loop, only when fetching packets. This allows packets to
28245           arrive from the pipeline while in the loop (especially noticable when
28246           decoding the video inside the loop).
28248 2008-02-06  Chris Toshok  <toshok@ximian.com>
28250         * uielement.cpp (UIElement::FrontToBack): use the media state
28251         accessors, and don't exclude Buffering state - we could be
28252         buffering with a frame rendered.
28254 2008-02-06  Sebastien Pouliot  <sebastien@ximian.com>
28256         * shape.cpp|h: Keep track if a rectangle has radii or not.
28257         * uielement.h: Add a flag for radii
28259 2008-02-06  Chris Toshok  <toshok@ximian.com>
28261         * uielement.cpp (UIElement::FrontToBack): make sure
28262         media_element_get_current_state != NULL before we strcmp it.
28264 2008-02-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28266         * src.mdp: Updated.
28268 2008-02-06  Stephane Delcroix <sdelcroix@novell.com>
28270         * brush.cpp: fix the radialgradientbrush setup.
28272 2008-02-05  Chris Toshok  <toshok@ximian.com>
28274         * collection.cpp (Collection::EmitChanged): new method.  Emit the
28275         Changed event and then call closure->OnCollectionChanged.  Also
28276         replace all references to closure->OnCollectionChanged to
28277         EmitChanged.
28279         * collection.h (class Collection): add ChangeEventArgs struct, and
28280         an EmitChanged method declaration.
28282         * type.h.in, type.cpp.in (Type::~Type): no need to free all the
28283         events explicitly.
28284         (Type::HideEvent): remove the event name from the hash so it's
28285         inaccessible from javascript.
28286         (Type::RegisterEvent): use g_hash_table_new_full so we can specify
28287         a destroy function for keys instead of doing the _foreach in the
28288         dtor.
28289         (types_init_manually): add the #if 0 here instead of type.cpp.
28290         oops.
28291         (types_init_register_events): register a Changed event for
28292         Collections.
28294 2008-02-05  Jeffrey Stedfast  <fejj@novell.com>
28296         * downloader.cpp (Downloader::ll_downloader_get_response_file):
28297         Simplified by using the new ExtractFile utility function from
28298         utils.cpp.
28300         * font.cpp: Moved ExtractFile() and make_tmpdir() into utils.cpp
28302         * utils.cpp: New collection of utility functions.
28304 2008-02-05  Jeffrey Stedfast  <fejj@novell.com>
28306         * font.cpp: If a font is requested from a zip archive, extract the
28307         contents and try to figure out which font is the closest match to
28308         the one requested. Fixes bug #356044.
28310 2008-02-05  Chris Toshok  <toshok@ximian.com>
28312         * uielement.cpp (UIElement::FrontToBack): enable the rectangle
28313         code, and make sure to round in the bounds we're subtracting.
28314         this was causing the flashing white border on silverlight.net/fox.
28316 2008-02-05  Sebastien Pouliot  <sebastien@ximian.com>
28318         * shape.cpp: Use existing MIN macro. Use local variables when
28319         available.
28321 2008-02-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28323         * fullscreen.cs, fullscreen.sh: Tool to generate fullscreen.h
28325 2008-02-05  Chris Toshok  <toshok@ximian.com>
28327         * runtime.h, runtime.cpp: add support for a "selected" element
28328         when in debug mode.  Also, make use of the Region methods instead
28329         of using region->gdkregion, which is private now.
28331 2008-02-05  Chris Toshok  <toshok@ximian.com>
28333         * region.h, region.cpp (class Region): add Offset().
28335 2008-02-05  Sebastien Pouliot  <sebastien@ximian.com>
28337         * geometry.cpp|h: PathGeometry does a Build (not a Draw) to 
28338         populate it's moon_path (like others) so the data can always be 
28339         used.
28340         * moon-path.c|h: Add moon_get_origin to get the minimal X and Y
28341         from a moon_path (Stephane) and moon_merge to merge a subpath into
28342         a main path.
28344 2008-02-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28346         * pipeline-ffmpeg.cpp: Remove another printf.
28348 2008-02-02  Jeffrey Stedfast  <fejj@novell.com>
28350         * pipeline.cpp (FileSource::Peek): Only memmove() if we have data
28351         to move.
28352         (FileSource::Peek): Slightly better fix.
28354 2008-02-01  Jeffrey Stedfast  <fejj@novell.com>
28356         * pipeline.cpp (Mp3Demuxer::GetPositionOfPts): Reimplemented to
28357         estimate the stream position if not known rather than reading data
28358         to find out as we don't have to return an exact stream position.
28360 2008-02-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28362         * pipeline.h: Update comment.
28364 2008-02-01  Stephane Delcroix  <sdelcroix@novell.com>
28366         * uielement.h:
28367         * shape.h:
28368         * shape.cpp: rename GetOringin into GetOriginPoint
28370         * brush.cpp: implement a bad origin computation (based on bounds)
28371         for Shape::Path
28373 2008-02-01  Jeffrey Stedfast  <fejj@novell.com>
28375         * pipeline.cpp (Mp3Demuxer::GetPositionOfPts): Implemented.
28376         (FileSource::Peek): As before, only read as much as we need - but
28377         don't clobber what we had prebuffered, only clobber as much as w
28378         need to in order to make room for the new data - this way we make
28379         it more efficient to seek backward later (if need be).
28381 2008-02-01  Stephane Delcroix  <sdelcroix@novell.com>
28383         * shape.h:
28384         * shape.cpp: define GettOrigin at the Shape level, compute GetOrigin
28385         from the path data instead of from bounds.
28387         * brush.cpp: translate the brushes with a translation matrix.
28389 2008-02-01  Larry Ewing  <lewing@novell.com>
28391         * brush.cpp: Make sure we use the brush opacity when computing the
28392         color stops.
28394 2008-02-01  Jeffrey Stedfast  <fejj@novell.com>
28396         * pipeline.cpp (FindMpegHeader): Now checks for Xing and
28397         Fraunhofer VBRI headers.
28399 2008-01-31  Chris Toshok  <toshok@ximian.com>
28401         * uielement.h: include region.h
28403         * point.h: don't assume the right headers have been included
28404         before this file - include glib.h to make sure
28405         G_BEGIN_DECLS/G_END_DECLS is there.
28407         * region.h, region.cpp: split out the region code from
28408         rect.h/rect.cpp.
28410         * rect.h, rect.cpp: remove region code.
28412         * Makefile.am: add region.h/region.cpp
28414 2008-01-31  Chris Toshok  <toshok@ximian.com>
28416         * runtime.h, runtime.cpp: remove runtime_cairo_region (we can just
28417         use Region::Draw instead).
28419         * panel.cpp: remove references to runtime_cairo_region, and switch
28420         to the new Region* copy ctor.  also, use Region::IsEmpty instead
28421         of gdk_region_empty.
28423         * uielement.cpp: more region cleanup, removing references to
28424         GdkRegion in favor of our Region class.  Also, commit (ifdef'ed
28425         out until the rendering glitch is fixed) the rectangle back to
28426         front special case code.
28428 2008-01-31  Chris Toshok  <toshok@ximian.com>
28430         * rect.cpp (Region::Region): new overload which takes a Region*,
28431         so we don't have to access ->gdkregion everywhere when we copy a
28432         region.
28434         * rect.h (struct Rect): add a GrowBy method that takes both x and
28435         y deltas, and have the 1 parameter version call it.
28436         (class Region): add a copy ctor that takes a Region*.
28438 2008-01-31  Chris Toshok  <toshok@ximian.com>
28440         * panel.h, panel.cpp: rename use_back_to_front to UseBackToFront
28441         and add it to the class, protected so subclasses can get at it.
28443         * stylus.cpp (InkPresenter::PostRender): given the ordering
28444         required, we have to c&p some of Panel::PostRender here to render
28445         the children.  Chaining up to Canvas::PostRender at the start of
28446         the method would have caused the translucency/opacity mask code in
28447         UIElement::PostRender to be executed *before* we rendered our
28448         strokes.
28450 2008-01-31  Chris Toshok  <toshok@ximian.com>
28452         * stylus.h, stylus.cpp (InkPresenter::PostRender): rename
28453         RenderChildren to this, and chain up to Canvas::PostRender here,
28454         which will do the RenderChildren call if it needs to.
28456 2008-01-31  Chris Toshok  <toshok@ximian.com>
28458         * panel.cpp (Panel::FrontToBack): simplify this a bunch with
28459         Brush::IsOpaque.
28461         * brush.h (class Brush): remove GetTotalOpacity() which wasn't
28462         being used anywhere, and add IsOpaque() so that we can use it from
28463         the new front-to-back stuff (instead of duplicating code in Panel
28464         and Shape handling parts).
28466 2008-01-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28468         * media.cpp: Update.
28470 2008-01-31  Chris Toshok  <toshok@ximian.com>
28472         * media.cpp (MediaElement::MediaElement): fix build.
28473         (Image::Image): fix initialization order to quiet g++.
28475 2008-01-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28477         * mplayer.cpp, mplayer.h: Render: removed, not used. LoadVideoFrame:
28478           implemented again. Added an ugly caught_up_with_seek value, used to
28479           determine if video is late due to a seek, in which case it shouldn't
28480           show any frames (fixes #356053).
28481         * pipeline.cpp, pipeline.h: Added IMediaDecoder::CleanState and
28482           HasDelayedFrame.
28483         * pipeline-ffmpeg.cpp: Implemented FfmpegDecoder::CleanState and
28484           HasDelayedFrame. Use a mutex to serialize access to avcodec_open.
28485         * pipeline-ffmpeg.h: Implemented FfmpegDecoder::CleanState and
28486           HasDelayedFrame.
28488 2008-01-31  Jeffrey Stedfast  <fejj@novell.com>
28490         * pipeline.cpp (mpeg_parse_samplerate): Doh, need to bitshift the
28491         value.
28492         (FindMpegHeader): Now takes an MpegFrameHeader argument, no sense
28493         having our caller re-parse the header.
28494         (Mp3Demuxer::ReadHeader): Updated.
28496 2008-01-31  Stephane Delcroix  <sdelcroix@novell.com>
28498         * brush.cpp: apply the correct offset to RadialGradientBrushes too.
28500 2008-01-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28502         * clock.h: Added macros to convert between pts, milliseconds and timespans.
28503         * media.cpp, media.h: MediaElement: Updated to normalized pts (starting at
28504           0). Use the new macros when converting between time formats. Remove the
28505           AdvanceFrame timeout upon reinitialization. Implement a better buffering
28506           algorithm (and honor the BufferingTime property).
28507         * mplayer.cpp, mplayer.h: Remove initial_pts, everything coming from the
28508           pipeline is now normalized to start at 0. Use the new macros when
28509           converting between time formats.
28510         * pipeline.cpp, pipeline.h: Normalize all pts to start at 0, and remove
28511           start_time/initial_pts handling. Added Demuxer::GetPositionOfPts to
28512           estimate the position of a pts. ProgressiveSource::CancelWait: only
28513           cancel if we're waiting, and then wait until actually cancelled.
28515 2008-01-31  Stephane Delcroix  <sdelcroix@novell.com>
28517         * shape.cpp:
28518         * shape.h: GetOrigin for Polyline and Polygon
28520 2008-01-31  Stephane Delcroix  <sdelcroix@novell.com>
28522         * uielement.h: add a GetOrigin ()
28524         * shape.cpp:
28525         * shape.h: implement GetOrigin for Path
28527         * brush.cpp: use GetOrigin as offset, fix the Crystal test.
28529 2008-01-30  Chris Toshok  <toshok@ximian.com>
28531         * mplayer.h (class MediaPlayer): add rendered_frame.
28533         * mplayer.cpp (MediaPlayer::MediaPlayer): init rendered_frame to
28534         false.
28535         (MediaPlayer::Close): reset rendered_frame.
28536         (render_frame): set rendered_frame to true if we've successfully
28537         copied data into the video surface.
28539         * media.cpp (Image::CreateSurface): set CachedSurface::has_alpha
28540         to the pixbuf's has_alpha if USE_OPT_RGB24.
28542         * media.h (class Image): make the CachedSurface type and the
28543         instance field "surface" public, so the front to back stuff can
28544         get at it.  Also, add "has_alpha" to it, since once the xlib
28545         surface has been created, we lose that information.
28547         * control.cpp (Control::FrontToBack): nothing to do but call
28548         FrontToBack on real_object.
28550         * control.h (class Control): add override for FrontToBack.
28552         * panel.cpp (Panel::FindStartingElement): get rid of this crap.
28553         it was broken and the wrong way to implement it.
28554         (Panel::Render): remove the RenderChildren call here, we do it in
28555         PostRender (and only if we're not rendering front to back)
28556         (Panel::PostRender): if we aren't rendering front to back, call
28557         RenderChildren.
28558         (Panel::RenderChildren): remove references to FindStartingElement.
28559         (Panel::FrontToBack): this method is a little more complicated
28560         than UIElement::FrontToBack owing to the fact that we're
28561         flattening things to a list.  We need to prepend a "cleanup node"
28562         first, before calling FrontToBack on our children, to do the
28563         Panel::PostRender stuff after our children have been rendered.  We
28564         remove this cleanup node if none of the children have added
28565         themselves to the list, and our bounds (without the children)
28566         don't intersect the expose region.  We apply the same logic to
28567         removing our rectangular bounds as the UIElement code does, but
28568         also have to take into account our background brush.  We punt if
28569         any part of it is transparent, and only handle SolidColorBrush and
28570         GradientBrush subclasses.
28572         * panel.h (class Panel): override UIElement:: FrontToBack,
28573         PreRender, and PostRender.
28575         * uielement.cpp (UIElement::DoRender): factor out most of the guts
28576         of this method so it can be used in either front-to-back or
28577         back-to-front.  Make sure to pass "false" as the front-to-back arg
28578         for PreRender and PostRender.
28579         (UIElement::FrontToBack): calculate the intersection of the expose
28580         region and our bounds.  Add this region to the front of the render
28581         list, and then do some calculating to decide if we should remove
28582         it from consideration by elements lower than us in the display.
28583         Things like "are we opaque", "have we been rotated or skewed, such
28584         that our rectangular shape no longer fills the bounds entirely",
28585         stuff like that.  We further limit subtracting in element type
28586         specific ways - right now just for MediaElement and Image with
28587         certain constraints (images can't have alpha, media elements must
28588         have a frame rendered, both types must fill their rectangle, etc).
28589         If everything passes, we remove our bounds from the expose region.
28590         (UIElement::PreRender): new method, do the things that DoRender
28591         used to do before calling Render.
28592         (UIElement::PostRender): new method, do the things that DoRender
28593         used to do after calling Render.
28595         * uielement.h: move the IS_TRANSLUCENT/IS_INVISIBLE #defines here
28596         so they can be used in panel.cpp.  Also, add 3 new virtual
28597         methods (FrontToBack, PreRender, PostRender) as well as two
28598         callback methods to invoke the 2 latter ones.
28600         * runtime.cpp (overrides): add "render=ftb" and "render=btf"
28601         overrides (with btf the default) corresponding to
28602         RUNTIME_INIT_RENDER_FRONT_TO_BACK.
28603         (Surface::Paint): add support for front-to-back rendering.  If
28604         it's enabled, make a FrontToBack pass on the fullscreen message
28605         and the toplevel element.  This populates the render list with a
28606         back to front ordered list of elements to paint, along with the
28607         regions they need repainted.  If the render list is empty for some
28608         reason (or if the user didn't select ftb rendering), we fall back
28609         to back to back-to-front rendering at the toplevel.
28610         (RenderNode::RenderNode): add ctor/dtor for RenderNode.
28612         * runtime.h: add the RenderNode class, used by the front to back
28613         rendering.
28615         * rect.h, rect.cpp: add IsEmpty() and two overloads of Subtract()
28616         to Region.
28618 2008-01-30  Jackson Harper  <jackson@ximian.com>
28620         * xaml.cpp: Strip leading whitespace from xaml files.
28621         
28622 2008-01-30  Jackson Harper  <jackson@ximian.com>
28624         * xaml.cpp: Handle more names for the default namespace.
28626 2008-01-30  Jackson Harper  <jackson@ximian.com>
28628         * xaml.cpp: Add support for ucs4.
28630 2008-01-29  Jackson Harper  <jackson@ximian.com>
28632         * xaml.cpp: pull in unistd.h
28634 2008-01-29  Jackson Harper  <jackson@ximian.com>
28636         * xaml.cpp: Properly handle utf-16, converting it to utf-8 so
28637         expat doesn't choke.
28639 2008-01-28  Chris Toshok  <toshok@ximian.com>
28641         * brush.cpp (VisualBrush::SetupBrush): RoundOut doesn't update
28642         inplace, it returns the new rect.
28644         * uielement.cpp (UIElement::DoRender): same change.
28646 2008-01-28  Jeffrey Stedfast  <fejj@novell.com>
28648         * pipeline.cpp (FindMpegHeader): Validate that the sequence is
28649         actually an mpeg frame header by parsing it and calculating its'
28650         length and checking that another frame header starts where we
28651         expect it.
28652         (Mp3DemuxerInfo::Supports): We need to use FindMpegHeader() here
28653         too.
28655 2008-01-28  Jeffrey Stedfast  <fejj@novell.com>
28657         * pipeline.cpp (FindMpegHeader): Scan over binary garbage and find
28658         an MPEG sync header.
28659         (Mp3Demuxer::ReadHeader): Use FindMpegHeader() and also use
28660         IMediaSource's new GetSize() method to help calculate media
28661         duration as opposed to seeking to the end.
28663 2008-01-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28665         * media.cpp, media.h: Open the media async.
28666         * pipeline.cpp, pipeline.h: Add and implement OpenAsync.
28668 2008-01-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28670         * media.cpp: MediaElement::AdvanceFrame: Only stop if the media player
28671           reached eof and couldn't advance.
28672         * mplayer.cpp, mplayer.h: Add a seeking flag, allows us to skip frames we
28673           get while we're waiting for a seek to happen. Implement a better pause
28674           algorithm, the previous one was flawed and dead-locked once in a while.
28675         * pipeline.cpp, pipeline.h: Media: Add a callback to async seek. ASFDemuxer:
28676           Create one frame reader for each stream.
28678 2008-01-27  Jeffrey Stedfast  <fejj@novell.com>
28680         * media.cpp (MediaElement::UpdateProgress): Check (pos +
28681         buffering_size) > size, not < size. Duh.
28683         * pipeline.cpp: IMediaDemuxer ctors now take an IMediaSource
28684         argument to use in place of media->GetSource().
28685         (Media::Open): Don't set this->source unless we successfully open
28686         the source.
28688 2008-01-26  Jeffrey Stedfast  <fejj@novell.com>
28690         * media.cpp (MediaElement::TryOpen): In the DownloadComplete case,
28691         set the state to Buffering so that calling Play() will actually
28692         start playing the media (if the file was local, then we'll be in
28693         the Opening state which means that calling Play() will only note
28694         that a Play action was requested, but won't actually play the
28695         media).
28696         (MediaElement::SetState): Don't check for downloaded_file == NULL,
28697         it might fail in the above case.
28699 2008-01-26  Jackson Harper  <jackson@ximian.com>
28701         * xaml.cpp: Set the encoding when we are reading files also.
28703 2008-01-25  Jeffrey Stedfast  <fejj@novell.com>
28705         * pipeline.cpp (WaitForPosition): Only update wait_pos if it is
28706         greater than the current wait_pos.
28708         * media.cpp (UpdateProgress): Use the buffering_start position
28709         rather than the current write position to calculate buffer_size.
28711 2008-01-25  Jeffrey Stedfast  <fejj@novell.com>
28713         * media.cpp (TryOpen): When download is complete and we
28714         successfully open the media, don't set the state to Paused - this
28715         breaks Halo3 if the video is cached.
28717         * media.cpp|h: Consolidated all of the bool state variables into a
28718         single bitfield.
28720 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28722         * pipeline.h, pipeline.cpp: ProgressiveSource: Make the position we're
28723           waiting for publicly available.
28724         * media.cpp: UpdateProgress: use the position the file is waiting for to
28725           calculate the buffer size (if it would exceed the default buffer size).
28727 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28729         * media.h: Add some descriptive comments.
28731 2008-01-25  Sebastien Pouliot  <sebastien@ximian.com>
28733         * shape.cpp: Merge UIElement::InsideClip inside Shape::InsideObject
28734         instead of calling it since it can reduce some heavy cairo calls 
28735         (cairo_in_*), if there's a clip, otherwise it won't affect 
28736         performance.
28738 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28740         * media.cpp: Initialize play_pending, and when buffering is
28741           finished, only play if autoplay or play_pending is true.
28743 2008-01-25  Jeffrey Stedfast  <fejj@novell.com>
28745         * mplayer.cpp: Get rid of some unused variables and cleaned up
28746         some code.
28748 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28750         * pipeline.cpp, media.cpp: More printfs removed.
28752 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28754         * src.mdp: Updated.
28756         * pipeline-ffmpeg.cpp: Commented out printf.
28758         * pipeline.h, pipeline.cpp: Removed some dead code. Made all
28759         interfaces inherit from IMediaObject, and put the media field
28760         there. Commented out printfs.
28762         * mplayer.h, mplayer.cpp: Unified Mute and UnMute into SetMuted to
28763         simplify code a bit. Encapsulated target_pts handling into
28764         separate methods.
28766         * media.h, media.cpp: Create one and only one MediaPlayer for the
28767         life-time of the MediaElement. If not AutoPlay is set, then pause
28768         instead of play.
28770 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28772         * pipeline.cpp, pipeline.h: Media: Don't create the worker thread upon first
28773           usage, but on construction, and finish it upon destruction. Fixes race
28774           between creating and destructing the thread.
28776 2008-01-24  Chris Toshok  <toshok@ximian.com>
28778         * stylus.cpp (Stroke::HitTestEndcapSegment): implement.
28779         (calc_perpendicular_intersection_points): new method.
28780         (Stroke::HitTestSegmentSegment): use
28781         calc_perpendicular_intersection_points to give us the end points
28782         of the outer line segments, and use those for hit testing.
28784 2008-01-24  Jeffrey Stedfast  <fejj@novell.com>
28786         * media.cpp (UpdateProgress): When switching to Buffering mode,
28787         save the position where we're currently at in the file so that we
28788         can use that as a reference point when calculating progress. Also,
28789         pause the MPlayer so that audio won't continue to play while we're
28790         waiting for buffering to complete. Fixes bug #356051.
28792 2008-01-24  Sebastien Pouliot  <sebastien@ximian.com>
28794         * shape.cpp: Avoid calls to cairo_in_[stroke|fill] if no stroke 
28795         (or fill) are present for the shape.
28797 2008-01-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28799         * pipeline.cpp, pipeline.h: Create a more general worker thread,
28800         and use unions to save some space in WorkItem. In the ASFDemuxer,
28801         when seeking, we need to seek to the audio stream, since that's
28802         what we're using to sync against (if we have audio).
28803           
28804         * list.cpp, list.h: Added List::InsertBefore.
28806 2008-01-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28808         * media.cpp: MediaElement::SetSource: only trigger the download
28809         after we've attached to the CompletedEvent.
28811 2008-01-23  Chris Toshok  <toshok@ximian.com>
28813         * runtime.cpp (Surface::HandleMouseEvent): don't crash when we
28814         re-enter HandleMouseEvent, which can happen when that stupid JS
28815         timeout dialog pops up.
28817 2008-01-23  Chris Toshok  <toshok@ximian.com>
28819         * runtime.cpp (Surface::SetMouseCapture): this fails not only if
28820         there's an existing capture, but also if there's a pending
28821         capture (so if both a parent and child capture on the same event,
28822         the child gets it.)  Fixes dragging things around in ink journal.
28824 2008-01-23  Chris Toshok  <toshok@ximian.com>
28826         * stylus.cpp, stylus.h: initial hit testing stuff.  right now the
28827         only tests that are implemented are endcap (ellipse) vs. point,
28828         and segment vs. segment (although this one isn't the full test, as
28829         we're using the stroke line, as opposed to the exterior lines
28830         created by the ellipse pen tracing that line).
28832         * rect.h: add PointInside (Point p).
28833         
28834 2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
28836         * pipeline-ffmpeg.cpp: Don't #include "asf/asf-ffmpeg.h" anymore,
28837         it's no longer part of the build.
28839 2008-01-23  Sebastien Pouliot  <sebastien@ximian.com>
28841         * shape.cpp|h: Add support for different PenLineCap on Line (part 
28842         of #345888). Fix Polyline when a single segment is used (removed 
28843         TODO). Avoid extra work when a start/end PenLineCap is Flat (default)
28845 2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
28847         * media.cpp (SetSource): Initialize the ProgressiveSource.
28849         * pipeline.cpp (ProgressiveSource::Seek): Simplified by calling
28850         parent class's implementation.
28852 2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
28854         * pipeline.cpp|h: ProgressiveSource now inherits from FileSource.
28856 2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
28858         * pipeline.cpp (FileSource::Read): Optimized a bit more for cases
28859         where the caller is trying to read a block larger than our
28860         internal buffer.
28861         (FileSource::Seek): Fixed 'n' to be an int64_t rather than a
28862         uint64_t (which is needed in the case of seeking backwards).
28864 2008-01-22  Larry Ewing  <lewing@novell.com>
28866         * shape.cpp, shape.h: Move the stretch logic out of geometry.cpp
28867         and into Path.cpp as a transform not by modifying the data.
28869         * geometry.cpp, geometry.h: remove stretch logic.
28871 2008-01-22  Jeffrey Stedfast  <fejj@novell.com>
28873         * pipeline.cpp (FileSource::Seek): Also optimize seeking backwards
28874         if within our pre-buffered bounds.
28875         (ProgressiveSource::Write): When restoring position state, use the
28876         proper offset (e.g. the offset of the end of our pre-buffered
28877         block).
28879 2008-01-22  Chris Toshok  <toshok@ximian.com>
28881         * collection.cpp (UIElementZIndexComparer): the magnitude of the
28882         return value doesn't matter, only the sign.
28884 2008-01-22  Chris Toshok  <toshok@ximian.com>
28886         * media.cpp (Image::InsideObject): if we have no surface (the
28887         image hasn't been loaded), we aren't HitTestVisible.
28889         * media.h (class Image): add InsideObject override.
28891 2008-01-22  Chris Toshok  <toshok@ximian.com>
28893         * panel.cpp (Panel::OnCollectionChanged): remove the fix for
28894         #353954 as its redundant after the previous commit.
28896 2008-01-22  Chris Toshok  <toshok@ximian.com>
28898         * garray-ext.cpp (bsearch): fix this so the g_array_insert_sorted
28899         function works.
28901 2008-01-22  Jeffrey Stedfast  <fejj@novell.com>
28903         * media.cpp (TryOpen): Don't leak Media objects. Also make sure to
28904         call Initialize() on the file source.
28906         * pipeline.cpp (IMediaSource): Read() now returns the number of
28907         bytes read rather than true/false and does nto guarantee that all
28908         of the data was read. Added a ReadAll() method which does what the
28909         old Read() method did.
28910         (FileSource): Rewritten to do our own buffering which allows for
28911         nice optimizations for Peek() and Seek().
28912         (ProgressiveSource): Also rewritten.
28914         * asf/asf.cpp: Updated to use IMediaSource::ReadAll()
28916         * asf/asf-guids.h: Moved all of the guids into asf-guids.cpp and
28917         just made them extern in the ehader, this way we don't duplicate
28918         those values in each source file that includes this header.
28920 2008-01-22  Sebastien Pouliot  <sebastien@ximian.com>
28922         * shape.cpp|h: First part of DoDraw refactoring. Pass all 
28923         regression tests from harness (moon versus moon) but it's possible
28924         that some degenerated cases (without test cases) regress.
28926 2008-01-22  Larry Ewing  <lewing@novell.com>
28928         * clock.cpp: initalize the smoothing to max framerate, the first
28929         frame is quite likely the slowest frame we'll ever draw.  Bump
28930         error delta back up to 1/50th.
28932 2008-01-22  Chris Toshok  <toshok@ximian.com>
28934         * media.cpp (MediaElement::Render): a little cairo cleanup, and
28935         remove the USE_OPT_REGION_CLIP block.
28937 2008-01-22  Andrew Jorgensen  <ajorgensen@novell.com>
28939         * pipeline.cpp: include unistd.h, fixes a build error introduced in
28940         r93311 when building without-ffmpeg
28942 2008-01-22  Larry Ewing  <lewing@novell.com>
28944         * clock.cpp: reduce delta to 1/100 of a second and fix a bug in
28945         previous commit.
28947 2008-01-22  Larry Ewing  <lewing@novell.com>
28949         * clock.cpp: Tweak clock timing and smoothing.  Increase timer
28950         priority so that ticks get deliver when we want them this doesn't
28951         change the smoothing calculation but it can raise the actual fps
28952         by assuring all our clocks are delivered.  Change smoothing alpha
28953         from 0.3 to 0.03 to improve noise immunity.  Don't reset the timer
28954         unless our new calculated timeout differs from our old by at least
28955         1/50 of a second.  Resetting the clock on every tick had the
28956         effect adding the drawing time to the tick time for every tick
28957         since the timeout starts over at zero.
28959 2008-01-21  Jeffrey Stedfast  <fejj@novell.com>
28961         * pipeline.cpp (Mp3FrameReader::ReadFrame): If the bitrate was
28962         unspecified, encode the bitrate back into the header so that if we
28963         are using the NullMp3Decoder, it will know how to handle
28964         it. Probably also needed for any actual Mp3 decoders as well since
28965         it won't reliably be able to keep track of variable-bitrate
28966         streams otherwise since it wouldn't know if/when we seek.
28967         (NullMp3Decoder::DecodeFrame): Implemented.
28969 2008-01-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28971         * pipeline.cpp: Remove printf.
28973 2008-01-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28975         * src.mdp: Remove mplayer2.cpp from here too.
28977 2008-01-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28979         * mplayer.cpp, mplayer2.cpp, Makefile.am: Deleted mplayer.cpp and moved
28980           mplayer2.cpp to mplayer.cpp.
28982 2008-01-21  Jeffrey Stedfast  <fejj@novell.com>
28984         * downloader.cpp (ll_downloader_get_response_file): Fixed to use
28985         mkstemp() rather than tmpnam_r() and also simplified.
28987         * pipeline.cpp: Fixed various things about the progressive stream.
28989 2008-01-19  Jeffrey Stedfast  <fejj@novell.com>
28991         * mplayer2.cpp (audio_play): Get rid of the 'play' argument. Also
28992         don't memmove() data unless we don't have enough to play a single
28993         frame. Instead, what we'll do is keep progressing audio->outbuf as
28994         we play it.
28996 2008-01-19  Chris Toshok  <toshok@ximian.com>
28998         * uielement.cpp (UIElement::OnPropertyChanged): remove the
28999         handling of TriggersProperty and ResourcesProperty's closure.
29001         * trigger.cpp, trigger.h: remove EventTrigger's OnPropertyChanged
29002         method.
29004         * transform.cpp (TransformGroup::OnPropertyChanged): remove
29005         handling of ChildrenProperty's closure.
29007         * text.cpp, text.h: remove Run::OnPropertyChanged, and also remove
29008         the handling of Inlines->closure from TextBlock.
29010         * stylus.cpp, stylus.h: remove a couple of OnPropertyChanged
29011         methods (InkPresenter and Stroke).
29013         * panel.cpp (Panel::OnPropertyChanged): remove handling of the
29014         ChildProperty's closure here.
29016         * media.cpp, media.h: remove the unnecessary
29017         MediaBase::OnPropertyChanged.
29019         * geometry.cpp, geometry.h: remove a few OnPropertyChanged
29020         methods (GeometryGroup, PathGeometry, and PathSegment.)
29022         * clock.cpp, clock.h: remove TimelineGroup::OnPropertyChanged.
29024         * brush.cpp, brush.h: remove the unnecessary
29025         Brush::OnPropertyChanged and GradientBrush::OnPropertyChanged.
29027         * animation.cpp, animation.h: remove all the
29028         *AnimationUsingKeyFrames::OnPropertyChanged methods, since all
29029         they did was deal with collection closures.
29031         * dependencyobject.cpp (DependencyObject::SetValue): factor out
29032         the "collection->closure" setting code from all the
29033         OnPropertyChanged methods sprinkled around and put it here.  Also,
29034         set collection->closure to NULL on the old value (something the
29035         old code didn't do).
29037 2008-01-19  Chris Toshok  <toshok@ximian.com>
29039         * animation.cpp: the remaining macros (SET_NULLABLE_FUNC and
29040         NULLABLE_{PRIM_}GETSET_IMPL) are moved here, right before their
29041         use.
29043         * animation.h: clean this file up by removing all those disgusting
29044         macros.  for the DECL macros, just expand them here, as having the
29045         methods listed in the class declaration is a good thing.
29047         * collection.cpp (collection_new): remove the switch statement
29048         from here and use Type::CreateInstance instead.  this largely
29049         removes the need to be including extra headers (like animation.h).
29051 2008-01-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29053         * media.cpp, mplayer.cpp, mplayer2.cpp, Makefile.am, pipeline.h: Remove all
29054           MOON_MEDIA ifdefs and completely disable the old mplayer.cpp
29055         * src.mdp: Updated.
29057 2008-01-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29059         * media.h, media.cpp: MediaElement: make this a state machine to follow the
29060           behaviour specified in MSDN. Implement buffering of media files.
29061           MediaSource (and derived): take a IMediaSource instead of a filename.
29062         * mplayer.h, mplayer2.cpp: Make Open take a Media instead of a filename.
29063           Remove all MOON_MEDIA ifdefs, too many changes to support both versions
29064           now. Make seeking async.
29065         * pipeline.cpp, pipeline.h: Changed the FrameReaderLoop into a more general
29066           worker thread, seeking can now be done there too. Implement
29067           ProgressiveSource.
29068         * playlist.cpp: Change IsPlaylistFile to peek the file instead of checking
29069           the file extension. MediaSource (and derived): take a IMediaSource
29070           instead of a filename.
29071         * playlist.h: MediaSource (and derived): take a IMediaSource instead of a
29072           filename.
29074 2008-01-18  Larry Ewing  <lewing@novell.com>
29076         * uielement.cpp: compute total_opacity for invalidation logic but
29077         use local_opacity for drawing.  This fixes monotones grid.xaml and
29078         some hit test regressions.
29080 2008-01-18  Jackson Harper  <jackson@ximian.com>
29082         * xaml.cpp: KeyFrameCollections can be specified in the xaml if
29083         they are in a property element.
29084         - When searching for collections, use is subclass instead of
29085         making them be the same type, so derivied collections can be used.
29086         
29087 2008-01-17  Chris Toshok  <toshok@ximian.com>
29089         * pipeline.h (class IMediaDemuxer): initializer streams and
29090         stream_count so we don't crash on ltbennett.com.
29092 2008-01-17  Jeffrey Stedfast  <fejj@novell.com>
29094         * pipeline.cpp (Mp3FrameReader::ReadFrame): If we fail to read an
29095         MPEG header, set MediaFrame->event to EOF. Same if we can't read
29096         the frame data.
29097         (Media::GetNextFrame): Don't try to decode the frame if it is an
29098         event.
29099         (ASFDemuxer::ReadFrame): If we reach EOF, set MediaFrame->event to
29100         EOF.
29102         * mplayer2.cpp (media_player_callback): pts is allowed to be 0.
29103         (AdvanceFrame): Handle EOF frame events.
29104         (audio_loop): Handle EOF frame events.
29106 2008-01-17  Chris Toshok  <toshok@ximian.com>
29108         * stylus.cpp (InkPresenter::OnCollectionChanged): we need to
29109         invalidate the old bounds of the stroke for ItemRemoved as well as
29110         ItemChanged.
29112 2008-01-17  Chris Toshok  <toshok@ximian.com>
29114         * rect.h (Rect::Transform): new method, allows for transforming a
29115         rectangle by a cairo_matrix_t, used with transforming the stroke
29116         bounds back to screen space using the InkPresenter's
29117         absolute_xform.
29119         * stylus.cpp, stylus.h: deal with collection changed notifications
29120         on Stroke::StylusPointsProperty and on
29121         InkPresenter::StrokesProperty, and correctly invalidate a stroke's
29122         bounds.  The bounds of a stroke needs to be looked at - right now
29123         it's in the coordinate space of the InkPresenter, and so it needs
29124         to be transformed back to screen space before invalidating.  Need
29125         to check if MS uses screen space for a stroke's bounds (seems
29126         likely they do, but this was easier to code.)
29128 2008-01-17  Jeffrey Stedfast  <fejj@novell.com>
29130         * mplayer2.cpp: Updated for MediaFrame changes.
29132         * pipeline-ffmpeg.cc: Updated for MediaFrame changes.
29134         * pipeline.cpp: Instead of having a compressed_data and
29135         uncompressed_data field, simply have a 'buffer' field that gets
29136         reused by both the demuxer and the decoder. The decoder will set
29137         the buffer to the compressed data and the decoder will, once
29138         finished decoding, free the buffer and then update it to point to
29139         the decoded data. This reduces memory overhead.
29141 2008-01-17  Chris Toshok  <toshok@ximian.com>
29143         * uielement.cpp (UIElement::InsideClip): use
29144         uielement_transform_point instead of duplicating it.
29146         * shape.cpp (Shape::InsideObject): use uielement_transform_point
29147         instead of duplicating it.
29149         * text.cpp (TextBlock::InsideObject): use
29150         uielement_transform_point instead of duplicating it.
29152 2008-01-17  Larry Ewing  <lewing@novell.com>
29153         
29154         * shape.cpp (Rectangle::BuildPath): fix the origin calculation for
29155         unstroked rectangles (see test-rectangle-aliasing.xaml).  Suggest
29156         more rectangle testing after this.
29158 2008-01-17  Jackson Harper  <jackson@ximian.com>
29160         * xaml.cpp: After setting a property stop walking up the element
29161         tree.
29163 2008-01-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29165         * pipeline-ffmpeg.cpp: Comment out a couple of confusing printfs.
29167 2008-01-17  Jeffrey Stedfast  <fejj@novell.com>
29169         * mplayer2.cpp (audio_decode): Removed as it is no longer really
29170         needed.
29171         (audio_loop): We can't assume that an entire decoded audio packet
29172         will fit into the audio output buffer in a single shot, break it
29173         up if needed.
29175 2008-01-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29177         * mplayer2.cpp: Max out video frame rate at 60fps.
29179 2008-01-17  Fernando Herrera  <fherrera@novell.com>
29181         * panel.cpp: Reorder based on ZIndex when a new item is added.
29182         Fixes bug #353954
29184 2008-01-17  Larry Ewing  <lewing@novell.com>
29186         * runtime.cpp (Surface::InitializeDrawingArea): disable extended
29187         input devices until the remaining issues can be resolved.
29189 2008-01-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29191         * mplayer2.cpp, pipeline-ffmpeg.cpp: Plug a leak.
29193 2008-01-16  Larry Ewing  <lewing@novell.com>
29195         * uielement.cpp, uielement.h: 
29196         * panel.cpp, panel.h: 
29197         * collection.cpp, control.cpp: remove Compute/UpdateTotalOpacity.
29198         Combine the opacity visibility check into the total render
29199         visibility.  Make sure we compute/invalidate in all the same
29200         places.
29202         * dirty.cpp, dirty.h: remove all references to DirtyOpacity.
29204         * uielement.cpp (UIElement::DoRender): make sure we don't reset
29205         the coordinate system when setting up the clip calls in the
29206         opacity and opacity mask cases.  Go back to using the brush
29207         directly when rendering masks.  Should speed things up a little
29208         and fixes http://mycomix.wintellect.com/Spotlight.aspx?Item=1041
29210 2008-01-16  Chris Toshok  <toshok@ximian.com>
29212         * stylus.h, stylus.cpp: a few changes.  Move the
29213         StylusPointCollection and StrokeCollection classes here from
29214         collection.h/collection.cpp.  I didn't like the addition of
29215         stylus.cpp logic in two places.  Convert Stroke::GetBounds use use
29216         the new DrawingAttributes::ComputeBounds{WithoutDrawingAttributes}
29217         methods, and build up the bounds for the StrokeCollection by
29218         unioning all the Stroke bounds (these should be cached, but aren't
29219         yet.)  StrokeCollection::HitTest has been implemented, just
29220         looping over the strokes.  Stroke::HitTest is missing its guts at
29221         the moment, since hit testing is going to be a little bit of a
29222         pain for it.
29224         * collection.h, collection.cpp: remove StylusPointCollection and
29225         StrokeCollection.
29227 2008-01-16  Larry Ewing  <lewing@novell.com>
29229         * uielement.cpp, uielement.h: Rework the way we handle opacity to
29230         operate like the reference platform by removing the concept of
29231         TotalOpacity and instead using push/pop group and paint_with
29232         alpha.  See test-sibling-opacity.xaml for an example.  Handle
29233         clipping in DoRender rather than in every subclass because we want
29234         the clip path active before calling push/pop so that the temporary
29235         surface is bounded.
29236         * brush.cpp, panel.cpp: remove GetTotalOpacity references.
29237         * media.cpp, media.h: cleanup the complicated render logic now
29238         that things are handled in uielement.
29239         * shape.cpp, text.cpp: remove RenderClipPath calls.
29241         * rect.cpp, rect.h: add draw methods.
29243 2008-01-16  Jeffrey Stedfast  <fejj@novell.com>
29245         * pipeline.cpp: Implemented mpeg seeking support for
29246         Mp3FrameReader and, thusly, Mp3Demuxer.
29247         (Mp3Demuxer::ReadHeader): Calculate the duration of the stream.
29249 2008-01-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29251         * mplayer2.cpp: Remove a superfluous variable from Audio.
29253 2008-01-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29255         * mplayer2.cpp: Remove superfluous variables from Video.
29257 2008-01-16  Sebastien Pouliot  <sebastien@ximian.com>
29259         * moon-path.c: Fix typo (but was same value).
29261 2008-01-15  Jeffrey Stedfast  <fejj@novell.com>
29263         * pipeline.cpp: Implemented mp3 demuxer.
29265 2008-01-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29267         * mplayer2.cpp: Don't crash if Seek is called before Open.
29269 2008-01-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29271         * mplayer2.cpp: Remove dead code and variables, and only request
29272         audio/video frames if we have audio/video.
29274 2008-01-15  Jeffrey Stedfast  <fejj@novell.com>
29276         * mplayer2.cpp: Get rid of extra member variables in Packet.
29278 2008-01-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29280         * mplayer2.cpp: Implement audio decoding on the main thread as well.
29282 2008-01-14  Jeffrey Stedfast  <fejj@novell.com>
29284         * pipeline.cpp: Partially implemented an mp3 demuxer.
29286 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29288         * media.cpp, media.h, mplayer2.cpp, pipeline.cpp, pipeline.h: Make markers
29289           work again with the new pipeline.
29291 2008-01-14  Sebastien Pouliot  <sebastien@ximian.com>
29293         * shape.cpp|h: It looks like we stopped needing consider_fill a 
29294         while ago.
29296 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29298         * mplayer.h: We don't need io_tread anymore, so remove it.
29299         * mplayer2.cpp: We don't need io_tread anymore, so remove it. Add support
29300           for doing the decoding on the main thread with easy (in-code) switch.
29301           Comment out printfs, and remove dead/old/commented-out code.
29302         * pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp: Add support for doing the
29303           decoding on the main thread with easy (in-code) switch.
29304         * runtime.cpp: Don't print entire object tracking output if nothing leaked.
29306 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29308         * xaml.cpp: Unref a matrix object when we are done with it.
29309         * mplayer2.cpp: Remove printf.
29311 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29313         * mplayer2.cpp: Remove printfs.
29314         * pipeline.cpp, pipeline.h: Remove printfs and only print messages if they
29315           are errors.
29316         * pipeline-ffmpeg.cpp: Free context->extradata upon destruction.
29318 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29320         * pipeline.cpp: Fix crash with several web-sites (when seeking before
29321           reading anything).
29323 2008-01-11  Chris Toshok  <toshok@ximian.com>
29325         * clock.h (class Clock): add an instance
29326         field (calculated_natural_duration).
29328         * clock.cpp (Clock::ComputeBeginTime): don't include the parent's
29329         current time here.  this was inflating animation begin time's in
29330         some cases to be either very close to the parent's calculated
29331         duration (or even after it).
29332         (ClockGroup::ComputeBeginTime): don't chain up to
29333         Clock::ComputeBeginTime.  clock groups in our system need to
29334         include their parent time in their begin time.  There are only two
29335         levels of clockgroups - storyboards, and the clockgroup we have
29336         associated with a given surface (Which will be the parent of all
29337         the storyboards running on that surface.)
29338         (output_clock): print out the BeginTime of the clock.
29339         (TimeManager::AddChild): I don't really like this, but we need to
29340         force the calculation of the natural duration of the clock when
29341         it's added to the hierarchy.
29342         (ClockGroup::AddChild): same here.
29343         (Clock::Clock): don't calculate the natural duration of the clock
29344         here - when we instantiated a ClockGroup it was calculating the
29345         duration before the child clocks were added.
29347 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29349         * pipeline.cpp: Seek on the frame reader, not on the source.
29350         * mplayer2.cpp, mplayer.h: Change all use of audio/video->stream != NULL to
29351           HasAudio/Video (). Fix seeking to actually work.
29353 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29355         * mplayer2.cpp, mplayer.h: Move the media variable from audio/video into
29356           mplayer.h where it belongs.
29357         * pipeline.cpp, pipeline.h: Implement seeking.
29358         * pipeline-ffmpeg.cpp: Copy decompressed data instead of using ffmpeg's data
29359           directly, since ffmpeg uses one single memory location for all decoded
29360           frames, causing us to always show the last decoded frame.
29362 2008-01-11  Sebastien Pouliot  <sebastien@ximian.com>
29364         * shape.cpp: Add support for PenLineCapTriangle with a patched cairo.
29365         See bug #345892 for the required cairo patch.
29367 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29369         * media.cpp: Initialize Media too upon initialization.
29370         * pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp, pipeline-ffmpeg.h,
29371           mplayer2.cpp, mplayer.cpp: Implement registration of components, making
29372           it possible to completely remove ffmpeg.
29374 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29376         * pipeline.cpp: Remove stray character.
29378 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29380         * mplayer2.cpp, pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp,
29381           pipeline-ffmpeg.h: Code-cleanup.
29383 2008-01-10  Larry Ewing  <lewing@novell.com>
29385         * runtime.cpp (Surface::InitializeDrawingArea): realize the widget
29386         before setting the extension events (lame api) and disable the
29387         cursor test.
29389 2008-01-10  Chris Toshok  <toshok@ximian.com>
29391         * runtime.cpp (Surface::InitializeDrawingArea): activate all
29392         devices that have a cursor associated with them.
29394 2008-10-10  Andrew Jorgensen  <ajorgensen@novell.com>
29396         * pipeline.cpp: include config.h (fixes an ffmpeg-related build error)
29398 2008-01-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29400         * mplayer.cpp: Surround with ifdef to conditionally include the new
29401           MediaPlayer or not.
29402         * Makefile.am: Added pipeline* and mplayer2.cpp.
29403         * pipeline-ffmpeg.h, pipeline-ffmpeg.cpp: Added, support for using ffmpeg in
29404           the pipeline.
29405         * pipeline.cpp, pipeline.h: Added.
29406         * mplayer2.cpp: Added, a MediaPlayer that uses the new pipeline.
29408 2008-01-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29410         * panel.cpp: Delete leaked region.
29412 2008-01-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29414         * src.mdp: Added.
29416 2008-01-09  Chris Toshok  <toshok@ximian.com>
29418         * stylus.h, stylus.cpp, collection.h, collection.cpp: fix
29419         _get_bounds.
29421 2008-01-09  Chris Toshok  <toshok@ximian.com>
29423         * collection.h, collection.cpp: add C wrappers for
29424         StrokeCollection::GetBounds and ::HitTest.
29426         * stylus.h, stylus.cpp: same deal for Stroke::
29427         
29428 2008-01-09  Chris Toshok  <toshok@ximian.com>
29430         * collection.h, collection.cpp: add empty implementations of
29431         StrokeCollection::GetBounds and StrokeCollection::HitTest.
29433         * stylus.h, stylus.cpp: add empty implementations of
29434         Stroke::GetBounds and Stroke::HitTest.
29436 2008-01-09  Chris Toshok  <toshok@ximian.com>
29438         * uielement.h, uielement.cpp: change all the Emit* methods that
29439         deal with mouse events to take a GdkEvent instead of state/x/y,
29440         and also change their calldata to a heap allocated MouseEventArgs,
29441         which we unref after the emit.  This is because the pointer itself
29442         is wrapped by the managed MouseEventArgs, and will be unref'ed in
29443         ~MouseEventArgs at some later time.
29445         * runtime.h, runtime.cpp: change all the mouse events to pass
29446         around the actual GdkEvent instead of the state/x/y.  This is due
29447         to the fact that our MouseEventArgs class now wraps the GdkEvent,
29448         so we can get at all the stylus/extension event stuff.
29450         * stylus.h, stylus.cpp: remove stylus_get_current, as it's no
29451         longer required.  We correctly create a StylusInfo instance from
29452         the MouseEventArgs.
29454         * Makefile.am (libmoon_la_SOURCES): add eventargs.cpp
29455         (libmooninclude_headers): add eventargs.h
29457         * libmoon.h: add eventargs.h.
29459         * eventargs.h, eventargs.cpp: new files, splitting out the
29460         KeyboardEventArgs and MouseEventArgs from uielement.h, and flesh
29461         out MouseEventArgs, making it a refcounted object with enough
29462         smarts to handle both the managed case and plugin case.  Include
29463         all the stylus related code as well, so this *should* make all the
29464         stylus requiring demos work.
29466 2008-01-09  Jeffrey Stedfast  <fejj@novell.com>
29468         * geometry.cpp (path_get_bounds): My fix the other day wasn't
29469         quite ideal. Instead of using a 0.1 line thickness when the
29470         shape's StrokeThickness is 0, continue using that 0 thickness but
29471         use cairo_fill_extents() instead. Also, when shape is null, ise a
29472         0.0 thickness & cairo_fill_extents() as well.
29474         * shape.cpp (DoDraw): Removed the if (thickness == 0) optimization
29475         that breaks Paths with a StrokeThickness of 0. Fixes bug #352188.
29477         * runtime.cpp (EmitEventOnList): Changed to take double x,y
29478         coordinate arguments rather than int.
29479         (HandleMouseEvent): Same.
29481 2008-01-09  Jeffrey Stedfast  <fejj@novell.com>
29483         * list.cpp (List::~List): Added a dtor that deletes all nodes
29484         currently in the list. This is doable now that List::Nodes are
29485         classes where the node dtors can be overloaded.
29487 2008-01-09  Jackson Harper  <jackson@ximian.com>
29489         * xaml.cpp: If a property is a collection, don't assume that the
29490         collection is already initialized (they used to always be), and
29491         initialize the collection if needed. This fixes BNC 350893.
29493 2008-01-09  Stephane Delcroix  <sdelcroix@novell.com>
29495         * brush.cpp: fix (useless) derelativization for MappingmodeAbsolute
29496         on LinearGradientBrush. Fixes bnc 346308 and lineargrad.xml.
29498 2008-01-08  Chris Toshok  <toshok@ximian.com>
29500         * animation.cpp (Storyboard::Begin): simple change to fix a nasty
29501         bug.  we need to add the teardown handler before the completed
29502         handler.  otherwise cases where people were using a storyboard as
29503         a timer would break - the completed handler would fire, the JS
29504         would restart the storyboard, then the teardown handler would free
29505         the new clock hierarchy.  Fixes the page animation in pageturn,
29506         and gets the bubbles moving again in the SilverlightCLRBalls demo.
29508 2008-01-07  Jeffrey Stedfast  <fejj@novell.com>
29510         * geometry.cpp (path_get_bounds): Cairo seems to break if the line
29511         thickness is 0.0, so if the shape's thickness is set to 0.0, use
29512         0.1 like we do if shape is null. Fixes bug #351575.
29514 2008-01-07  Sebastien Pouliot  <sebastien@ximian.com>
29516         * shape.cpp|h: Add NeedsLineCaps and NeedsLineJoin so some shapes,
29517         that ignore those properties, can avoid setting them on the cairo
29518         context.
29520 2008-01-04  Chris Toshok  <toshok@ximian.com>
29522         * runtime.cpp: mostly switch all emit_* calls to take doubles, and
29523         pass doubles around for button x/y.
29524         (Surface::motion_notify_callback): if we're gtk > 2.12, use
29525         gdk_event_request_motions (falling back to gdk_window_get_pointer
29526         if not).  also, we can use the mouse_event_x/y from the event,
29527         even when it's a hint.
29529         * runtime.h: switch back to using doubles for everything mouse
29530         event related.  Change MoonlightEventEmitFunc to take doubles.
29532 2008-01-04  Jeffrey Stedfast  <fejj@novell.com>
29534         * runtime.cpp|h: Make mouse_event_x/y ints rather than doubles
29535         since the events that use them want them as ints anyway.
29536         (button_release_callback): Cast the button->x/y doubles to int.
29537         (button_press_callback): Same.
29538         (motion_notify_callback): Cast event->x/y to int.
29539         (crossing_notify_callback): Same.
29541         * dependencyobject.cpp: EventObjects now use a List class for
29542         event_lists rather than GSList which is far more costly for
29543         appends.
29544         (Emit): Reduce the number of linked-list iterations from 5 to 2.
29546 2008-01-04  Chris Toshok  <toshok@ximian.com>
29548         * runtime.h, runtime.cpp: completely overhaul the way we handle
29549         mouse events.  Instead of doing both hit testing and event
29550         dispatch in one recursive tree traversal, we build up a list of
29551         all elements that will bubble the event, and then use that list
29552         along with the previous one to generate Enter/Leave events for the
29553         elements that require it.  Also fix the way capture is done (it's
29554         not handled until the end) and fix the Enter event dispatch when
29555         you release mouse capture.
29557         * uielement.h, uielement.cpp: rename the mouse events to match the
29558         names used in C# and JS, as it's been singularly annoying to
29559         remember that ButtonPressEvent -> MouseLeftButtonDown, etc.  Also
29560         rename all the Handle* event methods to Emit*, as that's all they
29561         do.  Make them nonvirtual, as the traversal and emission of the
29562         events now happens in runtime.cpp.  Add a new virtual
29563         method (HitTest), that is overridden by the container elements,
29564         which appends elements that are going to bubble the event to the
29565         list.
29567         * panel.h, panel.cpp: remove all the Handle* methods, implement
29568         HitTest.
29570         * control.h, control.cpp: remove all the Handle* methods,
29571         implement HitTest.
29573 2008-01-04  Jeffrey Stedfast  <fejj@novell.com>
29575         * media.cpp (UpdateProgress): Don't SetValue() unless the delta
29576         was large enough - otherwise we could get into a situation where
29577         we never emit a progress changed event in a case where the data
29578         trickles in at < 0.05%.
29580 2008-01-04  Chris Toshok  <toshok@ximian.com>
29582         * animation.cpp (Storyboard::HookupAnimationsRecurse): look back
29583         up the clock hierarchy for the target property like we do with the
29584         target name.
29586 2008-01-04  Chris Toshok  <toshok@ximian.com>
29588         * media.h: add Image::DownloaderFailed.
29590         * media.cpp (Image::UpdateProgress): make sure to qualify the
29591         DownloadProgressProperty we lookup on the Downloader, since
29592         without the Downloader:: it'll try to get
29593         Image::DownloadProgressProperty, which will always return 0.0.
29594         (Image::SetSource): use the static qualifier for
29595         events (Downloader:: instead of downloader->).
29596         (Image::DownloaderFailed): new method, emit our ImageFailedEvent.
29598         * brush.cpp (ImageBrush::image_progress_changed): make sure to set
29599         our ImageBrush::DownloadProgressProperty before emitting the
29600         changed event.
29601         (brush_init): lookup the ImageBrush::ImageFailedEvent.
29603 2008-01-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29605         * runtime.cpp: Free background_color upon surface
29606           destruction. Fixes a minor leak.
29608         * clock.cpp|h: Free the tick_call_mutex upon destruction.
29610 2008-01-03  Jeffrey Stedfast  <fejj@novell.com>
29612         Fix for bug #350962
29614         * media.cpp (MediaBase::OnPropertyChanged): Don't emit
29615         DownloaderProgressChanged events anymore, leave that up to Image
29616         and MediaElement classes so that we don't emit events when an
29617         outside source changes the value.
29618         (MediaElement::UpdateProgress): Emit the DownloaderProgressChanged
29619         event if the proper download delta has occured.
29620         (Image::UpdateProgress): Same.
29622 2008-01-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29624         * dependencyobject.h: Remove warning.
29626 2007-12-31  Jeffrey Stedfast  <fejj@novell.com>
29628         * runtime.h (CreateDownloader): Simplified.
29630 2007-12-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29632         * collection.cpp: Upon destruction on VisualCollection, remove the visual
29633           parent of all items.
29634         * dependencyobject.h: Add weak_ref/unref and a comment explaining when and
29635           how to use them.
29636         * dirty.cpp: Don't take a ref in DirtyNode.
29638 2007-12-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29640         * media.cpp: Add const modifier 
29642 2007-12-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29644         * downloader.cpp: Null-initialize a field.
29645         * dirty.cpp: Make DirtyNode keep a reference to the element it wraps.
29647 2007-12-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29649         * pipeline.h: Added, the start of the new media pipeline.
29651 2007-12-20  Sebastien Pouliot  <sebastien@ximian.com>
29653         * collection.cpp|h: Add missing method AddStylusPoints for 
29654         StylusPointCollection
29656 2007-12-20  Sebastien Pouliot  <sebastien@ximian.com> 
29658         * geometry.h: Remove hack for PathGeometry::FiguresProperty
29659         * xaml.cpp: If a collection is null by default then we must call
29660         parent->SetValue(dp, collection) or the collection, and it's 
29661         contents, won't be available. Fix (correctly) Chess.
29663 2007-12-19  Sebastien Pouliot  <sebastien@ximian.com> 
29665         * geometry.cpp: Fix Draw and ComputeBound to deal with the fact that
29666         there's no default Figure collection. Fix Chess crasher.
29667         * xaml.cpp: Fix unit test were empty string are parsed as 0.0,
29668         foir doubles, and as an "empty" (but not NULL) Value for 
29669         DOUBLE_ARRAY.
29671 2007-12-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29673         * media.cpp, media.h: Implement support for markers as a separate stream
29674           (the demuxer will call a callback when it encounters any streamed
29675           markers).
29677 2007-12-19  Sebastien Pouliot  <sebastien@ximian.com>
29679         * xaml.cpp: Add create_item_func for PathFigureCollection. This is 
29680         now needed since it defaults to null and not an empty collection.
29682 2007-12-19  Stephane Delcroix  <sdelcroix@novell.com>
29684         * uielement.[h|cpp]: set a default value (0,0) for RenderTransformOrigin.
29686 2007-12-18  Sebastien Pouliot  <sebastien@ximian.com>
29688         * color.cpp: Handle empty string correctly in color_from_str. Unit 
29689         tests shows this return 0 (and not transparent).
29691 2007-12-18  Stephane Delcroix  <sdelcroix@novell.com>
29693         * xaml.cpp: fix for bnc 348581.
29695 2007-12-18  Sebastien Pouliot  <sebastien@ximian.com> 
29697         * brush.cpp: Fix default color values for SolidColorBrush::Color and
29698         GradientStop::Color properties (see js unit tests).
29699         * geometry.cpp|h: Remove default collection from PathGeometry. Fix
29700         testPathGeometry unit test.
29702 2007-12-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29704         * media.cpp: ReadASFMarkers: Read markers as well as script commands.
29705           Subtract the preroll value from the pts before adding the marker. Unref
29706           the created collection and markers when finished with them.
29707           AdvanceFrame: Always call CheckMarkers, even if we couldn't advance the
29708           frame (might be necessary if the last frame has a marker).
29710 2007-12-17  Jb Evain  <jbevain@novell.com>
29712         * xaml.cpp: fix testMatrixWithZeroItem test case.
29714 2007-12-17  Jb Evain  <jbevain@novell.com>
29716         * type.cpp|h(.in), value.cpp|h(.in): remove the Matrix
29717         value type, has SL exposes it as a DependencyObject.
29719         * transform.cpp|h: define and implement the
29720         Matrix DependencyObject type.
29722         * xaml.cpp: create a Matrix DO on a Matrix xaml element.
29723         Also create such an object with the <MatrixTransform Matrix='...'>
29724         syntax.
29726 2007-12-17  Sebastien Pouliot  <sebastien@ximian.com>
29728         * xaml.cpp: Return an "empty" Value (not NULL) if no POINT_ARRAY
29729         is provided. Fix testAllowEmptyPointsOnPoly[gon|line] JS tests.
29731 2007-12-14  Jeffrey Stedfast  <fejj@novell.com>
29733         * runtime.cpp (fps_report_default): Default printf FPS report
29734         callback.
29735         (Surface::render_cb): Use instance-local variables for keeping
29736         track of FPS and use the report func if RUNTIME_INIT_SHOW_FPS bit
29737         is set.
29739         * runtime.h: Added a RUNTIME_INIT_SHOW_FPS flag
29740         (class Surface): New method to set the FPS report callback for a
29741         surface.
29743 2007-12-14  Chris Toshok  <toshok@ximian.com>
29745         * type.cpp.in, type.cpp (types_init_register_events): need to
29746         register DownloadProgressChanged and ImageFailed events on
29747         imagebrushes.
29749         * brush.h, brush.cpp: same, and hook up the events from
29750         ImageBrush's embedded image so that we can re-emit the events.
29751         
29752 2007-12-14  Jeffrey Stedfast  <fejj@novell.com>
29754         * downloader.cpp (Downloader::Abort): Don't abort if we've already
29755         been aborted or been notified that we've failed (needed protection
29756         for the Plugin downloader).
29757         (Downloader::Send): Set aborted = false.
29758         (Downloader::NotifyFailed): Don't do anything if we've already
29759         been notified of failure for this download request.
29761         * downloader.h (class Downloader): Keep track of aborted state as
29762         well.
29764 2007-12-14  Stephane Delcroix  <sdelcroix@novell.com>
29766         * brush.cpp: Fix for bnc 346204: Set both Width and Height for Image if
29767         only one (Width XOR Height) is provided.
29769 2007-12-14  Sebastien Pouliot  <sebastien@ximian.com> 
29771         * shape.cpp: Fix Path::GetBrushSize to ensure the geometry has
29772         been built before calling cairo_stroke_extents. This fix sample
29773         http://designwithsilverlight.com/tutorials/photoGalleryWall/default.html
29775 2007-12-13  Sebastien Pouliot  <sebastien@ximian.com> 
29777         * shape.cpp|h: Shortcut path bounds calculation when both Width
29778         and Height are specified. Add same clipping rules to Line, 
29779         Polyline and Polygon classes.
29781 2007-12-13  Sebastien Pouliot  <sebastien@ximian.com>
29783         * geometry.cpp: Resume using cairo_stroke_extents in some cases
29784         because we need very precise bounds for Fill to work properly.
29785         This fix Sprawl's cowboy hat ribbon :-)
29787 2007-12-12  Stephane Delcroix  <sdelcroix@novll.com>
29789         * brush.cpp: Fix RelativeTransform for RadialGradientBrush'es too.
29791 2007-12-11  Jeffrey Stedfast  <fejj@novell.com>
29793         * downloader.cpp|h: Made the ::Write() method take the same
29794         int-type args as the NPP_Write() function (which means int32 for
29795         both offset and nbytes).
29797 2007-12-11  Sebastien Pouliot  <sebastien@ximian.com>
29799         * stylus.cpp: Fix JS unit tests for Stroke properties by having
29800         a default DrawingAttributes inside the Stroke.
29802 2007-12-10  Chris Toshok  <toshok@ximian.com>
29804         * dependencyobject.h, dependencyobject.cpp: more event changes.
29805         events keep a integer "token" per event, that starts at 0, that is
29806         returned from the plugin's addEventListener method, and can be can
29807         be passed to the plugin's removeEventListener method.
29809 2007-12-10  Sebastien Pouliot  <sebastien@ximian.com>
29811         * shape.cpp: Fix Shape::GetSizeForBrush to adjust to the Stretch
29812         property of the Shape. Fix bug #346018
29814 2007-12-10  Jeffrey Stedfast  <fejj@novell.com>
29816         * runtime.cpp (InitializeDrawingArea): Removed the call to
29817         gtk_widget_set_size_request() - we now call it elsewhere (since
29818         going fullscreen requiers us to call set_size_request() /before/
29819         calling gtk_window_fullscreen(). When going to fullscreen mode,
29820         this was causing the FullScreenMessage item to appear in the
29821         upper-left corner rather than centered like it should have been.
29822         (Surface): Make the call to gtk_widget_set_size_request() here now
29823         that it no longer is called inside InitializeDrawingArea().
29825 2007-12-07  Sebastien Pouliot  <sebastien@ximian.com> 
29827         * geometry.cpp: Set SHAPE_EMPTY if only Height or Width is specified.
29828         * shape.cpp|h: Add Shape and Path NeedsClipping methods. Adjust the
29829         bounds calculation on paths when Height *and* Width are present.
29831 2007-12-07  Sebastien Pouliot  <sebastien@ximian.com>
29833         * shape.cpp: In Shape::ComputeBounds don't compute half thickness
29834         unless the value is needed.
29836 2007-12-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29838         * xaml.cpp: Plug more leaks.
29840 2007-12-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29842         * animation.cpp, geometry.cpp: Fix a couple of memory leaks,
29843           detected by the javascript tests.
29845 2007-12-06  Jeffrey Stedfast  <fejj@novell.com>
29847         * media.cpp (media_element_get_attributes): Added.
29848         (media_element_set_attributes): Added.
29849         (MediaElement): Set an empty list of attributes as per the spec.
29851 2007-12-06  Stephane Delcroix  <sdelcroix@novell.com>
29853         * media.cpp:
29854         * brush.cpp: implement RelativeTransform for image brushes and 
29855         LinearGradientBrush. RadialGradientBrush still missing.
29857 2007-12-06  Chris Toshok  <toshok@ximian.com>
29859         * dependencyobject.h, dependencyobject.cpp: make
29860         EventObject::AddHandler return the id (when using the event_name
29861         variant).
29863 2007-12-06  Chris Toshok  <toshok@ximian.com>
29865         * xaml.cpp (xaml_init): register the right constructors for
29866         PathSegmentCollection, GeometryCollection, and
29867         TransformCollection.
29869 2007-12-05  Chris Toshok  <toshok@ximian.com>
29871         * animation.cpp, animation.h: a couple of fixes.  Move away from
29872         watching the clock state in AnimationStorage and resetting the
29873         property value there.  instead, just override Clock::Stop in
29874         AnimationClock and call ResetPropertyValue on the storage.
29876         Also, when a storyboard's clock group is stopped, free it and
29877         remove it from the parent clock's list of children.  This should
29878         keep us from growing the number of clocks over time for
29879         storyboards which don't have Begin() called again (the only
29880         circumstance under which we destroy the clock).
29882         * clock.cpp, clock.h: handle the case where a clock can be started
29883         and then stopped before the next clock tick.  This happens when
29884         you move the mouse very quickly over the thumbnails in pageturn.
29886 2007-12-05  Sebastien Pouliot  <sebastien@ximian.com>
29888         * geometry.cpp: Fix crash when EllipseGeometry is used for clipping
29889         (no path provided). Fix Build/ComputeBounds when no center point
29890         is provided.
29892 2007-12-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29894         * uielement.h, visual.h, uielement.cpp, collection.cpp, control.cpp,
29895           dirty.cpp: Move UIElement::parent to Visual, rename it to visual_parent,
29896           and make it a real property with accessors.
29898 2007-12-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29900         * xaml.cpp, dependencyobject.h, collection.cpp, dependencyobject.cpp,
29901           animation.cpp: Rename DependencyObject::parent/SetParent/GetParent to
29902           logical_parent/SetLogicalParent/GetLogicalParent.
29904 2007-12-04  Larry Ewing  <lewing@novell.com>
29906         * media.cpp (Image::Render): fix the conditions for the opacity
29907         stability count.
29909 2007-12-03  Larry Ewing  <lewing@novell.com>
29911         * src/media.cpp (Image::Render): use paint_with_alpha if opacity
29912         is changing, use the old buffered alpha if it is not.
29914 2007-12-04  Jb Evain  <jbevain@novell.com>
29916         * stylus.cpp|h: add stylus_info_get_current function.
29917         Right now, it's an hack which always return a StylusInfo
29918         of type Mouse, not inverted.
29920 2007-12-03  Chris Toshok  <toshok@ximian.com>
29922         * clock.h, clock.cpp: rename ClampTimeToDuration to ClampTime, as
29923         it now clamps to [0,duration_timespan].  This fixes the Simon
29924         "button flying off the screen" bug.
29926 2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
29928         * clock.cpp (RaiseEnqueuedEvents): Optimized a bit by not
29929         iterating thru the list 6 times :)
29930         (ClockGroup::RaiseAccumulatedEvents): Make a copy of the
29931         child_clocks list here too, or we end up corrupting memory.
29933 2007-12-03  Larry Ewing  <lewing@novell.com>
29935         * media.cpp (Image::Render): wrap the region clipping in a #define
29936         for testing.
29938 2007-12-03  Larry Ewing  <lewing@novell.com>
29940         * media.cpp (Image::Render): remove accumulated drawing cruft.
29942 2007-12-03  Chris Toshok  <toshok@ximian.com>
29944         * animation.cpp: put back in the calls to ComputeBeginTime that I
29945         accidentally committed a few days ago (and lewing reverted to fix
29946         the build).  they're needed with the new clock changes.
29948 2007-12-03  Chris Toshok  <toshok@ximian.com>
29950         * clock.cpp, clock.h: rework the clock code a bunch.  There are a
29951         couple of large changes.
29953         Get rid of the stupid new_ and current_ fields.  Just update the
29954         field immediately.  This cuts down on logic in if checks, and also
29955         makes subclocks update much faster in relation to their parent
29956         clock (we used to have to wait 1 tick per level in the tree for
29957         state to propagate).
29959         Abstract out all the QueueEvent calls into setters in clock.h.
29961         Break up Clock::Tick some, so more of the code is reusable from
29962         ClockGroup::Tick without having to call Clock::Tick and then work
29963         behind its back.
29965 2007-12-03  Sebastien Pouliot  <sebastien@ximian.com>
29967         * brush.cpp: Fix breakage introduced in r90549 (the matrix is 
29968         already set on the pattern).
29970 2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
29972         * dependencyobject.cpp (RemoveHandler): Simplified a little.
29974         * animation.cpp (Stop): Remove the CompletedEvent root_clock
29975         handler. Fixes Simon's GAME OVER! textblock storyboard.
29977 2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
29979         * runtime.cpp: Added clipping/bounding-box override values.
29981         * uielement.cpp (DoRender): Changed optional bounding-box/clipping
29982         debugging drawing based on runtime settable bitflags.
29984 2007-12-03  Larry Ewing  <lewing@novell.com>
29986         * uielement.cpp: Clean up the debug rendering code for bounding
29987         boxes and clip regions.
29989 2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
29991         Fixes a bug pointed out by Larry when rendering lines beginning
29992         with a 'J', where the tail escapes the bounding box.
29994         * font.cpp (Layout): Use the horiBearingX font metric.
29995         (RenderLine): Same.
29997 2007-12-03  Larry Ewing  <lewing@novell.com>
29999         * brush.cpp (RadialGradientBrush::SetupBrush): add debug spew
30000         if we can't invert the matrix but still draw someting.
30002 2007-11-29  Larry Ewing  <lewing@novell.com>
30004         * panel.cpp (Panel::ComputeBounds): clip the clip the subpath
30005         bounds to the clip region as well.
30007         * control.cpp (Control::ComputeBounds): differenciate between our
30008         bounds and our subpath bounds.
30010         * control.h: add bounds_with_children and GetSubpathBounds ().
30012 2007-11-29  Jeffrey Stedfast  <fejj@novell.com>
30014         * font.cpp (TextFont::GetGlyphInfoByIndex): If we reach the end of
30015         the font face charmap, use unichar = 0 rather than returning NULL.
30017 2007-11-28  Chris Toshok  <toshok@ximian.com>
30019         * runtime.cpp (Realloc): when we Realloc(), we need to tell the
30020         toplevel canvas to update its bounds.  This *may* be wrong, but it
30021         definitely fixes matrix.
30022         (UpdateFullScreen): we need to stop the timesource when emitting
30023         the fullscreenchangeevent.  otherwise we can end up stuck in a
30024         nested glib mainloop and never return from the emit (actually we
30025         never even invoke the JS callback in matrix.  the nested loop
30026         happens somewhere deep in the bowels of NPN_Invoke).
30028 2007-11-28  Jeffrey Stedfast  <fejj@novell.com>
30030         * media.cpp (MediaElement::UpdateProgress): Got rid of a hardcoded
30031         hack that forced the assumption of a streaming (vs progressive)
30032         media download. Also fixed to emit a DownloadProgressChanged event
30033         at progress == 1.0 (which is what th Silverlight book says we're
30034         supposed to do).
30036 2007-11-28  Larry Ewing  <lewing@novell.com>
30038         * src/uielement.cpp (UIElement::DoRender): make sure we don't
30039         leave a path on the cairo context when clipping.
30041 2007-11-28  Chris Toshok  <toshok@ximian.com>
30043         * uielement.cpp (UIElement::UIElement): compute the initial total
30044         hit test visibility.
30046         * dirty.cpp (process_dirty_elements): don't invalidate/update
30047         bounds when the hit test visibility changes.
30049         * frameworkelement.(h,cpp): calculate the bounds here using
30050         width/height.
30052         * panel.cpp: chain up to frameworkelement.
30053         
30054 2007-11-27  Jeffrey Stedfast  <fejj@novell.com>
30056         * text.cpp (TextBlock::SetValue): Check the resulting Inlines
30057         collection formed from the Text property being set against the old
30058         Inlines - if no change, don't set the new Inlines collection,
30059         simply keep using the old. The idea is to prevent unnecessary
30060         layout re-calculations and invalidates.
30062 2007-11-27  Chris Toshok  <toshok@ximian.com>
30064         * dirty.[cpp,h] panel.[cpp,h], control.[cpp,h], uielement.[cpp,h],
30065         canvas.cpp, collection.cpp, shape.cpp:
30067         rather large change - don't use a large rectangular bounding box
30068         encompassing both the panel's frameworkelement bounds as well as
30069         the bounds of all its children.  Instead, only worry about the
30070         frameworkelement bounds, and let the children invalidate
30071         themselves.  but do all this in a way that we still use the
30072         subtree's bounding box to prune rendering and hit testing.
30074         since we won't be invalidating the entire box surrounding all
30075         children, we need to propagate visibility information down the
30076         tree as we do opacity.
30078         This should really speed up most animations (such as those in
30079         sprawl and airlines) since we'll be invalidating far smaller
30080         areas.
30081         
30082         (this code was stupidly hard for lewing and me to get right.  yay
30083         for jet lag.)
30085 2007-11-23  Larry Ewing  <lewing@novell.com>
30087         * runtime.cpp: add show=expose to toggle expose display.
30089 2007-11-22  Jb Evain  <jbevain@novell.com>
30091         * xaml.cpp (XamlElementInstantce::ClearSetProperties): avoid
30092         a glib warning if set_properties is NULL.
30094 2007-11-21  Chris Toshok  <toshok@ximian.com>
30096         * media.cpp (MediaElement::UpdateProgress): only set 1 of
30097         DownloadProgressProperty and BufferingProgressProperty.  The
30098         former is used if we're playing progressively, the latter if we're
30099         buffering before playing.  This fixes the buffering animation on
30100         the halo site.
30101         
30102 2007-11-21  Chris Toshok  <toshok@ximian.com>
30104         * runtime.cpp (Surface::Invalidate): add the int case around the
30105         complete expression to quiet gcc.
30107 2007-11-20  Larry Ewing  <lewing@novell.com>
30109         * runtime.cpp (Surface::expose_event_callback): take allocation
30110         offsets into account when invalidating and drawing.  Fixes
30111         #339010.
30113 2007-11-20  Chris Toshok  <toshok@ximian.com>
30115         * xaml.cpp (XamlElementInstance::ClearSetProperties): in glib <
30116         2.12, destroy the hash table and set it to NULL so we'll recreate
30117         it.
30119 2007-11-20  Chris Toshok  <toshok@ximian.com>
30121         * collection.cpp (VisualRemoved): switch from using
30122         item->parent->ChildInvalidated(UIElement), use
30123         item->parent->Invalidate (item->GetBounds()).
30125         * uielement.h, uielement.cpp: change ChildInvalidated(Region *) to
30126         Invalidate (Region*) and update calls to it.  Remove
30127         ChildInvalidated(UIElement*).  Also, remove all references to the
30128         children_dirty_region field.  everything goes through dirty_region
30129         now.
30131         * dirty.cpp: switch to using item->parent->Invalidate instead of
30132         item->parent->ChildInvalidated, and remove references to
30133         children_dirty_region.
30135 2007-11-20  Chris Toshok  <toshok@ximian.com>
30137         * dependencyobject.cpp: add a ctor for EventClosure, and do a deep
30138         copy before emitting an event.
30140 2007-11-20  Jeffrey Stedfast  <fejj@novell.com>
30142         * runtime.cpp (surface_get_toplevel): Removed.
30144         * uielement.cpp (uielement_get_isloaded): Removed.
30146 2007-11-20  Jb Evain  <jbevain@novell.com>
30148         * downloader.h (Downloader): override SetSurface and GetSurface
30149         to work on a custom surface field.
30150         * downloader.cpp (Downloader::Downloader): initialize
30151         surface to NULL.
30152         * runtime.h (Surface::CreateDownloader): initialize the surface
30153         of the downloader.
30154         * collection.cpp: when removing an UIElement from an UIElementCollection,
30155         clear out its surface to NULL.
30156         * visual.cpp: remove null check preventing to set the surface to NULL.
30157         * dependencyobject.cpp: (DependencyObject::FindName): if the
30158         current DO has no parent, fallback to its surface to try
30159         FindName on its top level element (needed to call FindName
30160         on a downloader for instance). Fixes #335018.
30162 2007-11-20  Jackson Harper  <jackson@ximian.com>
30164         * xaml.cpp: If we need to reparse the attributes for an element
30165         (because we loaded a class and the props need to be set on the new
30166         class) we have to clear out the hash of properties that are marked
30167         as already set. Otherwise we get a property already set error.
30169 2007-11-20  Jackson Harper  <jackson@ximian.com>
30171         * xaml.cpp: Add new function to create a value from a string
30172         without having the Kind available (you still need to have the type
30173         in string form).
30174         - SetAttribute now ensures that the attribute was set properly
30175         - If the object we are trying to set an attribute on is a managed
30176         object and there is no DependencyProperty for the attribute, we
30177         try setting the attribute on the object.
30179 2007-11-20  Sebastien Pouliot  <sebastien@ximian.com>
30181         * uielement.cpp: Ensure the default value for VisibilityProperty
30182         is VisibilityCollapsed even if the value is invalid (for Javascript
30183         compatibility, since 1.1 should throw an exception). See #340799
30185 2007-11-20  Stephane Delcroix  <sdelcroix@novell.com>
30187         * uielement.cpp: FullInvalidate on setting Viibility to Visible.
30188         Fixes bnc #342662.
30190 2007-11-19  Larry Ewing  <lewing@novell.com>
30192         * uielement.cpp: setup the clip before push/pop group so that
30193         we reduce the temp surface size.
30195 2007-11-16  Sebastien Pouliot  <sebastien@ximian.com>
30197         * transform.cpp: Use cairo_matrix_init_translate instead of 
30198         cairo_matrix_init + cairo_matrix_translate where possible (which
30199         avoid the multiplication with the identity matrix).
30201 2007-11-16  Jeffrey Stedfast  <fejj@novell.com>
30203         * runtime.cpp (surface_get_toplevel): New function needed by the
30204         managed land to implement a bit of a hack for the Resize
30205         event (when someone connects to the Resize event, if the toplevel
30206         canvas is already loaded, we want to immediately call the
30207         handler).
30209         * uielement.cpp (uielement_get_isloaded): Same.
30211 2007-11-15  Jackson Harper  <jackson@ximian.com>
30213         * Makefile.am:
30214         * parsertest.cpp: Some tests I use for checking the parsing
30215         functions.
30217 2007-11-15  Jackson Harper  <jackson@ximian.com>
30219         * color.h: Add equality operators.
30221 2007-11-15  Jackson Harper  <jackson@ximian.com>
30223         * xaml.cpp: use isalpha for determining whether or not an int32 is
30224         an enum.  This allows things like -1 to work.
30226 2007-11-15  Jackson Harper  <jackson@ximian.com>
30228         * xaml.cpp: Make sure the entire string is validate ie no 25.0XXXX
30229         for doubles.
30231 2007-11-15  Jackson Harper  <jackson@ximian.com>
30233         * point.h|cpp:
30234         * rect.h|cpp: Update signatures to allow for error checking when
30235         creating types from strings.
30236         * xaml.h|cpp: Consolidate code to create values from strings, add
30237         some error checking.  Update most of the parsing methods so it is
30238         possible to return errors when parsing.
30239         * playlist.cpp: Sig update.
30240         
30241 2007-11-15  Jackson Harper  <jackson@ximian.com>
30243         * stylus.h|cpp: Initialize these collections so we don't get NULLs
30244         for GetValue on them.
30246 2007-11-14  Chris Toshok  <toshok@ximian.com>
30248         * runtime.cpp (strcase_hash): swap this out for mono's eglib
30249         implementation, augmented with g_ascii_tolower, to remove the
30250         malloc/free and 2 passes over the string.
30252 2007-11-14  Chris Toshok  <toshok@ximian.com>
30254         * dependencyobject.cpp: move the strcase_hash/equals functions...
30255         
30256         * runtime.cpp: here.
30258         * runtime.h: and make them public.
30260         * type.cpp.in, type.cpp (RegisterEvent): and use them here
30261         (RegisterType): and here.
30263 2007-11-14  Jb Evain  <jbevain@novell.com>
30265         * media.cpp|h: remove specific Image and MediaElement
30266         accessors for progress property now that the code
30267         moved to MediaBase.
30269 2007-11-14  Jb Evain  <jbevain@novell.com>
30271         * type.cpp.in, type.cpp, media.h, media.cpp: Move
30272         DownloadProgressProperty and DownloadProgressChangedEvent
30273         to MediaBase so it gets shared for both Image and MediaElement.
30274         Fixes #325255.
30276 2007-11-14  Jb Evain  <jbevain@novell.com>
30278         * value.h.in: update code template to match current value.h.
30280 2007-11-14  Sebastien Pouliot  <sebastien@ximian.com> 
30282         * openfile.cpp: Added support for Filter and FilterIndex.
30284 2007-11-14  Sebastien Pouliot  <sebastien@ximian.com>
30286         * animation.cpp: Replaced g_assert_not_reached with g_warning.
30287         At least until #340799 (enum validation) is fixed. Part of #335413
30288         * shape.cpp: Add g_warning to replace the g_assert_not_reached 
30289         removed earlier. At least until #340799 (enum validation) is fixed.
30290         * uielement.cpp: Replaced g_assert_not_reached with g_warning.
30291         At least until #340799 (enum validation) is fixed. Part of #335413
30293 2007-11-13  Miguel de Icaza  <miguel@novell.com>
30295         * value.cpp (Value::ToString): Add method to help debug some
30296         apps. 
30298 2007-11-13  Jeffrey Stedfast  <fejj@novell.com>
30300         * text.cpp (SetValue): Get rid of \r's and treat \n's as LineBreak
30301         elements.
30303 2007-11-13  Sebastien Pouliot  <sebastien@ximian.com>
30305         * brush.cpp|h: Do not compute brush bounds for a SolidColorBrush 
30306         as this is unrequired (API wise) and can be expensive (it was enough
30307         to add custom bound calculation code to shapes and geometries).
30309 2007-11-12  Sebastien Pouliot  <sebastien@ximian.com>
30311         * shape.cpp: Removed g_assert_not_reached and, if any bad value is
30312         supplied (should be catched well before that, #340799), use the 
30313         default value. Fix part of #335413
30315 2007-11-09  Chris Toshok  <toshok@ximian.com>
30317         * dirty.cpp, uielement.h, uielement.cpp: glib was hurting my head.
30318         convert this over to using our List class.  Also fix a bug where
30319         elements with down dirty flags weren't being inserted propertly
30320         into the up dirty list.
30322 2007-11-09  Sebastien Pouliot  <sebastien@ximian.com>
30324         * animation.cpp: Fix crash on empty BeginStoryboard (#340384)
30326 2007-11-09  Miguel de Icaza  <miguel@novell.com>
30328         * value.h (struct Value): Cope with NULL strings.
30330 2007-11-09  Jackson Harper  <jackson@ximian.com>
30332         * xaml.cpp: Closepath needs to draw a line to the path's starting
30333         point and needs to create a new path figure element at the
30334         starting point.
30336 2007-11-09  Jackson Harper  <jackson@ximian.com>
30338         * type.cpp|h.in: Add an accesor for the ContentProperty name.
30339         
30340 2007-11-09  Jackson Harper  <jackson@ximian.com>
30342         * xaml.cpp: Rework to allow unparented properties.  createFromXaml
30343         ("<Canvas.Background><SolidColorBrush></Canvas.Background") will
30344         basically ignore the property and will return the SolidColorBrush
30345         as the top element. This fixes 335865.
30347 2007-11-08  Chris Toshok  <toshok@ximian.com>
30349         [ may go a long way toward fixing #337714, if it doesn't fix it
30350         outright ]
30351         
30352         * uielement.h, uielement.cpp: add an overload of ChildInvalidated
30353         that takes a UIElement* instead of a region.  The implementation
30354         just invalidates the entire bounds of the child in the parent.
30356         * collection.h, collection.cpp: we weren't breaking the
30357         item->parent link when removing visuals from a VisualCollection.
30358         Add VisualRemoved, which invalidates the child's region (and stop
30359         using child->Invalidate, since that won't work once the link to
30360         the parent is broken) and breaks the parent link.  Call
30361         VisualRemoved from everywhere we remove/replace a visual in our
30362         collection.  Also, rename VisualUpdated to VisualAdded, since
30363         that's more indicative of why the method is being called.
30364         
30365 2007-11-08  Jeffrey Stedfast  <fejj@novell.com>
30367         * runtime.cpp (Attach): Emit the Resize event.
30368         (drawing_area_size_allocate): Emit the Resize event.
30370 2007-11-07  Chris Toshok  <toshok@ximian.com>
30372         * clock.cpp (Clock::Begin): guard against division by zero.
30374 2007-11-07  Chris Toshok  <toshok@ximian.com>
30376         * runtime.cpp, runtime.h: make GetWidth()/GetHeight() return the
30377         width the canvas tells the surface to be (if it does).  this fixes
30378         issues uncovered by larry's improved bounds checking code.  Also,
30379         remove the instance fields for screen_height/width.  they're only
30380         used in one place, so make them local to that function.
30382 2007-11-07  Chris Toshok  <toshok@ximian.com>
30384         * brush.h, brush.cpp: add some c++ setters/getters to make some
30385         code a little smaller.
30387 2007-11-06  Larry Ewing  <lewing@novell.com>
30389         * src/frameworkelement.cpp: Force a full invalidate if the width
30390         or height property because panels include their children in the
30391         bounds compution and will pass the dirty check.
30393         * media.cpp: Implement the Region based rendering for MediaElement
30394         and Image.
30396         * panel.cpp: Unconditionally pass the region to the Children.
30398         * panel.cpp: when rendering children treat panels and other
30399         objects differently.  For containers pass the clipped region
30400         directly, for elements subdivide the region and paint each block.
30401         Renable FindStartingElement with a slightly less expensive
30402         algorithm.
30404         * rect.cpp: don't collapse complicated regions the drawing code is
30405         smarter now.
30407 2007-11-06  Jeffrey Stedfast  <fejj@novell.com>
30409         * font.cpp (TextFont): Fixed to not exit() even when no font could
30410         be loaded from FreeType.
30412 2007-11-06  Chris Toshok  <toshok@ximian.com>
30414         * dependencyobject.cpp (GetObjectType): make this g_critical, and
30415         also print out a stack trace if STACK_DEBUG is enabled.
30417         * dependencyobject.h: stop Emitting the DestroyedEvent from the
30418         dtor.  instead do it from unref before we delete the object.
30420 2007-11-05  Chris Toshok  <toshok@ximian.com>
30422         * rect.h (ToGdkRectangle): quiet countless warnings.
30424 2007-11-05  Larry Ewing  <lewing@novell.com>
30426         Merge most of dirty region branch.  This makes the dirty logic and
30427         rendering code use the new region class to track more complicated
30428         shapes than bounding boxes when processing changed areas.
30430         * media.cpp: switch back to indirect rendering for drawing media
30431         elements until a solution to the boundry clipping can be found.
30433         * panel.cpp: disable FindStartingElement (the buggy) until a more
30434         optimal method can be found.
30436         * dirty.cpp: Use dirty regions.  Process DirtyOpacity first (still
30437         needs to be fixed to order dirty children.
30439 2007-11-03  Chris Toshok  <toshok@ximian.com>
30441         * clock.cpp (ClockGroup::Tick): instead of calling Clock::Stop,
30442         call SkipToFill if we have no active child clocks.
30443         (ClockGroup::Stop): simplify this.
30444         (ClockGroup::Seek): make this look a little more like ::Stop.
30446 2007-11-03  Chris Toshok  <toshok@ximian.com>
30448         * xaml.cpp (repeat_behavior_from_str): add support for the
30449         "ff.ffx" format for repeat behaviors.
30451         * clock.cpp, clock.h: the first sizeable amount of work done in a
30452         while to correct the multitude of tiny bugs in clock handling.
30453         this gets AnimationMatrix.xaml maybe 40% working.  Clean up and
30454         comment Clock::Tick a lot, and remove a bunch of the old
30455         CLOCK_DEBUG spew which was making the code that much more
30456         difficult to look at.
30457         
30458 2007-11-02  Jeffrey Stedfast  <fejj@novell.com>
30460         * font.cpp (TextFontDescription::SetScale): Removed, this hack
30461         wasn't working as well as I'd hoped.
30462         (TextFontDescription::GetScale): Same.
30463         (TextFontDescription::CreatePattern): If the requested font size
30464         is < 41.0 (seems to be the magic number where scaling loses impact
30465         on metrics), use FontSize=41.0 and do proper scaling to get the
30466         actual size we want. My worry was that asking for small font sizes
30467         (smaller than 16.0?) would look ugly with this hack, but that is
30468         surprisingly not true. By always requesting a font size that will
30469         yield the generic font metrics (e.g. not some hacked font size),
30470         we will always be able to wrap identically no matter what FontSize
30471         is requested (so long as the width gets scaled appropriately).
30473         * text.cpp (TextBlock::ComputeTransform): Removed.
30475 2007-11-02  Jeffrey Stedfast  <fejj@novell.com>
30477         * font.cpp (RenderLine): Render glyphs with index 0 too, so that
30478         we render an empty box for glyphs not in the font (just like
30479         Silverlight).
30481         * text.cpp (ComputeTransform): Fixed to use the correct matrix for
30482         getting the scale values.
30484 2007-11-01  Jackson Harper  <jackson@ximian.com>
30486         * trigger.h:
30487         * text.h:
30488         * geometry.h
30489         * transform.h:
30490         * animation.h:
30491         * brush.h:
30492         * panel.h: Add ContentProperty 'attributes'.
30493         * typegen.cs:
30494         * type.cpp|h:  Add content property information to types.  This
30495         will be used by the parser and will allow the parser to drop it's
30496         special type system.
30498 2007-11-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30500         * animation.cpp: AnimationStorage: unregister from registered events on
30501           destruction.
30503 2007-11-01  Jeffrey Stedfast  <fejj@novell.com>
30505         * text.cpp (TextBlock::SetValue): Oops - if we are setting an
30506         empty string on the Text property, then we need to clear out
30507         whatever was there before (if anything).
30509 2007-10-31  Jeffrey Stedfast  <fejj@novell.com>
30511         Fixes for handling lwsp cdata between <Run> elements.
30513         * xaml.cpp (flush_char_data): Reworked a bit. Now takes a 'start'
30514         arg suggesting that we are being called in response to a new
30515         element starting vs an element ending.
30516         (start_element_handler): Pass true as the start arg to
30517         flush_char_data().
30518         (end_element_handler): Pass false as the start arg to
30519         flush_char_data().
30521         * text.cpp (SetValue): Only add a run if the string is non-empty.
30523 2007-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30525         * dependencyobject.cpp: Guard against calling NULL.
30527 2007-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30529         * media.cpp: Redo ASFParser::Malloc to avoid warnings, and make sure the
30530           return value is always checked.
30532 2007-10-31  Chris Toshok  <toshok@ximian.com>
30534         * trigger.cpp (EventTrigger::SetTarget,
30535         EventTrigger::RemoveTarget): use UIElement::LoadedEvent instead of
30536         "Loaded".
30538 2007-10-31  Jackson Harper  <jackson@ximian.com>
30540         * dependencyobject.h|cpp: Give DependencyProperties the ability to
30541         be readonly.
30542         * canvas.cpp:
30543         * animation.cpp: Signature updates
30544         
30545 2007-10-30  Jackson Harper  <jackson@ximian.com>
30547         * xaml.h: Add the error args to the loader.
30548         * xaml.cpp: Make most of our parsing errors match Silverlight.
30550 2007-10-30  Jeffrey Stedfast  <fejj@novell.com>
30552         * font.cpp (Path): Check the path data != NULL before we make any
30553         cairo calls, no sense wasting cycles if we will no-op in the end.
30555 2007-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30557         * media.cpp, media.h: Fix signedness mismatch warning.
30559 2007-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30561         * mplayer.h: Added asf_player field.
30563 2007-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30565         * Makefile.am: Add files in asf/.
30566         * media.cpp, media.h: Read ASF markers from the file. Save the position when
30567           advancing frames. Use the difference between the last position and the
30568           current position to determine if any MarkerReached events are supposed
30569           to be raised.
30570         * mplayer.cpp: Add some error checking/reporting when opening streams.
30571           Register our own demuxer with ffmpeg (defining MOON_DEMUXER is required
30572           to actually use it).
30574 2007-10-26  Jeffrey Stedfast  <fejj@novell.com>
30576         * font.cpp (RenderLine): Split out from TextLayout::Render() and
30577         made to reset the brush at each segment to match Silverlight's
30578         behaviour.
30580 2007-10-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30582         * debug.cpp: Added print_gdb_trace with an explaining comment.
30583         * debug.h: Make print_stack_trace compile (to nothing) when STACK_DEBUG
30584           isn't defined.
30586 2007-10-25  Jeffrey Stedfast  <fejj@novell.com>
30588         * font.cpp (TextLayout::Render): Set y1 before creating/appending
30589         the path instead of in the segment loop.
30590         (TextLayout::Render): Make underline pos relative to y1 (aka the
30591         baseline) that we calculated above. Makes this easier to
30592         understand.
30594 2007-10-25  Jeffrey Stedfast  <fejj@novell.com>
30596         * font.cpp (TextLayout::Layout): Always calculate segment->width
30597         here.
30598         (TextLayout::Render): Not here.
30600         * text.cpp (Glyphs::GetTransformOrigin): Implemented.
30602 2007-10-25  Jackson Harper  <jackson@ximian.com>
30604         * type.cpp|.in:
30605         * runtime.h|cpp: Add the Error event to the surface.  Raising this
30606         event will cause the plugins onError handler to be invoked, the
30607         default onError handler notifies the user of the error with a
30608         javascript alert.
30610 2007-10-25  Sebastien Pouliot  <sebastien@ximian.com>
30612         * stylus.cpp|h: Keep the semi-working code as a fast path to
30613         render strokes (if no outline color is used and when width ==
30614         height). Added a hack to support OutlineColor.
30616 2007-10-25  Jeffrey Stedfast  <fejj@novell.com>
30618         * brush.cpp (Brush::SetupBrush): Now takes width and height
30619         arguments. Updated all brushes.
30621         * text.cpp (Glyphs::Render): We want to check this->width and
30622         this->height, not the width/height arguments.
30624         * brush.cpp (ImageBrush::SetupBrush): If the image isn't loaded
30625         yet (surface = NULL), return.
30626         (LinearGradientBrush::SetupBrush): Get rid of some of the valgrind
30627         warnings.
30629 2007-10-24  Jeffrey Stedfast  <fejj@novell.com>
30631         * text.cpp (Glyphs::GetSizeForBrush): Implemented.
30633         * font.cpp (TextLayout::Layout): Slight fix for Wrap mode.
30635 2007-10-24  Jackson Harper  <jackson@ximian.com>
30637         * type.cpp.in/h.in: Add some c-style functions for creating
30638         instances.
30640 2007-10-24  Jackson Harper  <jackson@ximian.com>
30642         * typegen.cs:
30643         * type.cpp.in/h.in: Add a create instance call to types.  This
30644         will allow the parser to use our Type object instead of creating
30645         it's own.
30647 2007-10-24  Chris Toshok  <toshok@ximian.com>
30649         * clock.cpp (ManualTimeSource::SetCurrentTime): pass FALSE to
30650         g_main_context_iteration so we don't block if there isn't anything
30651         to do.  also, emit 3 TickEvents to make sure the tick is
30652         propagated down into the animations.
30654 2007-10-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30656         * xaml.cpp: No need to check if the created object is an UIElement before
30657           calling SetSurface anymore.
30658         * visual.h: Update SetSurface to virtual.
30659         * brush.cpp, brush.h: Override SetSurface so that we can forward the call to
30660           our Image object.
30661         * dependencyobject.h: Add virtual Set/GetSurface to DependencyObject (here
30662           the methods do nothing, the surface is still stored in Visual, but this
30663           allows classes that do not inherit from Visual to correctly set the
30664           surface on their members which do inherit from Visual).
30666 2007-10-24  Jeffrey Stedfast  <fejj@novell.com>
30668         * uri.cpp (Uri::Parse): Treat uri's w/o a protocol as file uri's.
30670 2007-10-23  Jeffrey Stedfast  <fejj@novell.com>
30672         * text.cpp (TextBlock::ComputeTransform): If the scale has
30673         changed, set dirty = true so that we recalculate the layout.
30675         * mplayer.cpp (audio_play): Instead of using the SET_VOLUME()
30676         macro, just do it w/o so that we hush the compiler warning.
30678 2007-10-23  Chris Toshok  <toshok@ximian.com>
30680         * clock.cpp (Clock::GetBeginTime): stop treating the BeginTime of
30681         a clock in absolute terms.  instead, offset it from the current
30682         time of the parent clock (or time manager).
30683         (Clock::Begin): clamp progress to 1.0
30684         (SMOOTHING_ALPHA): switch this to 0.30 to see if that helps things
30685         by making it less sensitive to immediate changes.
30687 2007-10-23  Chris Toshok  <toshok@ximian.com>
30689         * mplayer.cpp (Open): if RUNTIME_INIT_AUDIO_DISABLE, don't use
30690         audio (so we sync to the clock).
30692         * runtime.h: add RUNTIME_INIT_AUDIO_DISABLE.
30694 2007-10-23  Chris Toshok  <toshok@ximian.com>
30696         * clock.cpp (ManualTimeSource::SetCurrentTime): call
30697         g_main_context_iteration as a stopgap to make video elements show
30698         up.
30699         (TimeManager::TimeManager): remove spew.
30700         (TimeManager::Tick): re-enable the clock throttling.  oops.
30702 2007-10-23  Larry Ewing  <lewing@novell.com>
30704         * src/runtime.cpp: clear the background in more cases.
30706 2007-10-23  Larry Ewing  <lewing@novell.com>
30708         * src/runtime.cpp: make the eventbox windowless and remove the
30709         stale event code.  Let gtk do the clearing.
30711 2007-10-23  Jeffrey Stedfast  <fejj@novell.com>
30713         * mplayer.cpp (MediaPlayer::Open): Re-enable audio :)
30714         (MediaPlayer::LoadVideoFrame): Keep decoding video until we find
30715         the correct frame rather than just rendering the first frame we
30716         find.
30718 2007-10-23  Chris Toshok  <toshok@ximian.com>
30720         * mplayer.cpp: replace all occurences of av_gettime with
30721         TimeManager::Instance()->GetCurrentTimeUsec().
30723         * runtime.cpp (overrides): add the "timesource=manual" OVERRIDE
30724         thingy.
30725         (render_cb): re-enable the fps on the console.  oops.
30727         * runtime.h (RuntimeInitFlags): add
30728         RUNTIME_INIT_TIMESOURCE_MANUAL.
30730         * type.h.in, type.cpp.in: remove BASE (should have happened on my
30731         last commit), and add in the TIMESOURCE's, and TIMESOURCE's "Tick"
30732         event.
30734         * type.h, type.cpp: sync to the .in files.
30736         * clock.h, clock.cpp: add the idea of a TimeSource to the
30737         TimeManager.  Two are written - SystemTimeSource, which uses the
30738         gtk timeout, and ManualTimeSource, which allows code to set what
30739         the global time should be.  Also, add GetCurrentTimeUsec() for use
30740         by mplayer, so we can switch it away from av_gettime and make it
30741         possible for video to sync to the ManualTimeSource.
30743 2007-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30745         * runtime.cpp: Base -> EventObject changes when OBJECT_TRACKING is defined.
30747 2007-10-23  Larry Ewing  <lewing@novell.com>
30749         * runtime.cpp: make sure we unref the surface.
30751 2007-10-23  Larry Ewing  <lewing@novell.com>
30753         * runtime.cpp: avoid making gdk calls that pull in the platform
30754         cairo.
30756 2007-10-22  Jeffrey Stedfast  <fejj@novell.com>
30758         * text.cpp: Don't allow Pango rendering if disabled at
30759         configure-time.
30760         (TextBlock::ComputeTransform): Moved the scale logic here from
30761         OnPropertyChanged() so that we catch all transform changes.
30763         * uielement.h: Made ComputeTransform() virtual.
30765 2007-10-22  Chris Toshok  <toshok@ximian.com>
30767         * clock.cpp (TimeManager::Shutdown): don't cast to Base anymore..
30768         we can just cast to Clock here.
30770         * dependencyobject.h, dependencyobject.cpp: remove the Base class,
30771         and make roll EventObject and Base into one class (still called
30772         EventObject).
30774 2007-10-20  Sebastien Pouliot  <sebastien@ximian.com>
30776         * runtime.h: Add gtk.h (since it depended on stylus.h to get it)
30777         * stylus.cpp|h: Add some missing functions. Rendering changes 
30778         (not active, work in progress).
30780 2007-10-18  Chris Toshok  <toshok@ximian.com>
30782         * dependencyobject.h: fix comment.
30784         * animation.h, animation.cpp: use the
30785         Clock::CurrentStateInvalidated event to reset the property value
30786         to baseValue instead of overriding the Clock::Stop method.  This
30787         fixes clocks with FillBehavior="Stop" instead of storyboard with
30788         FillBehavior="Fill".
30790         * clock.cpp (Clock::Tick): remove a stupid block of code that was
30791         causing clocks which were Filling to spontaneously end up in their
30792         Active state again.
30794 2007-10-18  Sebastien Pouliot  <sebastien@ximian.com>
30796         * geometry.cpp: New code to handle arc segments. No known issues
30797         (except the handling of near zero values which doesn't seems to
30798         be constant).
30799         * libmoon.h, Makefile.am: Remove reference to rsvg.h
30800         * rsvg.cpp|h: Remove from SVN.
30802 2007-10-17  Andrew Jorgensen  <ajorgensen@novell.com>
30804         * cairo-embed.h, pixman-embed.h: Added symbol renaming headers
30805         based on the ones from libgdiplus.
30807 2007-10-17  Chris Toshok  <toshok@ximian.com>
30809         * xaml.cpp (XNamespace::SetAttribute): make sure to add the newly
30810         created managed dob to the created_elements list so it gets
30811         unrefed properly.
30812         (XamlLoader::XamlLoader): use ->ref() instead of base_ref().
30813         (XamlLoader::~XamlLoader): use ->unref() instead of base_unref().
30815 2007-10-17  Chris Toshok  <toshok@ximian.com>
30817         * Makefile.am (demo_LDADD): add MOON_PROG_LIBS.
30818         (sizes_LDADD): same.
30820 2007-10-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30822         * dependencyobject.h: Add a GET_OBJ_ID macro that resolves to -1 if
30823           OBJECT_TRACKING isn't defined.
30824         * runtime.h: Enable the contextual downloader warning again.
30825         * dependencyobject.cpp: Fix build when DEBUG is defined.
30827 2007-10-16  Jeffrey Stedfast  <fejj@gnome.org>
30829         * text.cpp (OnPropertyChanged): When intercepting non-TextBlock
30830         properties changing value, don't fall thru to the rest of the
30831         checks (as then we'd re-emit it to sublisteners which isn't what
30832         we want I don't think). Also, don't change the font scale unless
30833         it's >= 1.0 (e.g. don't down-scale). Fixes an infinite loop.
30835 2007-10-16  Jeffrey Stedfast  <fejj@novell.com>
30837         * text.cpp (OnPropertyChanged): Listen for RenderTransformProperty
30838         changes and apply the y-scale to the font so that we can more
30839         accurately path the font glyphs at the scale we intend to render
30840         them at.
30842         * font.cpp (TextFont): Cache the scale here.
30843         (Kerning): Apply the scale.
30844         (Descender): Here too.
30845         (Ascender): And here.
30846         (Height): Same.
30847         (GetGlyphInfo): Create and apply the scale/invert matrix. Also
30848         scale the glyph metrics.
30849         (UnderlinePosition): Apply the scale.
30850         (UnderlineThickness): Same here.
30851         (TextFontDescription): Added a scale, default to 1.0
30852         (CreatePattern): Set the scale on the pattern.
30853         (UnsetFields): When unsetting values, restore them to their
30854         default values.
30855         (Merge): Merge the scale.
30856         (GetScale): New method.
30857         (SetScale): New method.
30859 2007-10-16  Chris Toshok  <toshok@ximian.com>
30861         * dependencyobject.cpp (detach_depobj_values): call
30862         obj->SetParent(NULL) here as well, so we don't reference a
30863         destroyed parent.
30865         * runtime.cpp (Surface::Surface): use Surface::timeline instead of
30866         a local variable.
30867         (Surface::~Surface): make sure to remove the surface's clock_group
30868         from the time manager.  Also, unref the timeline we create in the
30869         ctor.
30870         (runtime_shutdown): reimplement the oldest 10 alive object
30871         printing stuff in the face of using a hashtable.
30873         * runtime.h: add Surface::timeline, so we can clean it up in
30874         ~Surface.
30876         * dependencyobject.h (Base::) use a hash table to track alive
30877         objects instead of a list.  this speeds up things immensely.
30879         * clock.cpp (ClockGroup::~ClockGroup): call SetParent(NULL) on our
30880         children so any further GetParent() calls won't return a destroyed
30881         object.
30883         * animation.cpp (Storyboard::~Storyboard): guard against a crash
30884         when a parent clock is freed before the child clock.
30886         * text.cpp (TextBlock::TextBlock): plug a couple memory leaks.
30888 2007-10-15  Chris Toshok  <toshok@ximian.com>
30890         * animation.[h,cpp]: remove the strong reference from
30891         AnimationStorage to its target object, and instead use the
30892         EventObject::DestroyEvent to implement a weak reference.  See the
30893         TODO for a blurb about generalizing this.
30895         * typegen.cs (GenerateTypeCpp): remove the special case code that
30896         makes INVALID the parent of DEPENDENCY_OBJECT - we need it to have
30897         EVENTOBJECT as the parent for the DestroyedEvent to line up
30898         properly in the event tables.
30900         * type.cpp.in, type.cpp (types_init_register_events): register the
30901         Destroyed event.
30903         * dependencyobject.[h,cpp]: add EventObject::DestroyedEvent,
30904         emitted just before we clean up the EventObject's event list.
30906 2007-10-15  Jeffrey Stedfast  <fejj@novell.com>
30908         * text.cpp (Layout): I think I finally figured out the scaling to
30909         apply to the units provided in the Indices property and also
30910         discovered that the Advance is not applied at the uOffset, it is
30911         applied independently of the uOffset.
30912         (Render): Same fixes as in Layout().
30914 2007-10-13  Chris Toshok  <toshok@ximian.com>
30916         * animation.cpp (balf): fix bug 325175 by not taking the square
30917         root of a negative number (fixes the flashing in the credits for
30918         Monotone.)  Also clean up this code so that we're not using
30919         globals to communicate parameters (through Simpson) between balf
30920         and BezierArcLength, and lower the tolerance (I doubt we need
30921         *that* much precision).
30923 2007-10-12  Chris Toshok  <toshok@ximian.com>
30925         * control.[h,cpp], brush.[h,cpp], text.[h,cpp], geometry.[h,cpp],
30926         dependencyobject.[h,cpp], shape.[h,cpp], animation.[h,cpp],
30927         transform.[h,cpp]: add an extra parameter to OnSubPropertyChanged,
30928         which gives the actual object whose property changed.  Also, in a
30929         few instances fix the NotifyAttachersOnPropertyChanged call that
30930         some classes used to not use the subprop, but the prop.  The
30931         subprop doesn't refer to "this" in those instances, but to @obj.
30932         @prop refers to "this".
30934         * collection.[h,cpp]: use the above change to correctly support
30935         the DependencyObject parameter of OnCollectionChanged (when the
30936         change type is ItemChanged).
30937         
30938         * uielement.[h,cpp], panel.[h,cpp]: use the above two changes to
30939         move the ZIndex property support from UIElement to Panel, which
30940         makes more logical sense (and is likely the reason MS removed the
30941         property from UIElement in 1.1) -- ZIndex is about what happens to
30942         this UIElement in relation to its siblings.
30943         
30944 2007-10-12  Sebastien Pouliot  <sebastien@ximian.com>
30946         * shape.cpp: Only set miter limit if line join is set to miter.
30948 2007-10-12  Chris Toshok  <toshok@ximian.com>
30950         * collection.cpp: move the panel logic away from VisualCollection.
30951         It belongs in Panel::OnCollectionChanged.
30953         * panel.cpp: flesh out Panel::OnCollectionChanged, making it do
30954         everything the VisualCollection code used to do on its behalf.
30956         * uielement.h, uielement.cpp: introduce a new field for use with
30957         the dirty code - force_redraw_of_new_bounds.  Basically, we set
30958         the field according to the parameter passed to UpdateBounds.
30960         * dirty.cpp (UpdateBounds): force an invalidate if
30961         el->force_redraw_of_new_bounds is set.
30963 2007-10-12  Chris Toshok  <toshok@ximian.com>
30965         * clock.h, clock.cpp: add some Timeout functions (AddTimeout,
30966         RemoveTimeout) which wrap the glib timeout calls we were making.
30967         This lets us keep track of active timeout ids and remove them all
30968         when the TimeManager shuts down.  So, if we leak MediaElements
30969         (which seems to be happening in TopBanana), we don't crash.
30971         * mplayer.cpp: use the new TimeManager timeout call instead of the
30972         glib mainloop directly.
30974         * media.cpp: same.
30975         
30976 2007-10-12  Jeffrey Stedfast  <fejj@novell.com>
30978         * downloader.cpp (downloader_init): Default the DownloadProgress
30979         to 0.0.
30981 2007-10-12  Jackson Harper  <jackson@ximian.com>
30983         * downloader.h: Add an access to the downloader state.  I need
30984         this in the plugin.
30986 2007-10-12  Jb Evain  <jbevain@novell.com>
30988         * brush.cpp|h: add image_brush_set_source.
30990 2007-10-11  Jeffrey Stedfast  <fejj@novell.com>
30992         * mplayer.cpp (convert_to_rgb): Worked around an swscaler crash
30993         where it doesn't handle J-Type picture frames.
30995 2007-10-11  Sebastien Pouliot  <sebastien@ximian.com>
30997         * panel.cpp|h: Split Render into Render and RenderChildren, so 
30998         the later can be overriden in InkPresenter.
30999         * stylus.cpp|h: A quick (see FIXME) implementation to render 
31000         ink found in some xaml files.
31002 2007-10-11  Jeffrey Stedfast  <fejj@novell.com>
31004         * mplayer.cpp: Updated to use the new Queue class.
31005         (AdvanceFrame): Accessing the queue directly as a linked list
31006         allows us to simplify the loop a little so that we don't have to
31007         keep a reference to the previous packet's decoded frame.
31009         * list.cpp: Added a new Queue class which will replace GAsyncQueue
31010         in mplayer.cpp.
31012 2007-10-11  Jeffrey Stedfast  <fejj@novell.com>
31014         * mplayer.cpp: Added ctors/dtors for Audio and Video structs.
31015         (AdvanceFrame): Keep a reference to the previous frame in case we
31016         reach the end of the queue.
31018 2007-10-11  Jb Evain  <jbevain@novell.com>
31020         * dependencyobject.cpp|h: add dependency_object_set_name.
31022         * media.cpp|h: add media_attribute_get_value and
31023         media_attribute_set_value
31025         * playlist.cpp|h: populate MediaAttributeCollection when
31026         a playlist entry is opened.
31028 2007-10-11  Larry Ewing  <lewing@novell.com>
31030         * dirty.cpp, uielement.cpp|h: Use gdk_regions to tract dirty
31031         areas... have more fun in general.
31032         
31033         * src/rect.h: replace Floor function with RoundOut function.
31034         * panel.cpp, dirty.cpp: use RoundOut where appropriate.  Fixes
31035         clipping issue in sprawl.
31037 2007-10-11  Sebastien Pouliot  <sebastien@ximian.com>
31039         * xaml.cpp: Let InkPresenter handle childs like a Canvas (from 
31040         which it inherits)
31042 2007-10-11  Jb Evain  <jbevain@novell.com>
31044         * playlist.cpp: replace C++ casts to plain casts.
31046 2007-10-11  Jb Evain  <jbevain@novell.com>
31048         * collection.cpp: replace dynamic_casts with plain casts
31049         as per Miguel suggestion.
31051 2007-10-11  Jb Evain  <jbevain@novell.com>
31053         * collection.cpp|h: add, implement and expose the
31054         MediaAttributeCollection::GetItemByName method.
31056 2007-10-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31058         * downloader.cpp, downloader.h: Fix some const char/char mismatch warnings.
31060 2007-10-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31062         * text.h, animation.h, text.cpp: Fix some const char/char mismatch warnings.
31063         * dependencyobject.h, dependencyobject.cpp, animation.cpp: Remove some const
31064           char/char mismatch warnings.
31065         * visual.cpp: Fix no newline warning.
31066         * runtime.cpp: Fix a initialization warning.
31067         * demo.cpp: Remove unused variable.
31069 2007-10-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31071         * dependencyobject.cpp: base_unref_delayed: do nothing if base is NULL,
31072           matches base_unref behaviour.
31073         * dependencyobject.h: Use g_atomic_int* to make ref counting atomic
31074           operations.
31076 2007-10-10  Chris Toshok  <toshok@ximian.com>
31078         * runtime.cpp (runtime_shutdown): explicitly drain all remaining
31079         pending managed unrefs.
31081         * dependencyobject.cpp: remove the Base::ref/unref implementations
31082         from here.  Add the threadsafe base_unref_delayed code, as well as
31083         code to manage a tick call to free up the instances on the next
31084         clock tick.  Also provide an external api (drain_unrefs -- bad
31085         name, fix me plz k thx) so that runtime.cpp can explicitly unref
31086         everything when we shutdown (if they haven't already been dealt
31087         with.)
31089         * dependencyobject.h: clean up the OBJECT_TRACKING ifdefs so that
31090         we don't have 2 implementations of all these methods.  Instead,
31091         just ifdef the relevant portions of the methods, and keep them in
31092         dependencyobject.h.  Also, add prototypes for drain_unrefs and
31093         base_unref_delayed, which is called from managed code.
31095         * collection.h, collection.cpp: make Clear take an optional
31096         "emit_event" argument (default = true.)  Call Clear instead of
31097         list->Clear(true) in our dtor so we clean up the namespaces and
31098         Detach properly.
31100         * debug.cpp: use an extern "C" block. looks nicer.
31102 2007-10-10  Sebastien Pouliot  <sebastien@ximian.com>
31104         * brush.cpp: Handle GradientStop with negative offset like 
31105         Silverlight (seems to) do.
31107 2007-10-10  Chris Toshok  <toshok@ximian.com>
31109         * panel.cpp (Panel::~Panel): no need to clear our Children
31110         collection.  the normal dtor stuff will do that for us.
31112 2007-10-10  Larry Ewing  <lewing@novell.com>
31114         * media.cpp: Fill with the element extents don't just paint the
31115         surface because if the stretch is specified we may end up painting
31116         outside the proper area.
31118 2007-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31120         * media.cpp: When updating the MediaElement's progress, get the Downloader's
31121           DownloadProgressProperty.
31123 2007-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31125         * visual.cpp, visual.h: Added visual_set_surface, and guard against
31126           overwriting a set surface with null.
31128 2007-10-10  Jackson Harper  <jackson@ximian.com>
31130         * collection.cpp: Set the surface when adding a visual element.
31132 2007-10-10  Jackson Harper  <jackson@ximian.com>
31134         * shape.cpp: We need to do something when line properties are
31135         changed. Fixes test-animation-line.xaml
31137 2007-10-10  Jackson Harper  <jackson@ximian.com>
31139         * xaml.cpp: Don't allow the same property to be set twice.
31141 2007-10-09  Jackson Harper  <jackson@ximian.com>
31143         * xaml.cpp: When we create custom elements we also need to set the
31144         surface on them and mark them for cleanup.
31146 2007-10-09  Jackson Harper  <jackson@ximian.com>
31148         * xaml.cpp: When we are creating objects from a string, set the
31149         encoding to utf8 so that expat doesn't try to determine the
31150         encoding from the ?xml declaration (which will be incorrect
31151         because the string is in utf8).
31153 2007-10-09  Chris Toshok  <toshok@ximian.com>
31155         * clock.cpp (ClockGroup::Stop): If the clock group has children we
31156         depend on stopping them first.  But if the clock group is without
31157         children, chain up to Clock::Stop here.
31159 2007-10-09  Jb Evain  <jbevain@novell.com>
31161         * uielement.h: define new methods RenderClipPath and
31162         IntersectBoundsWithClipPath.
31163         * uielement.cpp: implement them.
31164         * panel.cpp, shape.cpp, media.cpp: use them.
31166 2007-10-09  Chris Toshok  <toshok@ximian.com>
31168         * clock.cpp, trigger.cpp, uielement.cpp, geometry.cpp, shape.cpp,
31169         frameworkelement.cpp, transform.cpp, media.cpp, animation.cpp,
31170         brush.cpp, text.cpp: s/Attachee/Attacher.
31172         * dependencyobject.h: couple of Detach changes: 1) Add a DetachAll
31173         call that is used at dtor time to call Detach on all
31174         DependencyObject-subclassed Values, and 2) make NULL available in
31175         detach as a wildcard - passing NULL for the property detaches all
31176         properties that the current object might be watching on.
31178         Also, correct a longstanding problem in terminology/api.  if A's
31179         code calls B->Attach (..., this), then A is the Attacher, not the
31180         Attachee.  Basically s/Attachee/Attacher in all places,
31181         everywhere.
31183         * dependencyobject.cpp: same changes as above.  Also, change the
31184         current_values hash table to key off the DependencyProperty, not
31185         off the DependencyProperty name.  This allows us to use a direct
31186         hash, as opposed to a string hash.
31187         
31188         * collection.cpp (dtor): make sure sure to detach from all the
31189         list elements before we clear the list.
31191 2007-10-09  Jeffrey Stedfast  <fejj@novell.com>
31193         * font.cpp (Layout): Only break words on ASCII lwsp, we should not
31194         break on nbsp's for example.
31196 2007-10-09  Jackson Harper  <jackson@ximian.com>
31198         * xaml.cpp: Make sure the Surface gets set on custom created
31199         UIElements.  Also add them to the created list, so they get freed.
31201 2007-10-09  Jackson Harper  <jackson@ximian.com>
31203         * control.cpp: Since controls are UIElements we need to make sure
31204         their surface is set when we create them from XAML.
31206 2007-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31208         * dependencyobject.cpp: resolve_property_path: Add a nullcheck.
31210 2007-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31212         * debug.cpp, debug.h: Conditionally compile support for managed stack
31213           frames.
31215         * runtime.cpp: add more debug code.
31217 2007-10-08  Jeffrey Stedfast  <fejj@novell.com>
31219         * text.cpp (OnPropertyChanged): We may need to relayout even if
31220         the wrapping is set to NoWrap.
31222 2007-10-08  Zoltan Varga  <vargaz@gmail.com>
31224         * text.cpp (OnPropertyChanged): Do a relayout if the Width property
31225         changes and text wrapping is enabled.
31227 2007-10-08  Jeffrey Stedfast  <fejj@novell.com>
31229         * mplayer.cpp (Open): If the media has video, load the first video
31230         frame.
31231         (Seek): Same.
31232         (AdvanceFrame): Fixed to "end" properly.
31234         * media.cpp: Don't manually call DisplayFrame() anymore.
31236 2007-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31238         * xaml.cpp: Set the surface of newly created objects (where applicable).
31239         * canvas.h, uielement.h, canvas.cpp: Move the surface field to Visual.
31240         * playlist.cpp, media.cpp, text.cpp: Create the downloader using Surface'
31241           brand new CreateDownloader method.
31242         * visual.h: Added a surface field, complete with setters and getters.
31243         * downloader.cpp, downloader.h: Add a context field.
31244         * runtime.h: Add a downloader_context field, and CreateDownloader methods.
31245         * runtime.cpp: Add a downloader_context field.
31247 2007-10-09  Larry Ewing  <lewing@novell.com>
31249         * media.cpp: add clipping to shape::DoDraw and to the bounds
31250         computations.
31252 2007-10-08  Larry Ewing  <lewing@novell.com>
31254         * media.cpp:
31255         * panel.cpp: intersect the bounds with the clip path to
31256         optimize the invalidated region.
31258         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
31259         with a NULL.
31261 2007-10-08  Larry Ewing  <lewing@novell.com>
31263         * media.cpp:
31264         * panel.cpp: intersect the bounds with the clip path to
31265         optimize the invalidated region.
31267         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
31268         with a NULL.
31270 2007-10-08  Larry Ewing  <lewing@novell.com>
31272         * media.cpp:
31273         * panel.cpp: intersect the bounds with the clip path to
31274         optimize the invalidated region.
31276         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
31277         with a NULL.
31279 2007-10-08  Larry Ewing  <lewing@novell.com>
31281         * media.cpp:
31282         * panel.cpp: intersect the bounds with the clip path to
31283         optimize the invalidated region.
31285         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
31286         with a NULL.
31288 2007-10-08  Larry Ewing  <lewing@novell.com>
31290         * media.cpp:
31291         * panel.cpp: intersect the bounds with the clip path to
31292         optimize the invalidated region.
31294         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
31295         with a NULL.
31297 2007-10-08  Larry Ewing  <lewing@novell.com>
31299         * runtime.cpp: change previous logic to drop the alpha
31300         completely here until more testing can be done.
31302 2007-10-08  Larry Ewing  <lewing@novell.com>
31304         * runtime.cpp: draw the background color blended over white.
31306 2007-10-08  Larry Ewing  <lewing@novell.com>
31308         * media.cpp: render clip paths on media elements.
31310 2007-10-07  Larry Ewing  <lewing@novell.com>
31312         * xaml.cpp:
31313         * rect.cpp:
31314         * point.cpp:
31315         * array.cpp: use g_utf8_next_char in some places to start making
31316         the parsers more utf8 safe.  Make rect/point_from_str more robust
31317         against separator characters
31319 2007-10-07  Chris Toshok  <toshok@ximian.com>
31321         * clock.cpp (Clock::Tick): make sure we're reversed before
31322         switching to Fill if the clock is at 0 (and make sure we're not
31323         reversed before switching to Fill on the other end of the
31324         timespan).  Some animations were skipping directly to fill without
31325         ever running.
31326         (ClockGroup::Tick): don't Tick a child clock if it's about to
31327         Stop.  the new tick might cause it to fill.. this needs work
31328         still.
31330 2007-10-06  Jb Evain  <jbevain@novell.com>
31332         * media.cpp (Image::Render): Deal with clipping.
31334 2007-10-05  Chris Toshok  <toshok@ximian.com>
31336         * animation.cpp (KeyFrameComparer): fix airlines (and probably a
31337         host of other keyframe usage besides).  The problem was that this
31338         function was treating its args as keyframe*'s, when in actuality
31339         they were keyframe**'s.  that explains the intermittent nature of
31340         the bug, as well as the faulty sorting I was experiencing earlier.
31342         * clock.cpp (TimeManager::Tick): reinstate the throttling, yay.
31344 2007-10-05  Chris Toshok  <toshok@ximian.com>
31346         * clock.cpp (TimeManager::Tick): I have no idea how this is
31347         possible, but the throttle code is *completely* screwing up the
31348         Airlines demo animations.
31350 2007-10-05  Jackson Harper  <jackson@ximian.com>
31352         * control.cpp: need to pass this down.  Fixes dragging controls in
31353         top banana.
31355 2007-10-05  Jeffrey Stedfast  <fejj@gnome.org>
31357         * media.cpp (DownloaderComplete): Call mplayer->DisplayFrame() in
31358         the paused case.
31359         (Stop): Here too.
31360         (SetValue): And here too after a Seek() (altho it won't work if
31361         the media is paused).
31363         * mplayer.cpp (AdvanceFrame): Introduced a new bool variable,
31364         update, which is true if any avcodec_decode_video() sets redraw to
31365         true.
31366         (DisplayFrame): New method largely based on JB's work to load the
31367         current video frame into the mplayer surface.
31369 2007-10-05  Jb Evain  <jbevain@novell.com>
31371         * media.cpp|h, playlist.cpp|h: Don't open the first entry
31372         when a playlist entry has been stopped before switching to
31373         the next one.
31375 2007-10-04  Chris Toshok  <toshok@ximian.com>
31377         * clock.cpp: fix a couple of compilation warnings, and tighten up
31378         the list_clocks output.
31380 2007-10-04  Jeffrey Stedfast  <fejj@gnome.org>
31382         * text.cpp (SetIndices): Use g_ascii_strtod() instead of strtod()
31383         since it is not locale dependant.
31385         * rect.cpp (rect_from_str): Same.
31387         * point.cpp (point_from_str): Same.
31389         * xaml.cpp (get_point): Fixed to update *in properly on success.
31391 2007-10-05  Jb Evain  <jbevain@novell.com>
31393         * media.cpp: correctly advertise 'Opening' state of MediaElement.
31395 2007-10-04  Jeffrey Stedfast  <fejj@novell.com>
31397         * xaml.cpp: (more_points_available): Simplified by looping while
31398         isspace. Also, update our input pointer if we have to scan over
31399         lwsp.
31400         (get_point): Now returns bool based on whether it manages to
31401         extract a point or not.
31402         (geometry_from_str): Updated.
31404 2007-10-04  Jackson Harper  <jackson@ximian.com>
31406         * xaml.cpp: Points after the initial two line points should
31407         actually create new line segments, not a polyline, this fixes
31408         relative points on multiple lines.
31410 2007-10-04  Jeffrey Stedfast  <fejj@novell.com>
31412         * text.cpp (TextBlock): Can't use GetValue() here yet as stuff
31413         hasn't completely been initialized.
31414         (Glyphs::SetIndices): Do not do scaling here, this seems to be
31415         font size dependant.
31417         * shape.cpp (DoDraw): Use 'delete []' to free dmul.
31419 2007-10-04  Jackson Harper  <jackson@ximian.com>
31421         * xaml.cpp: Handle repeated bezier segments properly.
31423 2007-10-04  Chris Toshok  <toshok@ximian.com>
31425         * clock.cpp: lots of little changes.  fixes clock16.xaml, and
31426         therefor the score animation in dr.popper goes away properly.
31427         also fixes a few other issues with FillBehavior (checked by our
31428         clock xaml tests.)
31430 2007-10-04  Jeffrey Stedfast  <fejj@gnome.org>
31432         * text.cpp (Glyphs::.ctor): We no longer have a TextFont member
31433         variable.
31434         (Layout): Use a local TextFont variable.
31435         (Render): Same.
31436         (text_init): Always call font_init() as Glyphs use it even when
31437         text=pango is specified.
31439 2007-10-04  Sebastien Pouliot  <sebastien@ximian.com>
31441         * shape.cpp|h: Shapes that uses their Width and Height must use
31442         them for brush size. Fix brush rendering when used with 
31443         UIElement.RenderTransform property.
31445 2007-10-03  Chris Toshok  <toshok@ximian.com>
31447         * text.cpp: make Glyphs usable even when text=pango.  "usable"
31448         means "don't crash" :)
31450 2007-10-03  Chris Toshok  <toshok@ximian.com>
31452         * uielement.h: rename UseAA() to EnableAntiAlias().  it's
31453         arguably a better name, and more importantly it's the name that
31454         media.cpp/h changed it too, which broke the AA hack used in
31455         dirty.cpp.
31457         * dirty.cpp (process_dirty_elements): rename UseAA() to
31458         EnableAntiAlias().
31460 2007-10-03  Sebastien Pouliot  <sebastien@ximian.com>
31462         * array.cpp: Move double array allocations back to new/delete.
31464 2007-10-03  Jeffrey Stedfast  <fejj@novell.com>
31466         * font.cpp (EmSize): Removed, not needed.
31467         (GetGlyphInfo): Commented out vertical glyph metrics, saves a fair
31468         bit of memory that we aren't using.
31470         * text.cpp (TextBlock::SetFontSource): Implemented.
31471         (text_init): Default StyleSimulations to None.
31473 2007-10-03  Sebastien Pouliot  <sebastien@ximian.com>
31475         * brush.cpp|h: SL and Cairo defaults to different values (end 
31476         color versus start color) when a gradiant is restricted to a 
31477         single color (e.g. if the start and end points of a linear 
31478         gradient are identical).
31480 2007-10-03  Jeffrey Stedfast  <fejj@novell.com>
31482         * text.cpp: Implemented the Glyphs element.
31484         * font.cpp: Made GlyphMetrics and GlyphInfo structs public for use
31485         with the the Glyphs element implemented in text.cpp.
31486         (GetGlyphInfo): Fixes to allow loading of the index=0 glyph.
31487         (GetGlyphInfoByIndex): New method.
31488         (CreatePattern): If the filename is specified, don't call
31489         FcFontMatch(), simply return the constructed pattern.
31491 2007-10-02  Chris Toshok  <toshok@ximian.com>
31493         * clock.h, clock.cpp: remove TimeManager::current_fps, it's
31494         unused.
31496 2007-10-02  Chris Toshok  <toshok@ximian.com>
31498         * runtime.cpp (Surface::UpdateFullScreen): just call
31499         gtk_window_fullscreen instead of setting decorations/above
31500         manually.  this puts us on top of the panel.
31502 2007-10-02  Chris Toshok  <toshok@ximian.com>
31504         * clock.h, clock.cpp: rip out the old stupid throttling code and
31505         replace it with an exponential moving average of the delays.
31507 2007-10-02  Chris Toshok  <toshok@ximian.com>
31509         * clock.h, clock.cpp: add Timeline::Get/SetSpeedRatio methods, and
31510         use them to make test/xaml/clock8.xaml work.
31512 2007-10-02  Larry Ewing  <lewing@novell.com>
31514         * shape.cpp (Path::ComputeBounds): use the specified width/height
31515         if stretch is != StretchNone.  Fixes rendering issues with halo
31516         and several other sites.
31518 2007-10-02  Chris Toshok  <toshok@ximian.com>
31520         * animation.h, animation.cpp: override Stop() on AnimationClocks
31521         so we can reset the property value to the baseValue stored in our
31522         AnimationStorage.
31524         * clock.h, clock.cpp: fix the starting of stopped clockgroups when
31525         there are active children (fixes the storyboards running for 1
31526         tick then stopping).  Add more convoluted code in order to get the
31527         expected behavior when FillBehavior=Stop on a storyboard.
31529 2007-10-02  Chris Toshok  <toshok@ximian.com>
31531         * clock.h, clock.cpp: a few changes.  quit with all the delay
31532         computation in the throttling code, and just deal with fps until
31533         we're ready to switch to delays.  it simplifies everything a
31534         bunch.  Also, narrow the type for Clock::Get/SetParent to
31535         ClockGroup.  Add some rudimentary code for printing out the state
31536         of all clocks (use TimeManager::Instance()->ListClocks() or
31537         time_manager_list_clocks()).  Also, remove the TimeManager::Tick
31538         code which started clocks.  This commit changes the way
31539         storyboards are registered, so the only things in the
31540         TimeManager's list should be the per-surface ClockGroups, which
31541         are started in Storyboard::Begin (if they aren't already running.)
31543         * collection.cpp (VisualCollection::Add): this is a bug waiting to
31544         happen.  Call VisualUpdate (thereby setting the child's parent and
31545         initializing the transforms/opacity) before emitting Loaded on the
31546         child.
31548         * animation.h, animation.cpp: Storyboards now add their clocks to
31549         the per-surface ClockGroup.  This involves some groveling to find
31550         the surface, but it's nothing we haven't seen before.  There's no
31551         direct TimeManager calls here now - stopping the surface's
31552         ClockGroup will stop all animations running on it.
31554         * runtime.h, runtime.cpp: add the per-surface ClockGroup.  all
31555         storyboards attach to this, and this attaches to the TimeManager.
31556         
31557 2007-10-02  Jackson Harper  <jackson@ximian.com>
31559         * media.cpp: Some default values to avoid nullref exceptions.
31561 2007-10-02  Sebastien Pouliot  <sebastien@ximian.com>
31563         * xaml.cpp: Add support for 'F' in the PML parser to enable setting
31564         the FillMode of Geometry objects. Removed default value set as it is 
31565         identical to the default property value.
31567 2007-10-02  Jb Evain  <jbevain@novell.com>
31569         * playlist.cpp|h: implemented start time for playlist entries.
31571 2007-10-02  Jb Evain  <jbevain@novell.com>
31573         * playlist.cpp|h, media.cpp|h: rename MediaSource::OpenSource to OpenInternal.
31575 2007-10-02  Larry Ewing  <lewing@novell.com>
31577         * uielement.cpp (UIElement::Invalidate): Only invalidate if
31578         opacity is > 0.
31579         * dirty.cpp (process_dirty_elements): be sure to invalidate before
31580         and after the opacity change.
31582 2007-10-02  Jb Evain  <jbevain@novell.com>
31584         * playlist.cpp: deal with non lowercase file exts.
31586 2007-10-01  Jeffrey Stedfast  <fejj@novell.com>
31588         * font.cpp: Reduced Glyph table memory usage.
31590 2007-10-01  Chris Toshok  <toshok@ximian.com>
31592         * dirty.cpp (process_dirty_elements): remove the special if checks
31593         which kept the ComputeBounds/Invalidate code from running on the
31594         toplevel surface.  Canvas::ComputeBounds() does the right thing
31595         for the toplevel surface, so we just trust it.  fixes invalidation
31596         of root canvases.
31598         * panel.cpp (OnPropertyChanged): remove the ComputeBounds call.
31599         (OnSubPropertyChanged): same.
31601 2007-10-01  Sebastien Pouliot  <sebastien@ximian.com>
31603         * brush.cpp|h: Change SetupBrush and SetupGradient signatures to 
31604         void (instead of the, now, unused bool);
31606 2007-10-01  Jeffrey Stedfast  <fejj@novell.com>
31608         * font.cpp (Layout): Made WrapWithOverflow closer to Silverlight's.
31610 2007-10-01  Sebastien Pouliot  <sebastien@ximian.com>
31612         * shape.cpp|h: Remove Path::IsFilled since the property 
31613         PathFigure::IsFilledProperty doesn't exists anymore.
31615 2007-10-01  Jeffrey Stedfast  <fejj@novell.com>
31617         * text.cpp (LayoutPango): Fixed Wrap vs WrapWithOverflow text
31618         wrapping.
31620         * font.cpp (Layout): Fixed the TextWrapping="Wrap" case.
31622 2007-10-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31624         * runtime.cpp: Only show the server as the url in the fullscreen
31625         message.
31627 2007-10-01  Sebastien Pouliot  <sebastien@ximian.com>
31629         * panel.cpp: Call ComputeBounds before invalidating on Background 
31630         changes. Fix parts of #327691 (like BubbleMark-CLR and Monotone).
31632 2007-10-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31634         * fullscreen.h, fullscreen.xaml: Added.
31635         * text.h: Make GetActualHeight and GetActualWidth public.
31636         * runtime.h, runtime.cpp: Added IsTopLevel (since there can be two toplevel
31637           objects now: the fullscreen message and the toplevle canvas),
31638           SetSourceLocation and Show/HideFullScreenMessage.
31639         * dirty.cpp: Use Surface::IsTopLevel instead of comparing directly agains
31640           Surface::GetTopLevel.
31642 2007-09-30  Zoltan Varga  <vargaz@gmail.com>
31644         * xaml.cpp (CreateManagedObject): Move the call to GetMapping ()
31645         to managed code.
31647         * text.cpp (text_destroy): Avoid crash if default_foreground_brush
31648         is not set.
31650 2007-09-28  Chris Toshok  <toshok@ximian.com>
31652         * Makefile.am: remove the XRANDR conditional here.  it's #defined
31653         in config.h now.
31655 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
31657         * font.cpp (CreatePattern): If a filename has been specified for
31658         loading a font, don't set family values. Also, call
31659         FcDefaultSubstitute() on the pattern before trying to find a
31660         match.
31662 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
31664         Optimization hack that saves time by not recalculating the layout
31665         when the foreground brush changes (since we'd have exactly the
31666         same layout).
31668         * font.cpp (TextRun): Now takes the address of the brush than the
31669         brush itself, so that when brushes change on the Inline, we get
31670         the brush change for free.
31672         * text.cpp (LayoutSilverlight): Pass the addresses of the
31673         foreground brushes to TextRun ctor and don't bother with the
31674         default foreground brush here, save that for ::Paint-time.
31675         (LayoutPango): Same idea as LayoutSilverlight().
31676         (Paint): Get the default foreground and pass that off to the
31677         pango/silverlight text renderers.
31678         (OnPropertyChanged): Don't force a re-layout if the property that
31679         changed was the TextBlock::ForegroundProperty.
31680         (OnCollectionChanged): Same (but for Inline::ForegroundProperty).
31682         * mango.cpp (mango_renderer_show_layout): Now takes a default_fg
31683         argument so that we don't have to specify it in the creation of
31684         our layout attributes (this saving us a re-layout when a brush
31685         changes).
31686         (mango_attr_foreground_new): Now takes the address of the brush
31687         rather than the brush itself, so that when brushes change on the
31688         Inline, we get the brush change for free.
31690 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
31692         * text.cpp (TextBlock): We cannot re-use the
31693         default_foreground_brush here because we cannot allow it to be
31694         altered in any way.
31696 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
31698         * font.cpp (TextFont::IsScalable): New method.
31699         (TextFont::Path): Paths a glyph but does not stroke or fill. Only
31700         available if the font is scalable.
31701         (TextLayout::Render): Cache each segment's cairo_path_t so that
31702         future renders do not have to do it on a glyph-by-glyph basis
31703         (avoids possible glyph cache misses). May also save time by doing
31704         a single fill rather than a fill per glyph.
31706 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
31708         * font.cpp (RenderGlyphBitmap): No longer takes a TextDecorations
31709         argument.
31710         (RenderGlyphPath): Same.
31711         (UnderlinePosition): New method.
31712         (UnderlineThickness): New method.
31713         (TextLayout::Render): Draw our underline here in 1 stroke (haha, I
31714         made a funny).
31716 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
31718         * text.cpp (LayoutSilverlight): LineBreaks don't really care about
31719         TextDecorations or Foreground properties.
31721         * font.cpp (TextRun::~TextRun): unref the font.
31722         (TextSegment): now references the original TextRun instead of
31723         copying pointers/values.
31724         (TextLayout::Render): Updated for above change.
31726 2007-09-28  Zoltan Varga  <vargaz@gmail.com>
31728         * xaml.cpp (SetNameAttribute): New callback to enable managed code to process
31729         x:Name attributes.
31730         (LoadCode): Change return type to bool to indicate a loading error.
31732 2007-09-28  Jeffrey Stedfast  <fejj@gnome.org>
31734         * media.cpp (SingleMedia::~SingleMedia): Close the media stream.
31735         (MediaElement::AdvanceFrame): If mplayer->AdvanceFrame() returns
31736         false, then it signifies MediaEnded, no need to explicitly check.
31737         (MediaElement::SetSource): Delete the current source here.
31738         (MediaElement::~MediaElement): C++ `delete' operator doesn't
31739         handle freeing NULL pointers.
31740         (MediaElement::DownloaderComplete): No need to delete the source
31741         here, done in SetSource() instead.
31743         * font.cpp: Created my own GlyphMetrics struct which uses doubles
31744         instead of ints for more accurate layout/rendering calculations.
31745         (Layout): When comparing to max_width, add 1.0 to account for
31746         rounding errors/hinting. Add 1.0 to the Actual/BoundingBox
31747         width/height values for the same reason.
31749 2007-09-28  Sebastien Pouliot  <sebastien@ximian.com>
31751         * xaml.cpp: Free locally allocated Points inside get_point_array.
31753 2007-09-28  Jeffrey Stedfast  <fejj@gnome.org>
31755         * font.cpp (GetGlyphInfo): Don't cache the bitmap if we're caching
31756         the path.
31758 2007-09-28  Sebastien Pouliot  <sebastien@ximian.com>
31760         * shape.cpp: ComputeBoundsSlow is no more so we can re-enable the
31761         thickness == 0 optimization.
31763 2007-09-27  Jeffrey Stedfast  <fejj@novell.com>
31765         * xaml.cpp (flush_char_data): g_strchomp() the cdata (as
31766         Silverlight does).
31768         * text.cpp: Merged with custom text layout code - layout algorithm
31769         is chosen at runtime_init() via flags or environment variable.
31771 2007-09-27  Jeffrey Stedfast  <fejj@novell.com>
31773         * runtime.cpp (runtime_init): Don't check pango version info,
31774         we're just gonna statically link in pango (and/or do
31775         configure-time checks if the user decides to link to a system
31776         pango). Implemented some preliminary environment variable parsing
31777         action to decide if the user wnts to use ffmpeg vs ms codecs,
31778         pango vs my "silverlight" text layout engine, etc.
31780 2007-09-27  Jeffrey Stedfast  <fejj@novell.com>
31782         * runtime.cpp (runtime_init): Now takes a flags argument for
31783         enabling/disabling features. If RUNTIME_INIT_BROWSER is not set,
31784         then make sure pango is recent enough (if not, print a warning
31785         akin to the cairo warning).
31787 2007-09-27  Sebastien Pouliot  <sebastien@ximian.com>
31789         * array.cpp: Fix issues on double parsing, including bug #328915 and
31790         test cases in /moon/test/xaml/points-torture.xaml
31792 2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31794         * animation.cpp: Add a few null checks.
31796 2007-09-27  Larry Ewing  <lewing@novell.com>
31798         * media.cpp: Don't mark our download progress as 100% until we've
31799         been notified by the downloader that it is complete.  Some
31800         programs check download progress to decide when they can safely
31801         poke at the media element properties.
31802         * downloader.cpp: set the final downloader progress to 1.0 not 100.
31804 2007-09-27  Sebastien Pouliot  <sebastien@ximian.com>
31806         * xaml.cpp: Don't freak out if <?xml ... ?> isn't on the first 
31807         line. Fix bug #328907.
31809 2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31811         * control.h, control.cpp: Added control_initialize_from_xaml_callbacks, and
31812           change InitializeFromXaml to take a XamlLoader argument.
31814 2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31816         * xaml.cpp: More unrefs.
31818 2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31820         * text.cpp: Unref a few newly created objects.
31821         * control.cpp: Remove an unnecessary ref.
31823 2007-09-26  Zoltan Varga  <vargaz@gmail.com>
31825         * text.cpp (SetValue): Implement proper handling of the Text property.
31826         (GetValue): Ditto.
31827         (OnPropertyChanged): Force a relayout when the foreground property changes.
31828         (Layout): Remove the laying out of the contents of the Text property, since the
31829         text is now contained in the first inline.
31830         
31831 2007-09-26  Jeffrey Stedfast  <fejj@novell.com>
31833         * font.cpp (Layout): Include the space char on the line before
31834         wrapping, this is noticable when TextDecorations="Underline" is
31835         enabled.
31836         (TextLayout::RenderGlyphBitmap): Moved to TextFont class.
31837         (TextLayout::RenderGlyphPath): Same. Also implemented underlining.
31838         (TextFont::Render): Implemented.
31840 2007-09-26  Sebastien Pouliot  <sebastien@ximian.com>
31842         * geometry.h: PathFigure::IsFilledProperty doesn't exist anymore
31843         (and was removed elsewhere, except here);
31845 2007-09-26  Chris Toshok  <toshok@ximian.com>
31847         * clock.cpp (TimeManager::Tick): a few changes.  first and
31848         foremost, fix the signs on the FPS_ADJUSTMENTS.  oops.  also, add
31849         a buffer of 50ms on either side of the timeout before we consider
31850         the Tick either slow or fast.  Increase the number of out-of-line
31851         ticks we need and decrease the fps adjustment.
31853 2007-09-26  Jeffrey Stedfast  <fejj@novell.com>
31855         * text.cpp (OnCollectionChanged): Needs to call Invalidate().
31857 2007-09-26  Chris Toshok  <toshok@ximian.com>
31859         * clock.cpp: initialize the min_timeout based on a good default
31860         max fps (60 in our case).  Also, calculate the fps adjustments in
31861         a nicer way.
31863         * runtime.cpp: remove the non-xrandr SetMaximumRefreshRate call -
31864         it's handled by TimeManager's default.
31866 2007-09-26  Jeffrey Stedfast  <fejj@novell.com>
31868         * font.cpp: A bunch of fixes/changes to mimic Microsoft's
31869         Silverlight TextBlock layout logic.
31871 2007-09-26  Andrew Jorgensen  <ajorgensen@novell.com>
31873         * Makefile.am: Added missing files for dist tarball
31875 2007-09-26  Chris Toshok  <toshok@ximian.com>
31877         * clock.h, clock.cpp: add some very naive, rather lame fps tuning.
31878         we just adjust fps by a fixed amount (4fps) either up or down, if
31879         a certain number (5, by default) of ticks in a row take either
31880         less or more time to complete (respectively), than the current
31881         timeout.
31883 2007-09-26  Sebastien Pouliot  <sebastien@ximian.com> 
31885         * moon-path.c: Fix typos.
31886         * shape.h: Remove old ComputeBounds[Slow|Fast] from header.
31888 2007-09-26  Sebastien Pouliot  <sebastien@ximian.com>
31890         * shape.h|cpp: Remove Line (direct path manipulation) hack.
31892 2007-09-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31894         * xaml.cpp: Unref collections and matrix transforms we create.
31896 2007-09-25  Sebastien Pouliot  <sebastien@ximian.com>
31898         * geometry.h|cpp, shape.cpp: Implement GetBounds without a cairo 
31899         context.
31901 2007-09-26  Zoltan Varga  <vargaz@gmail.com>
31903         * text.cpp (TextBlock): Set an empty string as a default Text property.
31904         (InsideObject): Implement this for text blocks.
31906 2007-09-25  Sebastien Pouliot  <sebastien@ximian.com>
31908         * font.cpp: Fix warning.
31910 2007-09-25  Larry Ewing  <lewing@novell.com>
31912         * brush.cpp|h: add image_brush_create_similar to simplify creating
31913         similar surfaces.  Use it where appropriate.
31915         * media.ccp: use image_brush_create_similar where possible. In
31916         MediaElement::Render draw with opacity directly rather than
31917         creating a temporary surface for every frame. Rework image opacity
31918         cache so that we don't have to recreate the surface every time. 
31920 2007-09-25  Jb Evain  <jbevain@novell.com>
31922         * media.cpp|h: let the MediaElement be the only one to trigger
31923         its own events, terminate its friendship with MediaBase.
31925 2007-09-25  Jb Evain  <jbevain@novell.com>
31927         * playlist.cpp|h: trigger a parsing error when no href attribute
31928         is found for base and ref elements.
31930 2007-09-25  Jb Evain  <jbevain@novell.com>
31932         * playlist.cpp|h, media.cpp: Auto play for playlists.
31934 2007-09-24  Jeffrey Stedfast  <fejj@novell.com>
31936         * font.cpp (Render): Fixed some y1 offset logic that didn't amke
31937         any sense (and was wrong afaict anyway). We now render exactly
31938         like Microsoft Silverlight.
31940 2007-09-24  Jb Evain  <jbevain@novell.com>
31942         * playlist.cpp: close the previous source before playing
31943         the next one.
31945 2007-09-24  Jb Evain  <jbevain@novell.com>
31947         * mplayer.cpp: on Close, reset height and width to zero.
31949 2007-09-24  Jeffrey Stedfast  <fejj@novell.com>
31951         * media.cpp (OnPropertyChanged): Set recalculate_matrix to true if
31952         either the NaturalWidth or NaturalHeight changes.
31954 2007-09-24  Jb Evain  <jbevain@novell.com>
31956         * media.cpp|h, playlist.cpp|h: refactor MediaSource so that
31957         only a SingleMedia deals with the MediaPlay directly. A playlist
31958         being a collection of either other playlist or singlemedias,
31959         playing one at a time.
31961 2007-09-24  Jb Evain  <jbevain@novell.com>
31963         * media.cpp, playlist.cpp: let the Media Sources change
31964         the state of the MediaElement (Playing/Paused/Stopped).
31966 2007-09-24  Jb Evain  <jbevain@novell.com>
31968         * media.h: let the media source change the properties
31969         of the media element. Make MediaSource friend of MediaElement
31970         to do so.
31971         * playlist.h, playlist.cpp: adjus to the changes in MediaSource.
31973 2007-09-24  Jeffrey Stedfast  <fejj@novell.com>
31975         * font.cpp: Added kerning.
31977         * mplayer.cpp: Added mutex locking for the target_pts variable.
31979 2007-09-24  Jb Evain  <jbevain@novell.com>
31981         * playlist.cpp: Playlist::IsPlaylistFile: return false
31982         on null argument.
31984 2007-09-23  Jb Evain  <jbevain@novell.com>
31986         * playlist.cpp: A base element stores the base in
31987         a href attribute, not in its body.
31989 2007-09-22  Chris Toshok  <toshok@ximian.com>
31991         * Makefile.am (USE_XRANDR): define USE_XRANDR.
31993         * runtime.cpp (Surface::realized_callback): get the RANDR screen
31994         config info, and set the TimeManager's max refresh to match the
31995         screen's .
31997         * clock.h, clock.cpp (TimeManager::SetMaximumRefreshRate): new
31998         method.
32000 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
32002         * xaml.h xaml.cpp: Add support for parsing x:Code elements and
32003         passing them to managed code.
32005 2007-09-21  Jeffrey Stedfast  <fejj@gnome.org>
32007         * mplayer.cpp (audio_play): Slightly optimized the volume
32008         adjustment loop.
32010         * font.cpp (Layout): Keep track of the line ascend and pad our
32011         extents with an extra pixel on all sides to account for hinting.
32012         (Render): Starts rendering glyphs 1 pixel in. Also modified the
32013         logic such that we didn't have to treat path/bitmap glyphs
32014         differently.
32016 2007-09-21  Jeffrey Stedfast  <fejj@novell.com>
32018         * font.cpp: Now handles scalable fonts by rendering their outline
32019         paths rather than rendering bitmaps.
32021         * moon-path.c (moon_path_move_to): Resize the path auto-magically
32022         if we don't have enough room. Same for all of the other
32023         line_to/curve_to/etc.
32025 2007-09-21  Jeffrey Stedfast  <fejj@gnome.org>
32027         * font.cpp (SetMaxWidth): Oops, set max_width = max (rather than
32028         the old width extents).
32029         (Layout): When breaking a long line, the new line height should
32030         not be set to 0 (duh), it should be set to the font height.
32032 2007-09-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32034         * xaml.cpp, xaml.h: Added a XamlLoaderCalbacks structure that contains all
32035           the callbacks XamlLoader needs. Added xaml_loader_set_callbacks for
32036           managed code to set them. Keep track of mappings in native code, call
32037           into managed code only if a mapping is not found here. Keep a list of
32038           missing assemblies, allows managed code to request downloading of
32039           several assemblies before trying to parse xaml again. Added
32040           XamlLoader::CreateManagedObject, tries to parse xmlns/name, if
32041           successful (and only then), requests a vm to be loaded, before calling
32042           into managed code to actually create the managed object.
32044 2007-09-20  Chris Toshok  <toshok@ximian.com>
32046         * type.cpp, type.cpp.in (types_init_register_events): register the
32047         LostFocus/GotFocus events.
32049         * uielement.h: add LostFocusEvent/GotFocusEvent.
32051         * uielement.cpp (uielement_init): lookup LostFocus/GotFocus events.
32053 2007-09-20  Jeffrey Stedfast  <fejj@gnome.org>
32055         * text.cpp (InsideObject): Removed.
32057         * font.cpp (Layout): Add the horiBearingX value of the last glyph
32058         in each line to the width of said line.
32059         (RenderGlyphBitmap): Cache the surface and use it as a mask when
32060         filling so that the true source pattern shows thru.
32062 2007-09-20  Jeffrey Stedfast  <fejj@novell.com>
32064         * mango.cpp (mango_renderer_draw_glyphs): Cache the paths that we
32065         render.
32066         (mango_renderer_show_layout): Instead of having pango render the
32067         text, do it ourselves using our cached paths from the previous
32068         call to mango_renderer_layout_path().
32069         (mango_renderer_layout_path): Clear our cache paths.
32071 2007-09-20  Jeffrey Stedfast  <fejj@novell.com>
32073         * text.cpp (OnPropertyChanged): Don't dirty actual width/height on
32074         foreground changes.
32075         (OnSubPropertyChanged): Same.
32077         * font.cpp (GetFont): No longer need to pass the size to
32078         TextFont::Load().
32079         (TextFont::Load): No longer needs the size argument.
32080         (TextFont::.ctor): We just get the size from the pattern now.
32081         (TextFontDescription::CreatePattern): Call FcFontMatch() on our
32082         generated font pattern here instead of having our lower-level
32083         TextFont::.ctor do it.
32084         (TextFont::Ascender): Use the size metrics so that this always
32085         works properly (at least it seems to).
32086         (TextFont::Height): Same.
32087         (TextLayout::Layout): Changed line-height logic a bit for
32088         LineBreaks.
32090 2007-09-20  Chris Toshok  <toshok@ximian.com>
32092         * type.cpp.in, type.cpp (LookupEvent): fix this to check in parent
32093         type event hashes as well if we don't find it in ours.
32095 2007-09-20  Sebastien Pouliot  <sebastien@ximian.com>
32097         * brush.cpp: Implemented MappingMode for LinearGradientBrush.
32098         Buttons from Dr Popper are now rendered correctly.
32100 2007-09-20  Chris Toshok  <toshok@ximian.com>
32102         * typegen.cs (GenerateTypeCpp): add a call to
32103         types_init_register_events.
32105         * type.h.in, type.cpp.in: add Type::RegisterEvent,
32106         Type::LookupEvent, Type::GetEventCount, and Type::GetEventBase.
32108         * type.cpp.in: add types_init_register_events, which registers all
32109         the events we care about for all the types.  we do it here to
32110         guarantee that events have been registered by the time any
32111         instance code is run for any type.
32112         
32113         * dependencyobject.h, dependencyobject.cpp: remove the event
32114         registration from EventObject, it's moving to Type.  so the Type
32115         will contain the name to id hash, and the EventObject will only
32116         contain an array of GSLists, where the index into that array is
32117         the event's id.
32118         
32119         * clock.cpp (clock_init): lookup the static events here.
32121         * runtime.cpp (runtime_init): same.
32123         * animation.cpp (animation_init): same.
32125         * downloader.cpp (downloader_init): same.
32127         * uielement.cpp (uielement_init): same.
32129         * src/clock.h, src/uielement.h, src/media.h, src/animation.h,
32130         src/type.h, src/runtime.h, src/downloader.h: events are static to
32131         the classes now, instead of being per-instance.
32133         * src/types.h src/types.cpp: regen.
32134         
32135 2007-09-20  Sebastien Pouliot  <sebastien@ximian.com> 
32137         * geometry.cpp: Avoid re-allocating path memory when possible.
32138         * moon-path.c|h: Added documentation and new moon_path_renew and 
32139         moon_path_clear functions to reduce memory re-allocations.
32140         * shape.cpp|h: Avoid re-allocating path memory when possible.
32142 2007-09-20  Sebastien Pouliot  <sebastien@ximian.com>
32144         * brush.cpp|h: Implemented MappingMode for RadialGradientBrush.
32145         Bubbles from bubblemark.com are now rendered correctly.
32147 2007-09-19  Sebastien Pouliot  <sebastien@ximian.com>
32149         * shape.cpp|h: Remove dead code.
32151 2007-09-19  Jeffrey Stedfast  <fejj@novell.com>
32153         * font.cpp: More fixes to make stuff build/work (more or less).
32155         * text.patch: Patch to make text layout/rendering use my new code
32156         rather than pango.
32158 2007-09-19  Chris Toshok  <toshok@ximian.com>
32160         * text.cpp (TextBlock::Layout): don't insert multiple fg_attrs.
32162 2007-09-19  Sebastien Pouliot  <sebastien@ximian.com>
32164         * moon-path.c|h: New. Create simple or complex paths without a
32165         (expensive) cairo_context_t using an API similar to cairo.
32166         * geometry.cpp|h: Use moon_path functions. Added (still inactive)
32167         code to compute bounds for paths.
32168         * shape.cpp|h: Use moon_path functions. Avoid Cairo extents API 
32169         for Polylines and Polygons. Still not perfect for large thickness 
32170         and steep angles but 8-10x faster and better (no artifact left) 
32171         than previous code, see new xaml animation tests).
32172         * rsvg.cpp|h: Adapt to use moon-path functions.
32173         * Makefile.am: Add moon-path.c and moon-path.h to the build.
32175 2007-09-19  Jeffrey Stedfast  <fejj@gnome.org>
32177         * font.cpp: More hackery.
32179 2007-09-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32181         * panel.cpp: Add a null check.
32182         * xaml.cpp: Created a list that contains most created elements in order to
32183           unref them once parsing is finished (we need to unref all created
32184           elements except the top one, but the parser callback functions don't
32185           know which is the top one, so we delay the unrefing until the end). If
32186           parsing is done manually (*_from_str, etc), just use unref.
32187         * text.h, text.cpp: Add text_destroy to properly destroy the default
32188           foreground brush on shutdown.
32189         * clock.cpp: When we allocate a clock, unref it after adding it to the
32190           group.
32191         * collection.h: Store the parent in the Node, since we can't call
32192           obj->GetParent () in a destructor (it will walk up the hierarchy using
32193           the type system, but since the parent can be in the destructor, the type
32194           system isn't reliable anymore).
32195         * mango.h, mango.cpp: MangoAttrForeground: hold a reference to the
32196           foreground brush, not to the element. Add a mango_renderer_get_type_safe
32197           that can reinitialize static variables (after a libmoon reload) from
32198           glib.
32199         * geometry.cpp, transform.cpp, brush.cpp: Use Value::CreateUnref for default
32200           values.
32201         * collection.cpp: Store the parent in the Node, since we can't call
32202           obj->GetParent () in a destructor (it will walk up the hierarchy using
32203           the type system, but since the parent can be in the destructor itself,
32204           the type system isn't reliable anymore).
32205         * dependencyobject.cpp: Attachee: don't hold a ref to the container anymore.
32206         * media.cpp: Sprinkle a few unrefs here and there.
32207         * animation.cpp: Don't ref root_clock, CreateClock already gives us a ref.
32208           Add a null check in the Storyboard destructor. Use Value::CreateUnref
32209           for default values.
32210         * runtime.cpp: Attach: Don't attach a null element. Call text_destroy on
32211           shutdown.
32213 2007-09-18  Jeffrey Stedfast  <fejj@gnome.org>
32215         Continued fixes to go along with Rolf's other TextBlock leak
32216         fixes.
32218         * mango.cpp (mango_attr_foreground_new): Don't ref the fg.
32219         (mango_attr_foreground_destroy): Don't unref the fg.
32221         * text.cpp (default_foreground): Make return a static reference.
32222         (Layout): Don't ref the fg.
32224 2007-09-17  Jeffrey Stedfast  <fejj@gnome.org>
32226         * font.cpp: more progress on text layout.
32228 2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32230         * xaml.cpp, xaml.h: Move callbacks from PluginXamlLoader back to XamlLoader.
32232 2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32234         * xaml.cpp: Fix warning.
32236 2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32238         [Removed mono dependency for 1.0 moonlight applications. 
32239         We now have a native [Plugin]XamlLoader that is the native counterpart of the 
32240         managed Loader object, the native loader handles xaml loading when the 
32241         mono runtime isn't loaded.]
32243         * xaml.cpp, xaml.h: Added a XamlLoader class that replaces the callbacks.
32244           Changed xaml_create_from* to take a loader (XamlLoader*) argument. This
32245           was necessary because the callback handler isn't given enough
32246           information (it needs to know the plugin, but this information is not
32247           passed on), and it now also avoids the potential problem of overwriting
32248           static callbacks when several plugins are created simultanously.
32249         * control.cpp, demo.cpp: Update according to API change.
32251 2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32253         * panel.cpp, dependencyobject.cpp, dirty.cpp: Add some null checks.
32255 2007-09-14  Jeffrey Stedfast  <fejj@novell.com>
32257         * font.cpp|h: New font/text rendering engine (e.g. replacement for
32258         pango). Nowhere near complete yet.
32260 2007-09-14  Miguel de Icaza  <miguel@novell.com>
32262         * media.cpp (Stop, Pause): Do not dereference source if it is not
32263         yet set (TopBanana does this).
32265 2007-09-13  Jb Evain  <jbevain@novell.com>
32267         * media.cpp|h, playlist.cpp|h: Work on playlist integration.
32269 2007-09-10  Jeffrey Stedfast  <fejj@novell.com>
32271         * mplayer.cpp (StopThreads): When resetting current_pts and
32272         target_pts, use the audio (or video) initial_pts value rather than
32273         0 since they are meant to be absolute pts values, not
32274         relative. This fixes a bug in the halo3 site where pressing Stop
32275         would cause the current time string to become "59:55" when it
32276         should have been "00:00".
32278         * media.cpp (OnPropertyChanged): Only Invalidate() on
32279         PositionProperty changes if we have video content to render. Fixes
32280         bug #82474.
32282         * mplayer.cpp (HasVideo): New method that returns true if the
32283         media source has video content.
32285 2007-09-10  Jeffrey Stedfast  <fejj@gnome.org>
32287         * mplayer.cpp (Duration): Only use audio duration as the defacto
32288         duration if we've got a valid pcm handle.
32290 2007-09-10  Chris Toshok  <toshok@ximian.com>
32292         * animation.cpp (HookupAnimationsRecurse): make the message
32293         involving failure to hookup a property more verbose.  Looks like
32294         MS is treating a TranslateTransform as a ScaleTransform in popfly
32295         - that is, they're trying to animate ScaleX on a
32296         TranslateTransform (which is oddly enough named "scale".)
32298         * media.cpp: Emit ImageFailedEvent if we failed to load the image.
32299         Remove that damn TODO printf.
32301         * media.h: add ImageFailedEvent to Image, and change signature of
32302         CreateSurface so we can return false if there's an error.
32304         * xaml.cpp (parser_error): use the new ParserErrorEventArgs ctor.
32306         * error.h: make these classes instead of structs, and also make
32307         them copy/free the type specific strings.  it'll result in more
32308         allocations but it cleans up the code using them.
32310 2007-09-07  Sebastien Pouliot  <sebastien@ximian.com>
32312         * shape.cpp: Fixed Polygon "special" case when it only has to draw
32313         a line. Fixed Line::ComputeBound (Shape::ComputeBoundFast wasn't 
32314         working) which is now 10x faster than calling ComputeBoundSlow (the
32315         working alternative). Started to reuse the same concept for Polyline
32316         and Polygon but the (#def-out) code doesn't yet handle line joins 
32317         correctly (so it still use the correct ComputeBoundSlow);
32319 2007-09-06  Chris Toshok  <toshok@ximian.com>
32321         * dirty.cpp (process_dirty_elements): some guards against unioning
32322         an empty rectangle.
32324 2007-09-06  Chris Toshok  <toshok@ximian.com>
32326         * runtime.cpp (Surface::Invalidate): only invalidate the actual
32327         rectangle.  The +1/-2 stuff is done in dirty.cpp, if it needs to
32328         be.
32330         * rect.h (Rect::Floor): drop fractional part of all values.
32332         * media.h,media.cpp: we cheat and turn off AA on MediaElements
32333         when they aren't rotated or skewed.
32335         * uielement.h, uielement.cpp: we need to keep track of 2
32336         dirty_rects.  one for the element itself, which is GrowBy(1)'ed in
32337         dirty.cpp if the child uses AA, and one for children who have
32338         passed their invalidation rect up the tree (we don't grow this
32339         one).  Also, add the default UseAA method, which returns true, and
32340         the ChildInvalidated method, which mirrors Invalidate(Rect r) but
32341         uses the children_dirt_rect.
32343         * panel.h, panel.cpp (Panel::~Panel): clear our children
32344         collection.
32345         (Panel::FindStartingElement): the meat of the optimization hack -
32346         we determine if we can skip parts of the tree if the expose
32347         rectangle exists completely within the bounds of an opaque
32348         element, unrotated, unskewed element.
32349         
32350         * dirty.cpp (process_dirty_elements): handle
32351         item->children_dirty_rect as well as item->dirty_rect.  Also, Grow
32352         the item's dirty_rect by 1 before combining them, if the item uses
32353         AA.
32355 2007-09-05  Jb Evain  <jbevain@novell.com>
32357         * playlist.cpp: the asx format is case insensitive, parse it
32358         accordingly.
32360 2007-09-05  Sebastien Pouliot  <sebastien@ximian.com>
32362         * animation.h: Make KeySpline::GetObjectType virtual.
32364 2007-09-05  Jb Evain  <jbevain@novell.com>
32366         * playlist.cpp, playlist.h: work on playlist parsing.
32368 2007-09-05  Jb Evain  <jbevain@novell.com>
32370         * xaml.h: export timespan_from_str.
32372 2007-09-05  Jb Evain  <jbevain@novell.com>
32374         * list.h, list.cpp: add Remove(Node) and RemoveAt(int) method.
32376 2007-09-04  Chris Toshok  <toshok@ximian.com>
32378         * media.cpp (Image::Render): unref the backing pixbuf as soon as
32379         possible.
32380         (Image::CleanupSurface): guard against double unreffing the
32381         backing pixbuf.
32383 2007-09-04  Chris Toshok  <toshok@ximian.com>
32385         * xaml.cpp (xaml_set_property_from_str): delete the color.
32386         (dependency_object_set_attributes): same.
32388 2007-09-04  Chris Toshok  <toshok@ximian.com>
32390         * media.cpp (Image::CreateSurface): if we need to create a new
32391         surface, make sure to unref the old one.
32393         * geometry.cpp (PathGeometry::PathGeomtry): use
32394         Value::CreateUnrefPtr (bad name, imo, but eh)
32395         (PathFigure::PathFigure): same.
32397 2007-09-04  Jb Evain  <jbevain@novell.com>
32399         * playlist.h, playlist.cpp: Work on the overall design.
32401 2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
32403         * brush.cpp (image_brush_create_pattern): Revert previous patch as
32404         it broke test suite.
32406 2007-09-04  Jb Evain  <jbevain@novell.com>
32408         * list.h, list.cpp: add a List::ForEach method.
32410 2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
32412         * brush.cpp (image_brush_create_pattern): Set CAIRO_FILTER_FAST
32413         (based on lewings performance patch).
32415 2007-09-04  Sebastien Pouliot  <sebastien@ximian.com>
32417         * text.h|cpp: TextBlock actual_[height|width] are already cached 
32418         because they're expansive to calculate. Make sure we don't compute
32419         them until they're really required (e.g. when a lot of properties
32420         changes when loading an XAML file).
32422 2007-09-04  Chris Toshok  <toshok@ximian.com>
32424         * animation.cpp (KeyFrameAnimation_ResolveKeyFrames): add the
32425         keyframes in reverse order so the sort works.
32427 2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
32429         * list.cpp (Insert): Fixed.
32431         * runtime.cpp (render_cb): Added some "FPS" debug spew.
32433         * media.cpp (AdvanceFrame): On MediaEnded, don't remove the source
32434         timeout id, by returning false, it is removed for us.
32436 Tue Sep 4 17:50:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
32438         * media.cpp: fix memory leaks and crashes when a download gets
32439         aborted.
32441 2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
32443         * mplayer.cpp: Changed all pts variables to int64_t from uint64_t
32444         as that seems to be what ffmpeg uses internally. Also added a new
32445         'eof' state so that we can easily tell if we've reached the end of
32446         the media stream (eof is true and no packets queued).
32448 2007-09-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32450         * media.h, media.cpp: If we get a play request before the media is loaded,
32451           save the request and start playing when the media is loaded. Hopefully
32452           this is what MS is doing.
32454 2007-09-04  Jeffrey Stedfast  <fejj@gnome.org>
32456         * collection.cpp (Clear): Use list->IsEmpty () as it is cheaper
32457         than comparing the Length() to 0.
32459         * list.cpp: Added more tests.
32461 2007-09-03  Sebastien Pouliot  <sebastien@ximian.com> 
32463         * rect.cpp: Safer IsEmpty (handles negative values)
32464         * shape.cpp: In Shape::ComputeBoundsSlow make empty shape returns
32465         empty bounds. In Shape::DoDraw avoid call to  cairo_set_matrix if 
32466         shape is empty.
32468 2007-09-03  Sebastien Pouliot  <sebastien@ximian.com>
32470         * media.cpp: Fix premul and remove confusing macro.
32472 2007-09-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32474         * clock.cpp, uielement.cpp, trigger.cpp, panel.cpp, animation.cpp,
32475           canvas.cpp, namescope.cpp: Plug some leaks.
32476         * value.h.in, value.h, value.cpp: Added CreateUnrefRef and CreateUnref.
32477         * dependencyobject.cpp: free_attachee: unref the contained dob. Use
32478           base_unref () instead of accessing the pointer in a few places to allow
32479           for null pointers.
32480         * debug.cpp: get_stack_trace is now able to get meaningful data for managed
32481           parts of the stack trace as well.
32483 2007-09-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32485         * list.cpp: List::Unlink: Link my neighbours to eachother.
32487 2007-09-01  Sebastien Pouliot  <sebastien@ximian.com>
32489         * rect.cpp: Fix union with empty rectangles (so x and y are not
32490         assigned to 0 resulting in large bounds). Fix IsEmpty.
32491         * shape.cpp: Fix possible division by 0, resulting in infinite 
32492         values (and much too large bounds)
32494 2007-08-31  Jeffrey Stedfast  <fejj@novell.com>
32496         *.cpp: Updated for the slightly different List API (list nodes no
32497         longer have Next() or Prev() methods, just access the pointers
32498         directly).
32500         * animation.cpp: Made sorted_list a GPtrArray and updated to use
32501         g_ptr_array_insert_sorted(). Also, a lot of the 'list' (not
32502         sorted_list) accesses assumed nodes were of type KeyFrameNode,
32503         which they were not. Fixed.
32505         * xaml.cpp: Made XamlElementInstance.dtor virtual.
32507         * collection.h: Made the Collection::Node.dtor virtual.
32509         * list.cpp: Rewritten, if we add a virtual .dtor to List::Node, we
32510         can no longer guarantee that List::Node->next will have the same
32511         address as the List::Node object and so the list implementation
32512         broke. This rewrite is a bit less fancy, but doesn't rely on that
32513         feature.
32515 2007-08-31  Sebastien Pouliot  <sebastien@ximian.com> 
32517         * media.cpp, panel.cpp, shape.cpp, text.cpp: Calling GrowBy 
32518         doesn't change the current rectangle (but returns a new one).
32519         However everything seems to work, so they are probably not needed.
32521 2007-08-31  Jeffrey Stedfast  <fejj@novell.com>
32523         * text.cpp (OnPropertyChanged): Need to Invalidate() too.
32525 2007-08-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32527         * runtime.h, runtime.cpp: Implement fullscreen support, drawing_area does
32528           now reference either the fullscreen drawing area or the normal drawing
32529           area. Refactored drawing area initialization and destruction into
32530           seperate methods. Modified ConnectEvent to be able to specify whether
32531           the drawing area should attach to realize/unrealize events (fullscreen
32532           drawing area shouldn't). Only emit ResizeEvent if we're not in
32533           fullscreen mode. Added normal_height/width, contains the size of the
32534           surface when not in fullscreen (as opposed to screen_height/width for
32535           fullscreen mode). Height/width now contains the actual size of the area
32536           where we draw, whether in fullscreen mode or not.
32538 2007-08-31  Sebastien Pouliot  <sebastien@ximian.com> 
32540         * shape.cpp: #ifdef out an optimization that doesn't work with
32541         ComputeBoundsSlow (a specified stroke brush, with a thickness of 0,
32542         wouldn't render at all with it's fill brush). Added same shortcut 
32543         (as before) for Shape::ComputeBoundsSlow.
32545 2007-08-31  Sebastien Pouliot  <sebastien@ximian.com>
32547         * shape.cpp: Added a shortcut in Shape::ComputeBoundsFast when shapes
32548         are known to be empty (UIElement::SHAPE_EMPTY).
32550 2007-08-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32552         * shape.h, shape.cpp: Revert to the old CanFill method for shapes,
32553           apparently a point is inside a shape unregarding to whether it's filled
32554           or not, unlike geometries.
32556 2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
32558         * shape.cpp: Better degenerate handling for round-rectangles and 
32559         for ellipses.
32561 2007-08-30  Chris Toshok  <toshok@ximian.com>
32563         * collection.h, collection.cpp: change the prototype of
32564         Collection::Add, ::Insert, and ::SetVal to return bool.  Make the
32565         subclasses check the return value before doing their type specific
32566         handling of the child.  Fixes the crash from invalid xaml in
32567         alan's testcase.
32569         * animation.h, animation.cpp: track collection api change.
32571 2007-08-30  Chris Toshok  <toshok@ximian.com>
32573         * collection.cpp (Collection::Add): make the warning a lot more
32574         useful if the child isn't of the right type.
32576 2007-08-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32578         * xaml.cpp: Unref the namescope.
32579         * debug.h, debug.cpp: Added. Implemented get_stack_trace and
32580           print_stack_trace.
32581         * clock.cpp: Unref the _instance.
32582         * dependencyobject.h, dependencyobject.cpp: Implement object tracking for
32583           debug purposes. It's able to log to console object creation,
32584           destruction, ref/unrefs with a stacktrace with C++ unmangled function
32585           names, file and line number. Keep a count of created and destroyed
32586           objects, and a list of objects still alive. Ref and unref attached
32587           objects, and free the attachees when we're deleted.
32588         * animation.h, animation.cpp: Add animation_destroy, and destroy the default
32589           dependency property for a few properties.
32590         * type.cpp, type.cpp.in: Initialize Type::types to NULL.
32591         * runtime.cpp: Add a g_type_inited to avoid initializing g_types several
32592           types. Call animation_destroy on shutdown, and add some object tracking
32593           output to runtime_init and runtime_shutdown.
32594         * Makefile.am: Added debug.*.
32596 2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
32598         * shape.cpp: In some degenerate cases Radius[X|Y] can be ignored 
32599         for rectangles.
32601 2007-08-30  Jeffrey Stedfast  <fejj@novell.com>
32603         * mplayer.cpp (AdvanceFrame): If there is no video stream, return
32604         based on audio state. Also, if current_pts >= target_pts already,
32605         return true rather than false to pretend we advanced a frame (it's
32606         really not that important to our caller, all the value is used for
32607         is updating position).
32609 2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
32611         * shape.cpp: Handle negative values for Height and Width (not 
32612         drawn) and for Radius[X|Y] (absolute values).
32614 2007-08-30  Jb Evain  <jbevain@novell.com> 
32616         * media.h, media.cpp: introduce a new MediaSource class that a
32617         MediaElement uses, so we can have either a SingleMedia or a Playlist
32618         as a source.
32619         * playlist.cpp, playlist.h: added
32620         * Makefile.am: add the previous files.
32622 2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
32624         * shape.cpp: Fix small rectangle fills when no stroke brush is 
32625         specified.
32627 2007-08-29  Jeffrey Stedfast  <fejj@novell.com>
32629         * text.cpp (OnPropertyChanged): Don't recalculate width/height nor
32630         bounds on TextProperty change explicitly, it should already be
32631         recalculated later in the function in the same place it gets
32632         reclauclated for other property changes.
32633         (ComputeBounds): Updated to work the same as the rest of the
32634         elements work.
32636 2007-08-29  Sebastien Pouliot  <sebastien@ximian.com> 
32638         * shape.cpp: Fix ComputeBoundsFast to consider the stroke 
32639         thickness
32641 2007-08-29  Sebastien Pouliot  <sebastien@ximian.com>
32643         * shape.cpp: Fix Path::BuildPath cairo_path_t caching as we modify 
32644         the path after we get a copy of it. Remove the now unrequired 
32645         clipping inside the *::BuildPath for StretchUniformToFill.
32647 2007-08-29  Jeffrey Stedfast  <fejj@novell.com>
32649         * media.cpp (Render): Cache the pattern matrix.
32650         (DownloaderComplete): Remove the assert and simply handle that
32651         case by returning (which defers the call until OnLoaded).
32653 2007-08-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32655         * runtime.cpp: Initialize the FullScreen variables. Helps a lot in
32656           making things consistent.
32658 2007-08-29  Chris Toshok  <toshok@ximian.com>
32660         * merged delayed-rendering-branch branch to head.  ChangeLog is:
32661         
32662         2007-08-28  Chris Toshok  <toshok@ximian.com>
32664                 * control.cpp (GetTransformFor): change this to act as
32665                 Canvas::GetTransformFor does - we only put in the transform from
32666                 parent to child here - don't include the parent's transform as
32667                 well.  Fixes the airlines demo.
32669         2007-08-28  Chris Toshok  <toshok@ximian.com>
32671                 * dirty.cpp (process_dirty_elements): use a different method for
32672                 checking if against the toplevel canvas, and also use
32673                 UIElement::parent instead of DependencyObject::GetParent() to get
32674                 controls working a little better than before.
32676                 * control.h, control.cpp: remove UpdateTransform.  this is handled
32677                 by the dirty.cpp code now.
32679                 * dependencyobject.h, dependencyobject.cpp: copy over the
32680                 event_object_{add,remove}_event_handler change from the trunk so
32681                 we can continue to work with HEAD olive.
32683         2007-08-22  Chris Toshok  <toshok@ximian.com>
32685                 * uielement.cpp (Invalidate): don't actually invalidate the
32686                 element unless it's visible.
32687                 (OnPropertyChanged): the above change requires us to invalidate
32688                 the element before setting the flags (in the case where we're
32689                 hiding an element).
32691         2007-08-21  Jeffrey Stedfast  <fejj@novell.com>
32693                 * media.cpp (ComputeBounds): Use the FrameworkElement width/height
32694                 unless unspecified, only then should we use video width/height.
32696         2007-08-21  Chris Toshok  <toshok@ximian.com>
32698                 * uielement.cpp (DoRender): short-circuit rendering of uielements
32699                 when their opacity is 0.
32701                 * dirty.cpp (process_dirty_elements): handle controls.
32703         2007-08-21  Chris Toshok  <toshok@ximian.com>
32705                 * shape.h: add Shape::ComputeBoundsSlow, which uses the slow
32706                 (cairo_*_extents) codepath for computing bounds.  Use this path
32707                 for polygons, polylines, and paths.  Implement a Line-specific
32708                 fast ComputeBounds.
32710         2007-08-20  Chris Toshok  <toshok@ximian.com>
32712                 * media.cpp (MediaElement::ComputeBounds): GrowBy(1).
32713                 (Image::ComputeBounds): use bounding_rect_for_transformed_rect.
32715         2007-08-20  Chris Toshok  <toshok@ximian.com>
32717                 * rect.h, rect.cpp: add bounding_rect_from_transformed_rect.
32719                 * panel.cpp (Panel::ComputeBounds): use the bounding_rect
32720                 call, and Rect::GrowBy
32722                 * media.cpp (MediaElement::ComputeBounds): use the bounding_rect
32723                 call.
32725         2007-08-20  Chris Toshok  <toshok@ximian.com>
32727                 * shape.h, shape.cpp: move the ellipse bound computing to shape
32728                 instead.
32730 2007-08-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32732         * clock.h: Implement TimeManager::GetObjectType.
32733         * dependencyobject.h, dependencyobject.cpp: Move all type management down to
32734           Base (GetObjectType, Is, GetType, GetTypeName), and implement
32735           GetObjectType in the classes that don't do it already. Remove
32736           BASE_FLOATS, simplifying ref counting.
32737         * type.cpp.in, type.h, type.cpp, type.h.in: Added Base and inherited classes
32738           that don't already inherit from DependencyObject.
32739         * runtime.h, runtime.cpp: Add the Fullscreen API (not implemented yet, only
32740           raises events), and implement GetObjectType.
32742 2007-08-28  Sebastien Pouliot  <sebastien@ximian.com> 
32744         * shape.cpp: Fix StretchUniformToFill
32746 2007-08-28  Sebastien Pouliot  <sebastien@ximian.com>
32748         * shape.cpp: Fix StrokeDashArray and StrokeDashOffset as they now
32749         (new since refresh?) need to be multiplied with the stroke's 
32750         thickness
32752 2007-08-28  Jeffrey Stedfast  <fejj@novell.com>
32754         * text.cpp (Render): Fixed the "no text to render" optimization:
32755         don't check TextBlock::TextProperty to see if we have any text to
32756         render, instead check TextBlock::layout (which will have any text
32757         from inlines as well).
32758         (OnPropertyChanged): If the TextProperty changes, recalculate the
32759         layout and bounds.
32761 2007-08-28  Sebastien Pouliot  <sebastien@ximian.com>
32763         * geometry.h: Add a Path* parameter to Draw as we need to know some 
32764         stuff (e.g. stroke thickness) in order to detect degenerate cases.
32765         * geometry.cpp: Handle degenerate case for RectangleGeometry.
32766         * panel.cpp, uielementy.cpp: Adjust Draw calls for optional Path 
32767         element (NULL in the case of clipping).
32768         * shape.cpp|h: Move cairo_path_t caching logic from Path to Shape
32769         class. Add GetFillRule method. Handle most cases where a large stroke
32770         thickness change the SL drawing behaviour (wrt Cairo behaviour)
32771         * uielement.h: Add flags for empty/normal/degenerate shapes
32773 2007-08-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32775         * panel.cpp: InsideObject: The point is only inside us if we have a
32776           background, otherwise we act like if we were transparent (which is what
32777           we are if we aren't painting anything inside us).
32778         * geometry.h, uielement.cpp, shape.h: Rename CanFill to IsFilled so that
32779           it's closer to what it actually does.
32780         * shape.cpp: Changed implementation of Shape::CanFill to return true only if
32781           we're actually filled, and rename CanFill to IsFilled so that it's
32782           closer to what it actually does. 
32784 2007-08-27  Jackson Harper  <jackson@ximian.com>
32786         * dependencyobject.cpp|h: Don't return Collections when getting
32787         parents.
32789 2007-08-27  Jeffrey Stedfast  <fejj@novell.com>
32791         * mplayer.cpp (Play): Always add a timeout, even for audio-only
32792         media, so that the callback can check if the media has ended and
32793         emit the MediaEnded event.
32795         * media.cpp (AdvanceFrame): Emit the MediaEndedEvent.
32797         * mplayer.cpp (MediaEnded): New convenience function.
32799 2007-08-27  Sebastien Pouliot  <sebastien@ximian.com>
32801         * shape.cpp: Remove cairo_new_path call in moon_rounded_rectangle
32802         as this clear any path data in the context (see
32803         test-path-group.xaml)
32805 2007-08-27  Jeffrey Stedfast  <fejj@novell.com>
32807         * mplayer.cpp (audio_play): Implement software balance/volume here
32808         rather than using the system's mixer (as that changes the
32809         balance/volume for all applications which is a bad thing). Fixes
32810         bug #82602.
32812 2007-08-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32814         * panel.cpp: InsideObject: only skip checking the children if the
32815           point is not in the clipped area.
32817         * uielement.h, uielement.cpp: Added InsideClip, and moved the
32818           corresponding code from InsideObject to InsideClip.
32820 2007-08-27  Sebastien Pouliot  <sebastien@ximian.com>
32822         * xaml.cpp: Fix calculation for smooth quadatric bezier (T) as seen in
32823         tests/xaml/test-path-smoothquadraticbezier.xaml
32825 2007-08-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32827         * uielement.h, uielement.cpp: Implement InsideObject here too, the same
32828           implementation as Shape has (for our Clip property).
32829         * frameworkelement.cpp: InsideObject: call new base implementation as well.
32830         * panel.cpp: InsideObject: don't check our children, the mouse may be over
32831           them, but they're not visible for some reason (the parent object might
32832           be clipped, etc).
32834 2007-08-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32836         * panel.cpp: Panel::HandleMotion, if we're the captured element, handle the
32837           motion event even though the mouse isn't over us.
32838         * runtime.h: Add a public Surface::GetCapturedElement.
32840 2007-08-24  Jeffrey Stedfast  <fejj@novell.com>
32842         * mplayer.cpp (StopThreads): Need to reset current_pts to 0 so the
32843         video frames will update if we seek backwards.
32845         * uielement.cpp (DoRender): Shortcut out if total_opacity == 0.0
32847         * media.cpp (UpdateProgress): Use the downloader progress value as
32848         the buffering progress value as well (since we don't yet stream).
32849         (DownloaderComplete): Call UpdateProgres() here so that we can
32850         flush the 100% progress value.
32852         * downloader.cpp (Write): Update the progress first, so that the
32853         writer callback can query the actual progress (all data read up to
32854         and /including/ this point in time).
32855         (NotifyFinished): Set progress to 100% and emit an event.
32857 2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
32859         * value.h[.in]: Added AsNPObj.
32860         * type.cpp[.in]: Initialize Type::NPOBJ correctly.
32862 2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
32864         * media.cpp: (DownloaderCompleted): The initial state of media
32865         elements that aren't autoplayed is 'Paused'.
32867 2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
32869         * media.cpp (MediaElement): Initialize 'loaded' to false.
32870         (SetSource): Don't call DownloaderComplete() if we haven't been
32871         loaded yet.
32872         (GetValue): Convert to position from ms to TimeSpan ticks.
32873         (OnLoaded): Set loaded to true and, if we have a downloader which
32874         has completed the download, call DownloaderComplete() which will
32875         then open the media file and autoplay if appropriate.
32876         (OnPropertyChanged): Protect against creating a downloader for an
32877         empty string uri.
32879 2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
32881         * media.cpp (DownloaderComplete): If we fail to open, emit the
32882         MediaFailedEvent and set some default values.
32883         (OnPropertyChanged): Don't StopLoader() here, do that all in
32884         SetSource (since SetSource needs to do it anyway).
32885         (SetSource): Call StopLoader() here and close the MediaPlayer,
32886         etc.
32888 2007-08-23  Jackson Harper  <jackson@ximian.com>
32890         * runtime.cpp|h: Make Resize use our event system (so the plugin
32891         can use it).
32892         * dependencyobject.cpp|h: Rename the add/remove handler functions
32893         to not require dependencyobjects.
32895 2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
32897         * media.cpp (OnPropertyChanged): Don't autoplay here.
32898         (advance_frame): Do ms->TimeSpan conversion here, too.
32899         (DownloaderComplete): Instead of calling ::Pause(), just set the
32900         pause state since the MediaPlayer already starts out in paused
32901         state.
32903 2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
32905         * clock.h: Add defines and methods to convert between timespans and
32906         floats.
32907         * media.cpp: Create a default (empty) Markers collection. When setting
32908         MediaPlayer time values, convert between ticks (in TimeSpans) and 
32909         milliseconds (which is what MediaPlayer expects). Emit MediaOpened
32910         when we're finished downloading a media, and if we're not autoplaying
32911         it, we're pausing it. Update uses of Value (gint64) constructors.
32912         * value.cpp|h|h.in: Remove the Value (gint64) constructor and add a 
32913         Value (gint64, Type::Kind) constructor to avoid mixups between
32914         INT64 and TIMESPAN values. Check for null before unref'ing a 
32915         dependency object.
32916         * xaml.cpp: Update uses of Value (gint64) constructors.
32917         
32918 2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
32920         * type.[cpp|h].in: Add const's here that were only added manually
32921         to the generated files.
32923 2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
32925         * mplayer.cpp: Implemented volume/balance
32927 2007-08-23  Sebastien Pouliot  <sebastien@ximian.com>
32929         * shape.cpp: Remove unneeded (cairo_close_path) and dead (break)
32930         code in Polygon::Draw.
32932 2007-08-22  Chris Toshok  <toshok@ximian.com>
32934         * clock.cpp (Tick): guard against division by zero.  gets
32935         "monotone" displaying.
32937 2007-08-22  Sebastien Pouliot  <sebastien@ximian.com>
32939         * shape.cpp|h: Provide GetTransformOrigin on Shape and remove them 
32940         from Rectangle and Ellipse. Monotone requires that on Path and I can't
32941         recall the reason I made this (while all the test cases I made still
32942         work that way).
32944 2007-08-22  Jeffrey Stedfast  <fejj@novell.com>
32946         * mplayer.cpp (MediaPlayer): Init mixer variables.
32948 2007-08-22  Jeffrey Stedfast  <fejj@novell.com>
32950         * media.cpp (advance_frame): Don't bother invalidating here, we'll
32951         do that in OnPropertyChanged() for the PositionProperty.
32952         (OnPropertyChanged): Invalidate if Position has changed and
32953         opacity > 0.0f (and we actually have video).
32954         (ComputeBounds): Use the FrameworkElement width/height if set.
32955         (GetTransformOrigin): Same.
32957 2007-08-21  Jeffrey Stedfast  <fejj@novell.com>
32959         * mplayer.cpp (Open): Merged both Open() implementations into a
32960         single one. We no longer use Open() without passing a uri (since
32961         Stop() has been implemented in a better way).
32962         (AdvanceFrame): Keep track of our current pts so that we won't get
32963         ahead of the audio if called too often.
32965 2007-08-20  Chris Toshok  <toshok@ximian.com>
32967         * rect.cpp (bounding_rect_for_transformed_rect): oops, got
32968         MAX2/MIN2 mixed up.
32970 2007-08-20  Chris Toshok  <toshok@ximian.com>
32972         * rect.h, rect.cpp (bounding_rect_for_transformed_rect): horrible
32973         name, I know, but we need this functionality.  it's not enough to
32974         use UL and LR corners of the rectangle when computing the bounding
32975         rect for a transformed rectangle.  we have to test all 4 points.
32977         * panel.cpp (ComputeBounds): use
32978         bounding_rect_for_transformed_rect.
32980 2007-08-17  Chris Toshok  <toshok@ximian.com>
32982         * dependencyobject.cpp (strcase_equal, strcase_hash): new case
32983         insensitive hash functions.
32984         (RegisterFull): the property hash tables (per type, used for
32985         GetDependencyProperty) need to be case insensitive.
32987 2007-08-17  Chris Toshok  <toshok@ximian.com>
32989         * xaml.cpp: remove Hidden from the visibility_map.
32990         (enum_from_str): if we don't see a name we recognize, try to parse
32991         it as a number.  This could maybe be someplace else.
32993         * enums.h: remove VisibilityHidden
32995         * uielement.h, uielement.cpp: remove
32996         VisibilityHidden/LAYOUT_VISIBLE
32998         * control.h: remove GetLayoutVisible.
33000         * panel.cpp (ComputeBounds): switch from item->GetLayoutVisible to
33001         item->GetVisible, since there's no need to distinguish between the
33002         two anymore.
33004 2007-08-17  Jackson Harper  <jackson@ximian.com>
33006         * clock.h: Add ToSeconds utility functions.
33008 2007-08-16  Jeffrey Stedfast  <fejj@novell.com>
33010         * list.cpp (InsertSorted): For the stable evrsion, work backwards
33011         instead of forwards (improves performance in the typical case,
33012         altho we aren't gonna sue this feature anymore - z-sorted lists
33013         will now be GPtrArrays).
33015         * garray-ext.cpp|h: New src file containing an extension to
33016         GPtrArray for inserting an item into a presorted array.
33018         * collection.cpp (VisualCollection): z_sorted is now a GPtrArray,
33019         updated all usages of it.
33021         * panel.cpp (Render): Updated now that z_sorted is an array
33022         instead of a linked list.
33024 2007-08-16  Jackson Harper  <jackson@ximian.com>
33026         * xaml.cpp: Transforms can be set as attributes, they are just a
33027         matrix in string form, that become a MatrixTransform on the
33028         object.
33029         - Made the debug a little nicer
33031 2007-08-15  Jackson Harper  <jackson@ximian.com>
33033         * xaml.cpp: Since the callback setting is now a once per a domain
33034         thing, we don't want to check if they are already set. The 'are
33035         they already set' check only worked when we were setting them at
33036         the beginning of each parsing attempt.  With our current setup it
33037         was causing everything to get loaded in the same domain.
33039 2007-08-13  Jeffrey Stedfast  <fejj@novell.com>
33041         * mplayer.cpp (AdvanceFrame): Init frame to NULL so we don't
33042         segfault if there are no packets in the queue.
33044 2007-08-13  Chris Toshok  <toshok@ximian.com>
33046         * animation.cpp (*KeyFrame::InterpolateValue): for all the
33047         keyframes, if we don't have a Value defined, don't bother
33048         interpolating anything, just return baseValue.
33050 2007-08-13  Chris Toshok  <toshok@ximian.com>
33052         * collection.cpp: fix merging/unmerging of child namescopes.
33054         * namescope.h, namescope.cpp: add a flag (merged) and a list of
33055         child merged namescopes which are searched any time this namescope
33056         is searched.  Reimplement merge as list->Append, and unmerge as
33057         list->Remove.
33059         * dependencyobject.h: add ClearValue, and make GetParent
33060         inlineable.
33062         * dependencyobject.cpp: add impl for ClearValue, and remove
33063         GetParent.  Also, when finding a name we only check non-merged
33064         namescopes.  The merged ones in the hieararchy will be checked as
33065         the children of the non-merged ones.  Given that the set of names
33066         in merged scopes can't overlap, I'm not strictly sure this is
33067         necessary, except to reproduce Silverlight's faulty lookups after
33068         subtree removal.
33070 2007-08-10  Jeffrey Stedfast  <fejj@novell.com>
33072         * collection.cpp (Clear): Unregister the object names.
33074         * dependencyobject.h (GetName): uhh... just return the value, lets
33075         not go returning "(null)" in string form.
33077 2007-08-10  Chris Toshok  <toshok@ximian.com>
33079         * runtime.h, runtime.cpp (key_press_callback): map the gdk keyval
33080         to the silverlight Key and call s->toplevel->HandleKeyDown.
33081         (key_release_callback): same.
33082         (gdk_keyval_to_key): new function, to map between gdk and
33083         silverlight.
33084         
33085         * uielement.h, uielement.cpp: add HandleKeyDown/HandleKeyUp, which
33086         just package up the args into a structure and Emit the event.
33088         * enums.h: add the Key enum from the silverlight docs.
33090 2007-08-10  Jeffrey Stedfast  <fejj@novell.com>
33092         * dependencyobject.cpp (resolve_property_path): Keep track of the
33093         last '.' so that when we go to get the DependencyProperty, we can
33094         pass the property name component rather than the full path of the
33095         property name. Fixes the color fades in Monotone.
33097 2007-08-09  Chris Toshok  <toshok@ximian.com>
33099         * animation.h, animation.cpp: if any keyframe's keytime changes,
33100         we need to re-resolve the collection.
33102 2007-08-09  Jeffrey Stedfast  <fejj@novell.com>
33104         * mplayer.cpp (Play): Only start up the io/audio threads if we
33105         aren't simply paused (e.g. if they are already alive).
33106         (IsPlaying): Return true only if playing && !paused.
33107         (audio_loop): Changed the locking logic to lock outside of the
33108         loop rather than inside. We now only release the lock inside the
33109         loop if/when the paused state changes.
33111 2007-08-08  Chris Toshok  <toshok@ximian.com>
33113         * animation.h: sprinkle Resolve() methods and resolved flags
33114         around.
33116         * animation.cpp (Storyboard::HookupAnimationsRecurse): call
33117         Resolve() on the animation as we recurse.
33118         (KeyFrameNodeComparer): compare using the keyframe's resolved
33119         keytime.
33120         (KeyFrameNodeFinder): nuke.
33121         (KeyFrameCollection::Add): just mark the collection as needing to
33122         be resolved.  don't muck with the sorted list here.
33123         (KeyFrameCollection::Insert): same.
33124         (KeyFrameCollection::Remove): same.
33125         (KeyFrameCollection::Clear): also mark the collection as
33126         unresolved.
33127         (KeyFrameCollection::GetKeyFrameForTime): use resolved keytime.
33128         (KeyFrameAnimation_ResolveKeyFrames): implement most of the
33129         algorithm posted at
33130         http://msdn2.microsoft.com/en-us/library/ms742524.aspx to resolve
33131         keytimes of different types.  this is all untested, unfortunately,
33132         as I can't get non-TimeSpan keytimes to work on SL.
33133         (*AnimationUsingKeyFrames::GetCurrentValue): use resolved
33134         keytime.
33135         (*AnimationUsingKeyFrames::GetNaturalDurationCore): resolve
33136         the key frames before using sorted_list.
33137         (*AnimationUsingKeyFrames::Resolve): override the empty
33138         default, and call KeyFrameAnimation_ResolveKeyFrames.
33140 2007-08-08  Chris Toshok  <toshok@ximian.com>
33142         * clock.cpp (Begin): make sure we handle clocks that seek in the
33143         first tick.
33145 2007-08-08  Chris Toshok  <toshok@ximian.com>
33147         * canvas.cpp (Canvas::Canvas): create a temporary namescope
33148         whenever we create a canvas.  We need this for animations that are
33149         started before the canvas is attached to the tree, or in any case
33150         where FindName is called on code associated with a subtree before
33151         it's added to the surface.
33153         * animation.cpp (Storyboard::HookupAnimationsRecurse): turns out
33154         Storyboard.TargetName can be assigned to the parent storyboard as
33155         well as the animation.  Loop up the clock hierarchy when looking
33156         for the targetname.
33157         
33158 2007-08-07  Chris Toshok  <toshok@ximian.com>
33160         * animation.cpp, animation.h
33161         (*AnimationUsingKeyFrames::GetNaturalDurationCore): no need to
33162         iterate over all the keyframes looking for the last one - just
33163         look at the last one in the sorted list.
33165 2007-08-07  Jeffrey Stedfast  <fejj@novell.com>
33167         * media.cpp (SetValue): Only crop position values if we're not
33168         updating state from the media player (we're allowed to set values
33169         outside of the duration range from the media player). Also, do our
33170         seeking here.
33171         (OnPropertyChanged): Don't do our seeking here because we can't
33172         get the actual seek position as GetValue()'s override will
33173         re-query the media player for its actual position.
33175         * mplayer.cpp (Open): Don't create the threads here anymore,
33176         create them in Play() instead. Also calculate ahead of time the
33177         new audio->pts_per_frame value which allows the video to keep even
33178         better sync with the audio (we used to base this on actual time
33179         spent playing the audio frame rather which could sometimes be off
33180         a smidgen).
33181         (AdvanceFrame): If seek_pts is non-zero, then we need to base
33182         target_pts on it rather than video->initial_pts (assuming we have
33183         no audio to sync to).
33184         (Play): Set playing = true and create the audio/io threads.
33185         (Close): A lot of the logic has been moved into a new method,
33186         StopThreads().
33187         (StopThreads): Stop the threads and reset minimal state.
33188         (Stop): Call StopThreads() and seek back to the beginning of the
33189         av stream.
33190         (Seek): Implemented.
33191         (Position): Back to subtracting the initial_pts so that we always
33192         have a range of 0:duration. If seek_pts is set and >target_pts,
33193         use that rather than target_pts so even if we are in a stopped
33194         state, querying the position will return expected results.
33195         (audio_play): Return audio->pts_per_frame rather than the actual
33196         time difference.
33198 2007-08-06  Jackson Harper  <jackson@ximian.com>
33200         * xaml.cpp: add VisualCollections.
33202 2007-08-06  Chris Toshok  <toshok@ximian.com>
33204         * clock.cpp, clock.h: this might be completely wrong and break
33205         other demos... but childless clockgroups Stop when they hit their
33206         duration, they don't SkipToFill.  fixes the silverlightclr balls
33207         demo.
33209 2007-08-06  Larry Ewing  <lewing@novell.com>
33211         * dependencyobject.h:
33212         * dependencyobject.cpp:
33213         * media.cpp:
33214         * type.h: 
33215         * type.cpp: add const to the various string apis.
33217 2007-08-06  Jeffrey Stedfast  <fejj@novell.com>
33219         * mplayer.cpp: Fixes to make it work with media files w/ no audio
33220         (or where we are unable to play the audio).
33222 2007-08-04  Chris Toshok  <toshok@ximian.com>
33224         * brush.h, brush.cpp: add VisualBrush.
33226         * xaml.cpp (xaml_init): hookup VisualBrush parsing.
33228         * value.h, type.h, type.cpp: sync up the VisualBrush stuff.
33230 2007-08-04  Chris Toshok  <toshok@ximian.com>
33232         * panel.cpp (Panel::ChildInvalidated): for the Invalidated stuff
33233         to work properly, panel needs to call
33234         FrameworkElement::Invalidate, not parent->ChildInvalidated
33235         directly.
33237         * uielement.h, uielement.cpp: add an Invalidated event for use by
33238         the visual brush.
33239         
33240 2007-08-03  Chris Toshok  <toshok@ximian.com>
33242         * collection.cpp (Collection::Add, Collection::Insert): reinstate
33243         jackson's merging code, but only do it if @data's namescope is
33244         temporary.
33246         * namescope.h, namescope.cpp: Add {Set,Get}Temporary.
33248         * xaml.cpp (xaml_create_from_str): set the namescope to be
33249         temporary if create_namescope is false.
33250         (xaml_create_from_file): same.
33252 2007-08-03  Chris Toshok  <toshok@ximian.com>
33254         * panel.h, panel.cpp: add an optimization for the 2 updates that
33255         travel down the tree (UpdateTotalOpacity and UpdateTransform).
33256         Since we're already invalidating the panel's bounds (in fact we do
33257         it before traversing), we can ignore the invalidates which come
33258         back up the tree from the children.
33260         * media.cpp, media.h: make NaturalDuration a Duration.  this gets
33261         the last of roeder's demos sorta working.
33263 2007-08-03  Jeffrey Stedfast  <fejj@novell.com>
33265         * mplayer.cpp: Whenever we change the 'paused' state, signal to
33266         the other thread(s) that it has changed so that they can go on
33267         with their lives immediately rather than waiting for the kernel to
33268         context switch.
33270 2007-08-02  Chris Toshok  <toshok@ximian.com>
33272         * control.cpp (GetTransformFor, OnSubPropertyChanged): now, before
33273         you get your panties in a twist, check this out.  If you have a
33274         control and set both its Canvas.LeftProperty and that of its root
33275         object (the return value of InitializeFromXaml), the effects are
33276         *additive*, yet GetValue on each object returns exactly what you'd
33277         expect - the value you set on it.  The only reasonable explanation
33278         for this is that Control has Canvas's layout algorithm c&p'ed into
33279         it.
33281 2007-08-02  Chris Toshok  <toshok@ximian.com>
33283         * xaml.h, xaml.cpp: switch the xaml_create_from_{file,str}
33284         functions to returning DependencyObjects instead of UIElements.
33285         in javascript you can create arbitrary xaml hierarchies (transform
33286         groups, brushes, etc).
33288         * control.cpp: need a cast here due to the above change.
33290 2007-08-02  Chris Toshok  <toshok@ximian.com>
33292         * runtime.h, runtime.cpp (Surface::Invalidate): add this call, and
33293         stuff the gtk_widget_queue_draw_area call there.
33295         * uielement.h, uielement.cpp, canvas.h, canvas.cpp, panel.h,
33296         panel.cpp, control.h, control.cpp: change the way
33297         UIElement::Invalidate works.  It used to call GetSurface() which
33298         would recurse up the tree to the root, and return the Surface*
33299         back down.  It would then call gtk_widget_queue_draw_area there.
33300         This left little room for optimization.  Switch everything over to
33301         using a new method implemented by all container classes,
33302         ChildInvalidated.  Basically Invalidate's recurse up to the root
33303         as before, but the actual gtk call happens at the root (well, 1
33304         level above it.  at the Surface itself).  In the future we can
33305         freeze Invalidates in container elements when they do things like
33306         update their transform so we'll just send 1 Invalidate up the
33307         tree, not N Invalidates for N children.
33308         
33309 2007-08-02  Jeffrey Stedfast  <fejj@novell.com>
33311         * media.cpp (DownloaderComplete): Set the CanPause and CanSeek
33312         properties.
33314         * mplayer.cpp (~MediaPlayer): Destroy the pause_mutex
33315         (IsPaused): New method.
33317         * media.cpp (MediaElement::GetValue): If the Position is being
33318         requested, query the MediaPlayer.
33319         (MediaElement::SetValue): Make sure the PositionProperty value is
33320         within bounds and force it to be if not.
33321         (MediaElement::Stop): Do nothing if we aren't playing/paused.
33322         (MediaElement::OnPropertyChanged): Call mplayer->Seek() if the
33323         position changed.
33325 2007-08-02  Chris Toshok  <toshok@ximian.com>
33327         * uielement.h, uielement.cpp: propagate opacity changes the way we
33328         do transform changes.  Store the total opacity of an item in the
33329         item, as we do with absolute_xform.  This keeps us from doing a
33330         walk up to the root of the hierarchy every time we have to draw an
33331         element (which we we were doing before in
33332         UIElement::GetTotalOpacity.)
33334         * panel.cpp, panel.h: when we update our total opacity, loop over
33335         the children telling them to update as well.
33337         * collection.cpp: propagate the panel's total opacity downward
33338         into the newly added subtree.
33340 2007-08-02  Chris Toshok  <toshok@ximian.com>
33342         * uielement.h, uielement.cpp, canvas.h, canvas.cpp: inline
33343         GetSurface/SetSurface.
33345 2007-08-02  Chris Toshok  <toshok@ximian.com>
33347         * canvas.cpp (Canvas::OnChildPropertyChanged): return true if we
33348         handle the property changing.
33350         * control.h, control.cpp: rip out all the proxying behavior.
33351         Control now works as a very specialized container.  Imagine if
33352         Panel had only 1 child, and no generalized way of manipulating it
33353         (other than initializing it from a xaml fragment), and you have
33354         Control.
33356 2007-08-01  Larry Ewing  <lewing@novell.com>
33358         * xaml.cpp: don't ever make the previous point relative.
33360 2007-08-01  Jeffrey Stedfast  <fejj@novell.com>
33362         * text.h: Removed deprecated enum values for FontWeights
33364         * media.cpp, mplayer.cpp: Updated to add features newly added with
33365         the July 2007 release of Silverlight 1.1
33367 2007-07-31  Chris Toshok  <toshok@ximian.com>
33369         * runtime.cpp (Attach): attach a namescope to the toplevel canvas
33370         if there isn't one when it's attached.
33372 2007-07-31  Jeffrey Stedfast  <fejj@novell.com>
33374         * media.cpp: NaturalDuration is actually a TimeSpan, not a
33375         Duration.
33377 2007-07-31  Chris Toshok  <toshok@ximian.com>
33379         * media.h, media.cpp: move the MediaBase events to MediaElement.
33381 2007-07-31  Jeffrey Stedfast  <fejj@novell.com>
33383         * text.h: Added StyleSimulations enum values.
33385         * xaml.cpp: Updated the StyleSimulations enum mapping.
33387 2007-07-31  Chris Toshok  <toshok@ximian.com>
33389         * text.h, text.cpp: Glyph.StyleSimulations changed from a char* to
33390         enum StyleSimulations.
33392         * xaml.cpp: add stylesimulations enum map.
33394 2007-07-30  Chris Toshok  <toshok@ximian.com>
33396         * uielement.cpp, uielement.h: add the Tag property.
33398 2007-07-30  Chris Toshok  <toshok@ximian.com>
33400         * animation.h, animation.cpp: add the three KeyFrameCollection
33401         subclass types, and switch all references to "KeyFrameCollection"
33402         to the more specific types.
33404         * xaml.cpp (xaml_init): make KeyFrameCollection a ghost element
33405         with Color/Double/PointKeyFrameCollections as subclasses.
33407         * value.h, type.h, type.cpp: sync up with the KeyFrameCollection
33408         type changes.
33409         
33410 2007-07-30  Larry Ewing  <lewing@novell.com>
33412         * color.cpp: make sure that we size expand 3 digit color
33413         specifications properly.
33415 2007-07-30  Chris Toshok  <toshok@ximian.com>
33417         * uielement.h, uielement.cpp: remove InsideObject from here, and
33418         move its warning to Visual::InsideObject instead.
33420         * visual.h, visual.cpp: add visual.cpp, and move implementation of
33421         InsideObject there.
33423         * Makefile.am (libmoon_la_SOURCES): add visual.cpp
33425 2007-07-30  Larry Ewing  <lewing@novell.com>
33427         * xaml.cpp: correct smooth path segments to use the correct value for
33428         cp1 and don't try to make it relative because all the sources are
33429         absolute.  Test case at http://intertwingly.net/stories/2007/05/06/?icon=caution
33430         
33431 2007-07-30  Chris Toshok  <toshok@ximian.com>
33433         * clock.h, clock.cpp: add very naive, probably broken first pass
33434         at Clock::Seek.
33436 2007-07-30  Chris Toshok  <toshok@ximian.com>
33438         * geometry.h, geometry.cpp: PathFigure.IsFilled is gone in RC1.
33440 2007-07-30  Chris Toshok  <toshok@ximian.com>
33442         * brush.h, brush.cpp: track breaking change of the
33443         Brush.Transform/RelativeTransform properties - they're speced to
33444         be Transforms, not TransformGroups.
33446 2007-07-29  Chris Toshok  <toshok@ximian.com>
33448         * collection.h, collection.cpp: change "ResourceCollection" to
33449         "ResourceDictionary".
33451         * uielement.cpp: same.
33453         * type.cpp, type.h, value.cpp, value.h: same.
33455         * xaml.cpp: same.
33457 2007-07-27  Chris Toshok  <toshok@ximian.com>
33459         * xaml.cpp (xaml_set_property_from_str): look up the enum map from
33460         the property name, not the value.
33462 2007-07-27  Chris Toshok  <toshok@ximian.com>
33464         * transform.h, transform.cpp: cache the transformation matrix once
33465         we recompute it.  This gives us the responsiveness of delayed
33466         updating without the cost of calculating the matrix once per
33467         object associated with it.  a property change just sets the
33468         "need_update" flag, which causes a recompute on the next
33469         GetTransform call.
33471 2007-07-27  Larry Ewing  <lewing@novell.com>
33473         * uielement.cpp: implement initial support for OpacityMask.
33475 2007-07-26  Miguel de Icaza  <miguel@novell.com>
33477         This implements support for relative MediaElement sources and
33478         makes all of them go through the downloader, like we do for
33479         images.
33480         
33481         * media.cpp (MediaElement): Do an implementation of SetSource
33482         similar to the one in Image.   Although there is some code that
33483         could be shared, the problem is that some parameters get in the
33484         way.   
33486         (MediaElement::DownloaderComplete): Move the playback here. 
33487         
33488         (StopLoader): Utility routine, factor this out also on the Image
33489         case, and hook this up to the destructor of Image and
33490         MediaElement.
33491         
33493 2007-07-25  Chris Toshok  <toshok@ximian.com>
33495         * media.h, media.cpp: add the MediaElement events,and emit
33496         DownloadProgressChanged and CurrentStateChanged.
33498 2007-07-25  Chris Toshok  <toshok@ximian.com>
33500         * media.h, media.cpp: register the 3 MediaBase events.  now we
33501         need to figure out where to emit them.
33503 2007-07-25  Jackson Harper  <jackson@ximian.com>
33505         * value.cpp: Assign the kind for NPOBJs.
33507 2007-07-25  Miguel de Icaza  <miguel@novell.com>
33509         * openfile.cpp (open_file_dialog_show): Change this method to
33510         return an array with all the selected files.   
33512 2007-07-24  Chris Toshok  <toshok@ximian.com>
33514         * runtime.h, runtime.cpp: permit setting of the the surface's
33515         background color, which is used to fill the widget before we
33516         render the toplevel canvas.  only do this, though, if the canvas
33517         is not transparent.
33519 2007-07-24  Chris Toshok  <toshok@ximian.com>
33521         * runtime.cpp (Surface::Attach): call Canvas::SetSurface instead
33522         of making the assignment.
33524         * canvas.h, canvas.cpp: make surface private, and add SetSurface
33525         for runtime.cpp to use.
33527 2007-07-24  Chris Toshok  <toshok@ximian.com>
33529         * brush.h, brush.cpp: make ImageBrush::SetSource take a const
33530         char*.
33532 2007-07-24  Jackson Harper  <jackson@ximian.com>
33534         * type.h.in: Add the NPOBJ type.
33535         * value.h.in: Add the npobj value, it's just stored as a pointer
33536         so that we don't become dependent on mozilla.
33537         * value.cpp|h,type.h: sync.
33539 2007-07-24  Jackson Harper  <jackson@ximian.com>
33541         * typegen.cs: Kind.cs lives in agmono now.
33544 2007-07-24  Chris Toshok  <toshok@ximian.com>
33546         * media.h, media.cpp: const-ify the PartName argument of the
33547         SetSource methods.  also, ref the new downloader before unreffing
33548         the old one in Image::SetSource.  they could be the same object.
33550 2007-07-24  Chris Toshok  <toshok@ximian.com>
33552         * geometry.cpp (RectangleGeometry::Draw): if the geometry's rect
33553         is NULL, return early.
33555 2007-07-23  Chris Toshok  <toshok@ximian.com>
33557         * Makefile.am (libmooninclude_headers): add some missing headers.
33559         * error.h: split out the error classes here.
33561         * libmoon.h: include error.h
33563         * xaml.h: remove the error classes from here.
33565         * xaml.cpp: include error.h
33567 2007-07-23  Miguel de Icaza  <miguel@novell.com>
33569         * runtime.cpp: Removed the timer code from here, move to plugin.
33571 2007-07-20  Chris Toshok  <toshok@ximian.com>
33573         * xaml.cpp (custom_add_child): this method is what's called when
33574         we add a child to an element of a custom namespace.  Trouble is,
33575         it might be a panel subclass.  If it is, and the child is a
33576         UIElement subclass, go ahead and add the child using
33577         panel_child_add.  This gets the Loaded events working properly in
33578         the chess demo (the trouble was that the custom children weren't
33579         even added to the tree, so their OnLoaded methods weren't being
33580         called)
33582 2007-07-20  Miguel de Icaza  <miguel@novell.com>
33584         * collection.cpp: Add support for RemoveAt. 
33586         * runtime.cpp (html_timer_timeout_add): Added helper routine to
33587         setup Html timeouts.
33589 2007-07-20  Chris Toshok  <toshok@ximian.com>
33591         * canvas.cpp, canvas.h, panel.cpp, panel.h: move much of the guts
33592         from Canvas to Panel.  I consider this cleaning up the source, as
33593         it's entirely possible to write Panel subclasses that aren't
33594         Canvas subclasses, but if you did that you'd have no
33595         rendering/event handling.
33597         Now pretty much all logic that involves iterating over the list of
33598         children is in Panel.  This also greatly simplifies Canvas.  It is
33599         now just a Panel with 2 interesting things about it: 1) it
33600         provides 2 attached properties to lay out its children, and 2) it
33601         allows the surface to dictate its bounds if it's the toplevel
33602         element.
33604 2007-07-20  Chris Toshok  <toshok@ximian.com>
33606         * downloader.cpp (Open): set the uri of the downloader.
33608 2007-07-20  Chris Toshok  <toshok@ximian.com>
33610         * dependencyobject.cpp: allocate the event hash/ptrarray lazily,
33611         so the potentially large number of objects which don't register
33612         events don't allocate them.
33614 2007-07-20  Chris Toshok  <toshok@ximian.com>
33616         * clock.h, clock.cpp: lock around access to the tick_call list, so
33617         tick calls can be added from other threads.
33619 2007-07-16  Miguel de Icaza  <miguel@novell.com>
33621         * media.cpp (SetSource): Also handle Completed.
33623         * downloader.cpp (Send): If a send operation is performed on an
33624         object that has completed its operation, immediately emit the
33625         finished event or error event.
33627         (Open): During open invalidate the state, to
33628         ensure that new downloads are properly triggered. 
33630 2007-07-16  Chris Toshok  <toshok@ximian.com>
33632         * frameworkelement.h, frameworkelement.cpp: we need
33633         framework_element_new so managed subclasses of FrameworkElement
33634         are possible.
33636         * uielement.h, uielement.cpp: same for this type.
33638 2007-07-13  Chris Toshok  <toshok@ximian.com>
33640         * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
33641         normally we'd only update the bounds of this element on a
33642         width/height change, but if the render transform is someplace
33643         other than (0,0), the transform needs to be updated as well.
33645 2007-07-12  Chris Toshok  <toshok@ximian.com>
33647         * runtime.h, runtime.cpp, uielement.cpp, uielement.h: Add mouse
33648         capturing.  This should be on Visual and not UIElement, but we
33649         don't dispatch events that way.
33651 2007-07-12  Chris Toshok  <toshok@ximian.com>
33653         * downloader.h, downloader.cpp: make the Downloader object a bit
33654         more C++ friendly, and make all the private data private.
33656         Also, take this opportunity to switch to using RegisterEvent/Emit
33657         to generate events, instead of the custom listeners.  This will
33658         let JS hook up to the events.
33660         * media.h, media.cpp: track the downloader changes.
33662 2007-07-11  Jackson Harper  <jackson@ximian.com>
33664         * collection.cpp: Comment out the namescope merging stuff for now,
33665         it causes some regressions.
33667 2007-07-12  Jackson Harper  <jackson@ximian.com>
33669         * xaml.cpp: Restart the whole attribute parsing loop when the
33670         reparse flag is set, otherwise the first attribute will be
33671         skipped.
33673 2007-07-11  Chris Toshok  <toshok@ximian.com>
33675         * uielement.cpp (UIElement::UIElement): the event names need to
33676         match those used by microsoft.  makes it easier to handle the
33677         event hooking up in the plugin, where the event names are used.
33679 2007-07-11  Chris Toshok  <toshok@ximian.com>
33681         * xaml.cpp (xaml_set_property_from_str): the plugin does its own
33682         resolution of properties now, so it doesn't need to pass the
33683         property name.  Change this to take the DependencyProperty*
33684         instead.
33686         * xaml.h: change prototype for xaml_set_property_from_str.
33688 2007-07-11  Jackson Harper  <jackson@ximian.com>
33690         * collection.cpp: When new objects are added to a collection, try
33691         to merge them into the containers namescope.
33693 2007-07-11  Jackson Harper  <jackson@ximian.com>
33695         * xaml.cpp: We need to stop parsing if there is an error while
33696         resolving a custom namespace type.
33698 2007-07-10  Chris Toshok  <toshok@ximian.com>
33700         * dependencyobject.cpp (resolve_property_path): we need to reset
33701         "expression_found" when we hit a '.' so that we'll lookup what
33702         comes after it.
33704 2007-07-10  Chris Toshok  <toshok@ximian.com>
33705         
33706         * dependencyobject.cpp (resolve_property_path): we need to be able
33707         to handle more than just single digit indexers.  use strtol and
33708         recompute 'i' afterward.
33710         * canvas.cpp (Canvas::InsideObject): revert the change that helped
33711         dr.popper because it breaks lunareclipse.
33713 2007-07-09  Chris Toshok  <toshok@ximian.com>
33715         * demo.cpp: don't pass the parser callbacks to the individual xaml
33716         functions.
33718         * control.h, control.cpp: don't pass the parser callbacks to
33719         initialize_from_xaml.
33721         * xaml.h, xaml.cpp: remove the parser callbacks from the
33722         individual parsing methods, and add xaml_set_parser_callbacks.
33724 2007-07-09  Jeffrey Stedfast  <fejj@novell.com>
33726         * mplayer.cpp (audio_loop): If we break out of the loop because
33727         the media player was stopped, don't forget to unlock the pause
33728         mutex.
33729         (Close): Don't free the uri here.
33730         (~MediaPlayer): Free it ehre, though.
33732 2007-07-09  Chris Toshok  <toshok@ximian.com>
33734         * uielement.h, uielement.cpp: we need to register the
33735         KeyUp/KeyDown events (even if we aren't emitting them) to keep
33736         from getting a warning when running aglayoutdemo.
33738         * xaml.cpp (timespan_from_str): port our System.TimeSpan.Parse
33739         method (and remove all error handling, which should likely go back
33740         in) and replace the previous implementation.  It was failing to
33741         parse timespans like this: 0:0:0.20000000 because it was treating
33742         it as if I wanted "20000000" tenths of a second, instead of 2.
33743         This makes the 'pop' animation in dr.popper actually show up.
33744         
33745 2007-07-09  Chris Toshok  <toshok@ximian.com>
33747         * animation.cpp: fix some missing NotifyAttacheesOfPropertyChange
33748         calls.
33749         (Storyboard::Begin): This is a dubious change.  Remove the check
33750         to see if we weren't already Active.  This fixes the calendar view
33751         in airlines, since there's a window where the start animation is
33752         startable when we enter a day, but the end animation isn't (since
33753         it's still active) when we leave.  So we're left with a selected
33754         day.
33756         * clock.cpp: instead of Stopping clocks that come to the end of
33757         their active period, move to the Filling state.  ClockGroups with
33758         automatic duration and no Active children still stop correctly.
33760 2007-07-08  Chris Toshok  <toshok@ximian.com>
33762         * many-files (again!): another, smaller change to the event stuff.
33763         stop using strings for everything that we can.  Register events at
33764         object construction time, and use those id's for everything else.
33765         The string interface is still around because of
33766         EventTrigger::Set/RemoveTarget, as well as the managed code.
33768         One further change that's needed - the id's are per-instance now,
33769         which is stupid.  they should be static.
33771         This further cuts down the work (in terms of hash functions) that
33772         needs to be performed in order to dispatch an event.
33773         
33774 2007-07-08  Chris Toshok  <toshok@ximian.com>
33776         * many-files: fairly big change.  Stick the EventObject class
33777         between Base and DependencyObject in the hierarchy, and get rid of
33778         DependencyObject's "events" field.  Get rid of all the registered
33779         events on surface, and emit them directly from the elements where
33780         they occur.  This allows us to remove the Surface* parameter to
33781         all the event methods.  Also, change the EventHandler signature to
33782         include the sender of the event as well as a "calldata" pointer,
33783         which is where we stuff the unmanaged MouseEventArgs (and later
33784         will the KeyboardEventArgs).
33786         Next step is to add RegisterEvent in EventObject and use that
33787         integer id everywhere instead of the string name when we Emit
33788         events.
33790 2007-07-07  Chris Toshok  <toshok@ximian.com>
33792         * dependencyobject.h: add GetName() instance method.
33794         * dependencyobject.cpp (dependency_object_get_name): and call it
33795         here.
33797         * shape.h, shape.cpp (Shape::GetSizeForBrush): we need this
33798         implementation here since FrameworkElement just goes by
33799         Width/Height.
33801         * canvas.cpp (Canvas::FindMouseOver): remove the "still over the
33802         same element" optimization.  it's stupid and doesn't work. what
33803         was i thinking?
33804         (Canvas::ComputeBounds): simplify this by using
33805         item->GetLayoutVisible instead of item->GetValue.
33806         (Canvas::Render): enable the rendering optimization where we only
33807         bother rendering elements whose bounds intersect those of the
33808         rectangle we're repainting.  This seriously speeds up airlines.
33810         * uielement.cpp, uielement.h: add GetLayoutVisible() method, and
33811         another flag.  now the three VisibilityProperty states are
33812         represented by two flags.
33814         Also, remove the implementation of GetSizeForBrush (not all
33815         UIElements are stroked) and warn callers.
33817         * control.cpp: Attach to the real object, and report back its
33818         property changes to our parents.  Also, control_initialize_from_xaml
33819         should call Control::InitializeFromXaml.
33821         * control.h: override the 3 Get*Visible methods from UIElement,
33822         and return our real_object's state.
33824         
33826 2007-07-07  Jeffrey Stedfast  <fejj@gnome.org>
33828         * demo.cpp (FileDownloadState::Send): Only notify complete if uri
33829         != NULL (if uri is NULL, then it means it couldn't be opened).
33830         (FileDownloadState::Open): notify error if we can't open the file.
33832         * mplayer.cpp: Fix to make sure we have
33833         AVCODEC_MAX_AUDIO_FRAME_SIZE bytes left in our output buffer
33834         before calling decode to prevent an ffmpeg warning.
33836 2007-07-07  Chris Toshok  <toshok@ximian.com>
33838         * brush.cpp: make sure to use GetSizeForBrush for everything
33839         instead of cairo_stroke_extents, which won't work for non-stroked
33840         elements like canvases.  Also, notify changes to the
33841         GradientStopCollection up the hierarchy properly.
33843         * frameworkelement.h, frameworkelement.cpp: add a GetSizeForBrush
33844         implementation for FrameworkElement so Canvases (and other
33845         uielement subclasses) can have brushes assigned to them (canvas
33846         uses it for its background.)
33848         * canvas.cpp (Canvas::Render): remove the unused label.
33850 2007-07-06  Miguel de Icaza  <miguel@novell.com>
33852         * media.cpp: Do not pass the filename as the result now on the
33853         calls.   Code must use the downloader_get_response_text or
33854         downloader_get_response_file to get the contents from the download
33855         (as the request will include the part name).
33857         * downloader.cpp: Add a cache for zip file parts.
33859         * media.h (Image): track the part name that was requested on the
33860         call to SetSource.
33862 2007-07-06  Chris Toshok  <toshok@ximian.com>
33864         * canvas.cpp (Canvas::ComputeBounds): if the width/height
33865         framework element properties haven't been set (their default is
33866         0.0), then don't union it with the rest of our bounds.
33868 2007-07-06  Chris Toshok  <toshok@ximian.com>
33870         * runtime.h, runtime.cpp: continue the marginalization of
33871         Surface-as-general-data-dumping-ground by passing the cairo
33872         context to all the event handlers that need it (all but Leave, but
33873         should we make this distinction?).
33874         
33875         Make tons of stuff private that doesn't need exposing.  Add
33876         accessors for the easier things, and leave the callbacks public
33877         for now.  Also clean up the partially C/partially c++
33878         implementation in runtime.cpp.  Now the C api is a thin wrapper
33879         around instance method calls, and all the gtk/clock event
33880         callbacks are static methods so they can still access the private
33881         data.
33883         * canvas.h, canvas.cpp, control.h, control.cpp, uielement.h,
33884         uielement.cpp: fallout from the event signature changes - add
33885         cairo_t* to a lot of places, basically.
33887         * demo.cpp: no need to use the C api for Surface here.  just use
33888         the c++ one.
33890 2007-07-06  Jeffrey Stedfast  <fejj@novell.com>
33892         * media.cpp (OnPropertyChanged): Oops, be consistant with other
33893         implementations - only chain up if it wasn't a property owned by
33894         us.
33896         * text.cpp: We don't use TextBlock::Inlines anymore, so remove it
33897         to save object size.
33899         * media.cpp (OnPropertyChanged): Fixed to always notify property
33900         listeners and chain up to our parent impl.
33902 2007-07-06  Miguel de Icaza  <miguel@novell.com>
33904         * downloader.cpp: Implement the zip file support for the
33905         downloader using miniZip, from:
33907                 http://www.winimage.com/zLibDll/minizip.html
33909         The implementation is in C++, so there are no needs to delegate
33910         this to the managed side as previously planned. 
33912         There are two APIs: one returns a filename, the other returns the
33913         file loaded into memory, with the size of the memory blob.
33915 2007-07-06  Chris Toshok  <toshok@ximian.com>
33917         * uielement.h, uielement.cpp (UIElement::OnPropertyChanged): keep
33918         track of the visibility (boolean, not three-state) and hit test
33919         visibility state in our flags.  implement GetVisible() and
33920         GetHitTestVisible() using the flags.
33922         * canvas.cpp (Canvas::CheckOver): use GetVisible and
33923         GetHitTestVisible to avoid property lookups when dispatching
33924         events.
33926 2007-07-06  Chris Toshok  <toshok@ximian.com>
33928         * runtime.cpp (measuring_context_create): we keep a singleton
33929         measuring context now.
33930         (measuring_context_destroy): do nothing here.  it's freed in
33931         runtime_shutdown.
33932         (runtime_shutdown): free up our measuring context.
33934         * canvas.cpp, canvas.h, control.cpp, control.h,
33935         frameworkelement.cpp, frameworkelement.h, shape.cpp, shape.h,
33936         text.cpp, text.h, uielement.cpp, uielement.h, visual.h: change
33937         InsideObject to take the cairo_t* instead of the Surface.
33938         
33939 2007-07-06  Chris Toshok  <toshok@ximian.com>
33941         * runtime.cpp (Surface::SetCursor): new method, used in the event
33942         code to update the cursor as we enter/leave elements.
33944         * runtime.h: add method, cursor_instance field, and move the body
33945         of the Surface ctor (and initializations) to the .cpp file.
33946         
33947         * xaml.cpp: fix name of Cursor property enum mapping.
33949         * canvas.h, canvas.cpp, uielement.h, uielement.cpp, control.h,
33950         control.cpp: add MouseCursor* arg to HandleMotion so we can report
33951         back cursor changes on elements.
33953         Also, in canvas.cpp, implement IsHitTestVisible checking in
33954         CheckOver.
33956         * enums.h: add the MouseCursor enum.
33957         
33958 2007-07-05  Chris Toshok  <toshok@ximian.com>
33960         * Makefile.am (libmooninclude_headers): remove cutil.h
33961         (libmoon_la_SOURCES): remove cutil.cpp
33963         * cutil.h, cutil.cpp: remove.  no longer necessary.
33965         * text.cpp (TextBlock::ComputeBounds): load the identity matrix
33966         before stroke/fill_extents to work around a cairo bug that was
33967         giving us enormous bounds on rotated elements.  also, -1 from x/y
33968         and +2 to width/height of our bounds.
33970         * media.cpp (MediaElement::ComputeBounds): load the identity
33971         matrix before stroke/fill_extents to work around a cairo bug that
33972         was giving us enormous bounds on rotated elements.  also, -1 from
33973         x/y and +2 to width/height of our bounds.
33974         (Image::ComputeBounds): same.
33976         * shape.cpp (Shape::DoDraw): only call cairo_new_path if there's
33977         no stroke, we drew it, and do_op was true.
33978         (Shape::ComputeBounds): load the identity matrix before
33979         stroke/fill_extents to work around a cairo bug that was giving us
33980         enormous bounds on rotated elements.  also, -1 from x/y and +2 to
33981         width/height of our bounds.
33983         * uielement.cpp (OnSubPropertyChanged): we don't need to watch for
33984         subproperty changes on RenderTransformOrigin, since it's a point
33985         and not a dependency object.
33987 2007-07-05  Chris Toshok  <toshok@ximian.com>
33989         * runtime.cpp, runtime.h: store the last mouse position of events
33990         so that we can continue to update after the clock tick (and
33991         provide motion/enter/leave events to elements that might have
33992         moved under the pointer).
33994         The "update-input" event isn't presently emitted (see clock.cpp)
33995         because it results in this code calling HandleMotion on every
33996         tick, which ends up emitting the C# event (which is wrong).
33998         * clock.h, clock.cpp: add a (presently unused) phase to the clock
33999         tick to update the current mouse over after we've updated our
34000         clocks (and therefore possibly updated the transforms on
34001         elements).
34003 2007-07-05  Chris Toshok  <toshok@ximian.com>
34005         * dependencyobject.cpp (dependency_object_get_name): change this
34006         to return the x:Name value if there is one (and "(null)" if not).
34007         (dependency_object_get_type_name): and make this function do the
34008         job originally done by _get_name.
34010         * dependencyobject.h: add dependency_object_get_type_name
34011         prototype.
34013 2007-07-05  Chris Toshok  <toshok@ximian.com>
34015         * uielement.h, uielement.cpp, canvas.h, canvas.cpp: refactor the
34016         mouse event code so that the Handle* calls return void, like the
34017         Enter/Leave calls do.  Also, all checks for "inside"-ness happen
34018         in the canvas/parent object.  Also factored out the loop over
34019         children to "FindMouseOver", with the checks happening in
34020         "CheckOver".
34022         This needs more testing to make sure that we're still emitting
34023         events in the right order/amount as silverlight.
34025         In uielement.cpp, also add support for showing the bounding
34026         rectangle.
34028         * control.h, control.cpp: track event refactoring.
34030         * frameworkelement.cpp (FrameworkElement::InsideObject): remove
34031         the bounding rect check.  that's handled in the parent object now.
34033 2007-07-04  Chris Toshok  <toshok@ximian.com>
34035         * media.cpp, media.h: rework our caching for images.  we now
34036         properly refcount things, don't leak the filename (or the
34037         surface), share 1 xlib surface amongst all Image's, and don't
34038         crash.  improvements all around!
34040 2007-07-04  Miguel de Icaza  <miguel@novell.com>
34042         * value.cpp (Value): Add a couple of extra cases I had missed
34043         where we should be using g_new instead of new as FreeValue always
34044         uses g_free.
34046 2007-07-03  Jackson Harper  <jackson@ximian.com>
34048         * xaml.cpp: Add the stylus types and some missing collections,
34049         this brings us up to sync with everything implemented in
34050         moonlight.
34052 2007-07-03  Chris Toshok  <toshok@ximian.com>
34054         * shape.cpp (Shape::DoDraw): if we aren't going to stroke (but we
34055         filled), we need to call cairo_new_path.
34057 2007-07-03  Jackson Harper  <jackson@ximian.com>
34059         * xaml.cpp: Some post parsing memory cleanup and a little extra
34060         debug code.
34062 2007-07-03  Chris Toshok  <toshok@ximian.com>
34064         * text.h: add prototype for text_block_set_font_source.
34066 2007-07-03  Chris Toshok  <toshok@ximian.com>
34068         * shape.cpp, shape.h: add Shape::OnSubPropertyChanged to deal with
34069         brush property changes.  Property chain up to
34070         Shape::OnSubPropertyChanged from Path::OnSubPropertyChanged.
34071         (Shape::ComputeBounds): we need to do the fill, so pass true as
34072         consider_fill to DoDraw.  otherwise a stroke-less filled shape
34073         gets bounds with w == h == 0.0.
34075 2007-07-03  Chris Toshok  <toshok@ximian.com>
34077         * collection.cpp (VisualCollection::Clear): force the invalidate
34078         when we update our bounds.  Also, don't do anything if the length
34079         of the collection is 0.
34081 2007-07-03  Chris Toshok  <toshok@ximian.com>
34083         * canvas.cpp (Canvas::ComputeBounds): we need to always include
34084         our FrameworkElement::Width/Height in our bounds computation,
34085         instead of only consulting them if we have no children.
34087 2007-07-03  Chris Toshok  <toshok@ximian.com>
34089         * media.cpp, media.h: add an image surface cache.  we don't cache
34090         the xlib surface unfortunately, so there's still a slowdown from
34091         generating 1 per Image for shared pixbufs.
34092         
34093 2007-07-03  Miguel de Icaza  <miguel@novell.com>
34095         * collection.cpp: Add support for reporting errors if the iterator
34096         gets out of sync with the collection.
34098         * demo.cpp: Updated to the new downloader interface.
34100         * downloader.cpp: Eliminates the in-memory buffer during
34101         download. 
34103         We still do the progressive updates as those are necessary for the
34104         progress indicators, and if we ever need to hook up during
34105         progressive downloads again.   
34107         But now downloads on completion must notify the downloader of the
34108         local file where the download contents have been placed (necesary
34109         for implementing the Zip-file support).
34111         (Downloader): eliminate our in-memory buffer byte_array_contents 
34113         (downloader_notify): takes a new extra argument, overloaded
34114         depended on the operation.
34115         
34116         (get_response_text): currently not implemented, it needs to be
34117         implemented by a callback into managed code so we can use ZipLib
34118         (unless we can find a suitable unmanaged version).
34120         * media.cpp: Remove the stale code for progressive image
34121         downloads. 
34122 2007-07-02  Miguel de Icaza  <miguel@novell.com>
34124         * media.cpp (SetSource): If we had a previous downloader, unref
34125         it.  
34127 2007-07-02  Chris Toshok  <toshok@ximian.com>
34129         * collection.cpp (VisualCollection::Remove): punt on the optimized
34130         behavior for now.  invalidating just the item should work if the
34131         item's bounds are correct, but for some reason the map path
34132         segments in the airline demo aren't redrawing properly.  So, for
34133         now we just invalidate the parent container when an item is
34134         removed.
34136         * control.h, control.cpp: override GetValue to report back values
34137         from our real_object if there is one, from us otherwise.  and
34138         override SetValue to set values both on us and the real_object if
34139         there is one.
34141         Also, do nothing in our ComputeBounds call.  Our GetBounds always
34142         returns the right thing (the bounds of the real_object), so
34143         there's no need to do any computation.
34145         lastly, remove the OnChildPropertyChanged. This is only invoked
34146         for attached properties, so we shouldn't ever be called.
34148 2007-07-02  Chris Toshok  <toshok@ximian.com>
34150         * canvas.cpp (Canvas::OnChildPropertyChanged): we don't need to
34151         updatebounds/invalidate here.  UpdateTransform will take care of
34152         that for us.
34154 2007-07-02  Chris Toshok  <toshok@ximian.com>
34156         * shape.cpp (Shape::OnPropertyChanged): turns out we need to
34157         update our bounds on the FillProperty changing as well, for shapes
34158         that aren't stroked.
34160 2007-07-02  Miguel de Icaza  <miguel@ximian.com>
34162         * collection.cpp: Guard for cases where we are not attached to
34163         anything (closure is set to NULL).
34165 2007-07-02  Chris Toshok  <toshok@ximian.com>
34167         * collection.cpp (collection_iterator_move_next): rework the logic
34168         here so we don't do the "current = next" assignment if
34169         iterator->first is true.
34170         (VisualCollection::Add): fix g++ warning.
34171         (TriggerCollection::SetVal): return the old element.
34173 2007-07-02  Jackson Harper  <jackson@ximian.com>
34175         * xaml.cpp: Convert char data into Runs and set them on
34176         TextBlocks, also flush the char data when starting elements, so
34177         things like: <TextBlock>line one<LineBreak />line two</TextBlock>
34178         work properly. <TextBlock><TextBlock.Inlines>text... is illegal
34179         though.
34181 2007-07-02  Miguel de Icaza  <miguel@novell.com>
34183         * value.cpp: Use g_malloc/g_free as the managed code is not able
34184         to use C++ new operator, so we have a potential error when we
34185         mismatch g_new with new and g_free with delete. 
34187         Reported by Valgrind.
34189         * uielement.cpp: Add new helper method needed by Alan.
34191 2007-07-01  Chris Toshok  <toshok@ximian.com>
34193         * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
34194         notify attachees here.
34196         * text.cpp (TextBlock::OnPropertyChanged): need to notify on
34197         Actual Width/Height property changes, even if we don't recalc
34198         anything.
34200 2007-07-01  Chris Toshok  <toshok@ximian.com>
34202         * panel.cpp (Panel::OnSubPropertyChanged): oops, didn't follow the
34203         guidelines here.  need to chain up to FrameworkElement.  fixes
34204         airline demo.
34206 2007-07-01  Chris Toshok  <toshok@ximian.com>
34208         * shape.cpp (Line::OnPropertyChanged): use recommended pattern.
34209         (Polygon::OnPropertyChanged): same.
34210         (Path::OnPropertyChanged): same.
34211         (Shape::OnPropertyChanged): same.
34212         (Rectangle::OnPropertyChanged): same.
34214         * geometry.cpp (GeometryGroup::OnPropertyChanged): use recommended
34215         pattern.
34216         (PathGeometry::OnPropertyChanged): same.
34217         (PathFigure::OnPropertyChanged): same.
34219         * brush.cpp (Brush::OnPropertyChanged): use the recommended
34220         pattern.
34221         (SolidColorBrush::OnPropertyChanged): same.
34222         (GradientBrush::OnPropertyChanged): same.
34223         (LinearGradientBrush::OnPropertyChanged): same.
34224         (RadialGradientBrush::OnPropertyChanged): new method.
34227         * brush.h: add RadialGradientBrush::OnPropertyChanged.
34229         * animation.cpp (animation_init): mark the storyboard TargetName
34230         and TargetProperty properties as attached.
34232         * text.cpp (Inline::OnPropertyChanged): follow recommended pattern
34233         for chaining.
34234         (Run::OnPropertyChanged): same.
34235         (Inline::OnSubPropertyChanged): add to handle the inline's
34236         foreground brush changing.
34238         * text.h: add Inline::OnSubPropertyChanged.
34240         * panel.h, panel.cpp: add OnSubPropertyChanged for the panel's
34241         background brush, and invalidate whenever it changes.
34243 2007-06-30  Chris Toshok  <toshok@ximian.com>
34245         * shape.cpp (Shape::OnPropertyChanged): when need to update our
34246         bounding rectangle when a number of the stroke properties change.
34247         Also update them when the stroke itself is changed.
34249 2007-06-29  Chris Toshok  <toshok@ximian.com>
34251         * text.cpp, text.h: Add back in TextBlock::OnSubPropertyChanged -
34252         we need it for the foreground property.  Make this explicit.
34253         also, add an OnSubPropertyChanged method for Glyphs, to handle the
34254         FillProperty.
34256 2007-06-29  Chris Toshok  <toshok@ximian.com>
34258         * uielement.cpp (UIElement::UpdateBounds): oops.  really only do
34259         that invalidate if the flag is true.
34261 2007-06-29  Chris Toshok  <toshok@ximian.com>
34263         * text.cpp: Do CalcActualWidtHeight on any property that might
34264         cause a change.  This is going to be a performance hit, but we
34265         need to take this step backward to get things working with the new
34266         ComputeBounds stuff.  we'll need to reoptimize this so that it
34267         still works.  Make sure to listen to OnCollectionChanged so we'll
34268         update our bounds (and recompute our actual width/height) on
34269         Inlines collection changes.
34271         * text.h: remove OnSubPropertyChanged (since it's not used.)  Add
34272         OnCollectionChanged.
34273         
34274 2007-06-29  Chris Toshok  <toshok@ximian.com>
34276         * uielement.cpp (UIElement::OnPropertyChanged): reformat this so I
34277         can actually read it, and notify attachees of our property
34278         changes.  this makes ZIndex setting resort the parent panels list.
34280         * uielement.h: add an arg to UpdateBounds (a bool that defaults to
34281         false) to force an invalidation of the new bounds.
34283 2007-06-29  Chris Toshok  <toshok@ximian.com>
34285         * panel.h, panel.cpp: okay, i'm stupid.  it's not
34286         OnChildPropertyChanged either.  it's OnCollectionChanged.  we
34287         seriously need to clean this stuff up.
34289 2007-06-29  Chris Toshok  <toshok@ximian.com>
34291         * panel.h, panel.cpp: child ZIndex property changes are reflected
34292         via OnChildPropertyChanged, not OnSubPropertyChanged.
34294 2007-06-28  Chris Toshok  <toshok@ximian.com>
34296         * canvas.cpp (Canvas::ComputeBounds): fix the debug printf's.
34298         * collection.cpp (VisualCollectoin::Clear): update the panel's
34299         bounds after the clear so we redraw everything.
34301 2007-06-27  Chris Toshok  <toshok@ximian.com>
34303         * uielement.h: stop using x1,y1,x2,y2 for bounds, use a Rect
34304         instead.  Also, rename getbounds to ComputeBounds(), and add a new
34305         GetBounds which returns the bounding rectangle.
34307         * canvas.cpp (Canvas::ComputeBounds): rename GetBounds to this.
34308         Simplify it a bit by using Rect's instead of the 4 doubles.  Note
34309         that the calls to item->GetBounds do *not* cause item's bounds to
34310         be computed.
34311         (Canvas::OnChildPropertyChanged): just call UpdateTransform on the
34312         child when its Left/Top properties change.
34313         (Canvas::HandleMotion): use Rect.PointInside to clean up the
34314         check.
34315         (Canvas::HandleButton): same.
34316         (Canvas::Render): remove the local "item_rect" and just use the
34317         item's bounds.
34319         * uielement.cpp (UIElement::UpdateBounds): remember the old
34320         bounds, compute the new bounds, and (if they're different)
34321         invalidate both and chain up to the parent's UpdateBounds method.
34322         (UIElement::UIElement): init the bounds.
34323         (UIElement::OnPropertyChanged): when switch away from a lot of the
34324         FullInvalidate calls.  If the clip or OpacityMask is changed, just
34325         Invalidate.  If the RenderTransform or RenderTransformOrigin is
34326         changed, called UpdateTransform.
34327         (UIElement::UpdateTransform): all UpdateBounds, since it's
34328         uncommon that our transform will change without our bounds
34329         changing..
34330         (UIElement::OnSubPropertyChanged): These shouldn't be necessary,
34331         but again switch away from FullInvalidate to other more targeted
34332         methods.  If the transform properties change, call
34333         UpdateTransform, for clip and OpacityMask just call Invalidate.
34334         (UIElement::Invalidate): add a Rect taking one that just
34335         invalidates the rect, and make the default variety call it with
34336         bounds as the arg.
34337         (UIElement::ComputeBounds): rename GetBounds().
34339         * shape.cpp (ComputeBounds): don't use GetSurface.  use a
34340         measuring cairo context.
34341         (Shape::OnPropertyChanged): if the Stretch property changed,
34342         UpdateBounds.  also, change from FullInvalidate to just Invalidate
34343         for everything.  Remove the UpdateTransform call as that gets
34344         handled by UIElement::OnPropetyChanged.
34345         (Rectangle::OnPropertyChanged): we only need to invalidate on a
34346         property change.
34347         (Polygon::OnPropertyChanged): if the Points property changes we
34348         need to UpdateBounds and force an Invalidate.  otherwise, just
34349         Invalidate.  no need for FullInvalidate always.
34350         (Polygon::OnCollectionChanged): new method.
34351         UpdateBounds+Invalidate to catch changes to the points collection.
34352         (Polyline::OnPropertyChanged): analogous changes as were made to
34353         Polygon::OnPropertyChanged.
34354         (Polyline::OnCollectionChanged): same as
34355         Polygon::OnCollectionChanged.
34357         * text.cpp (TextBlock::TextBlock): move the SetValue call to the
34358         end, past all the initialization of things that might be needed in
34359         ComputeBounds, which gets called.
34360         (TextBlock::ComputeBounds): don't use GetSurface.  use a measuring
34361         cairo context.
34362         (TextBlock::CalcActualWidthHeight): use a measuring context here.
34363         (TextBlock::OnPropertyChanged): remove unnecessary call to
34364         FrameworkElement::OnPropertyChanged from the end of the method.
34365         (Glyphs::ComputeBounds): return Rect (0,0,0,0).
34367         * media.cpp (MediaElement::ComputeBounds): don't use GetSurface.
34368         use a measuring context.
34369         (Image::ComputeBounds): same.
34370         (OnPropertyChanged): just Invalidate here, no need for
34371         FullInvalidate.
34372         (DownloaderEvent): just Invalidate here, not FullInvalidate.
34374         * frameworkelement.cpp (FrameworkElement::InsideObject): use
34375         Rect.PointInside.
34377         * control.cpp (Control::GetBounds): use a Rect here.
34378         (Control::ComputeBounds): forward on to the real_object.
34380         * collection.cpp (VisualCollection::VisualUpdate): when adding an
34381         element, we need to force its invalidation, but not the parent's.
34382         we just update the parent's bounds and UpdateBounds will do the
34383         invalidating if it needs to.
34385         * runtime.cpp (surface_attach): we don't need to do a full
34386         invalidate.  just update the bounds of the toplevel (which sets
34387         the width and height to the widget's) and force an invalidate
34388         (just in case the user set the width/height to exactly the same
34389         thing before attaching).
34390         (surface_size_allocate): same thing here - no need for
34391         FullInvalidate.  Just update the bounds.
34392         (measuring_context_create): create a tiny surface and a cairo_t
34393         for use in measuring things.
34394         (measuring_context_destroy): destroy the surface and cairo_t.
34396         * control.h, text.h, canvas.h, media.h, shape.h: GetBounds ->
34397         ComputeBounds.
34398         
34399 2007-06-28  Miguel de Icaza  <miguel@novell.com>
34401         * runtime.cpp (expose_event_callback): Introduce a new
34402         "transparent" field in the Surface.   If set, we clear the
34403         region with a transparent region.
34405 2007-06-27  Miguel de Icaza  <miguel@novell.com>
34407         * runtime.cpp: Event handlers will work with or without GdkWindows
34408         on the GtkWindows in preparation to support Larry later.
34410         Paint the surface with alpha transparency for now, this breaks the
34411         F-Spot embedding but will be fixed later when we can paint at an
34412         offset, wonder if this will affect performance for now.
34414         Call gtk_event_box_set_visible_window () with TRUE, so that we
34415         have a window, for now we require this to get the events working
34416         properly. 
34417         
34418         * canvas.cpp: Drop the translate transform on the topmost canvas
34419         as that was breaking all the code that depended on the inverse
34420         matrix transform to work for doing coordinate mapping based on the
34421         absolute_xform. 
34423         Instead we need to draw the cairo context at the given offset
34424         in the repaint routine.  This is left as an excercise for Larry. 
34426         Tests to validate that the mouse input is working:
34428                 * test/demo.exe: enter/leave
34429                 * surface demo
34430                 * silverlight airlines
34431                 * LunarEclipse designer.
34432         
34433         * value.cpp (FreeValue): New method that does the actual releasing
34434         of the value.   We do this here so the managed code can release
34435         things in the same way.
34437         (value_free_value): helper method.
34439 2007-06-27  Chris Toshok  <toshok@ximian.com>
34441         * clock.cpp (RaiseEnqueuedEvents): ref/unref the clocks around the
34442         calls to RaiseAccumulatedEvents.
34444 2007-06-27  Chris Toshok  <toshok@ximian.com>
34446         * clock.cpp (get_now): turns out we really do want this extra *10
34447         in there, so that it matches up with mono's TimeSpan.Tick values.
34449 2007-06-27  Chris Toshok  <toshok@ximian.com>
34451         * canvas.cpp (Canvas::GetBounds): Collapsed elements shouldn't
34452         take part in bounds computation.
34453         (Canvas::HandleButton): !Visible elements don't take part in hit
34454         testing.
34455         (Canvas::HandleMotion): same here.
34457 2007-06-27  Jackson Harper  <jackson@ximian.com>
34459         * xaml.cpp: Use Type to lookup the property owner, because it
34460         might be a "ghost" type that the xaml parser can't lookup.
34462 2007-06-27  Miguel de Icaza  <miguel@novell.com>
34464         * control.cpp: When handling events, we also need to pass the
34465         event notification to the control, not only to the "real_object"
34466         that we are proxying for.   This is what cause the calendar to
34467         malfunction. 
34469         * canvas.cpp (GetBounds): Do not use 0, 0, 0, 0 for the bounds of
34470         the canvas, instead use the point at (0,0) and the width, height
34471         with its absolute transformation.
34473         Otherwise canvases with children would end up with
34474         (0,0,0,0) and when compounded would extend the bounding box of
34475         containing ones to include this region even when not needed.
34477 2007-06-26  Chris Toshok  <toshok@ximian.com>
34479         * uielement.h: add virtual GetSurface() method.
34481         * uielement.cpp: implement UIElement::GetSurface to just chain up
34482         to the parent element if we have one, and return NULL otherwise.
34483         Also, make item_get_surface call this method.  removes the
34484         dependency on canvas.h from this file.
34486         * canvas.h: we override UIElement::GetSurface ()
34488         * canvas.cpp (Canvas::GetSurface): if we're the toplevel canvas,
34489         return our surface.  otherwise call our base class's GetSurface.
34491         * media.h: rename Image::GetSurface here to GetCairoSurface to
34492         avoid name collision.
34494         * brush.cpp, media.cpp: track media.h change.
34496 2007-06-26  Miguel de Icaza  <miguel@novell.com>
34498         * collection.h: Change of course.   The actual public interface
34499         implements IList<T> and ICollection<T> not IList nor ICollection
34500         which means that Add does not need to return an index, and Remove
34501         must return whether it actually removed the object.
34502         
34503         * collection.h (Add): Make this method return the index of the
34504         object just created, so we can implement int IList.Add(...).
34506         Removed all the empty Add/Remove methods from collections that
34507         were not doing anything interesting with them, the remaining
34508         chunks of old hacks.
34509         
34510         * (SetVal): This method is used to replace a value at a given
34511         index with another one.   For the C# IList.this [int] indexer.
34513 2007-06-26  Chris Toshok  <toshok@ximian.com>
34515         * clock.cpp: make a copy of the child clocks lists before
34516         traversing them calling callbacks that could result in the lists
34517         being modified.
34519 2007-06-26  Chris Toshok  <toshok@ximian.com>
34521         * dependencyobject.h: add OnCollectionChanged to allow
34522         propertychange notifications from elements in collections to
34523         bubble up to their parent.
34525         * collection.h: make the closure a DependencyObject*, just to be
34526         explicit.  also, add OnSubPropertyChanged to Collection so we can
34527         generate OnCollectionChanged notifications.
34529         * collection.cpp: hook things up on elements in collections, and
34530         generate proper notifications from the collection to its closure.
34532         * enums.h: add CollectionChangeType for use in
34533         OnCollectionChanged.
34535         * geometry.h, geometry.cpp, shape.h, shape.cpp: use the new
34536         collection notification stuff to bubble changes up the hierarchy.
34537         
34538 2007-06-26  Jeffrey Stedfast  <fejj@novell.com>
34540         * list.cpp (Replace): Added.
34542         * dependencyobject.cpp (dependency_object_get_value_no_default):
34543         New binding function.
34544         (dependency_object_get_object_type): Renamed from get_kind() which
34545         didn't mirror the native API at all.
34547 2007-06-26  Sebastien Pouliot  <sebastien@ximian.com>
34549         * geometry.cpp|h: Add missing PathSegment::OnPropertyChanged
34550         * shape.cpp: Remove debugging output.
34552 2007-06-26  Chris Toshok  <toshok@ximian.com>
34554         * uielement.h: change render/dorender to take a cairo_t* instead
34555         of a Surface*.
34557         * canvas.h, control.h, text.h, geometry.h, canvas.cpp,
34558         uielement.cpp, geometry.cpp, shape.cpp, media.h, shape.h,
34559         media.cpp, control.cpp, runtime.cpp, text.cpp: fallout from the
34560         above change.
34561         
34562 2007-06-25  Jeffrey Stedfast  <fejj@gnome.org>
34564         * brush.cpp (LinearGradientBrush::SetupBrush): Use
34565         uielement->get_size_for_brush() because the framework width/height
34566         might be 0.
34568         * text.cpp: Implement text wrapping and clipping to Width/Height
34569         bounds if specified.
34571 2007-06-25  Miguel de Icaza  <miguel@novell.com>
34573         * runtime.cpp: Cope with the fact that we are now windowless and
34574         we will be sharing the parent's window.   Fixes mouse events.
34576         * collection.cpp (collection_get_value_at, collection_count): Add
34577         new methods.
34579 2007-06-25  Jeffrey Stedfast  <fejj@novell.com>
34581         Mango-licious.
34583         * text.cpp: Rewritten to use the new MangoRenderer and
34584         MangoAttrForeground classes.
34586         * mango.cpp: New source file implementing a PangoRenderer and
34587         providing a new PangoAttribute for brushes.
34589 2007-06-25  Chris Toshok  <toshok@ximian.com>
34591         * runtime.h: add decl for Panel::OnSubPropertyChanged.
34593         * runtime.cpp (UIElement::OnPropertyChanged): handle changes to
34594         zIndex by invalidating the item's rectangle.
34595         (UIElement::OnSubPropertyChanged): add braces around all the if
34596         blocks for consistency.
34597         (Panel::OnSubPropertyChanged): if a child changes its z index we
34598         need to resort our visual collection.
34599         (Canvas::render): loop over the z sorted list of children instead
34600         of the default collection list.
34601         (item_init): just to be anal, cast the Zindex default value to
34602         gint32.
34604 x2007-06-25  Chris Toshok  <toshok@ximian.com>
34606         * collection.cpp: keep a z-sorted list in VisualCollection,
34607         adding/removing elements from it when needed, and clearing it when
34608         the collection is cleared.
34610         * collection.h: add a virtual clear method so VisualCollection can
34611         override it.  Also, add a z_sorted_list member to
34612         VisualCollection, so we can deal with the ZIndices of children.
34614 2007-06-24  Alan McGovern  <amcgovern@novell.com>
34616         * runtime.(cpp|h): Implemented UIElement.ZIndexPropery
34618 2007-06-24  Larry Ewing  <lewing@novell.com>
34620         * runtime.cpp: rework size allocation and make toplevel Canvas
34621         items read the allocation->x and allocation->y offsets from the
34622         surface widget when computing their position.
34624 2007-06-24  Chris Toshok  <toshok@ximian.com>
34626         * Makefile.am (libmooninclude_HEADERS): add collection.h
34627         (libmoon_la_SOURCES): add collection.cpp
34629         * collection.h, collection.cpp: new files.  split out Collection
34630         and all the collection-related code from runtime.h/runtime.cpp.
34631         arguably the collections specific to certain elements should exist
34632         completely in those .cpp/.h files, instead of here.
34634         * runtime.h, runtime.cpp: remove collection stuff.
34636         * clock.h, animation.h, transform.h: #include collection.h
34638         * value.h, value.h.in: #include <string.h> here so we can stop
34639         requiring it for everyone else.  really, though we should be using
34640         g_strcmp or something that's already pulled in from glib.
34641         
34642 2007-06-24  Chris Toshok  <toshok@ximian.com>
34644         * Makefile.am (libmoon_la_SOURCES): add array.cpp
34645         (libmooninclude_HEADERS): add array.h
34647         * xaml.cpp, value.cpp, shape.cpp, geometry.cpp: include array.h
34649         * array.h, array.cpp: new files, split them out from
34650         runtime.h/.cpp.
34652 2007-06-24  Chris Toshok  <toshok@ximian.com>
34654         * Makefile.am (libmooninclude_HEADERS): add xaml.h
34656         * xaml.h: split this out from...
34658         * runtime.h: ... here.
34660         * xaml.cpp, runtime.cpp, control.h, demo.cpp: #include xaml.h
34661         
34662 2007-06-24  Chris Toshok  <toshok@ximian.com>
34664         * Makefile.am (libmooninclude_HEADERS): add control.h
34666         * control.h: split out class Control stuff...
34668         * runtime.h: .. from here.
34670         * runtime.cpp: #include control.h
34672         * control.cpp: same.
34674 2007-06-24  Chris Toshok  <toshok@ximian.com>
34676         * runtime.h: add OnLoaded methods to UIElement, Panel, and
34677         Control.
34679         * runtime.cpp (UIElement::OnLoaded): emit the Loaded event if we
34680         haven't already.
34681         (VisualCollection::Add): only invoke OnLoaded on the item if the
34682         closure (the parent of the collection) has been loaded.
34683         (VisualCollection::Insert): same.
34684         (Panel::OnLoaded): call OnLoaded on all our children, then chain
34685         up.
34686         (surface_attach): call canvas->OnLoaded instead of
34687         emit_loaded_events(canvas).  also, don't use a special IS_CANVAS
34688         flag - just use the type system.
34689         (item_get_surface): get rid of the IS_CANVAS flag and just use the
34690         type system.
34692         * control.cpp (Control::OnLoaded): new method, invoke OnLoaded on
34693         the real object before chaining up.
34695 2007-06-24  Larry Ewing  <lewing@novell.com>
34697         * runtime.cpp: disable transparent surfaces while fixing the
34698         drawing offset problem.
34700 2007-06-24  Larry Ewing  <lewing@novell.com>
34702         * brush.cpp: use cairo_create_similar rather than using an image
34703         brush.
34705 2007-06-24  Chris Toshok  <toshok@ximian.com>
34707         * runtime.cpp (VisualCollection::Add): only emit Loaded if the
34708         tree we're adding it to has already been loaded.
34710 2007-06-24  Larry Ewing  <lewing@novell.com>
34712         * demo.cpp: add -trans flag to demo to make the toplevel transparent.
34714 2007-06-24  Larry Ewing  <lewing@novell.com>
34716         * runtime.cpp: add comments to the new gtk functions.
34718         * runtime.h: expose surface_paint.
34720 2007-06-23  Miguel de Icaza  <miguel@novell.com>
34722         * runtime.cpp: Since unrealize does not seem to be called when our
34723         widget is destroyed by Mozilla, we need to cleanup on destroy the
34724         tick event.   This takes care of one of the plugin crashers.
34726         There are still others that I have to find out, I added some
34727         debugging prints for now.
34729 2007-06-24  Larry Ewing  <lewing@novell.com>
34731         * runtime.cpp: derive from EventBox not drawing area so that we
34732         can use it as a quick method of switching back and forth between
34733         transparent and not.  Add a method to let external code paint to a
34734         cairo context.
34736 2007-06-23  Jeffrey Stedfast  <fejj@gnome.org>
34738         * text.cpp (SetValue): Overridden to enforce Text strings not
34739         preserving any leading nor trailing whitespace (as defined in the
34740         Silverlight docs).
34742 2007-06-22  Jeffrey Stedfast  <fejj@novell.com>
34744         * xaml.cpp (matrix_value_from_str): use delete[] to free the array
34745         of doubles instead of g_free() as it was allocated with new, not
34746         g_malloc().
34748         * text.cpp (Layout): D'oh, make sure to always init text/block
34749         width/height values. This fixes VideoBrush again.
34751 2007-06-22  Jeffrey Stedfast  <fejj@novell.com>
34753         * mplayer.cpp: Initialize 'opened' state variable.
34755         * text.cpp (GetValue): Override DependencyObject::GetValue() so
34756         that we can special-case getting TextBlock::Actual[Width,Height]
34757         properties (this allows us to prolong re-calculating these values
34758         until after the user has set the values he's going to set -
34759         re-calculating on ever property change is too expensive.
34761         * runtime.h: Make DependencyObject::GetValue() virtual.
34763 2007-06-22  Jeffrey Stedfast  <fejj@gnome.org>
34765         * text.cpp: Stubbed out the required virtual methods for Glyphs
34766         and attempted to make ActualWidth and ActualHeight calculated
34767         immediately in an attempt to get DrPopper working better.
34769 2007-06-22  Sebastien Pouliot  <sebastien@ximian.com>
34771         * shape.cpp: Small hack to avoid calling Draw 2 times during render.
34773 2007-06-22  Chris Toshok  <toshok@ximian.com>
34775         * xaml.cpp (key_spline_from_str): free up the point arrays from
34776         point_array_from_str after we use them.
34777         (xaml_set_property_from_str): same.
34779 2007-06-22  Chris Toshok  <toshok@ximian.com>
34781         * value.cpp (Value): the copy ctor is definitely corrupting memory
34782         in the MATRIX case - we need to allocate the destination matrix.
34784 2007-06-21  Chris Toshok  <toshok@ximian.com>
34786         * Makefile.am: not that anyone should be installing this yet,
34787         install the headers to $(includedir)/libmoon.
34789 2007-06-21  Jeffrey Stedfast  <fejj@novell.com>
34791         * text.cpp: Reworked text layout/rendering logic - we now cache
34792         width/height info for each text string as well as the overall
34793         block width/height. This info is then used to align text strings
34794         on each line along the bottom edge (rather than along the top
34795         edge) of the line of text.
34797         * xaml.cpp (char_data_handler): Ignore insignificant lwsp CDATA
34799 2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34801         * stylus.h|cpp: Add InkPresenter.
34802         * media.h|cpp: Add C methods to stop, pause and play a MediaElement.
34803         * value.h, type.h|cpp: Updated.
34805 2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34807         * animation.cpp: Register *KeyFrame::Value properties as nullable.
34808         * clock.cpp: Register TimelineMarker properties.
34810 2007-06-21  Jackson Harper  <jackson@ximian.com>
34812         * xaml.cpp: When setting the x:Name also set the name property.
34814 2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34816         * stylus.cpp|h: Added Stroke and DrawingAttributes.
34817         * runtime.h: All collections can now implement GetElementType.
34818         * value.h, type.h, type.cpp: Updated.
34819         
34820 2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34822         * stylus.cpp|h: Added.
34823         * runtime.cpp|h: Define and call stylus_init.
34824         * Makefile.am: Add stylus.cpp|h.
34825         * value.h, type.h, type.cpp: Updated.
34827 2007-06-21  Jackson Harper  <jackson@ximian.com>
34829         * xaml.cpp: Add a global set of callbacks, so that all of the
34830         custom callbacks for a given parsing instance use the same
34831         methods.  This needs to be encapsulated properly, but for now is
34832         fine.
34834 2007-06-20  Chris Toshok  <toshok@ximian.com>
34836         * animation.cpp, animation.h: KeyFrameCollection overrides
34837         Collection::Clear to clear its sorted list.
34839         * runtime.cpp, runtime.h: add overrideable Collection::Clear
34840         method, and move collection_clear's body into it.
34842 2007-06-21  Jackson Harper  <jackson@ximian.com>
34844         * runtime.cpp|h: Don't return false on single element collections
34845         on the first item.
34847 2007-06-21  Jeffrey Stedfast  <fejj@gnome.org>
34849         * text.cpp: Use absolute font sizes, makes the fonts not so huge.
34851 2007-06-20  Jackson Harper  <jackson@ximian.com>
34853         * xaml.cpp: Set namecopes earlier, and make sure to copy the
34854         namescope when we recreate a class using x:Class.
34855         - When we use x:Class reparse the element's attributes, so it can
34856         hook up to events and set properties.
34857         * runtime.cpp|h: When the Name property is set, register it with
34858         the proper NameScope.
34859         
34860 2007-06-20  Chris Toshok  <toshok@ximian.com>
34862         * runtime.cpp, runtime.h: add rudimentary Visibility support.  we
34863         only support Visible/Hidden really, and treat Collapsed as Hidden.
34865         * xaml.cpp (enum_from_str): use g_strcasecmp here.
34867 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com> 
34869         * shape.cpp|h: Implement caching of Path (this could be extended to
34870         all shapes).
34871         * geometry.cpp|h: Notify on changes.
34873 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com>
34875         * xaml.cpp: Don't allocate (and free) a copy of the PML before 
34876         calling geometry_from_str.
34878 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com> 
34880         * shape.cpp: Fix some Stretch modes for paths. This can get very
34881         expansive, next step is to cache the cairo_path_t* in the Path and
34882         recompute it only on changes.
34884 2007-06-20  Chris Toshok  <toshok@ximian.com>
34886         * xaml.cpp (is_valid_event_name): new function.
34887         (dependency_object_hookup_event): only allow valid events to be
34888         hooked up.
34890 2007-06-20  Jackson Harper  <jackson@ximian.com>
34892         * runtime.cpp|h: New method for finding an objects namescope.
34893         - Call an objects loaded event when it is added to a Collection
34894         - Some bits of namescope merging, these functions aren't called
34895         yet though.
34897 2007-06-20  Chris Toshok  <toshok@ximian.com>
34899         * xaml.cpp (dependency_object_hookup_event): we need more than
34900         just the Loaded event.
34902 2007-06-20  Jeffrey Stedfast  <fejj@novell.com>
34904         * text.cpp (Run): Don't set default font values here... we need
34905         them to be unset if they aren't explicitly set by the user so that
34906         we can inherit font properties from our parent TextBlock.
34907         (Draw): Fixed to make Runs inherit unset font properties from the
34908         TextBlock at render-time. Also fixed to make sure we have a
34909         foreground brush to draw with... if unset, use the default brush.
34911 2007-06-20  Chris Toshok  <toshok@ximian.com>
34913         * runtime.cpp (UIElement::render): make this print the classname
34914         like UIElement::getbounds() does.
34916         * runtime.h, runtime.cpp: make control_initialize_from_xaml take
34917         the xaml parser custom element callbacks.
34919 2007-06-20  Chris Toshok  <toshok@ximian.com>
34921         * runtime.cpp (runtime_shutdown): set inited to false, since we
34922         want people to be able to call runtime_init again after this.
34924         * type.cpp.in (Type::RegisterType): allocate types if we need to.
34925         (Type::Shutdown): free types.
34927         * type.h.in (private): make the types array dynamically allocated.
34929         * type.h, type.cpp: sync
34931 2007-06-20  Jeffrey Stedfast  <fejj@novell.com>
34933         * text.cpp (TextBlock): Need to actually set ActualWidth and
34934         ActualHeight values.
34936 2007-06-20  Chris Toshok  <toshok@ximian.com>
34938         * clock.cpp (Clock::Tick): if we hit our natural duration but our
34939         duration is Automatic, go to Fill mode, since we may have child
34940         clocks that started after us and need a chance to run their last
34941         tick.
34943 2007-06-20  Jeffrey Stedfast  <fejj@novell.com>
34945         * runtime.cpp (collection_iterator_move_next): If we can't iterate
34946         to the next item, don't set current = NULL.
34947         (dependency_object_get_name): New function needed for the binding.
34949 2007-06-20  Larry Ewing  <lewing@novell.com>
34951         * runtime.cpp: use gdk_cairo helper functions and clip to the
34952         expose event region.
34954         * runtime.h: remove unused members.
34956         * media.cpp: use cairo_get_target rather than keeping track of
34957         pixmap.
34959 2007-06-20  Jackson Harper  <jackson@ximian.com>
34961         * xaml.cpp/runtime.h: Add one more callback, this one will hookup
34962         events to methods. So things like Loaded=CanvasLoaded will work.
34963         * demo.cpp:
34964         * control.cpp:
34965         
34966 2007-06-20  Jackson Harper  <jackson@ximian.com>
34968         * xaml.cpp: More verbose debug output with namespace lookup
34969         errors.
34970         - Map in the default namespaces if we are unable to lookup the
34971         proper namespace name.
34973 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com> 
34975         * shape.cpp: Call cairo_[stroke|fill]_extents inside Shape::getbounds
34976         or the mouse moving won't work.
34978 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com>
34980         * shape.cpp: Fix Shape::getbounds to work even if no stroke brush is
34981         assigned, in that case we get the extents of the fill.
34983 2007-06-20  Chris Toshok  <toshok@ximian.com>
34985         * animation.cpp: um.. "oops".
34987         * xaml.cpp (xaml_init): enable the parsing of the color/point
34988         spline key frames.
34990 2007-06-20  Chris Toshok  <toshok@ximian.com>
34992         * animation.cpp: guard against division by zero in the double
34993         keyframe GetCurrentValue method.  I'll fix this method up some
34994         more and then report it to the other animation types.
34996         Also, add the Spline(Color,Point)KeyFrames.
34998         * clock.cpp, clock.h: fixes to get all this working again while
34999         still supporting the needed things from the last patch (like
35000         BeginTime.)
35002         * transform.cpp (GetTransform): i hate like hell to have to do
35003         this, but if we scale by 0.0 cairo can't invert the matrix and
35004         then everything goes belly up.  0.00002 is the smallest number I
35005         found (0.00001 doesn't work, for instance) where cairo doesn't
35006         complain about the inverse stuff.
35008         * media.cpp (media_element_set_buffering_time): we have to use the
35009         hacky Value ctor here.
35010         (media_element_set_position): and here.
35012         * runtime.cpp (emit_loaded_events): new function to walk the tree
35013         and emit loaded events.
35014         (surface_attach): call emit_loaded_events here - the docs specify
35015         that Loaded is emitted after it's associated with the host but
35016         before it's rendered.
35017         (Canvas::render): don't emit Loaded here.
35018         (runtime_init): output a nice message here if you run cairo
35019         against a verion of cairo that you shouldn't be using.
35021         * type.h, type.cpp, value.h: resync.
35023 2007-06-20  Jackson Harper  <jackson@ximian.com>
35025         * xaml.cpp: Improve the way we handle x:Class attributes failing
35026         to load.
35028 2007-06-20  Jackson Harper  <jackson@ximian.com>
35030         * xaml.cpp: Hookup attached properties in the property_from_str
35031         method.
35033 2007-06-19  Chris Toshok  <toshok@ximian.com>
35035         * media.cpp (media_element_get_buffering_time): use AsTimeSpan().
35036         (media_element_get_position): same.
35037         (media_init): mark BufferingTime and Position as TimeSpan's.
35039 2007-06-19  Chris Toshok  <toshok@ximian.com>
35041         * clock.cpp, clock.h: bad time for a a rearchitecting, perhaps,
35042         but this was necessary to get BeginTime's to be supported.  It
35043         reintroduces the "popping" in the surface demo, though, and
35044         honestly I'm unsure how we can ever guarantee that enough ticks
35045         will have occured to be sure we won't see the initial state of the
35046         surface objects.
35048         * animation.cpp: track clock api changes.
35050         * runtime.h: decl for FramworkElement::OnPropertyChanged.
35051         
35052         * runtime.cpp (EventObject::Emit): make a copy of the list before
35053         we start emitting, to keep us crashing if the list is modified
35054         while we're traversing it.
35055         (FramworkElement::OnPropertyChanged): invalidate on width/height
35056         changes.
35058         * xaml.cpp: when parsing a TIMESPAN property, use
35059         timespan_from_str.  This fixes the parsing of BeginTime
35060         attributes.
35062         * type.cpp.in: register TIMESPAN.
35064         * value.h.in: add a AsTimeSpan method, and special hacky
35065         constructor so the parser can construct a value of type TIMESPAN
35066         (which is problematic since it's typedef'ed to gint64.)  Move the
35067         TimeSpan typedef here.
35069         * value.cpp: add the impl for that hacky ctor.
35070         
35071         * type.h.in: add a TIMESPAN kind.
35073         * type.h, value.h, type.cpp: sync.
35075 2007-06-19  Jackson Harper  <jackson@ximian.com>
35077         * xaml.cpp: we need to new the points.
35079 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
35081         * geometry.cpp: Add safety to ensure the number of points are 
35082         valid before iterating on them.
35084 2007-06-19  Jackson Harper  <jackson@ximian.com>
35086         * xaml.cpp: make sure to get all the points.
35087         - sneak peek at the exciting new attached property setting code.
35088         - improve error message
35089         - dont step off the end of the string when the trailing characters
35090         are white space.
35092 2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
35094         * *.cpp: Updated to use the new List type.
35096         * runtime.cpp|h (Collection): Modified to use List instead of
35097         GList which made some code simpler, we get to take advantage of
35098         destructors, woo!
35100         * demo.cpp (main): Removed surface_destroy() and
35101         runtime_shutdown() out of the delete_event callback (gtk timeouts
35102         could still fire after the gtk_main_quit() call it seems).
35104 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com>
35106         * runtime.cpp: Enforce UIElement::ClipProperty when rendering
35107         Canvas
35109 2007-06-19  Jackson Harper  <jackson@ximian.com>
35111         * xaml.cpp: Content properties can be inherited.
35113 2007-06-19  Jackson Harper  <jackson@ximian.com>
35115         * xaml.cpp: Make sure that we have a previous figure.
35117 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
35119         * geometry.cpp|h: Revert previous changes. That didn't work well
35120         with groups/collections.
35121         * shape.cpp: Path::Draw now process the path (find and susbtract
35122         origin) when Stretch requires it.
35124 2007-06-19  Jackson Harper  <jackson@ximian.com>
35126         * xaml.cpp: Set the namescope right away, so FindName will work in
35127         element constructors.
35129 2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
35131         * animation.cpp: Switched to use List instead of GList.
35133 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
35135         * geometry.cpp|h: Change API so the Strech value is propagated from
35136         the shape to all the geometry figures. Fixed Stretch for LineGeometry,
35137         EllipseGeometry and RectangleGeometry.
35138         * shape.cpp: Path::Draw now supply the Stretch property value to
35139         all Geometry objects drawing methods.
35141 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
35143         * shape.cpp: Don't call cairo_new_path inside moon_ellipse. It's
35144         the caller responsbility to do so, if required (e.g. it isn't for
35145         geometry stuff).
35147 2007-06-19  Jackson Harper  <jackson@ximian.com>
35149         * xaml.cpp: Implement all the optional points on path markup.
35151 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
35153         * shape.cpp: Fix Stretch for Polyline and Polygon.
35155 2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
35157         * xaml.cpp: Updated to use a real linked list implementation.. for
35158         added uberness. Also reduces memory leakage.
35160         * mplayer.cpp: Stubbed out a few more things and can now return
35161         the video duration.
35163 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
35165         * shape.cpp|h: Set Shape::Stretch default to None and set Stretch
35166         property to fill inside Rectangle and Ellipse ctors.
35168 2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
35170         * runtime.cpp (Insert): Make this use SharedAdd too, which I
35171         presume was the whole point.
35173 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
35175         * shape.cpp: Fix Strech support for Rectangle (it behave more like
35176         Ellipse but that shows only with non squares).
35178 2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
35180         * mplayer.cpp (audio_loop): Fixed muting to advance the correct
35181         number of pts and not hang forever in a g_usleep() (gah, the timer
35182         was a huge negative value).
35184 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35186         * clock.h: Added TimelineMarker.
35187         * type.h, type.cpp, value.h: Updated.
35189 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
35191         * shape.h: Fix filling for Polyline. MS supports filling polylines,
35192         even unclosed ones.
35194 2007-06-19  Chris Toshok  <toshok@ximian.com>
35196         * runtime.cpp (surface_realloc): make sure to reassign s->cairo to
35197         s->cairo_xlib after recreating the xlib stuff.  avoids a crash
35198         when resizing surfaces.
35200 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
35202         * shape.cpp: Add Strech support for Ellipse.
35204 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com>
35206         * shape.cpp: Add Strech support for Rectangle (only None is different).
35207         Add comments to Line as Stretch doesn't apply for this Shape.
35209 2007-06-19  Miguel de Icaza  <miguel@novell.com>
35211         * runtime.cpp (Collection): Add new Insert method, and update all
35212         the callers that overwrote it.   We probably need to cleanup
35213         everything that is doing virtual overrides and is a no-op 
35215 2007-06-19  Chris Toshok  <toshok@ximian.com>
35217         * runtime.cpp (clear_drawing_area): this method doesn't need to
35218         clean up the xlib cairo context/surface and the pixmap.
35220         There are two possibilities:
35222         1) the drawing area has been realized, which means we have xlib
35223         surface/context + pixmap.  We're guaranteed to hit
35224         unrealized_callback before this method is called, so they will
35225         have already been freed.
35227         2) the drawing area has not been realized, which means we have no
35228         xlib surface/context + pixmap, and this method doesn't need to do
35229         anything.
35231 2007-06-19  Jackson Harper  <jackson@ximian.com>
35233         * runtime.h/shape.cpp: Fix typo.
35235 2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
35237         * text.cpp (Run::OnPropertyChanged): Always chain up to our parent
35238         implementation and if one of our properties changed, notify our
35239         attachees.
35240         (Inline::OnPropertyChanged): Same.
35241         (TextBlock::OnPropertyChanged): Keep track of Inlines changes.
35242         (TextBlock::Draw): Use our foreground brush directly and the same
35243         for run's foreground brush.
35245 2007-06-19  Miguel de Icaza  <miguel@novell.com>
35247         * runtime.cpp: Implement collection iterators.
35249 2007-06-19  Chris Toshok  <toshok@ximian.com>
35251         * xaml.cpp (timespan_from_str): don't walk off the end of the
35252         string.
35254 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35256         * animation.h|cpp: Remove pureness from KeyFrame::InterpolateValue.
35258 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35260         * animation.h|cpp: Add *_key_frame_new.
35262 2007-06-19  Jackson Harper  <jackson@ximian.com>
35264         * xaml.cpp\runtime.h: Add a public function for setting
35265         properties, from strings.  Basically a copy and paste of my
35266         set_attributes code.  Eventually I should be able to merge the
35267         two, but they use different name lookup mechanisms right now.
35269 2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
35271         * animation.cpp (Remove): Remove the KeyFrame from the sorted list
35272         before removing it from the collection (since it may be freed by
35273         Collection::Remove).
35275 2007-06-19  Miguel de Icaza  <miguel@novell.com>
35277         * runtime.cpp: Add support for notifying the consumer that the
35278         surface has resized.
35280         Add support for resizing objects.
35282 2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
35284         * brush.cpp (~VideoBrush): We want to detach from the media
35285         element, not ourselves. Doh.
35287 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com>
35289         * shape.h: Update comments about which shapes needs, or not, to 
35290         provide a getxformorigin method.
35292 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35294         * media.h|cpp: Add media_base_new.
35296 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35298         * value.cpp|h|in: Inline the non-DependencyObject
35299         As* functions as well.
35301 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35302         
35303         * typegen.cs: Removed some dead code.
35304         * value.cpp.in: Deleted, not needed anymore.
35305         * runtime.cpp, value.cpp, type.cpp.in: Moved 
35306         implementation of Value and Type into their own files.
35307         * type.cpp: Updated.
35309 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35311         * type.h, type.h.in: Created, moved declaration of Type here.
35312         * *.h|cpp|in: Move Value:Kind to Type::Kind and update all
35313         references. Move the Value::As* into the header.
35314         * typegen.cs: Updated to cope with Kind changes.
35316 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35318         * runtime.cpp|h, value.h.in: Remove current nullable code,
35319         it's easier to store an is_nullable flag in the registered
35320         property, and store NULL values in the objects hashtable.
35321         * xaml.cpp: Revert unnecessary fixes.
35322         * value.h: Updated.
35324 2007-06-19  Chris Toshok  <toshok@ximian.com>
35326         * runtime.h: get rid of the specialized surface callbacks for
35327         mouse events.  we can dispatch them directly to the UIElements.
35328         Change the EventObject signatures to permit an event/call data as
35329         well as the closure.  add the sender object for kicks while we're
35330         at it.
35332         * runtime.cpp: dispatch element events through the
35333         DependencyObject's events object.
35335         * animation.h, animation.cpp: update signatures for event
35336         handlers.
35338         * control.cpp (handle_button): track signature change.
35340         * clock.cpp: same.
35342 2007-06-18  Chris Toshok  <toshok@ximian.com>
35344         * clock.cpp (TimeManager::Tick): add a lot of timing foo.
35345         (ClockGroup::RaiseAccumulatedEvents): raise the Completed event if
35346         we switching to the stopped state and our progress is 1.0 (that
35347         is, if we've finished).
35349         * animation.h, animation.cpp (Storyboard::Begin): rather heavy
35350         handed (but bulletproof) approach to making Begin work on a
35351         storyboard that has run its course - destroy the clock hierarchy
35352         and recreate it.  Also, add a handler for the ClockGroup's
35353         "Completed" event so we can reflect that back to managed land.
35355         * runtime.h: add C functions to add/remove handlers from the
35356         EventObject inside a dep object.
35358 2007-06-18  Jackson Harper  <jackson@ximian.com>
35360         * xaml.cpp: Set text context properties from char data.  This
35361         allows you to do things like <Run>Hi I am some text</Run>.  As far
35362         as I can tell, Run is the only element that allows this.
35364 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
35366         * shape.cpp|h: Fix Line and Ellipse getxformorigin.
35368 2007-06-18  Jackson Harper  <jackson@ximian.com>
35370         * xaml.cpp: Now implement the smooth beziers correctly, much
35371         thanks to spouliot for figuring out the formula to reflect control
35372         points.
35374 2007-06-18  Chris Toshok  <toshok@ximian.com>
35376         * clock.h, clock.cpp: ifdef some debug spew, add a bitmask for
35377         what the timemanager should do on a given tick, and add some
35378         #defines/logic to calculate the gtk delay from the desired
35379         framerate.  Set the desired framerate to 20fps.
35381 2007-06-18  Jeffrey Stedfast  <fejj@novell.com>
35383         Instead of attaching to Brush::ChangedProperty, connect to NULL.
35385         * media.cpp (render): If the width/height are 0.0, then use the
35386         video's natural width/height.
35387         (OnPropertyChanged): chain up.
35389         * shape.cpp (OnPropertyChanged): Always chain up to our parent.
35391 2007-06-18  Chris Toshok  <toshok@ximian.com>
35393         * xaml.cpp (dependency_object_set_attributes): suggestion by rolf.
35394         fixes setting of nullable property values.
35396 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35398         * runtime.cpp: Store NULL again in the property hashtable,
35399         but use the lookup_extended function to detect this and return
35400         a correct NULL value instead of the default value.
35402 2007-06-18  Chris Toshok  <toshok@ximian.com>
35404         * runtime.cpp (RemoveHandler): more cleanups.
35406 2007-06-18  Chris Toshok  <toshok@ximian.com>
35408         * runtime.cpp (RemoveHandler): g_free'ing a new'ed c++ object =
35409         bad.
35411 2007-06-18  Jackson Harper  <jackson@ximian.com>
35413         * xaml.cpp: Implement path closing and ArcSegments.
35415 2007-06-18  Miguel de Icaza  <miguel@novell.com>
35417         * runtime.cpp (SetValue): This looks painful, now
35418         DependencyObjects are stored inside the hash but they might
35419         contain a NULL.   This seems bad.
35420         
35421         (Value): Do not delete null dependency objects.
35423         Remove this patch, and try demo.exe, enter/leave/enter, this
35424         crashes now, because the leave sets the fill to "null" and the
35425         enter then tries to access it
35427 2007-06-18  Jeffrey Stedfast  <fejj@novell.com>
35429         * brush.cpp: Do proper OnPropertyChanged proagation.
35430         (ImageBrush::OnPropertyChanged): Notify using the generic
35431         Brush::ChangedProperty.
35432         (VideoBrush::OnPropertyChanged): Same.
35433         (VideoBrush::OnSubPropertyChanged): Same.
35435         * shape.cpp (Shape): Need to keep track of our stroke/fill brushes
35436         so we can listen for change notification.
35438         * runtime.cpp (UIElement): Same.
35439         (Panel): Here too.
35441         * text.cpp (TextBlock): Same here (need to do it for Inlines too
35442         at some point).
35444         * media.cpp (media_base_new): Removed, you can't instantiate a
35445         MediaBase.
35446         (advance_frame): Optimization hack: don't invalidate if our
35447         opacity is 0.
35448         (MediaElement::render): Respect opacity and stretch properties.
35450 2007-06-18  Jackson Harper  <jackson@ximian.com>
35452         * xaml.cpp: We need to create new figures if we get a Move
35453         command.
35455 2007-06-18  Chris Toshok  <toshok@ximian.com>
35457         * demo.cpp: use TimeManager::AddTickCall for the async file
35458         loading.  This makes the image visible immediately for me, instead
35459         of requiring the animations be paused to see it.
35461         * clock.cpp, clock.h: add a one-shot "tick call" idle handler of
35462         sorts to TimeManager.  This way we can better control when the
35463         cross thread downloader calls happen, and keep them from affecting
35464         the frame rate, and also keep them from being starved by an
35465         overzealous demo.cpp.
35467 2007-06-18  Chris Toshok  <toshok@ximian.com>
35469         * runtime.cpp (unrealized_callback): remove the render handler.
35470         (realized_callback): attach the render handler.
35471         (render_surface): a very simple render handler.  We just force gtk
35472         to process all pending updates.
35474         * clock.cpp (TimeManager::Tick): as a temporary hack, have
35475         TimeManager emit the "render" event after every animation tick.
35476         We should add tuning to this method to achieve usable framerates
35477         without killing the cpu.
35479         * clock.h: make TimeManager subclass from EventObject so we can
35480         hook up to events on it.
35482 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
35484         * shape.cpp: getbounds gets bad results if stroke (or fill) isn't 
35485         called. We create a new path so the bounds, for an invisible object,
35486         will be empty.
35488 2007-06-18  Chris Toshok  <toshok@ximian.com>
35490         * clock.cpp (Clock::TimeUpdated): return immediately if we're stopped.
35492 2007-06-18  Jackson Harper  <jackson@ximian.com>
35494         * xaml.cpp: Fix smooth quadratic bezier's.
35496 2007-06-18  Chris Toshok  <toshok@ximian.com>
35498         * media.cpp, media.h (Image::render): on our first rendering,
35499         convert to using an xlib surface to speed up future redraws.
35501 2007-06-18  Chris Toshok  <toshok@ximian.com>
35503         * runtime.cpp (UIElement::dorender): add this, and make everything
35504         that calls ->render call ->dorender.
35506         * control.cpp (render): call dorender on the realobject.
35508         * runtime.h: add STARTTIMER/ENDTIMER macros, and add
35509         UIElement::dorender which can be used to wrap render calls with
35510         debug info (in this case timer info.)
35512         * clock.h: add prototype for get_now().
35514         * clock.cpp (get_now): make this public, so we can use it for
35515         timers.
35517 2007-06-18  Jackson Harper  <jackson@ximian.com>
35519         * xaml.cpp: Implement Path Geometry parsing.
35521 2007-06-18  Jeffrey Stedfast  <fejj@novell.com>
35523         * brush.cpp (VideoBrush::SetupBrush): Get a reference to the
35524         MediaElement if we don't already have one.
35525         (VideoBrush::OnPropertyChanged): SourceName does not refer to a
35526         uri, instead SourceName refers to a MediaElement.
35528         * media.cpp: Implemented some more helper "setters", defaulted
35529         some more MediaElement property values to correct values, and
35530         implemented updating of both the CurrentState property and the
35531         PositionProperty.
35533         * mplayer.cpp (Position): Implemented.
35535 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
35537         * media.cpp: Close the path after rendering the image.
35538         * shape.cpp: Avoid the filling operation in calls to getbounds. Also
35539         open and close a path before drawing normal (square) rectangles.
35541 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35543         * runtime.h|cpp: Add DependencyObject::RegisterNullable. Add a few
35544         C-style methods to access Type and DependencyProperty fields.
35545         In Type::IsSubclassOf don't take into account nullability.
35546         * animation.cpp, clock.cpp: Register nullable properties as such.
35548 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35550         * media.h|cpp: Add media_base_new.
35552 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35554         * value.h.in: Make checked_get_subclass handle null values. Include the
35555         Kind::*Null* values in the C# Kind.cs, and change their values to fit
35556         in a signed int.
35557         * value.h: Updated.
35559 2007-06-18  Miguel de Icaza  <miguel@novell.com>
35561         * media.cpp (DownloaderEvent): If the Width/Height have not been
35562         set explicitly, provide them from the images (demo works, but it
35563         takes a while, due to the idle handler being too busy to be
35564         invoked).
35566         * runtime.cpp (Canvas::render):  Cope with rounding from floats to
35567         ints, add 2, fixes the droppings in the surface.
35569         Include some of my debugging helpers (you sprinkle
35570         draw_grid in key places to see whats going on, useful to debug the
35571         bounding boxes and visually inspect if things are right.
35572         
35573         * media.cpp (getbounds): use the framework width/height not the
35574         pixbuf image size, this shrinks the size of the bounding box.
35575         (getxformorigin): Use it here too.
35577 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
35579         * brush.cpp|h: SetupBrush and SetupGradient now returns a boolean that
35580         indicates if their use would be visible or not (e.g. opacity > 0.0).
35581         * shape.cpp: Don't setup brush for getting bounds (do_op == FALSE). 
35582         Don't Fill or Stroke if the brush is invisible (opacity == 0).
35584 2007-06-18  Marek Habersack  <grendello@gmail.com>
35586         * mplayer.cpp (ALIGN): make sure the ALIGN macro is correct on 64
35587         bit platforms too.
35589         * ffvideo.cpp (ALIGN): as above.
35591 2007-06-18  Chris Toshok  <toshok@ximian.com>
35593         * clock.cpp: simplify pausing and stopping a clock that has
35594         children by keeping track of the new state (the one the clock will
35595         take at the end of this tick).  This is necessary because the
35596         parent clock doesn't actually stop until the end of the tick, so
35597         we still need to update child clocks after we've determined the
35598         parent clock should stop.
35600 Mon Jun 18 19:35:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
35602         * runtime.cpp: properly remove items from the doubly-linked list.
35604 2007-06-18  Chris Toshok  <toshok@ximian.com>
35606         * animation.cpp (AnimationStorage::~AnimationStorage): delete the
35607         baseValue here.
35608         (Storyboard::Begin): force a TimeManager tick after we've hooked
35609         up the clock, so that all the animations have proper values before
35610         the next render.  Fixes the "popping" in the surface demo.
35612 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35614         * runtime.cpp: Changed DependencyObject::SetValue to never store 
35615         a null value in the hashtable.
35617 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
35619         * brush.cpp: Refactor the pattern creation to allow caching.
35620         * media.cpp|h: Add caching of cairo_pattern_t to Image.
35622 Mon Jun 18 17:53:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
35624         * runtime.cpp: use motion hints for smoother motion event handling.
35626 2007-06-18  Jeffrey Stedfast  <fejj@gnome.org>
35628         * text.cpp|h: Runs now cache their own PangoFontDescription and
35629         PangoLayouts as an optimzation (seems to be very slight for simple
35630         us-ascii text, but might help enormously for more complex
35631         languages). Also added some FIXME thoughts.
35633 2007-06-18  Everaldo Canuto  <ecanuto@novell.com>
35635         * downloader.cpp: Add missing downloader_notify_finished.
35637 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35639         * downloader.cpp: Only set dummy downloader functions if they
35640         aren't already set.
35642 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35644         * runtime.cpp: Add a few null checks.
35645         * downloader.cpp: Add initial dummy downloader functions to get
35646         meaningful messages if the downloader functions aren't initialized.
35648 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35649         
35650         * typegen.cs: Special case a few things for DependencyObject, 
35651         and make a few messages more informative.
35652         * runtime.h|cpp: Add a value_type field to Type, and a constructor
35653         to specify the value. Add a constructor to DependencyProperty that
35654         can specify default value and type (in the case the default value
35655         doesn't have the same type as the property). Changed
35656         DependencyObject::SetValue to never store a null value in the 
35657         hashtable. In Value destructor check for null pointers in a few 
35658         cases. Update all uses of Value.k to Value.GetKind.
35659         * type.cpp.in: Update to specify value_type information.
35660         * value.h.in: Implement nullable type handling in Value.
35661         * value.cpp, type.cpp, value.h: Updated.
35663 2007-06-18  Jeffrey Stedfast  <fejj@gnome.org>
35665         * text.cpp (get_size_for_brush): Calculate width/height if they
35666         are unset.
35667         (Draw): Don't use the brush if we aren't going to render (this is
35668         needed so that we don't get into a recursive loop since we have to
35669         manually calculate width/height).
35671 2007-06-18  Jeffrey Stedfast  <fejj@gnome.org>
35673         * text.cpp (get_size_for_brush): Implemented (since
35674         cairo_stroke_extents() won't work for us).
35676         * brush.cpp (VideoBrush::SetupBrush): Use get_size_for_brush().
35677         (ImageBrush::SetupBrush): Same.
35679         * runtime.cpp (UIElement::get_size_for_brush): New method to get
35680         width/height needed by Brushes for scaling.
35682 2007-06-17  Jeffrey Stedfast  <fejj@gnome.org>
35684         * runtime.cpp (UIElement::OnPropertyChanged): Chain up to our
35685         parent.
35687 2007-06-17  Atsushi Enomoto  <atsushi@ximian.com>
35689         * text.cpp : added text_block_set_font_source().
35691 2007-06-17  Miguel de Icaza  <miguel@novell.com>
35693         * brush.cpp (brush_init): Create a BRUSH property called
35694         "FrameChange", it is internal and the sole use of it is so that
35695         upper layers that care about brush changes act on it by updating
35696         their elements.
35698         * runtime.cpp (UIElement::OnSubPropertyChanged): Changes on
35699         brushes only trigger an invalidate, there is no need to recompute
35700         bounds. 
35702 2007-06-17  Jeffrey Stedfast  <fejj@gnome.org>
35704         * xaml.cpp: c++ isn't smart enough to invoke the correct .dtor on
35705         delete for a void pointer, it can only delete known class types.
35707 2007-06-17  Jackson Harper  <jackson@ximian.com>
35709         * xaml.cpp: Implement x:Class, we can now load the Surface demo's
35710         XAML file, and it's custom Canvas class (things still don't work
35711         though because the custom canvas uses a downloader.)
35713 2007-06-17  Miguel de Icaza  <miguel@novell.com>
35715         The surface rotate and translate controls should both work, and
35716         the enter/leave events are now correct.
35717         
35718         * runtime.cpp (UIElement::handle_motion, handle_button): Change
35719         the semantics to better match Silverlight.   Now these methods
35720         should check if the mouse is inside their region before calling
35721         the callback.
35723         This is necessary because children of the canvas (and panel) are
35724         within the confines of the bounding box, but the canvas can be
35725         smaller than that.   The canvas is a container whose boundaries
35726         are only used for paiting, children might be outside of these
35727         boundaries.
35729         It is necessary in these cases to pass the events to all the
35730         children within the canvas bounding box and for each child to
35731         determine if the event was within its range. 
35733         (inside_object): replaced the default implementation for
35734         FrameworkElements with a more performing version: instead of
35735         mapping the point and using cairo_in_stroke and in_fill operations
35736         on a rectangle with mapped coordinates, we map the coordinates and
35737         check against the rectangle.
35739         (Canvas::getbounds): if we are the topmost canvas, the boundaries
35740         are those from the Surface, not the ones that include the maximum
35741         extent from the children.   Used to do precise mouse enter/leave. 
35743 2007-06-17  Jeffrey Stedfast  <fejj@gnome.org>
35745         * media.cpp (MediaElement::OnPropertyChanged): Chain to parent
35746         when its not our property.
35748         * brush.cpp: Implemented VideoBrush (tho it's not yet debugged).
35750         * mplayer.cpp (GetSurface): Added.
35752         * text.cpp (text_init): Fixed to use RegisterFull for Froeground
35753         so we can specify Value::BRUSH as the default value type instead
35754         of it using SolidColorBrush as the type.
35756 2007-06-17  Chris Toshok  <toshok@ximian.com>
35758         * xaml.cpp (timespan_from_str): fix parsing of timespans shorter
35759         than 1 second.
35761 2007-06-17  Chris Toshok  <toshok@ximian.com>
35763         * clock.cpp (Clock::TimeUpdated): remove a special case for the
35764         clock's duration being Automatic.  Fixes infinite animation in
35765         Surface port.
35767         * runtime.cpp (crossing_notify_callback): return type is gboolean,
35768         and make sure we always return something.
35769         
35770 2007-06-17  Miguel de Icaza  <miguel@novell.com>
35772         Propagate changes from children of the transform up to our
35773         containers, this is done in several steps:
35775         * runtime.cpp (DependencyObject::Attach, Detach): New methods that
35776         are used to attach an object to a container and detach it.   They
35777         were previously inlined inside SetValue.
35779         (Collection::Add, Remove): Attach and detach objects when they are
35780         added/removed. 
35781         
35782         * transform.cpp (Transform::OnPropertyChanged): if any class
35783         derived from Transform has one of its properties changed, it
35784         has a visual effect, propage this to the attacchees.
35786         (TransformGroup::OnSubPropertyChanged): Escalate here as well,
35787         this will catch the messages coming from anyone in the collection
35788         to its container. 
35790         (TransformCollection::OnSubPropertyChanged): Buble the event up
35791         here as well.
35793         * runtime.cpp (handle_motion): Change the order in which we send
35794         the events to the UIElement, we should start at the topmost
35795         element, and have the toplevel canvas be last.
35797 2007-06-17  Sebastien Pouliot  <sebastien@ximian.com>
35799         * brush.cpp: Refactor ImageBrush::SetupBrush to reuse parts of it
35800         inside Image::render.
35801         * media.cpp: Use code from ImageBrush to render image with it's
35802         properties (e.g. Stretch)
35803         * transform.cpp: Update (commented) debug output.
35805 2007-06-17  Miguel de Icaza  <miguel@novell.com>
35807         * runtime.cpp (GetValueNoDefault): This is necessary so we can
35808         distinguish a value that has been explicitly set from one that has
35809         not.
35810         
35812         * media.cpp (Image): use Framework::Width,Height for the image
35813         dimensions instead of the pixbuf width/height, used in extents and
35814         rotation computation.
35816         * runtime.cpp (Canvas::render): Set the clipping path on the
35817         identity matrix so we do not miss-clip.
35819         Render the canvas from 0, 0, fwidht, fheight, not the expose
35820         area. 
35822 2007-06-16  Miguel de Icaza  <miguel@novell.com>
35824         * runtime.cpp (Cairo::render): The canvas also needs to set the
35825         matrix and clear its background. 
35827         (surface_resize): convenience entry point to resize a surface.
35828         Notice that this will resize the surface, but not the toplevel
35829         canvas. 
35831 2007-06-16  Jackson Harper  <jackson@ximian.com>
35833         * demo.cpp:
35834         * runtime.h:
35835         * control.cpp:
35836         * xaml.cpp: Use a callback for setting custom attributes in
35837         elements.
35839 2007-06-16  Jeffrey Stedfast  <fejj@gnome.org>
35841         * media.cpp: Implemented all the needed virtual methods for
35842         MediaElement to work, using my new MediaPlayer class.
35844         * mplayer.cpp|h: New class for playing media sources.
35846         * ffvideo.cpp: Removed from the build.
35848 2007-06-16  Miguel de Icaza  <miguel@novell.com>
35850         Observation: either it is the surface, or something else is very
35851         slow, but entering the surface is quite slow right now to show the
35852         handles.   Not sure what it could be.
35853         
35854         * runtime.cpp (OnPropertyChanged): We probably should catch the
35855         property changes here, and not in the Sub* variant of this thing,
35856         this will update the canvas properly now.
35858         (dump_hierarchy): useful bit to debug what is going wrong. 
35859         
35860         (Canvas::get_xform_for): Do not apply extra
35861         transformations to the child other than the absolute_xform.
35863         (surface_attach): On attach we need to do a full invalidate, so
35864         the transformations are computed, otherwise it uses the defaults
35865         for the toplevel (zero), this fixes the atom.xaml issue. 
35867         * control.cpp (get_xform_for): This is not proxied to the real
35868         object, this is proxied to the parent.
35869         (control_initialize_from_xaml): Set the parent link here.
35871 2007-06-16  Chris Toshok  <toshok@ximian.com>
35873         * transform.cpp, transform.h, runtime.cpp, runtime.h,
35874           geometry.cpp, geometry.h, animation.cpp: Another pass (the last)
35875           at removing all cached instance collections and using GetValue
35876           for them.
35878 2007-06-16  Chris Toshok  <toshok@ximian.com>
35880         * media.cpp (Image::SetSource): we want events even if we attach a
35881         downloader that's been started.
35883 2007-06-16  Sebastien Pouliot  <sebastien@ximian.com>
35885         * shape.cpp: If StrokeThickness == 0 then don't stroke, otherwise it
35886         will mess with the earlier filling.
35888 2007-06-16  Chris Toshok  <toshok@ximian.com>
35890         * runtime.h, runtime.cpp: remove the instance cached
35891         Panel::children, use accessor to get it when we need it.
35893         * brush.h, brush.cpp: same for the GradientBrush::children
35894         property.
35896 2007-06-16  Chris Toshok  <toshok@ximian.com>
35898         * runtime.h: make these const Rect&'s.
35900 2007-06-16  Sebastien Pouliot  <sebastien@ximian.com> 
35902         * control.cpp|runtime.h: control_initialize_from_xaml needs to return
35903         the Value::Kind of the object that was created so the managed side do
35904         a Lookup on it.
35906 2007-06-16  Sebastien Pouliot  <sebastien@ximian.com>
35908         * control.cpp|runtime.h: control_initialize_from_xaml needs to return
35909         the element as the managed side needs (and defines) it.
35911 2007-06-16  Miguel de Icaza  <miguel@novell.com>
35913         * control.cpp: Implement Control.
35915         * downloader.cpp: Implement a system to send various notifications
35916         as Chris wants his notifications and managed world wants the
35917         notifications as well. 
35919         Should they ahve been separate?   For now I just added a list of
35920         them.   This code is turning uglier every minute.
35922 2007-06-16  Jackson Harper  <jackson@ximian.com>
35924         * xaml.cpp: Kill top_kind, I have no idea how this guy crept back
35925         in.
35926         - Handle expat errors a little better.
35928 2007-06-16  Sebastien Pouliot  <sebastien@ximian.com>
35930         * runtime.h: Implement missing IntersectsWith and Intersection to fix 
35931         build.
35933 2007-06-15  Chris Toshok  <toshok@ximian.com>
35935         * runtime.cpp (Canvas::render): small optimization.  only call the
35936         item's render method if its bounds actually intersects with the
35937         rectangle we're rendering.  Also, clip to the bounding rectangle
35938         of the item here.
35940 2007-06-16  Chris Toshok  <toshok@ximian.com>
35942         * clock.cpp, clock.h: don't use a constant for the timeout in
35943         gtk_timeout_add, and add methods to add/remove the timeout.
35945         (ClockGroup::TimeUpdated): if we're paused or stopped,
35946         don't call child clock TimeUpdated methods at all.  they always
35947         generate CurrentTimeInvalidated even when the time hasn't changed,
35948         which triggers redraws that don't need to happen.
35950 2007-06-16  Jackson Harper  <jackson@ximian.com>
35952         * runtime.cpp|h: We still need C style base_ref/unref.
35953         * demo.cpp:
35954         * xaml.cpp: Takle a callback for the from_file method also.
35955         
35956 2007-06-16  Jeffrey Stedfast  <fejj@gnome.org>
35958         * ffvideo.cpp (Stop): Implemented.
35959         (.ctor): init paused to false (maybe this is why video
35960         didn'talways work?).
35961         (.dtor): Stop() the video and unhook the timeout.
35963         * runtime.cpp: Implement Base::ref and Base::unref instead of
35964         doing it the c way.
35966         * *.cpp: Updated for above change.
35968         * shape.cpp (shape_set_stroke): Don't unref the old stroke.
35969         (shape_set_fill): Same.
35971         * text.cpp (text_init): Use a separate brush for TextBlocks and
35972         Inlines.
35973         (text_block_set_foreground): Don't unref the old brush.
35974         (inline_set_foreground): Same.
35976 2007-06-15  Chris Toshok  <toshok@ximian.com>
35978         * xaml.cpp: little leak fixes here and there.
35980 2007-06-15  Chris Toshok  <toshok@ximian.com>
35982         * demo.cpp (delete_event): destroy the surface and shutdown the
35983         runtime before we quit, just to make finding leaks a little
35984         easier.
35986         * ffvideo.cpp (MediaElementFfmpeg): re-order the
35987         close/g_io_channel_close calls to quiet down glib.
35989         * media.cpp: don't close the loader in DownloaderEvents.  do it in
35990         the dtor for now, to keep from getting that stupid gdk warning.
35991         this is wrong, but at least it's quiet.
35993         * text.cpp: delete the color we initialize the solid color brush
35994         with in text_init.
35996         * animation.cpp, animation.h: remove the cached key_frames
35997         collections.
35999         * runtime.h, runtime.cpp: clean up our cleanup a lot.
36001         in the copy constructor we actually need to make a copy (or
36002         ref in cases where we can) everything we store as a pointer in
36003         our union.  This is to facilitate us destroying it in the
36004         destructor.
36006         in surface_destroy just delete the surface.  move all the destroy
36007         code to the destructor.  Also, in the destructor unhook from the
36008         gtk events, since we get an unrealize event as part of widget
36009         destruction, apparently.
36011         Add DependencyObject::Shutdown which destroys our properties
36012         hashtable.  Create all the hashtables with _new_full so we can
36013         give free functions for keys/values.  actually make use of them,
36014         and clean up the relevant destructors.
36016         Add a destructor for Type, and have the Type ctor take its
36017         arguments.  free the name in the dtor.  Same deal with _new_full
36018         for hashtable creation, and also add Type::Shutdown.
36020         (runtime_shutdown): call TimeManager::Shutdown, Type::Shutdown,
36021         and DependencyObject::Shutdown to free all our stuff.
36022         
36023         * clock.h, clock.cpp: add TimeManager::Shutdown.
36025 2007-06-15  Jeffrey Stedfast  <fejj@gnome.org>
36027         * demo.cpp (gettime): Improved fps reporting.
36029 2007-06-15  Miguel de Icaza  <miguel@novell.com>
36031         * media.cpp (SetSource): Make it so we use the data from a
36032         downloader that might have already finished.
36034 2007-06-15  Chris Toshok  <toshok@ximian.com>
36036         * runtime.cpp: simplify refcounting a little more.  we now have 3
36037         rules:
36039             1. Value() holds a ref to its contained dependency object.
36040                This means we don't have to do anything special for
36041                anything stored in a DP.
36042         
36043             2. Collections hold a ref to their constituents.
36045             3. If you *must* cache an DO pointer in an instance field, you
36046                must ref/unref it properly.  But really, you shouldn't need
36047                to cache it, and I'll likely go through and remove all the
36048                ones I can find.
36050         * media.cpp (media_element_set_markers): remove the ref/unref
36051         stuff.
36053         * animation.cpp: comment out some spew, and follow a safer pattern
36054         in OnPropertyChanged.
36056         * brush.cpp (OnPropertyChanged): safer pattern.
36058         * geometry.cpp (OnPropertyChanged): safer pattern.
36060         * runtime.h: make all these dtors virtual.
36062         * clock.cpp, clock.h: remove the cached child_timelines instance
36063         field to clean up some of the ref counting problems.
36065 2007-06-15  Miguel de Icaza  <miguel@novell.com>
36067         * media.cpp (SetSource): Make it so we use the data from a
36068         downloader that might have already finished.
36070         We now accumulated data as we go.
36071         
36072         * downloader.cpp (downloader_get_response_text): Return
36073         accumulated data.
36075 2007-06-15  Jackson Harper  <jackson@ximian.com>
36077         * demo.cpp:
36078         * runtime.h:
36079         * xaml.cpp: Callback into managed code to create custom element
36080         instances.
36082 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
36084         * media.cpp (media_base_new): Removed, not instantiable.
36085         (Image::getbounds): Need to set the absolute_xform matrix :)
36087 2007-06-15  Miguel de Icaza  <miguel@novell.com>
36089         * media.cpp (Image::getxformorigin): Implement getxformorigin, so
36090         rotations are correct.
36092         (Image::getbounds): Implement getbounds correctly, the coordinates
36093         should be in device coordinates with the transform applied.
36095 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
36097         * demo.cpp (main): Add some Inlines to the TextBlock to test
36098         bounding box calculations.
36100         * text.cpp (OnPropertyChanged): If the property that changed is
36101         the Actual width/height, then don't invalidate anything - simply
36102         return (these are just cache values that only we can set
36103         internally).
36104         (Draw): Keep track of the pixel width/height of the entire
36105         rendered TextBlock+Inlines.
36106         (getbounds): Use the cached width/height of the TextBlock+Inlines
36107         and draw a rectangle instead to improve performance.
36109 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
36111         * media.cpp|h: Add media_base_new.
36113 2007-06-15  Miguel de Icaza  <miguel@novell.com>
36115         * Add destructors to classes that are caching DO collections and
36116         keeping refs to those, thanks to Chris Toshok for the pattern to
36117         use here. 
36119 2007-06-15  Chris Toshok  <toshok@ximian.com>
36121         * media.cpp (Image::render): use the uielement's opacity when
36122         painting.  Fixes the DrPopperSilverlight Bubble.xaml file.
36124 2007-06-15  Miguel de Icaza  <miguel@novell.com>
36126         * runtime.cpp (UIElement): The problem was that:
36128                 The ~UIElement destructor was setting the collection
36129                 properties to NULL in an attempt to unref stuff (these
36130                 are now automatically unrefed).
36132                 This caused the hash table destructor to unref the values
36133                 that were held in the collection.
36135                 At a later point, since "triggers" was cached and
36136                 OnPropertyNotify was called, we attempted to unref the
36137                 value, but that cached value pointed to an object that had
36138                 already been released.
36140         * Everywhere: remove duplicated code that got copy/pasted
36141         everywhere for tracking collections and caching values.  
36143         This should help fixing the crashing problem, but I still need to
36144         review the rules for reference counting and keeping a cache of
36145         variables in instance fields. 
36147 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
36149         * text.cpp (Draw): Now renders inlines.
36151 2007-06-15  Chris Toshok  <toshok@ximian.com>
36153         * Makefile.am (EXTRA_DIST): add alpha-premul-table.inc from
36154         libgdiplus.
36156         * demo.cpp: notify the downloader of the image file size so that
36157         it'll generate a COMPLETED event for the Image.
36159         * media.h, media.cpp: make image downloading non-progressive (we
36160         only create the surface when the downloader notifies the download
36161         is complete), but gain something in return: images with alpha
36162         channels.
36164         * downloader.h, downloader.cpp: add closure to event_notify, and
36165         expose the Event kind.
36167 2007-06-15  Miguel de Icaza  <miguel@novell.com>
36169         * runtime.cpp (UIElement, Canvas): send events to the objects as
36170         well.   My original test on orcas was buggy.
36172 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
36174         * runtime.cpp|h, type.cpp, value.cpp|h: Add Control.
36176 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
36178         * xaml.cpp (dependency_object_add_child): If the col_v collection
36179         value is NULL, create a new collection and add it to the
36180         DependencyObject.
36182         * runtime.cpp: Added a generic collection_new() function which
36183         takes a Value::Kind to specificy which collection-type it should
36184         allocate.
36186 2007-06-15  Miguel de Icaza  <miguel@novell.com>
36188         * downloader.cpp: Implement DownloadProgress property and event
36189         notification. 
36191         * runtime.h (DependencyObject::Is): new method, similar to C# is.
36193         * runtime.cpp (surface_repaint): We clear the background here
36194         again, to allow canvases to have transparent brushes.
36196 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
36198         * runtime.cpp: Panel.Background is NULL by default, which means it's
36199         transparent. This fixes Canvas inside Canvas.
36201 2007-06-15  Jackson Harper  <jackson@ximian.com>
36203         * runtime.cpp|h: Implement some Inlines stuff that the parser will
36204         need.
36205         * xaml.cpp: Add some of the pieces for creating textblock inlines.
36206         - Added some TODO areas for creating late bound collections (maybe
36207         this should just be illegal??).
36209 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
36211         * text.cpp: Have inlines cache their PangoFontDescription and
36212         added logic to render textblock inlines.
36214 2007-06-15  Alan McGovern  <amcgovern@novell.com>
36216         * runtime.cpp|h: Added DependencyProperty.NameProperty
36218 2007-06-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36220         * transform.cpp|h: Add Transform C constructor.
36221         * runtime.cpp: Better warning message.
36223 2007-06-15  Miguel de Icaza  <miguel@novell.com>
36225         * runtime.cpp (surface_attach): Only hook up the events when we
36226         get a toplevel attached.   
36228         * downloader.h: Drop the C++ API with a C proxy API, switch to a
36229         pure C API as we need this from the managed side anyways.
36231         * downloader.h: Move downloader defs into .h file
36233         Add a notification system for reporting the size of a stream, so
36234         we can do progress indication.
36236         * downloader.cpp: Move downloader to its own file.
36238 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
36240         * brush.cpp: Implement ImageBrush.Opacity like MS does it in 1.1 alpha
36241         (i.e. Brush.Opacity isn't considered, only UIElement.Opacity is)
36242         * geometry.cpp: PathFigure::IsFilledProperty is ignored in Mix and
36243         will be removed in 1.0.
36244         * media.cpp|h: Make Image aware of ImageBrush (so we can update too)
36245         * runtime.cpp|h: Move calculation of "total" opacity of UIElement at
36246         the *right* place.
36248 2007-06-15  Jeffrey Stedfast  <fejj@gnome.org>
36250         * text.cpp (text_init): Set more default values.
36252         * runtime.cpp (Panel::OnPropertyChanged): Free children->list (as
36253         we iterate thru them) and set the resulting list to NULL (in case
36254         we don't hold the last ref) before unreffing the children object
36255         (in case we do own the last ref).
36256         (EventTrigger::OnPropertyChanged): Same.
36257         (UIElement::OnPropertyChanged): Same.
36259         * transform.cpp (OnPropertyChanged): Same.
36261         * geometry.cpp (GeometryGroup::OnPropertyChanged): Same.
36262         (PathGeometry::OnPropertyChanged): Same
36263         (PathFigure::OnPropertyChanged): Same.
36265         * clock.cpp (TimelineGroup::OnPropertyChanged): Same.
36267         * animation.cpp
36268         (DoubleAnimationUsingKeyFrames::OnPropertyChanged): Same.
36269         (ColorAnimationUsingKeyFrames::OnPropertyChanged): Same.
36270         (PointAnimationUsingKeyFrames::OnPropertyChanged): Same.
36272 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com> 
36274         * brush.cpp: Complete ImageBrush.Transform
36275         * shape.cpp: Please at least one side of the lines.
36277 2007-06-15  Jeffrey Stedfast  <fejj@gnome.org>
36279         * text.cpp (text_init): No longer should ref the foreground brush
36280         or we leak refs.
36282         * xaml.cpp: Added support for Runs/LineBreaks
36284         * text.cpp: Implemented Run/LineBreak classes.
36285         (inline_new): Removed (can't instantiate this class).
36287 2007-06-15  Miguel de Icaza  <miguel@novell.com>
36289         * runtime.cpp (~DependencyObject, free_value): unref all the
36290         values that are stored in the object on destruction
36292         * runtime.cpp: Add support for enter/leave events.
36294 2007-06-14  Jeffrey Stedfast  <fejj@gnome.org>
36296         * text.cpp (getbounds): Set the actual width/height values to keep
36297         them up-to-date.
36299 2007-06-14  Jeffrey Stedfast  <fejj@gnome.org>
36301         * text.cpp (getbounds): Revert prior change.
36302         (getxformorigin): Same.
36304         * shape.cpp (getbounds): Revert prior change.
36306         * ffvideo.cpp (getbounds): Revert prior change.
36308         * runtime.cpp (update_xform): Revert my last change.
36309         (item_update_bounds): Same.
36311 2007-06-14  Jackson Harper  <jackson@ximian.com>
36313         * xaml.cpp: Set content properties when adding child elements.  We
36314         now no longer need to special case any elements except panel.
36316 2007-06-14  Jackson Harper  <jackson@ximian.com>
36318         * xaml.cpp: I must have been very tired when I wrote that.
36320 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com>
36322         * media.h: Expose Image's Height and Width (required for ImageBrush)
36323         * brush.cpp: Implement all Strech and Alignment[X|Y] options. Nothing
36324         (yet) force an update of the drawing once the image is available.
36326 2007-06-14  Jeffrey Stedfast  <fejj@gnome.org>
36328         * demo.cpp: Updated s/textblock/text_block/g
36330         * xaml.cpp: Don't register TextBlock twice.
36332         * ffvideo.cpp (getbounds): Can now depend on surface being set.
36334         * text.cpp: s/textblock/text_block/g
36335         (getbounds): Can now depend on surface being set.
36336         (getxformorigin): Same.
36338         * shape.cpp (getbounds): Can now depend on surface being set.
36340         * runtime.cpp (item_update_bounds): Don't update bounds if the
36341         surface hasn't been set yet.
36342         (update_xform): Same.
36344 2007-06-14  Jackson Harper  <jackson@ximian.com>
36346         * xaml.cpp: Add keyspline parsing.
36348 2007-06-14  Jackson Harper  <jackson@ximian.com>
36350         * value.h: This guy doesn't exist anymore, he is a
36351         DependencyObject now.
36353 2007-06-14  Jackson Harper  <jackson@ximian.com>
36355         * animation.cpp:
36356         * runtime.cpp|h: We also need to update the DependencyObject when
36357         resolving PropertyPaths.
36359 2007-06-14  Jackson Harper  <jackson@ximian.com>
36361         * runtime.cpp|h: New function that follows PropertyPath's to
36362         DependencyProperties.
36363         * animation.cpp: Use new function to resolve animation target
36364         properties.
36366 2007-06-14  Jackson Harper  <jackson@ximian.com>
36368         * runtime.cpp (GetDependencyProperty): If there is no table for a
36369         property, we still need to lookup the property in the parent
36370         chain (assumming inherit is true).
36371         - Fix some typos with types_by_name
36373 2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
36375         * demo.cpp (main): Rotate our demo text inside a filled rectangle
36376         around the center of the text.
36378         * text.cpp (TextBlock.ctor): Initialise a cached
36379         PangoFontDescription that we will update when properties change.
36380         (TextBlock.dtor): Free our font/layout.
36381         (getbounds): Implemented correctly.
36382         (getxformorigin): Implemented.
36383         (Draw): Simplified since we don't need to create our layout/font
36384         anymore (just use the cached ones).
36385         (OnPropertyChanged): Implemented.
36387 2007-06-14  Miguel de Icaza  <miguel@novell.com>
36389         * brush.cpp (Brush, SolidColorBrush, LinearGradientBrush,
36390         RadialGradientBrush): Notify owners when changes happen in the
36391         Brush.
36393         This makes the demo test-color-animation.xaml work without fps.
36395         * runtime.cpp: Make Canvas use the Background property to render
36396         the background.
36398 2007-06-14  Chris Toshok  <toshok@ximian.com>
36400         * demo.cpp (main): create a namescope to attach to the canvas, and
36401         also make sure to add the storyboard to the tree someplace so that
36402         it can find the names of things.
36404         * xaml.cpp: create a namescope to attach to the top_element.
36406         * runtime.cpp (FindName): rework this to walk up the tree.  Drop
36407         the global namescope.
36409 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com>
36411         * brush.cpp|h: Add ImageBrush functions, which delegates most of its
36412         work to Image (downloader).
36413         * media.cpp|h: Expose the cairo_surface_t that contains the image.
36415 2007-06-14  Chris Toshok  <toshok@ximian.com>
36417         * demo.cpp (FileDownloadState::AsyncFillBuffer): increase buffer
36418         size from 1024 to 8192 (and make it an instance instead of stack
36419         variable).  Also, add a return statement that will cause the idle
36420         handler to no longer be called when we get a write of 0 length.
36421         This might be wrong in the long term.
36423         * media.cpp, media.h: add cleanup methods for the Image class, and
36424         add a dtor as well.
36426 2007-06-14  Chris Toshok  <toshok@ximian.com>
36428         * media.cpp (LoaderSizePrepared): fill in the initial state of the
36429         image to gray with black border.
36430         (LoaderAreaUpdated): invalidate the item.
36432         * media.h: fix the progressive image loading.
36434 2007-06-14  Chris Toshok  <toshok@ximian.com>
36436         * demo.cpp: use the MediaBase::SourceProperty to set the image's
36437         source.
36439         * media.h, media.cpp: add Image::OnPropertyChanged so we can watch
36440         for changes in MediaBase::SourceProperty and kick off the download
36441         and stop the currently running one.
36443 2007-06-14  Chris Toshok  <toshok@ximian.com>
36445         * demo.cpp: track downloader api change.
36447         * media.cpp: track downloader api change.
36449         * runtime.h, runtime.cpp: the downloader's write function needs an
36450         offset as well as a length to work with mozilla's streaming api.
36452 2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
36454         * demo.cpp (main): Draw some text
36456         * text.cpp (text_init): Set a default solid black brush for
36457         foreground properties on Inline/TextBlock objects.
36458         (Draw): Setup the Brush stuff before drawing.
36460 2007-06-14  Jackson Harper  <jackson@ximian.com>
36462         * xaml.cpp: Add support for loading all implemented (and semi
36463         implemented) dependency object types.
36464         * text.cpp|h: C style constructors.
36466 2007-06-14  Chris Toshok  <toshok@ximian.com>
36468         * animation.cpp (KeySpline): default should be 1,1 for
36469         controlPoint2.
36471 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com>
36473         * xaml.cpp: Add support for Matrix (non-DO) type.
36475 2007-06-14  Chris Toshok  <toshok@ximian.com>
36477         * runtime.cpp (downloader_write): add C-style downloader_write
36478         method so we can call into it from the binding.
36480 2007-06-14  Chris Toshok  <toshok@ximian.com>
36482         * value.cpp, animation.h, type.cpp, value.h, runtime.cpp,
36483         type.cpp.in, value.h.in: make KeySpline subclass from
36484         DependencyObject like it should, and fix resulting fallout.
36486 2007-06-14  Miguel de Icaza  <miguel@novell.com>
36488         * runtime.cpp (Canvas): Implement OnChildPropertyChanged so we can
36489         catch cases of Top/Left being set on a child, this makes changes
36490         to the object after it has been created (adding/removing the
36491         property) work. 
36493 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com> 
36495         * brush.cpp|h: Much closer results for RadialGradients (but I still
36496         have a test case that fails). Also added Transform support for 
36497         LinearGradient.
36499 2007-06-14  Jackson Harper  <jackson@ximian.com>
36501         * animation.h: C style constructors.
36502         * clock.cpp|h: C style constructors.
36503         * runtime.cpp|h: Follow proper naming convention for
36504         TimelineMarker C style constructors.
36506 2007-06-14  Chris Toshok  <toshok@ximian.com>
36508         * runtime.h, runtime.cpp: remove the hack UnmanagedDownloader from
36509         here, and made Downloader pluggable with a set of functions.
36511         * demo.cpp: use the pluggable nature of Downloader to put
36512         UnmanagedDownloader here (and call it FileDownloadState).
36514         * value.cpp, value.h, type.cpp: resync.
36516 2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
36518         * text.cpp: Fixed Brush accessors for the NULL case.
36520         * media.cpp: Fixed accessors that could return NULL
36521         (media_init): init MediaBase and MediaElement items.
36523 2007-06-14  Jackson Harper  <jackson@ximian.com>
36525         * animation.cpp: C style constructor.
36526         * media.cpp|h: Add some C style constructors.
36527         * xaml.cpp:  Add parsing hooks for new components.
36529 2007-06-14  Chris Toshok  <toshok@ximian.com>
36531         * demo.cpp: make one of the videos an image instead.
36533 2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
36535         * xaml.cpp: Fixed the font_widths and font_stretches maps to
36536         reflect the numeric enum values defined in text.h (and msdn docs).
36538         * text.h: Sync enum values to documented numeric values.
36540 2007-06-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36542         * transform.cpp|h, media.cpp|h, brush.cpp|h, runtime.cpp|h:
36543         Make all classes that inherit from DO constructable, and add
36544         missing C-style constructors.
36546 2007-06-14  Jackson Harper  <jackson@ximian.com>
36548         * runtime.cpp|h: Hookup the resource collection.
36549         * xaml.cpp: Parse resource collections.
36551 2007-06-14  Chris Toshok  <toshok@ximian.com>
36553         * type.cpp, value.h, type.h: resync these.
36555         * media.h, media.cpp: add naive Image class.
36557         * runtime.h, runtime.cpp: add some Downloader methods, and
36558         subclass Downloader with a *very* hackish UnmanagedDownloader
36559         class that just loads from files.  Also add a "write_func"
36560         callback that the downloader can call when it has new data to hand
36561         off.
36563 2007-06-14  Chris Toshok  <toshok@ximian.com>
36565         * animation.cpp: import an arc length calculator I found on the
36566         net (at http://steve.hollasch.net/cgindex/curves/cbezarclen.html)
36567         and use that for KeySpline::GetSplineProgress.  The results don't
36568         match MS's exactly, though.
36570 2007-06-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36572         * geometry.cpp, geometry.h: Add collection constructors.
36573         * brush.cpp, brush.h: Add ImageBrush and VideoBrush DPs.
36574         * runtime.cpp|runtime.h: Implement collection add/remove methods. 
36575         Add Downloader DPs.
36576         * media.cpp: Add MediaAttribute DP.     
36578 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com> 
36580         * brush.cpp|h: Refactor Opacity to make it reusable to other brushes
36581         (as it cannot be globally applied). Added DP, and related functions,
36582         to TileBrush.
36584 2007-06-14  Miguel de Icaza  <miguel@novell.com>
36586         * Improve the destruction scenario to release the resources that
36587         we have acquired, we are now up to the point of stopping clocks
36588         properly, but more work is going to be needed in the long term to
36589         properly track refs and objects.
36591         Ensured that all virtual GetObjectType are flagged with virtual.
36593         * Makefile.am: Put runtime.cpp at the top, to improve
36594         compile/test cycle.
36596 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com> 
36598         * brush.cpp|h: One step closer for RadialGradientBrush
36599         * geometry.cpp: Fix ArcSegment sweep direction. All chess pieces now 
36600         render (shape-wise) correctly.
36601         * shape.cpp: Draw before setting the brush. This allows the brush
36602         setting code to ask for the extents to stroke/fill.
36604 2007-06-13  Chris Toshok  <toshok@ximian.com>
36606         * animation.cpp (KeySpline::GetSplineProgress): reimplement this
36607         to return a percentage of the arc length of the bezier that is
36608         traversed when t = linearProgress, taking the algorithm from
36609         http://steve.hollasch.net/cgindex/curves/cbezarclen.html
36611 2007-06-13  Chris Toshok  <toshok@ximian.com>
36613         * brush.h, geometry.h, animation.h, clock.h: add GetElementType
36614         collection overloads.
36616         * type.cpp: resync to track UIElement : Visual relationship.
36618         * runtime.h: add Collection::GetElementType, and add overloads
36619         (some commented out) for the collections listed.  Also, fix
36620         UIElement's superclass to be Visual.
36622         * runtime.cpp (Add): make sure we're only adding subclasses of our
36623         element type.
36625 2007-06-13  Chris Toshok  <toshok@ximian.com>
36627         * clock.cpp (AddChild): just pass the child, unwrapped.
36629         * runtime.h: remove the Value* overloads for Collection::Add and
36630         Collection::Remove.
36632         * xaml.cpp (dependency_object_add_child): just pass the dependency
36633         object, unwrapped.
36635 2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
36637         * text.cpp: Implemented a ton of stuff...
36638         (text_init): Added.
36640         * runtime.cpp (runtime_init): Call text_init().
36642 2007-06-13  Miguel de Icaza  <miguel@novell.com>
36644         * runtime.h (Collection): Since it seems that everything we have
36645         so far are collections of dependency objects, the code is now
36646         simplified and will also take refs and remove refs on destruction.
36648         The only reason to implement the Add/Remove methods is if you must
36649         do something as a hook during add/remove
36650         
36651         * runtime.cpp (SetValue): Enable NULLs to be set on Dependency
36652         Objects. 
36653         
36654         (OnPropertyChanged): Allow the value to be NULL, cope with that,
36655         we use this to clear all of our objects.
36657 2007-06-13  Chris Toshok  <toshok@ximian.com>
36659         * xaml.cpp (xaml_create_from_str): make the from_str a little
36660         closer to from_file.  fixes hooking up names when loading from
36661         strings.
36663 2007-06-13  Chris Toshok  <toshok@ximian.com>
36665         * runtime.cpp (runtime_init): start the time manager here.
36667         * demo.cpp (main): instead of here.
36669 2007-06-13  Jackson Harper  <jackson@ximian.com>
36671         * xaml.cpp: Gracefull handling of error conditions. Being
36672         intentionally non strict about some things while we are
36673         developing (like unknown elements, and attributes, and missing
36674         namespaces).
36676 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
36678         * brush.cpp: Better, but still imperfect, RadialGradientBrush
36680 2007-06-13  Jackson Harper  <jackson@ximian.com>
36682         * runtime.h: Add some of the error event handler args, so i can
36683         use these in the parser.
36685 2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
36687         * brush.cpp (OnPropertyChanged): Free list nodes as we iterate
36688         (soptimsation, woot).
36690         * text.cpp: Implemented c wrappers for Inline
36692 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
36694         * brush.cpp: Implemented LinearGradientBrush::SetupBrush
36695         * xaml.cpp: Handle GradientStops correctly (at GradientBrush) and add
36696         support for LinearGradientBrush.
36698 2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
36700         * text.cpp: Stubbed out TextBlock and Glyphs
36702 2007-06-13  Jackson Harper  <jackson@ximian.com>
36704         * xaml.cpp: GradientBrush is a Brush.
36706 2007-06-13  Miguel de Icaza  <miguel@novell.com>
36708         * runtime.cpp (dependency_object_find_name): Add new wrapper 
36710 2007-06-13  Chris Toshok  <toshok@ximian.com>
36712         * animation.cpp, animation.h: add public storyboard methods for
36713         begin/pause/resume/seek/stop.  also start in on the spline
36714         keyframe/KeySpline stuff.
36716         * type.cpp: resync.
36718         * value.cpp: resync.
36720         * value.h: resync.
36722         * value.h.in: add keyspline stuff.
36724         * type.cpp.in: add keyspline stuff.
36726 2007-06-13  Chris Toshok  <toshok@ximian.com>
36728         * demo.cpp: a few changes - none of the animations run forever
36729         now.  also, add some gtk events (button press/release/motion).  we
36730         pause animations on press, resume them on release.
36732         * clock.cpp: keep track of the offset caused by pausing/resuming
36733         the clock from our parent's time.
36735         * animation.cpp: split out all the logic for finding the current
36736         (and previous) keyframes into
36737         KeyFrameCollection::GetKeyFrameForTime.  Also, make the key frame
36738         collection maintain a separate sorted list of keyframes.
36740 2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
36742         * media.cpp (media_base_get_source): Implemented; use char*
36743         instead of Uri - we'll make the binding convert between the types.
36744         (media_base_set_source): Same.
36746 2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36748         * runtime.cpp: Xlib and we are both defining Visual,
36749         so implement a workaround.
36751 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
36753         * brush.cpp|h: Added code for LinearGradientBrush and partial setup
36754         for all gradient-related brushes (needs testing). Add all color 
36755         definitions supported by XAML.
36756         * mkcolor.cs: Tool to generate colors from System.Drawing (as they
36757         are identical).
36759 2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36760         
36761         * runtime.h: Add Visual.
36762         * value.cpp, value.h, type.cpp: Updated.
36764 2007-06-13  Jeffrey Stedfast  <fejj@gnome.org>
36766         * ffvideo.cpp: Back to using ALSA, but this time I got it right ;)
36768 2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36770         * media.h: Added MediaAttribute.
36771         * runtime.h: Added Downloader.
36772         * value.cpp, value.h, type.cpp: Updated.
36773         * typegen.cs: Copy Kind.cs to the correct directory.
36775 2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36777         * brush.cpp, brush.h, geometry.cpp: Fix property registration
36778         typos.
36780 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
36782         * brush.cpp|h: Fix Brush::RelativeTransformProperty and 
36783         Brush::RelativeTransformProperty types.
36785 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com>
36787         * brush.cpp|h: Complete DependencyProperties for GradientBrush and
36788         add GradientStopCollection.
36789         * runtime.cpp|h: Remove code for GradientStopCollection.
36790         * xaml.cpp: Register new brush classes.
36792 2007-06-13  Miguel de Icaza  <miguel@novell.com>
36794         * runtime.cpp: Various new events are now sent.
36796 2007-06-13  Jackson Harper  <jackson@ximian.com>
36798         * xaml.cpp: When using the xaml_create_from_str we automatically
36799         add the default and x: namespaces.
36801 2007-06-12  Jeffrey Stedfast  <fejj@gnome.org>
36803         * ffvideo.cpp: Fixed to subclass the new MediaElement class.
36805         * video.cpp: Removed.
36807 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
36809         * brush.cpp|h: Added DependencyProperty for GradientBrush and 
36810         GradiantStop. Added new brush-related enums. Add [g|s]etter functions
36811         for RadialGradient and BrushGradiantStop.
36813 2007-06-12  Jackson Harper  <jackson@ximian.com>
36815         * xaml.cpp: Repsect namespaces.
36816         - Clean up code a little
36818 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
36820         * brush.h: New. Brush related stuff.
36821         * brush.cpp: DependencyProperty for RadialGradientBrush
36822         * runtime.h: [Re]move brush stuff.
36823         * shape.h: Add include for brush.h
36824         * type.cpp, value.h, value.h: Add RadialGradientBrush type.
36825         * Makefile.am: Add brush.h to the build.
36827 2007-06-12  Jeffrey Stedfast  <fejj@gnome.org>
36829         * media.cpp|h: Added to the build
36831 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
36833         * transform.cpp|h: Complete MatrixTransform.
36834         * value.h, value.h.in, runtime.cpp, type.cpp, type.cpp.in: Introduce
36835         Matrix type.
36837 2007-06-12  Miguel de Icaza  <miguel@novell.com>
36839         * runtime.h (UIElement::inside_object): new routine that should
36840         return true if the given absolute x, y is inside the given object
36841         or not. 
36843         (UIElement::handle_motion): new routine that is called when a
36844         motion event happens, it should determine if it can handle the
36845         given event at x, y.
36847         (Surface): new callbacks, these are callbacks that will pass the
36848         notification of the event to managed code. 
36850         * runtime.cpp (FrameworkElement): provide a default implementation
36851         for inside object that works for "squares" (things with widths and
36852         heights) 
36854 2007-06-12  Jeffrey Stedfast  <fejj@novell.com>
36856         * ffvideo.cpp: Instead of aborting when SDL_OpenAudio() fails,
36857         simply disable audio for that video. Temporary hack.
36859 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
36861         * transform.cpp: Fix SkewTransform with translations (Center[X|Y])
36863 2007-06-12  Jackson Harper  <jackson@ximian.com>
36865         * xaml.cpp: Implement enums.  This implementation is very naive,
36866         but works with the current Silverlight object model.  Basically,
36867         we just index property names to enum maps.  So a property name
36868         maps to a single enum type regardless of the type the enum is
36869         declared in.  This works fine with the current silverlight object
36870         model, but in the future might need to be changed, if we get
36871         conflicting property names.
36873 2007-06-12  Jeffrey Stedfast  <fejj@novell.com>
36875         * ffvideo.cpp: Fixed sound playback to not get that nasty
36876         reverb-like effect. Also switched to using SDL for audio.
36878 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
36880         * transform.cpp|h: Implement SkewTransform.
36881         * type.cpp: Register new type SkewTransform.
36882         * value.cpp|h: Add SkewTransform.
36883         * xaml.cpp: Register DO for SkewTransform.
36885 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36887         * runtime.cpp, runtime.h: Make DependencyObject::ParentProperty
36888         a normal field.
36890 2007-06-12  Jackson Harper  <jackson@ximian.com>
36892         * xaml.cpp: Don't try to add properties to the panel.
36894 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com> 
36896         * geometry.cpp: Implemented ArcSegment::Draw using librsvg code
36897         * rsvg.cpp|h: New. Code from LGPL librsvg to implement arc_to
36898         * Makefile.am: Add rsvg.cpp|h to the build.
36900 2007-06-12  Jackson Harper  <jackson@ximian.com>
36902         * xaml.cpp: Add parser for KeyTime structures.
36904 2007-06-12  Chris Toshok  <toshok@ximian.com>
36906         * animation.cpp
36907         (ColorAnimationUsingKeyFrames::GetNaturalDurationCore): implement.
36908         (PointAnimationUsingKeyFrames::GetNaturalDurationCore): implement.
36909         (animation_init): make sure to initialize
36910         ColorKeyFrame::ValueProperty.
36912         * clock.cpp (Timeline::GetNaturalDuration): comment out some spew.
36914 2007-06-12  Jackson Harper  <jackson@ximian.com>
36916         * animation.cpp|h: C style constructor for KeyFrameCollection.
36917         * xaml.cpp: Implement the KeyFrame types
36918         - Make the base types ghosts, despite what the docs say, they
36919         can't be used.
36921 2007-06-12  Miguel de Icaza  <miguel@novell.com>
36923         * runtime.cpp (NotifyParentOfPropertyChange): Stop propagating
36924         when we have reached someone that handles that property in the way
36925         up. 
36927 2007-06-12  Jackson Harper  <jackson@ximian.com>
36929         * xaml.cpp: Register the TriggerCollection so that
36930         TriggerCollections can be created using the explicit syntax.
36931         
36932 2007-06-12  Jackson Harper  <jackson@ximian.com>
36934         * xaml.cpp: No longer need to special case EventTriggers. Remove
36935         some dead code (yippie!)
36936         * runtime.cpp: Unregister the target when removing from the
36937         collection.
36939 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36941         * runtime.h: Implement Inlines.
36942         * value.cpp, value.h, type.cpp: Updated.
36944 2007-06-12  Jackson Harper  <jackson@ximian.com>
36946         * runtime.cpp|h: Hook up the UIElement::Triggers and
36947         EventTrigger::Actions/RoutedEvent properly.
36948         * xaml.cpp: Remove some of the special casing for event triggers
36949         now that they are proper DependencyProperties.
36951 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36953         * typegen.cs: Now checks if classes that inherits DependencyObject
36954         implement GetObjectType.
36955         * animation.h, runtime.h, text.h, geometry.h, shape.h: Implement
36956         missing GetObjectTypes and fix a few that were returning the wrong
36957         type.
36959 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36961         * runtime.cpp: 
36962         - (DependencyObject::SetValue): Allow assigning an object of a 
36963           more derived type than the defined property type. Change the
36964           attached_list code to handle NULL dependency_objects.
36965         - Delete types_init, it's generated now.
36966         - Delete Value:As[DependencyObjects], its generated now.
36967         * runtime.h: Added definitions for a few missing collection classes.
36968         * types.cpp[.in], value.cpp[.in], value.h.in: Added.
36969         * value.h: Update.
36970         * Makefile.am: Add types.cpp and value.cpp
36971         * typegen.cs, typegen.cs: Added, generates types.cpp, value.cpp, 
36972         value.h and Kind.cs from the headers.
36974 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36976         * runtime.cpp, runtime.h: (DO/DP) Make all char*'s const.
36978 2007-06-12  Chris Toshok  <toshok@ximian.com>
36980         * clock.h, clock.cpp, runtime.cpp, value.h: use a
36981         TimelineCollection to store child collections in TimelineGroup.
36983 2007-06-12  Chris Toshok  <toshok@ximian.com>
36985         * animation.h, animation.cpp (animation_init): remove the
36986         clock.cpp property registration.
36987         (DoubleAnimationUsingKeyFrames::GetNaturalDurationCore): initial
36988         attempt, calculate our timespan from our key frames.
36989         (Animation::GetNaturalDurationCore): return a 1 second duration,
36990         as doc'ed on msdn.
36991         (UpdatePropertyValue): plug leak.
36993         * runtime.cpp (runtime_init): call clock_init.
36995         * clock.h, clock.cpp: largish pass at implementing support for
36996         Duration::Automatic in ClockGroups (where they query their child
36997         timelines to see how long they should make themselves).  Also, add
36998         clock_init.
37000         * xaml.cpp (timespan_from_str): correct math.
37002 2007-06-12  Jackson Harper  <jackson@ximian.com>
37004         * xaml.cpp: Add a couple more of the animation elements.
37006 2007-06-12  Jackson Harper  <jackson@ximian.com>
37008         * runtime.cpp|h: There is no public Triggers property.
37010 2007-06-12  Miguel de Icaza  <miguel@novell.com>
37012         * runtime.cpp (DependencyObject::RegisterFull): Allow for
37013         properties to be flagged as attached, and only propagate the child
37014         notification to those those that care about it.
37016 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37018         * Implement a mechanism to keep track of parents and notify
37019         parents of changes in attached properties.
37021 2007-06-11  Jackson Harper  <jackson@ximian.com>
37023         * xaml.cpp: Add content properties, and handle collections that
37024         are content properties, by implicitly adding items to the
37025         collections.
37027 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com>
37029         * runtime.cpp: Remove matrix initialization (to avoid double-inits in 
37030         most cases).
37031         * transform.cpp: Add matrix initialization in TransformGroup::
37032         GetTransform. Makes the API safer :)
37034 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com> 
37036         * geometry.cpp: Implemented [Ploy]QuadraticBezierSegment::Draw.
37038 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com>
37040         * geometry.cpp|h: Add drawing of [Poly]LinesSegment and 
37041         [Poly]BezierSegment. More than half of Sam Ruby's samples can work
37042         with this.
37044 2007-06-11  Jeffrey Stedfast  <fejj@novell.com>
37046         * ffvideo.cpp: Attempt to get video to be in sync with audio by
37047         using the audio pts as the target_pts.
37049 2007-06-11  Jackson Harper  <jackson@ximian.com>
37051         * runtime.cpp: Register the collection types as derived from
37052         COLLECTION.
37054 2007-06-11  Chris Toshok  <toshok@ximian.com>
37056         * xaml.cpp (timespan_from_str): fix reading off the end of digits
37057         array.
37059 2007-06-11  Jackson Harper  <jackson@ximian.com>
37061         * xaml.cpp: Implement some more collection loading. A lot of
37062         duplicate code here, so I should probably refactor things a bit,
37063         but will wait until I've seen how more collections are laid out.
37065 2007-06-11  Chris Toshok  <toshok@ximian.com>
37067         * animation.h, animation.cpp: use KeyFrameCollection's for the
37068         *AnimationUsingKeyFrames key frame stuff, instead of GLists.
37070         * value.h, runtime.cpp: add Value::AsKeyFrameCollection.
37072 2007-06-11  Jackson Harper  <jackson@ximian.com>
37074         * xaml.cpp: Make the parents of collections the Collection ghost
37075         element.  This is a first step in cleaning up collection creation
37076         a little.
37078 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com> 
37080         * transform.cpp: remove dead code.
37081         * xaml.cpp: Partial collection support for geometry.
37083 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com>
37085         * transform.cpp: Multiply each matrix in a TransformGroup (fix the 
37086         open-clipart sample, at least the correct parts of the sample).
37087         * runtime.cpp: Always initialize the matrix in item_get_render_affine
37088         otherwise we'll end up with bad random results.
37090 2007-06-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37092         * runtime.h, runtime.cpp: (DependencyObject) Add SetValue/GetValue 
37093         overloads that takes strings as well as DP, GetDependencyProperty where 
37094         it's possible to specify whether the parent type is searched for the
37095         property or not, and a HasProperty method
37097 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com>
37099         * geometry.cpp|h: Fix function names wrt type.
37100         * shape.cpp: Detect RenderTransform and RenderTransformOrigin changes
37101         and call update_xform. This fix the "atom" sample :)
37102         * transform.cpp: Fix Rotate and Scale around a center point.
37104 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com> 
37106         * geometry.cpp: Add more precision to types.
37107         * runtime.cpp: Apply Canvas' RenderTransform and RenderTransformOrigin
37109 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com> 
37111         * brush.cpp: Implement Opacity for SolidColorBrush.
37112         * runtime.cpp|h: Add an UIElement parameter to SetupBrush so we can 
37113         access it's properties (e.g. Opacity in this case). Add uielement_
37114         [g|s]et_opacity functions.
37115         * shape.cpp: Supply the UIElement when setting up brushes.
37117 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com>
37119         * shape.cpp: Fix rounded rectangle when radius_[x|y] are larger than 
37120         half the width|height.
37122 2007-06-10  Miguel de Icaza  <miguel@novell.com>
37124         * shape.cpp (OnPropertyChanged): Implement this property for most
37125         shapes: if the property is set, we need to invalidate and
37126         repaint. 
37128         * runtime.h (FullInvalidate): A method to perform a queue to
37129         redraw the underlying region, update the bounds and queue an
37130         update for the new region.
37132         * runtime.h (Base): make destructor virtual so that base_unref can
37133         call delete (Base *) p.   Exposed by the managed code when the
37134         first base_unref ran for the first time :-)
37136         I sense a leak!
37138         * runtime.cpp (surface_attach): invalidate the areas before and
37139         after, compute the bounds using item_update_bounds, not the
37140         getbounds method directly.
37142 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com>
37144         * xaml.cpp: Add PathFigure[Collection]/Segments support.
37146 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com> 
37148         * brush.cpp: Fix Green definition, like GDI+ MS use a dark (0x80)
37149         green unlike other basic colors (red/blue at 0xFF).
37150         * xaml.cpp: Don't assert on an empty collection.
37152 2007-06-10  Miguel de Icaza  <miguel@novell.com>
37154         * runtime.cpp, runtime.h (BasicArray): New base struct for
37155         PointArray and double array, puts the count field at the beginning
37156         and avoids an extra block to be allocated (count and values are
37157         now on a single contiguous block).
37159         Introduce a refcount for the arrays, so that we can release those
37160         properly.  Due to the nature of how we copied values before we
37161         had to leak the values, when the leak was plugged, we crashed.  
37163         The refcount is there just because it was easy, we could clone if
37164         we wanted, but also I would like to keep the refcount there to
37165         ensure that the array of doubles is aligned on an 8 byte
37166         boundary. 
37168         (double_array_new, point_array_new): New methods to create the
37169         structures. 
37171         (Value): Now free the arrays.
37172         
37174 2007-06-09  Sebastien Pouliot  <sebastien@ximian.com>
37176         * geometry.cpp|h: Add/complete PathFigureCollection and 
37177         PathSegmentCollection. Doesn't parse from xaml.
37178         * runtime.cpp, value.h: Add support for new classes.
37180 2007-06-09  Sebastien Pouliot  <sebastien@ximian.com>
37182         * geometry.cpp|h: Complete GeometryGroup with GeometryCollection.
37183         But color rending is not yet correct in demo files.
37184         * runtime.cpp, value.h: Add support for GeometryCollection
37185         * xaml.cpp: Add support for GeometryGroup
37187 2007-06-09  Chris Toshok  <toshok@ximian.com>
37189         * animation.h, animation.cpp, value.h, runtime.cpp: add
37190         ColorKeyFrame and it's linear/discrete subclasses, as well as
37191         ColorAnimationUsingKeyFrames.
37193 2007-06-09  Chris Toshok  <toshok@ximian.com>
37195         * animation.h, animation.cpp, value.h, runtime.cpp: add the
37196         Discrete keyframes for point and double.
37198 2007-06-09  Chris Toshok  <toshok@ximian.com>
37200         * genkindcs.sh: new file, a script to generate
37201         olive/class/agclr/Mono/Kind.cs.
37203         * value.h: add marker comments so that genkindcs.sh works.  Also,
37204         remove the explicit value assignments to enum elements <
37205         DEPENDENCY_OBJECT.  there's no need for it.
37207 2007-06-09  Chris Toshok  <toshok@ximian.com>
37209         * demo.cpp (main): add in another animation, this one using
37210         keyframes, that moves a square around in a square, while animating
37211         its background color the same way as the other rectangles.
37213         * value.h, runtime.cpp: add in the keyframe types.
37215         * runtime.cpp (DependencyObject::DependenceyObject): fix a
37216         valgrind error - we shouldn't be "free"ing Values, since they're
37217         "new"ed.  Add free_value and use that for the hash table value
37218         dtor, and delete them correctly.
37220         * animation.h, animation.cpp: add a lot of the keyframe animation
37221         stuff.  DoubleAnimationUsingKeyFrames + LinearDoubleKeyFrame is
37222         the only tested configuration, though.
37224         * clock.cpp (everywhere): guint64->TimeSpan fixing.
37225         (TimeUpdated): turns out that not only does the progress go from
37226         1.0 to 0.0 when reversed, but current_time actually goes backward
37227         as well.  this has the nice effect of actually simplifying this
37228         method substantially, since we can always compute progress as
37229         time/duration.
37231         * clock.h: typedef TimeSpan to gint64 (switching from guint64
37232         everywhere), and update the api to use this.
37234 2007-06-09  Miguel de Icaza  <miguel@novell.com>
37236         * runtime.h (value_color_from_argb): Temporary hack until we
37237         figure out how to marshal Colors properly, we are using the uint32
37238         constructor, we should figure out if this is what we want, or if
37239         we should go down the route of using doubles (C++ stores thinks as
37240         Doubles our managed API as bytes).
37242 2007-06-10  Jackson Harper  <jackson@ximian.com>
37244         * xaml.cpp: Handle the TransformGroup default collection.
37245         - Add Value's to the collection
37247 2007-06-09  Jackson Harper  <jackson@ximian.com>
37249         * transform.cpp|h: C style constructor for TransformGroup
37250         * xaml.cpp: Implement loading transform groups and transform
37251         collections
37253 2007-06-09  Jackson Harper  <jackson@ximian.com>
37255         * value.h:
37256         * runtime.cpp:
37257         * transform.cpp|h: Impplement transform groups and transform
37258         collections.
37260 2007-06-09  Jackson Harper  <jackson@ximian.com>
37262         * value.h:
37263         * runtime.cpp|h: Use the new collection classes for triggers and
37264         actions. These are unsettable, so don't register them as
37265         DependencyProperties.
37267 2007-06-08  Everaldo Canuto  <ecanuto@novell.com>
37269         * runtime.cpp: In surface_destroy check for toplevel before unref
37270         it. 
37272 2007-06-08  Chris Toshok  <toshok@ximian.com>
37274         * animation.h: remove the huge whitespace gap after KeyTime, and
37275         remove the ifdef'ed out Nullable<T> template.
37276         
37277         * animation.cpp: remove the unused point_animation C api, and use
37278         the overloaded + operator on Color and Point when initializing
37279         "end" in GetCurrentValue for those animations.  They're looking
37280         more and more similar.
37282 2007-06-08  Chris Toshok  <toshok@ximian.com>
37284         * globally: move away from all uses of Value::u union.  switch
37285         everything to using Value::As* methods, which do typechecking and
37286         safe downcasting.
37287         
37288         * value.h: make the union private to catch anyone accessing it
37289         directly.
37291         * runtime.cpp (IsSubclassOf): return true if type == super.  Not
37292         strictly "subclass", but it makes this method a little more
37293         useful/efficient.  Add As* methods for string, point arrays, and
37294         double arrays, and add nullable As* methods for the types which
37295         don't return pointers already.
37297 2007-06-09  Jackson Harper  <jackson@ximian.com>
37299         * xaml.cpp: Parse time spans correctly.
37301 2007-06-08  Miguel de Icaza  <miguel@novell.com>
37303         * runtime.h (UIElement): Remove user_xform_origin as a field, now
37304         we pull this from the DependencyObject as it should be. 
37306         * runtime.cpp (UIElement::OnSubPropertyChanged): Catch a bunch of
37307         other properties that would trigger an invalidate/bounds
37308         recomputation. 
37310         (item_init): initialize the other properties that the managed code
37311         needs. 
37312         
37313         * shape.cpp, ffvideo.cpp: updated to use the
37314         RenderTransformOriginProperty in the computation of the center for
37315         the transformation.
37317 2007-06-08  Chris Toshok  <toshok@ximian.com>
37319         * Makefile.am (libmoon_la_SOURCES): add value.h
37321         * runtime.h, value.h: move the Value structure to value.h, since
37322         it (and its required forward decls) have grown huge.
37323         
37324         * runtime.cpp: add all the Value::As* methods, yay for CPP.
37326 2007-06-08  Jeffrey Stedfast  <fejj@novell.com>
37328         * ffvideo.cpp (queue_data): Replaced the sound code with my newest
37329         implementation, seems to play sound correctly now.
37331 2007-06-08  Chris Toshok  <toshok@ximian.com>
37333         * clock.h, clock.cpp: move all the TimeManager/Clock/Timeline
37334         stuff here, to help relieve some of the pressure building up in
37335         animation.h/animation.cpp.
37337 2007-06-08  Chris Toshok  <toshok@ximian.com>
37339         * animation.cpp: add some skeleton code for point keyframe
37340         animations, and reduce all the Double/Point/Color Animation
37341         GetCurrentValue() methods to much the same, using LERP and the
37342         operators defined in runtime.h.
37344         * runtime.cpp (types_init): register the new keyframe types.
37346         * runtime.h: add some new animation types to Value, and add
37347         operators for +, -, and * (scalar) for Color and Point to make the
37348         animation code a little more concise.
37350         * animation.h: add some new classes/structs for use in keyframe
37351         animations.
37353 2007-06-08  Miguel de Icaza  <miguel@novell.com>
37355         * runtime.cpp, runtime.h (Collection): Rework the collection to
37356         use abstract methods (gulp), 
37358         (VisualCollection): New collection, derives from Collection, does
37359         the collection thing.
37361         (Panel.OnPropertyChanged): If our children collection is updated,
37362         take care of it here.
37364         (DependencyObject): use free instead of g_free as we are
37365         allocating strings with strdup.
37366         
37367         (Value): drop constructor that specified type, type is not part of
37368         Value.
37369         
37370         * xaml.cpp, shape.cpp: Remove use of the old destructors now that we keep
37371         track of types correctly.
37373 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
37375         * brush.cpp: Fix color formats argb and rgb (too dark).
37377 2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37379         * runtime.h, runtime.cpp: Change Value::Kind to not have any holes
37380         in the integer ranges, and change Type's type hashtable to an array
37381         of types, indexed by Value::Kind. Also add Value::COLLECTION and 
37382         update Collection to use it.
37384 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
37386         * shape.cpp|h: Add Path::CanFill as it depends on the Geometry 
37387         object(s) being used.
37388         * geometry.cpp|h: Implemented Poly[Line|Bezier|QuadraticBezier]Segment
37389         Points properties and some basic draw stuff too.
37391 2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37393         * runtime.h, runtime.cpp, shape.cpp, xaml.cpp:
37394         Remove the Value (DependencyObject, Kind) constructor,
37395         the type of the DependencyObject can be obtained directly 
37396         from the DependencyObject itself now, and update all uses
37397         to the Value (DependencyObject) constructor.
37399 2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37401         * *.h, *.cpp: Remove objectType and SetObjectType from 
37402         DependencyObject, make DependencyObject::GetObjectType virtual, 
37403         and update all inheritors of DependencyObject to not use 
37404         SetObjectType, but override GetObjectType.
37406 2007-06-08  Jackson Harper  <jackson@ximian.com>
37408         * xaml.cpp: Add some type checks to ensure we are setting child
37409         properties to legal types.
37410         - explicitly set properties value types, Value now requires this.
37411         - fix warning
37413 2007-06-08  Jackson Harper  <jackson@ximian.com>
37415         * runtime.cpp: Initialize the surface to NULL
37416         - use UIElement as the type for flags 
37418 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com> 
37420         * shape.h: Don't waste time trying to fill lines.
37421         * shape.cpp: Fix dashes support. First reset between shapes and, 
37422         second, handle cairo dislike of a single dash value of 0.0.
37424 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
37426         * shape.cpp|h: Some shapes, like polylines, don't supports Fill.
37428 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com> 
37430         * shape.cpp|h: Implement Polygon::Points aad Polyline:Points 
37431         properties as DependencyProperty. Adjust their Draw methods.
37432         * runtime.cpp: Implement point_array_from_str.
37434 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
37436         * shape.cpp|h: Add DP support for StrokeDashArray (double*).
37437         * runtime.cpp|h: Add double* and Point* (array) support to Value.
37438         * xaml.cpp: Add DOUBLE_ARRAY and POINT_ARRAY support. Supply value 
37439         kind for brushes to avoid runtime warnings.
37441 2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37443         * runtime.cpp, runtime.h: Implemented a type system that tracks
37444         types' name and parent type.
37446 2007-06-08  Miguel de Icaza  <miguel@novell.com>
37448         * runtime.cpp (Panel): Make children a property of the panel so we
37449         can access it from the managed world.
37451         (Value): Add new constructor that takes a full type, need to
37452         discuss this with the team.
37454 2007-06-08  Jackson Harper  <jackson@ximian.com>
37456         * animation.cpp|h: Implement BeginStoryboard
37457         * runtime.cpp|h: Implement event triggers
37458         - Fire a loaded event when we first render an element
37459         * xaml.cpp: Implement parsing and loading storyboard and begin
37460         storyboard as well as event triggers and some of the property
37461         types that go with these guys.
37462         
37463 2007-06-08  Miguel de Icaza  <miguel@novell.com>
37465         * runtime.cpp (runtime_init): Add panel_init
37467         (panel_init): Register Children property (must still create the
37468         collections, that will be a new fight).
37470 2007-06-07  Miguel de Icaza  <miguel@novell.com>
37472         * xaml.cpp (start_element_handler): For the top element, track the
37473         type that we loaded, so we can return this to our caller (needed
37474         for the managed interface).
37476         (XamlParserInfo): track also the Value::Kind of the top_element. 
37478         (xaml_create_from_file, xaml_create_from_str): Both now can
37479         optionally return the type of the toplevel element.
37481         * runtime.cpp (Value): Switch Value to strdup/free.
37483         Use inited to prevent multiple initializations.
37485 2007-06-07  Chris Toshok  <toshok@ximian.com>
37487         * demo.cpp (main): track more of the api axing.
37489         * animation.h, animation.cpp (Storyboard::Begin): return
37490         immediately if we've already got a root clock.
37491         (globally) continue axing unused C api.
37493 2007-06-07  Chris Toshok  <toshok@ximian.com>
37495         * demo.cpp: track all the animation changes away from the C api,
37496         and also test out the from/by animation combination by making the
37497         X scaling only go From 1.0 By -0.5 (so it animates in the range of
37498         [1.0..0.5].
37499         
37500         * animation.h, animation.cpp: lots of changes - get rid of many of
37501         the animation/timeline C api calls, since they're unnecessary for
37502         the binding.  Implement the nullable property getter/setters as
37503         #defines since I didn't want to c&p all of them and make the
37504         obvious mistakes.  While I'm at it, implement the thing I needed
37505         nullable typed values for - "by" animation support.  Now you can
37506         specify any of the following combinations and get a usable
37507         animation: From+By, From+To, By, To.  You can actually just put
37508         From as well, but it won't animate (since both start end end will
37509         be the same).  The To property overrides the By property, if both
37510         are present.
37512         * runtime.h, runtime.cpp: add an overload of
37513         DependencyProperty::SetValue which takes a Value*, to enable
37514         nullable types to be set.  the existing SetValue method calls the
37515         new one with &value.
37517 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
37519         * brush.cpp: Fix comment.
37520         * shape.cpp: Reduce duplication.
37522 2007-06-07  Miguel de Icaza  <miguel@novell.com>
37524         * runtime.h: Store Value.BOOL in an int32, simplifies my life. 
37526         * runtime.cpp (dependency_object_set_value,
37527         dependency_object_get_value): Add C# callable method calls to
37528         control the properties.
37530         (dependency_property_lookup): Add a way of find dependency
37531         properties.
37533 2007-06-07  Chris Toshok  <toshok@ximian.com>
37535         * animation.cpp (TimeUpdated): comment out some spew.
37537         * runtime.cpp (SetValue): use the copy ctor, and fix != check for
37538         current_value and value.
37539         (Value::Value): add a copy ctor, which takes care of the g_strdup
37540         for us.
37542         * runtime.h: add copy ctor for Value.
37544 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
37546         * brush.cpp, geometry.cpp, shape.cpp: Protect against NULL properties.
37548 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com> 
37550         * geometry.cpp: #if-out transforms, it crash the xaml samples
37551         * runtime.h: Fix hierarchy. Panel inherits from FrameworkElement.
37553 2007-06-07  Chris Toshok  <toshok@ximian.com>
37555         * animation.cpp: switch all the various linear interpolation
37556         expressions to using the LERP macro, and add the PointAnimation
37557         implementation.
37559         * animation.h: add PointAnimation.
37561         * runtime.h: add Value::POINTANIMATION.
37563 2007-06-07  Chris Toshok  <toshok@ximian.com>
37565         * runtime.h (Value): add COLORANIMATION to the list of types.
37566         Also, add a Kind constructor so we can use that for nullable type
37567         default values in the ::RegisterProperty calls.  That is,
37568         initializing the default to Value(Value::COLOR) gives you a null
37569         default value with the COLOR type.
37571         * runtime.cpp (Value): new Kind ctor.
37573         * animation.cpp/.h: add ColorAnimation.
37575         * demo.cpp (main): add a color animation that interpolates between
37576         Red and Blue for the SolidColorBrush.
37578 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
37580         * runtime.cpp: Restore alpha support. Don't call cairo_set_operator
37581         without a cairo_save|restore pair (or without resetting it's original
37582         value). Anyway right now it works without any of that :)
37584 2007-06-07  Jackson Harper  <jackson@ximian.com>
37586         * runtime.cpp|h: add event triggers.
37587         * xaml.cpp: parse event triggers.
37589 2007-06-07  Chris Toshok  <toshok@ximian.com>
37591         * animation.cpp/.h (Clock): initialize duration here.
37592         (TimeUpdated): instead of getting it every time through this
37593         function.
37595 2007-06-07  Chris Toshok  <toshok@ximian.com>
37597         * animation.h: make Duration::FromSeconds return numbers of the
37598         same magnitude as get_now().
37600         * animation.cpp (Clock): fix UMR.
37602 2007-06-07  Jackson Harper  <jackson@ximian.com>
37604         * xamp.cpp: Oops, not sure how that happened.  Set the property
37605         name correctly, not to the type name.
37607 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
37609         * geometry.cpp|h: Apply transform. Fix default values.
37611 2007-06-07  Miguel de Icaza  <miguel@novell.com>
37613         * animation.cpp (get_now): The time computation was wrong, there
37614         was an extra "10" in there that made all computations go astray
37615         and in particular cause the large values for ScaleY, which made
37616         getboundingbox ridiculously slow.
37618         For debugging purposes: ScaleY was being set to
37619         131472940552.95215, which came from
37620         DoubleAnimation:GetCurrentValue which was computing this value
37621         from a busted clock.
37623 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
37625         * geometry.cpp|h: Add drawing for [Ellipse|Line|Rectangle] geometry.
37626         Add basic code for the other geometry types.
37627         * runtime.cpp|h: Add basic implementation for point_from_str and 
37628         rect_from_str 
37629         * shape.h: Export some cairo helpers.
37630         * shape.cpp: Refactor drawing to reuse the code from geometry.
37631         * xaml.cpp: Add Point and Rect parsing.
37633 2007-06-07  Chris Toshok  <toshok@ximian.com>
37635         * demo.cpp: make all the animation stuff work declaratively, and
37636         test some of the different repeatbehavior and autoreverse
37637         settings.
37638         
37639         * animation.cpp: huge block of nasty code to determine our
37640         progress given the combinations of autoreverse and repeatbehavior.
37642         * animation.h: Add Duration stucture, add a few C api calls for
37643         getting/setting timeline properties.
37645         * runtime.h, runtime.cpp: add DURATION support to Value.
37646         
37647 2007-06-07  Jackson Harper  <jackson@ximian.com>
37649         * runtime.cpp|h: Some pieces of the triggers framework.
37651 2007-06-07  Jackson Harper  <jackson@ximian.com>
37653         * xaml.cpp: Handle repeat behaviors, lookup attached properties.
37655 2007-06-06  Chris Toshok  <toshok@ximian.com>
37657         * animation.cpp, animation.h: add timeline_set_autoreverse.
37659 2007-06-06  Chris Toshok  <toshok@ximian.com>
37661         * animation.h: add prototype for timeline_set_repeat_behavior.
37662         
37663         * animation.cpp (animation_init): register the RepeatBehavior
37664         property.
37665         (timeline_set_repeat_behavior): new function.
37667         * runtime.h: a better solution to enforcing types in the Value
37668         ctors - make Value (void*) private.  this gives compilation errors
37669         at all usage points where you're passing an unrecognized pointer
37670         type.  Also, add RepeatBehavior support to Value.
37672         * runtime.cpp: add repeatbehavior support to Value.
37673         
37674         * geometry.cpp: change all Value(pointer-to-struct) calls to
37675         Value(struct) calls.
37677         * transform.h: we need do define TransformGroup as a subclass of
37678         Transform, or the functions that SetValue a transformgroup fail to
37679         compile (since it's not a descendent of DependencyObject.)
37681 2007-06-07  Jackson Harper  <jackson@ximian.com>
37683         * xaml.cpp: Get object element property setting working.
37685 2007-06-06  Chris Toshok  <toshok@ximian.com>
37687         * runtime.h, runtime.cpp: add a special void* ctor to value so
37688         pointers aren't silently converted to bool (bad c++, bad!), and
37689         have that ctor output a warning message to the console, along with
37690         the likely cause.
37692         * brush.cpp: need to deref the Color* in the Value ctor.
37694 2007-06-06  Chris Toshok  <toshok@ximian.com>
37696         * animation.cpp: new dump of the animation stuff.  this is much
37697         closer in spirit and implementation to that of WPF's
37698         timing/animation system.  it's not perfect yet, but it's much,
37699         much closer.
37701 2007-06-06  Chris Toshok  <toshok@ximian.com>
37703         * runtime.h: make the point/color/rect copy constructors take a
37704         ref, not a pointer.  also, make the value contructors for struct
37705         types by-value.
37707         * runtime.cpp: make the value constructors for struct types
37708         by-value.
37710         * brush.cpp (brush_init): pass the Color by value.
37712 2007-06-06  Chris Toshok  <toshok@ximian.com>
37714         * runtime.h, runtime.cpp: move the Value implementation (for
37715         everything but the operators) to the .cpp file.
37717 2007-06-06  Miguel de Icaza  <miguel@novell.com>
37719         * runtime.h, runtime.cpp: Surface is no longer derived from
37720         Canvas, it now instead hosts a canvas, should avoid having two
37721         nested canvases for loading XAML files.
37723         demo.cpp: update.
37725         Correct computation of the bounding box for shapes and videos.
37727         * shape.cpp: Do not pop the cairo state after draw and then call
37728         extents as the computation on extents is done with the current
37729         cairo context, not the cairo context that drew the data before
37730         popping (this would show up with thick brushes).
37732         * runtime.cpp: Add 2 instead of 1, as double to integer rounding
37733         can take two values (negative and positive).
37735         * cutil.cpp: Cut and paste cairo code here, it computes the proper
37736         bounding box from the extents using the current absolute matrix. 
37738         * ffvideo.cpp (queue_data): Memory leak gone.
37740 2007-06-06  Jackson Harper  <jackson@ximian.com>
37742         * xaml.cpp: Set brush attributes.
37744 2007-06-06  Jackson Harper  <jackson@ximian.com>
37746         * runtime.h:
37747         * transform.h: Need to register this base DependencyObject for the
37748         xaml parser.
37749         * geometry.cpp: use correct value kind for registering properties
37750         * runtime.cpp: Don't be strict about the type with properties that
37751         derive from DependencyObject, we can't be too strict here, because
37752         of inheritance the registered type BRUSH could be set to
37753         SOLIDCOLORBRUSH
37754         - register some properties with the correct type
37755         
37756 2007-06-06  Jackson Harper  <jackson@ximian.com>
37758         * animation.cpp|h:
37759         * runtime.h: Staring to add triggers
37760         * shape.cpp: Use brush as our property kind
37761         
37762 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
37764         * runtime.h: Add new types and SweepDirection enum.
37765         * geometry.cpp|h: Add PathFigure, ArcSegment, BezierSegment and 
37766         LineSegment classes and [g|s]etter functions.
37768 2007-06-06  Miguel de Icaza  <miguel@novell.com>
37770         * runtime.h: Move all the types into the Value::Kind enumeration
37771         so that we can have a shared type system.
37773         * demo.cpp (main): Allow loading a XAML file from the command
37774         line, for your testing pleasure.
37776         * ffvideo.cpp (convert_to_rgb): We no longer need the loop to swap
37777         channels.
37779         Move to cairo to render to the screen the contents
37780         of the buffer.   ffmpeg and cairo do have the same RGBA format, it
37781         was actually the copy from this format to the screen using
37782         gdk_draw_pixbuf that failed: pixbuf expected the data in another
37783         format and there is no way to configure it.
37784         
37785         * runtime.cpp (surface_clear): use the cairo api as the surface is
37786         no longer living on the client buffer. 
37788         (surface_destroy): update
37790         (create_xlib, realized_callback, unrealized_callback): When the
37791         widget is realized, create a cairo context
37793 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
37795         * runtime.h: Add Value support for Point and Rect
37796         * geometry.cpp: Implement [g|s]etters for Point and Rect properties
37798 2007-06-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37800         * runtime.cpp, runtime.h: Added DependencyObject::GetObjectType.
37802 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
37804         * shape.cpp|h, runtime.cpp|h: Remove the (now) useless 
37805         set_prop_from_str methods since everything they handled is now
37806         moved into DependencyProperty.
37808 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com> 
37810         * shape.cpp|h: Use DependencyProperty for Shape Fill and Stroke 
37811         brushes. Add getter functions for fill and stroke.
37813 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
37815         * runtime.h: Call SetObjectType on Brush and SolidColorBrush
37817 2007-06-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37819         * runtime.cpp, runtime.h: Remove the default_values hashtable
37820         from DependencyObject, it's redundant since the default value
37821         is stored inside the DependencyProperty anyway.
37823 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
37825         * demo.cpp: Adapted to API changes.
37826         * brush.cpp: Add [g|s]etters for Brush and SolidColorBrush using
37827         DependencyProperty. Add brush initialization code.
37828         * runtime.cpp|h: Change Brush to inherit from DependencyObject. 
37829         Add Color support to Value. Call brush initialization.
37830         * shape.cpp: Add miter, pen join|cap and fill rule drawing support.
37831         * xaml.cpp: Adapted to API changes since SolidColorBrush now inherits
37832         from DependencyObject.
37834 2007-06-06  Jeffrey Stedfast  <fejj@gnome.org>
37836         * ffvideo.cpp (convert_to_rgb): Make sure the frame->data is
37837         non-NULL before trying to scale.
37839 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
37841         * brush.cpp: Fix compiler warning.
37843 2007-06-06  Jackson Harper  <jackson@ximian.com>
37845         * runtime.cpp/h: initialize xaml
37846         - Add canvas C style constructor
37847         - Make SolidColorBrush's Color public
37848         * shape.cpp: Comment out the set_prop... stuff, this code won't be
37849         used anymore, now that the xaml parser is using dependency objects
37850         to set properties.
37851         * animation.cpp|h:
37852         * transform.cpp|h: Add some C style constructors
37853         * brush.cpp: Create colors from a string instead of solid brushes
37854         * xaml.cpp: Add in a known element tree, and move property setting
37855         into the xaml code, also added code for setting properties with
37856         property element syntax
37857         
37858 2007-06-05  Miguel de Icaza  <miguel@novell.com>
37860         Add type checking on SetValue, RegisterProperty to avoid
37861         mistakes. 
37862         
37863         * runtime.cpp (SetValue): Add simple type checking
37864         (Register): Ensure that no empty values are passed. 
37866         * runtime.h (DependencyObject): events, remove unused field.
37868 2007-06-05  Chris Toshok  <toshok@ximian.com>
37870         * runtime.cpp: we need to maintain another hash table for
37871         DependencyProperties so we can return the actual property, not the
37872         default value, which is what GetDependencyProperty needs to do.
37873         (DependencyObject::FindName): implement this by either trying to
37874         use the namescope on this object or the global_NameScope (rather
37875         suboptimal, it's supposed to 'walk the logical tree' according to
37876         msdn).
37878         partially implement NameScope.
37880         * runtime.h: add NameScope, and add a uint64 Value.  Also add
37881         FindName on DependencyObject.
37883 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
37885         * shape.cpp|h: Add Shape's thickness and some dash support. Add more
37886         [g|s]etters for Shape using DependencyProperty.
37887         * demo.cpp: Add thickness and dashes to the rectangles.
37889 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com> 
37891         * shape.cpp|h: Move FrameworkElement stuff into runtime.cpp|h. Use
37892         functions to retrieve the height and width of shapes (values defined
37893         in FrameworkElement).
37894         * runtime.cpp|h: Use DependencyProperty for FrameworkElement Height 
37895         and Width properties.
37896         * demo.cpp: Adjust to API changes.
37898 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
37900         * shape.cpp: Remove (now) useless properties in Line.
37902 2007-06-05  Miguel de Icaza  <miguel@novell.com>
37904         * shape.cpp, ffvideo.cpp, video.cpp: Do not use x, y anymore, we
37905         now have an absolute affine set for us beforehand.
37907         * runtim.cpp: on update_xform call the parent ::get_xform_for to
37908         obtain the base affine transform to use.
37910 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
37912         * geometry.cpp|h: Use DependencyProperty for properties.
37913         * transform.h: Protect.
37915 2007-06-05  Chris Toshok  <toshok@ximian.com>
37917         * runtime.h: call SetObjectType where we need it.
37919         * shape.h: same.
37920         
37921         * geometry.h: same.
37923 2007-06-05  Miguel de Icaza  <miguel@novell.com>
37925         * ffvideo.cpp (VideoFfmpeg): Initialize audio_frames_size, caught
37926         by valgrind
37928         * runtime.cpp (item_set_transform): This routine was doing nothing
37929         but doing an invalidate of the region, updating the transform,
37930         updating the bounding box and re-invalidating the new area.   Move
37931         that logic elsewhere (it was also ignoring the affine parameter
37932         anyways). 
37934         Unify user_xform with the RenderTransform dependency property, now
37935         we always have a static absolute transformation in the UIElement. 
37937 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com> 
37939         * shape.cpp|h: Update shape_init with correct values and implement
37940          path_[g|s]et_data.
37942 2007-06-05  Chris Toshok  <toshok@ximian.com>
37944         * animation.cpp (ClockTimeChanged): use the instance variety of
37945         GetDependencyProperty.
37947         * runtime.cpp (GetDependencyProperty): just call the static
37948         variety with our objectType.
37949         (SetObjectType): method to enable subclasses to set the object
37950         type.
37952         * runtime.h: add DependencyObject::SetObjectType, as well as the
37953         instance version of DependencyObject::GetDependencyProperty.
37955         * transform.h: call SetObjectType to identify this object.
37957 2007-06-05  Chris Toshok  <toshok@ximian.com>
37959         * runtime.cpp (AddHandler): oops, g_list_append requires an assignment.
37961 2007-06-05  Chris Toshok  <toshok@ximian.com>
37963         * runtime.h (Canvas): declare our dependencyproperties here.
37965         * runtime.cpp (canvas_init): actually assign the properties.
37967 2007-06-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37968         
37969         * runtime.cpp, runtime.h: Implement a DependencyProperty::
37970         GetDependencyProperty.
37972 2007-06-05  Chris Toshok  <toshok@ximian.com>
37974         * runtime.cpp (OnSubPropertyChanged): remove the event handler for
37975         the render transform and use OnSubPropertyChange instead.
37976         (item_set_render_transform): clean this up substantially - the
37977         property system handles all the "event" stuff now.
37978         (item_get_render_transform): we need a getter now that this uses
37979         the depprop stuff.
37980         (NotifyAttacheesOfPropertyChange): new method, call
37981         OnSubPropertyChanged with both the attachee's property (the thing
37982         storing 'this') and the subproperty that changed.
37983         (SetValue): complicate the attachee stuff a bit, since we need to
37984         store both the object and the property it's storing the value in.
37985         (item_init): initialize RenderTransformProperty.
37987         * runtime.h: make UIElement subclass from DependencyObject. This
37988         flattens the hierarchy some from SL (which has Visual in between,
37989         but we have no Visual.)
37991         * transform.cpp (OnPropertyChanged): call
37992         NotifyAttacheesOfPropertyChange.  Also, reindent some stuff.
37994 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com> 
37996         * demo.cpp: Updated to use rectangle_set_radius_[x|y]
37997         * shape.cpp|h: Add [get|set]ter functions for Line and Rectangle
37998         * xaml.cpp: Updated for API change.
38000 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
38002         * runtime.h: Add new ctor for Color(uint). Change UIElement to inherit
38003         from DependencyObject.
38004         * brush.cpp: Complete named colors (wrt System.Windows.Media.Colors)
38006 2007-06-05  Jeffrey Stedfast  <fejj@gnome.org>
38008         * ffvideo.cpp (queue_data): If we fail to get an audio codec, then
38009         we simply cannot play sound (or maybe there is no sound), either
38010         way, don't try to dereference the audio_codec pointer if it is
38011         NULL. Also wrapped audio setup in an #ifdef
38013 2007-06-05  Miguel de Icaza  <miguel@novell.com>
38015         Implement the OnPropertySet stuff, builds on Toshok's first pass.
38017         Next stage: discuss with Toshok the migration to this awesome
38018         framework from Events ;-)
38019         
38020         * runtime.cpp (SetValue): when adding dependencyobjects track on
38021         the attached object the ownership.
38023         Notify all containers of a property change.
38025         * brush.cpp (Brush): Remove AddListener, RemoveListener, we can
38026         use the property notification system for these.
38028         * runtime.h (DependencyObject): Add a "attached_list" gslist to
38029         keep track of all the objects where this particular
38030         DependencyObject has been attached to, to provide OnPropertyChange
38031         notifications (not hooked up yet).
38033         (Value): Introduce DependencyObject constructor.
38035 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
38037         * shape.cpp|h: Started moving properties to DependencyObject. Added
38038         Path.
38039         * geometry.cpp|h: New. System.Windows.Media.Geometry related classes
38040         * runtime.cpp: Added calls to shape_init and geometry_init
38041         * runtime.h: Added Rect structure and new DependencyObject types for
38042         shapes and geometry.
38043         * Makefile.am: Added geometry.cpp|h to source files.
38045 2007-06-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
38047         * runtime.h: initialize Value to zero on construction.
38049 2007-06-05  Chris Toshok  <toshok@ximian.com>
38051         * demo.cpp: abstract the cairo transformations away by using
38052         RotateTransforms.. and this is probably going to annoy some
38053         people, but make the normally stationary elements bounce between
38054         smaller and larger.
38056         * animation.h: make Clock subclass from DependencyObject.
38058         * animation.cpp (animation_init): assign the properties, don't
38059         just call Register.
38061         also, track the EventObject method name change.
38063         * runtime.cpp (item_set_render_transform): new method.  unhook the
38064         old transform and hook up the new one.  also, explicit set our
38065         transformation here.
38066         (SetValue): make this only do the work (and more importantly only
38067         call OnPropertyChanged) if the value is different.
38069         * runtime.h: shorten the names of the EventObject methods.  Add
38070         operator== and operator!= to Value.  Add an EventObject to
38071         DependencyObject to give us rudimentary event handlers.  Add the
38072         render_transform "higher-level" transform into to UIElement.
38074         * transform.h: add the OnPropertyChanged override and rename
38075         transform_get_value to transform_get_transform.
38077         * transform.cpp (transform_init): oops.  we need to actually
38078         assign the properties.
38079         (transform_get_transform): indent.
38080         (OnPropertyChanged): override this method to emit
38081         "TransformChanged".
38083 2007-06-04  Chris Toshok  <toshok@ximian.com>
38085         * Makefile.am (libmoon_la_SOURCES): add animation and transform to
38086         the build.
38088         * runtime.h: flesh out Value some, adding BOOL (has to be C++
38089         bool, not gboolean, or else it conflicts with int32), INT32,
38090         INT64, and STRING (char*).
38092         * runtime.cpp (runtime_init): call animation_init and
38093         transform_init.
38095         * animation.cpp, animation.h, transform.h, transform.cpp: get
38096         these using the new dependency object/value foo, and get them
38097         compiling.
38099 2007-06-04  Miguel de Icaza  <miguel@novell.com>
38101         * runtime.h: Make the "Base" refcounting class the base for
38102         DependencyObject. 
38104         * ffvideo.cpp: Set audio initialization to zero for now, so we can
38105         continue debugging.
38107         * runtime.cpp (Canvas): override render, in preparation for using
38108         attached properties.   I get the feeling am going to regret not
38109         keeping the top/left attached properties somewhere else.
38111         (Value): introduce the discriminating union for values as
38112         discussed on irc.
38113         
38114         (DependencyObject): use lower case name for properties.
38115         Take Value * instead of void *, this is so we can represent NULL
38116         values (is this a good idea Chris, or do we want to have a
38117         Value.Type.NULL enumeration value?
38119         Update hash table creation to g_free the result on hash table
38120         update and removal.
38122         (Event): Update indentation to be Linux-like instead of GNU like.
38124 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
38126         * shape.cpp|h: Add Poly[line|gon] drawing code and C helper functions 
38127         to create them. Replace the "old" C1 constant in Ellipse::Draw with 
38128         ARC_TO_BEZIER (now that I know where it comes from ;-)
38130 2007-06-04  Jeffrey Stedfast  <fejj@novell.com>
38132         * ffvideo.cpp (queue_data): Got sound kinda sorta working...
38134 2007-06-04  Jackson Harper  <jackson@ximian.com>
38136         * xaml.cpp: Give elements a type
38138 2007-06-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
38140         * runtime.cpp, runtime.h: implemented DependencyProperty and DependencyObject.
38142 2007-06-04  Chris Toshok  <toshok@ximian.com>
38144         * animation.h, animation.cpp: initial pass at some of the
38145         animation stuff.  doesn't build yet.
38147 2007-06-04  Chris Toshok  <toshok@ximian.com>
38149         * runtime.cpp, runtime.h: add EventObject, a c++ only base class
38150         for managing events.
38152 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
38154         * shape.h: Remove Ellipse::set_prop_from_str, it's "virtually" empty
38155         and added Draw methods to Polygon and Polyline.
38156         * shape.cpp: Added round-corner rectangle support (RadiusX, RadiusY)
38157         and match changes in header file.
38159 2007-06-04  Jackson Harper  <jackson@ximian.com>
38161         * shape.cpp/h: width and height are properties of the
38162         FrameworkElement.
38164 2007-06-04  Jackson Harper  <jackson@ximian.com>
38166         * shape.cpp/h: add ellipse_new
38167         - set width/height on ellipses (ellipsi ?) and draw them.
38168         * xaml.cpp: create ellipses, get zorder correct
38170 2007-06-04  Jackson Harper  <jackson@ximian.com>
38172         * xaml.cpp: put in character data functionality, eventually we
38173         will need to add FrameworkElement methods for setting the default
38174         content element. See
38175         http://msdn2.microsoft.com/en-us/library/ms752059.aspx#contentmodels
38176         for more info on content properties.
38178 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
38180         * demo.cpp: Include shape.h and use a rounded-rectangle
38181         * runtime.h: Added FillRule and moved out Shapes.
38182         * shape.h: New. Moved all shapes from runtime.h and added new ones.
38183         * shape.cpp: Added Polygon and Polyline.
38184         * xaml.cpp: Include shape.h
38185         * Makefile.am: Add shape.h
38187 2007-06-04  Chris Toshok  <toshok@ximian.com>
38189         * transform.cpp, transform.h: initial code for the transform
38190         objects.  doesn't compile yet.
38192 2007-06-04  Jackson Harper  <jackson@ximian.com>
38194         * demo.cpp: fix typo
38196 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com> 
38198         * demo.cpp: Fix for API changes.
38199         * runtime.h: Add FrameworkElement, other Shape properties and move
38200         around some properties to match the managed definitions.
38201         * shape.cpp: Add setters for new Shape properties and move properties
38202         parsing to match managed definitions.
38203         * xaml.cpp: Fix for API changes.
38205 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
38207         * shape.cpp: Don't typecast doubles into ints.
38209 2007-06-04  Jackson Harper  <jackson@ximian.com>
38211         * runtime.h:
38212         * xaml.cpp: Implement function that allows you to load xaml from a
38213         chunk of text.
38214         * demo.cpp: add a very small xaml demo
38216 2007-06-04  Jackson Harper  <jackson@ximian.com>
38218         * xaml.cpp: remove old no longer used function.
38219         - track whether or not we are adding to a panel instead of surface
38220         * shape.cpp: Fix typo, need to set line_* not x1, x2, etc.
38222 2007-06-04  Jackson Harper  <jackson@ximian.com>
38224         * shape.cpp: Add new methods to allow shapes to have their
38225         properties filled in from text values.
38227         * brush.cpp: Start work on allowing solid color brushes to be
38228         created from strings.
38230         * runtime.cpp: stub in methods for setting properties on canvas
38231         and UIElements (these had some meat but I am removing it now that
38232         some of the names are updated, will put back later).
38234         * runtime.h: add some methods and functions for XAML parsing.
38236         * xaml.cpp: Initial implementation of the XAML parser.
38238 2007-06-03  Miguel de Icaza  <miguel@novell.com>
38240         * runtime.cpp (Collection, Panel): The beginning of an API to
38241         encapsulate collections that we will expose to the unmanaged
38242         world.  
38244         This should be the backend for the base collection class in agclr
38245         for the strongly typed types.   
38247         The idea is to have the MS.Internal.Collection<T> be a proxy that
38248         contains an IntPtr pointer to the C++ Collection instance and map
38249         the various add/remove methods to it.
38251         The immediate goal is to be able to do from C#:
38253                 Rectangle r = new Rectangle ();
38254                 r.Brush = new SolidColorBrush (new Color (1, 0, 0));
38255                 Canvas.Children.Add (r);
38257 2007-06-02  Miguel de Icaza  <miguel@novell.com>
38259         Implement support for the render origin.
38260         
38261         * runtime.cpp (item_invalidate): add one to cope with the rouding
38262         from floats to ints (fixes some trailing junk).
38264         Item: redo the affine transformation setup to support both the
38265         render_transform_origin property and avoid recomputing all of this
38266         on each repaint request.
38268         * ffvideo.cpp: Changed the code to do the actual video decoding on
38269         the main thread so we can put all the video and audio in the
38270         queues before we start rendering.
38272         Failed attempts at getting audio to work.
38274         * Everywhere: renamed Item to UIElement to better match the actual
38275         class hierarchy that we will be exposing.
38277 2007-06-01  Jackson Harper  <jackson@ximian.com>
38279         * shape.cpp: Fix typo.
38281 2007-06-01  Miguel de Icaza  <miguel@novell.com>
38283         * ffvideo.cpp: No longer use CMD_INITED, instead use g_idle_add to
38284         notify a special function (callback_video_inited).  Makes me
38285         wonder if I should do the same for the new-frame call
38287         Initialize the cairo surface on the callback_video_inited routine
38288         instead of doing this on the decoder thread (that was a mistake).
38290         This solves the misterious case of the video that randomly did not
38291         show up.
38293 2007-05-29  Miguel de Icaza  <miguel@novell.com>
38295         * video.cpp (load_next_frame): reimplement the video play back
38296         logic so that it will now properly paint the proper frame on the
38297         screen as needed.
38299         Add logic to skip frames if video is playing back too slowly, and
38300         to resume playback when new frames are ready.
38302         Currently its computing the delay using the n_frame_rate field
38303         (which no sample uses, but I could not find any other way of
38304         estimating the frame rate other than this.
38306         It works at least with some sample streams that I have with 30 fps
38307         and 15 fps.
38309         * runtime.cpp: Move the GtkDrawingArea widget into the Surface,
38310         and handle exposes in the runtime, not in the demo.   Show the
38311         widget (thats why I was not getting the expose events on the
38312         widget, duh). 
38314 2007-05-26  Miguel de Icaza  <miguel@novell.com>
38316         * runtime.cpp (Brush, SolidBrush): Introduce brushes. 
38318         (Shape): introduce reusable drawing framework for shapes, not
38319         complete. 
38320         
38321         (Line): introduce second user besides rectangles. 
38323         Remove agg test code.
38325         (Group::getbounds): implement.