in class/Microsoft.SilverlightControls/:
[moon.git] / src / ChangeLog
blobe339b76bf961dad8d72e5334a1f462c3f47a237b
1 2009-11-09  Chris Toshok  <toshok@ximian.com>
3         * uielement.h (class UIElement): mark the Key a MouseLeftButton
4         events as GenerateManagedEventField=true.
6         r: rolf
8 2009-11-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10         * xaml.cpp:
11         * grid.cpp:
12         * glyphs.cpp:
13         * textbox.cpp:
14         * runtime.cpp:
15         * deployment.cpp:
16         * frameworkelement.cpp:
17         * deepzoomimagetilesource.cpp: Fix compiler warnings.
19         r: alan
21 2009-11-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
23         * dependencyobject.cpp: Initialize variables to null to silence compiler
24         warnings in release builds.
26         r: toshok
28 2009-11-08  Chris Toshok  <toshok@ximian.com>
30         * deployment.h|cpp: stub out some OutOfBrowser classes.
32         r: lewing
34 2009-11-08  Chris Toshok  <toshok@ximian.com>
36         * effect.h|cpp: stub out SL3 effects classes.
38         r: kangaroo
40 2009-11-08  Larry Ewing  <lewing@novell.com>
42         * incomplete-support.xaml: make things a little prettier by adding
43         margins and max width.
45 2009-11-08  Chris Toshok  <toshok@ximian.com>
47         * Makefile.am (runtime.lo): be explicit about dependencies on
48         fullscreen.h and incompletely-support.h so we won't get screwed by
49         build-time dependencies.
51         r: lewing
53 2009-11-08  Chris Toshok  <toshok@ximian.com>
55         * runtime.h|cpp (Surface::Attach): if we're running > SL2, call
56         ShowIncompleteSilverlightSupportMessage.
57         (Surface::ShowIncompleteSilverlightSupportMessage): show our
58         incomplete support message.  as an optimization, hook up to
59         Completed on the storyboard to remove the layer when the
60         storyboard is finished.
61         (Surface::HideIncompleteSilverlightSupportMessage): detach the
62         layer.
63         (Surface::ShowFullScreenMessage): use the same optimization of
64         removing the layer when the storyboard completes.
66         * Makefile.am (noinst_PROGRAMS): add xaml-to-header.exe here.
67         (libmoon_include_headers): add deepzoomimagetilesource.h and
68         multiscalesubimage.h here and remove them from EXTRA_DIST.  also,
69         remove fullscreen.h entirely since we generate it at build time.
70         (EXTRA_DIST): add fullscreen.xaml and incomplete-support.xaml
71         here, as well as xaml-to-header.cs.
73         * incomplete-support.xaml: new xaml file for our incomplete
74         support ui.
76         * fullscreen.xaml: move fullscreen.xaml here.
78         * xaml-to-header.cs: move fullscreen/fullscreen.cs here and
79         massage it to make it reusable for the incomplete-support.xaml
80         file.
82         r: geoff
84 2009-11-07  Geoff Norton  <gnorton@novell.com>
86         * deployment.cpp: Support connecting to sdb when built in debug
87         mode
89 2009-11-06  Chris Toshok  <toshok@ximian.com>
91         * uielement.h|cpp (UIElement::ElementAdded): simplify this a bit
92         using WalkTreeForLoadedHandlers.
93         (UIElement::RemoveHandler): pass the removal on to the deployment
94         as well.
95         (UIElement::WalkTreeForLoadedHandlers): here there be dragons.
96         (UIElement::OnLoaded): this method does nothing but update the
97         flags now.
98         (UIElement::ClearLoaded): we also need to
99         ClearForeachGeneration (UIElement::LoadedEvent) so they'll be
100         copied again when we get added back to the tree.
102         * provider.cpp (InheritedPropertyValueProvider::PropagateInheritedProperty):
103         use Logical tree walk ordering.
105         * tabnavigationwalker.cpp (TabNavigationWalker::Sort): same.
107         * panel.cpp (Panel::OnPropertyChanged): we have to call
108         SetSubtreeObject before calling ElementAdded.
110         * frameworkelement.h|cpp (FrameworkElement::UpdateLayout): remove
111         the block of code that emits the LoadedEvent.
112         (FrameworkElement::RegisterManagedOverrides): add our loaded hook
113         parameter.
114         (FrameworkElement::OnLoaded): call our loaded hook.
116         * deployment.h|cpp (class Deployment): a whole bunch of new code
117         to handle management of a list of loaded handlers similar in
118         spirit to LayoutUpdated but much more complicated.  bleah.
120         * dependencyobject.h|cpp: a whole bunch of new apis:
121         (ForeachHandler): call a method for every handler for a given
122         event.  Optionally only iterate over handlers added since the last
123         time ForeachHandler was called.
124         (ClearForeachGeneration): clears the "last time ForeachHandler was
125         called" above.
126         (ForHandler): same as foreach, invoke the same type of handler
127         method, but only on 1 event handler.
128         (HasHandlers): returns true if the object has handlers for a
129         particular event.
130         (RemoveHandler): make these virtual because UIElement will
131         override them to remove handlers from the Deployment's loaded
132         list.
134         * control.cpp (Control::DoApplyTemplate): since we do it after
135         ElementAdded, calling WalkTreeForLoadedHandlers here causes
136         another treewalk, but we need to pass different args to it than
137         ElementAdded does.
139         * collection.h (enum VisualTreeWalkerDirection): add
140         LogicalReverse.
142         * collection.h|cpp (class DeepTreeWalker): add a
143         VisualTreeWalkerDirection to this walker as well.
145         * border.cpp (Border::OnPropertyChanged): we have to make sure to
146         call SetSubtreeObject before calling ElementAdded.
148 2009-11-06  Alan McGovern  <amcgovern@novell.com>
150         * grid.cpp: There's no need to expand star rows/cols at this
151           point as any time they would expand here, they would be
152           expanded in ArrangeOverride anyway. r: spouliot
154 2009-11-05  Jeffrey Stedfast  <fejj@novell.com>
156         * brush.cpp (ImageBrush::OnPropertyChanged): Check that the Source
157         uri is valid and the download policy will allow it.
159         * media.cpp (Image::OnPropertyChanged): Check that the Source uri
160         is valid and the download policy will allow it.
162         * mediaelement.cpp (OnPropertyChanged): Check that the Source uri
163         is valid and the download policy will allow it.
165         * glyphs.cpp (DownloadFont): Now takes a MoonError argument so
166         that (late) download policy errors (caused by a failed
167         Downloader::Open) can propogate up through callers like
168         OnPropertyChanged() or SetParent().
169         (SetParent): Moved here from from SetSurface() so that we can
170         throw an exception when ading the glyphs to the tree if the
171         FontUri is invalid.
172         (OnPropertyChanged): Set the MoonError if the uri is invalid.
174         * bitmapimage.cpp (ValidateDownloadPolicy): New method to check if
175         the uri can be downloaded.
176         (OnPropertyChanged): Check if the Source uri is invalid. If so,
177         set an error.
179         * downloader.cpp (ValidateDownloadPolicy): New static method to
180         check that the policy would allow downloading the content at the
181         uri. Split out from Open().
183         * uri.h (IsInvalidPath): New method to check the validity of the
184         path component of a URI.
185         (IsUncPath): New method that returns true if the path begins with \\
187         r:spouliot
189 2009-11-05  Alan McGovern  <amcgovern@novell.com>
191         * control.h:
192         * control.cpp:
193         * application.h:
194         * application.cpp:
195         * contentcontrol.h:
196         * frameworkelement.h:
197         * contentcontrol.cpp:
198         * frameworkelement.cpp: Templates must be expanded as part of
199           the first step of Measure. To support this, remove the old
200           ApplyTemplateHook managed path and refactor the
201           GetTemplateRoot managed path into a more generic
202           GetDefaultTemplate method. Whenever native code needs to get
203           a default template from managed, this is invoked to retrieve
204           it. ApplyTemplate and OnApplyTemplate have been moved to
205           FrameworkElement itself to simplify the code required to
206           support templateable framework elements (ItemsPresenter for
207           example). r: toshok
209         * cbinding.h:
210         * cbinding.cpp: regen. r: toshok
212 2009-11-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
214         * dependencyproperty.cpp: Fix an uninitialized variable problem.
216         r: alan
218 2009-11-05  Jackson Harper  <jackson@ximian.com>
220         * playlist.cpp: After we successfully fixup an error we need to
221         reset the error args otherwise the error will be raised when the
222         parsing is all done.  Fixes 96x.fm.
224         r: rolf
226 2009-11-04  Sebastien Pouliot  <sebastien@ximian.com> 
228         * list.cpp: Remove unused (even in test) code.
229         * tabnavigationwalker.cpp: Complete int/uint fix.
231         r: jackson
233 2009-11-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
235         * shape.cpp:
236         * pipeline.cpp:
237         * audio-alsa.cpp:
238         * audio-pulse.cpp:
239         * pipeline-asf.cpp:
240         * tabnavigationwalker.cpp: Fix warnings when building release builds.
242         r: spouliot
244 2009-11-04  Alan McGovern  <amcgovern@novell.com>
246         * popup.h:
247         * popup.cpp:
248         * control.h:
249         * control.cpp: 1) Disabling the ComboBox should set
250           IsDropDownOpen to false
251         2) If the dropdown is opened while the ComboBox is disabled,
252           the children of the popup are disabled.
253         3) If the dropdown is open, re-enabling the ComboBox doesn't
254           close the dropdown and also doesn't update the IsEnabled
255           state on the children.
256         r: shana
258 2009-11-03  Jackson Harper  <jackson@ximian.com>
260         * xaml.cpp: Dont force setting a property in managed if it was
261         registered by a base type.
263         r: spouliot
265 2009-10-29  Chris Toshok  <toshok@ximian.com>
267         * messagebox.cpp (message_box_show): don't use
268         gtk_message_dialog_new with user strings, since they might contain
269         reserved characters.
271         r: spouliot
273 2009-11-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
275         * pipeline.cpp: If we can't seek, reset the 'seeking' flag to false.
277         r: spouliot
279 2009-11-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
281         * deployment.cpp: Fix typo in return statement.
283         r: alan
285 2009-11-03  Alan McGovern  <amcgovern@novell.com>
287         * grid.h:
288         * grid.cpp: Rewrite Grid so that it passes the correct sizes
289           to elements spanning Star or Auto segments. Fixes
290           tic-tac-toe. r: lewing
292 2009-11-02  Alan McGovern  <amcgovern@novell.com>
294         * control.h:
295         * cbinding.h:
296         * control.cpp:
297         * frameworkelement.h:
298         * frameworkelement.cpp: Certain UIElements (Controls and
299           ContentPresenters) need to apply a template before
300           MeasureOverride is invoked. Add a callback
301           (ApplyTemplateHook) to FrameworkElement which is non-null
302           for Controls and ContentPresenters to that these templates
303           can be expanded properly. r: rolf
305         * cbinding.cpp: regen. r: rolf
307 2009-11-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
309         * pipeline.h: Remove dead code.
311         r: alan
313 2009-11-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
315         * pipeline.cpp|h: ProgressiveSource: close the write handle in the dtor
316         to avoid race conditions - media thread closing the handle and main
317         writing to it.
319         r: alan
321 2009-11-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
323         * mms-downloader.cpp: When sending logs, use NoPolicy. We've already
324         checked if we can access the server or not. Using StreamingPolicy is
325         wrong now that we create mms downloaders for those always. Also
326         add a null check.
328         r: alan
330 2009-11-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
332         * mediaelement.cpp:
333         * enums.h|cpp: Remove MediaStateError, it's not used in SL2. Whenever
334         an error occurs we go to the Closed state.
336         r: sde
338 2009-11-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
340         * mms-downloader.cpp: Accept rtsp[s] schemes too.
342         * downloader.cpp: determine mms'ness by using the policy passed in
343         instead of comparing schemes (differently in other places - the
344         pipeline considers rtsp and rtsps schemes too as streaming).
346         r: sde
348 2009-11-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
350         * pipeline-asf.cpp: When we got a packet from the mms downloader, ask
351         the demuxer to fill its buffers. This fixes some cases where the mms
352         stream never finishes buffering. Added GetDemuxerReffed.
354         r: spouliot
356 2009-10-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
358         * pipeline.cpp: Don't completely stop working when the media is
359         stopped, the media element needs the first frame of the media, so
360         when stopped, buffer 1 frame instead of 0. Makes MS DRT #483 pass.
362 2009-10-29  Alan McGovern  <amcgovern@novell.com>
364         * grid.cpp: Grid should not invalidate its measure unless
365           either the Columns or Rows collection changes. This reverts
366           what looks like an accidental commit by lewing in r123309.
367           r: jeff and toshok.
369 2009-10-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
371         * mediaelement.cpp: If we Seek when Paused, we need to update
372         paused_position. Fixes one error in MS DRT #483.
374         r: spouliot
376 2009-10-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
378         * pipeline.cpp: Media::SelectDemuxerAsync: seek to 0 on the source
379         before searching for a demuxer. Makes #546241 play all the audio it
380         should.
382         r: alan
384 2009-10-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
386         * pipeline.cpp: Include signal.h.
388         r: alan
390 2009-10-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
392         * mediaelement.cpp: OpenCompletedHandler: only emit
393         DownloadProgressChanged if MediaOpened hasn't been raised. This fixes
394         MS DRT #25 (which checks that DownloadProgressChanged isn't raised
395         after calling Stop and then Play on a media element).
397         r: geoff
399 2009-10-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
401         * pipeline.cpp: When we enter a new thread, ensure that we don't
402         inherit blocked signals from the thread that created us. Fixes deadlock
403         reported in #546241.
405         r: jeff
407 2009-10-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
409         * mediaplayer.cpp|h: Instead of keeping a flag telling whether we're
410         seeking or not, keep a counter, since we may end up with multiple
411         pending seeks, and we only want to restart playback when the last seek
412         finishes. Also call MediaElement's seek method so that we do everything
413         we must do when a seek happens. Fixes our media test #153.
414         
415         * mediaelement.cpp|h: Add a force parameter to Seek to force seeking no
416         matter which state we're in. Used by MediaPlayer to seek when we open
417         a media.
418         
419         * pipeline.cpp|h: Don't start filling the buffers when a media is opened,
420         the first thing we do after opening a media is seeking, which would
421         invalidate whatever buffer we create. When the first seek has finished,
422         it will request a buffer fill. Also remove the optimization that was
423         joining multiple seeks into one (the last one), since there was no way
424         MediaPlayer could know which seek finished when the SeekCompleted event
425         was raised.     We now do all seeks, in the correct order.
426         
427         * playlist.cpp|h: Remove the same optimization here, have a list of pending
428         seeks and execute them in order.
430         r: spouliot
432 2009-10-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
434         * pipeline.cpp: Add a workaround for having invalid codecs in the 
435         expected codec location - with this workaround the user will get
436         a new codec download dialog.
438         r: sde
440 2009-10-26  Sebastien Pouliot  <sebastien@ximian.com>
442         * deployment.cpp: Match SL appdomain friendly name
444         r: sde
446 2009-10-23  Chris Toshok  <toshok@ximian.com>
448         * runtime.cpp (Surface::IsVersionSupported): report that we
449         support versions 3.0.x, because the alternative is not even
450         attempting to execute many xaps.
452         r: lewing
454 2009-10-23  Chris Toshok  <toshok@ximian.com>
456         * frameworkelement.cpp (FrameworkElement::UpdateLayout): call
457         Deployment::GetCurrent()->LayoutUpdated() instead of walking an
458         updated_list.
460         * frameworkelement.h (class FrameworkElement): remove
461         LayoutUpdatedEvent.
463         * deployment.h,cpp (Deployment::LayoutUpdated): move the
464         FrameworkElement event here, since any layout updating causes
465         every LayoutUpdated handler to be called, even for those elements
466         not in the tree.
468         * type-generated.cpp: regen
470         r: lewing
472 2009-10-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
474         * pipeline.h: IMediaDemuxer: add a GetCanSeek method specifying whether
475         a demuxer can seek or not. ExternalDemuxer (aka MediaStreamSource) can
476         specify false for this (which won't prevent SL from trying to seek on
477         the MediaStreamSource though). Implement ExternalDemuxer::SetCanSeek.
479         * mediaelement.cpp: If the demuxer can't seek, set CanSeek = false.
481         r: sde
483 2009-10-23  Stephane Delcroix  <sdelcroix@novell.com>
485         * uri.cpp (flatten_path): keep track of ../ parts if there's no
486         previous part to drop, or if the previous part is ../ too.
488         r: toshok
490 2009-10-23  Stephane Delcroix  <sdelcroix@novell.com>
492         * deepzoomimagetilesource..h|cpp: the strip_and_set hack is no longer
493         required with jeff's latest patch
495         r: rolf
497 2009-10-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
499         * pipeline-ui.cpp: ShowUI: We need to set the current deployment here.
501         r: sde
503 2009-10-22  Jeffrey Stedfast  <fejj@novell.com>
505         * uri.cpp (flatten_path): New helper function to flatten a path
506         (e.g. get rid of extra /'s, ./'s, and handle ../'s).
507         (Parse): If the Uri is absolute, flatten the path.
508         (Combine): Simplified by just concatenating the old path, the
509         relative_path, and then calling flatten_path(). Also, thanks to
510         Stephane's investigations, fixed the fact that a relative_path
511         starting with '/' does not combine at the root like previously
512         thought.
514         r:sde
516 2009-10-22  Rolf Bjarne Kvinge  <RKvinge@novell.com>
518         * dependencyobject.cpp|h: CanEmitEvents: add an event_id argument, so
519         that we can allow DestroyedEvent during shutdown. This fixes a crash
520         with namescopes - they rely on DestroyedEVent to properly detach from
521         objects.
523         r: alan
525 2009-10-21  Stephane Delcroix  <sdelcroix@novell.com>
527         * uri.cpp: url_encode the whitespaces too,
529         r: jeff
531 2009-10-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
533         * pipeline-ui.cpp: Include stdlib.h to fix release builds.
535         r: alan
537 2009-10-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
539         * pipeline.cpp: GetMediaReffed might return null, add some null checks
540         for this.
542         r: toshok
544 2009-10-20  Andreia Gaita  <avidigal@novell.com>
546         * timemanager.[h|cpp]: (AddDispatcherCall) used by Dispatcher to add tick
547         calls. If it's called while we're in the emitting loop, save the new
548         ones on another list so they'll get invoked on the next tick. All other
549         tick calls added via AddTickCall get invoked asap.
551         * list.[h|cpp]: change CloneAndClear to MoveTo, it now moves the queue
552         nodes to an existing queue instead of creating a new one
554         * cbinding.[h|cpp]: regen
556         r: rolf
558 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
560         * pipeline.cpp: IMediaDemuxer::ReportGetFrameCompleted: Only clear the
561         pending_stream field if we're stopped or if we processed the returned
562         frame. Specifically do not clear the pending_stream field if we're
563         not executing on a media thread (since when the method is called again on
564         the media thread we might end up dropping the frame) - and it's a race
565         condition that may cause crashes.
567         r: spouliot
568         
569 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
571         * runtime.cpp|h: Add a DetachWindow which detaches the surface from
572         the window and prevents the window from getting destroyed when the
573         surface is destroyed. Also add a few protections against having a
574         null window, which we may get when the window has been detached.
576         r: spouliot
578 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
580         * type.h:
581         * type.cpp
582         * type.h.in: Added a LookupEvent method that takes a deployment
583         parameter so that it doesn't try to use Deployment::GetCurrent. This
584         is required when we need to lookup events for deployments which are
585         not the current one (when re-creating a PluginInstance since its
586         source has changed for instance).
588         r: spouliot
590 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
592         * window-gtk.cpp:
593         * window.cpp|h: Detach the window from the deployment by not storing it,
594         use Surface' deployment instead. Also add a convenience SetCurrentDeployment
595         method.
597         * value.cpp:
598         * textblock.cpp:
599         * provider.cpp:
600         * popup.cpp:
601         * glyphs.cpp:
602         * downloader.cpp:
603         * control.cpp:
604         * canvas.cpp:
605         * audio.cpp: 
606         * dependencyproperty.cpp: Include deployment.h, required now that
607         window.h doesn't include it.
609         * src.mdp:
610         * Makefile.am: Updated with window.cpp.
612         r: spouliot
614 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
616         * deployment.cpp|h: Moved all managed code handling from PluginInstance
617         here.
619         r: spouliot
621 2009-10-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
623         * codec-version.h.in: Bump ABI to 16.
625 2009-10-19  Andreia Gaita  <avidigal@novell.com>
627         * list.[h|cpp]: (Queue::CloneAndClear) Added, clones the queue while
628         clearing the original
630         * timemanager.cpp: Make a copy of the queued tick calls and use that
631         instead of the live queue. Callbacks may insert new calls into the
632         queue, and those should be invoked on the next tick, not on the
633         current one. Fixes drt #244
635         r: rolf
637 2009-10-19  Andreia Gaita  <avidigal@novell.com>
639         * timemanager.cpp: fix START_TIMER define and add timing logs on tick calls
641         r: rolf
643 2009-10-15  Alan McGovern  <amcgovern@novell.com>
645         * grid.cpp: Add comment explaining why the InvalidateMeasure
646           call is there.
648 2009-10-15  Alan McGovern  <amcgovern@novell.com>
650         * grid.cpp: Changing a Grid property (Row, RowSpan etc) on a
651           UIElement invalidates its measure. r: lewing.
653 2009-10-15  Stephane Delcroix  <sdelcroix@novell.com>
655         * multiscaleimage.cpp: send the RoutedException on ImageOpenFailed.
656         Errorcode and (empty) message are matching SL behavior. Fixes drt #874.
658         r: rolf
660 2009-10-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
662         * type.h:
663         * value.h:
664         * cbinding.h:
665         * type-generated.cpp: Regenerated.
667         r: sde
669 2009-10-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
671         * pipeline.cpp: A printf sneaked in.
673         r: sde
675 2009-10-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
677         * uri.cpp:
678         * mp3.cpp:
679         * runtime.h:
680         * clock.cpp:
681         * audio.cpp:
682         * fonts.cpp:
683         * timeline.cpp:
684         * playlist.cpp:
685         * pipeline.cpp:
686         * downloader.cpp:
687         * audio-alsa.cpp:
688         * audio-pulse.cpp:
689         * mediaplayer.cpp:
690         * timemanager.cpp:
691         * pipeline-asf.cpp:
692         * mediaelement.cpp:
693         * mms-downloader.cpp: Fix 64 bit printf format specifier on x64.
695         r: andreia
697 2009-10-14  Andreia Gaita  <avidigal@novell.com>
699         * timeline.[h|cpp]: destroy dispatcher timer clocks immediately if
700         they're stopped and not restarted on the same tick
702         r: toshok
704 2009-10-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
706         * mp3.cpp:
707         * pipeline-asf.cpp: Updated according to API changes.
709         * pipeline.cpp|h: Media::Dispose: Check if we've been disposed and
710         do nothing in that case. This way we don't hit the warning just below
711         about not being in the media thread.
712         
713         MediaThreadPool::IsThreadPoolThread: Return the value we calculated, 
714         not a hardcoded 'true' value.
715         
716         Make the demuxer serialized: Don't seek if we're waiting for a frame (wait
717         until the frame has been returned). Also don't request a frame if we're
718         seeking (just do nothing, when the seek completes new frames will be
719         requested).
720         
721         Change seeking to store the last seeked-to pts in the demuxer
722         when marshalling seeks from the main thread to the media thread. This
723         ensures that if two seeks are enqueued quickly, we won't seek twice, only
724         to the last (there is also another potential issue: if the first seek
725         couldn't complete because we were waiting for a frame, we could end up
726         seeking in the wrong order).
727         
728         * deployment.cpp: Delete the local variable, not the instance field
729         we just nulled out.
731         r: spouliot
733 2009-10-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
735         * pipeline.cpp: ProgressiveSource::DataWrite: write_fd might be null
736         if we've been disposed, don't print a warning in this case. Also don't
737         get the media until we've passed the write_fd check - this way we don't
738         leak refs if the check fails.
740         r: spouliot
742 2009-10-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
744         * pipeline.cpp: Remove more output which can happen during normal
745         executing (shutdown in particular for these cases).
747         r: spouliot
749 2009-10-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
751         * pipeline.cpp: Media::RetryHttp: don't dispose media objects in this
752         method directly, it's called on the main thread, instead marshal the
753         Dispose to the media thread. Also reset error_reported, otherwise
754         Initialize will just bail out immediately.
756         r: spouliot
758 2009-10-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
760         * pipeline.cpp: Download progress can actually go down (if the file
761         size goes down). So don't print a scary warning.
763         r: spouliot
765 2009-10-13  Jeffrey Stedfast  <fejj@novell.com>
767         * textbox.cpp (TextBoxView::Layout): Set dirty to false after
768         laying out the text.
769         (TextBoxView::Render): Don't do Layout here.
771         r: lewing
773 2009-10-09  Chris Toshok  <toshok@ximian.com>
775         * control.cpp (Control::OnPropertyChanged): drt #438 shows that
776         you can set Template = null to clear the template's visual tree.
777         bizarre, but true.
778         (Control::ClearTemplate): set template_root to NULL after we
779         remove it.
781         r: jackson
783 2009-10-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
785         * mediaelement.cpp: MediaElement::SetUriSource: Remove scary warning
786         which may happen quite often and in common code paths.
788         r: alan
790 2009-10-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
792         * dependencyobject.cpp: DependencyObject::ProviderValueChanged: After
793         invoking the property changed handler the values we have might have
794         gotten deleted. Clone them before calling the property changed handler
795         so that we don't access deleted values. Makes #544211 not crash.
797         r: alan
799 2009-10-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
801         * dependencyobject.cpp: Emit overloads: ensure we unref the calldata
802         when returning early.
804         r: alan
806 2009-10-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
808         * mediaelement.h: Make SourceProperty nullable. Fixes #537849.
810         * dependencyproperty.g.cpp: Regenerated.
812         r: alan
814 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
816         * pipeline-ui.cpp: Add checks against a null downloader, fixes #468491.
818         r: spouliot
820 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
822         * audio.cpp: AudioSource::Dispose: lock around field accesses,
823         and move the fields into a local variables so we can clean up
824         with the mutex unlocked.
826         r: spouliot
828 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
830         * audio.cpp: AudioSource::IsQueueEmpty: it's pretty common to
831         end up with a null stream, so don't spam the console with warnings.
833         r: spouliot
835 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
837         * mediaplayer.cpp: Open: seek to the initial pts.
839         * playlist.cpp: When we re-open a media after stopping it, don't do
840         it async since we might end up doing things in the wrong order.
842         Fixes #476180.
844         r: spouliot
846 2009-10-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
848         * deployment.cpp|h: Make shutdown an async/iterative process to ensure
849         we don't accidentally get deadlocked while shutting down. Change shutdown
850         sequence to first ensure no media threads are running, then do managed
851         shutdown unloading the appdomain, and do nothing more until the appdomain
852         has unloaded successfully (calling mono_domain_finalize which we used to is
853         very wrong since it assumes all managed threads have been aborted, when only
854         mono_domain_unload actually aborts threads - we ended up executing code in
855         other managed threads with freed objects everywhere). Added an
856         AppDomainUnloadedEvent so that the plugin can know when the appdomain has
857         been unloaded and free itself. Dispose the types when the deployment is
858         disposed, and delete them types when the deployment is destroyed. This way we
859         make sure that the types are available until all the objects have been
860         deleted. This also fixes different code paths / deletion points
861         depending on whether we built with object tracking or not. This also
862         removes the need for the is_dead variable. Maintain a counter of the number of
863         deployments alive so that we know when runtime can be shut down.
865         * dependencyobject.cpp: Don't emit events while we're shutting down.
866         Deployment::is_dead is dead now, remove checks, replaced with Deployment::
867         IsShuttingDown wherever applicable. Only emit DestroyedEvent on the main
868         thread.
870         * dependencyproperty.cpp|h: Add a Dispose method which clears out any
871         refs the default value might have (but keep a default value, we depend
872         in some places on having a default value).
874         * type.cpp: Dispose: call Dispose on the DP.
876         * type.h:
877         * type.h.in: Remove 'disposed' field: no longer needed.
879         r: andreia
881 2009-10-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
883         * pipeline.cpp|h: Media::Stop[Async]: when called clear all buffers.
884         This ensures that we don't keep the (default) 5s buffer of media in
885         memory while stopped. Add lots of checks for a stopped media so that
886         we don't refill the buffer after clearing it.
887         Makes MS DRT #238, #239 and #244 require a lot less memory.
889         * playlist.cpp: Call Play on the media too when we start playing.
891 2009-10-05  Jeffrey Stedfast  <fejj@novell.com>
893         * runtime.cpp (HandleUIKeyPress): Silverlight 2.0 does not
894         silently drop repeated key-press events.
896         r: spuliot
898 2009-10-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
900         * pipeline.cpp: MediaFrames can be deleted on any thread. Fixes an
901         issue where we'd create more MediaFrames than the delayed unref
902         mechanism could free, so we'd run out of memory.
904         r: spouliot
906 2009-10-05  Alan McGovern  <amcgovern@novell.com>
908         * cbinding.h:
909         * cbinding.cpp:
910         * dependencyobject.h:
911         * dependencyobject.cpp: Store the starting_generation and
912           only_unemitted flags on the EmitContext so that the values
913           are used when we call DoEmitCurrentContext from managed
914           code. r: toshok
916 2009-10-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
918         * pipeline.cpp|h: IMediaDemuxer::FillBuffers, don't enqueue a request
919         if we there is already a request pending.
921         r: spouliot
923 2009-10-01  Jeffrey Stedfast  <fejj@novell.com>
925         Gets drt #412 a bit closer to passing.
927         * textblock.cpp (TextBlock): Initialize our own FontDescription
928         needed so we can tell the layout engine what the base font to use
929         for calculating BlockLineHeight proportions.
930         (TextBlock): Delete our FontDescription.
931         (UpdateFontDescription): New method to update our own
932         FontDescription and notify the layout engine of any changes.
933         (UpdateLayoutAttributes): Call UpdateFontDescription().
934         (UpdateFontDescriptions): Same.
936         * layout.cpp (TextLayout::SetBaseFont): Calculate the proportional
937         distance to the baseline given the base font.
938         (TextLayout::OverrideLineHeight): Don't check line_height against
939         NAN, check it against 0 instead. NAN means that we use the
940         containing TextBlock's font height as a base.
941         (TextLayout::LineHeightOverride): New method to figure out the
942         line height value to use when using BlockLineHeight strategy.
943         (TextLayout::DescendOverride): Given the overridden LineHeight,
944         calculate the baseline offset using the proportional distance
945         calculated in SetBaseFont().
946         (TextLayout::Layout): Instead of using 0 as the overridden line
947         descent, use the value calculated from DescendOverride(). Also use
948         LineHeightOverride() instead of line_height directly.
950         r: spouliot
952 2009-10-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
954         * pipeline-asf.cpp: MmsPlaylistEntry: clear the queue when we're
955         disposed, that ensures that the queue is cleared up even if the
956         MmsPlaylistEntry itself leaks.
958         r: spouliot
960 2009-10-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
962         * pipeline-asf.cpp: Fix some potential leaks.
964         r: spouliot
966 2009-10-01  Jeffrey Stedfast  <fejj@novell.com>
968         * fonts.h (class TextFont): Make some of the getters const.
970         r: shana
972 2009-10-01  Andreia Gaita  <avidigal@novell.com>
974         * utils.cpp: if there's no Application instance, use the root temp
975         dir to store, and track the created path directly on deployment so
976         it can be cleared up in the end.
978         r: spouliot
980 2009-10-01  Alan McGovern  <amcgovern@novell.com>
982         * runtime.cpp: WalkTreeForLoaded has already been called on
983           this element as part of the previous call to AttachLayer.
985 2009-10-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
987         * dependencyobject.h: Make GetUnsafeDeployment available always, media
988         code might use it to get the deployment of the object instead of the
989         current deployment.
991         * pipeline.cpp|h: Added WaitForCompletion to MediaThreadPool: allows a
992         deployment instance to wait until there is nothing more executing in 
993         the thread pool regarding that deployment.
995         * deployment.cpp|h: Maintain a list of all the Media instances created
996         and dispose them when the deployment shuts down.
998         r: spouliot
1000 2009-10-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1002         * dependencyobject.cpp|h: EventObject::CanEmitEvents: added to avoid
1003         some code duplication in all our Emit methods.
1005         r: alan
1007 2009-10-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1009         * audio.cpp: Dispose: make sure the audio really stops.
1011         r: alan
1013 2009-10-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1015         * pipeline.cpp|h: ExternalDemuxer: Make writes to the callbacks
1016         thread-safe, since managed code may clear them up on the finalizer
1017         thread.
1019         * cbinding.cpp|h: Regenerated.
1021         r: alan
1023 2009-09-30  Alan McGovern  <amcgovern@novell.com>
1025         * runtime.cpp: If the surface has been zombified, don't handle
1026           the plugin focus in/out event. r: toshok
1028 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1030         * pipeline.cpp: IMediaDecoder::ReportDecodeFrameCompleted: add some
1031         null checks.
1033 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1035         * pipeline.cpp: IMediaDemuxer::ReportGetFrameCompleted: always do the
1036         decoding async. This ensures we don't reenter managed code when the
1037         frame comes from MediaStreamSource.
1039         r: spouliot
1041 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1043         * pipeline.cpp|h: MediaThreadPool: Don't use a globally allocated list
1044         for the queue, it may blow up when the process shuts down because the
1045         media thread might still be running when the list is destroyed causing
1046         random crashes.
1048         r: spouliot
1050 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1052         * pipeline.cpp|h: MediaThreadPool: Add a max_threads const variable
1053         specifying the max number of threads, and use static memory for all of
1054         them.
1056         r: spouliot
1058 2009-09-30  Andreia Gaita  <avidigal@novell.com>
1060         * deployment.[h|cpp]: Added TrackPath/UntrackPath to track temporary
1061         paths that get created in applications, so they can be released even
1062         if the Application instance leaks.
1064         * application.[h|cpp]: Added GetResourceRoot, returns resource_root,
1065         which keeps the base temp path of all files and resources for an
1066         application.
1068         * utils.cpp: use the Application GetResourceRoot as a base path for
1069         all temporary files.
1071         r: alan
1073 2009-09-30  Alan McGovern  <amcgovern@novell.com>
1075         * runtime.cpp: When the plugin gets focus or loses focus, we
1076           have to emit the corresponding event on the currently
1077           focused element - not on the TopLevel. Note that if we focus
1078           out of the plugin, we emit LostFocus on the currently
1079           focused element but do *not* set the current focused element
1080           to null. Lastly when handling the mouse down event, we
1081           should not try to focus elements in the hitlist from the
1082           mouse click. This mostly fixes DRT 745. r: rolf
1084 2009-09-30  Alan McGovern  <amcgovern@novell.com>
1086         * textbox.h:
1087         * validators.h:
1088         * validators.cpp: IsInputMethodEnabled defaults to true and
1089           also needs a validator to ensure that it's only set on 
1091         * dependencyproperty.g.cpp: IsInputMethodEnabled defaults to
1092           true and also needs a validator to ensure that it's only set
1093           on TextBoxes
1095 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1097         * pipeline.cpp: Reset more state when a seek completes.
1099         r: alan
1101 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1103         * pipeline.cpp: Media::EnqueueWork: we need to lock around the entire
1104         call to MediaThreadPool::AddWork, since otherwise we have a race
1105         condition between setting the is_disposed variable to true and adding
1106         the work.
1108         r: alan
1110 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1112         * mediaelement.cpp: Stop immediately when the we're deattached from the
1113         visual tree.
1115         r: andreia
1117 2009-09-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1119         * deployment.h: Fix typo in comment.
1121 2009-09-29  Chris Toshok  <toshok@ximian.com>
1123         * dependencyobject.cpp (EventObject::StartEmit): when we copy the
1124         list of closures to invoke, don't copy ones that are
1125         pending_removal.  This fixes the crash due to re-entering in drt
1126         502 in a way that doesn't break the existing plugin behavior.
1127         (EventObject::DoEmitCurrentContext): revert the
1128         !closure->pending_removal change that caused plugin event listener
1129         breakage in the xaml tests.
1131         r: andreia
1133 2009-09-29  Larry Ewing  <lewing@novell.com>
1135         * border.cpp (InsideObject): improve Border::InsideObject to
1136         handle the actual drawn bounds.
1138         Fixes #2022.
1140         r: jackson
1141         
1142 2009-09-29  Jeffrey Stedfast  <fejj@novell.com>
1144         * textbox.cpp (PostOnKeyDown): Renamed from OnCharacterKeyDown()
1145         to be more consistent with the managed method names. Don't set
1146         Handled to true, since anything that makes it this far should also
1147         bubble up.
1149         r:toshok
1151 2009-09-28  Andreia Gaita  <avidigal@novell.com>
1153         * application.cpp, bitmapimage.cpp,
1154           file-downloader.cpp, fontmanager.cpp,
1155           pipeline-ui.cpp, pipeline.cpp,
1156           utils.cpp: uniform usage of glib io calls
1158         r: toshok
1160 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1162         * window-gtk.cpp: gtk_window_destroy can cause reentry, so ensure we leave
1163         the current deployment as it was when returning from it.
1165         r: lewing
1166         
1167 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1169         * mediaelement.cpp|h: When receiving markers from the pipeline, store them
1170         in a general list and only move them into a TimelineCollection just before
1171         checking if they are to be emitted. This avoids locking a mutex during a
1172         potentially large time, as well as trying to emit an event on the pipeline
1173         thread (collection changed event when adding markers to the
1174         TimelineCollection).
1176         r: spouliot
1178 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1180         * audio.cpp: Follow refcounting rules with the AlsaPlayer.
1182         r: alan
1184 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1186         * audio.cpp: AudioPlayer::Shutdown: no need to unref with the mutex
1187         locked. CreateInstance: Add a couple of comments.
1189         r: alan
1191 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1193         * deployment.cpp|h: No need for the downloaders field to be a pointer
1194         when it'll always exist. Move the downloader abort code to the node's
1195         destructor, this way we ensure that the downloader is always aborted.
1196         Reinitialize: clear the downloaders list instead of creating a new one
1197         (and leaking the previous one).
1199         r: spouliot
1201 2009-09-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1203         * audio.cpp|h: AudioPlayer can't derive from EventObject, since 
1204         EventObject is tied to a particular deployment, while AudioPlayer is
1205         process-wide. Implement simple refcounting in AudioPlayer to work
1206         around this and keep the old behaviour.
1208         * type.h:
1209         * value.h:
1210         * cbinding.h:
1211         * type-generated.cpp: Regenerated.
1213         r: alan, spouliot
1215 2009-09-28  Chris Toshok  <toshok@ximian.com>
1217         * frameworkelement.h|cpp (class FrameworkElement): remove the
1218         empty SetValueWithErrorImpl implementation.
1220         r: jeff
1222 2009-09-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1224         * pipeline.cpp: Make Media::OpenAsync really async. Fixes issues with
1225         MS DRT #244 (and possibly others) where we'd end up raising the
1226         MediaOpened event while still parsing xaml (the test didn't have time
1227         to attach an handler to the event before it was raised).
1229         r: spouliot
1231 2009-09-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1233         * mediaelement.cpp: Stop when we're detached. This helps with a
1234         resource "leak": if the user code just removes the mediaelement from
1235         the visual tree and forgets about it, we'd continue playing until the
1236         gc kicks in and finds out it should free the mediaelement.
1238         r: spouliout
1240 2009-09-28  Chris Toshok  <toshok@ximian.com>
1242         * dependencyobject.cpp (EventObject::DoEmitCurrentContext): don't
1243         call closure functions when the closure is pending removal.  if
1244         it's a managed delegate it will likely have already been
1245         collected.  This fixes the regression of drt #502.
1247         r: spouliot
1249 2009-09-24  Stephen Shaw  <sshaw@decriptor.com>
1251         * multiscaleimage.cpp (MultiScaleImage::GetZoomAnimationEndPoint):
1252         Method now returns a value
1254         r: lewing
1256 2009-09-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1258         * mediaelement.cpp|h: Remove unused methods.
1260         r: sde
1262 2009-09-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1264         * pipeline.cpp: Remove an unused variable (fixing a compiler warning).
1266         r: sde
1268 2009-09-23  Chris Toshok  <toshok@ximian.com>
1270         * uielement.cpp (UIElement::EmitGotFocus): this event passes
1271         RoutedEventArgs, not EventArgs.
1272         (UIElement::EmitLostFocus): same.
1274         * eventargs.h|cpp (class MouseButtonEventArgs): add this type, and
1275         make both MouseButtonEventArgs and MouseWheelEventArgs subclass
1276         from MouseEventArgs.  Move MouseEventArgs::GetButton and
1277         ::GetClickCount to MouseButtonEventArgs.
1279         * runtime.cpp (Surface::CreateArgsForEvent): for the button
1280         events, create a MouseButtonEventArgs.
1282         * textbox.h|cpp: MouseEventArgs -> MouseButtonEventArgs for all
1283         button handling methods.
1285         * value.h, type.h, type-generate.cpp, cbinding.h|cpp: regen.
1287         r: lewing
1289 2009-09-23  Chris Toshok  <toshok@ximian.com>
1291         * uielement.h (class UIElement): add event metadata.
1293         * uielement.cpp (UIElement::OnLoaded): pass RoutedEventArgs to the
1294         LoadedEvent.
1295         (UIElement::ClearLoaded): same with Unloaded.
1297         * type-generated.cpp, type.h, value.h: regen.
1299         * transform.h (class Matrix): add event metadata.
1301         * timeline.h (class TimelineGroup): add event metadata.
1303         * textbox.h (class TextBox): add event metadata.
1304         (class PasswordBox): add event metadata.
1306         * stylus.h (class StylusPoint): add event metadata.
1308         * runtime.cpp (Surface::PerformReleaseCapture): we need to clear
1309         captured/pendingReleaseCapture before emitting the event,
1310         otherwise we could get into an infinite loop between handler and
1311         ReleaseMouseCapture.
1312         (Surface::EmitEventOnList): remove the ctx arg to DoEmit.
1314         * namescope.h (class NameScope): add event metadata.
1316         * multiscaleimage.h (class MultiScaleImage): add event metadata.
1318         * mediaelement.h (class MediaElement): add event metadata.
1320         * media.h (class MediaBase): add event metadata.
1322         * frameworkelement.h (class FrameworkElement): add event metadata.
1324         * deployment.h (class Deployment): add event metadata.
1326         * dependencyproperty.h: remove PropertyChangedEventArgs from here.
1328         * eventargs.h: and put it here.
1330         * dependencyproperty.h|cpp: replace the emitting count with a
1331         stack of EmitContexts.  This is since the managed layer calls a
1332         function to actually perform the emit, and the managed code
1333         doesn't have access to the context.
1334         (AddOnEventHandler,RemoveOnEventHandler): new methods so that we
1335         can replace the normal emit machinery with a delegate into managed
1336         that calls the OnEvent method.
1337         (StartEmit): push the new context onto the stack
1338         (DoEmit): if there's an on_event handler, call that and let it do
1339         the work.  otherwise call DoEmitCurrentContext.
1340         (DoEmitCurrentContext): move the actual invoking of event closures
1341         here.
1342         (FinishEmit): pop the context off the stack.
1343         (DependencyObject::ProviderValueChanged): we have to allocate
1344         PropertyChangedEventArgs on the heap now that it's refcounted.
1345         (DependencyObject::NotifyListenersOfPropertyChange): same.
1346         (DependencyObject::collection_item_changed): same.
1347         
1348         * control.h (class Control): add event metadata.
1350         * control.cpp (Control::OnPropertyChanged): when emitting
1351         IsEnabledChangedEvent, and pass the PropertyChangedEventArgs.
1353         * collection.h (class Collection): add event metadata.
1355         * brush.h (class ImageBrush): add event metadata.
1357         * bitmapsource.h (class BitmapSource): add event metadata.
1359         * bitmapimage.h (class BitmapImage): add event metadata.
1361         * application.h (class Application): add event metadata.
1363         * cbinding.h|cpp: regen.
1365         r: spouliot, andriea
1367 2009-09-23  Stephane Delcroix  <sdelcroix@novell.com>
1369         * multiscaleimage.cpp: fix the vp_h computation. vp_h is
1370         vp_w *msi_h/msi_w, NOT vp_w*msi_w/msi_h !
1372 2009-09-21  Stephane Delcroix  <sdelcroix@novell.com>
1374         * multiscaleimage.h|cpp: stop the animations when setting
1375         UseSprings to false. Set the values to the target values
1376         of the animations too.
1378         r: toshok
1380 2009-09-18  Jackson Harper  <jackson@ximian.com>
1382         * xaml.cpp|h: Use flags passed to createfromstring now for
1383         validating templates and importing the default namespace.
1384         * value.h
1385         * collection.cpp|h: Implement a resource dictionary collection,
1386         this is a collection of dictionaries used for the
1387         MergedDictionaries property of ResourceDictionaries
1388         * resources.cpp|h: Implement the merged dictionaries property and
1389         check them when looking up items in a dictionary.
1390         * dependencyproperty.g.cpp:
1391         * types-generated.cpp:
1392         * cbinding.c|h: regen
1393         
1394 2009-09-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1396         * pipeline-asf.cpp: MmsPlaylistEntry::WritePacket: actually fetch the
1397         media before asserting that it isn't null.
1399         r: sde
1401 2009-09-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1403         * pipeline.cpp: When filling buffers, treat a buffering_time of 0 as a
1404         buffering_time of 1 ms, otherwise we'll do nothing at all since we have
1405         the requested amount of buffer (nothing at all), but buffering progress
1406         is is still at 0% (since we didn't buffer anything). Don't change the
1407         buffering progress calculation, since playback would fail (there would
1408         be nothing to play).
1410         r: sde
1412 2009-09-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1414         * mms-downloader.cpp: Remove old debugging code that was stripping out
1415         everything after a ? in a url.
1417         r: sde
1419 2009-09-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1421         * xaml.cpp: Honor the debug configuration option instead of enabling it
1422         all the time.
1424         * glyphs.cpp: Move debug code into conditional expression.
1426         * debug.h: DEBUG is resolved to nothing at all in release builds, so
1427         when checking if debug is defined in complex expressions we need to
1428         use 'defined (DEBUG)', since otherwise the expression becomes bogus.
1429         Also Move #include "runtime.h" outside of the conditional code, this
1430         way we don't have different include requirements in other headers
1431         depending on debug/release configuration.
1433         r: sde
1435 2009-09-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1437         * dependencyobject.cpp|h: SetCurrentDeployment: add a parameter
1438         specifying whether the current thread should be registered with the
1439         deployment or not.
1440         
1441         This fixes a minor catch with the media threads: they need to register
1442         the current thread with the deployment before calling
1443         SetCurrentDeployment, but they can't call GetDeployment to get the
1444         deployment to register the thread with before calling
1445         SetCurrentDeployment since it would trigger a deployment mis-matched
1446         warning.
1448         * pipeline.cpp|h: Add a thread pool to manage media threads instead of
1449         creating one thread per Media instance.
1451         * pipeline-asf.cpp: Updated according to Media API changes.
1453         r: geoff
1455 2009-09-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1457         * mediaplayer.cpp: GetVolume: Get the AudioSource instance before using
1458         it.
1460         r: sde
1462 2009-09-16  Larry Ewing  <lewing@novell.com>
1464         * multiscaleimage.cpp (OnPropertyChanged): chain up to MediaBase
1465         not DependencyObject so that property changes actually work.
1467         r: kangaroo
1469 2009-09-14  Jeffrey Stedfast  <fejj@novell.com>
1471         * deployment.cpp (Initialize): Disable MONO_IOMAP=case.
1473         * application.cpp (GetResourceAsPath): ExtractAll using
1474         CanonModeResource (everything gets lowercased).
1476         * xap.cpp (Unpack): ExtractAll using CanonModeXap (everything but
1477         .dll's get lowercased).
1478         (xap_create_from_file): Canonicalize the AppManifest.xaml file
1479         name.
1481         * utils.cpp (CanonicalizeFilename): Now takes a tri-state mode
1482         argument to specify whether it is canonicalizing a Xap file, a
1483         resource name, or just fixing path separators. When in Xap mode,
1484         don't downcase Dll base names.
1485         (ExtractAll): When extracting a Xap, symlink a fully lowercased
1486         filename to the unmodified .dll name.
1488         r: spouliot
1490 2009-09-16  Larry Ewing  <lewing@novell.com>
1492         * tilesource.h: make tileblendtime unamanaged so we can use it
1493         when creating the fade animation.
1494         
1495         * multiscaleimage.cpp (Render): use the duration from the
1496         tilesource for the fade animation.  This probably needs to listen
1497         to change events but more testing is required.
1499         r: toshok
1500         
1501 2009-09-16  Larry Ewing  <lewing@novell.com>
1503         * style.h: make IsSealed field internal. 
1505 2009-09-16  Sebastien Pouliot  <sebastien@ximian.com>
1507         * messagebox.h: Remove tab to please the generator
1509         r: lewing
1511 2009-09-16  Sebastien Pouliot  <sebastien@ximian.com> 
1513         * deepzoomimagetilesource.cpp: don't leak get_resource_aborter
1514         or format
1516         r: sde
1518 2009-09-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1520         * pipeline.cpp|h: ProgressiveSource::Dispose: we can only abort the 
1521         resource loader from the main thread.
1523         r: sde
1525 2009-09-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1527         * ChangeLog:
1528         * bitmapimage.cpp: don't leak get_res_aborter.
1530         r: sde
1532 2009-09-16  Stephane Delcroix  <sdelcroix@novell.com>
1534         * multiscaleimage.h|cpp: StopDownloading () abort and clean the
1535         downloaders. Call it from the dtor, InvalidateTileLayer and
1536         OnSourcePropertyChanged. Should prevent drt874 from randomly failing.
1538         r: rolf
1540 2009-09-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1542         * pipeline.cpp: MediaClosure: remove the 'finished' field (never used)
1543         and add a 'description' field to ease understanding of what is going
1544         on in the pipeline.
1546         r: sde
1548 2009-09-15  Sebastien Pouliot  <sebastien@ximian.com> 
1550         * messagebox.h: Workaround old gtk+ lacking GTK_MESSAGE_OTHER
1552         r: lewing
1554 2009-09-15  Larry Ewing  <lewing@novell.com>
1556         * control.h: Mark IsTemplateItem as internal.
1558         * mediaelement.h: mark DownloadProgress as readonly.
1560         * multiscaleimage.h: make AspectRatio, IsDownloading and IsIdle
1561         readonly.
1563 2009-09-15  Sebastien Pouliot  <sebastien@ximian.com> 
1565         * messagebox.cpp|h: New. MessageBox implementation
1566         * Makefile.am: Add new files to the build
1568         r: toshok
1570 2009-09-15  Stephane Delcroix  <sdelcroix@novell.com>
1572         * multiscaleimage.cpp: set the surface pointer to NULL after
1573         destroying.
1575         r: spouliot
1577 2009-09-16  Chris Toshok  <toshok@ximian.com>
1579         * dependencyobject.cpp (EventObject::Emit): don't return early
1580         when we have a pre-emit handler, even if the list is empty.  Also,
1581         don't do the pre-emit handler here.
1582         (EventObject::DoEmit): instead do it here.
1584 2009-09-14  Chris Toshok  <toshok@ximian.com>
1586         * xaml.cpp (XamlLoader::CreateFromFileWithError): use the new
1587         ParserErrorEventArgs overload to MoonError::FillIn to simplify
1588         this a little bit.
1589         (XamlLoader::CreateFromStringWithError): same.
1590         (XamlLoader::HydrateFromStringWithError): same.
1592         * pipeline-asf.cpp (MmsSource::DownloadFailedHandler): pass a
1593         MoonError to the ErrorEventArgs, instead of the multiple args.
1595         * playlist.cpp: same.
1597         * asf/asf.cpp: same.
1599         * downloader.cpp (Downloader::SendInternal): pass a MoonError to
1600         the ErrorEventArgs, instead of the multiple args.
1601         (Downloader::NotifyFailed): same.
1603         * runtime.cpp (Surface::EmitError): same.
1605         * mediaelement.cpp (MediaElement::ReportErrorOccurred): same.
1607         * pipeline.cpp: same.
1609         * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
1610         we need to free the string we pass to MoonError::FillIn now that
1611         it frees.
1612         (DependencyObject::IsValueValid): same.
1613         (DependencyObject::RegisterAllNamesRootedAt): same.
1614         (DependencyObject::ReadLocalValueWithError): same.
1615         (DependencyObject::GetValueWithError): same.
1616         (DependencyObject::GetValueNoDefaultWithError): same.
1617         (DependencyObject::SetParent): same.
1619         * brush.h|cpp (ImageBrush::image_failed): pass in the calldata to
1620         ImageFailed.
1621         (ImageBrush::ImageFailed): pass the ImageErrorEventArgs on to our
1622         ImageFailedEvent, after reffing them.
1624         * bitmapimage.cpp (BitmapImage::DownloaderComplete): if there was
1625         an error, we need to fill in the moon error with the appropriate
1626         exception, code, and msg.  the calldata to the Emit call is now an
1627         ImageErrorEventArgs again, which we construct using the
1628         moon_error.
1629         (BitmapImage::DownloaderFailed): same sort of change.
1630         (BitmapImage::CreateLoader): same.
1632         * bitmapimage.h (class BitmapImage): rename "error" field to
1633         "gerror" to make it clearer what it is in the code.
1635         * enums.h (enum ErrorEventArgsType): rename ErrorType to this so
1636         we get a little more indication of where it comes from.  this enum
1637         is not long for this world, if I can help it.
1639         * media.h|cpp (Image::image_failed): pass in the calldata to
1640         ImageFailed.
1641         (Image::ImageFailed): pass the ImageErrorEventArgs on to our
1642         ImageFailedEvent, after reffing them.
1644         * error.h|cpp: move all the eventargs subclasses from here
1645         to eventargs.h.
1646         (class MoonError): add a non-empty ctor, copy ctor and operator=.
1647         Also, remove the char* vs. const char* apis.  make them all const
1648         char*, and dup the passed in string.  Lastly, add a FillIn
1649         overload that takes a ParserErrorEventArgs.
1651         * eventargs.h|cpp: the ErrorEventArgs subclasses now keep some
1652         info in an embedded MoonError.
1653         (ExceptionRoutedEventArgs): remove this class.  Nothing in
1654         unmanaged code uses it.
1656 2009-09-14  Sebastien Pouliot  <sebastien@ximian.com>
1658         * xaml.cpp: remove dead code
1660         r: jackson
1662 2009-09-14  Chris Toshok  <toshok@ximian.com>
1664         * xaml.cpp (XamlLoader::CreateFromFileWithError): use the new
1665         ParserErrorEventArgs overload to MoonError::FillIn to simplify
1666         this a little bit.
1667         (XamlLoader::CreateFromStringWithError): same.
1668         (XamlLoader::HydrateFromStringWithError): same.
1670         * pipeline-asf.cpp (MmsSource::DownloadFailedHandler): pass a
1671         MoonError to the ErrorEventArgs, instead of the multiple args.
1673         * playlist.cpp: same.
1675         * asf/asf.cpp: same.
1677         * downloader.cpp (Downloader::SendInternal): pass a MoonError to
1678         the ErrorEventArgs, instead of the multiple args.
1679         (Downloader::NotifyFailed): same.
1681         * runtime.cpp (Surface::EmitError): same.
1683         * mediaelement.cpp (MediaElement::ReportErrorOccurred): same.
1685         * pipeline.cpp: same.
1687         * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
1688         we need to free the string we pass to MoonError::FillIn now that
1689         it frees.
1690         (DependencyObject::IsValueValid): same.
1691         (DependencyObject::RegisterAllNamesRootedAt): same.
1692         (DependencyObject::ReadLocalValueWithError): same.
1693         (DependencyObject::GetValueWithError): same.
1694         (DependencyObject::GetValueNoDefaultWithError): same.
1695         (DependencyObject::SetParent): same.
1697         * brush.h|cpp (ImageBrush::image_failed): pass in the calldata to
1698         ImageFailed.
1699         (ImageBrush::ImageFailed): pass the ImageErrorEventArgs on to our
1700         ImageFailedEvent, after reffing them.
1702         * bitmapimage.cpp (BitmapImage::DownloaderComplete): if there was
1703         an error, we need to fill in the moon error with the appropriate
1704         exception, code, and msg.  the calldata to the Emit call is now an
1705         ImageErrorEventArgs again, which we construct using the
1706         moon_error.
1707         (BitmapImage::DownloaderFailed): same sort of change.
1708         (BitmapImage::CreateLoader): same.
1710         * bitmapimage.h (class BitmapImage): rename "error" field to
1711         "gerror" to make it clearer what it is in the code.
1713         * enums.h (enum ErrorEventArgsType): rename ErrorType to this so
1714         we get a little more indication of where it comes from.  this enum
1715         is not long for this world, if I can help it.
1717         * media.h|cpp (Image::image_failed): pass in the calldata to
1718         ImageFailed.
1719         (Image::ImageFailed): pass the ImageErrorEventArgs on to our
1720         ImageFailedEvent, after reffing them.
1722         * error.h|cpp: move all the eventargs subclasses from here
1723         to eventargs.h.
1724         (class MoonError): add a non-empty ctor, copy ctor and operator=.
1725         Also, remove the char* vs. const char* apis.  make them all const
1726         char*, and dup the passed in string.  Lastly, add a FillIn
1727         overload that takes a ParserErrorEventArgs.
1729         * eventargs.h|cpp: the ErrorEventArgs subclasses now keep some
1730         info in an embedded MoonError.
1731         (ExceptionRoutedEventArgs): remove this class.  Nothing in
1732         unmanaged code uses it.
1734 2009-09-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1736         * audio-alsa.cpp|h:
1737         * audio-pulse.cpp|h: Delay pulse/alsa initialization until we actually
1738         need to play something, and clean up when we stop playing audio.
1740         * mutex.h: Add support for recursive mutexes.
1742         r: geoff
1744 2009-09-14  Stephane Delcroix  <sdelcroix@novell.com>
1746         * deepzoomimagetilesource.h:
1747         * multiscaleimage.h|cpp:
1748         * tilesource.h|cpp:
1749         * uielement.h: drop some manually written cbindings in favor of
1750         generated ones.
1752         * cbinding.h|cpp: regen
1754         r: rolf
1756 2009-09-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1758         * audio.cpp: It should be safe to delete audio sources on any
1759         thread.
1761         r: sde
1763 2009-09-11  Larry Ewing  <lewing@novell.com>
1765         * deployment.cpp, deployment.h: add OutOfBrowserSettings,
1766         ExternalPartCollection, ExternalPart and ExtensionPart to allow
1767         more SL 3 compat.
1769         r: toshok
1771 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1773         * audio.cpp|h: Add AudioSource::GetMediaPlayerReffed and use it
1774         wherever we used to access the field directly. Fixes a very rare
1775         multi-thread issue.
1777         r: spouliot
1779 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1781         * pipeline-asf.cpp: Add a null check.
1783         r: spouliot
1785 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1787         * runtime.h: Fix typo in sanity message.
1789 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1791         * audio.cpp: WriteFull: have a local copy of the stream pointer,
1792         it may get changed on the main thread.
1794         r: spouliot
1796 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1798         * audio-alsa.cpp: AlsaSource::InitializeInternal: make sure we unref
1799         the audio stream in all code paths.
1801         r: spouliot
1803 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1805         * mediaelement.cpp: Dont ref/unref around the MarkerTimeout tick call,
1806         it should be safe since the tick call is removed upon destruction.
1808         r: spouliot
1810 2009-09-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1812         * audio.cpp|h: Make AudioPlayer refcounted, and shutdown when the
1813         AudioPlayer is disposed due to refcounting reaching 0. This way
1814         we can keep the instance lock for as little time as possible
1815         (to do the ref), instead of during the entire Add/Remove calls,
1816         which may end up deadlocking deep inside pulse in rare circumstances
1817         (we try to add an audio source on one thread(requires a global pa lock)
1818         when removing another audio source on another thread as a response to
1819         an event from pa which may already have the global pa lock).
1821         * type.h:
1822         * value.h:
1823         * cbinding.h:
1824         * type-generated.cpp: Regenerated
1826         r: sde
1828 2009-09-11  Stephane Delcroix  <sdelcroix@novell.com>
1830         * multiscaleimage.h|.cpp: DownloadTile () now takes a user_data
1831         pointer instead of subcache, layer, x and y. Avoids some tree waliking
1832         in the cache trees.
1834         r: spouliot
1836 2009-09-11  Stephane Delcroix  <sdelcroix@novell.com>
1838         * multiscaleimage.cpp: QTree: remove the QTreeNode alias, fix 
1839         qtree_remove to take guint64 indices, qtree_next_sibling for 
1840         future usage.
1842         r: rolf
1844 2009-09-10  Jackson Harper  <jackson@ximian.com>
1846         * namescope.h: Add an accessor for the names hashtable so we can
1847         use them in plugin-debug.
1849         r: spouliot
1851 2009-09-10  Jackson Harper  <jackson@ximian.com>
1853         * xaml.cpp|h: Add flags to the callback data
1854         - Add a pinvoke function that allows propertys to be delayed in
1855         their set call until after the element is fully parsed.  This
1856         allows things like adding elements to a Selector and setting its
1857         index in xaml.
1859         r: spouliot
1860         
1861 2009-09-10  Larry Ewing  <lewing@novell.com>
1863         * multiscaleimage.cpp (RenderSingle): work around the cairo
1864         limitations by doing the viewport/msi intersection and clipping in
1865         viewport space.
1867         r: sde
1869 2009-09-10  Stephane Delcroix  <sdelcroix@novell.com>
1871         * multiscaleimage.cpp: drop 3 useless lines (the cairocontext we
1872         receive on Render is already clipped to the control size.
1873         Wrap the clipping to image size in a conditional to avoid clipping
1874         with really huge rectangles. That it a bug in cairo, as shown in 
1875         drt 2013, 2014. In those cases, the rendering will (visually) leak
1876         for the low order layers.
1878         r: spouliot
1880 2009-09-09  Jackson Harper  <jackson@ximian.com>
1882         * xaml.cpp: When we are setting attributes we want to set
1883         everything with a backing dependency property before we set things
1884         that require managed. We also delay the setting of attributes with
1885         an explicit managed namespace reference.  NOTE: We dont delay
1886         setting attributes that have a DP but are forced into managed
1887         because of their type.
1888         - We can share SetUnknownAttribute functions because the default
1889         xmlns is inited to NULL.
1891         r: rolf
1893 2009-09-09  Stephane Delcroix  <sdelcroix@novell.com>
1895         * multiscaleimage.cpp: Clear () the SubImagesCollection on 
1896         source changed. Speed things up when reusing the same MSI
1897         over and over with different sources. drt #2004 is now passing
1898         every times.
1900         r: rolf
1902 2009-09-08  Sebastien Pouliot  <sebastien@ximian.com>
1904         * downloader.h, layout.h, list.h: Add missing virtual destructors
1906         r: toshok
1908 2009-09-08  Chris Toshok  <toshok@ximian.com>
1910         * provider.cpp (StylePropertyValueProvider::SealStyle): pass true
1911         for ProviderValueChanged's @set_parent.
1912         (InheritedPropertyValueProvider::PropagateInheritedProperty): pass
1913         true in the visual walking case, and false in the
1914         textblock->inline case.
1915         (PROP_ADD): pass true.
1916         (AutoCreatePropertyValueProvider::GetPropertyValue): pass true.
1917         (InheritedPropertyValueProvider::PropagateInheritedProperty):
1918         do a deep traversal of the tree, looking for children who have a
1919         mapped property from the changed one (MapPropertyToDescendant
1920         returns NULL if there's no mapping).  Once we find a suitable
1921         descendant, call ProviderValueChanged on it with "true" for
1922         notify_listeners.  This will take care of notifying further down
1923         the tree if need be, and we can skip that branch.  For textblocks
1924         we also have to iterate over the inlines to propagate the property
1925         change notification.
1926         (InheritedPropertyValueProvider::PropagateInheritedPropertiesOnAddingToTree):
1927         traverse the entire subtree looking for classes which can inherit
1928         properties from above them.  when we find one, get the inherited
1929         value.  if it's non-null, notify that the property has changed,
1930         and keep trace of this property (we only notify once for a given
1931         subtree, since the normal ProviderValueChanged notifications will
1932         handle the rest for that property.)
1933         (walk_tree): this recursive function does the bulk of the work for
1934         ::PropagateInheritedPropertiesOnAddingToTree
1936         * dependencyobject.h|cpp (DependencyObject::ProviderValueChanged):
1937         add an additional argument (set_parent), which is true for every
1938         instant except when TextBox is propagating inherited brushes to
1939         its constituent inlines.  In this case, the textbox is still the
1940         parent of the brush.  At least for the time being.  In a perfect
1941         world all the changed handling would live in the leaf
1942         nodes (i.e. in the Inlines themselves)
1943         (DependencyObject::ClearValue): track api change
1944         (DependencyObject::SetValueWithErrorImpl): same.
1945         (DependencyObject::GetValue): add an overload for allowing both
1946         starting and ending precedences, and implement the other two
1947         overloads in terms of it.
1948         (DependencyObject::GetValueSkippingPrecedence): remove, no longer
1949         used.
1951         * uielement.cpp (UIElement::ElementAdded): propagate all
1952         inheritable properties into the subtree we're adding, before
1953         calling Loaded.
1955         r: andreia
1956         
1957 2009-09-08  Stephane Delcroix  <sdelcroix@novell.com>
1959         * downloader.h|.cpp: new MsiPolicy, like MediaPolicy but doesn't allow
1960         redirections (drt 874)
1962         * bitmapimage.h|bitmapimage.cpp: new SetDownloadPolicy () to override the
1963         bitmapimage policy;
1965         * multiscaleimage.cpp: use MsiPolicy, fixes drt 874.
1967         r: spouliot
1969 2009-09-08  Sebastien Pouliot  <sebastien@ximian.com>
1971         * downloader.cpp: Skip redirection check if the source url is a
1972         local file.
1974         r: sde
1976 2009-09-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1978         * bitmapimage.cpp: CreateLoader: we were relying on an DownloadFailed
1979         event from the downloader after cancelling a resource request, this 
1980         is no longer true, so emit ImageFailed manually after calling Abort.
1982         r: sde
1984 2009-09-08  Stephane Delcroix  <sdelcroix@novell.com>
1986         * deepzoomimagetilesource.cpp: don't render if any MSI extends
1987         is 0. avoid rendering an extra layer in some cases.
1989         r: rolf
1991 2009-09-08  Stephane Delcroix  <sdelcroix@novell.com>
1993         * deepzoomimagetilesource.h|cpp: replace downloader usage by
1994         Application::GetResource (). Parses the xml stream as it comes,
1995         instead of all at once.
1997         r: kangaroo
1999 2009-09-07  Chris Toshok  <toshok@ximian.com>
2001         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
2002         don't bail out early if both values are null, as the property
2003         might be AlwaysChange.
2004         (DependencyObject::ClearValue): same.
2006         r: kangaroo
2008 2009-09-07  Stephane Delcroix  <sdelcroix@novell.com>
2010         * multiscaleimage.cpp: the tileLayer parameter is not the number 
2011         of layers to invalidate.
2013         r: shana
2015 2009-09-07  Stephane Delcroix  <sdelcroix@novell.com>
2017         * multiscaleimage.cpp: InvalidateTileLayer no longer invalidate the
2018         full cache, but only the requested tiles.
2020         r: shana
2022 2009-09-05  Stephane Delcroix  <sdelcroix@novell.com>
2024         * multiscaleimage.cpp:
2025         * deepzoomimagetilesource.h|cpp: do the same cleaning suffs (clearing
2026         the cache, aborting the downloaders, invalidating, etc...) on dzits 
2027         urisource changed that is done on msi sourcechanged.
2029         r: shana
2031 2009-09-05  Stephane Delcroix  <sdelcroix@novell.com>
2033         * multiscaleimage.h|cpp: code reshuffling and refactoring. Move
2034         the OnSourcePropertyChanged handling outside of OnPropertyChanged.
2035         No longer keep a source instance variable, as we can get it with
2036         GetSource ().
2038         r: jackson
2040 2009-09-04  Larry Ewing  <lewing@novell.com>
2042         * multiscaleimage.cpp (RenderSingle): clip our rendering to the
2043         image bounds so that when we are scaling up we don't end up with
2044         blurry images.
2046         r: sde
2048 2009-09-04  Stephane Delcroix  <sdelcroix@novell.com>
2050         * utils.h|cpp: add a void* arg to the Cancellable api
2052         * application.cpp:  remove the downloader notifications on 
2053         Cancel ().
2055 2009-09-04  Stephane Delcroix  <sdelcroix@novell.com>
2057         * multiscaleimage.cpp: on source change, don't only Abort() the
2058         dlders, but also reset the internal state of the dlders to Free
2060         r: alan
2062 2009-09-03  Stephane Delcroix  <sdelcroix@novell.com>
2064         * multiscaleimage.cpp: reset the Viewport to its default values
2065         on source change. Eventually fixes drt#511.
2067         r:lewing
2069 2009-09-03  Jeffrey Stedfast  <fejj@novell.com>
2071         * textbox.h: Nuke the CallInitialize metadata from TextBox.
2073 2009-09-03  Stephane Delcroix  <sdelcroix@novell.com>
2075         * deepzoomimagetilesource.h: add Generate* attributes
2077 2009-09-03  Stephane Delcroix  <sdelcroix@novell.com>
2079         * multiscaleimage.h: drop the GenrateJSBinding attributes
2081 2009-09-03  Stephane Delcroix  <sdelcroix@novell.com>
2083         * xaml.cpp:
2084         * deepzoomimagetilesource.h|cpp: remove a hack in the parser, and
2085         move it to the DZITS ctor. DRTs (509 and 511) and some sites shows
2086         that we have to strip an eventual leading / on ctor but not on
2087         SetUriSource.
2089 2009-09-02  Andreia Gaita  <avidigal@novell.com>
2091         * dependencyobject.cpp: move the storage cleanup to Dispose, they
2092         will need to invoke handlers and other things that require the
2093         object to still be alive. fixes crash on drt 109
2095         r: lewing
2097 2009-09-02  Jackson Harper  <jackson@ximian.com>
2099         * dependencyproperty.cpp: If the explicitly mentioned type does
2100         not contain the property, try looking for the property on the
2101         current lookup obejct.  Allows things like (UIElement.Height) on a
2102         Grid object.
2104         r: shana
2106 2009-09-02  Jeffrey Stedfast  <fejj@novell.com>
2108         * textblock.cpp (TextBlock::OnCollectionChanged): Explicitly call
2109         UpdateLayoutAttributes(). We can't rely on it being called as a
2110         result of setting the Text property since the overall Text
2111         property value might not have changed.
2112         (TextBlock::OnCollectionItemChanged): Same here.
2113         (TextBlock::OnPropertyChanged): Same for when the Inlines property
2114         changes. In the FontSource case, don't set invalidate to
2115         false. Also set dirty to true.
2116         (SetTextInternal): Changed to return void, no need to return bool
2117         anymore.
2119         r: alan
2121 2009-09-01  Jeffrey Stedfast  <fejj@novell.com>
2123         * layout.cpp (TextLayoutGlyphCluster::Render): If the background
2124         brush is null, don't bother drawing a background.
2126         r: lewing
2128 2009-09-01  Jeffrey Stedfast  <fejj@novell.com>
2130         * layout.cpp (TextLayoutGlyphCluster::Render): If the Foreground
2131         brush is null, don't render the text.
2133         r: spouliot
2135 2009-09-01  Sebastien Pouliot  <sebastien@ximian.com> 
2137         * utils.cpp (CopyFileTo): Close the destination file handle if 
2138         the source (filename) cannot be opened.
2140         r: jeff
2142 2009-09-01  Sebastien Pouliot  <sebastien@ximian.com>
2144         * uielement.cpp (UIElement::Paint): Don't leak a copy of the 
2145         region when *not* using FTB rendering.
2147         r: jeff
2149 2009-09-01  Larry Ewing  <lewing@novell.com>
2151         * frameworkelement.cpp: clear LastRenderSize before we emit so
2152         that we don't end up in a possible recursion.
2154         Fixes http://www.worldwidetelescope.org/webclient/
2155         
2156         r: toshok
2158 2009-09-01  Sebastien Pouliot  <sebastien@ximian.com>
2160         * xaml.cpp: Fix DRT355 (broken at r140756) to report the "right"
2161         error code when an invalid xap file is encoutered.
2163         re: jackson
2165 2009-08-31  Sebastien Pouliot  <sebastien@ximian.com>
2167         * debug.cpp: Delete frame if we're not using it in the loop
2168         * resources.cpp: Don't leak Value instance on error
2170         re: kangaroo
2172 2009-08-30  Andreia Gaita  <avidigal@novell.com>
2174         clock leak fixes.
2176         * animation.[h|cpp]: rename TeardownClockGroup to TeardownClock and
2177         move it to the Timeline class so all timelines can clear their clocks.
2178         Removed private root_clock, all timelines should use the timeline
2179         clock variable
2181         * timeline.[h|cpp]: TeardownClock removes the clock from the parent
2182         ClockGroup and clears the ref on the clock so it can be destroyed
2183         (which in turn will release the ref on the timeline so it too gets
2184         destroyed).
2185         DispatcherTimer doesn't have to destroy it's clock, the timeline
2186         dispose takes care of that. Added TeardownClock for DispatcherTimer
2187         so it stops the clock before disposing.
2188         Removed private root_clock, all timelines should use the timeline
2189         clock variable
2191         * clock.[h|cpp]: Added Dispose to Clock and ClockGroup. The
2192         group Dispose goes down the hierarchy of clocks and starts clearing
2193         clocks (via timeline TeardownClock) from bottom to top, so
2194         everything is guaranteed to die before the root clock gets
2195         destroyed.
2197         * timemanager.cpp: Dispose root clock before releasing it
2199         r: toshok
2201 2009-08-30  Andreia Gaita  <avidigal@novell.com>
2203         * textblock.cpp: drop the run reference, it's already reffed on the
2204         collection
2206         r: toshok
2208 2009-08-28  Alan McGovern  <amcgovern@novell.com>
2210         * control.h:
2211         * control.cpp:
2212         * contentcontrol.cpp: ContentControl is not in charge of
2213           expanding its content template, the users of ContentControl
2214           have to do that. When applying a ControlTemplate, if it
2215           expands to an empty element or one which is not a UIElement,
2216           we ignore the template and instead apply the default
2217           element. r: toshok
2219 2009-08-27  Jeffrey Stedfast  <fejj@novell.com>
2221         * textbox.cpp (TextBoxBase::Initialize): Don't listen for Focus or
2222         Mouse events anymore (except the special internal MultiClick
2223         event). Managed code will now call our public On$Event() methods
2224         when appropriate.
2225         (TextBoxBase::OnKeyUp): Don't ever set args.Handled to
2226         true. Doesn't seem like SL ever does.
2228         r:alan
2230 2009-08-27  Stephane Delcroix  <sdelcroix@novell.com>
2232         * tilesource.h: rely on the generator for internal properties.
2234         * tilesource,cpp:
2235         * deepzoomimagetilesource.cpp: use the accesors instead of the
2236         fields.
2238 2009-08-27  Andreia Gaita  <avidigal@novell.com>
2240         * dependencyobject.cpp: list should only be cleared, not destroyed,
2241         storage_hash still needs it
2243         r: alan
2245 2009-08-26  Chris Toshok  <toshok@ximian.com>
2247         * xaml.cpp (XamlParserInfo::ClearBuffer): set buffer to NULL after
2248         we free it.
2250         r: jackson
2252 2009-08-16  Chris Toshok  <toshok@ximian.com>
2254         * value.h.in, value.cpp: remove Value::Set.  it's unnecessary.
2256         * validators.cpp (Validators::BalanceValidator): use the
2257         assignment operator instead of ::Set, which no longer exists.
2258         (Validators::VolumeValidator): same.
2259         (Validators::CursorValidator): don't assign the pointer, assign
2260         the value.  This should have caused bugs...
2262         r: jackson
2263         
2264 2009-08-26  Jeffrey Stedfast  <fejj@novell.com>
2266         * validators.cpp (FloatValidator): New validator to make sure a
2267         value is within range for a float.
2269         * glyphs.cpp: Get rid of origin_y_specified, origin_x, and
2270         origin_y state variables. We can just query these on demand.
2271         (Render): Simplified slightly.
2272         (GetTransformOrigin): Get rid of unused variable.
2273         (GetOriginPoint): Just use the ascender rather than the height and
2274         the descender. Simpler that way.
2276         * glyphs.h: Changed default OriginX and OriginY values to what
2277         they should be according to the moon-unit tests (also makes drt
2278         #246 pass).
2280         r:toshok
2282 2009-08-26  Alan McGovern  <amcgovern@novell.com>
2284         * cbinding.h:
2285         * template.h:
2286         * cbinding.cpp:
2287         * template.cpp: Allow FrameworkTemplates to be expanded in
2288           managed code. Using that, expand the ItemsPanelTemplate in
2289           ItemsControl when it is available. r: toshok
2291 2009-08-26  Andrés G. Aragoneses  <aaragoneses@novell.com>
2293         * security.c: Fixed typos in last "a11y" commit.
2295 2009-08-26  Chris Toshok  <toshok@ximian.com>
2297         * textbox.cpp (TextBoxBase::SetSurface): only call
2298         gtk_im_context_set_client_window if @surface is non-null.  this
2299         quiets down some of the gtk warnings on shutdown.
2301         r: lewing
2302         
2303 2009-08-26  Alan McGovern  <amcgovern@novell.com>
2305         * type.h:
2306         * value.h:
2307         * cbinding.h:
2308         * type-generated.cpp: regen r: shana
2310 2009-08-26  Andreia Gaita  <avidigal@novell.com>
2312         * animation.[h|cpp]: Redesign AnimationStorages. There's now 4
2313         public methods that DOs and Clocks use to control an animation:
2314             - when a new storage is attached and there is already one on
2315                 the property, Disable removes the handlers from the previous
2316                 storage;
2317             - when a storage is detached, the previous one is enabled via
2318                 Enable, which attaches the handlers;
2319             - when a clock is stopped, it calls Stop, which detaches
2320                 everything and resets the property;
2321             - when cloning, SwitchTarget is used to replace the DO and its
2322                 handlers on the storage, to avoid having to clone all the
2323                 storages every time.
2325         Storages are now only deleted when the clock stops, is destroyed
2326         or when the DO they're attached to is destroyed. IsLonely was
2327         removed (meaningless now), as well as the resettable flag (only
2328         enabled animations reset)
2330         * dependencyobject.[h|cpp]: a DO can have more than one animation
2331         running on the same DP, and they need to be stored so that when a
2332         DO is cloned, all running animations are updated to the new DO -
2333         - this way, when they stop they update the current DO and not the
2334         one they were originally attached to. This fixes the animation
2335         problems on togglebuttons and other objects that have several
2336         animations overlapping each other. The storage_hash now stores a
2337         List* of AnimationStorage::Node objects with all existing animations
2338         for every DP, and the animation storage cloning process doesn't clone
2339         the storages, it merely creates a new List* with the existing storages
2340         and updates them to the newly cloned DO.
2342         r: alan
2344 2009-08-26  Alan McGovern  <amcgovern@novell.com>
2346         * template.cpp: NNull check 'result' before using it. r:shana
2348 2009-08-26  Andrés G. Aragoneses  <aaragoneses@novell.com>
2350         * security.c: Mark MoonAtkBridge.dll as platform assembly.
2352 2009-08-25  Chris Toshok  <toshok@ximian.com>
2354         * control.cpp (Control::OnPropertyChanged): emit IsEnabledChanged
2355         when IsEnabledProperty has changed.  we need to do it after the
2356         focus handling has happened, though, as
2357         FocusManager.GetFocusedElement() returns the currently focused
2358         thing in handlers for IsEnabledChanged.  Fixes the rendering of
2359         disabled elements in drt #432.
2361         r: andreia
2362         
2363 2009-08-26  Jackson Harper  <jackson@ximian.com>
2365         * dependencyproperty.cpp: Allow setting properties that are
2366         attached on their owner type without parens. r: toshok
2368 2009-08-26  Jackson Harper  <jackson@ximian.com>
2370         * xaml.cpp|h: Expose a function for parsing bools so the plugin
2371         code can use our bool parsing code. (Handle ints).
2373         r: shana && kangaroo
2375 2009-08-25  Jeffrey Stedfast  <fejj@novell.com>
2377         * textblock.cpp (TextBlock::UpdateFontDescriptions): Don't
2378         invalidate unless one of the fonts has actually changed.
2380         r:spouliot
2382 2009-08-25  Jackson Harper  <jackson@ximian.com>
2384         * type.cpp: Function was still in the header but somehow lost its
2385         implementation.  We dont use it anywhere but its useful for
2386         debugging. r: kangaroo
2388 2009-08-25  Alan McGovern  <amcgovern@novell.com>
2390         * control.h:
2391         * template.h:
2392         * control.cpp:
2393         * template.cpp:
2394         * contentcontrol.cpp: Add support for using
2395           ContentControl.ContentTemplate when it is available. If
2396           there is no Control.Template, ContentControl.ControlTemplate
2397           is used. If that isn't available, we call into managed code
2398           and get the fallback root. r: toshok
2400 2009-08-24  Jackson Harper  <jackson@ximian.com>
2402         * dependencyobject.cpp: Hydrated objects are registered in their
2403         parent namescope so we need to unregister them there also. r: toshok
2405 2009-08-21  Jeffrey Stedfast  <fejj@novell.com>
2407         * fontmanager.cpp (AddResource): Need to free the path string
2408         before returning on success.
2410         * frameworkelement.cpp (UpdateLayout): Modified outer-loop to not
2411         leak the various lists.
2413         r:toshok
2415 2009-08-21  Jeffrey Stedfast  <fejj@novell.com>
2417         * grid.cpp (DestroyMatrices): Need to use delete[] to free the
2418         matrices.
2420         r:toshok
2422 2009-08-21  Alan McGovern  <amcgovern@novell.com>
2424         * control.cpp:
2425         * template.cpp: Whenever any template is expanded, the
2426           template namescope should be locked. r: jackson
2428 2009-08-21  Alan McGovern  <amcgovern@novell.com>
2430         * grid.cpp: When assigning sizes to grid segments, if the
2431           current UIElement spans across star segments, then extra
2432           height will only be assigned to those star segments.
2433           Otherwise extra height will be assigned to Auto and Pixel
2434           segments. r: sde
2436 2009-08-20  Jeffrey Stedfast  <fejj@novell.com>
2438         * textbox.cpp (TextBoxBase::Emit*Async): Removed.
2439         (TextBox::EmitSelectionChanged): Updated to use EmitAsync().
2440         (TextBox::EmitTextChanged): Same.
2441         (PasswordBox::EmitTextChanged): Same.
2443         * popup.cpp (OnPropertyChanged): Use the new EmitAsync() method.
2445         * dependencyobject.cpp (EventObject::EmitAsync): New method to
2446         emit an event asynchronously.
2448         r:alan
2450 2009-08-20  Jeffrey Stedfast  <fejj@novell.com>
2452         * textbox.cpp (emit_selection_changed): Pass along the generation
2453         to the virtual EmitSelectionChanged() method.
2454         (emit_text_changed): Same.
2455         (EmitSelectionChangedAsync): Use a custom closure so that we can
2456         capture the current event generation to use when we actuall emit
2457         it later.
2458         (EmitTextChangedAsync): Same.
2460         r:toshok
2462 2009-08-20  Jackson Harper  <jackson@ximian.com>
2464         * xaml.cpp: Setting OBJECT properties allows objects to be parsed
2465         from strings that shouldn't normally be.  Such as SolidColorBrush
2466         and PointCollection.
2468 2009-08-19  Jeffrey Stedfast  <fejj@novell.com>
2470         * fontmanager.cpp (FontFace::GetExtents): Updated to implement the
2471         same algorithm used by Silverlight.
2473         r:jackson
2475 2009-08-19  Jackson Harper  <jackson@ximian.com>
2477         * playlist.cpp: Its possible to queue an async operation and then
2478         call Dispose before that operation has taken place. This patch
2479         makes Playlist delay its unref and adds guards in its async
2480         callback functions to avoid this. Fixes http://www.nederland24.nl/
2481         r:spouliot
2482         
2483 2009-08-18  Jackson Harper  <jackson@ximian.com>
2485         * template.cpp: Remove not very helpful and somewhat scary looking
2486         debug spew. r:toshok
2488 2009-08-18  Jeffrey Stedfast  <fejj@novell.com>
2490         * layout.cpp (word_type_changed): Partial revert for previous
2491         commit as it broke drt #208.
2493         r:toshok
2495 2009-08-17  Jeffrey Stedfast  <fejj@novell.com>
2497         Fixes for drt #411.
2499         * layout.cpp (SetMaxWidth): If setting MaxWidth to 0, treat it as
2500         infinite.
2501         (word_type_changed): Allow alphabetic characters inside
2502         ideographic words.
2503         (layout_word_wrap): Allow line advance to equal max width.
2505         r:toshok
2507 2009-08-18  Alan McGovern  <amcgovern@novell.com>
2509         * grid.h:
2510         * grid.cpp: Remove the 'magic' size as size allocations are
2511           read from row_matrix/col_matrix now. r: kangaroo
2513 2009-08-18  Alan McGovern  <amcgovern@novell.com>
2515         * grid.h:
2516         * grid.cpp: Allocate sizes of the grid segments in the correct
2517           order. r: shana
2519 2009-08-17  Alan McGovern  <amcgovern@novell.com>
2521         * grid.h:
2522         * grid.cpp: When allocating sizes for rows/columns, clamp the
2523           sizes between the Min and Max values in a consistent manner.
2524           r: jackson
2526 2009-08-17  Alan McGovern  <amcgovern@novell.com>
2528         * grid.h:
2529         * grid.cpp: Change the parameter order in the Segment
2530           constructors to be "value, min, max" to be consistent with
2531           how 'CLAMP' is usually defined. r: jackson
2533 2009-08-16  Chris Toshok  <toshok@ximian.com>
2535         * xaml.cpp (value_from_str_with_parser): fix the abundant memory
2536         leaks in this method.
2538         * propertypath.h (struct PropertyPath): add a copy constructor
2539         here so the xaml.cpp changes work without crashing.
2541         r: andreia
2543 2009-08-16  Chris Toshok  <toshok@ximian.com>
2545         * xaml.cpp (value_from_str_with_parser): we were using the return
2546         value from this method to be "v has been set to a value", but this
2547         isn't enough state.  We also need to know if the
2548         caller (dependency_object_set_attributes, specifically) should
2549         continue on or skip the attribute after it's called us.  So, we
2550         add a "bool *v_set" parameter, and change the return value to
2551         "false = skip, true = continue processing."  We return false in
2552         only 1 case right now, if a double-typed value is to be parsed
2553         from an empty string.  This fixes the Klotski demo, which has
2554         <TranslateTransform X=""> in its xaml. Also, fix the g_strstrip
2555         usage to also deal properly with leading spaces, and stop
2556         duplicating "g_free (s); return true;" - just break there, and let
2557         the blanket free/return at the end of the method handle it.
2558         (dependency_object_set_attributes): simplify the {} handling, and
2559         stop leaking the string value of the attribute when we pass it to
2560         managed.
2562         r: andreia
2563         
2564 2009-08-15  Larry Ewing  <lewing@novell.com>
2566         * mediaelement.cpp (Render): use the same logic we used in image
2567         here to always adjust the paint rect when stretch != StretchNone.
2569         r: andreia
2571 2009-08-15  Larry Ewing  <lewing@novell.com>
2573         * shape.cpp (MeasureOverride): Stretch to the proper width when
2574         available size in not infinite.  Avoid using infinite dimesions as
2575         constraints for Uniform stretches.
2577         Fixes Header stretching in playboy an improves DRT #210.
2579         r: jeff
2580         
2581 2009-08-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2583         * pipeline.cpp: Quiet some debug spew.
2585         r: andreia
2587 2009-08-14  Larry Ewing  <lewing@novell.com>
2589         * grid.cpp (MeasureOverride): properly use min and max.
2591         Fixes regression in DRT #319 from new table code
2593         r: kangaroo
2595 2009-08-14  Larry Ewing  <lewing@novell.com>
2597         * media.cpp: always adjust our paint rectangle when Stretch !=
2598         StretchNone.
2600         Fixes DRT #516 and the regression in #422
2602         r: toshok
2604 2009-08-14  Larry Ewing  <lewing@novell.com>
2606         * frameworkelement.cpp (Arrange): apply the size constraints after
2607         we the the actualsize back from the element.
2609         * layoutinformation.cpp (GetClip): now that other things are
2610         improved only traverse up one level.
2612         Fixes clipping on the smooth streaming size and DRT #210
2614         r: sde
2615         
2616 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2618         * pipeline.cpp: IMediaDecoder::Dispose: clear the list of pending
2619         frames to decode.
2621         r: andreia
2623 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2625         * pipeline.cpp: IMediaDecoder::Dispose: store a copy of our instance
2626         variables in local variables and clear out the instance variables
2627         before unreffing them - prevents certain rare cases of infinite loops.
2629         r: andreia
2631 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2633         * pipeline.cpp: IMediaDecoder::DecodeFrameAsync: don't do anything if
2634         we've been disposed.
2636         r: andreia
2638 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2640         * pipeline.cpp: IMediaObject::EmitSafe: unref the args in all code
2641         paths.
2643         r: andreia
2645 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2647         * pipeline.cpp: IMediaObject::AddSafeHandler: don't add any handlers
2648         if we've been disposed.
2650         r: andreia
2652 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2654         * pipeline.cpp: IMediaObject::Dispose: clear the list of events
2655         we were supposed to emit on the main thread.
2657         r: andreia
2659 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2661         * pipeline.cpp: IMediaDemuxer::Dispose: add a missing unref.
2663         r: andreia
2665 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2667         * pipeline.cpp: IMediaDemuxer::Dispose: store a copy of our instance
2668         variables in local varaibles and clear out the instance variables
2669         before unreffing them - prevents certain rare cases of infinite loops.
2671         r: andreia
2673 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2675         * pipeline.cpp: IMediaStream::Dispose: store a copy of our instance
2676         variables in local variables and clear out the instance variables
2677         before unreffing them - prevents certain rare cases of infinite loops.
2679         r: andreia
2681 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2683         * pipeline.cpp: Media::RetryHttp: we need to Dispose the previous
2684         source.
2686         r: andreia
2688 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2690         * pipeline-asf.cpp: MmsPlaylistEntry::Dispose: break a circular
2691         dependency between MmsPlaylistEntry and Media.
2693         r: andreia
2695 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2697         * pipeline.cpp: Media::Dispose: store a copy of our instance variables
2698         in local variables and clear out the instance variables before
2699         unreffing them - prevents certain rare cases of infinite loops.
2701         r: andreia
2703 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2705         * pipeline.cpp: MarkerStream::Dispose: call base class' Dispose.
2707         r: andreia
2709 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2711         * pipeline-asf.cpp: Add a few missing unrefs.
2713         r: andreia
2715 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2717         * pipeline.cpp|h: Add a MediaDisposObjectClosure that ensures that
2718         the closure is called.
2720         r: andreia
2722 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2724         * pipeline.cpp: Add an invalid MediaResult value, so that MediaClosure
2725         can detect if the callback has been called or not.
2727         r: andreia
2729 2009-08-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
2731         * pipeline.cpp: Media::DisposeObject: if we couldn't enqueue the
2732         dispose on the media thread, call dispose directly.
2734         r: andreia
2736 2009-08-14  Alan McGovern  <amcgovern@novell.com>
2738         * grid.h:
2739         * grid.cpp: Rewrite the size allocation code in grid to better
2740           match the microsoft implementation. It works much better for
2741           the pixel and auto cases, but still has some issues with
2742           star columns. r: lewing
2744 2009-08-14  Jeffrey Stedfast  <fejj@novell.com>
2746         * application.cpp (GetResource): Close the stream when we're
2747         done. Also changed to check write_cb exists before reading from
2748         the stream - if the callback is NULL, don't even bother.
2749         (GetResourceAsBuffer): Removed.
2750         (GetResourceAsPath): Instead of calling GetResourceAsBuffer(), do
2751         the streaming ourselves. Also return NULL if writing the stream to
2752         disk fails.
2754         * utils.cpp (managed_stream_open/read/write/etc): Changed to be
2755         internal. These symbols don't need to be publicly exported.
2757         * utils.h: Added a Stream_Close function signature to
2758         ManagedStreamCallbacks.
2760         * bitmapimage.cpp (resource_notify): Make static/internal - does
2761         not need to be publicly exported.
2763         r:kangaroo
2765 2009-08-14  Stephane Delcroix  <sdelcroix@novell.com>
2767         * multiscaleimage.cpp: retry downloading up to 5 times.
2769 2009-08-14  Stephane Delcroix  <sdelcroix@novell.com>
2771         * bitmapimage.h|cpp, multiscaliemage.cpp: abort downaloaders on 
2772         source change. 
2773         
2774         r: lewing
2776 2009-08-13  Larry Ewing  <lewing@novell.com>
2778         * usercontrol.cpp (MeasureOverride): don't constrain the results.
2780         Fixes DRT #417
2782         r: andreia
2784 2009-08-13  Larry Ewing  <lewing@novell.com>
2786         * textblock.cpp (MeasureOverride):
2787         * textbox.cpp (MeasureOverride): ceil our measurement request when
2788         layout rounding is being done so that we don't get rounded down
2789         and forced to wrap.  More testing is in order but failure mode for
2790         this is painful.
2792         Fixes wrapping in Playboy and the chess final screen.
2794         r: jeff
2795         
2796 2009-08-13  Larry Ewing  <lewing@novell.com>
2798         * timesource.h (MOON_PRIORITY_DEFAULT): lower our default priority
2799         to idle so that firefox and gtk can process events without getting
2800         starved.  Improved Quakelight and StrangeAttractor experience.
2802         r: andreia
2803         
2804 2009-08-13  Larry Ewing  <lewing@novell.com>
2806         * src/brush.cpp: replace all cairo_matrix_invert calls with a
2807         version that warns if it fails.
2809         r: andreia
2811 2009-08-13  Jeffrey Stedfast  <fejj@novell.com>
2813         * layout.cpp (TextLayoutGlyphCluster::Render): No-op if the
2814         advance width is 0. Fixes test-videobrush-text.xaml to render all
2815         of the runs.
2817         r:lewing
2819 2009-08-13  Chris Toshok  <toshok@novell.com>
2821         * xaml.cpp (start_element): If the element is a TextBox.Text
2822         CDATA, treat it as verbatim. Partial fix for drt 2003.
2824         r:jeff
2826 2009-08-13  Jeffrey Stedfast  <fejj@novell.com>
2828         * layout.cpp (Layout): Make sure all attributes were able to load
2829         their fonts. If not, we can't proceed. Fixes the NULL TextFont
2830         crash in DrPopper.
2832         * textblock.cpp (OnPropertyChanged): Instead of using
2833         UpdateLayoutAttributes(), all we really need to do is call
2834         UpdateFontDescriptions() when the FontSource changes.
2836         r:toshok
2838 2009-08-13  Jeffrey Stedfast  <fejj@novell.com>
2840         * fonts.cpp (TextFont::Load): When loading a font face from a
2841         source w/o any families specified, make sure to set master=0 so
2842         that we don't try to get extents from faces[-1].
2844         r:lewing
2846 2009-08-13  Larry Ewing  <lewing@novell.com>
2848         r: kangaroo
2849         
2850         * writeablebitmap.cpp (InitializeFromBitmapSource): always use
2851         rgba pixelformat like sl3 does now.
2853 2009-08-12  Chris Toshok  <toshok@ximian.com>
2855         * bitmapsource.h|cpp (SetBitmapData): add an extra parameter
2856         "own" (default: true) which, if true, causes the bitmap source to
2857         free the bitmapdata when it's destroyed.
2859         * cbinding.h|cpp: regen
2861 2009-08-12  Alan McGovern  <amcgovern@novell.com>
2863         * cbinding.h:
2864         * cbinding.cpp: regen r: toshok
2866         * control.h:
2867         * application.h:
2868         * application.cpp:
2869         * contentcontrol.h:
2870         * contentcontrol.cpp:
2871         * frameworkelement.cpp: A ContentControl which has no Template
2872           needs to call into managed land to create a 'default
2873           template'. When the Content is a UIElement, the UIElement is
2874           used as the template root, otherwise a Grid + TextBlock
2875           (with Binding) is used. This is the same as what
2876           ContentPresenter does to its Content property. r: toshok
2878 2009-08-12  Alan McGovern  <amcgovern@novell.com>
2880         * uielement.cpp: VisualParent should be set to null before
2881           invalidating the cache otherwise the element might be added
2882           to the dirty lists. This causes issues if the element is
2883           added back into the visual tree at a different level. r:
2884           lewing.
2886 2009-08-12  Stephane Delcroix  <sdelcroix@novell.com>
2888         * multiscaleimage.cpp: clear the cache on source change, cache a NULL
2889         tile on downloader failure (fix drt 2014 for good).
2891 2009-08-12  Stephane Delcroix  <sdelcroix@novell.com>
2893         * multiscaleimage.cpp: restore the initial number of concurrent
2894         downloaders, drt 2014 will require a proper fix.
2896 2009-08-12  Chris Toshok  <toshok@ximian.com>
2898         * media.h|cpp (class Image): if our source is a BitmapSource,
2899         handle the PixelDataChangedEvent and Invalidate ourselves if it's
2900         emitted.
2902         * brush.h|cpp (class ImageBrush): if our source is a BitmapSource,
2903         handle the PixelDataChangedEvent and notify our listeners to
2904         redraw if it's emitted.
2906         * bitmapsource.h|cpp (class BitmapSource): add an event so classes
2907         using BitmapSources can be notified when the pixel data
2908         changes (primarily for use with WriteableBitmap).  Emit it from
2909         BitmapSource::Invalidate.
2911         * type-generated.cpp, cbinding.h|cpp: regen
2912         
2913 2009-08-11  Chris Toshok  <toshok@ximian.com>
2915         [ each of these changes fixes a line of text in drt 444 ]
2916         * fontmanager.cpp (FontManager::AddResource): seek the stream to 0
2917         before reading it.
2919         * textblock.cpp (TextBlock::OnPropertyChanged): we need to call
2920         UpdateLayoutAttributes if FontSource is changed, so that the
2921         change propagates down to the inlines.
2923         r: kangaroo
2925 2009-08-11  Larry Ewing  <lewing@novell.com>
2927         * grid.cpp (MeasureOverride): adjust row definition values by
2928         max/min values when building up the Actual sizes
2930         Fixes DRT #319.
2932         r: toshok
2934 2009-08-11  Jeffrey Stedfast  <fejj@novell.com>
2936         * textbox.cpp (TextBox::OnPropertyChanged): Set the font_source on
2937         the TextFontDescription as well as emitting an event so the view
2938         knows it has to re-render. Improves drt 480.
2939         (PasswordBox::OnPropertyChanged): Same.
2940         (TextBox::ClearFontSource): Removed, not used.
2941         (PasswordBox::ClearFontSource): Same.
2943         r:toshok
2945 2009-08-11  Andreia Gaita  <avidigal@novell.com>
2947         * runtime.cpp: TimeManager should be the last thing destroyed, other
2948         objects might need to access it while disposing. r: alan
2950 2009-08-11  Stephane Delcroix  <sdelcroix@novell.com>
2952         * multiscaleimage.cpp: cast so the modulo operation opers on int,
2953         not guint64. Fix sharedtiles usage. r:shana, lewing
2955 2009-08-11  Jeffrey Stedfast  <fejj@novell.com>
2957         * textbox.cpp (TextBoxBase::Paste): Change the multiline
2958         truncation test to explicitly check for \r, \n and 0x2028 instead
2959         of using g_unichar_type() which didn't return the expected values
2960         for these characters. Partial fix for drt 2003.
2961         (*Box::OnPropertyChanged): Updated for AddResource() API change.
2963         * textblock.cpp (TextBlock::OnPropertyChanged): Updated for
2964         AddResource() API change.
2966         * fontmanager.cpp (AddResource): Instead of having our callers
2967         generate a unique resource name, let us do it for them. Don't
2968         bother using mkstemp()/mkdtemp() since our root dir is already
2969         unique. Also fixed to reset the stream resource after consuming it
2970         so that if multiple textblocks/boxes/etc reuse the FontSource,
2971         things work properly. Partial fix for drt 444.
2973         r:lewing
2975 2009-08-11  Alan McGovern  <amcgovern@novell.com>
2977         * runtime.cpp: Controls aren't really auto-focused. What
2978           happens is that when a focused control is removed from the
2979           live tree SL does not emit a LostFocus event and so when the
2980           control is added back into the tree it still thinks it has
2981           focus. This call is still needed as there can be pending
2982           GotFocus/LostFocus events waiting to be emitted. r: toshok.
2984 2009-08-11  Alan McGovern  <amcgovern@novell.com>
2986         * runtime.cpp: Make HandleUIKeyPress do the same thing as
2987           HandleUIKeyRelease when there is no toplevel so it doesn't
2988           null deref. r: sde
2990 2009-08-10  Larry Ewing  <lewing@novell.com>
2992         * bitmapimage.cpp (CreateLoader): if the image isn't a png or a
2993         jpg abort the getresource call.
2995 2009-08-07  Larry Ewing  <lewing@novell.com>
2997         * dirty.cpp (UpdateLayout): don't use the toplevel hack on
2998         noncontainers.
3000         Gets DRT #516 very close to passing slight layout problems left.
3002 2009-08-10  Andreia Gaita  <avidigal@novell.com>
3004         * ptr.h: Change the base class to not allow direct casts to Value
3005         objects. Add cast operator to cast between DO classes directly
3007 2009-08-10  Andreia Gaita  <avidigal@novell.com>
3009         * animation.[h|cpp]: Check for valid applier before trying to use it,
3010         it could be disposing, same for targetprop.
3011         * timemanager.cpp: clear applier when disposing
3013 2009-08-10  Andreia Gaita  <avidigal@novell.com>
3015         * ptr.h: Rename OwnerPtr to DOPtr to make it clear it's a smart
3016         pointer for DependencyObject.
3017         * shape.cpp, timeline.cpp: Rename OwnerPtr to DOPtr
3018         * multiscaleimage.[h|cpp]: Use DOPtr to store DOs and auto-release
3019         them when destroying
3021 2009-08-10  Alan McGovern  <amcgovern@novell.com>
3023         * frameworkelement.cpp: A new measure pass should be made if
3024           either the available width *or* available height has changed
3025           since the last measure pass.
3027 2009-08-10  Andreia Gaita  <avidigal@novell.com>
3029         * ptr.h: fix assignment operators, the copy by reference ones were
3030         causing the pointer to be destroyed prematurely when assigning via
3031         new ()
3033 2009-08-08  Chris Toshok  <toshok@ximian.com>
3035         * fontmanager.cpp (FontManager::AddResource): pass stream->handle
3036         as the first arg to stream->Read, not stream itself.  Also, get
3037         rid of "total" and just pass a 0 offset for each read, since we're
3038         writing the full buffer's contents up to nread each time anyway.
3040 2009-08-07  Andreia Gaita  <avidigal@novell.com>
3042         Fixes drt 2014
3044         * multiscaleimage.cpp: Fix the type of the left shit operations to
3045         avoid overflows. Make it an inline function for easier maintenance.
3046         * tilesource.[h|cpp]: Fix the type of the image width and height,
3047         should be bigger than int.
3049 2009-08-07  Jeffrey Stedfast  <fejj@novell.com>
3051         Fixes drt 337
3053         * textbox.cpp (TextBox::OnPropertyChanged): If setting
3054         SelectedText to "", don't emit TextChanged events if there was no
3055         selection.
3056         (PasswordBox::OnPropertyChanged): Same.
3058 2009-08-06  Chris Toshok  <toshok@ximian.com>
3060         * runtime.cpp (Surface::tick_after_attach_reached): the ordering
3061         of code between this method and Surface::ToplevelLoaded is likely
3062         still somewhat wrong, but moving the Emit here fixes drt #21.
3064 2009-08-06  Chris Toshok  <toshok@ximian.com>
3066         * window-gtk.cpp: move the InvokeTickCalls from here...
3068         * runtime.cpp: to the HandleUI* methods here, so they will be used
3069         in both windowed and windowless codepaths.
3071 2009-08-06  Chris Toshok  <toshok@ximian.com>
3073         * timemanager.h|cpp (TimeManager::RemoveTickCall): this takes
3074         another argument now (the data object passed to AddTickCall) so we
3075         can differentiate callbacks properly.
3077         * runtime.h|cpp (Surface::Attach): we don't return true from
3078         IsLoaded until after the first tick, so that our measure pass has
3079         been run (and contentpresenters are created for all content
3080         controls.)  register the tick call here (after removing any that
3081         may have already been added).
3082         (Surface::tick_after_attach_reached): set ticked_after_attach to
3083         true.
3084         (Surface::IsLoaded): we require ticked_after_attach to be true
3085         here.
3087         * cbinding.h|cpp: regen.
3089 2009-08-06  Jeffrey Stedfast  <fejj@novell.com>
3091         * textbox.cpp (TextBoxBase::OnFocusOut): Instead of clearing the
3092         selection, just set the selection to the cursor position. This
3093         way, if the control gets programatically Focus()'d again, then the
3094         cursor will be where it was just before the control lost
3095         focus. Partial fix for drt 2003.
3097 2009-08-06  Jackson Harper  <jackson@ximian.com>
3099         * xaml.cpp|xaml.h: Add bindings for checking/setting whether a
3100         property has already been set.
3101         
3102 2009-08-06  Jackson Harper  <jackson@ximian.com>
3104         * xaml.cpp: Its possible that a buffered element can add a new
3105         namespace that start_element_handler will not know about, just
3106         ignore this error and the namespace will be added when the buffer
3107         is parsed.
3109 2009-08-06  Jackson Harper  <jackson@ximian.com>
3111         * xaml.cpp: Handle null in the print_tree debug code. (This can
3112         occur when loading a null template)
3114 2009-08-05  Larry Ewing  <lewing@novell.com>
3116         * frameworkelement.cpp (UpdateLayout): revert an accidental
3117         change.
3119 2009-08-05  Jeffrey Stedfast  <fejj@novell.com>
3121         * textbox.cpp (TextBoxBase::OnKeyDown): Cut and Copy operations
3122         should not copy the text buffer to the clipboard if the contents
3123         are secret.
3125 2009-08-05  Larry Ewing  <lewing@novell.com>
3127         * uielement.cpp (ElementRemoved): clear the desired size when
3128         removing the element.
3130         * layoutinformation.cpp: partially revert one of the workarounds.
3132         * frameworkelement.cpp (Arrange): get the old_size from the
3133         RenderSize not the ActualWidth.
3135 2009-08-05  Chris Toshok  <toshok@ximian.com>
3137         * popup.cpp (class GenerationClosure): new closure for emiting the
3138         Opened and Closed events.
3139         (Popup::emit_opened, Popup::emit_closed): pass the generation from
3140         the closure to ->Emit.
3141         (Popup::OnPropertyChanged): for the tick call, pass a closure that
3142         contains the current event generation.
3144         * timemanager.h, timemanager.cpp (TimeManager::InvokeTickCalls):
3145         factor out the loop for invoking tick calls here and call it from
3146         the source tick method.
3148         * window-gtk.cpp (MoonWindowGtk::button_press)
3149         (MoonWindowGtk::button_release, MoonWindowGtk::scroll)
3150         (MoonWindowGtk::motion_notify, MoonWindowGtk::crossing_notify)
3151         (MoonWindowGtk::focus_in, MoonWindowGtk::focus_out)
3152         (MoonWindowGtk::key_press, MoonWindowGtk::key_release): call
3153         TimeManager::InvokeTickCalls from each of these methods before we
3154         call the Surface::HandleUI* method.
3156         * dependencyobject.h (class EventObject): make a couple of api
3157         changes:
3158         (AddTickCall*): add an "EventObject* data" parameter.  if it's
3159         NULL, pass "this", so we have the current behavior.
3160         (DoEmit/Emit): add a "starting_generation" optional argument.  if
3161         it's supplied, we invoke only those handlers with tokens less than
3162         the starting_generation (i.e. those handlers that were registered
3163         before the event was generated.)
3165 2009-08-05  Jeffrey Stedfast  <fejj@novell.com>
3167         * textbox.cpp (TextBoxBase::OnPropertyChanged): Don't clear the
3168         FontSource property when the FontFamily property changes.
3169         (TextBox::OnPropertyChanged): Handle FontSource property changes.
3170         (PasswordBox::OnPropertyChanged): Same.
3172         * textblock.cpp (CleanupDownloaders): Free the font_source string
3173         as well.
3174         (SetFontSource): Update the font_source string based on the
3175         downloader.
3176         (UpdateLayoutAttributes): No longer need to get the font_source
3177         string, we already have it.
3178         (UpdateFontDescriptions): Same.
3179         (OnCollectionItemChanged): Here too.
3180         (OnPropertyChanged): Update the font_source string when the
3181         FontSource property changes.
3183 2009-08-05  Jeffrey Stedfast  <fejj@novell.com>
3185         * textbox.cpp (OnMouseLeftButtonMultiClick): Don't poke at the raw
3186         GdkEventButton structure, use the new MouseEventArgs accessors
3187         instead.
3189         * eventargs.cpp (GetButton): Get the id of the button pressed.
3190         (GetClickCount): Get the number of clicks on the button.
3192 2009-08-05  Alan McGovern  <amcgovern@novell.com>
3194         * panel.cpp: The LogicalParent needs to be set before the
3195           element is added, otherwise the Loaded event can be fired
3196           before LogicalParent is set.
3198 2009-08-04  Larry Ewing  <lewing@novell.com>
3200         * uielement.cpp (DoMeasure): invalidate up the tree more
3201         agressively.  Fixes DRT #190 regression.
3203 2009-08-04  Jeffrey Stedfast  <fejj@novell.com>
3205         * textbox.cpp (TextBoxBase::OnMouseLeftButtonMultiClick): New
3206         callback for the MultiClick event.
3207         (TextBoxBase::OnMouseLeftButtonDown): No longer needs to handle
3208         double and triple mouse clicks.
3210         * uielement.h: Added a MosueLeftButtonMultiClickEvent.
3212         * runtime.cpp (CreateArgsForEvent): Handle MultiClickEvent.
3213         (HandleUIButtonPress): Handle 2 and 3 button mouse clicks.
3215         * pipeline.h (IMediaObject): FrameNode's dtor needs to be virtual.
3217 2009-08-04  Jeffrey Stedfast  <fejj@novell.com>
3219         * utils.cpp (write_all): Changed to just return int (-1 for fail,
3220         0 for success).
3221         (ExtractFile): Don't fsync(). Saves us a lot of time.
3223 2009-08-03  Larry Ewing  <lewing@novell.com>
3225         * shape.cpp (ArrangeOverride): clear the current path.
3227 2009-08-03  Larry Ewing  <lewing@novell.com>
3229         * textbox.cpp (OnModelChanged): InvalidateMeasure when things
3230         change.
3232 2009-08-03  Jeffrey Stedfast  <fejj@novell.com>
3234         * fontmanager.cpp (AddResource): Implemented a version of this
3235         interface that can take a ManagedStreamCallbacks argument.
3237         * application.cpp (GetResourceAsPath): If we are adding the X's
3238         ourselves, use MakeTempDir() instead of CreateTempDir().
3240 2009-07-31  Larry Ewing  <lewing@novell.com>
3242         * layoutinformation.cpp (GetClip): add another hack for layoutclip
3243         on Controls while things are in flux.
3245 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3247         * pipeline.cpp: Media::EnqueueWork: return a bool indicating whether
3248         the work was enqueued or not.
3250 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3252         * pipeline.cpp: Media: use the new ClearQueue overload instead of
3253         spreading the logic all over the place.
3255 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3257         * pipeline.cpp: Media: add a ClearQueue overload which optionally
3258         deletes the queue.
3260 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3262         * playlist.cpp: Don't g_warn something which can happen in normal
3263         circumstances.
3265 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3267         * mediaplayer.cpp: Plug a leak in one rare code-path.
3269 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3271         * mediaplayer.cpp: Close: dispose the AudioSource, it won't be used again.
3273 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3275         * mediaplayer.cpp: Dispose: call base class Dispose after we've finished.
3277 2009-07-31  Jeffrey Stedfast  <fejj@novell.com>
3279         * fonts.cpp (LoadPortableUserInterface): Always load the en-US
3280         font(s) first, and then load the preferred CJK font, followed by
3281         the rest. This improves drt 414.
3283         * fontmanager.cpp (GetExtents): Improved baseline alignment by
3284         adjusting Descent if Height is larger than Ascent +
3285         Descent. Especially visible with drt 107's Deobfuscated Brauhaus
3286         93 font rendering.
3288 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3290         * deployment.cpp: Dispose: we need to unref and null out the application.
3292 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3294         * error.cpp|h:
3295         * downloader.cpp:
3296         * eventargs.cpp|h: Set the object's type upon construction instead
3297         of using SetObjectType right after. This is useful when tracking
3298         objects by type - the ctor also shows up.
3300         * dependencyobject.cpp|h: Add a DependencyObject ctor that takes
3301         a Type::Kind argument.
3303 2009-07-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3305         * debug.cpp: Make the stacktrace pipes thread-local. This way
3306         printing stacktraces from several threads at the same time doesn't
3307         result in a big mess.
3309 2009-07-30  Larry Ewing  <lewing@novell.com>
3311         * layoutinformation.cpp (GetClip): add a workaround for the panel
3312         case while layoutinformation is refactored.
3313         
3314 2009-07-30  Larry Ewing  <lewing@novell.com>
3316         * layoutinformation.cpp: repair a merge bug.
3318 2009-07-30  Larry Ewing  <lewing@novell.com>
3320         * layoutinformation.cpp, layoutinformation.h: move layoutinformation
3321         out of uielement.h.  Compute the layout clip on the fly.
3323         * border.cpp:
3324         * dependencyproperty.g.cpp:
3325         * frameworkelement.cpp:
3326         * frameworkelement.h:
3327         * glyphs.cpp:
3328         * media.cpp:
3329         * mediaelement.cpp:
3330         * panel.cpp:
3331         * point.h:
3332         * shape.cpp:
3333         * textblock.cpp:
3334         * textbox.cpp:
3335         * textbox.h:
3336         * uielement.cpp:
3337         * uielement.h: start reworking layout logic at we refactor
3338         layoutinformation.  Use RenderLayoutClip where appropriate.
3340 2009-07-30  Jeffrey Stedfast  <fejj@novell.com>
3342         * fontmanager.cpp (GetExtents): Much better fix than the
3343         string-comparison hack. Poke at the TrueType/OpenType OS/2 table
3344         and use the usWinAscent/usWinDescent values since this is what
3345         most Windows applications (brokenly) use according to some info I
3346         found on the web. Low and behold, this also makes the Adobe Caslon
3347         Pro metrics work out exactly like they do in Silverlight, so I'm
3348         guessing that the info I found is accurate :-)
3350 2009-07-30  Larry Ewing  <lewing@novell.com>
3352         * uielement.cpp (DoArrange): revert the parent invalidation change as it
3353         did break things.
3355 2009-07-30  Larry Ewing  <lewing@novell.com>
3357         * control.cpp (OnPropertyChanged): update the layout if the
3358         aligment changes.
3360 2009-07-30  Larry Ewing  <lewing@novell.com>
3362         * uielement.cpp (DoArrange): remove the parent invalidation call
3363         it shouldn't be required now and is contraindicated by DRT #501.
3365         * runtime.cpp: InvalidateMeasure on resize.
3367 2009-07-30  Alan McGovern  <amcgovern@novell.com>
3369         * popup.cpp:
3370         * textbox.cpp: TextBox and Popup should use AddAsyncEventCall
3372         * runtime.cpp:
3373         * dependencyobject.h:
3374         * dependencyobject.cpp: Implement a new method for adding
3375           callbacks to invoke asynchronous events. They can't be
3376           invoked using the regular AddTickCall as that causes the
3377           ordering of mouse events and asynchronous events to be
3378           incorrect preventing drt 333, 476 and some others from
3379           passing.
3381 2009-07-30  Jeffrey Stedfast  <fejj@novell.com>
3383         * fontmanager.cpp (GetExtents): Now uses the alternative method of
3384         getting font metrics. Also, when dealing with Adobe fonts, use the
3385         bbox to get metrics rather than using the normal
3386         ascender/descender/height values.
3388 2009-07-30  Jackson Harper  <jackson@ximian.com>
3390         * xaml.cpp: Swallow white space before linebreaks. 
3392 2009-07-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3394         * src.mdp: Connect the Build command in
3395         MonoDevelop with 'make install'.
3397 2009-07-30  Andreia Gaita  <avidigal@novell.com>
3399         * multiscaleimage.cpp: leak and initialization fixes
3401 2009-07-30  Andreia Gaita  <avidigal@novell.com>
3403         * shape.cpp: use smart pointer to avoid unreffing by hand
3405 2009-07-30  Andreia Gaita  <avidigal@novell.com>
3407         * timeline.cpp: leak fix
3409 2009-07-30  Andreia Gaita  <avidigal@novell.com>
3411         * ptr.h: added RefPtr and OwnerPtr, smart refcounting pointer classes
3412         * Makefile.am: updated
3414 2009-07-29  Larry Ewing  <lewing@novell.com>
3416         * border.cpp (ArrangeOverride): return the input now that it is
3417         correctly sized.
3419         * frameworkelement.cpp: short circuit Measure and Arrange if the
3420         element is collapsed.
3422 2009-07-29  Jeffrey Stedfast  <fejj@novell.com>
3424         * textbox.cpp (TextBoxBase::OnKeyDown): Only reset the IM context
3425         of the keyboard event was handled (meaning the state has changed).
3426         (TextBoxBase::OnCharacterKeyDown): Don't reset the IM context
3427         here.
3429 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3431         * shape.cpp: Plug a leak.
3433 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3435         * pipeline.cpp: IMediaObject::EmitSafe (): use same refcounting
3436         semantics as EventObject::Emit: unref the event args at the end of
3437         the Emit method.
3439 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3441         * pipeline.cpp: IMediaDemuxer::SeekAsync (): don't return before
3442         unreffing the reffed media we've got.
3444 2009-07-29  Sebastien Pouliot  <sebastien@ximian.com>
3446         * pipeline-ui.cpp: Delegate the codec integrity validation to Mono.
3447         Helper.CheckIntegrity (System.Windows.dll)
3449 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3451         * pipeline.cpp (Media::SelectDemuxerAsync): minor performance
3452         improvement: return true immediately if we've actually managed to
3453         open a demuxer instead of enqueuing another call to
3454         SelectDemuxerAsync.
3456 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3458         * pipeline-asf.cpp:
3460         * pipeline-asf.cpp (MmsPlaylistEntry::AddEntry): add the entry
3461         to the playlist before initializing it, since initializing it may
3462         end up opening it right away and then it must be present in the
3463         playlist.
3465 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3467         * pipeline-asf.cpp (ASFDemuxer::Open): unref the streams we've
3468         created when done with them.
3470 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3472         * pipeline.cpp: printf -> LOG_PIPELINE.
3474 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3476         * mp3.cpp (Mp3Demuxer::ReadHeader): unref the stream we've created
3477         when we're done with it.
3479 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3481         * audio.cpp IMediaStream::PopFrame() gives us a reffed object,
3482         unref it when done with it.
3484 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3486         * dependencyobject.h: Make EventObject::GetObjectType
3487         non-virtual. No need for a virtual method anymore, since we store
3488         the type on the object itself.
3490 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3492         * application.cpp: unref the downloader when it has finished.
3494 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3496         * utils.cpp|h: Cancellable: use strong typing to store the
3497         downloader and ref it. This way the cancel callback can use the
3498         downloader safely.
3500 2009-07-29  Alan McGovern  <amcgovern@novell.com>
3502         * textbox.h:
3503         * cbinding.h:
3504         * textbox.cpp:
3505         * cbinding.cpp: 1) TextBox cannot hook into Key press events
3506           in unmanaged code otherwise they never propagate to managed
3507           and the user cannot intercept them. Instead of hooking to
3508           the event in native code, just call native
3509           TextBox::OnKeyDown in the managed override.
3510         2) Key press events are actually handled in two different
3511           places. 'Navigation' keypresses like Left/Right/PgUp are
3512           handled when the textbox OnKeyDown virtual method is
3513           invoked. 'Character' keypresses like 'a', 'b', 'c' are
3514           handled after the KeyDown event is emitted
3515         3) If a key press does not affect the textbox state (i.e.
3516           pressing 'left' when the caret is already at the very left),
3517           then the keypress is not handled.
3518         4) The KeyDown event is emitted even if OnKeyDown is overriden
3519           and the base method is not invoked.
3520         5) The tab key should be interpreted as 'Focus next control'
3521           only after the KeyDown event handlers have run and the key
3522           press is not handled.
3524 2009-07-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3526         * pipeline.cpp: NullDecoder: add wmav3 to the list of codecs we
3527         know we can't decode. This means that if the user does not have
3528         MS codecs (or any other codecs) installed, he'll get the download
3529         codecs dialog for wmav3 media too.
3531 2009-07-28  Sebastien Pouliot  <sebastien@ximian.com>
3533         * mediaelement.cpp: Add a check if the codecs have already been 
3534         downloaded/installed without refreshing the browser. This will
3535         stop additional dialogs showing up and fix a crash (x86_64) if
3536         the codecs are downloaded/installed a second time in the same 
3537         session.
3539 2009-07-27  Larry Ewing  <lewing@novell.com>
3541         * src/border.cpp:
3542         * src/frameworkelement.cpp:
3543         * src/media.cpp:
3544         * src/shape.cpp:
3545         * src/textblock.cpp:
3546         * src/usercontrol.cpp: Move the alignment logic out of the
3547         controls and into the Arrange call now.
3549         Fixes DRT #335 improves several others.
3550         
3551 2009-07-28  Jackson Harper  <jackson@ximian.com>
3553         * xaml.cpp: Handle UNMANAGEDMATRIX, it's just a matrix with
3554         another name
3555         - Don't create a Matrix for TRANSFORM properties if "Identity" was
3556         used as the string.  (kinda seems like an SL bug to me).
3558 2009-07-28  Jeffrey Stedfast  <fejj@novell.com>
3560         * multiscaleimage.cpp: Fixed a bunch of compiler warnings.
3562         * window-gtk.cpp (button_press): Revert change to drop
3563         2BUTTON_PRESS and 3BUTTON_PRESS events. TextBox needs these until
3564         we find a better way (also, 234 is still broken even with this
3565         change, which breaks 337 and possibly makes other
3566         TextBox/PasswordBox drts unfixable).
3568 2009-07-27  Larry Ewing  <lewing@novell.com>
3570         * glyphs.cpp, glyphs.h: Start implmenting glyph layout.  Fixes DRT #442.
3572 2009-07-27  Larry Ewing  <lewing@novell.com>
3574         * frameworkelement.cpp: Always round down when doing layout
3575         rounding.  
3576         
3577         * uielement.cpp (OnPropertyChanged): Invalidate layout on
3578         rounding changes.
3580         Fixes ... a lot.
3581         
3582 2009-07-27  Chris Toshok  <toshok@ximian.com>
3584         * dependencyobject.cpp (EventObject::DoEmit): we emit the XAML
3585         handler *after* all registered handlers.  part of the fix for drt
3586         234.
3588         * window-gtk.cpp (MoonWindowGtk::button_press): ignore
3589         double-click and triple click gdk events here.  part of the fix
3590         for drt 234.
3592 2009-07-27  Jackson Harper  <jackson@ximian.com>
3594         * xaml.cpp|h: Hydrate needs to accept Value* instead of a DOB.  It
3595         is legal to hydrate a top level managed non DOB class.
3596         * cbinding.cpp|h: regen
3598 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3600         * mp3.cpp: When seeking and we don't have enough data to seek to
3601         the desired pts, try again a bit later. Fixes MS DRT #59.
3603 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3605         * src.mdp: Use Makefile integration.
3607 2009-07-27  Alan McGovern  <amcgovern@novell.com>
3609         * uielement.cpp: Default styles are applied even if the user
3610           applies a style. Fixes some visual glitches in the controls
3611           toolkit site.
3613 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3615         * pipeline.cpp|h: Use Application::GetResource instead of creating
3616         downloaders to get data.
3618 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3620         * pipeline.cpp: ReportErrorOccurred: don't propagate more than one
3621         error.
3623 2009-07-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3625         * application.cpp: GetResource: set the notify_size callback
3626         on the downloader too. Media must known the size whenever possible.
3628 2009-07-27  Larry Ewing  <lewing@novell.com>
3630         * uielement.cpp (GetTransformToUIElementWithError): signal and
3631         error in the to_element doesn't have a Surface case.
3633 2009-07-26  Larry Ewing  <lewing@novell.com>
3635         * rect.h: make PointInside inclusive on the top/left.
3637 2009-07-24  Larry Ewing  <lewing@novell.com>
3639         * textblock.cpp:  Rework the bounds computation to be the max of
3640         the actual and the framework element settings.  Fixes DRT #245.
3642 2009-07-24  Larry Ewing  <lewing@novell.com>
3644         * border.cpp: Apply the default constraints more carefully.
3646         * src/frameworkelement.cpp, src/frameworkelement.h: add
3647         ApplySizeContraints method, use it.
3649         * src/canvas.cpp:
3650         * src/shape.cpp:
3651         * src/textblock.cpp:
3652         * src/usercontrol.cpp: use ApplySizeContraints method.
3654 2009-07-24  Larry Ewing  <lewing@novell.com>
3656         Rename some of the layout information based on some
3657         of the tests.
3659 2009-07-24  Jeffrey Stedfast  <fejj@novell.com>
3661         * textbox.cpp (TextBoxBase::OnPropertyChanged): When our
3662         width/height properties change, pass those values along to our
3663         TextBoxView as well.
3665 2009-07-24  Jackson Harper  <jackson@ximian.com>
3667         * xaml.cpp: Instead of cloning the element set it's namescope
3668         explicitly so it doesn't get registered in another namescope when
3669         it is used as a property of an element in another namescope.
3671 2009-07-23  Jeffrey Stedfast  <fejj@novell.com>
3673         * downloader.cpp (same_domain): Fixed to be safe if/when a uri
3674         host is NULL.
3676 2009-07-23  Alan McGovern  <amcgovern@novell.com>
3678         * animation.cpp: If the initial value is null, create a Value
3679         with the correct type with IsNull set to true.
3681 2009-07-23  Jackson Harper  <jackson@ximian.com>
3683         * xaml.cpp: If we are getting a named item from the app resources
3684         we should clone it since it comes from a different namescope. This
3685         allows you to have named items in app.resources be referenced in
3686         control code as a static resource even if it has the same name as
3687         an object in the control code.
3689 2009-07-23  Jeffrey Stedfast  <fejj@novell.com>
3691         * fonts.cpp (LoadPortableUserInterface): Even if we are a
3692         Silverlight 2.0 app, we still need to load Lucida Sans for the
3693         font face extents (Lucida extents seem to be very close to what
3694         Microsoft Silverlight is using).
3696 2009-07-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3698         * runtime.cpp: HandleUIKeyRelease: add a null check before
3699         accessing toplevel. Apparently toplevel can be null when the
3700         site fails to load completely (mstv.cz / bug #506306).
3702 2009-07-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3704         * media.h: MarkerReachedEventArgs: make Markers accessible to
3705         managed code.
3707         * cbinding.h:
3708         * cbinding.cpp: Regenerated.
3710 2009-07-22  Chris Toshok  <toshok@ximian.com>
3712         * animation.h|cpp: add some more accessors for AnimationStorages
3713         so we can clone them.
3715         * dependencyproperty.h|cpp: remove all the AnimationStorage stuff
3716         from here, and put it in DependencyObject where (imo) it belonged
3717         all along.
3719         * dependencyobject.h|cpp: move the AnimationStorage stuff here,
3720         and also add support for cloning the storage while we're cloning
3721         the object.  This means that new animations started against
3722         existing objects (with animations) will inherit the right reset
3723         value.  This fixes the button animation regression.
3725 2009-07-22  Jeffrey Stedfast  <fejj@novell.com>
3727         * fonts.cpp (LoadPortableUserInterface): If the application is a
3728         Silverlight 2.0 app, default to Verdana instead of Lucida Sans
3729         Unicode.
3731         * textbox.cpp (TextBoxBase::OnKeyDown): The clipboard Cut action
3732         is a no-op for ReadOnly TextBox controls.
3734 2009-07-22  Sebastien Pouliot  <sebastien@ximian.com>
3736         * runtime.cpp: Call GetMaximumRefreshRate before unreferencing
3737         the current timemanager.
3739 2009-07-21  Jeffrey Stedfast  <fejj@novell.com>
3741         * textbox.cpp (TextBoxBase::CursorPrevWord): Fixed the logic a
3742         bit.
3743         (TextBoxBase::OnKeyDown): Implemented alternate keybindings for
3744         Cut/Copy/Paste.
3745         (TextBoxBase::OnKeyDown): If there is no selection and the user
3746         invokes the Cut or Copy commands, do not overwrite the clipboard
3747         buffer with an empty string.
3749 2009-07-21  Jackson Harper  <jackson@ximian.com>
3751         * xaml.cpp: Raise errors from managed SetProperty.
3753 2009-07-21  Jackson Harper  <jackson@ximian.com>
3755         * xaml.cpp: Don't raise errors if we are a managed element, let
3756         the managed SetProperty handle that stuff.
3758 2009-07-21  Alan McGovern  <amcgovern@novell.com>
3760         * geometry.h:
3761         * dependencyproperty.g.cpp: The issue with auto creating
3762           PathGeometry.Figures appears to be fixed so add
3763           AutoCreateValue to FiguresProperty and see how the bots
3764           react...
3766 2009-07-20  Chris Toshok  <toshok@ximian.com>
3768         * application.h|cpp: add a ResourceBase parameter to all the
3769         GetResource calls and to the GetResourceCallback delegate type.
3771         * dependencyobject.h (DependencyObject::SetResourceBase,
3772         DependencyObject::GetResourceBase): new methods.
3774         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
3775         "inherit" resource base from our parent (this might be very, very
3776         wrong...)
3777         (DependencyObject::Initialize): init resource_base to null.
3778         (DependencyObject::~DependencyObject): free resource_base.
3780         * bitmapimage.cpp (BitmapImage::UriSourceChanged): locate the
3781         resource using our resource base.
3783         * template.cpp (FrameworkTemplate::GetVisualTree): use the same
3784         resource base when expanding the template.
3786         * textblock.cpp (Inline::AddFontResource): locate the font using
3787         our resource base.
3788         (TextBlock::AddFontResource): same.
3790         * textbox.cpp (TextBoxBase::AddFontResource): same.
3791         using our resource base.
3793         * glyphs.cpp (Glyphs::SetFontResource): same.
3795         * xaml.cpp (XamlParserInfo::AddCreatedElement): factor out all
3796         those SetSurface calls, and put it here.  Also, set the resource
3797         base at the same time.
3798         (XamlLoader::Initialize): store off the resource_base.
3799         (XamlLoader::~XamlLoader): and free it.
3800         (xaml_loader_new): take a resourceBase, and pass it along.
3801         (XamlLoader::HydrateFromString): set the ResourceBase on the
3802         toplevel object.
3803         (create_element_info_from_imported_managed_type): remove the
3804         SetSurface call, just call XamlParserInfo::AddCreatedElement.
3805         (XamlElementInstanceNative::CreateItem): same.
3806         (XamlElementInfoManaged::CreateElementInstance): same.
3807         (XamlElementInfoManaged::CreateWrappedElementInstance): same.
3809         * xaml.h (class XamlLoader): add a common Initialize method, and a
3810         ctor overload that takes a "resource base", which is the uri which
3811         we're loading from.  Also add a GetResourceBase() accessor.
3813         * cbinding.h: regen
3815 2009-07-20  Larry Ewing  <lewing@novell.com>
3817         * uielement.cpp (ComputeTransform): add a hack for placing popup
3818         children for now.
3820         * popup.cpp: call updatetransform on our child whenever the offset
3821         values change.  Fixes DRTs #325 #503 
3822         
3823 2009-07-18  Jackson Harper  <jackson@ximian.com>
3825         * xaml.h|cpp: New flag on the loader for determining whether or
3826         not to auto import the default SL namespace.
3827         - Throw the proper error if the default namespace isn't available.
3828         * template.cpp: Templates get the default namespace auto
3829         imported.
3831 2009-07-17  Larry Ewing  <lewing@novell.com>
3833         * runtime.cpp (Attach): copy the current framerate to the new
3834         timemanager.
3836 2009-07-17  Jeffrey Stedfast  <fejj@novell.com>
3838         * textbox.cpp (TextBoxBase::Commit): Respect MaxLength and
3839         multiline support.
3840         (TextBoxBase::Paste): Consider the SelectionLength in our
3841         MaxLength overflow calculation.
3842         (TextBuffer::ctor): Instead of taking ownership of a string
3843         buffer, just copy it instead. This keeps memory management more
3844         obvious higher up.
3845         (TextBoxUndoActionInsert::ctor): No longer takes ownership of the
3846         'inserted' string.
3847         (TextBoxUndoActionReplace::ctor): Same, so copy it.
3848         (*Box::OnPropertyChanged): Fixed to g_free(text) after creating
3849         the undo action. I think some of these situations leaked before.
3851 2009-07-17  Stephane Delcroix  <sdelcroix@novell.com>
3853         * bitmapimage.h: tag UriSourceProperty with AlwaysChange. fix #2014
3855 2009-07-17  Stephane Delcroix  <sdelcroix@novell.com>
3857         * multiscaleimage.cpp: more protections against crash with 31 layers
3859 2009-07-17  Stephane Delcroix  <sdelcroix@novell.com>
3860         
3861         * multiscaleimage.cpp: allow up to 31 layers.
3863 2009-07-17  Stephane Delcroix  <sdelcroix@novell.com>
3865         * multiscaleimage.cpp: emit OpenImageSucceed for non DZ tile sources
3867 2009-07-17  Alan McGovern  <amcgovern@novell.com>
3869         * runtime.cpp: Correctly set 'emittingMouseEvent' to
3870           true/false when we receive a mouse event. Fixes some mouse
3871           capture issues in drt 535
3873 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3875         * playlist.cpp|h: Make the *Async methods really async, and add corresponding
3876         non-async methods.
3878         * mediaplayer.cpp: Don't allow Play while we're seeking.
3880         * mediaelement.cpp: When calling any of the async methods on the playlist,
3881         set the expected state immediately, since CurrentState is not async. Also
3882         allow Play/Pause/Stop if we're already in the desired state, since there might
3883         be another state changed pending.
3885 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3887         * mediaplayer.cpp|h: Emit BufferUnderflowEvent when the buffer underflows.
3889 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3891         * pipeline.cpp|h: Notify the decoder when a seek has completed so
3892         that it can clean its state properly. FillBuffers: the final buffer size
3893         is equal to the smallest buffer size of all the streams, not the buffer
3894         size of the last stream.
3896 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3898         * mediaplayer.cpp: Video/AudioFinished: don't do anything if the video/audio
3899         has already finished.
3901 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3903         * playlist.cpp|h: Fix IsSingleFile implementation.
3905         * mediaelement.cpp|h: Don't emit MediaOpened after reloading a media after
3906         a Stop for non-playlist media.
3908 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3910         * mediaplayer.cpp|h: Add a StopAudio method which stops the audio, and use
3911         it whenever we stop the audio. AdvanceFrame: For media with a specified
3912         duration stop the audio when we've reached the desired duration.
3914 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3916         * mediaelement.cpp: OpenCompletedHander: Before emitting
3917         DownloadProgressChangedEvent get the highest DownloadProgress value
3918         from either our own dependency property or the media. For mms streams
3919         download progress needs to be 1.0 when emitting MediaOpenedEvent,
3920         the mms code sets media's DownloadProgress to 1.0 after parsing the
3921         asf header correctly, but since the media emits the DownloadProgressChanged
3922         event async, the dependency property in MediaElement hasn't been updated
3923         yet in OpenCompletedHandler.
3925 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3927         * pipeline.cpp: Allow buffering progress to go down, not only up.
3928         Also fix progress events to only emit if delta > 0.5% or if equal
3929         to lower/upper limits.
3931 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3933         * pipeline.cpp|h: When we get a decode frame request from another
3934         thread, store the request on the demuxer in a list, instead of on the
3935         media thread's stack. This ensures that decode frame requests are
3936         decoded in the same order they're requested.
3938         * type.h:
3939         * value.h:
3940         * cbinding.h:
3941         * type-generated.cpp: Regenerated.
3943 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3945         * playlist.cpp|h: Added and Emit EntryChangedEvent.
3947         * type-generated.cpp: Regenerated.
3949 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3951         * playlist.cpp: PlaylistList::Dispose: set current_node to null, since we'll delete
3952         it here.
3954 2009-07-17 Rolf Bjarne Kvinge <RKvinge@novell.com>
3956         * mediaelement.cpp: Only emit BufferingProgressChanged if it has gone up. The real
3957         buffer level will fluctuate as we play.
3959 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3961         * mediaelement.cpp|h: When we pause, store the current position, which we must return
3962         while paused. It may differ from the actual position when we pause, since the actual
3963         pause is done async.
3965 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3967         * mediaplayer.cpp|h:
3968         * mediaelement.cpp|h: Use a property value provider for
3969         Render/DroppedFramesPerSecond.
3971 2009-07-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3973         * mediaelement.cpp|h: Make ReportErrorOccurred thread-safe. Managed code might
3974         call us from a worker thread.
3976 2009-07-16  Jackson Harper  <jackson@ximian.com>
3978         * xaml.cpp: When creating user controls make sure that we are
3979         hydrating if an x:Class type name is used.
3981 2009-07-16  Jeffrey Stedfast  <fejj@novell.com>
3983         * textbox.cpp (TextBoxUndoActionInsert::.ctor): Now takes an
3984         'atomic' argument. If atomic is true, then the buffer is not
3985         growable. This is the behavior we want for TextBoxBase::Paste(),
3986         but not TextBoxBase::Commit() (which needs to allow growable
3987         insert actions so that Undo removes the string of text the user
3988         just typed as opposed to just the most recent character).
3989         (TextBoxBase::Paste): Pass 'true' as the 'atomic' argument to
3990         TextBoxUndoActionInsert::.ctor().
3992 2009-07-16  Alan McGovern  <amcgovern@novell.com>
3994         * control.h:
3995         * uielement.h:
3996         * control.cpp:
3997         * uielement.cpp: 1) If the Control is not attached to a
3998           subtree which has been loaded, don't propagate IsEnabled to
3999           its children.
4000         2) Whenever a Control is loaded we traverse it's visual
4001           parents until we find another control and propagate the
4002           IsEnabled state.
4004 2009-07-16  Stephane Delcroix  <sdelcroix@novell.com>
4006         * multiscaleimage.h: mark the ViewportOrigin and ViewportWidth
4007         properties as AlwaysChange. fix drt #291.
4009 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4011         * dependencyobject.cpp: Retrieve all instance variables we need
4012         into local variables before decreasing the refcount. If the
4013         refcount is > 0 after decreasing it, we can't access instance
4014         variables anymore, since another thread might have unreffed which
4015         would cause the object to be deleted already.
4017 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4019         * dependencyobject.cpp: #if DEBUG -> #if SANITY and fix a typo in
4020         a comment.
4022 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4024         * dependencyobject.cpp: Add sanity check for refcount < 0.
4026 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4028         * dependencyobject.cpp: Move sanity verification into #if SANITY.
4030 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4032         * dependencyobject.h: Is, GetType, GetTypeName: use the Type
4033         overloads which takes a Deployment and provide our deployment
4034         instance.
4036 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4038         * type.cpp|h.in: Add Find, IsAssignable and IsSubclassOf methods
4039         which takes a Deployment argument for when we already have the
4040         Deployment handy.  This way we can avoid hitting
4041         Deployment::GetCurrent on some frequently used methods.
4043         * type.h: Regenerated.
4045 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4047         * runtime.h: Add stack trace to warning.
4049 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4051         * audio.cpp: Underflowed: if we haven't ended and don't have any
4052         more frames, we need to set the Waiting bit so that we start
4053         playing again when we get more frames.
4055 2009-07-16  Stephane Delcroix  <sdelcroix@novell.com>
4057         * multiscaleimage.cpp: reset the bitmapimage uri for the next time,
4058         avoid issues while reusing dlders for the same images, like in drt2013
4060 2009-07-16  Stephane Delcroix  <sdelcroix@novell.com>
4062         * tilesource.h|cpp, multiscleimage.h|cpp: invalidate the full msi cache
4063         on tilesource InvalidateTileLayer ().
4065 2009-07-16  Jackson Harper  <jackson@ximian.com>
4067         * xaml.cpp: Remove some dead code.
4069 2009-07-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4071         * deployment.h: DeploymentStack: Added to ease push/pop current
4072         deployment when calling into a browser.
4074 2009-07-15  Chris Toshok  <toshok@ximian.com>
4076         * clock.h|cpp (Clock::CalculateFillTime): split this out from
4077         Clock::Begin since we can seek on a clock that hasn't actually hit
4078         Clock::Begin yet.
4079         (Clock::Begin): call CalculateFillTime.
4080         (Clock::UpdateFromParentTime): change our calculations slightly
4081         for what localTime is in the face of a seek, and update
4082         progress/localtime even when stopped.  Also, call
4083         CalculateFillTime if we're seeking on a clock that hasn't started,
4084         to make sure we get the proper progress.
4085         (Clock::Seek): don't apply the SpeedRatio here, we do it in
4086         UpdateFromParentTime.
4088         * animation.h|cpp (AnimationStorage::GetStopValue): remove, it's
4089         never used.
4090         (AnimationStorage::UpdatePropertyValue): pass the stopValue or
4091         baseValue as the defaultDestinationValue to
4092         AnimationClock::GetCurrentValue.
4093         (AnimationStorage::ResetPropertyValue): use ?: instead of if+else.
4094         (DoubleAnimation::GetCurrentValue): if there's a correctly typed
4095         defaultDestinationValue, use that before the base case of end =
4096         start.
4097         (ColorAnimation::GetCurrentValue): same.
4098         (PointAnimation::GetCurrentValue): same.
4100 2009-07-15  Jackson Harper  <jackson@ximian.com>
4102         * xaml.cpp|h: Consolidate some of the data passed to
4103         every callback and not used much into a struct.
4105 2009-07-15  Jeffrey Stedfast  <fejj@novell.com>
4107         * fontmanager.cpp (IndexFontSubdirectory): font_stream_new() can
4108         return NULL, so properly handle this error condition.
4109         (IndexFontFile): Same.
4110         (FontManager::OpenFontFace): Here too.
4111         (OpenSystemFont): Don't destroy the FcPattern until after opening
4112         the font (otherwise the filename will be free'd memory).
4114         * textbox.cpp (TextBoxView::Paint): Use the CaretBrush property to
4115         get the brush used for rendering the blinking caret. This is a 3.0
4116         feature.
4118 2009-07-15  Alan McGovern  <amcgovern@novell.com>
4120         * control.h:
4121         * control.cpp: Remove the Control::SetVisualParent override
4122           which ensures Control::IsEnabled is propagated correctly as
4123           this needs to be performed in UIElement::SetVisualParent.
4124           Set the subtreeobject before calling
4125           FrameworkElement::ElementAdded otherwise Control::IsEnabled
4126           cannot be propagated.
4128         * uielement.h:
4129         * uielement.cpp: Whenever the visual parent is changed on a
4130           UIElement we need to propagate Control::IsEnabled changes
4131           down the tree. Allows drt 557 to get a lot further.
4133 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4135         * mediaelement.cpp: SetProperties: set last seeked-to pts to 0.
4137 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4139         * pipeline.cpp: When seeking, reset buffering progress to 0.
4141 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4143         * mediaelement.cpp: SetDemuxerSource: no downloading goes on here
4144         (that we know of), so initialize DownloadProgress to 1.0.
4146 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4148         * mediaelement.cpp: Don't emit CurrentStateChanged after calling
4149         SetState, since SetState will also emit the event.
4151 2009-07-15  Alan McGovern  <amcgovern@novell.com>
4153         * tabnavigationwalker.cpp: If a child node is disabled, there
4154           is no point in walking its children or attempting to tab to
4155           it.
4157 2009-07-15  Jackson Harper  <jackson@ximian.com>
4159         * xaml.cpp: We don't want to auto import the SL namespaces when
4160         loading files
4161         
4162 2009-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4164         * pipeline.cpp|h: AudioStream: add a keyframe flag to the ctor.
4166         * cbinding.cpp|h: Regenerated.
4168 2009-07-15  Stephane Delcroix  <sdelcroix@novell.com>
4170         * bitmapimage.h|cpp: drop the downloader references, rely on
4171         Application::GetResource () for getting from resource AND downloading. The
4172         old downloader mechanism for v1 js callbacks.
4174 2009-07-14  Stephane Delcroix  <sdelcroix@novell.com>
4176         * application.h|cpp: Application.GetResource () now try to get the resource
4177         from the managed callback, then fallback to downloading.
4179 2009-07-14  Stephane Delcroix  <sdelcroix@novell.com>
4181         * utils.h|cpp: Cancellable class, passed as method argument, allows
4182         to abort an async action.
4184 2009-07-15  Stephane Delcroix  <sdelcroix@novell.com>
4186         * tilesource.h|cpp: add an invalidate_tile_layer_func so MSI can
4187         hook itself in and invalidate the cache
4189 2009-07-15  Stephane Delcroix  <sdelcroix@novell.com>
4191         * tilesource.h|cpp: stub InvalidateTileLayer
4193 2009-07-15  Alan McGovern  <amcgovern@novell.com>
4195         * control.cpp: Ensure that the control loses focus when it is
4196           disabled even if there are no other focusable controls. Also
4197           ensure the surface is not null before using it, fixes a
4198           regression in 432.
4200 2009-07-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4202         * error.h: ErrorEventArg: Add accessors that can be pinvoked.
4204         * cbinding.cpp|h: Regenerated.
4206 2009-07-15  Alan McGovern  <amcgovern@novell.com>
4208         * control.cpp: When the focused control is disabled, tab to
4209           the next suitable control.
4211 2009-07-15  Alan McGovern  <amcgovern@novell.com>
4213         * runtime.h:
4214         * runtime.cpp: Implement the default autofocusing behaviour
4215           which silverlight exhibits. Apparently if the root control
4216           is focused, silverlight will keep attempting to focus a
4217           child of that control until it succeeds. Once a child
4218           control is focused, the focus changed events are emitted
4219           immediately, ignoring the usual focusing rules. Fixes DRT
4220           323.
4222 2009-07-15  Alan McGovern  <amcgovern@novell.com>
4224         * uielement.cpp: When clearing the Loaded flag on a UIElement,
4225           we should clear the flag on all visual children too.
4227 2009-07-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4229         * audio.cpp: Ref when we're supposed to ref. Fixes a crash.
4231 2009-07-14  Larry Ewing  <lewing@novell.com>
4233         * panel.cpp (OnPropertyChanged): make sure we invalidate the panel
4234         bounds when the bg changes.  Fixes 641
4236 2009-07-14  Larry Ewing  <lewing@novell.com>
4238         * border.cpp (OnSubPropertyChanged): elements must listen to
4239         subproperty changes for brushes.  Fixes 2020
4241 2009-07-14  Alan McGovern  <amcgovern@novell.com>
4243         * tabnavigationwalker.cpp: If TabNavagationWalker::Focus () is
4244           called on a Control with the 'Cycle' navigation mode and
4245           none of the children of that node can be tabbed to, then
4246           focus remains on that control.
4248 2009-07-13  Jeffrey Stedfast  <fejj@novell.com>
4250         * fonts.cpp (TextFont::Load): Don't g_strfreev() the families
4251         string array until after we've finished using the hash
4252         table. Prevents FMRs.
4254 2009-07-13  Jackson Harper  <jackson@ximian.com>
4256         * xaml.cpp: Don't allow setting x:Name and Name on the same
4257         element
4258         - Raise an error if we try to set a property to an incompatible
4259         type.
4261 2009-07-13  Alan McGovern  <amcgovern@novell.com>
4263         * runtime.cpp:
4264         * uielement.cpp: If the focused element is removed from the
4265           visual tree, it should lose focus.
4267 2009-07-13  Jackson Harper  <jackson@ximian.com>
4269         * xaml.cpp: Oops, trying to get the element name from the wrong
4270         void*
4272 2009-07-13  Jackson Harper  <jackson@ximian.com>
4274         * xaml.cpp: Handle MoonErrors for AddChild.
4276 2009-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4278         * mp3.cpp:
4279         * pipeline.h:
4280         * playlist.cpp:
4281         * pipeline.cpp:
4282         * pipeline-asf.cpp:
4283         * mms-downloader.cpp: IMediaObject: make the media field
4284           private, and add thread-safe property accessors (using a
4285           mutex and always returning a reffed object). Update all code
4286           which accessed the old accessor to use the new accessor and
4287           unref the media when done.
4289 2009-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4291         * pipeline.cpp|h: Deleted MemoryNestedSource, not used anymore.
4293         * type.h:
4294         * value.h:
4295         * type-generated.cpp: Regenerated.
4297 2009-07-13  Alan McGovern  <amcgovern@novell.com>
4299         * control.cpp: A control does not have to be loaded to be
4300           focusable, the visual tree it's attached to has to be
4301           loaded.
4303 2009-07-13  Alan McGovern  <amcgovern@novell.com>
4305         * cbinding.h:
4306         * cbinding.cpp:
4307         * tabnavigationwalker.h: TabNavigation should activate if the
4308           control does not handle the Tab key
4310 2009-07-13  Alan McGovern  <amcgovern@novell.com>
4312         * src.mdp:
4313         * cbinding.h:
4314         * Makefile.am:
4315         * collection.h:
4316         * collection.cpp:
4317         * tabnavigationwalker.h:
4318         * tabnavigationwalker.cpp: Commit the initial implementation
4319           of the TabNavigationWalker. Supports the three tabbing modes
4320           and also forward/backward tabbing. Passes drt 323 except for
4321           a default focusing issue.
4323 2009-07-13  Alan McGovern  <amcgovern@novell.com>
4325         * keyboard.cpp: Handle shift + tab (GDK_ISO_Left_Tab) as a
4326           KeyTab press.
4328 2009-07-13  Jérémie Laval  <jeremie.laval@gmail.com>
4329         * src/xaml.cpp
4330         * src/dependencyproperty.cpp: Added const modifier to local variables.
4331         Fix the build with recent gcc.
4333 2009-07-10  Chris Toshok  <toshok@ximian.com>
4335         * value.h.in|cpp (Value::Clone): new method, clone the DO if the
4336         value contains one, and otherwise just copy the contents.
4338         * namescope.cpp (NameScope::CloneCore): clone the mapping (hm,
4339         this is probably wrong, as the mapping needs to reference cloned
4340         objects, not the same objects that existed in the original
4341         mapping.
4343         * collection.h|cpp (Collection::CloneCore): clone the collection
4344         contents.
4346         * dependencyproperty.h|cpp (resolve_property_path): add a
4347         promoted_values hashtable argument.  if the value has already been
4348         promoted, don't do it again. promote the first value we can while
4349         resolving the property path.  Don't promote UIElement subclasses
4350         though.
4351         
4352         * dependencyobject.h|cpp: add api for cloning (deep copying) for
4353         DependencyObjects.  DependencyObject::Clone is the public
4354         interface, with subclasses overriding ::CloneCore if they need to.
4356         * color.cpp (color_to_string): multiply by 255, not 256.
4358         * animation.h|cpp (Storyboard::HookupAnimationsRecurse): this
4359         takes a hashtable now so we don't promote values more than
4360         once (doing so causes previous animations to target objects that
4361         are no longer attached anywhere).
4363         * cbinding.h, cbinding.cpp, value.h, type-generated.cpp: regen.
4365 2009-07-10  Larry Ewing  <lewing@novell.com>
4367         * shape.cpp (MeasureOverride): start working towards fixing
4368         LayoutShapes with some tweaking here.
4369         (Clip): apply the framework clip to elements in the flow too.
4371 2009-07-10  Jeffrey Stedfast  <fejj@novell.com>
4373         * textbox.cpp (TextBoxBase::CursorNextWord): Emulate Windows
4374         instead of Gtk+.
4375         (TextBoxBase::CursorPrevWord): Same.
4376         (TextBoxBase::KeyPressRight): If there is currently a selection
4377         and the user presses ArrowRight by itself, set the anchor and
4378         cursor at the end of the selection.
4379         (TextBoxBase::KeyPressLeft): Same idea, but set them at the start
4380         of the selection.
4382 2009-07-10  Jeffrey Stedfast  <fejj@novell.com>
4384         * textbox.cpp: Always set SelectionStart before
4385         SelectionLength. Fixes a bug when selecting backwards from the end
4386         of the buffer.
4388 2009-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4390         * mediaelement.cpp|h: Store the last seeked-to position so that we never
4391         return a value before that as the current Position. MS DRT #486 uses
4392         a MediaStreamSource which returns frames before the seeked to position
4393         after seeking, and the test checks that MediaElement's Position property
4394         never returns a value before the seeked to position.
4396 2009-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4398         * audio.cpp: When we stop, we need to discard any audio data we might
4399         have stored.
4401 2009-07-10  Sebastien Pouliot  <sebastien at ximian.com>
4403         * runtime.cpp|h, type-generated.cpp: Rename 
4404         SourceDownloadCompletedEvent to SourceDownloadCompleteEvent
4406 2009-07-09  Jeffrey Stedfast  <fejj@novell.com>
4408         Fixes DRT #246
4410         * uri.cpp: Don't use a GData for params, instead use a custom
4411         linked-list. This makes it easier to compare param lists.
4412         (operator==): Compare params.
4414         * textbox.cpp (TextBoxBase::OnFocusOut): When we focus out, clear
4415         the selection.
4417 2009-07-09  Jackson Harper  <jackson@ximian.com>
4419         * dependencyobject.cpp|h: Add a little more logic for setting
4420         things to NULL and consolidate in it's own function (STRING can
4421         now be set to NULL).
4423 2009-07-09  Sebastien Pouliot  <sebastien at ximian.com>
4425         * downloader.cpp|h: Don't check redirection AFTER downloading the
4426         data. Expose CheckRedirectionPolicy so the plugin can check for
4427         the redirection policy when creating a new stream.
4428         * uri.cpp|h: Add IsAbsolute method and make the return value of
4429         IsScheme const.
4431 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4433         * playlist.cpp: StopAsync: (PlaylistEntry): don't stop the MediaPlayer,
4434         the root takes care of that. (Playlist): loop over all children and
4435         call StopAsync on them, this way all nested playlists are reset properly
4436         (PlaylistRoot): when done stopping, reopen us.
4438 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4440         * playlist.cpp: Skip UTF8 boms when checking if a file is a playlist.
4442 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4444         * mediaelement.cpp: If we don't AutoPlay, we end up Paused, not Stopped.
4446 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4448         * mediaelement.cpp: Don't go directly into a Buffering state, when
4449         MediaOpened is emitted we must be either in Paused or Playing state.
4451 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4453         * mediaelement.cpp: Seek: if CanSeek is false, don't seek.
4455 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4457         * mediaelement.cpp|h: Emit CurrentState events asynchronously.
4459 2009-07-08  Larry Ewing  <lewing@novell.com>
4461         * frameworkelement.cpp (Arrange): apply min/max values to the
4462         offer.
4464 2009-07-08  Jeffrey Stedfast  <fejj@novell.com>
4466         * fontmanager.cpp (FontManager::OpenSystemFont): Make 2 attempts
4467         at opening the requested system font. First, try using the font
4468         name exactly as the user gave it to us. If that fails, fallback to
4469         canonicalizing it and the style values.
4470         (style_diff): Modify the algorithm used to compare the style
4471         difference between 2 fonts.
4473 2009-07-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4475         * validators.cpp|h:
4476         * mediaelement.h: Add validators for Balance and Volume.
4477         This fixes MS DRT #960.
4479         * value.cpp|in: Add support for changing a value.
4481         * value.h:
4482         * dependencyproperty.g.cpp: Regenerated.
4484 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4486         * playlist.h|cpp: Add support for PARAMS elements in ASX files. Fix
4487         some casing changes with media attributes. PlayNext: fix logic, after
4488         finishing a nested playlist we must play the next entry in our playlist,
4489         not finish right away. If the pipeline raises a MediaError event due to
4490         missing a codec (which is most likely due to an unsupported media file),
4491         don't propagate the error, just play the next entry. Fix a lot of error
4492         code/message changes from 1.0 to 2.0. MS DRT #78 now passes, as well
4493         as 99.6% of our playlist tests.
4495 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4497         * pipeline.h:
4498         * playlist.h|cpp: Unify playlist detection into one place and add
4499         support for skipping initial whitespace in the file.
4501 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4503         * playlist.cpp|h: String setters: be consistent: take a const string
4504         and dup inside the setter if required, instead of always when calling
4505         the setter, which may leak.
4507 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4509         * playlist.cpp: OnASXStartElement: null initialize to avoid reading 
4510         random memory.
4512 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4514         * playlist.cpp: Cleanup: cleanup properly since we may continue to live
4515         after this method has been called.
4517 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4519         * playlist.cpp: PlaylistEntry: needs to ref/unref the source. 
4521 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4523         * pipeline.cpp:
4524         * playlist.cpp|h: Store any ErrorEventArgs in the PlaylistParser, and if
4525         the parsing fails, propagate the args up in the pipeline.
4527 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4529         * mediaelement.cpp: We need to populate media attributes before raising
4530         MediaOpened.
4532 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4534         * mediaelement.cpp: When emitting MediaOpened, ensure that DownloadProgress
4535         has changed at least a tiny bit.
4537 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4539         * mediaelement.cpp: MediaOpened event comes with an empty RoutedEventArgs.
4541 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4543         * mediaelement.cpp: Properly set CanPause and CanSeek, and always use 
4544         mediaplayer's duration as NaturalDuration.
4546 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4548         * mediaplayer.cpp: All starting points seem to be allowed now, so don't
4549         throw an error event for starting point > duration anymore. Also duration
4550         is always the entire length of the media, regardless of when we start and
4551         how long we're supposed to play.
4553 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4555         * error.cpp|h: Add custom information to ErrorEventArgs, to provide
4556         better Moonlight debugging and in some cases we need more information
4557         than what MS reports.
4559 2009-07-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4561         * media.cpp: MediaAttributes are case-insensitive.
4563 2009-07-07  Jeffrey Stedfast  <fejj@novell.com>
4565         * fontmanager.cpp (canon_font_family_and_style): New convenience
4566         function to canonicalize font family & style info, split out of
4567         IndexMatchFace().
4568         (IndexMatchFace): Use the new function.
4570 2009-07-07  Jackson Harper  <jackson@ximian.com>
4572         * style.h: Need an internal setter for IsSealed so we can do the
4573         parser seal/unseal hack.
4575 2009-07-07  Sebastien Pouliot  <sebastien@ximian.com>
4577         * downloader.cpp|h: Add a new FontPolicy since it differs from 
4578         XamlPolicy (which is otherwise *unused*) and fix policies wrt
4579         http://msdn.microsoft.com/en-us/library/cc189008(VS.95).aspx
4580         * glyphs.cpp, textblock.cpp, textbox.cpp: Use the new FontPolicy
4581         when downloading
4583 2009-07-07  Alan McGovern  <amcgovern@novell.com>
4585         * namescope.cpp: Once a namescope is locked, don't allow names
4586           to be registered or unregistered. Fixes the case where the
4587           name is changed on a template item.
4589 2009-07-07  Alan McGovern  <amcgovern@novell.com>
4591         * xaml.h:
4592         * xaml.cpp:
4593         * template.cpp: When expanding a template, mark all the
4594           children as TemplateItems so they will be able to look up
4595           the correct namescope.
4597         * control.h:
4598         * control.cpp:
4599         * dependencyproperty.g.cpp: Add an "IsTemplateItem" attached
4600           property.
4602         * dependencyobject.h:
4603         * dependencyobject.cpp: Add extra overloads to FindName and
4604           FindNameScope so that we can tell whether we are looking up
4605           a template name or regular name.
4607         * namescope.h:
4608         * namescope.cpp: Add the ability to lock a namescope so it
4609         can be recognised as a template namescope.
4611 2009-07-07  Jackson Harper  <jackson@ximian.com>
4613         * xaml.cpp: Lookup properties on the owner type so attached
4614         properties get looked up properly when setting them via text ie
4615         <Canvas.Left>5</Canvas.Left>
4617 2009-07-06  Jackson Harper  <jackson@ximian.com>
4619         * xaml.cpp: Ignored elements should buffer their contents
4620         - Add in Ignored attributes
4622 2009-07-06  Jackson Harper  <jackson@ximian.com>
4624         * xaml.cpp: Implement ignorable namespaces.
4626 2009-07-06  Larry Ewing  <lewing@novell.com>
4628         * multiscaleimage.cpp (ZoomAboutLogicalPoint): make this compile.
4630 2009-07-06  Stephane Delcroix  <sdelcroix@novell.com>
4632         * multiscaleimage.cpp, multiscaleimage.h: keep the zoom and pan targets
4633         so ZoomAbout *= the target's value for zoom, not the current one.
4635 2009-07-06  Jeffrey Stedfast  <fejj@novell.com>
4637         Fixes drt 249.
4639         * fonts.cpp (LoadPortableUserInterface): Return the index of the
4640         Lucida font face.
4641         (TextFont::Load): If PUI is our first family, keep track of which
4642         face the Lucida face is and use that as our master. Otherwise use
4643         the first face.
4644         (TextFont::UpdateFaceExtents): Use the 'master' face to get the
4645         extents from, rather than the first face.
4647 2009-07-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4649         * playlist.cpp: PlayNext: play even if previous entry didn't fail.
4650         Fixes our test #136.
4652 2009-07-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4654         * playlist.cpp|h: Remove wsx/smil parsing, it's a server side
4655         playlist format so we'll never get it, it'll be parsed on the
4656         media server.
4658 2009-07-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4660         * mediaelement.cpp: Fix warning.
4662 2009-07-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4664         * src.mdp: Updated.
4666 2009-07-03  Larry Ewing  <lewing@novell.com>
4668         * textblock.cpp (ArrangeOverride): try to get textblock height
4669         stretching closer.  See 295 and 2020 for examples.
4671 2009-07-03  Alan McGovern  <amcgovern@novell.com>
4673         * runtime.cpp: We don't need to change these actually.
4675 2009-07-03  Alan McGovern  <amcgovern@novell.com>
4677         * runtime.cpp: When inside the if statement, we know that
4678           toplevel and element are the same, so use 'element' instead
4679           of 'toplevel' in case the toplevel is removed during the
4680           loaded/resized event. Fixes memorabilia.
4682 2009-07-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4684         * mms-downloader.cpp: ProcessResponseHeaderCallback:
4685         set current deployment.
4687 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4689         * pipeline-asf.cpp|h:
4690         * mms-downloader.cpp|h: If downloading the mms url
4691         doesn't succeed, raise an error. Fixes MS DRT #222
4692         completely.
4694 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4696         * pipeline-asf.cpp:
4697         * mediaelement.cpp: When playing an mms stream, SL sets
4698         DownloadProgress to 1.0 after downloading the header.
4699         Makes MS DRT #222 reach a bit further.
4701 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4703         * pipeline.cpp: Fix printf.
4705 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4707         * mediaelement.cpp: Handle DownloadProgressChanged events
4708         properly.
4710 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4712         * downloader.cpp|h: Add another downloader API
4713         method, this time to get the DownloaderResponse.
4715         * cbinding.cpp|h: Regenerated.
4717 2009-07-02  Stephane Delcroix  <sdelcroix@novell.com>
4719         * multiscaleimage.h: instruct the generator to do more for us.
4721 2009-07-02  Chris Toshok  <toshok@ximian.com>
4723         * propertypath.h: fix operator== and add operator!=.
4725         * validators.h|cpp: add StoryboardTargetPropertyValidator.
4727         * dependencyproperty.g.cpp: regen.
4729         * animation.h (class Storyboard): use a special validator for
4730         TargetPropertyProperty such that it follows the semantics laid out
4731         in StoryboardTest.SetTargetPropertyTwice*.
4733 2009-07-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4735        * mediaelement.cpp: Protect against emitting BufferingProgressChanged
4736        when the actual value hasn't changed.
4738        * pipeline.cpp: FillBuffers: don't report any buffering progress
4739        if we don't have any media streams.
4741 2009-07-02  Jeffrey Stedfast  <fejj@novell.com>
4743         * fonts.cpp (LoadPortableUserInterface): Now takes a 'lang'
4744         argument which is used for loading the preferred default font (by
4745         language) first, before the other fallback fonts.
4746         (TextFont::Load): Pass in the 'lang' argument.
4747         (TextFontDescription): Added methods to get/set a Language
4748         property.
4750         * textblock.cpp (Inline::UpdateFontDescription): Set the language
4751         on the TextFontDescription.
4752         (TextBlock::OnPropertyChanged): If the
4753         FrameworkElement::LanguageProperty changes, reload the fonts and
4754         invalidate.
4756 2009-07-02  Jackson Harper  <jackson@ximian.com>
4758         * xaml.cpp: Fix error code so it gets propogated up when
4759         validating templates.
4761 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4763         * runtime.cpp: Fix printf.
4765 2009-07-02  Stephane Delcroix  <sdelcroix@novell.com>
4767         * multiscaleimage.h|cpp: handle the various motion finished separately
4768         and only emit th eMotionFinished event if all the 3 (zoom, pan, fade)
4769         animations are completed.
4771 2009-07-02  Stephane Delcroix  <sdelcroix@novell.com>
4773         * multiscaleimage.h|cpp: use 2 internals dp for animating pan & zoom.
4774         use a custom property provider so getting vp origin or width returns
4775         the current value, while setting them sets the animation's targets.
4777 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4779         * pipeline.cpp: FillBuffers: Only take into
4780         account media streams when trying to determine
4781         if all streams have reached its end. Fixes our test
4782         #150.
4784 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4786         * mediaelement.cpp: Reinvalidate everything when
4787         clearing a source. Fixes MS DRT #45 (after setting
4788         the source to an empty string, the media element
4789         shouldn't render anything anymore).
4791 2009-07-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4793         * pipeline.cpp: FillBuffers: Take into account that
4794         decoders may call SetOutputEnded once SetInputEnded
4795         is called, and update the number of ended streams
4796         immediately. Fixes our test #111.
4798 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4800         * pipeline.cpp:
4801         * playlist.cpp: Make debug output more descriptive.
4803 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4805         * pipeline-asf.cpp|h: Reimplement support for mms seeking.
4807 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4809         * mp3.cpp: GetFrameAsyncInternal: if we don't have enough data,
4810         try again later.
4812 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4814         * mp3.cpp: Fix parsing of xing vbr headers causing wrong
4815         duration to get calculated of the file.
4817 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4819         * mp3.cpp: FindMpegHeader: fix return value: the offset of
4820         the header goes into the result output variable and we return
4821         success instead of returning a bogus error value.
4823 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4825         * pipeline.cpp: If we couldn't select a demuxer because of
4826         not having enough data yet, try again later.
4828 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4830         * mediaelement.cpp: If Source (or UriSource) is either null
4831         or an empty string, we're only supposed to clean up, not 
4832         trying to play the null/empty string.
4834 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4836         * pipeline.cpp: Use ProgressEventArgs to pass buffering progress
4837         to MediaElement. Clamp BufferingProgress to 0.0 <=> 1.0, and if
4838         all streams have finished their output, set buffering progress
4839         to 1.0.
4841         * playlist.cpp: Properly forward progress event args.
4843         * mediaelement.cpp: Set buffering progress when it changes,
4844         and raise BufferingProgressChanged. Don't try to autoplay
4845         when buffering progress is < 1.0, wait until it reaches 1.0.
4847 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4849         * audio-pulse.cpp: Fix warning.
4851 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4853         * audio-alsa.cpp: WriteMmap: If we try to write with an audio
4854         source which has ended, call Underflowed, since that's what's
4855         happened.
4857 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4859         * audio-alsa.cpp: If hw setup failed, dump current hw parameters
4860         to stdout (if debug mode is enabled).
4862 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4864         * mms-downloader.cpp: Do better initialization and cleanup of
4865         downloader and state variables to prevent issues when seeking.
4867 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4869         * mms-downloader.cpp: Write: Don't use math when not necessary to
4870         avoid overflows, and if we end up freeing the buffer set the size
4871         accordingly.
4873 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4875         * mms-downloader.cpp: Use thread-safe tick call from media thread.
4877 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4879         * mms-downloader.cpp: Don't leak the uri.
4881 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4883         * downloader.h: Make OpenInitialize public so that the
4884         MmsDownloader can reinitialize it when sending new requests.
4886 2009-06-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4888         * audio.cpp: Play 24 bit audio unconditionally.
4890 2009-07-01  Chris Toshok  <toshok@ximian.com>
4892         * Makefile.am (INCLUDES): turns out we need to include ../plugin
4893         here to deal with type-generated/type.h/etc.
4895         * type.h.in: fix annoying indent problem.
4897         * cbinding.h, dependencyproperty.g.cpp, type-generated.cpp,
4898         value.h, type.h: regen
4900 2009-07-01  Larry Ewing  <lewing@novell.com>
4902         * textblock.cpp (ArrangeOverride): take alignment into account
4903         when computing our size.
4905 2009-07-01  Jeffrey Stedfast  <fejj@novell.com>
4907         * textblock.cpp (ArrangeOverride): Set the available width on the
4908         layout so that it can properly align the text for center/right
4909         alignment.
4911 2009-07-01  Jackson Harper  <jackson@ximian.com>
4913         * xaml.cpp: Need to set the binding source when we are validating
4914         templates.
4916 2009-07-01  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4918         * mediaelement.cpp: SetMarkerTimeout: when unreffing self
4919         use a delayed timeout, since we can be the last ref, this
4920         ensures the stack is unwound first.
4922 2009-06-30  Larry Ewing  <lewing@novell.com>
4924         * border.cpp (Render): get CornerRound rendering closer to the sl
4925         version.
4927 2009-06-30  Chris Toshok  <toshok@ximian.com>
4929         * clock.h|cpp: Seeking doesn't start the clock.  And we have to
4930         support UpdateFromParentTime even while paused, since we can seek
4931         while paused.  Fixes 392 (along with actually fixing the test..)
4933 2009-06-30  Chris Toshok  <toshok@ximian.com>
4935         * clock.h|cpp: fix Seek and SeekAlignedToLastTick.  fixed DRT
4936         tests 393 and 396.
4938 2009-06-30  Jeffrey Stedfast  <fejj@novell.com>
4940         * fontmanager.cpp (style_diff): Improved a bit so that we never
4941         return G_MAXINT if any font by the same name is found, no matter
4942         what style differences there are.
4944 2009-06-30  Jackson Harper  <jackson@ximian.com>
4946         * deepzoomimagetilesource.cpp: Parsers need to be freed.
4948 2009-06-30  Alan McGovern  <amcgovern@novell.com>
4950         * popup.cpp: According to the docs, a popup which is GC'ed
4951           should be closed. Ensure that this happens.
4953 2009-06-30  Alan McGovern  <amcgovern@novell.com>
4955         * popup.cpp: If the child is set after the popup is opened,
4956           make sure it is shown. Ensure that we now only emit the
4957           Opened/Closed events when the popup IsOpen state changes.
4958           Allows 503 to progress further.
4960 2009-06-30  Jackson Harper  <jackson@ximian.com>
4962         * xaml.cpp|h: Add a flag for template validation
4963         - Implement template validation and propogate errors up
4964         * cbinding.cpp: regen
4966 2009-06-30  Stephane Delcroix  <sdelcroix@novell.com>
4968         * multiscaleimage.cpp: drop a debug block that was misinterpreted by
4969         the preprocessor. fir x drt 265.
4971 2009-06-30  Stephane Delcroix  <sdelcroix@novell.com>
4973         * multiscaleimage.cpp: download the first num_dl (6) levels while the
4974         source is ready.
4976 2009-06-29  Alan McGovern  <amcgovern@novell.com>
4978         * control.cpp: Unregress drt 911, EnabledChanged events fire
4979           at the correct time again.
4981 2009-06-29  Jeffrey Stedfast  <fejj@novell.com>
4983         * fontmanager.cpp (LoadGlyph): Save some memory by dropping some
4984         of the GlyphMetrics fields.
4986         * layout.cpp: Updated to keep track of the previous GlyphInfo
4987         rather than the previous GlyphInfo's index.
4989         * fonts.cpp (TextFont::GetGlyphInfo): Set the GlyphInfo face.
4990         (TextFont::Kerning): Modified to take GlyphInfo arguments rather
4991         than face indexes since they are worthless w/o knowing which font
4992         face the indexes of each are for.
4994 2009-06-29  Alan McGovern  <amcgovern@novell.com>
4996         * control.cpp: Propagate the IsEnabled changes down the visual
4997           tree in OnPropertyChanged, not in SetValue.
4999 2009-06-29  Jackson Harper  <jackson@ximian.com>
5001         * xaml.cpp: Store enums as INTs.
5003 2009-06-28  Chris Toshok  <toshok@ximian.com>
5005         * clock.h|cpp (Clock::RaiseAccumulatedEvents): switch (state ==
5006         Clock::Active) to (state != Clock::Stopped) to tell whether or not
5007         we've started (since we can start directly in the filling state.)
5009         Also remove all the idle_hint stuff, since it's no longer used.
5011         * timemanager.cpp (RootClockGroup::UpdateFromParentTime): not sure
5012         why this method is needed at all, but at the very lease we need to
5013         stop calling ClockGroup::UpdateFromParentTime, since this method
5014         very nearly duplicates that one (and we're therefore looping over
5015         the child clocks twice).
5017 2009-06-28  Chris Toshok  <toshok@ximian.com>
5019         * color.cpp (named_colors): update these so that text-colors.xaml
5020         passes.
5022 2009-06-28  Larry Ewing  <lewing@novell.com>
5024         * xaml.cpp (value_from_str_with_parser): allow NAN to be NAN too.
5026 2009-06-27  Jeffrey Stedfast  <fejj@novell.com>
5028         * glyphs.cpp (OnPropertyChanged): When the FontUriProperty
5029         changes, the layout *always* gets dirty. We also always need to
5030         invalidate.
5032         * fonts.cpp (TextFont::UpdateFaceExtents): New helper method to
5033         calculate/update the font extents. Only use the extents of the
5034         first face - this fixes a bunch of MS DRTs.
5035         (TextFont::.ctor): Call UpdateFaceExtents().
5036         (TextFont::SetSize): Need to call UpdateFaceExtents() here. Fixes
5037         a number of regressions (like MS DRT #43).
5039 2009-06-27  Chris Toshok  <toshok@ximian.com>
5041         * grid.cpp (Grid::OnCollectionItemChanged): don't
5042         InvalidateMeasure() when the grid's actualwidth or row's
5043         actualheight is set.  this gets us into an infinite loop.
5045 2009-06-26  Chris Toshok  <toshok@ximian.com>
5047         * enums.cpp (grid_unit_type_map): add a mapping for GridUnitType.
5048         (initialize_enums): and add it to the hashtable.
5050         * grid.h|cpp: make ColumnDefinition.ActualWidth and
5051         RowDefinition.ActualHeight dependencyproperties to make the plugin
5052         binding easier.  get rid of each class's "actual" field.
5053         
5054 2009-06-25  Chris Toshok  <toshok@ximian.com>
5056         * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
5057         object we're looking the event up on, and a flag as to whether or
5058         not to allow desktop-specific events.  and just look up the event
5059         from the type system instead of having the hardcoded list.
5061 2009-06-25  Chris Toshok  <toshok@ximian.com>
5063         * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
5064         object we're looking the event up on, and a flag as to whether or
5065         not to allow desktop-specific events.  and just look up the event
5066         from the type system instead of having the hardcoded list.
5068 2009-06-26  Jeffrey Stedfast  <fejj@novell.com>
5070         * fonts.cpp (LoadPortableUserInterface): Only set that we've
5071         loaded PUI, not each individual fallback face. The other faces may
5072         match user-specified faces, but there may also be a font source
5073         that it is loading them from (which may differ from the locally
5074         installed faces).
5076 2009-06-26  Jeffrey Stedfast  <fejj@novell.com>
5078         * runtime.cpp: Don't need to call font_init() or font_shutdown()
5079         anymore.
5081         * deployment.cpp: Create a new FontManager per Deployment and
5082         provide an access method to get at it.
5084         * textblock.cpp, glyphs.cpp, textbox.cpp: Updated for the font
5085         loading APIs.
5087         * provider.cpp: Removed FontFilenameProperty and FontGUIDProperty
5088         inheritance, these no longer exist.
5090         * fonts.cpp|h: New source files with the higher-level abstraction
5091         for font loading, glyph manipulation, etc.
5093         * fontmanager.cpp|h: New source files containing a FontManager
5094         class which handles caching of font faces and indexing of font
5095         resources. Serves as platform-dependent font loading layer.
5097         * font.cpp|h: Removed.
5099 2009-06-26  Jeffrey Stedfast  <fejj@novell.com>
5101         * uri.cpp (ToString): Respct the UriHideQuery flag.
5103 2009-06-26  Larry Ewing  <lewing@novell.com>
5105         * border.h: change the default value.
5107         * cornerradius.h: reorder the bottom* arguments.
5109 2009-06-26  Alan McGovern  <amcgovern@novell.com>
5111         * popup.h:
5112         * popup.cpp: Handle popup hittesting when its closed in a way
5113           that doesn't suck.
5115 2009-06-26  Alan McGovern  <amcgovern@novell.com>
5117         * popup.cpp: Keep the RENDER_VISIBLE flag in sync with the
5118           IsOpen state so that hittesting works correctly.
5120 2009-06-25  Chris Toshok  <toshok@ximian.com>
5122         * xaml.h|cpp (xaml_is_valid_event_name): pass in the type of the
5123         object we're looking the event up on, and a flag as to whether or
5124         not to allow desktop-specific events.  and just look up the event
5125         from the type system instead of having the hardcoded list.
5127 2009-06-25  Larry Ewing  <lewing@novell.com>
5129         * grid.cpp, grid.h (PostRender): move the grid lines from Render to
5130         PostRender so that the lines are on top of the children (which
5131         appears to be the sl behavior).  Fixes at least 317 and 446.
5132         
5133 2009-06-25  Sebastien Pouliot  <sebastien@ximian.com>
5135         * downloader.cpp: Fix MediaElement policy wrt cross-domain access.
5136         Fix two unnumbered DRT tests.
5138 2009-06-25  Chris Toshok  <toshok@ximian.com>
5140         * textbox.h|cpp (TextBoxBase::SelectWithError): we need to
5141         generate ArgumentExceptions here if start/length are out of range.
5142         This could, in the future, be entirely handled by the setter
5143         methods but for now we don't pass a MoonError to them.
5145         * xaml.h|cpp (xaml_set_property_from_str): this method takes an
5146         additional MoonError parameter so we can communicate back if there
5147         was a problem.  Also, call SetValueWithError.
5149         * cbinding.h|cpp: regen.
5151 2009-06-25  Chris Toshok  <toshok@ximian.com>
5153         * resources.h|cpp: add a "from_resource_dictionary_api" bool so we
5154         can tell in AddedToCollection and RemovedFromCollection if we got
5155         there from using ResourceDictionary's string-based api or
5156         Collection's object-based api.  Take care of adding/removing the
5157         key for the object in those methods if we didn't come from the RD
5158         api.
5160         * type.cpp (Type): quiet valgrind down by using "delete []"
5161         instead of "delete" to free up the interfaces array.
5163 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5165         * mediaplayer.cpp: Improve debug output.
5167 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5169         * pipeline.h: Added a ProgressEventArgs class.
5171         * value.h:
5172         * type.h:
5173         * type-generated.cpp: Regenerated.
5175 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5177         * audio.cpp|h: Add support for having different input (from the
5178         codec) and output (to the device) formats. This is required for
5179         pulseaudio 0.10 which doesn't support 24 bit audio, only 16 and 32
5180         bit. Also add support for multi channel audio.
5182         * audio-alsa.cpp:
5183         * audio-pulse.cpp: Add support for multi channel and 24 bit audio
5184         and update according to audio API changes.
5186 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5188         * audio-alsa.cpp: Fix debug output by not duplicating declarations.
5190 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5192         * audio.cpp|h: Add support for dumping raw audio data to a file.
5194 2009-06-25  Alan McGovern  <amcgovern@novell.com>
5196         * dependencyproperty.g.cpp: Regen
5198 2009-06-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5200         * downloader.cpp:
5201         * mms-downloader.h:
5202         * file-downloader.h:
5203         * internal-downloader.h: Add a SetFilename abstract method to 
5204         InternalDownloader, provide implementations in FileDownloader
5205         and MmsDownloader and call the abstract method in the downloader
5206         instead of blindly casting an InternalDownloader to a FileDownloader
5207         when it might be an MmsDownloader.
5209 2009-06-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5211         * pipeline.cpp|h: AudioStream: add possibility of having different
5212         input and output formats.
5214         * cbinding.cpp|h: Regenerated.
5216 2009-06-24  Chris Toshok  <toshok@ximian.com>
5218         * xaml.cpp (matrix_from_str): handle "Identity" here.
5219         (value_from_str_with_parser): you can also create TransformGroups
5220         directly using the matrix syntax.  Also, add support for parsing
5221         FontWeight/FontStyle/FontWeight structs here since we can't just
5222         rely on the enum_* stuff alone to do it.
5224         * value.h.in, value.cpp: add support for
5225         FontWeight/FontStyle/FontWeight structs.
5227         * textblock.cpp (Inline::UpdateFontDescription): track the
5228         struct-update.
5229         (TextBlock::Layout): same.
5231         * textbox.cpp (TextBoxBase::Initialize): same.
5232         (TextBoxBase::OnPropertyChanged): same.
5234         * fontweight.h, fontstyle.h, fontstretch.h: new files, we're using
5235         structs now for these.
5236         
5237         * textblock.h, control.h: use the FontWeight/FontStyle/FontWeight
5238         struct types for properties instead of our internal enums.
5240         * Makefile.am (libmoon_include_headers): add fontstretch.h
5241         fontstyle.h, and fontweight.h
5243         * type-generated.cpp: regen.
5245         * cbinding.h|cppp: regen.
5247         * dependencyproperty.g.cpp: regen.
5249         * value.h: regen.
5250         
5251 2009-06-24  Larry Ewing  <lewing@novell.com>
5253         * panel.cpp (Render): add layout clipping to panel rendering.
5255 2009-06-24  Larry Ewing  <lewing@novell.com>
5257         * grid.h: stop drawing the gridlines by default.  See comment for
5258         details.
5260 2009-06-24  Alan McGovern  <amcgovern@novell.com>
5262         * runtime.h:
5263         * runtime.cpp: Focus changed events should be emitted at the
5264           start and end of any user initiated event.
5265           can_raise_focus_changed is no longer necessary.
5267 2009-06-23  Larry Ewing  <lewing@novell.com>
5269         * frameworkelement.cpp (UpdateLayout): reorder the way we process
5270         the lyout queues. Fixes ms 409.
5272 2009-06-23  Jackson Harper  <jackson@ximian.com>
5274         * xaml.cpp: Handle empty buffers
5275         
5276 2009-06-23  Jackson Harper  <jackson@ximian.com>
5278         * xaml.cpp: ContentControl can not have string content set this
5279         way, if the content object is a string it needs to be set with
5280         attributes.
5282 2009-06-23  Jackson Harper  <jackson@ximian.com>
5284         * xaml.cpp: Another stab at not skipping empty attributes. Fixed
5285         all the unit test regression this caused last night.
5287 2009-06-23  Alan McGovern  <amcgovern@novell.com>
5289         * grid.cpp: A dash length of 4 seems to be more correct.
5291 2009-06-23  Alan McGovern  <amcgovern@novell.com>
5293         * grid.h:
5294         * grid.cpp: Implement Grid.ShowGridlines
5296 2009-06-22  Jackson Harper  <jackson@ximian.com>
5298         * xaml.cpp: Pass the full prop name to managed
5299         - If managed fails to set the property, delete it so unmanaged can
5300         try
5302 2009-06-22  Larry Ewing  <lewing@novell.com>
5304         * provider.cpp: make UIElement::UseLayoutRounding inherited, this
5305         doesn't make it pass 2019 but it does a lot more. 
5307         * shape.cpp: mirror the silverlight logic for canvas children with
5308         only one of w/h set.  Fixes ms test 23.
5310 2009-06-18  Larry Ewing  <lewing@novell.com>
5312         * shape.cpp: try to get the shape flags right once again trap
5313         explicit small values properly.  Add Clipping logic to clip shapes
5314         to the fe values when explicitly set.
5316         * frameworkelement.cpp: look at stretch even when we have no
5317         children.
5319 2009-06-19  Jackson Harper  <jackson@ximian.com>
5321         * xaml.cpp|h: We now have a managed version of AddChild so remove
5322         all the AddToContainer junk and use the managed AddChild instead.
5323         - Add MoonError to all the callbacks. Not handling the errors yet,
5324         but at least they are there now.
5326 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5328         * xaml.cpp: Add comment about absolute/relative paths
5329         for MSI.
5331 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5333         * multiscaleimage.cpp: When an image has been opened,
5334         invalidate everything.
5336 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5338         * multiscaleimage.cpp|h: Emit MotionFinished after
5339         SetViewportWidth/SetViewportOrigin has been called.
5341 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5343         * multiscaleimage.cpp|h:
5344         * deepzoomimagetilesource.cpp|h: Raise error events.
5346 2009-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5348         * multiscaleimage.cpp|h: Add support for methods exposed to JS.
5350         * cbinding.h: Regenerated.
5352 2009-06-18  Sebastien Pouliot  <sebastien@ximian.com>
5354         * textblock.cpp: Avoid crash when using FontSource
5356 2009-06-18  Alan McGovern  <amcgovern@novell.com>
5358         * control.h:
5359         * uielement.h:
5360         * control.cpp: When the visual parent changes on a Control, it
5361           needs to search up the visual tree to find out the Enabled
5362           state of the first Control it finds. When raising the
5363           IsEnabledChanged events, the control must emit its event
5364           before controls in its subtree emit their events. Fixes drt
5365           911.
5367 2009-06-17  Jeffrey Stedfast  <fejj@novell.com>
5369         * textbox.cpp (Paste): Don't allow pastes to exceed MaxLength and
5370         for single-line entry controls (e.g. PasswordBox), don't allow
5371         multi-line pastes.
5373 2009-06-17  Alan McGovern  <amcgovern@novell.com>
5375         * uielement.cpp: Changing UIElement::Visibility should also
5376           invalidate the parents measure. This allows DRT 2050 to
5377           complete without timing out.
5379 2009-06-17  Alan McGovern  <amcgovern@novell.com>
5381         * uielement.cpp: Changing UIElement.Visibility should result
5382           in the measure being invalidated.
5384 2009-06-17  Alan McGovern  <amcgovern@novell.com>
5386         * font.cpp: When the font cache is destroyed, set it to NULL
5387           so that if a Font is destroyed later it does not try to
5388           re-use the cache.
5389         Null check the the FontFace cache before using it.
5390         If the FT_Face stream is null already, don't try to destroy
5391           it.
5393 2009-06-17  Alan McGovern  <amcgovern@novell.com>
5395         * runtime.cpp: A subset of keypresses are allowed to bubble up
5396           when in fullscreen mode. Fixes drt 175.
5398 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5400         * uri.cpp: Add a null check to prevent a crash.
5402 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5404         * uri.cpp: Flag a lot more characters as url unsafe, and 
5405         fix printf specifiers for url encoded characters to not 
5406         include extra 'ff' sequences for every encoded character.
5408         This fixes parts of MS DRT #641.
5410 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5412         * downloader.cpp|h: Add an Open overload which takes an Uri
5413         instead of a string.
5415         * deepzoomimagetilesource.cpp:
5416         * bitmapimage.cpp: Use the Uri overload of Downloader::Open.
5418 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5420         * playlist.cpp: When we stop, emit the StopEvent.
5422         * mediaelement.cpp: Don't return a CurrentPosition > NaturalDuration.
5424 2009-06-16  Chris Toshok  <toshok@ximian.com>
5426         * xaml.cpp (XamlElementInfoStaticResource,
5427         XamlElementInstanceStaticResource): remove these classes.
5428         (begin_buffering_element_names): remove this unused variable.
5429         (XamlParserInfo::LookupNamedResource): remove.
5430         (DefaultNamespace::FindElement): remove the
5431         XamlElementInfoStaticResource case, and just let the managed
5432         loader create the StaticResource element itself.
5433         (is_static_resource_element): remove.
5434         (XamlElementInstanceNative::SetProperty): defer to the loader if
5435         either the property or the value RequiresManagedSet.
5436         (dependency_object_set_property): defer to the loader if the value
5437         RequiresManagedSet.
5438         (dependency_object_set_attributes): remove all processing of
5439         markup extensions from unmanaged code.
5440         (xaml_markup_parse_argument): remove.
5441         (xaml_markup_extension_type): remove.
5442         (handle_markup_in_managed): remove.
5443         (handle_xaml_markup_extension): remove.
5444         
5445         * panel.h|cpp (Panel::Panel): just set our subtree object here.
5446         (Panel::GetSubtreeObject): remove.
5447         
5448         * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
5449         don't notify listeners when creating an auto-created value.
5451         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
5452         only call the property's change callback if we're notifying
5453         listeners.
5455 2009-06-17  Andreia Gaita  <avidigal@novell.com>
5457         * dependencyobject.cpp: (Emit) if types have been destroyed, bail out
5459 2009-06-17  Andreia Gaita  <avidigal@novell.com>
5461         * xaml.cpp: fix typo
5463 2009-06-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5465         * pipeline.cpp: Remove spurious printfs.
5467 2009-06-16  Andreia Gaita  <avidigal@novell.com>
5469         * deployment.[h|cpp]: Try to dispose types only if there are no
5470         objects pending destruction. If there are, dispose only after
5471         they are all cleared (on DrainUnrefs). This makes sure no properties
5472         are destroyed while objects are still pending.
5473         Added isDead flag, used when doing object tracking to protect against
5474         trying to access type fields when the types have been destroyed
5475         already (when doing ref logging and the final leak report).
5476         Type destruction is slightly delayed when doing object tracking
5477         to allow for the report (otherwise we wouldn't have any type names
5478         on it, and that would be sad)
5480         * type.cpp: fake-clear the properties list by setting it's count to 0
5481         so access by id fails (in case someone wants to access the property
5482         while we're disposing everything).
5483         Delete all the registered types and kill the properties list when
5484         destroying. By this point all properties and objects should be
5485         dead.
5486         * type.h.in: added dispose flag.
5487         * type.h: regenerated
5489 2009-06-16  Andreia Gaita  <avidigal@novell.com>
5491         * uielement.cpp: release all refs on dispose
5493 2009-06-16  Andreia Gaita  <avidigal@novell.com>
5495         * control.[h|cpp]: Dispose() added. Don't be clingy, unref things
5497 2009-06-16  Jeffrey Stedfast  <fejj@novell.com>
5499         * xaml.cpp (value_from_str_with_parser): Handle Type::CHAR
5501 2009-06-16  Larry Ewing  <lewing@novell.com>
5503         * shape.cpp: try to be more careful about clearing SHAPE_EMPTY
5504         when properties change in preparation for fixing the autocreated
5505         property notification stuff
5507 2009-06-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5509         * multiscaleimage.cpp: Add a call to print_stack_trace, looks
5510         like abort () doesn't cause a stack trace.
5512 2009-06-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5514         * mediaplayer.cpp: Remove circular dependency between MediaPlayer
5515         and MediaElement, clear out the element in Dispose and add a null
5516         check before accessing the element. Fixes crash in MS DRT #238.
5518 2009-06-15  Andreia Gaita  <avidigal@novell.com>
5520         * frameworkelement.cpp: delete UIElement nodes when we're done 
5521         with them
5523 2009-06-15  Jeffrey Stedfast  <fejj@novell.com>
5525         * textblock.cpp (SetTextInternal): Get rid of some duplicated
5526         code.
5528 2009-06-15  Alan McGovern  <amcgovern@novell.com>
5530         * uielement.cpp:
5531         * frameworkelement.h:
5532         * frameworkelement.cpp: Give an initial implementation of
5533           FindElementInHostCoordinates (UIElement, Rect) which treats
5534           the rect as a series of points and checks each one until a
5535           hit is found. Allows drt 280 to 
5537 2009-06-15  Jeffrey Stedfast  <fejj@novell.com>
5539         * dependencyobject.cpp (Initialize): Initialize is_hydrated to
5540         false.
5542 2009-06-15  Andreia Gaita  <avidigal@novell.com>
5544         * type.[h|cpp]: Dispose method added, to help separate between clearing
5545         all the DPs and actually deleting the types. For now, just clears the
5546         DPs and doesn't touch the type list.
5547         * deployment.cpp: (Dispose) types are disposed here, for now.
5549 2009-06-15  Andreia Gaita  <avidigal@novell.com>
5551         * dependencyproperty.g.cpp: regenerated
5553 2009-06-15  Jackson Harper  <jackson@ximian.com>
5555         * xaml.cpp: Reorder errors.
5557 2009-06-15  Andreia Gaita  <avidigal@novell.com>
5559         * deployment.cpp: (Reinitialize) AssemblyPartsCollection is reffed
5560         inside SetParts, and since we don't store it anywhere else, drop a
5561         ref after the call
5563 2009-06-15  Andreia Gaita  <avidigal@novell.com>
5565         * dependencyproperty.cpp, animation.[h|cpp]: Fix animation storage so
5566         it removes itself from the property list and gets deleted as soon as
5567         possible, otherwise it will not only leak, but blow up once we start
5568         clearing DPs.
5569         Floating status is gone.
5571 2009-06-15  Andreia Gaita  <avidigal@novell.com>
5573         * value.[h.in|cpp], debug.h, runtime.[h|cpp]: LOG_VALUE macro added,
5574         and some extra debugging output for refcounting.
5575         * value.h: regen
5577 2009-06-15  Alan McGovern  <amcgovern@novell.com>
5579         * frameworkelement.cpp: Objects can be hit as long as their
5580           height as greater than zero and the point is in the fill or
5581           stroke.
5583 2009-06-15  Alan McGovern  <amcgovern@novell.com>
5585         * frameworkelement.cpp: Back that change out as it causes some
5586           regressions in the moon-unit tests.
5588 2009-06-15  Alan McGovern  <amcgovern@novell.com>
5590         * frameworkelement.cpp: We can hit an element in both stroke
5591           and fill.
5593 2009-06-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5595         * playlist.cpp|h: When a media reports that it has been opened
5596         successfully, check if we're the current element, and if not,
5597         don't to anything more until we are the current element. This
5598         fixes an issue with server side playlists where they would
5599         only play the first entry.
5601         * pipeline.cpp|h: Move code out of header.
5603         * pipeline-asf.cpp|h: Inform the MmsPlaylistEntry whenever an
5604         entry has finished.
5606 2009-06-15  Alan McGovern  <amcgovern@novell.com>
5608         * frameworkelement.cpp: We're hittesting the clip, we use
5609           user-space coordinates, so apply the identity matrix to get
5610           the correct result.
5612 2009-06-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5614         * pipeline.h: Expose MediaFrame::IsKeyFrame to C.
5616         * cbinding.cpp|h: Regenerated.
5618 2009-06-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5620         * enums.cpp: Rename MediaElementState -> MediaState. Add 'Paused'
5621         to the enum->str conversion table.
5623 2009-06-15  Alan McGovern  <amcgovern@novell.com>
5625         * mediaplayer.cpp: The MediaPlayer should ref the MediaElement
5626           it's attached to otherwise it can access the element after
5627           the element has been destroyed. Stops 238 crashing.
5629 2009-06-14  Andreia Gaita  <avidigal@novell.com>
5631         * value.[h.in|cpp]: (CreateUnref*) Accept EventObject instead of DPs, since 
5632         there are certain refcounted objects that aren't child classes of
5633         DependencyObject.
5634         Wrap null objects but don't try to unref them.
5635         * value.h: regen
5637 2009-06-14  Andreia Gaita  <avidigal@novell.com>
5639         * debug.[h|cpp]: add max frame arg for finer control when getting 
5640         stack traces
5642 2009-06-12  Jackson Harper  <jackson@ximian.com>
5644         * xaml.cpp|h: import_xmlns now validates the namespace so we can
5645         raise an error if it is invalid.
5647 2009-06-12  Jackson Harper  <jackson@ximian.com>
5649         * xaml.cpp: Don't allow dtds.
5651 2009-06-12  Jackson Harper  <jackson@ximian.com>
5653         * xaml.cpp: SL doesn't handle NaN the same way that strtod does.
5655 2009-06-12  Jackson Harper  <jackson@ximian.com>
5657         * xaml.cpp: Use the value attribute parsing for enum types, this
5658         allows them to have x:Key and x:Name attributes.
5660 2009-06-12  Sebastien Pouliot  <sebastien@ximian.com>
5662         * dependencyproperty.g.cpp: Regenerated
5663         * deployment.h: Update ExternalCallersFromCrossDomainProperty
5664         generator-related properties and add unmanaged accessors
5665         * enumscpp|h: Remove CrossDomainAccessFullAccess value which was
5666         dropped after SL2 beta2
5667         * uri.cpp|h: Add new Uri::SameSiteOfOrigin method
5668         * validators.cpp|h: Add new CrossDomainValidator that ensure we
5669         can set only once Deployment::ExternalCallersFromCrossDomainProperty
5671 2009-06-11  Jackson Harper  <jackson@ximian.com>
5673         * xaml.cpp: Re-enable the force USERCONTROL to be managed thingy.
5674         - Don't try to set managed properties in
5675         dependency_object_add_child.
5676         - Make sure we only create managed property elements for managed
5677         items, even if they are DOBs, otherwise UserControl.Resources gets
5678         a native property info.
5680 2009-06-11  Alan McGovern  <amcgovern@novell.com>
5682         * runtime.h:
5683         * runtime.cpp: The uielements involved in GotFocus/LostFocus
5684           events need to be stored in a queue so that focusing
5685           multiple elements in one tick works correctly.
5687 2009-06-11  Alan McGovern  <amcgovern@novell.com>
5689         * popup.h:
5690         * popup.cpp:
5691         * type-generated.cpp: Make Popup.[Opened|Closed] asynchronous.
5693 2009-06-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5695         * src.mdp: Define HAVE_CONFIG_H to fix build in MD.
5697         * security.c: Fix signed/unsigned mismatch warning.
5699         * error.cpp: Fix warning about not initialize in correct order.
5701 2009-06-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5703         * pipeline.cpp: Fix warning/typo in printf.
5705 2009-06-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5707         * pipeline.cpp: MarkerStream: if there is no callback, store
5708         the markers in a list instead of just dropping them. Fixes an 
5709         issue with our #150 where we'd lose markers since the stream
5710         had processed them before getting a callback.
5712         * mediaelement.cpp: Check if a marker stream has stored markers
5713         (which would have been added before the calback was set).
5715 2009-06-10  Larry Ewing  <lewing@novell.com>
5717         * frameworkelement.cpp (Arrange): measure containers if they
5718         haven't been at least for now.
5720 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5722         * mediaelement.cpp: When we get a stream as the source, set download
5723         progress immediately to 1.0. Also emit DownloadProgressChanged just
5724         after opening the file (to ensure that we emit DownloadProgressChanged
5725         at least once). This makes MS DRT #420 not time out.
5727 2009-06-10  Larry Ewing  <lewing@novell.com>
5729         * frameworkelement.cpp (UpdateLayout): if we find a unloaded
5730         element while walking the tree emit loaded on it now.
5732 2009-06-10  Larry Ewing  <lewing@novell.com>
5734         * frameworkelement.cpp (UpdateLayout): emit SizeChanged in the
5735         place it was supposed to be emitted.
5737 2009-06-10  Jeffrey Stedfast  <fejj@novell.com>
5739         * layout.cpp (Layout): Don't apply font height to the line unless
5740         text has been rendered on that line using that font.
5742 2009-06-10  Jackson Harper  <jackson@ximian.com>
5744         * xaml.cpp|h: Add another param to LookupObject to specify whether
5745         we are looking up a property.  We can't rely on the '.' being in
5746         the name because x:Class names can have namespaces.
5747         - Force USERCONTROL to be looked up in managed so we can
5748         honour x:Class
5749         
5750 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5752         * playlist.cpp|h: PlaylistEntry: Add support for getting duration for
5753         parent entries/playlists too. Also propagate the BufferUnderflow
5754         event.
5756         * pipeline.cpp: Change logic when filling the buffer to request
5757         a frame from the least-buffered stream. This solves an issue with
5758         live streams, we might end up playing audio only when the video
5759         buffer was empty and the audio buffer never full.
5761         * mediaplayer.cpp|h: When determining duration of an entry, check
5762         the entry's parents too for duration. We also need to set
5763         first_live_pts when rendering. This makes MS DRT #129
5764         not time out. Add a BufferUnderflow to inform listeners of any
5765         buffer underflows.
5767         * mediaelement.cpp|h: Handle the BufferUnderflow event, pause
5768         playback and update states accordingly. Remove UpdateProgress,
5769         unused.
5771         * type-generated.cpp: Regenerated.
5773 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5775         * mediaplayer.cpp: use the correct max value for guint64.
5777 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5779         * mediaplayer.cpp|h: Make flags a thread-safe variable, since
5780         we might write to it from an audio thread.
5782 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5784         * playlist.cpp: When checking if an entry has duration, check
5785         the right entry. Fixes a possible crash.
5787 2009-06-10  Alan McGovern  <amcgovern@novell.com>
5789         * multiscaleimage.cpp: The FadeIn storyboard should emit a MotionFinished
5790         event too. Allows drt 293 to complete.
5791         
5792 2009-06-10  Alan McGovern  <amcgovern@novell.com>
5794         * uri.cpp: Uris starting with "\\" need to be recognised as
5795           absolute Uris
5797 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5799         * pipeline-asf.cpp: Remove dead code.
5801 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5803         * runtime.cpp: g_warning -> printf to ease breaking on
5804         g_log.
5806 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5808         * dependencyobject.h: Fix IdMask.
5810 2009-06-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5812         * pipeline.h|cpp: Rework some of the buffer filling algorithm:
5813         we now never have more than one frame pending (to know which
5814         stream a response comes from - if frame parameter to 
5815         ReportGetFrameCompleted is null, we need to mark the corresponding
5816         stream as ended. Also split the 'stream ended' concept in two:
5817         input ended (the demuxer won't give us more data) and output
5818         ended (the decoder won't give us more data). This fixed
5819         MS DRT #19.
5821         * mp3.h|cpp:
5822         * pipeline-asf.h|cpp: GetFrameAsync: For some error codes we
5823         need to try again later.
5825         * mediaelement.cpp: CheckMarkers: subtract one to not include
5826         both ends of the range, if the marker matches exactly the end
5827         of a range it will get emitted twice otherwise.
5829         * mediaplayer.cpp:
5830         * audio.cpp: Updated according to IMediaStream changes.
5832 2009-06-09  Jeffrey Stedfast  <fejj@novell.com>
5834         * value.cpp (operator==): Fix a crash if comparing a null
5835         FontSource.
5837         * textbox.cpp (EmitSelectionChangedAsync): Only emit the event if
5838         the control is loaded.
5839         (EmitTextChangedAsync): Same.
5841 2009-06-09  Alan McGovern  <amcgovern@novell.com>
5843         * runtime.cpp: The first mouse click will always Focus on the
5844           'default' control. After that we follow the normal focusing
5845           rules and focus on the first eligible control which the
5846           mouse has clicked on.
5848 2009-06-08  Jackson Harper  <jackson@ximian.com>
5850         * xaml.cpp: Add TimeSpan to the primitive types.
5852 2009-06-08  Chris Toshok  <toshok@ximian.com>
5854         * runtime.h (class Surface): add IsZombie.
5856 2009-06-08  Jackson Harper  <jackson@ximian.com>
5858         * error.cpp|h: Add method and fields for line/char positions.
5859         * xaml.cpp: Fill in line/char positions on MoonErrors, this allows
5860         them to get propogated to managed and fixes some of the unit tests.
5862 2009-06-08  Jackson Harper  <jackson@ximian.com>
5864         * xaml.cpp|h: Pass the property xmlns and the element xmlns into
5865         managed when setting properties.
5867 2009-06-08  Alan McGovern  <amcgovern@novell.com>
5869         * runtime.cpp: Un-regress drt 783. We need to raise our cached
5870           focus changed event, then process the focus change itself,
5871           then raise the events for the new change.
5873 2009-06-08  Alan McGovern  <amcgovern@novell.com>
5875         * runtime.h:
5876         * runtime.cpp: If Control.Focus is called from inside a
5877           GotFocus handler, the focus change occurs immediately and
5878           the new GotFocus event is raised as soon as the current
5879           handler is finished.
5881 2009-06-08  Jackson Harper  <jackson@ximian.com>
5883         * xaml.cpp: Bail out after we hit the first attribute parsing
5884         error.
5886 2009-06-08  Jackson Harper  <jackson@ximian.com>
5888         * xaml.cpp: We need to convert path geometry strings from managed.
5890 2009-06-08  Jackson Harper  <jackson@ximian.com>
5892         * xaml.cpp: Little more cleanup now that we don't have to reparse
5893         attributes for x:Class.
5895 2009-06-05  Chris Toshok  <toshok@ximian.com>
5897         * xaml.cpp (XNamespace::SetAttribute): setting x:Class on an
5898         element when we aren't hydrating is illegal.  this has the
5899         pleasant side effect of removing the need to reparse attributes,
5900         so axe that code as well.
5902 2009-06-05  Chris Toshok  <toshok@ximian.com>
5904         * textbox.cpp (TextBoxView::Blink): don't set deployments using
5905         the pattern Deployment::SetCurrent (GetDeployment()), as
5906         GetDeployment() issues a warning if the object's deployment
5907         doesn't match the current one.  use
5908         DependencyObject::SetCurrentDeployment(true) instead.
5910 2009-06-04  Chris Toshok  <toshok@ximian.com>
5912         * runtime.cpp (Surface::EmitError): stop unreffing the args after
5913         the Emit call.  Emit unrefs them for us.
5915 2009-06-05  Jeffrey Stedfast  <fejj@novell.com>
5917         * layout.cpp (layout_word_wrap): Stop processing when we come to
5918         open-punctuation if it isn't the first char in the word as this is
5919         a good break opportunity. Fixes the last remaining issue in
5920         OMTextInline DRT.
5922 2009-06-04  Jackson Harper  <jackson@ximian.com>
5924         * xaml.cpp: Track the owner type of properties so we know whether
5925         or not to go into managed when we are dealing with an attached
5926         property.
5928 2009-06-04  Jeffrey Stedfast  <fejj@novell.com>
5930         * font.cpp (OpenFaceByIndex): If lang is non-null, then accept any
5931         font face that fontconfig can find for the requested language.
5932         (FontFace::LoadFontFace): Get the lang string and pass it along.
5933         (FontFace::Init): initialize a default font hash table for
5934         non-latin languages.
5935         (FontFace::Shutdown): destroy aformentioned table.
5936         (FontFace::LoadDefaultFaceForLang): New helper method to load the
5937         default font face for a given language code.
5938         (FontFace::GetDefault): If the language in the Fc pattern is
5939         'special', use LoadDefaultFaceForLang().
5940         (TextFontDescription::.ctor): Initialize language.
5941         (TextFontDescription::.dtor): Free language.
5942         (TextFontDescription::CreatePattern): Add the FC_LANG attribute if
5943         appropriate.
5944         (TextFontDescription::UnsetFields): Unset the language field.
5945         (TextFontDescription::Merge): Merge the language field.
5946         (TextFontDescription::GetLanguage): New method to get the language.
5947         (TextFontDescription::SetLanguage): New method to set the language.
5948         (TextFontDescription::ToString): Modified a bit.
5950         * textblock.cpp (Inline::Equals): Compare XmlLanguage attributes
5951         as well.
5952         (Inline::UpdateFontDescription): Pass the XmlLanguage along to the
5953         TextFontDescription.
5955 2009-06-04  Jackson Harper  <jackson@ximian.com>
5957         * xaml.cpp: The managed property could be either the property or
5958         the parent.
5960 2009-06-04  Larry Ewing  <lewing@novell.com>
5962         * canvas.cpp (OnCollectionItemChanged): call
5963         InvalidateSubtreePaint on items when their position in the canvas
5964         changes to make sure we clear the old region.  Fixes a couple of
5965         the inkpresenter tests.
5967 2009-06-04  Larry Ewing  <lewing@novell.com>
5969         * shape.cpp (ComputeStretchBounds): reject negative width/height
5970         settings.  Fixes test-shape-negative.xaml
5972 2009-06-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
5974         * multiscaleimage.cpp: Add a debugging abort to try to find the
5975         issue with #2014.
5977 2009-06-04  Alan McGovern  <amcgovern@novell.com>
5979         * control.h:
5980         * type-generated.cpp: Actually add IsEnabledChangedEvent
5982 2009-06-04  Alan McGovern  <amcgovern@novell.com>
5984         * control.h: Add IsEnabledChangedEvent to native
5985         
5986         * type-generated.cpp: regen
5988 2009-06-04  Stephane Delcroix  <sdelcroix@novell.com>
5990         * multiscaleimage.cpp: qtree_insert () takes no value. returns
5991         the newly created QTreeNode. qtree_insert_at () renamed to 
5992         qtree_insert_with_value ().
5994 2009-06-03  Alan McGovern  <amcgovern@novell.com>
5996         * cbinding.cpp|h:
5997         * control.cpp|h:
5998         * runtime.cpp:
5999         * uielement.cpp|h: Calling Control.Focus () results in a recursive
6000         check to find a focusable element. A mouse click does a non-recursive
6001         check on the elements which were 'hit'. Fixes two DRTs.
6003 2009-06-03  Jackson Harper  <jackson@ximian.com>
6005         * xaml.cpp: Update some error messages.
6006         - Pass the current namespace in when creating property infos in
6007         managed.
6008         * frameworkelement.h: ActualWidth and ActualHeight are readonly
6009         properties.
6010         * dependencyproperty.g.cpp: regen
6012 2009-06-03  Jeffrey Stedfast  <fejj@novell.com>
6014         * font.cpp (GetCharIndex): Use FcFreeTypeCharIndex() which does a
6015         bit more than FT_Get_Char_index().
6017         * layout.cpp (TextLayout::Layout): Silverlight 2.0 /never/ counts
6018         trailing lwsp towards line width, even if underlined.
6019         (TextLayoutGlyphCluster::Render): Don't underline trailing lwsp if
6020         we are the last glyph cluster on a line.
6021         (GenerateGlyphCluster): Keep track of underline width (calculated
6022         using width up to/including last non-lwsp char).
6023         (word_type_changed): Consider numerics as part of the containing
6024         alphabetic word.
6026 2009-06-03  Jackson Harper  <jackson@ximian.com>
6028         * xaml.cpp|h: We need to look for managed properties on native
6029         types.
6030         - Set the element info for properties to the type of the property.
6031         - Add the ability for properties to force their set to be in
6032         managed even if they come from a native type.
6033         
6034 2009-06-03  Alan McGovern  <amcgovern@novell.com>
6036         * uielement.cpp: Calculate the Transform between two UIElements
6037         correctly.
6039 2009-06-03  Alan McGovern  <amcgovern@novell.com>
6041         * transform.cpp: When instantiating a Matrix from a cairo_matrix_t
6042         we need to populate M11/M12/M21 etc with the correct values.
6044 2009-06-02  Chris Toshok  <toshok@ximian.com>
6046         * xaml.cpp (dependency_object_add_child): XamlElementInfoEnum has
6047         Type::INVALID as its Kind.  This is another facet to the "we need
6048         to register enum types" work that will need to be done.  The
6049         GetKind() method needs to eventually return a property Kind, but
6050         until then we'll just check for Type::INVALID.
6052 2009-06-02  Sebastien Pouliot  <sebastien@ximian.com>
6054         * security.c: Use the PREVIEW_VERSION for the environment variable
6055         used to turn off security (coreclr and verifier)
6057 2009-06-02  Jeffrey Stedfast  <fejj@novell.com>
6059         * textblock.cpp (SetTextInternal): Oops, I must have somehow nuked
6060         the run->SetAutogenerated() logic a while back which is causing
6061         some tests to fail.
6063         * layout.cpp (layout_word_overflow): Removed, Silverlight 2.0 no
6064         longer supports this wrapping model.
6066 2009-06-02  Larry Ewing  <lewing@novell.com>
6068         * uielement.cpp (DoArrange): don't poke at unset values.  Fixes
6069         the crash in #421.
6071 2009-06-02  Jeffrey Stedfast  <fejj@novell.com>
6073         * runtime.cpp (HandleMouseEvent): Fixed compile warning about 'if
6074         (x && y || z)'.
6076 2009-06-02  Alan McGovern  <amcgovern@novell.com>
6078         * collection.cpp: Fix DeepTreeWalker.Step (). It used to step in
6079         reverse logical order.
6081         * control.h
6082         * uielement.cpp|h: Make Focus a virtual method on UIElement.
6083         
6084         * src/runtime.cpp: When the surface receives a mouse down we need to
6085         focus the first control added to the root element if the user has not
6086         clicked on a control or focused one using Control.Focus (). Then any
6087         pending Focus events are raised before the mouse event is processed.
6088         
6089         * src/window-gtk.cpp: Always pass a right mouse button event into the
6090         Surface so that we can fire any pending Focus events to match the
6091         behaviour of Silverlight.
6093 2009-06-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6095         * mms-downloader.cpp: Use strtoull instead of g_ascii_strtoull
6096         since g_ascii_strtoull isn't available in sled.
6098 2009-06-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6100         * mms-downloader.cpp: Use strtoull instead of g_ascii_strtoull
6101         since g_ascii_strtoull isn't available in sled.
6103 2009-06-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6105         * type.h:
6106         * value.h:
6107         * cbinding.h:
6108         * type-generated.cpp: Regenerated.
6110         * downloader.h: Removed streaming_features, not used here anymore.
6112         * utils.cpp
6113         * enums.h:
6114         * playlist.cpp|h:
6115         * pipeline.cpp|h:
6116         * pipeline-asf.cpp|h:
6117         * mms-downloader.cpp|h: Implement support for server side playlists.
6119 2009-06-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6121         * pipeline.cpp: Check queued_requests for null after locking too.
6123 2009-06-02  Alan McGovern  <amcgovern@novell.com>
6125         * runtime.cpp|h: Focus changed events are emitted synchronously right
6126         before a MouseLeftButtonDown or MouseRightButtonDown event.
6128 2009-06-01  Chris Toshok  <toshok@ximian.com>
6130         * type.h.in|cpp (Types::RegisterType): permit a ctor_visible flag
6131         here too so xaml.cpp knows if the type is creatable.
6133         * type.h, cbinding.cpp|h: regen
6135 2009-06-01  Chris Toshok  <toshok@ximian.com>
6137         * xaml.cpp (dependency_object_add_child): only do this check for
6138         non-Type::MANAGED children.
6140 2009-06-01  Chris Toshok  <toshok@ximian.com>
6142         * grid.cpp|h: the row/columndefinitioncollections do not permit
6143         definitions to be inserted more than once.
6144         
6145         * type.h.in (class Type): add IsCtorVisible method and ctor arg.
6147         * type.h, type-generated.cpp: regen.
6149         * xaml.cpp (XamlElementInstanceNative::CreateItem): only create
6150         the instance if the ctor is visible.
6151         (dependency_object_add_child): if the ctor for the child isn't
6152         visible, error out even if it's the same type/kind as the
6153         property.
6155 2009-06-01  Jeffrey Stedfast  <fejj@novell.com>
6157         * deployment.cpp (Dispose): Properly chain up to
6158         DependencyObject::Dispose().
6160         * bitmapimage.cpp (Dispose): Fixed Dispose chaining.
6162         * brush.cpp (ImageBrush::Dispose): Chain up to
6163         TileBrush::Dispose() instead of EventObject::Dispose(). Fixes a
6164         crash in GlyphsManagedDRT
6166         * dependencyobject.cpp (WildcardListener): Uh, this needs to
6167         subclass Listener or we can't go around casting it to a Listener.
6168         (CallbackListener): Same.
6170 2009-06-01  Chris Toshok  <toshok@ximian.com>
6172         * runtime.cpp (Surface::EmitEventOnList): if the list is empty (or
6173         end_idx == 0) return early.
6175         * xaml.cpp (XamlLoader::HydrateFromString): turns out we only mark
6176         the toplevel object as hydrated if parser_info->hydrating == true.
6177         this fixes some managed parsing stuff since XamlReader.Load was
6178         using the same codepath (just passing NULL into
6179         XamlReader::HydrateFromString.)
6181 2009-05-29  Jeffrey Stedfast  <fejj@novell.com>
6183         * application.cpp (GetResourceAsPath): Fixed extra
6184         XXXXXX'age. CreateTempDir() already handles appending the XXXXXX's
6185         for us.
6187 2009-05-29  Alan McGovern  <amcgovern@novell.com>
6189         * control.cpp: When Control.Focus () is called, if the control itself
6190         is not focusable, we need to check it's visual children. The call will
6191         complete successfully if any of the children are focusable, and that
6192         child will become the focused element.
6194 2009-05-29  Alan McGovern  <amcgovern@novell.com>
6196         * control.cpp|h: If a control becomes disabled, it loses mouse capture
6197         and cannot regain it later. If CaptureMouse is called on a disabled
6198         control, the mouse is successfully captured and then immediately
6199         released which fires the LostMouseCapture event.
6201         * runtime.cpp|h: If control A captures the mouse, control B can't steal
6202         the capture or release the capture. Add an explicit ReleaseMouseCapture
6203         function to accomodate this behaviour.
6204         
6205         * uielement.cpp|h: Add an EmitLostMouseCapture event and a CanCaptureMouse
6206         function which signifies whether or not the current UIElement can keep the
6207         mouse captured.
6209 2009-05-28  Jeffrey Stedfast  <fejj@novell.com>
6211         * textbox.h (class PasswordBox): Marked PasswordProperty as
6212         AlwaysChange so that setting this property (even to the same
6213         value) will force a PasswordChanged event to be emitted.
6214         (class TextBox): Marked SelectedTextProperty as AlwaysChange to
6215         fix moon-unit test: SetIdenticalSelectedText()
6217         * textbox.cpp (PasswordBox::OnPropertyChanged): Removed debugging
6218         printfs for utf8->ucs4 conversion errors.
6220 2009-05-28  Jeffrey Stedfast  <fejj@novell.com>
6222         * textbox.h (class TextBox): Added the AlwaysChange metadata to
6223         SelectionStart/Length properties.
6225         * textbox.cpp (TextBoxBase::EmitSelectionChangedAsync): New method
6226         to asynchronously emit SelectionChanged events.
6227         (TextBoxBase::EmitTextChangedAsync): Same for TextChanged events.
6228         (TextBoxBase::SyncAndEmit): Asynchronously emit the events.
6229         (TextBox::EmitSelectionChanged): Simply emit the event now, don't
6230         bother updating state which is now handled elsewhere.
6231         (TextBox::EmitTextChanged): Same.
6232         (TextBox::OnPropertyChanged): When clamping the SelectionLength
6233         value due to a SelectionState property change, block events - we
6234         should only emit a single SelectionChanged event. Also modified to
6235         avoid emitting a TextBoxModelChanged event if the values didn't
6236         actually change. Same for SelectionLength changes.
6238 2009-05-28  Chris Toshok  <toshok@ximian.com>
6240         * value.h.in, value.cpp: add a copy assignment operator.
6242         * value.h: regen.
6244 2009-05-28  Alan McGovern  <amcgovern@novell.com>
6246         * control.cpp: When changing Control.IsEnabled, create the
6247         new value properly.
6249 2009-05-28  Alan McGovern  <amcgovern@novell.com>
6251         * animation.cpp: Fix a double free caused by the line
6252         converted = Value (*value);
6254 2009-05-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6256         * pipeline-ui.cpp: Protect against a null surface.
6258         * mediaelement.cpp: Get the surface from the deployment (which should
6259           always have a surface) instead of the media element's surface
6260           (which is not guaranteed to be set always).
6262 2009-05-28  Alan McGovern  <amcgovern@novell.com>
6264         * control.cpp|h: Control.IsEnabled propagates to its children
6265         when the control is Loaded.
6267 2009-05-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6269         * src.mdp: Updated.
6271 2009-05-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6273         * mms-downloader.cpp: Custom headers must be requested before
6274           opening the downloader.
6276 2009-05-28  Stephane Delcroix  <sdelcroix@novell.com>
6278         * multiscaleimage.h|cpp: replace the hash cache on uri by
6279         a set of qtree, one per subimage. This should speed stuffs
6280         a lot, as uri crating/parsing/hashing was taking up to 20%
6281         of msi time.
6283 2009-05-28  Stephane Delcroix  <sdelcroix@novell.com>
6285         * multiscalesubimage.h: GetId (). Get subimage id, used as
6286         cache index in msi.
6288 2009-05-28  Stephane Delcroix  <sdelcroix@novell.com>
6290         * multiscaleimage.cpp: qtree_new, qtree_lookup, qtree_destroy,
6291         qtree_insert, etc. The Q(uad)Tree data structure is a tree with
6292         4 child nodes, matching the tree-ish pyramid of MSI tiles.
6294 2009-05-28  Andreia Gaita  <avidigal@novel.com>
6296         * timeline.cpp: Stop the clock when you call Stop.
6298 2009-05-27  Jeffrey Stedfast  <fejj@novell.com>
6300         * textbox.cpp (TextBoxBase::SyncAndEmit): Now takes a sync_text
6301         argument which defaults to true. If not set, we avoid calling
6302         SyncText() even if emit has the TEXT_CHANGED bit set.
6303         (TextBox::OnPropertyChanged): Call SyncAndEmit() with sync_text =
6304         false if the value was just set to null.
6306 2009-05-27  Alan McGovern  <amcgovern@novell.com>
6308         * control.h:
6309         * control.cpp: Implement correct propagation of
6310           Control.IsEnabled. Children of disabled controls are
6311           disabled. When their parent is re-enabled, they go back to
6312           their previous state.
6314 2009-05-27  Jeffrey Stedfast  <fejj@novell.com>
6316         Fixes to make sure that an TextChanged and SelectionChanged events
6317         are emitted after each and every change to the Text/Selection
6318         properties occurs.
6320         * textbox.cpp (TextBoxBase::BatchPush): Call at the start of each
6321         batch operation. Prevents SyncAndEmit() from doing anything until
6322         all nested batch operations are completed.
6323         (TextBoxBase::BatchPop): Call at the end of each
6324         batch operation.
6325         (TextBoxBase::*): Instead of using inkeypress, use the more
6326         generic BatchPush()/Pop().
6327         (TextBox::OnPropertyChanged): Call SyncAndEmit() after
6328         Text/Selection changes.
6329         (PasswordBox::OnPropertyChanged): Same.
6331 2009-05-27  Geoff Norton  <gnorton@novell.com>
6333         * runtime.cpp|h: Support the splash progress/completed events.
6334         * cbinding.h:
6335         * type-generated.h: Regen
6337 2009-05-27  Jeffrey Stedfast  <fejj@novell.com>
6339         * textbox.cpp (TextBox::EmitSelectionChanged): Only emit the event
6340         if the TextBox is loaded and unset the emit state.
6341         (TextBox::EmitTextChanged): Same.
6343 2009-05-27  Geoff Norton  <gnorton@novell.com>
6345         * deployment.cpp|h: Allow reinitializing the appdomain if our
6346         Source has changed, or we're switching from the splash screen to
6347         the XAP.
6349 2009-05-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6351         * font.cpp:
6352         * textblock.cpp: Fix warnings.
6354 2009-05-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6356         * debug.h:
6357         * runtime.h|cpp: Add LOG_PIPELINE_EX and parse LOG_ASF correctly.
6359 2009-05-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6361         * textbox.cpp:
6362         * textblock.cpp:
6363         * pipeline.cpp:
6364         * mms-downloader.h:
6365         * mms-downloader.cpp:
6366         * internal-downloader.h:
6367         * file-downloader.h:
6368         * file-downloader.cpp:
6369         * pipeline-asf.cpp: Updated according to downloader API changes.
6371         * downloader.h:
6372         * downloader.cpp: Add support for retrieving response headers
6373           and disable caching. Initialize the downloader interface methods
6374           to their default/dummy methods statically.
6376         * value.h:
6377         * type.h:
6378         * type-generated.cpp:
6379         * cbinding.h:
6380         * cbinding.cpp: Regenerated.
6382 2009-05-27  Alan McGovern  <amcgovern@novell.com>
6384         * resources.cpp: Wait til AddedToCollection returns success
6385         before adding the item to the hashtable.
6387 2009-05-27  Alan McGovern  <amcgovern@novell.com>
6389         * resources.cpp: Propagate the error (if there is one) from
6390         Collection::AddWithError. If there is an error, clear the item
6391         from the hashtable before returning.
6393 2009-05-27  Alan McGovern  <amcgovern@novell.com>
6395         * control.h:
6396         * control.cpp:
6397         * dependencyproperty.g.cpp: Control.Enabled needs to be
6398           created in native code as it's required for hittesting. A
6399           disabled control and its visual children do not receive
6400           mouse events and are not visible to
6401           VisualTreeHelper.FindElementInHostCoordinates.
6403 2009-05-26  Jeffrey Stedfast  <fejj@novell.com>
6405         * glyphs.cpp (OnPropertyChanged): Set the font weight/slant based
6406         on the StyleSimulations value.
6407         (Layout): No longer need to pass along StyleSimulations to
6408         GetGlyphInfo().
6410         * font.cpp (style_weights): Added more style weight name mappings.
6411         (style_slants): Same.
6412         (FontFace::IsItalic): New method to query the font face to see if
6413         it is italic or not.
6414         (FontFace::IsBold): Same idea.
6415         (TextFont::TextFont): Now takes a TextFontDescription so that we
6416         can initialize the new 'simulate' member variable which tells us
6417         if we have to simulate bold or italics due to not finding a
6418         suitable font.
6419         (TextFont::GetGlyphInfo): No longer takes a StyleSimulations
6420         argument. Instead, it now uses the 'simulate' member variable to
6421         pass to FontFace::LoadGlyph().
6422         (TextFontDescription::CreatePattern): Always add Weight and Slant
6423         to the pattern now, even if it is the default font
6424         family. Silverlight 2.0 no longer restricts bold/italics to
6425         non-PUI.
6427 2009-05-26  Chris Toshok  <toshok@ximian.com>
6429         * xaml.cpp (XamlElementInstance::SetName): if it's a
6430         dependencyobject, add it to the container here.
6431         (XamlElementInstance::SetKey): same.
6432         (end_element_handler): only do the AddToParentContainer call here
6433         if the element is not a dependencyobject.
6435 2009-05-25  Jeffrey Stedfast  <fejj@novell.com>
6437         * glyphs.cpp: Changed 'style' to be unsigned.
6439 2009-05-25  Andreia Gaita  <avidigal@novel.com>
6441         * timeline.h|cpp (DispatcherTimer): reset the clock properly when
6442         restarting a dispatcher timer. also, rename Run to Restart.
6443         note: if a timer is not stopped or started during it's tick event,
6444         the time spent on the tick is counted for the next tick on the
6445         Restart method.
6447 2009-05-25  Chris Toshok  <toshok@ximian.com>
6449         * runtime.h|cpp (Surface::EmitError): add an overload so
6450         Application.cs can cause an error to be emitted on the surface.
6452         * cbinding.h|cpp: regen.
6454 2009-05-25  Andreia Gaita  <avidigal@novel.com>
6456         * border.cpp (OnPropertyChanged): Invalidate when background is
6457         updated
6459 2009-05-25  Chris Toshok  <toshok@ximian.com>
6461         * uielement.cpp (UIElement::GetTransformToUIElementWithError):
6462         this method fails incorrectly when you call it on the toplevel
6463         element of a surface.
6465 2009-05-25  Chris Toshok  <toshok@ximian.com>
6467         * xaml.cpp (class XNamespace): name conflicts are pseudo-allowed
6468         for separate resource dictionary name registration.  this isn't
6469         exactly right, since the name *should* be unregistered.
6471 2009-05-25  Chris Toshok  <toshok@ximian.com>
6473         * validators.cpp (Validators::TemplateValidator): this is causing
6474         DRT 438 to throw an exception and subsequently timeout.  its
6475         removal doesn't seem to break anything else, so ifdef it out with
6476         a comment.
6478 2009-05-25  Alan McGovern  <amcgovern@novell.com>
6480         * cbinding.cpp
6481         * cbinding.h: Regen
6483         * dependencyobject.cpp
6484         * dependencyproperty.cpp
6485         * dependencyproperty.g.cpp
6486         * dependencyproperty.h
6487         * uielement.h: There are two types of DependencyProperty. 
6488         Core properties and custom properties. Custom properties
6489         do not set the parent on a DO. This makes the old 
6490         'SetsParent' property redundant, so remove it.
6492 2009-05-22  Chris Toshok  <toshok@ximian.com>
6494         * xaml.cpp (XamlElementInstance::SetName): don't call
6495         AddToContainer here.  in case the element is a value type, and
6496         we're adding it to a RD on a managed type (like StackPanel), the
6497         managed xaml loader will marshal the value type to C# and we'll
6498         lose any further updates to the value typed object by the parser.
6499         That is, if we parse <Color x:Key="foo">#ffffff00</Color>, the
6500         ManagedXamlLoader will see a color with #00000000 as its value, as
6501         the content hasn't been parsed by the time we create the managed
6502         object.
6503         (XamlElementInstance::SetKey): same.
6504         (end_element_handler): call AddToParentContainer here instead.
6506 2009-05-22  Chris Toshok  <toshok@ximian.com>
6508         * dependencyobject.cpp (DependencyObject::OnPropertyChanged): we
6509         were missing the case where HydratedFromXaml elements weren't
6510         updating their parent namescope on name changes, only their
6511         private ones.  Adding the parent namescope fix fixes FaceMonkey's
6512         button grid.
6514 2009-05-22  Jackson Harper  <jackson@ximian.com>
6516         * xaml.h|cpp: New callback for registering elements in
6517         containers, we need to do this earlier on in the parse than
6518         setproperty because other elements could reference these elements
6519         before they've been set.
6520         
6521 2009-05-21  Alan McGovern  <amcgovern@novell.com>
6523         * src/cbinding.cpp
6524         * src/cbinding.h: regen
6525         
6526         * dependencyproperty.c:
6527         * dependencyproperty.h: We can either register a 'core' property or a
6528         'custom' property from managed code. Core properties are part of the
6529         framework itself, custom properties are user-created. Custom properties
6530         don't set the parent or register names in namescopes.
6531         
6532 2009-05-21  Stephane Delcroix  <sdelcroix@novell.com>
6534         * deepzoomimagetilesource.h:
6535         * deepzoomimagetilesource.cpp: IsParsed () function, so we know,
6536         without listening to the event, if a tilesource is ready to be
6537         consumed.
6538         * multiscaleimage.cpp: check dzits.IsParsed() before getting the tile
6539         size from a subimage source.
6541 2009-05-21  Larry Ewing  <lewing@novell.com>
6543         * multiscaleimage.cpp (RenderCollection): reoorder the max level
6544         test so that we only call get_tile_func once in that case.  Speeds
6545         up hardrock and the moment.
6547 2009-05-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6549         * debug.h: Added LOG_ASF.
6551 2009-05-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6553         * runtime.h: Don't use 64 bit constants for the runtime debug enum.
6555 2009-05-21  Alan McGovern  <amcgovern@novell.com>
6557         * src/cbinding.cpp
6558         * src/cbinding.h
6559         * src/dependencyproperty.g.cpp: regen
6560         
6561         * dependencyobject.cpp:
6562         * dependencyproperty.cpp:
6563         * dependencyproperty.h:
6564         * uielement.h: Add the ability to set a DP as non-parenting and
6565         apply it to FrameworkElement::TagProperty
6567 2009-05-20  Larry Ewing  <lewing@novell.com>
6569         * multiscaleimage.cpp (RenderCollection): fix bug introduced in
6570         earlier tile size fix.  Fixes covertocover.
6572 2009-05-20  Larry Ewing  <lewing@novell.com>
6574         * brush.cpp:
6575         * bitmapsource.cpp: when creating a cached surface use the group
6576         target type not the overall target.
6578 2009-05-20  Larry Ewing  <lewing@novell.com>
6580         * frameworkelement.cpp (ComputeActualSize): avoid making a
6581         IsLayoutContainer call here.
6583 2009-05-20  Stephane Delcroix  <sdelcroix@novell.com>
6585         * multiscaleimage.cpp: support different tile sizes for the collection
6586         and the individual images. Fixes "the moment" 2D.
6588 2009-05-20  Larry Ewing  <lewing@novell.com>
6590         * xaml.cpp: update the parser error numbers and strings to match 2.0.
6592 2009-05-20  Larry Ewing  <lewing@novell.com>
6594         * multiscaleimage.cpp: small change to avoid getting the property
6595         so often.
6597 2009-05-20  Alan McGovern  <amcgovern@novell.com>
6599         * type.h:
6600         * value.h:
6601         * value.h.in:
6602         * type-generated.cpp: Register 'float' as a known type
6604 2009-05-20  Chris Toshok  <toshok@ximian.com>
6606         * type.h.in: a few changes.  We no longer pass the kind name to
6607         the ctor, since nothing ever uses it, and the type name is enough.
6608         add both an interface array and array count to the Type ctor, as
6609         well as a is_interface bool.  Lastly, add IsAssignableFrom
6610         overloads.
6612         * dependencyobject.cpp (DependencyObject::IsValueValid): switch
6613         from using a direct comparison on Kinds to using
6614         Type::IsAssignableFrom.  this makes interfaces work.
6616         * cbinding.h, cbinding.cpp, type-generated.cpp, type.h: regen.
6618         * animation.cpp (AnimationClock::HookupStorage): instead of
6619         comparing kinds, use Type::IsAssignableFrom to see if we can
6620         animate the property using a particular timeline type.
6621         (DoubleAnimation::GetCurrentValue,
6622          DoubleAnimation::GetTargetValue, ColorAnimation::GetCurrentValue,
6623          ColorAnimation::GetTargetValue, PointAnimation::GetCurrentValue,
6624          PointAnimation::GetTargetValue): add code to deal with the start
6625          value not being the same type as the animation uses (this can
6626          happen if we're animating an interface property like
6627          IComparable.)  The start values in that case are 0.0, Point(0.0),
6628          and Color(0,0,0,0), respectively.
6630 2009-05-19  Larry Ewing  <lewing@novell.com>
6632         * collection.cpp: avoid some GetDeployment calls in looping cases.
6634 2009-05-19  Larry Ewing  <lewing@novell.com>
6636         * frameworkelement.cpp (UpdateLayout): clear the needs flags when
6637         we restart in case they we're properly cleared before.
6639 2009-05-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6641         * pipeline.cpp|h: Add an ExternalDecoder which takes a list of
6642         function pointers to call whenever the corresponding virtual method
6643         is called.
6645         * enums.h: Move enums from the pipeline here (makes it easier to 
6646         create c bindings for methods taking enums)
6648         * mp3.cpp:
6649         * pipeline-asf.cpp:
6650         * pipeline-ffmpeg.cpp: Update accccording to enum changes.
6652         * codec-version.h.in: Bump ABI version.
6654         * value.h:
6655         * cbinding.cpp|h:
6656         * type-generated.cpp: Regenerated.
6658 2009-05-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6660         * audio.cpp:
6661         * mediaplayer.cpp:
6662         * mp3.cpp:
6663         * pipeline-asf.cpp:
6664         * pipeline-ffmpeg.cpp:
6665         * pipeline.cpp|h: Add accessors for fields in VideoStream,
6666         AudioStream and MediaFrame.
6667         * cbinding.cpp|h: Regenerated.
6669 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6671         * cbinding.cpp|h: Regenerated.
6673 2009-05-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6675         * security.h: Include <mono/metadata/assembly.h>.
6676         Fixes a warning (and the build with MD).
6678 2009-05-19  Alan McGovern  <amcgovern@novell.com>
6680         * animation.cpp: Add some optimisations to ObjectKeyFrames.
6681           Don't call back into managed when the value is null or when
6682           the the value is already of the exact right kind. This will
6683           need to be reviewed once unmanaged code understands
6684           interfaces so we can fastpath interfaces too.
6686 2009-05-18  Larry Ewing  <lewing@novell.com>
6688         * dirty.cpp:
6689         * uielement.cpp:
6690         * frameworkelement.cpp: for the time being use the needs* flags on
6691         surface to skip the UpdateLayout logic when the tree is clean.
6692         Optimize a couple of the property reads inside the deep walk.
6693         
6694         * provider.cpp (GetPropertyValue): rework some more of the checks
6695         to remove some other remaining unneeded checks.
6697 2009-05-18  Chris Toshok  <toshok@ximian.com>
6699         * dependencyproperty.g.cpp (Types::RegisterNativeProperties):
6700         regen.
6702 2009-05-18  Larry Ewing  <lewing@novell.com>
6704         * bitmapsource.cpp (GetSurface): use the content type of the image
6705         when creating the native surface.
6707 2009-05-18  Larry Ewing  <lewing@novell.com>
6709         * provider.cpp (GetPropertyValue): reorder the framework element
6710         property lookup to avoid an extra type inquiry in a potentially
6711         common case.
6713 2009-05-18  Larry Ewing  <lewing@novell.com>
6715         * xaml.cpp (dependency_object_set_attributes): move the types
6716         lookup outside the loop.
6718 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6720         * cbinding.h|cpp: 
6721         * type.h: Regenerated.
6722         
6723         * application.h:
6724         * dependencyobject.h:
6725         * dependencyproperty.h:
6726         * downloader.h:
6727         * easing.h:
6728         * frameworkelement.h:
6729         * pipeline.h:
6730         * tilesource.h:
6731         * type.h: Sprinkle CBindingPrequisite around. Also use ints
6732         instead of Type::Kind values in function pointers.
6733         
6734 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6736         * window-gtk.h: Add a GetNativeWidget which returns a void 
6737         pointer instead of GtkWidget* so that we don't need to include
6738         gtk for the c bindings.
6740 2009-05-18  Alan McGovern  <amcgovern@novell.com>
6742         * contentcontrol.cpp: For contentcontrols, the applied
6743           template is only cleared if the old or new content is a
6744           UIElement (frameworkelement?). The fallback 'template' of a
6745           Grid + TextBlock is also reused every time.
6747 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6749         * utils.h: Use c++-style structs to please the generator.
6751 2009-05-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6753         * window-gtk.h: Add a GetNativeWidget which returns a void
6754         pointer instead of GtkWidget* so that we don't need to include
6755         gtk for the c bindings.
6756         * cbinding.h|cpp: Updated.
6758 2009-05-16  Chris Toshok  <toshok@ximian.com>
6760         * xaml.cpp (flush_char_data): verbatim mode cdata still needs to
6761         be g_strstrip'ed, but we can't do it until right before we use it,
6762         so we do it here.
6764 2009-05-16  Chris Toshok  <toshok@ximian.com>
6766         * xaml.cpp (XamlElementInfo::SetIsCDataVerbatim,
6767         XamlElementInfo::IsCDataVerbatim): new methods to set and get a
6768         flag telling the cdata_handler to not collapse/remove
6769         whitespace. <clr:String> requires this.
6770         (PrimitiveNamespace::FindElement): for the "String" case, call
6771         XamlElementInfo::SetIsCDataVerbatim(true).
6772         (char_data_handler): if the current element IsCDataVerbatim, just
6773         append the input string and return.
6775 2009-05-16  Alan McGovern  <amcgovern@novell.com>
6777         * security.c: Bump the security env var to _04
6779 2009-05-16  Alan McGovern  <amcgovern@novell.com>
6781         * cbinding.h:
6782         * animation.h:
6783         * cbinding.cpp:
6784         * animation.cpp:
6785         * application.h:
6786         * application.cpp:
6787         * dependencyproperty.g.cpp: Add type converting to
6788           ObjectKeyFrame. The conversion is done during the Resolve
6789           phase. If the type conversion can't be completed an
6790           exception is thrown.
6792 2009-05-15  Chris Toshok  <toshok@ximian.com>
6794         * dependencyobject.cpp (DependencyObject::RegisterAllNamesRootedAt):
6795         in the hydrated case we still need to register our name.
6796         (DependencyObject::ProviderValueChanged): don't swallow the error
6797         when we SetParent on the new_as_dep.
6798         (DependencyObject::SetParent): if we're adding a Hydrated
6799         element (i.e. one that was loaded using LoadComponent), we need to
6800         register its name into the parent namescope.  Also, move the
6801         quickest check to the top so we don't do the family check on every
6802         SetParent call if the before/after parent are the same.  Lastly,
6803         we only register names if the current parent is NULL.  That is, if
6804         a named brush is a property on an element already, and its name is
6805         registered, we don't register it in the new namescope when it's
6806         set as a property on a second element.  Odd but it matches SL
6807         behavior.
6808         (DependencyObject::FindName): no longer walk up the namescope
6809         hierarchy, and don't look up things in the toplevel's namescope
6810         either.
6812         * dependencyobject.h (class DependencyObject): add
6813         SetIsHydratedFromXaml/IsHydratedFromXaml, used by the parser.
6815         * xaml.cpp (XamlLoader::HydrateFromString): flag the resulting
6816         object as being hydrated.
6817         (everywhere): we don't need GetParentNamescope for anything.  we
6818         always use the toplevel namescope of the subtree the parser is
6819         currently parsing.
6821         * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
6822         don't pass a null error to ProviderValueChanged.
6823         
6824 2009-05-15  Larry Ewing  <lewing@novell.com>
6826         * frameworkelement.cpp (UpdateLayout): just warn if the element is
6827         loaded don't skip it for now since it causes regressions in the
6828         control tests.
6830 2009-05-15  Chris Toshok  <toshok@ximian.com>
6832         * timeline.cpp (ParallelTimeline::GetNaturalDurationCore): tiny
6833         change that gets automatic storyboards with zero length children
6834         to have a zero length themselves.
6836 2009-05-15  Larry Ewing  <lewing@novell.com>
6838         * grid.cpp (OnCollectionItemChanged): invalidate on column
6839         definition changes.
6841 2009-05-15  Larry Ewing  <lewing@novell.com>
6843         * debug.h (LOG_LAYOUT): use printf.
6845         * mediaelement.cpp (ArrangeOverride): remove layout debug spew.
6847         * frameworkelement.cpp: reorder the updated_list and clean up some
6848         debug spew.
6850         * uielement.cpp (PostSubtreeLoad): we can't guard against emitting
6851         loaded here since it will break delayed queuing of loaded events
6852         when the tree is modified inside the event handler.  Improves
6854 2009-05-15  Jackson Harper  <jackson@ximian.com>
6856         * xaml.cpp: Use the property element's type instead of parsing out
6857         the name, this fixes setting propertys of imported managed types.
6859 2009-05-15  Alan McGovern  <amcgovern@novell.com>
6861         * animation.h:
6862         * dependencyproperty.g.cpp: The Keyframes property of
6863           ObjectAnimationUsingKeyframes needs to be autogenerated.
6865 2009-05-15  Alan McGovern  <amcgovern@novell.com>
6867         * type-generated.cpp:
6868         * frameworkelement.h: Properly handle exceptions when updating
6869           the source in a 2 way binding. Raise the
6870           BindingValidationError event in the right place.
6872 2009-05-14  Jackson Harper  <jackson@ximian.com>
6874         * xaml.cpp: Pass the item's xmlns when setting unknown attributes.
6876 2009-05-14  Larry Ewing  <lewing@novell.com>
6878         * xaml.cpp (lookup_named_item): make this nonrecursive.
6880 2009-05-14  Jeffrey Stedfast  <fejj@novell.com>
6882         * frameworkelement.cpp (OnPropertyChanged): Do a
6883         FullInvalidate(true) when the Horizontal or Vertical Alignment
6884         properties change.
6886 2009-05-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6888         * dependencyobject.cpp: unref: only try to delete
6889         us if we had a 0 refcount after decrementing refcount.
6890         Also use an atomic fetch when checking if the object
6891         was resurrected.
6893 2009-05-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6895         * dependencyobject.cpp: when printing stack traces
6896         first get all the lines to print, then print them.
6897         This way it's a lot less probable to get other lines
6898         in between when printing stacktraces from multiple threads.
6900 2009-05-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6902         * dependencyobject.cpp: Print typename for object creation
6903         too, now that we don't have to call a virtual method to 
6904         get the type.
6906 2009-05-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6908         * timesource.h: G_PRIORITY_IDLE doesn't exist, use
6909         G_PRIORITY_HIGH_IDLE.
6911 2009-05-13  Chris Toshok  <toshok@ximian.com>
6913         * xaml.cpp (class XamlContextInternal): allow for a parent context
6914         so that we can track context's (and resources) across multiple
6915         template instantiations.
6916         (create_resource_list): just stuff the FrameworkElement on the
6917         list and leave the GetValue(UIElement::Resources) for when we look
6918         up the actual resource.
6919         (end_element_handler): when creating a new XamlContext pass in our
6920         current XamlContext.
6921         (XamlContextInternal::LookupNamedItem): handle both changes (FWE
6922         in our resources list, and parent context chaining.)
6924 2009-05-13  Jackson Harper  <jackson@ximian.com>
6926         * xaml.cpp: We need to dup the top_element since this can be
6927         deleted elsewhere.
6929 2009-05-13  Chris Toshok  <toshok@ximian.com>
6931         * clock.cpp (Clock::UpdateFromParentTime): for instantaneous
6932         clocks (those with Duration=00:00:00) we weren't emitting
6933         completed (or switching to Fill/Stop).
6935 2009-05-13  Jackson Harper  <jackson@ximian.com>
6937         * xaml.h|cpp: use a Value* for top level objects, this lets us get
6938         rid of the gchandle hack in the managed xaml loader for non DOB
6939         top level objects.
6941 2009-05-13  Larry Ewing  <lewing@novell.com>
6943         * canvas.cpp: make IsLayoutContainer nonrecursive using
6944         DeepTreeWalker.
6945         
6946         * frameworkelement.cpp:
6947         * uielement.cpp, uielement.h:
6948         * panel.h: 
6949         * shape.cpp: start reworking the container layout logic to avoid
6950         expensive calls.
6952         * collection.cpp: don't ref elements inside DeepTreeWalker use
6953         UnsafeUIElementNode instead.
6954         
6955         * dirty.cpp (UpdateLayout): remove some dead code.
6957 2009-05-13  Alan McGovern  <amcgovern@novell.com>
6959         * value.cpp: Ensure we don't explode when checking null uris
6961 2009-05-13  Alan McGovern  <amcgovern@novell.com>
6963         * validators.cpp: If StyleProperty has a value and it is
6964           'null', that is allowed to be replaced.
6966 2009-05-12  Chris Toshok  <toshok@ximian.com>
6968         * timeline.cpp (DispatcherTimer::Start): when resetting the clock
6969         we need to make sure to reset the root parent time, or else the
6970         timer will tick immediately when started (if it's previously hit
6971         its tick).
6973 2009-05-12  Larry Ewing  <lewing@novell.com>
6975         * collection.cpp, collection.h: Add a SkipBranch method to avoid
6976         computing walking into the tree when we can.
6978         * frameworkelement.cpp (UpdateLayout): Use the new skip branch
6979         logic in deeptreewalker to avoid invisible elements.
6981 2009-05-12  Larry Ewing  <lewing@novell.com>
6983         * frameworkelement.cpp (UpdateLayout): revert the visibility change
6984         for now.
6986 2009-05-12  Larry Ewing  <lewing@novell.com>
6988         * frameworkelement.cpp (ComputeBounds): make sure the bounds are
6989         the size of the full element, and skip elements based on the
6990         actual visibility setting not the computed one.
6992 2009-05-12  Jeffrey Stedfast  <fejj@novell.com>
6994         * textbox.cpp (InvalidateCursor): New helper method which applies
6995         the absolute transform to the cursor before invalidating the
6996         cursor's region.
6997         (ShowCursor): Use InvalidateCursor().
6998         (HideCursor): Same.
6999         (UpdateCursor): Here too.
7001 2009-05-12  Jeffrey Stedfast  <fejj@novell.com>
7003         * textbox.cpp (OnKeyDown): Need to set the handled flag on the
7004         routed event args in the case where the key event is handled by
7005         GtkIMContext too.
7006         (OnKeyUp): Set the handled flag in both cases here.
7008 2009-05-11  Alan McGovern  <amcgovern@novell.com>
7010         * control.h:
7011         * control.cpp:
7012         * contentcontrol.cpp: Recommit r133738 as it's not causing the
7013           timeouts.
7015 2009-05-09  Andreia Gaita  <avidigal@novell.com>
7017         * uielement.h: Add GenerateJSBinding annotation to 
7018         CaptureMouse, ReleaseMouseCapture and
7019         GetTransformToUIElementWithError (TransformToVisual)
7021 2009-05-09  Chris Toshok  <toshok@ximian.com>
7023         * eventargs.cpp (KeyEventArgs::IsModifier): reverse the sense of
7024         this check so we're buildable on SLED10.
7026 2009-05-08  Jeffrey Stedfast  <fejj@novell.com>
7028         * layout.cpp (layout_word_wrap): If we can't find a suitable place
7029         to wrap in the first time through the loop, make sure to respect
7030         the 'force' state the second time through.
7032         * application.cpp (GetResourceAsPath): Updated.
7034         * utils.cpp (CanonicalizeFilename): Now takes a 'lower' argument
7035         to specify whether the filename should be lowercased as it is
7036         canonicalized.
7037         (ExtractAll): The 'canon' argument has been renamed to 'lower'
7038         which more accurately reflects its purpose. Pass this on to
7039         CanonicalizeFilename().
7041 2009-05-08  Alan McGovern  <amcgovern@novell.com>
7043         * control.h:
7044         * control.cpp:
7045         * contentcontrol.cpp: Revert the changes in r133738 until I
7046           can figure out why the x86 bot doesn't like them. It's
7047           causing the extended controls tests to time out.
7049 2009-05-07  Alan McGovern  <amcgovern@novell.com>
7051         * control.h:
7052         * control.cpp:
7053         * contentcontrol.cpp: If the content property changes, the
7054           Template is cleared if it has already been applied.
7056 2009-05-07  Andreia Gaita  <avidigal@novell.com>
7058         * src/uielement.cpp (GetTransformToUIElementWithError): Don't fail if
7059         the to_element is the top level element.
7061 2009-05-06  Chris Toshok  <toshok@ximian.com>
7063         * xaml.cpp (dependency_object_set_attributes): we can't assume
7064         that a NULL value for @v means it hasn't been set, since {x:Null}
7065         could have been specified.  we need another flag to make it work.
7067 2009-05-06  Jeffrey Stedfast  <fejj@novell.com>
7069         * textbox.cpp (OnPropertyChanged): Guard against calling
7070         ResetIMContext in the middle of some keyboard input.
7072 2009-05-05  Chris Toshok  <toshok@ximian.com>
7074         * collection.cpp (Collection::InsertWithError): we need to make a
7075         further copy because the caller could remove the element in a
7076         handler, which causes us to delete the value (values aren't ref
7077         counted.)
7079 2009-05-05  Jeffrey Stedfast  <fejj@novell.com>
7081         * textbox.cpp (TextBoxBase::Initialize): Set use_preedit() to
7082         false since we're not rendering the preedit strings ourselves.
7083         (TextBoxBase::SetSurface): Update the GtkIMContext's client
7084         GdkWindow.
7085         (TextBoxView::UpdateCursor): Update the GtkIMContext's idea of
7086         where the cursor is at.
7088 2009-05-05  Alan McGovern  <amcgovern@novell.com>
7090         * xaml.cpp: If 'Key' hasn't been set, use 'Name'. Allows
7091           elements to be added to ResourceDictionarys in managed land.
7093 2009-05-05  Jeffrey Stedfast  <fejj@novell.com>
7095         * layout.cpp (Select): Fixed some selection logic.
7097         * textbox.cpp (TextBoxBase::Initialize): Create a new GtkIMContext
7098         and hook up some callbacks. Also init need_im_reset to false.
7099         (TextBoxBase::~TextBoxBase): Kill the IMContext.
7100         (TextBoxBase::OnKeyDown): Filter the event key through the
7101         IMContext. If it handles the key, don't do anything more.
7102         (TextBoxBase::DeleteSurrounding): New callback method for
7103         IMContext stuff.
7104         (TextBoxBase::RetrieveSurrounding): Same.
7105         (TextBoxBase::Commit): New IMContext callback method to commit the
7106         input-method chars into the TextBox.
7107         (TextBoxBase::ResetIMContext): New helper method to reset the
7108         IMContext.
7109         (TextBoxBase::OnFocusOut): Update GtkIMContext focus state.
7110         (TextBoxBase::OnFocusIn): Same.
7111         (TextBoxBase::OnPropertyChanged): If the IsReadOnly property state
7112         changes, update the GtkIMContext state accordingly. Same with the
7113         various Selection states and Text property.
7115         * eventargs.cpp (GetEvent): New method to get access to the
7116         original GdkEventKey event for use with GtkIMContext.
7118 2009-05-05  Alan McGovern  <amcgovern@novell.com>
7120         * geometry.h:
7121         * animation.h:
7122         * dependencyproperty.g.cpp: Back out the default value fix
7123           until the parser can be updated to handle this.
7125 2009-05-05  Alan McGovern  <amcgovern@novell.com>
7127         * geometry.h:
7128         * animation.h:
7129         * dependencyproperty.g.cpp: PathGeometry.Figures and
7130           ObjectAnimationUsingKeyframes.KeyFrames both need to be
7131           autogenerated. This allows them to pass their respective
7132           DefaultValues tests (when those tests are run).
7134 2009-05-05  Alan McGovern  <amcgovern@novell.com>
7136         * template.h: Remove the forward decls for TemplateBinding and
7137           XamlTemplateBinding as they don't exist in unmanaged anymore
7139 2009-05-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7141         * pipeline-ffmpeg.cpp: FfmpegDecoder: Chain Dispose.
7143 2009-05-04  Geoff Norton  <gnorton@novell.com>
7145         * codec-version.h.in: Bump
7146         * pipeline-ui.cpp: Bump because we no longer link libmoon in the codecs
7148 2009-05-04  Jeffrey Stedfast  <fejj@novell.com>
7150         * debug.cpp (Frame::ToString): fixed compile warning.
7152         * uielement.cpp (UpdateLayout): Need to return a bool here, we
7153         can't return void.
7155         * textbox.cpp (Blink): Set the deployment.
7157 2009-05-03  Chris Toshok  <toshok@ximian.com>
7159         * everywhere (NotifyListenersOfPropertyChange): add a MoonError
7160         arg here.
7161         
7162         * xaml.h|.cpp (class XamlContext): add GetTemplateBindingSource so we
7163         can hook up TemplateBindings in managed code.  Also, change all
7164         the loader callback types to take a loader pointer so we can get
7165         the context.
7167         * template.h|.cpp: remove all the lists of bindings, the
7168         two different template binding types (XamlTemplateBinding and
7169         TemplateBinding) and their respective List::Node containers.  all
7170         this is handled in managed land now, where it belongs.
7172         * dependencyproperty.h|.cpp: move
7173         PropertyChangedEventArgs to dependencyproperty.h, and unify the
7174         two types for property change handlers into simply
7175         PropertyChangeHandler.
7177         * dependencyobject.h: remove the PropertyChangedEventArgs struct
7178         from here, it now lives in dependencyproperty.h
7180         * dependencyobject.cpp (class CallbackListener): pass a MoonError
7181         to the callback.
7182         (DependencyObject::ProviderValueChanged): reuse the
7183         PropertyChangedEventArgs since property change callbacks take them
7184         now instead of splitting up the old_value/new_value/property.
7186         * control.cpp (Control::Control, Control::~Control,
7187         Control::ApplyTemplate): remove all reference to the list of
7188         bindings.
7190         * control.h (class Control): remove the list of bindings.
7192         * cbinding.h|.cpp, type-generated.cpp, type.h, value.h:
7193         regen.
7195 2009-05-03  Jeffrey Stedfast  <fejj@novell.com>
7197         * runtime.h (InMainThread): check main_thread_inited.
7199         * runtime.cpp: All flags variables are now 32bit. Split _EX flags
7200         into a second debug_flags_ex. Also added a new bool var to keep
7201         track of whether or not main_thread has been initialized since we
7202         can't necessary compare against NULL.
7204         * debug.h: Updated.
7206 2009-05-03  Jeffrey Stedfast  <fejj@novell.com>
7208         * debug.cpp: #include <unistd.h>
7210         * *.h: Don't #include stdint.h or unistd.h (only cpp files should
7211         include unistd.h).
7213 2009-05-02  Jeffrey Stedfast  <fejj@novell.com>
7215         * downloader.h: 
7216         * runtime.h:
7217         * color.h:
7218         * clock.h:
7219         * geometry.h:
7220         * value.h[.in]: Don't include stdint.h
7222 2009-05-01  Jackson Harper  <jackson@ximian.com>
7224         * xaml.cpp: Handle the {} escape sequence. (Managed code will have to
7225         handle this also).
7227 2009-05-01  Larry Ewing  <lewing@novell.com>
7229         * collection.cpp: rework the sorting invalidation logic so that we
7230         don't do it quite as often.
7232 2009-05-01  Larry Ewing  <lewing@novell.com>
7234         * collection.h:
7235         * collection.cpp: cache the deployment more and add a
7236         VisualTreeWalker interface to help with that.
7238 2009-05-01  Larry Ewing  <lewing@novell.com>
7240         * type.h:
7241         * type.in.h:
7242         * type.cpp: Move the IsSubclassOrSuperclassOf logic into types and
7243         add a static version that handles looking up the deploy for us.
7245         * value.h
7246         * value.h.in
7247         * value.cpp: Make it possible to use a cached deployment when
7248         retriving values using the ::As* methods and calling 
7249         Types::IsSubclassOrSuperclassOf.
7251         * style.cpp: when sealing the style use the cached deployment logic.
7253 2009-05-01  Larry Ewing  <lewing@novell.com>
7254         
7255         * dependencyobject.h:
7256         * xaml.cpp: use types more directly in a few more places to reduce
7257         calls to Deployment::GetCurrent even more.
7259 2009-05-01  Jackson Harper  <jackson@ximian.com>
7261         * validators.cpp|h:
7262         * dependencyobject.cpp|h: Move the name validation check to a
7263         validator (phase one of moving NameProperty to frameworkelement).
7264         * dependencyproperty.g.cpp: regen
7265         
7266 2009-05-01  Jackson Harper  <jackson@ximian.com>
7268         * type.h.in:
7269         * value.h.in: Sync with their .h's
7271 2009-04-30  Jackson Harper  <jackson@ximian.com>
7273         * xaml.cpp: Use the type system for detecting if we should be in
7274         buffering mode, anything that is a FrameworkTemplate
7275         should be buffered.  This fixes custom types that inherit from
7276         DataTemplate not getting buffered properly.
7278 2009-04-30  Jackson Harper  <jackson@ximian.com>
7280         * xaml.cpp: We need to pass the object to GetPropertyName because
7281         non DOB objects can have content properties now.
7283 2009-04-30  Jackson Harper  <jackson@ximian.com>
7285         * xaml.cpp: Don't require a content property name when we are
7286         trying to set a managed content property.  This could be the
7287         content of a managed collection.
7289 2009-04-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7291         * bitmapimage.cpp: Make sure we clean up any previous
7292           downloaders when we create new ones.
7294 2009-04-29  Larry Ewing  <lewing@novell.com>
7296         * frameworkelement.cpp:
7297         * uielement.cpp (DoMeasure): reorder some calls to improve speed
7298         until the new logic lands.
7300 2009-04-29  Larry Ewing  <lewing@novell.com>
7302         * value.h (checked_get_subclass): use IsSubclassOrSuperclassOf to
7303         reduce Deployment::GetCurrent calls.
7305         * type.h:
7306         * type.cpp: add IsSubclassOrSuperclassOf so that we can use it it
7307         for value checking.
7309 2009-04-29  Larry Ewing  <lewing@novell.com>
7311         * xaml.cpp:
7312         * dependencyobject.cpp: reuse types to reduce calls to
7313         Deployment::GetCurrent ().
7315 2009-04-29  Alan McGovern  <alan.mcgovern@gmail.com>
7317         * popup.cpp: Forgot to call the base Dispose method.
7319 2009-04-29  Geoff Norton  <gnorton@novell.com>
7321         * debug.cpp: Not everyone in the world is 32-bit intel.
7323 2009-04-29  Jeffrey Stedfast  <fejj@novell.com>
7325         * textblock.cpp (SetTextInternal): Protect everything from
7326         reentrancy and never replace the autocreated InlineCollection with
7327         a newly allocated one. Instead, Clear() the old one and add the
7328         new Run.
7329         (OnCollectionChanged): If !setvalue, then it means we are updating
7330         stuff elsewhere. Avoid causing reentrancy. Also simplified a bit.
7332 2009-04-29  Andreia Gaita  <avidigal@novell.com>
7334         * dependencyobject.cpp: Add MOONLIGHT_OBJECT_TRACK_VISI for outputting
7335         parseable stacktraces for later visualization
7337 2009-04-29  Andreia Gaita  <avidigal@novell.com>
7339         * debug.[cpp|h]: Add libunwind-backed output for tracing ref/unref
7340         calls in a nice way, for later parsing and visualization.
7342 2009-04-29  Geoff Norton  <gnorton@novell.com>
7344         * pipeline-ui.cpp|h: If the codec download ends prematurely, dlopen
7345         nicely crashes on a incomplete .so (thanks).  As such we're going to 
7346         sha1 the expected binary before blindly installing it to gatekeep
7347         against this.
7349 2009-04-29  Jeffrey Stedfast  <fejj@novell.com>
7351         Fixes some cursor position/selection bugs
7353         * layout.cpp (TextLayoutLine): Initialize a new member variable
7354         'count' to 0.
7355         (Layout): Update line->count (needed for the reworking of
7356         GetCursor) and line->length (which was the case of the bugs)
7357         variables as we go. Switch to doing this for run->length too.
7358         (GetCursor): Reworked a bit to use character indexes to help us
7359         find the correct cursor position rather than using byte offsets
7360         which were more awkward.
7362 2009-04-29  Alan McGovern  <amcgovern@novell.com>
7364         * popup.h:
7365         * popup.cpp: Remove the attached layer correctly when the
7366           surface is being nulled on a Popup. 
7368 2009-04-29  Geoff Norton  <gnorton@novell.com>
7370         * style.cpp:
7371         * provider.cpp: GetIterator returns a ref'd iter, we need to delete
7372         it when we're done to clean it up.
7373         * dependencyproperty.g.cpp: You raise me up.
7374         * deployment.cpp|h: Deployment has a cyclic reference to things 
7375         stored in it (AssemblyParts, NameScope), we need to break this cycle
7376         in our disposer so they can be properly cleand up.
7377         * xaml.cpp: If we create a new collection, and set the collection as
7378         some objects value, it will have a refcount of 2.  We need to unref
7379         the collection once we've handed it off.
7381 2009-04-28  Geoff Norton  <gnorton@novell.com>
7383         * popup.cpp: We cannot access this local value here since its been
7384         cleared in our dispose call.
7386 2009-04-28  Geoff Norton  <gnorton@novell.com>
7388         * deployment.cpp: Now that we properly shut down the clocks and 
7389         media threads, we can finalize the domain here instead of pumping
7390         the GC.
7392 2009-04-28  Chris Toshok  <toshok@ximian.com>
7394         * dirty.cpp (Surface::UpdateLayout): quiet g++ about taking the
7395         address of a temporary.
7397 2009-04-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7399         * audio.h:
7400         * audio.cpp: When looping over playing nodes, don't include
7401           nodes in the Waiting state.
7403         * audio-alsa.cpp: when Played, update the poll list. The state
7404           might not actually have changed if only the Waiting flag was
7405           switched.
7407 2009-04-28  Larry Ewing  <lewing@novell.com>
7409         * uielement.cpp
7410         * uielement.h:
7411         * dirty.cpp:
7412         * runtime.cpp:
7413         * runtime.h:
7414         * frameworkelement.h:
7415         * frameworkelement.cpp: add FrameworkProvider for actual*
7416         values.  Rework layout using the actual* values and add a first
7417         pass at looping layout.
7419         * collection.cpp:
7420         * collection.h: Add a deep tree walker that allows you to walk the
7421         entire tree without recursing.
7422         
7423         * media.cpp:
7424         * media.h:
7425         * shape.cpp:
7426         * shape.h:
7427         * canvas.h:
7428         * canvas.cpp: rework layout logic for the new providers and handle
7429         more of the corner cases.
7431         * textblock.h:
7432         * textblock.cpp: Remove the old Actual* provider since we use the
7433         generic one now.  Go a bit crazy with Invalidations until they can
7434         be reworked.
7436         * eventargs.cpp: stop using IsAnythingDirty.
7437         
7438 2009-04-28  Larry Ewing  <lewing@novell.com>
7440         * dependencyobject.cpp:
7441         * mediaelement.cpp:
7442         * mediaplayer.cpp:
7443         * textbox.cpp:
7444         * timesource.cpp:
7445         * timesource.h: rework the priority of our event queue so that
7446         we end up being more responsive to input and give the browser a
7447         chance to do things like repaint.
7449 2009-04-28  Jackson Harper  <jackson@ximian.com>
7451         * xaml.cpp: Don't allow x:Class on non top level elements.
7453 2009-04-28  Jackson Harper  <jackson@ximian.com>
7455         * dependencyproperty.cpp: When resolving property paths if we
7456         don't have enough info to lookup the correct managed type we just
7457         verify that the current lookup object has the correct type name,
7458         excluding namespace.
7460 2009-04-28  Alan McGovern  <amcgovern@novell.com>
7462         * cbinding.h:
7463         * cbinding.cpp:
7464         * contentcontrol.h:
7465         * contentcontrol.cpp: Add the ability to stop ContentControl
7466           from automatically setting the LogicalParent when a
7467           FrameworkElement is added as the Content.
7469 2009-04-27  Jackson Harper  <jackson@ximian.com>
7471         * value.cpp: property path's have expanded paths that need to be
7472         copied, freed, ect now.
7473         * propertypath.h: Add an expanded path to the property path, this
7474         is a path with managed types marked with namespaces expanded into
7475         full names. So 'moon:MyType' becomes something like
7476         'MoonNamespace.MyType'.
7477         * dependencyproperty.cpp: If an expanded path is available use
7478         that for property path parsing.  Also added support for the ' mark
7479         for escaping full type names (otherwise full names could not have
7480         '.'s). The ' can only be used in expanded paths.
7481         * xaml.cpp: When parsing property paths expand out managed
7482         namespaces if possible.
7484 2009-04-27  Geoff Norton  <gnorton@novell.com>
7486         * value.cpp: Its possible for these pointers to be 0x0 here, so
7487         we need to guard against a invalid dereference causing a SIGSEGV
7488         fixes moon-unit with toggleref on.
7490 2009-04-27  Geoff Norton  <gnorton@novell.com>
7492         * codec-url.h, pipeline-ui.cpp: Update for 1.9p1
7494 2009-04-24  Chris Toshok  <toshok@ximian.com>
7496         It turns out the granularity of overriding in styles is at the
7497         setter level, not the style level.  so if you have a local style
7498         with a setter for Background, it doesn't overwrite the default
7499         style setters for, say, Foreground.  We handle this by having two
7500         style providers, with the local style provider overriding the
7501         default style provider.
7502         
7503         * frameworkelement.cpp (FrameworkElement::FrameworkElement):
7504         initialize both of the style providers (at both LocalStyle and
7505         DefaultStyle levels.)
7506         (FrameworkElement::OnPropertyChanged): call ApplyStyle on the new
7507         style (so that values are converted in managed-land), and seal it
7508         at the local style level.
7509         (FrameworkElement::SetDefaultStyle): same blob here, but seal it
7510         at the default style level.
7512         * dependencyobject.cpp (DependencyObject::Initialize): pass
7513         precedences to the providers in their ctors, and also don't
7514         initialize a style provider here.  This saves us from having a
7515         style provider on anything except frameworkelement subclasses.
7517         * mediaelement.h|.cpp, textbox.cpp, textblock.cpp: add the
7518         precedence ctor arg to property value providers.
7520         * provider.h: provider ctors now take both an object and a
7521         precedence level.  that way they know what precedence level to
7522         notify changes on (this is mostly for the style provider, but it
7523         moves all the precedence level logic to the spot where we create
7524         the provider, not in the provider code itself.)
7526         * provider.cpp: add all the precedence ctor args.
7527         (StylePropertyValueProvider::SealStyle): call ProviderValueChanged
7528         with the precedence we were initialized with.
7529         (AutoCreatePropertyValueProvider::GetPropertyValue): same.
7530         
7531 2009-04-24  Alan McGovern  <amcgovern@novell.com>
7533         * runtime.cpp: When a layer is being detached, don't try to
7534           invalidate its bounds if the active window has already been
7535           torn down. Fixes the case where a popup is open while the
7536           window is being torn down.
7538 2009-04-24  Alan McGovern  <amcgovern@novell.com>
7540         * popup.h:
7541         * popup.cpp: When the popup is detached from the surface, it
7542           should automatically close if it is open.
7544 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
7546         * layout.cpp (Layout): Silverlight 2.0 no longer starts plotting
7547         lwsp after going beyond the width constraint. Fixes the
7548         tests in the far right in MS DRT 206.
7550 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
7552         * font.cpp (GetGlyphInfo): Don't special-case
7553         ZeroWidthNonBreakingSpace anymore. Rely on the font for this
7554         glyph. That seems to be what SL2 does now...
7556         * layout.cpp (layout_word_wrap): Fixed logic for word-joiners and
7557         implemenetd a forced-wrap if we can't find a suitable place to
7558         wrap.
7560 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
7562         * layout.cpp (layout_word_wrap): Don't treat special numeric
7563         punctuation as the start of a numeric word until we see what lays
7564         beyond it.
7566 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
7568         * layout.cpp (layout_word_wrap): Don't ignore Zero-Width spaces
7569         anymore, that was a 1.0-thing and can no longer be used. Also
7570         added support for non-breaking-glue classes as well as rules for
7571         breaking on combining-marks, open-punctuation, contingents,
7572         quotations, prefixes, and words starting with an infix.
7574 2009-04-23  Chris Toshok  <toshok@ximian.com>
7576         * animation.cpp|.h, clock.cpp|.h: remove
7577         OnSurfaceAttach/OnSurfaceDetach.  They're no longer used.
7579 2009-04-23  Chris Toshok  <toshok@ximian.com>
7581         * clock.cpp (ClockGroup::UpdateFromParentTime): cache the current
7582         clock state and use that to tell whether to update the child
7583         clocks on this tick.  Clock::UpdateFromParentTime will change it
7584         out from under us, and child clocks won't get updated the last
7585         time when we switch to Filling or Stopped.
7587 2009-04-23  Chris Toshok  <toshok@ximian.com>
7589         * animation.cpp (Animation::AllocateClock): remove the name
7590         setting from here, since it only works here if the target/property
7591         were set on the animation itself.
7592         (AnimationClock::HookupStorage): and move it here, when we know
7593         both the target and property.
7595         * multiscaleimage.cpp (MultiScaleImage::SetViewportWidth): use
7596         Class::Event instead of instance->Event.  also set the name of the
7597         storyboard in debug mode.
7598         (MultiScaleImage::SetViewportOrigin): same.
7599         (motion_finished): make static.
7601 2009-04-23  Chris Toshok  <toshok@ximian.com>
7603         * clock.cpp (ClockGroup::UpdateFromParentTime): only tick child
7604         clocks (not clockgroups, mind you) if we're active and not paused.
7605         Fixes animations reverting in lutz's deep zoom demo.
7607 2009-04-23  Jeffrey Stedfast  <fejj@novell.com>
7609         Lots of fixage for MS DRT #209
7611         * layout.cpp (layout_word_wrap): Fixed for inseparables,
7612         exclamations, ambiguous, and postfix. Also removed the
7613         glyph->index == 0 hack that was there for Silverlight 1.0
7615 2009-04-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7617         * dependencyobject.h:
7618         * dependencyobject.cpp: Add a way to mark allow objects to be
7619           deleted on any thread, not just the main thread.
7621         * pipeline.cpp: MediaClosures can be deleted on any thread.
7623 2009-04-22  Jeffrey Stedfast  <fejj@novell.com>
7625         * layout.cpp (layout_word_wrap): Add a bit more logic for infix
7626         separators. Finishes off MSDRT 208.
7628 2009-04-22  Chris Toshok  <toshok@ximian.com>
7630         * xaml.cpp (value_from_str): permit empty int32's (they're 0).
7631         add comment about empty doubles.
7633 2009-04-22  Chris Toshok  <toshok@ximian.com>
7635         * xaml.cpp (dependency_object_add_child): guard against adding an
7636         empty Value to a resource dictionary.  this happen when you have
7637         no content on a primitive type (<sys:Bool></sys:Bool>) and
7638         value_from_str can't deal with parsing an empty string.
7639         (value_from_str): for non-object/non-string types, we need to
7640         strip leading/trailing whitespace before attempting to parse. this
7641         allows things like: <sys:Bool> true </sys:Bool>
7642         (class XamlElementInstanceValueType): for empty elements the value
7643         will have never been set.  try to set it here using an empty
7644         string.
7646 2009-04-22  Jeffrey Stedfast  <fejj@novell.com>
7648         * textbox.cpp (OnPropertyChanged): Clamp our SelectionStart and
7649         SelectionLength values as they come in. Apparently this is what
7650         Silverlight does too.
7652 2009-04-22  Chris Toshok  <toshok@ximian.com>
7654         * clock.h|cpp (Clock::UpdateFromParentTime): returns a bool now,
7655         with true meaning "i need another tick."
7656         (ClockGroup::UpdateFromParentTime): same.
7658         * timeline.cpp (DispatcherTimer::Start): use the timemanager to
7659         add the clock.
7660         (DispatcherTimer::Run): use the root_clock's parent clock here to
7661         simplify the code a bit.
7662         (DispatcherTimer::~DispatcherTimer): same.
7664         * animation.cpp (Storyboard::BeginWithError): simplify this a bit.
7665         we don't care about groups, just add it to the deployment's
7666         timemanager.
7668         * timemanager.h|cpp (class RootClockGroup): new class to represent
7669         the root clock group created by a time manager to house all other
7670         clocks in a surface.  It has slightly different behavior from a
7671         noprmal clock group, particularly wrt putting the timemanager to
7672         sleep.
7673         (TimeManager::TimeManager): create a RootClockGroup.
7674         (TimeManager::RemoveTickCall): if we're putting the time manager
7675         to sleep, check to see if this was the last tick call, and clear
7676         the flag (and stop the source if the flags are now empty).
7677         (TimeManager::NeedRedraw): now that clock smoothing isn't used,
7678         source->SetTimerFrequency() can't be called with whatever timeout
7679         we like and have it migrrate back to the user-specified time.  so
7680         change 0 to current_time.
7681         (TimeManager::NeedClockTick): same.
7682         (TimeManager::AddTickCall): same.
7683         (TimeManager::SourceTick): remove the #if'ed out version with
7684         clock smoothing, and add back in the stuff to put the time manager
7685         to sleep (currently ifdef'ed out still)
7686         (TimeManager::AddClock): move the logic to delay the root clock
7687         group here out of Storyboard::Begin.  This is because we also want
7688         to do this with DispatcherTimers as well.  Given that there is no
7689         TimeManager::GetRootClock anymore, this is the only api to add
7690         child clocks.
7692 2009-04-22  Jeffrey Stedfast  <fejj@novell.com>
7694         * layout.cpp (utf8_getc): When inptr goes beyond bounds, update
7695         the 'in' ptr to inend.
7697         * utils.cpp (CanonicalizeFilename): Fixed some undefined behavior.
7699 2009-04-22  Rusty Howell  <rhowell@novell.com>
7701         * building libmoonxpi for the FF plugin
7703 2009-04-21  Chris Toshok  <toshok@ximian.com>
7705         * provider.cpp:
7706         (InheritedPropertyValueProvider::GetPropertyValue): gross changes,
7707         but hopefully worth the hotspot reduction.  do fast checks to see
7708         if we're even dealing with a property that's inheritable first.
7709         cache the Types* pointer instead of indirectly fetching it
7710         repeatedly (thanks to calling EO::Is - call Types::IsSubclassOf
7711         directly instead.)
7713 2009-04-21  Jeffrey Stedfast  <fejj@novell.com>
7715         * glyphs.cpp (Layout): Fixed scaling calculation.
7717         * layout.cpp (Layout): Merged LayoutWrapWithOverflow, LayoutNoWrap
7718         and LayoutWrap. The different word-wrapping behaviors are, as
7719         before, handled in different subroutines but the outer loops are
7720         all now merged.
7722 2009-04-20  Jeffrey Stedfast  <fejj@novell.com>
7724         * textblock.cpp (SetTextInternal): Don't break the string into
7725         multiple inlines, Silverlight shoves the entire string into a
7726         single Run no matter what.
7727         (GetTextInternal): Map LineBreaks to the Unicode LineSeparator
7728         character instead of \n to match Silverlight behavior.
7730         * layout.cpp: Fixed various loops and checks to properly handle
7731         any type of unicode line-breaking character.
7733 2009-04-21  Alan McGovern  <amcgovern@novell.com>
7735         * collection.h: HitTestCollection should override
7736           RemovedFromCollection the same way it overrides
7737           AddedToCollection so that items added/removed from the
7738           collection are not reparented.
7740 2009-04-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7742         * deepzoomimagetilesource.cpp: Fix a crash in MS DRT #545.
7744 2009-04-20  Chris Toshok  <toshok@ximian.com>
7746         * clock.cpp (Clock::UpdateFromParentTime): comment the hell out of
7747         this method.  Also, don't multiply to compute localTime only to
7748         turn around and divide to compute normalizedTime.  normalizedTime
7749         is always the factor we multiply natural_duration_timespan by.
7751 2009-04-20  Chris Toshok  <toshok@ximian.com>
7753         * provider.h|cpp (AutoCreators::CreateDefaultFontSize): move the
7754         textblock autocreator here, and stop using TextBlock vs. Control
7755         for the font size names, as both textblock and controls have the
7756         varying font size.  There's also no reason to make them public
7757         anymore.  if you want the font size, just call GetFontSize().
7759         * control.h: FontSize uses an autocreator now, and remove the
7760         #define.
7762         * textbox.cpp (TextBoxBase::Initialize): use GetFontSize() instead
7763         of the #define, and while we're at it just replace the other
7764         defines with calls to the getters too.
7766         * textblock.h|.cpp: remove the autocreator (it's in provider.cpp
7767         now), and the #define for font_size.
7769         * dependencyproperty.g.cpp: regen.
7770         
7771 2009-04-20  Chris Toshok  <toshok@ximian.com>
7773         * security.c (security_enable_coreclr): version the
7774         MOON_DISABLE_SECURITY variable.
7776 2009-04-20  Jeffrey Stedfast  <fejj@novell.com>
7778         * textblock.cpp (TextBlock): Removed cached TextFontDescription
7779         since it's only ever used in 1 place and even then it's a corner
7780         case.
7782 2009-04-20  Chris Toshok  <toshok@ximian.com>
7784         * timeline.cpp: fix up DispatcherTimers after I broke them by
7785         removing the clock event.
7787 2009-04-19  Chris Toshok  <toshok@ximian.com>
7789         * eventargs.h|.cpp: add RenderingEventArgs type.
7791         * timemanager.cpp (TimeManager::SourceTick): the render event
7792         takes a RenderEventArgs, even though the type of the event is
7793         EventHandler.  Goes a long way toward fixing DRT #394 and fixes
7794         DRT #905.
7796         * type.h, type-generated.cpp, value.h, cbinding.h, cbinding.cpp:
7797         regen.
7798         
7799 2009-04-19  Chris Toshok  <toshok@ximian.com>
7801         * shape.cpp|.h (Shape::CreateDefaultStretch): create the proper
7802         default for the various shapes (Fill if a rectangle or ellipse,
7803         None for all other types).  Fixes part of DRT #508.
7804         (Rectangle::Rectangle): don't set the default value as a local
7805         value.
7806         (Ellipse::Ellipse): same.
7808 2009-04-19  Jeffrey Stedfast  <fejj@novell.com>
7810         * textblock.cpp (DefaultFontSize): New function to get the default
7811         font size for a TextBlock (or Inline) based on the Silverlight
7812         context (XAP vs XAML).
7814 2009-04-19  Chris Toshok  <toshok@ximian.com>
7816         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
7817         inlines inherit their Language from the textblock, and textblocks
7818         inherit it from frameworkelements.  part of fix for drt #952.
7820 2009-04-18  Chris Toshok  <toshok@ximian.com>
7822         * clock.h|.cpp: move to the holy grail of a functional clock
7823         setup.  this removes Clock::Tick and related additive machinery
7824         that introduces errors into various calculations.  instead we use
7825         the fact that a child's time can be expressed as a function of its
7826         parent's time.  more calculation per-frame, perhaps, but less
7827         problems wrt inflection points like autoreverse/repeat points.
7828         This removes *tons* of difficult to read and impossible to
7829         understand code, and brings clocks and clockgroups a lot closer.
7830         Docs coming soon to a source file near you.
7832         * timeline.h|.cpp: various clock-related changes.  2 notables are
7833         the fact that all Timelines have a completed event now instead of
7834         just storyboards (because Clocks are also emitting completed now,
7835         not just ClockGroups), and DispatcherTimers now subclass from
7836         Timeline instead of TimelineGroup.  We also use a virtual method
7837         instead of an event handler for ticking DispatcherTimers.
7838         
7839         * animation.h|.cpp: more clock fallout.  Also, rewrite
7840         HookupAnimationsRecurse so that we propagate the current
7841         target/property as parameters instead of requiring a search back
7842         up the tree at ever level.
7844         * timemanager.cpp: more clock rewrite stuff.  Set the surface
7845         clockgroup's duration to forever instead of automatic, and switch
7846         from ->Tick to ->UpdateFromParentTime.
7847         
7848         * multiscaleimage.cpp: track changes to storyboard api (basically
7849         i removed the non-WithError methods.. maybe i should put them
7850         back?)
7852         * cbinding.h|.cpp, type-generated.cpp: regen.
7854 2009-04-17  Jeffrey Stedfast  <fejj@novell.com>
7856         * glyphs.cpp (Layout): Pass our StyleSimulations along to
7857         GetGlyphInfo() so that we can simulate Bold or Italics as the user
7858         has requested.
7860         * font.cpp (FontFace::LoadGlyph): Now takes a StyleSimulations
7861         argument (which defaults to None). Adjust the glyph for Bold
7862         and/or Italics if requested.
7863         (TextFont::GetGlyphInfo): Now takes a StyleSimulations
7864         argument (which defaults to None). When looking up the glyph in
7865         the cache, make sure that the simulations also match. When loading
7866         a new glyph, pass along the StyleSimulations.
7868 2009-04-17  Larry Ewing  <lewing@novell.com>
7870         * runtime.cpp (Surface): remove references to removed variable.
7872 2009-04-17  Chris Toshok  <toshok@ximian.com>
7874         * deployment.h|.cpp (class Deployment): add IsLoadedFromXap
7875         getter/setter here, and move XapLocation from surface to here.
7877         * runtime.h|.cpp: remove SetXapLocation/GetXapLocation.
7879         * downloader.cpp: use Deployment::GetXapLocation
7881         * cbinding.h|chinding.cpp: regen.
7883 2009-04-17  Jeffrey Stedfast  <fejj@novell.com>
7885         * font.h: Changed the glyph cache size to be #defined rather than
7886         hard-coded everywhere.
7888 2009-04-17  Jackson Harper  <jackson@ximian.com>
7890         * xaml.cpp: When we are setting the Name property use the same
7891         trick we are using for setting the x:Name property.  Grabbing the
7892         parent element and making sure we get registered in that
7893         namescope.  This isn't perfect, but should fix 95% of the managed
7894         namescope problems.
7896 2009-04-17  Alan McGovern  <amcgovern@novell.com>
7898         * popup.h:
7899         * type-generated.cpp: Correctly mark Popup.Child as its
7900           Content property.
7902 2009-04-17  Geoff Norton  <gnorton@novell.com>
7904         * media.cpp: Ensure that we invalidate the image if the
7905         BitmapImage has already been parsed (like from a SetSource call)
7907 2009-04-17  Geoff Norton  <gnorton@novell.com>
7909         * error.cpp: Image errors use the code 4001, fixes #97
7911 2009-04-16  Jeffrey Stedfast  <fejj@novell.com>
7913         * glyphs.cpp (Layout): Don't bail if we have something other than
7914         StyleSimulationsNone.
7916         * enums.h (enum StyleSimulations): Added Bold, Italic, and
7917         BoldItalic.
7919 2009-04-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7921         * pipeline.cpp: IMediaDemuxer::SetStreams: ref the streams. We
7922           already unref them upon destruction.
7924 2009-04-16  Jeffrey Stedfast  <fejj@novell.com>
7926         * textblock.cpp (DownloaderComplete): Only invalidate/etc if any
7927         of our inlines' fonts have changed - if they all override the font
7928         family, then there's no need to redraw.
7930 2009-04-16  Jackson Harper  <jackson@ximian.com>
7932         * dependencyobject.cpp: Unregister the old name when we set an
7933         objects name.
7935 2009-04-16  Sebastien Pouliot  <sebastien@ximian.com>
7937         * openfile.cpp|h: Add a dialog requester to increase isolated
7938         storage quota. Add function to recursively compute the total size
7939         of a directory, which is used to check quota in IS.
7941 2009-04-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7943         * deployment.cpp: mono_gc_invoke_finalizers may cause the
7944           current appdomain to change, so restore it afterwards. Fixes
7945           a rare, random crash upon shutdown.
7947 2009-04-15  Jeffrey Stedfast  <fejj@novell.com>
7949         * textbox.cpp (TextBoxBase::DownloaderComplete): Instead of
7950         invalidating the TextBoxBase, we need to emit an event to let the
7951         TextBoxView know our font has changed.
7952         (TextBoxView::OnModelChanged): Reset state on the layout when the
7953         font changes (since it has no way of knowing that the font has
7954         changed otherwise).
7956         * textblock.cpp (Inline::UpdateFontDescription): Return true if
7957         the font has changed or false otherwise.
7958         (TextBlock::UpdateFontDescriptions): If any of the fonts changed,
7959         return true and reset the state on the TextLayout.
7961         * font.cpp (TextFontDescription::Set*): Return true if the font
7962         has changed or false otherwise.
7964         * layout.cpp (TextLayout::ResetState): New method to reset the
7965         state of a TextLayout. Normally the state only gets reset if a
7966         layout property chanegs, but sometimes it is necessary to notify
7967         the TextLayout engine of a state change in one of the
7968         TextLayoutAttributes.
7970 2009-04-15  Jeffrey Stedfast  <fejj@novell.com>
7972         * textbox.cpp (TextBoxBase::SetFontResource): If the font isn't a
7973         xap resource, download it from the web.
7975         * textblock.cpp (Inline::SetFontResource): If the font isn't a xap
7976         resource, download it from the web.
7978 2009-04-15  Larry Ewing  <lewing@novell.com>
7980         * dirty.cpp (UpdateLayout): a quick hack to get popups sizing
7981         correctly.
7983 2009-04-15  Jeffrey Stedfast  <fejj@novell.com>
7985         * layout.cpp (layout_word_wrap): The HANGUL enums weren't added to
7986         glib until 2.10, so so guard to allow building on systems with
7987         older versions of glib. Also merged BREAK_NEXT_LINE and
7988         BREAK_UNKNOWN into the BREAK_AFTER group.
7990 2009-04-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7992         * runtime.cpp: Don't support versions of the type "1.0..0".
7993           Fixes a test case in MS DRT #21.
7995 2009-04-15  Stephane Delcroix  <sdelcroix@novell.com>
7997         * downloader.cpp (Downloader::Open): fix the argument passed to
7998         validate_policy
8000 2009-04-15  Alan McGovern  <amcgovern@novell.com>
8002         * utils.cpp: We need to increment the pointer otherwise we
8003           loop forever.
8005 2009-04-15  Stephane Delcroix  <sdelcroix@novell.com>
8007         * downloader.cpp (Downloader::Open): make the relative uris relative to
8008         the xaplocation
8009         (check_redirection_policy, Downloader::Write): don't use
8010         uri->originalString, but uri->ToString ()
8012 2009-04-15  Stephane Delcroix  <sdelcroix@novell.com>
8014         * runtime.h|cpp (Surface): xap_location, Get() and Set()
8016 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
8018         * layout.cpp (layout_word_wrap): Fixed word-break logic for
8019         ambiguous break-types. Fixes second column of text in test #208.
8021 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
8023         * layout.cpp (layout_word_wrap): Fixed word-breaking around a
8024         BREAK_BEFORE_AND_AFTER. Fixes one of the test cases in test #209.
8026 2009-04-14  Stephane Delcroix  <sdelcroix@novell.com>
8028         * deepzoomimagetilesource.h: expose IsDownloaded()
8029         * multiscaleimage.cpp: download the tile source for the subimage before
8030         downloading the un-shared tiles.
8032 2009-04-14  Andreia Gaita  <avidigal@novell.com>
8034         * pipeline-ffmpeg.cpp: check avcodec_decode_audio2 return value: 0
8035         indicates frame could not be decoded. fixes uninitialized buffer
8036         size leading to huge memory allocation and abort. kudos to
8037         Alp Toker for spotting this.
8039 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
8041         * layout.cpp (layout_word_wrap): Added support for Hangul and
8042         ideographic word breaking. Improves test #208 quite a bit.
8044 2009-04-14  Larry Ewing  <lewing@novell.com>
8046         * control.h:
8047         * control.cpp (InsideObject): always return fals controls don't
8048         handle the testing.  Fixes MSI navigation in
8049         http://playboy.covertocover.com/
8050         
8051         * panel.h:
8052         * panel.cpp: remove HitTest stubs.
8054 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
8056         * layout.cpp (layout_word_wrap): Added logic to for breaking after
8057         more break-types including BREAK_AFTER, BREAK_HYPHEN, and
8058         BREAK_IDEOGRAPHIC in an effort to closer match Silverlight 2.0's
8059         behavior on test #206.
8061 2009-04-14  Jeffrey Stedfast  <fejj@novell.com>
8063         * layout.cpp (utf8_strlen): Removed, this has never been sued.
8064         (utf8_find_last_word): Removed. No longer needed - Silverlight 2.0
8065         no longer has this wrapping bug.
8066         (layout_word_wrap): Don't need to check if we're at the last word
8067         in the textblock because Silverlight 2.0 fixed this bug.
8068         (FindLastWord): Removed, no longer needed.
8070 2009-04-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8072         * pipeline.h:
8073         * playlist.cpp: Don't try to open the media if an error has
8074           been reported.
8076 2009-04-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8078         * mediaelement.h:
8079         * mediaplayer.cpp:
8080         * mediaelement.cpp: Check for markers with a timeout instead
8081           of after rendering a frame, this way markers also work with
8082           audio-only media.
8084 2009-04-14  Jackson Harper  <jackson@ximian.com>
8086         * dependencyobject.cpp|h: Add a return value for SetName with
8087         namescope, returns false if there is an error.
8088         * xaml.cpp: Check the return value of SetName
8090 2009-04-14  Stephane Delcroix  <sdelcroix@novell.com>
8092         * uri.cpp (Combine): strip leading ../ as we're already cutting the
8093         filename off the base uri
8095 2009-04-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8097         * type.h:
8098         * size.h:
8099         * xaml.h:
8100         * utils.h:
8101         * value.h:
8102         * stylus.h:
8103         * value.cpp:
8104         * type.h.in:
8105         * runtime.h:
8106         * value.h.in:
8107         * openfile.h:
8108         * transform.h:
8109         * tilesource.h:
8110         * downloader.h:
8111         * timemanager.h:
8112         * downloader.cpp:
8113         * timemanager.cpp: Added @GeneratePInvoke to all methods used
8114           in managed code. For C++ methods also generate the
8115           corresponding C method.
8117         * cbinding.h:
8118         * cbinding.cpp: Regenerated.
8120 2009-04-13  Jeffrey Stedfast  <fejj@novell.com>
8122         * textblock.cpp (SetFontResource): If we cannot get the resource
8123         from within the xap, then we need to spawn a downloader to fetch
8124         it from the web.
8126 2009-04-13  Geoff Norton  <gnorton@novell.com>
8128         * deployment.cpp: Turn on MONO_IOMAP=case until we fix the iomapping
8129         centrally.
8131 2009-04-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8133         * src.mdp: Updated.
8135 2009-04-12  Jeffrey Stedfast  <fejj@novell.com>
8137         * debug.cpp (hexdump_addr): New function to help toshok print a
8138         hexdump of memory from gdb.
8140         * textbox.cpp (TextBoxBase::SetFontResource): Set the font
8141         filename/guid based on the resource provided.
8142         (TextBoxBase::OnPropertyChanged): If a font resource is named in
8143         the FontFamily property, then call SetFontResource() with the
8144         provided resource name.
8145         (TextBox::ClearFontSource): Clear the FontSourceProperty.
8146         (PasswordBox::ClearFontSource): Same.
8148 2009-04-11  Chris Toshok  <toshok@ximian.com>
8150         * provider.h|.cpp, dependencyobject.cpp: get rid of
8151         PropertyPrecedence_Animation and the associated provider.  in SL,
8152         animations are considered local values (and a choir of angels was
8153         heard moaning as they fell on their swords).
8155 2009-04-11  Jeffrey Stedfast  <fejj@novell.com>
8157         * font.cpp: Don't reuse FT_Open_Args. Changed things to pass
8158         FT_Streams and setup their own FT_Open_Args instead. This solves
8159         the crasher problems in the silverlight2 test harness.
8161         * textblock.cpp (Inline::SetFontResource): New method to update
8162         our FontFilenameProperty and FontGUIDProperties.
8163         (Inline::OnPropertyChanged): Handle FontFamilyProperty changes
8164         that reference a resource.
8165         (Inline::UpdateFontDescription): Parse out the family name from
8166         the FontFamily::Source.
8168 2009-04-11  Jeffrey Stedfast  <fejj@novell.com>
8170         * textblock.cpp (TextBlock::SetFontResource): Renamed from
8171         SetFontSource() to be more accurate.
8173         * font.cpp (OpenFaceByIndex): Don't leave any FT_Faces open on
8174         fail. This is probably what was causing the crash on
8175         font_shutdown().
8177         * glyphs.cpp (SetFontResource): Now takes a Uri argument rather
8178         than a string and returns a bool argument hinting at whether we
8179         succeeded or not.
8180         (OnPropertyChanged): Only fall back on creating a downloader for
8181         the font if the uri is not a resource.
8183 2009-04-11  Jackson Harper  <jackson@ximian.com>
8185         * xaml.cpp: If we are hydrating we don't need the extra ref.
8187 2009-04-10  Jeffrey Stedfast  <fejj@novell.com>
8189         * uri.cpp (ToString): Made to accept const Uri*
8191         * textblock.cpp (SetFontSource): Parse the resource string into a
8192         Uri and pass that along to GetResourceAsPath().
8194         * glyphs.cpp (SetFontResource): Parse the resource string into a
8195         Uri and pass that along to GetResourceAsPath().
8197         * bitmapimage.cpp (UriSourceChanged): Back to passing a Uri for
8198         GetResource().
8200         * application.cpp (GetResource): Oops, this really does need a Uri
8201         argument.
8202         (GetResourceAsPath): Use a Uri here too, and convert any ';' into
8203         a '/'.
8205 2009-04-10  Jackson Harper  <jackson@ximian.com>
8207         * xaml.cpp: Let the XamlElementInstances cleanup their Values.
8209 2009-04-10  Chris Toshok  <toshok@ximian.com>
8211         * timemanager.cpp (TimeManager::SourceTick): just for kicks
8212         completely rip out the clock smoothing code, and also emit all
8213         tick calls (don't worry about how much time we're taking in them).
8214         Lastly, emit tick calls *before* rendering.  we need to do this or
8215         else the Loaded event won't be posted before we draw (when we
8216         delay the loaded event, that is.) which leads to a great many
8217         VisualTreeWalker warnings, since Panel::OnLoaded adds the dirty
8218         flag for the initial children z-sorting.
8220         * collection.cpp (VisualTreeWalker::Step): add a special case for
8221         collection::count == index == 1, which is what we end up with on
8222         uielement's with a subobject.  it won't be a collection child of a
8223         panel, so it'll never be z-sorted, but since it's only 1 element
8224         it doesn't need to be anyway.
8226         * canvas.h|.cpp: move OnLoaded, ElementAdded, and ElementRemoved
8227         to Panel.  Also, move the ZIndex OnCollectionItemChanged code into
8228         panel as well.
8230         * panel.h|.cpp: remove a couple of unused
8231         decls (ChildAdded/ChildRemoved) and add the stuff we moved out of
8232         canvas.h|cpp here.
8234 2009-04-10  Jeffrey Stedfast  <fejj@novell.com>
8236         * font.cpp (OpenFaceByIndex): New helper function split out from
8237         FontFace::LoadFontFace() which performs the FT_Open_Face() and
8238         family name matching.
8239         (OpenFaceByFamily): If we don't have an index, this function opens
8240         all faces in the file and finds a matching font face based on
8241         family.
8242         (LoadFontFace): Use our new helper functions.
8244         * textblock.cpp (SetFontSource): On fail, set the font filename to
8245         NULL and call UpdateFontDescriptions() no matter what.
8247         * font.cpp (UnsetFields): Allow unsetting of the font index.
8248         (Merge): Merge the index separately.
8249         (SetIndex): Set/unset the FontMaskIndex bit.
8251         * glyphs.cpp (SetFontResource): New internal method to set a font
8252         resource stream.
8253         (OnPropertyChanged): Handle non-absolute Uris as resource streams.
8255 2009-04-10  Larry Ewing  <lewing@novell.com>
8257         * multiscaleimage.cpp: add a translucency check before calling
8258         cairo_paint_with_alpha.
8260 2009-04-10  Jeffrey Stedfast  <fejj@novell.com>a
8262         * textblock.cpp (SetFontSource): New method for setting a font
8263         source via a resource name.
8264         (OnPropertyChanged): When the FontFamily changes, parse out the
8265         resource name (if it exists) and set that as our font source.
8267         * bitmapimage.cpp (UriSourceChanged): Updated.
8269         * xap.cpp (Unpack): Use the new ExtractAll() convenience function.
8271         * application.cpp (GetResourceAsPath): New helper method to get a
8272         specified resource as a filesystem path.
8273         (GetResource): Now takes a resource name rather than a Uri.
8275         * utils.cpp (CanonicalizeFilename): New function to canonicalize a
8276         filename.
8277         (ExtractAll): New helper function to extract all files from a zip
8278         archive into a specified directory.
8280 2009-04-10  Jeffrey Stedfast  <fejj@novell.com>
8282         * textblock.cpp (CleanupDownloader): New helper method.
8283         (SetFontSource): Use CleanupDownloader() and also clear the
8284         FontSourceProperty since this will override that source.
8285         (OnPropertyChanged): Parse the FontFamily name.
8286         (DownloaderComplete): Use SetValue() correctly.
8288         * glyphs.cpp (CleanupDownloader): Remove the CompletedEvent
8289         handler.
8291 2009-04-10  Sebastien Pouliot  <sebastien@ximian.com>
8293         * security.c: Move #if MONO_ENABLE_CORECLR_SECURITY to remove
8294         all coreclr-related code from being compiled.
8296 2009-04-09  Chris Toshok  <toshok@ximian.com>
8298         * uielement.cpp (UIElement::WalkTreeForLoaded): be more
8299         descriptive with the "attempting to use a null application" thing.
8301         * xaml.cpp (xaml_is_valid_event_name): sort these, and add a bunch
8302         that were missing.  we need to make this less fragile, and have it
8303         use the event strings in type-generated.cpp.
8304         (end_element_handler): add more text to the line about attempting
8305         to use a null application, so we can differentiate it from the
8306         other one.
8308         * timeline.h (class Timeline): BeginTime has, in fact, a default
8309         value (of 0.)
8311         * dependencyproperty.g.cpp: regen.
8313 2009-04-09  Jeffrey Stedfast  <fejj@novell.com>
8315         * textblock.h, textbox.h: Added FontSourceProperty.
8317         * value.cpp|h: Added FontSource support.
8319         * fontsource.h: Added.
8321 2009-04-09  Sebastien Pouliot  <sebastien@ximian.com>
8323         * cbinding.cpp|h: regenerated
8324         * openfile.cpp|h: Add save_file_dialog_show to implement
8325         SaveFileDialog (SL3) and refactor the filter code to be shared.
8326         * runtime.cpp|h: Rename can_full_screen to user_initiated_event
8327         since we need it for SaveFileDialog (and elsewhere too). Rename
8328         setter and add a getter with a c binding.
8330 2009-04-09  Jackson Harper  <jackson@ximian.com>
8332         * xaml.cpp|h: We need to create Value*'s from strings/files now
8333         instead of just creating dependencyobjects, it's legal to create a
8334         managed object from xaml that isn't a DOB.
8335         - Add a couple utility methods for creating just DOBs from
8336         strings/files.
8337         * cbinding.cpp: regen
8338         * xap.cpp:
8339         * template.cpp:
8340         * runtime.cpp: Updated method names
8341         
8342 2009-04-08  Geoff Norton  <gnorton@novell.com>
8344         * downloader.cpp: Ensure that when someone subscribes to NotifySize
8345         they actually will get notified of the size.
8347 2009-04-08  Geoff Norton  <gnorton@novell.com>
8349         * glyphs.cpp:  Ensure we dont pass an unitialized pointer to 
8350         TextFontDescription::SetFilename
8352 2009-04-08  Andreia Gaita  <avidigal@novell.com>
8354         * dependencyobject.cpp: enable toggleref
8355         conditionally (MOONLIGHT_ENABLE_TOGGLEREF)
8357 2009-04-08  Jeffrey Stedfast  <fejj@novell.com>
8359         * font.cpp (IndexFontSubdirectory): Don't try deobfuscating if it
8360         isn't a .odttf file.
8362 2009-04-08  Geoff Norton  <gnorton@novell.com>
8364         * pipeline.cpp: Ensure we dont try to decode if our stream has been
8365         disposed.
8367 2009-04-08  Jeffrey Stedfast  <fejj@novell.com>
8369         * downloader.cpp (validate_policy): Don't delete source here, we
8370         don't own it.
8372         * glyphs.cpp (DownloaderComplete): Only bother setting a guid if
8373         the file extension is .odttf. Also no need to stat() anymore.
8375         * textblock.cpp (DownloaderComplete): Same.
8377 2009-04-08  Jeffrey Stedfast  <fejj@novell.com>
8379         * provider.cpp (InheritedPropertyValueProvider): We need to
8380         inherit FontGUIDProperty for Inlines as well.
8382         * file-downloader.cpp|h: Cleaned up a bit, no longer needs font
8383         deobfuscation features.
8385         * glyphs.cpp (DownloaderCompleted): Don't need to call
8386         downloader_deobfuscate_font() anymore. We only need to get the
8387         GUID to set on the FontDescription.
8389         * textblock.cpp (DownloaderCompleted): Same.
8391         * font.cpp: Implemented our own FT_Stream that can handle reading
8392         obfuscated fonts directly without the need to rewrite the file
8393         first.
8394         (TextFontDescription): Now has a GUID property for Glyphs and
8395         TextBlock to use.
8397         * downloader.cpp: Fixed to autogenerate the accessors and changed
8398         the UriProperty type to a Uri to be consistent with other classes.
8399         (GetDownloadedFilename): Work around the Mozilla 64k bug here too.
8401 2009-04-08  Geoff Norton  <gnorton@novell.com>
8403         * deployment.cpp: Ensure that we restore to the current MonoDomain
8404         after creating a new deployment.
8406 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
8408         * multiscaleimage.h|cpp: Set IsDownloading property according to the
8409         status of the downloaders
8411 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
8413         * multiscaleimage.cpp (MultiScaleImage::RenderSingle, 
8414         MultiScaleImage::RenderCollection): do not start any new download if
8415         AllowDownlodingProperty is false.
8417 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
8419         * multiscaleimage.h|cpp: impplement missing LogicalToElementPoint
8421 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
8423         * multiscaleimage.cpp: if downloading a tile fail, cache a NULL surface
8424         and move on
8426 2009-04-08  Stephane Delcroix  <sdelcroix@novell.com>
8428         * multiscaleimage.cpp: some additional debug info printing the state of
8429         each BitmapImage
8431 2009-04-07  Chris Toshok  <toshok@ximian.com>
8433         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
8434         almost had it that last time.  In the case where the parent has
8435         that property, use GetValue on it instead of ReadLocalValue, which
8436         won't pick up styles.
8438 2009-04-07  Chris Toshok  <toshok@ximian.com>
8440         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
8441         rewrite this substantially to make it work correctly and be more
8442         efficient.  we no longer look up the hierarchy for properties
8443         which aren't inheritable, and we only loop up the visual tree, not
8444         the logical one (since that has issues when it comes to
8445         templates).
8446         (get_parent): nuke, it was a broken way to deal with parents.
8448 2009-04-07  Chris Toshok  <toshok@ximian.com>
8450         * uielement.h|.cpp (class UIElement): scrap that ill-advised
8451         AutoCreator crap.  it's much simpler.  the default is actually
8452         NULL, and the managed layer does the stupid mapping from NULL to
8453         new MatrixTransform.
8455 2009-04-07  Chris Toshok  <toshok@ximian.com>
8457         * uielement.h|.cpp (class UIElement): use an AutoCreator for
8458         RenderTransformProperty.
8460         * dependencyproperty.g.cpp: regen.
8461         
8462 2009-04-07  Larry Ewing  <lewing@novell.com>
8464         * grid.cpp (MeasureOverride): use the star fraction of the
8465         available size when measuring.
8467         * border.cpp: restrict the return value to available size.
8469 2009-04-07  Geoff Norton  <gnorton@novell.com>
8471         * pipeline.cpp|h: Ensure that we can post ReportSeekCompleted back
8472         to the media thread from any thread.  Fixes seeking on SmoothHD
8473         sites.
8475 2009-04-07  Geoff Norton  <gnorton@novell.com>
8477         * bitmapimage.cpp|h: Ensure we stop getting events from any 
8478         active downloaders once we're disposed.
8479         * brush.cpp|h: Ensure we stop getting events from any 
8480         active BitmapImages once we're disposed.
8482 2009-04-07  Jeffrey Stedfast  <fejj@novell.com>
8484         * glyphs.cpp (CleanupDownloader): New helper method.
8485         (DownloadFont): Don't delete the uri after we're done, we do not
8486         own this object!
8487         (OnPropertyChanged): Use Uri::IsNullOrEmpty().
8489 2009-04-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8491         * runtime.cpp: layers is an EventObject, unref instead of
8492           delete.
8494         * collection.h: Have a protected dtor so that nobody can
8495           delete this class directly ever again.
8497 2009-04-07  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8499         * runtime.cpp: Add a few null checks.
8501 2009-04-07  Stephane Delcroix  <sdelcroix@novell.com>
8503         * application.cpp: uri->ToString() allocates memory, free it after
8504         use.
8506 2009-04-06  Chris Toshok  <toshok@ximian.com>
8508         * runtime.cpp|.h (Surface::Attach): split this method effectively
8509         in half: stuff we do before the loaded events are fired, and stuff
8510         we do after.  The second half is in Surface::ToplevelLoaded.  This
8511         fixes playboy.covertocover.com coming up, as the alert that
8512         vertigo pops up via Surface::LoadEvent was causing a sub-mainloop
8513         to screw with our async events.
8515 2009-04-06  Chris Toshok  <toshok@ximian.com>
8517         * uielement.cpp|.h (UIElement::GetTransformToUIElementWithError):
8518         flesh this method out some.  I don't like the walks we have to do
8519         here.  Also, rename this to *WithError so we can report the error
8520         back to managed land from here instead of doing it in C#.
8522         * cbinding.cpp|.h: regen.
8524 2009-04-06  Chris Toshok  <toshok@ximian.com>
8526         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
8527         in case we didn't notify listeners, output the moon error if there
8528         was one.
8530 2009-04-06  Chris Toshok  <toshok@ximian.com>
8532         * xaml.cpp (value_from_str): quiet spew (which in this case
8533         indicates an error when there isn't one.)
8535 2009-04-06  Chris Toshok  <toshok@ximian.com>
8537         * brush.h: include imagesource.h, not bitmapimage.h
8539         * brush.cpp: include bitmapimage.h here.
8541 2009-04-06  Geoff Norton  <gnorton@novell.com>
8543         * bitmapimage.cpp: Stop leaking the resource here.
8545 2009-04-06  Geoff Norton  <gnorton@novell.com>
8547         * codec-version.h.in: Bump
8549 2009-04-06  Geoff Norton  <gnorton@novell.com>
8551         * application.cpp: We want ToString here, not just the path of the
8552         uri.
8553         * bitmapimage.cpp|h: We need to do this async, since the events
8554         might be registered in managed code before a yield.
8556 2009-04-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8558         * security.c: Add jtr.dll to the list of platform assemblies,
8559           it's an assembly used by managed tests which contains unsafe
8560           code and pinvoke methods.
8562 2009-04-06  Stephane Delcroix  <sdelcroix@novell.com>
8564         * multiscaleimage.h: ad the 3.0 DPs and property accessors
8566 2009-04-05  Chris Toshok  <toshok@ximian.com>
8568         * easing.cpp|.h: add EasingFunctionBase::SetEasingFunction so that
8569         managed subclasses can register a delegate.
8571         * cbinding.cpp|.h: regen.
8573 2009-04-04  Geoff Norton  <gnorton@novell.com>
8575         * mediaplayer.cpp: Ensure that we invalidate for planar data as well.
8577 2009-04-04  Geoff Norton  <gnorton@novell.com>
8579         * pipeline.cpp|h: Support YV12 from MediaStreamSource as well
8581 2009-04-04  Geoff Norton  <gnorton@novell.com>
8583         * media.h: Removed unused define
8584         * mediaplayer.cpp|h: We need to support RGBA video formats now, so 
8585         lets track what the decoder is giving us (pass-thru is the only decoder
8586         which will provide RGBA from MSS, we still pass around yuv and rgb
8587         internally).  If the format is RGBA we have to incur a one-frame penalty
8588         to recreate our cairo surfaces.
8589         * pipeline.cpp|h: Support RGBA pixel formats.  Don't support RGB from 
8590         MediaStreamSource.  Mark the pass-thru frames as decoded.
8592 2009-04-04  Chris Toshok  <toshok@ximian.com>
8594         * animation.h|.cpp: add Easing{Color,Double,Point}KeyFrame types.
8596         * type.h, type-generated.cpp, dependencyproperty.g.cpp, value.h,
8597         cbinding.h|.cpp: regen.
8598         
8599 2009-04-03  Chris Toshok  <toshok@ximian.com>
8601         * animation.h: add EasingFunctionProperty to
8602         Color/Double/PointAnimation.
8604         * animation.cpp (DoubleAnimation::GetCurrentValue): if there's an
8605         easing function, apply it to progress.
8606         (ColorAnimation::GetCurrentValue): if there's an easing function,
8607         apply it to progress.
8608         (PointAnimation::GetCurrentValue): if there's an easing function,
8609         apply it to progress.
8611         * easing.h, easing.cpp: implementations of all the easing
8612         functions.  still missing are BounceEase and ElasticEase.
8614         * enums.h, enums.cpp (enum EasingMode): new enum.
8616         * Makefile.am: add easing.h/easing.cpp
8618         * type.h, type-generated.cpp, cbinding.h|.cpp,
8619         dependencyproperty.g.cpp, value.h: regen.
8620         
8621 2009-04-03  Geoff Norton  <gnorton@novell.com>
8623         * multiscaleimage.cpp: Guard against 0x0 MSI's to prevent a cairo bug
8624         which renders garbage on the screen on amd64.
8626 2009-04-03  Aaron Bockover  <abockover@novell.com>
8628         * cbinding.h:
8629         * runtime.h:
8630         * dependencyproperty.g.cpp:
8631         * cbinding.cpp: Add generated binding for Surface::GetToplevel, needed
8632         by Moonlight.Gtk.XamlHost
8634 2009-04-03  Larry Ewing  <lewing@novell.com>
8636         * popup.h:
8637         * popup.cpp: Make sure that we hide any active layers when Child
8638         changes and that we show any new ones.  Fixes part of
8639         PopupExample2.  Give IsOpen a default value.
8641         Regenerate.
8643 2009-04-03  Chris Toshok  <toshok@ximian.com>
8645         * animation.h: remove a couple of ancient (and unused) method and
8646         function declarations, and re-order
8647         public/private/protected (seriously, this makes my eyes bleed.)
8648         Also move the "internal classes" to the end.
8650 2009-04-03  Chris Toshok  <toshok@ximian.com>
8652         * clock.cpp (Clock::Begin): remove the COMPATABILITY_BUGS stuff,
8653         since that's for compatability with 1.0, which we no longer are.
8654         
8655 2009-04-03  Alan McGovern  <amcgovern@novell.com>
8657         * textbox.h: TextBox does validation in both the getter and
8658           setter of its TextProperty, so we have to manually implement
8659           it.
8661 2009-04-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8663         * security.c: Include "config.h" to get
8664           MONO_ENABLE_CORECLR_SECURITY.
8666 2009-04-02  Aaron Bockover  <abockover@novell.com>
8668         Do not build code that requires Mono 2.5 or better in the case where
8669         we want Moonlight to run only in an embedded desktop app scenario; in
8670         this case, CoreCLR security and non-default app domains are not needed
8672         * security.c (security_enable_coreclr): If MONO_ENABLE_CORECLR_SECURITY
8673         is not defined, this function is now a noop
8675         * deployment.cpp: If MONO_ENABLE_APP_DOMAIN_CONTROL is not defined, do
8676         not implement app domain loading/unloading; factor out all common init
8677         code that was duplicated in both ctors into InnerConstructor
8678         
8679         * deployment.h: Define InnerConstructor
8681 2009-04-02  Larry Ewing  <lewing@novell.com>
8683         * uielement.h:
8684         * uielement.cpp: move the bulk of the paint ftb logic from surface
8685         to here since we will be using this in more places.  Make some of
8686         the ftb logic protected now.
8688         * bitmapsource.h:
8689         * writeablebitmap.h:
8690         * writeablebitmap.cpp: Land Geoff's initial Render implementation
8691         with a few changes.
8693         Regenerate.
8694         
8695 2009-04-02  Larry Ewing  <lewing@novell.com>
8696         
8697         * dirty.cpp:
8698         * runtime.h:
8699         * runtime.cpp: Treat full_screen_message as another layer.  Make
8700         sure that we mark layers as loaded.  Popups should render now.
8702 2009-04-02  Alan McGovern  <amcgovern@novell.com>
8704         * runtime.cpp: the real toplevel element must always be at
8705           position 0 in the layers list. Fixes the situation where we
8706           open a popup before setting attaching the surface.
8708 2009-04-02  Stephane Delcroix  <sdelcroix@novell.com>
8710         * multiscaleimage.h|cpp: use *AnimationUsingKeyFrames instead of
8711         linear animation, animate for 4 secs instead of .4, use steep spline
8712         to start fast finish smoothly. For botn panning and zooming.
8714 2009-04-02  Alan McGovern  <amcgovern@novell.com>
8716         * popup.h:
8717         * popup.cpp:
8718         * dependencyproperty.g.cpp: The Child property has similar
8719           validation to a ContentControl. Fixes three tests.
8721 2009-04-02  Alan McGovern  <amcgovern@novell.com>
8723         * popup.h:
8724         * popup.cpp:
8725         * dirty.cpp:
8726         * runtime.h:
8727         * cbinding.h:
8728         * runtime.cpp:
8729         * cbinding.cpp:
8730         * dependencyproperty.g.cpp: Popups are treated as top level
8731           elements which are rendered on top of all other elements. To
8732           handle this a list of all toplevel elements (layers) is kept
8733           in the surface. Mouse events are captured within a toplevel
8734           element and not visible to other toplevel elements.
8736 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
8738         * multiscaleimage.cpp (ZoomAboutLogicalPoint): zoom around the point,
8739         not to the center of the control
8741 2009-04-01  Andreia Gaita  <avidigal@novell.com>
8742     
8743         * window-gtk.cpp: Only connect the scroll-event signal if we're
8744         not running on the desktop (otherwise, gecko won't get the
8745         signals)
8747 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
8749         * uri.h: no longer expose GetOriginalString(), it leads to buggy
8750         code.
8752 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
8754         * mediaelement.cpp:
8755         * bitmapimage.cpp:
8756         * deepzoomimagetilesource.cpp: g_free the memory allocated by
8757         uri->ToString()
8759 2009-04-01  Chris Toshok  <toshok@ximian.com>
8761         * window-gtk.cpp (MoonWindowGtk::button_press): reinstate
8762         the (desktop extension -ized) button check here.  this wouldn't be
8763         necessary if the plugin could insert its signal handler before the
8764         window's, but alas, gtk...
8766 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
8768         * application.cpp (GetResource): use the uri path, not
8769         originalstring
8771 2009-04-01  Jeffrey Stedfast  <fejj@novell.com>
8773         * expression.cpp|h: Removed from the build.
8774         not running on the desktop (otherwise, gecko won't get the
8775         signals)
8777 2009-04-01  Chris Toshok  <toshok@ximian.com>
8779         * runtime.cpp (Surface::HandleUIButtonRelease): if desktop
8780         extensions are turned on, allow button 3 (right mouse).
8781         (Surface::HandleUIButtonPress): same.
8783         * window-gtk.cpp (MoonWindowGtk::button_release): don't suppress
8784         non-button 1 presses here.
8786 2009-04-01  Chris Toshok  <toshok@ximian.com>
8788         * eventargs.cpp (MouseWheelEventArgs::GetWheelDelta): flip the
8789         sign here so we have the same behavior that lutz's demo expects
8790         from windows.
8792 2009-04-01  Geoff Norton  <gnorton@novell.com>
8794         * uri.cpp|h: Add IsNullOrEmpty
8795         * bitmapimage.cpp: Clean up this call to use Uri::IsNullOrEmpty
8797 2009-04-01  Geoff Norton  <gnorton@novell.com>
8799         * bitmapimage.cpp: Ensure we deregister the events too.
8801 2009-04-01  Geoff Norton  <gnorton@novell.com>
8803         * bitmapimage.cpp: If the UriSource is changed, then we should abort
8804         and clean up any existing downloaders.
8806 2009-04-01  Geoff Norton  <gnorton@novell.com>
8808         * brush.cpp: ImageSource is a nullable property so we need to new
8809         one up here if we dont have one already.
8811 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
8813         * multiscaleimage.h|.cpp: reuse BitmapImage for tile downloading
8814         and creating cairo surfaces.
8816 2009-04-01  Stephane Delcroix  <sdelcroix@novell.com>
8818         * bitmapimage.cpp: compare uri against its DefaultValue on UriSource
8819         property changed.
8821 2009-04-01  Chris Toshok  <toshok@ximian.com>
8823         * uielement.h (class UIElement): add
8824         MouseRightButton{Down,Up}Event and MouseWheelEvent.
8826         * runtime.cpp|.h (RUNTIME_INIT_DESKTOP): enable desktop
8827         extensions.
8828         (Surface::HandleUIScroll): new method, emit a MouseWheelEvent.
8830         * eventargs.cpp|.h (class MouseWheelEventArgs): new class.
8832         * window-gtk.cpp|.h (MoonWindowGtk::scroll): new method for mouse
8833         wheel action.
8834         (MoonWindowGtk::EnableEvents): connect the scroll-event.
8835         (MoonWindowGtk::InitializeCommon): if desktop extensions are
8836         enabled, add GDK_SCROLL_MASK.
8838         * xaml.cpp (xaml_is_valid_event_name): if we're running with
8839         desktop extensions, expose the right button events and mouse
8840         wheel.
8842         * value.h, cbinding.h, cbinding.cpp, type-generated.cpp: regen.
8844 2009-03-31  Jeffrey Stedfast  <fejj@novell.com>
8846         * enums.h: Well what do ya know... TextWrapping enum wasn't the
8847         same as the TextWrapping.cs enum, this is likely the case of some
8848         text layout wonkyness.
8850         * textblock.cpp (TextBlock::MeasureOverride): Set the
8851         ActualWidth/Height DP values here after calling Layout(), this
8852         seems to be what Silverlight does (can't be set in FWE::Measure()
8853         because it doesn't have the actual extents, it just has the
8854         desiredSize). Also don't reset dirty back to true after laying out
8855         the text.
8856         (TextBlock::Layout): Restructured slightly.
8858 2009-03-31  Stephane Delcroix  <sdelcroix@novell.com>
8860         * bitmapimage.cpp: use Uri::ToString () instead of OriginalString, as
8861         originalstrings aren't updated on Uri::Combine ().
8863 2009-03-31  Stephane Delcroix  <sdelcroix@novell.com>
8865         * bitmapimage.h: Set a DefaultValue for ProgressProperty
8867 2009-03-31  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8869         * src.mdp: Updated some project files.
8871 2009-03-31  Stephane Delcroix  <sdelcroix@novell.com>
8873         * multiscaleimage.cpp: Invalidate on ZIndex change, or on subimages 
8874         added/removed
8876 2009-03-31  Stephane Delcroix  <sdelcroix@novell.com>
8878         * multiscaleimage.h|.cpp: remove the AddTickCall workaround for 
8879         the race while emitting ImageOpenSucceded. Test if the source is
8880         a deepzoom before casting (avoid g_warnings on the console). Change a 
8881         printf to LOG_MSI.
8883 2009-03-30  Chris Toshok  <toshok@ximian.com>
8885         * timemanager.cpp|.h: split this out from clock.cpp|.h
8887         * animation.cpp, clock.cpp, clock.h, dependencyobject.cpp,
8888         libmoon.h, mediaplayer.cpp, runtime.cpp, textbox.cpp,
8889         timeline.cpp, uielement.cpp: track the above change.
8891         * Makefile.am: add timemanager.cpp|.h
8893         * cbinding.h, type-generated.cpp: regen
8895 2009-03-30  Geoff Norton  <gnorton@novell.com>
8897         * bitmapsource.cpp: When caching a native surface ensure we dont
8898         destroy it on every GetSurface pass, but we do clean it up in
8899         Invalidate.
8901 2009-03-30  Chris Toshok  <toshok@ximian.com>
8903         * application.h, border.h, contentcontrol.h, control.h,
8904         cornerradius.h, deployment.h, expression.h, frameworkelement.h,
8905         grid.h, multiscaleimage.h, size.h, style.h, template.h, textbox.h,
8906         transform.h, type.h, usercontrol.h: remove @SilverlightVersion
8907         metadata attributes.
8910 2009-03-30  Chris Toshok  <toshok@ximian.com>
8912         * downloader.h: add pinvokes for a few of the downloader_* C
8913         functions.
8915         * clock.h|.cpp (class TimeManager): add a CBinding/PInvoke for
8916         AddTickCall, and remove the manual implementation.
8918         * dependencyobject.h (class EventObject): add a PInvoke for
8919         event_object_get_surface.
8921         * cbinding.h, cbinding.cpp: regen
8923 2009-03-30  Sebastien Pouliot  <sebastien@ximian.com>
8925         * security.c: Ensure mono_assembly_setrootdir is always called
8926         while enabled coreclr is dependent on the MOON_DISABLE_SECURITY
8927         variable and the availability of a platform directory.
8929 2009-03-30  Geoff Norton  <gnorton@novell.com>
8931         * brush.h: Brush.ImageSource is stupid, and of course not consistent
8932         with Image.Source
8933         * bitmapimage.cpp: Nuke some debug spew.
8934         * dependencyproperty.g.cpp: Funky cold medina.
8936 2009-03-30  Larry Ewing  <lewing@novell.com>
8938         * brush.cpp (OnPropertyChanged): check for the right property and
8939         fixup a harmless typo.
8940         
8941         * media.cpp (OnPropertyChanged): fixup a (harmless) logic typo
8943 2009-03-30  Jeffrey Stedfast  <fejj@novell.com>
8945         * font.cpp (FontFace::GetExtents): Instead of calculating our
8946         ascent/descent and height values from 2 different ways, calculate
8947         ascent/descent the same way we calculated height. This seems to
8948         give slightly more accurate results (previous logic rounded up to
8949         the nearest whole pixel for ascent/descent).
8951 2009-03-30  Geoff Norton  <gnorton@novell.com>
8953         * media.h: Hide some API that never should have been public.
8954         * media.cpp: ImageBrush no longer uses a image internally.
8955         * bitmapimage.cpp|h: Part name is a const char * since we dup
8956         it here.
8957         * brush.cpp|h: Migrate away from using a Image internally
8958         and consume the new BitmapImage API.
8960 2009-03-30  Geoff Norton  <gnorton@novell.com>
8962         * bitmapimage.cpp: Ensure we fall back to downloading if we 
8963         cannot find the image as a resource.
8965 2009-03-30  Chris Toshok  <toshok@ximian.com>
8967         * deployment.h|.cpp: combing the desktop and browser cases (the
8968         desktop case coming from jeff's patch) into one method, where the
8969         different root_domain behavior is determined by the boolean
8970         argument.
8972         * runtime.cpp (runtime_init): pass an initial boolean to
8973         Deployment::Initialize to tell whether or not we should create the
8974         root domain (i.e. whether or not we should initialize mono.)
8975         (RUNTIME_INIT_BROWSER): add RUNTIME_INIT_CREATE_ROOT_DOMAIN.
8977 2009-03-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8979         * security.c: Revert latest fix, the buildbots aren't ready
8980           for this yet.
8982 2009-03-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8984         * security.c: Always call mono_assembly_setrootdir, even if
8985           CoreCLR is disabled. This should fix buildbots where
8986           mono/mcs and moonlight are installed into different
8987           prefixes.
8989 2009-03-30  Geoff Norton  <gnorton@novell.com>
8991         * media.cpp: Stop leaking a cairo pattern in Image::Render
8993 2009-03-30  Stephane Delcroix  <sdelcroix@novell.com>
8995         * deepzoomimagetilesource.cpp: revert latest change, don't advance
8996         twice. Fixes collections.
8998 2009-03-29  Chris Toshok  <toshok@ximian.com>
9000         * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
9001         add a sanity check here to make sure the autocreated value is of a
9002         compatible type.
9004         * animation.h|.cpp: remove the /*Timeline*/ comments from
9005         everywhere -- stop pretending the type names are the same as WPF.
9007 2009-03-29  Geoff Norton  <gnorton@novell.com>
9009         * media.cpp: Ensure that the ImageSource we get is a BitmapImage
9010         before treating it as such.
9012 2009-03-29  Geoff Norton  <gnorton@novell.com>
9014         * Makefile.am, bitmapimage.cpp|h, bitmapsource.cpp|h,
9015           writeablebitmap.cpp|h, brush.cpp, enums.h, eventargs.cpp|h,
9016           imagesource.cpp|h, media.cpp|h, mediaplayer.h, pipeline.cpp:
9017         Update the image based source to have a properly implemented
9018         BitmapImage.  I've also moved all this code to the SL3 API which
9019         injects a BitmapSource in between ImageSource and BitmapImage,
9020         and adds support for WriteableBitmap.
9022         Basically now all the cairo logic lives in ImageSource and 
9023         BitmapSource.  All the pixbuf loader logics and downloader logic
9024         is isolated in BitmapImage.
9026         * cbinding.cpp|h, dependencyproperty.g.cpp, type-generated.cpp,
9027           type.h, value.h: Regenerate  
9029 2009-03-29  Chris Toshok  <toshok@ximian.com>
9031         * provider.h, provider.cpp, dependencyproperty.h: change
9032         AutoCreator signature to take the DependencyObject as the first
9033         parameter.
9035 2009-03-29  Chris Toshok  <toshok@ximian.com>
9037         * dependencyproperty.h|.cpp: rework the autocreate functionality.
9038         instead of a boolean flag, we pass a function pointer.  We keep
9039         IsAutoCreated() around (just func != NULL) and add
9040         GetAutoCreator() so the AutoCreateProvider can call the method
9041         when it needs a value.
9043         Also, remove the empty ctor since it doesn't initialize any
9044         fields (and it also isn't called.)
9046         * provider.h (class AutoCreators): new class, containing the
9047         default autocreator which just calls type->CreateInstance().
9049         * provider.cpp (AutoCreatePropertyValueProvider::GetPropertyValue):
9050         call the property's AutoCreator function if there is one.
9051         (AutoCreators::default_autocreator): new function for the default
9052         case.  basically some code that was ripped out of
9053         ::GetPropertyValue
9055         * dependencyproperty.g.cpp: regen.
9057 2009-03-29  Chris Toshok  <toshok@ximian.com>
9059         * uielement.cpp (UIElement::OnLoaded): now that we don't walk the
9060         tree in OnLoaded, don't do anything at all if we're already
9061         Loaded.
9063 2009-03-29  Chris Toshok  <toshok@ximian.com>
9065         * eventargs.h: consistenfy everything, and make
9066         CollectionChangedEventArgs fields private, not public.  add
9067         accessors.
9069         * dependencyobject.h (PropertyChangedEventArgs): make
9070         old_value/new_value private and add accessors.
9072         * *.cpp|.h: track the above changes.
9073         
9074 2009-03-29  Chris Toshok  <toshok@ximian.com>
9076         * dependencyproperty.h|.cpp: rename AutoCreate to IsAutoCreated.
9078         * dependencyobject.cpp:, provider.cpp: track above change.
9080 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
9082         * deployment.cpp|h (Initialize): If a platform directory is
9083         specified then we initialize the CoreCLR security model.
9084         * runtime.cpp|h: Initialize the runtime using the plugin
9085         directory (when applicable, i.e. browser mode).
9086         * security.c|h: New. Handle the CoreCLR security model 
9087         initialization and platform code detection.
9088         * Makefile.am: Add security.[c|h] to the build
9090 2009-03-28  Jeffrey Stedfast  <fejj@novell.com>
9092         * frameworkelement.cpp (OnPropertyChanged): Instead of setting
9093         ActualWidth/Height to 0 in the non-LayoutContainer case, use
9094         ClearValue() those properties instead. Fixes some TextBlock cases.
9096         * textblock.cpp (GetSize): Check isnan() rather than 0.
9097         (Render): The dirty flag should never be set at this point, so
9098         don't bother with it. Set TextLayout's AvailableWidth to our
9099         ActualWidth value.
9100         (ArrangeOverride): Don't set dirty back to true after we've
9101         arranged, this is why dirty was true in ::Render()
9103 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
9105         * textblock.cpp (Layout): Fixed the special-case logic. If no text
9106         has ever been set, then the extents should be 0,0. However, if
9107         they have ever been set but the text is currently empty, then use
9108         the font height as the ActualHeight value. Use a state variable to
9109         check if the text has ever been set rather than trying to check
9110         other things which are not reliable.
9112 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
9114         * size.h (Size::GrowBy): If the width or height are infinite going
9115         in, then leave them infinite going out.
9117         * textblock.cpp (TextBlock::GetSize): New method to get the
9118         TextBlock's size.
9119         (TextBlock::Render): Use GetSize() instead of GetRenderSize().
9120         (class TextBlockDynamicPropertyValueProvider): Same.
9122 2009-03-27  Chris Toshok  <toshok@ximian.com>
9124         * uielement.h (class UIElement): add LostMouseCaptureEvent.
9126         * type-generated.cpp: regen.
9128 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
9130         * multiscaleimage.h|.cpp: sort the subimages by ZIndex, Invalidate on
9131         subimage collection items changed.
9133 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
9135         * multiscalesubimage.h|.cpp:
9136         * multiscaleimage.cpp: remove the link to msi parents and don't try to
9137         Invalidate from subimage.
9139 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
9141         * collection.cpp: do not use generated cbinding in
9142         MultiScaleSubImageZIndexComparer.
9144 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
9146         * multiscalesubimage.h: set a default ZIndex value
9148 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
9150         * textblock.cpp (TextBlock::UpdateLayoutAttributes): New method to
9151         update the TextLayout's text and attributes.
9152         (TextBlock::OnPropertyChanged): If the Text or Inlines properties
9153         change, immediately call UpdateLayoutAttributes().
9154         (TextBlock::Layout): No longer sets up the TextLayout's attributes
9155         as this is already done. Also no longer takes a cairo_t argument
9156         since it's never used, instead it now takes a Size constraint
9157         argument.
9158         (TextBlock::CalcActualWidthHeight): Removed, no longer needed.
9159         (TextBlock::MeasureOverride): Rewritten / simplified.
9160         (TextBlock::ArrangeOverride): Same.
9161         (class TextBlockDynamicPropertyValueProvider): Updated.
9162         (TextBlock::OnCollectionItemChanged): Call UpdateFontDescription
9163         on the Inline that changed.
9164         (TextBlock::UpdateFontDescriptions): New method to update the font
9165         descriptions on all inlines.
9166         (TextBlock::OnPropertyChanged): Update the font descriptions on
9167         all inlines whenever a font property changes.
9168         (TextBlock::SetFontSource): Call UpdateFontDescriptions().
9169         (TextBlock::DownloaderComplete): Same.
9171         * textbox.cpp (TextBoxView::Render): Set the layout's
9172         AvailableWidth to the render size width.
9173         (TextBoxView::Layout): Don't worry about constraint.width being
9174         INFINITY anymore, TextLayout() now handles INFINITY.
9176         * layout.cpp: Instead of using -1.0 to mean 'unset' for extents
9177         and max width/height constraints, use NAN and
9178         INFINITY (respectively). This will prevent TextBox/Block from
9179         having to use hacks if their width/height constraints are
9180         INFINITY.
9181         (TextLayout::HorizontalAlignment): Since MaxWidth might be
9182         INFINITY, we need to base this on a new property called
9183         AvailableWidth, which is the width available for rendering (where
9184         MaxWidth is only used for wrapping).
9186 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
9188         * deepzoomimagetilesource.cpp (DeepZoomImageTileSource::GetTileLayer):
9189         After finding the baseUri's filename, advance beyond the / before
9190         passing it to uri->Combine().
9192         * uri.cpp (Uri::Combine): If the uri has no path and the
9193         relative_path does not begin with a /, don't prepend one.
9195 2009-03-27  Jeffrey Stedfast  <fejj@novell.com>
9197         General cleanup of the TextBoxBase abstraction.
9199         * textbox.cpp (TextBoxView::UpdateText): Get rid of special-casing
9200         of PasswordBox.
9201         (PasswordBox::SyncDisplayText): Generate a masked password string
9202         using the specified PasswordChar.
9203         (PasswordBox::SyncText): Call SyncDisplayText ().
9204         (PasswordBox::OnPropertyChanged): When the PasswordProperty
9205         changes, call SyncDisplayText().
9206         (PasswordBox::GetDisplayText): Override TextBoxBase's to return
9207         our masked password string.
9208         (PasswordBox::ctor): Initialize display text
9209         (PasswordBox::dtor): Delete display text.
9210         (TextBox::GetDisplayText): Simply return GetText ()
9212 2009-03-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9214         * playlist.cpp: MergeWith: need to clone uris, otherwise it'll
9215           double free.
9217 2009-03-27  Jackson Harper  <jackson@ximian.com>
9219         * xaml.cpp: Despite the docs saying differently
9220         (http://msdn.microsoft.com/en-us/library/cc917841(VS.95).aspx)
9221         sys:Boolean is also legal. (I wonder what else is).
9223 2009-03-27  Jackson Harper  <jackson@ximian.com>
9225         * xaml.cpp: Fix typo in LookupNamedItem so exists returns the
9226         correct value.
9227         - When we are populating the context resource dictionaries we need
9228         to include elements that are resource dictionaries not just
9229         elements have have dictionaries.  This fixes elements looking up
9230         items in their top level RD (like in generic xaml).
9232 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
9234         * xaml.cpp: Source attribute of MultiScaleImage, even while starting with a
9235         '/', are relative uris.
9237 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
9239         * multiscaleimage.cpp: if a tile is already being downloaded, don't
9240         start a 2nd downloader for the same uri.
9242 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
9244         * deepzoomimagetilesource.cpp: Uris composed of a single file name
9245         are fine too. don't discriminate !
9247 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
9249         * uri.cpp: fix Combine when the original path is a single file,
9250         without a leading '/'
9252 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
9254         * multiscalesubimage.h|.cpp: fix the mess I was doing on uris in
9255         the overloaded ctor now that we have a proper Uri struct
9257 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
9259         * uri.h, uri.cpp: add Combine (const Uri*).
9261 2009-03-27  Stephane Delcroix  <sdelcroix@novell.com>
9263         * multiscaleimage.h|.cpp: Emit MotionFinishedEvent
9265 2009-03-26  Chris Toshok  <toshok@ximian.com>
9267         * deployment.h|.cpp: be a little more fragile (and a lot less
9268         evil) about the way we're exposing Mono types in our headers.
9269         just put a typedef for MonoDomain in deployment.h instead of
9270         including appdomain.h.  Include appdomain.h from deployment.cpp.
9272 2009-03-26  Chris Toshok  <toshok@ximian.com>
9274         * uielement.h|.cpp (class UIElement): add the ability to do
9275         instant and delayed emission of Loaded events.
9276         (UIElement::PostSubtreeLoad): perhaps poorly named, but the
9277         @load_list is a list of UIElement which will be walked in order in
9278         a tick call, emitting OnLoaded on all of them.
9279         (UIElement::EmitSyncLoaded): walk the same list as would be passed
9280         to PostSubtreeLoad, emitting it now.
9281         (UIElement::WalkTreeForLoaded): this does a post-order tree walk
9282         building up the list which is passed to PostSubtreeLoad or
9283         EmitSubtreeLoad.  The out bool parameter tells us whether we
9284         should delay the emission or not. Currently the only thing that
9285         delays emission is a control with a style applied (even a default
9286         style.)  We also set a PENDING_LOADED flag on all elements during
9287         the walk.
9288         (UIElement::OnLoaded): no longer walk the tree here.  only emit
9289         Loaded on this one element.  Clear the PENDING_LOADED flag while
9290         we're at it.
9291         (UIElement::ElementAdded): complicate matters slightly here so
9292         that it follows the following two rules:
9294         1) if @this is loaded, walk the tree and either emit or post the
9295         load based on what the out param tells us to do.
9297         2) if @this is pending_loaded, walk the tree and always post.
9298         
9299         * frameworkelement.h (class FrameworkElement): unfortunately we
9300         need access to "default_style_applied" from UIElement.
9302         * control.h|.cpp: remove OnLoaded implementation from here.
9304         * runtime.cpp (Surface::Attach): move the Loaded handling *after*
9305         the zombie check.  not sure why we were ever doing it before.  but
9306         most importantly, this always Posts the loaded state, it doesn't
9307         emit it synchronously.  This allows us to do the changes in
9308         Application.cs/Deployment.cs that are needed to get ncaa working.
9310 2009-03-26  Chris Toshok  <toshok@ximian.com>
9312         * trigger.cpp (EventTrigger::SetTarget): fix regression, and ifdef
9313         out the code that allows other events to be used.  Maybe in SL3
9314         they'll allow it.
9316 2009-03-26  Jeffrey Stedfast  <fejj@novell.com>
9318         * textbox.cpp: Reengineered TextBox and PasswordBox to inherit
9319         from a new TextBoxBase class which handles almost all of the logic
9320         for us.
9322 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
9324         * multiscaleimage.cpp: replace the ldexp (1.0, n) by 1 << n
9326 2009-03-26  Jeffrey Stedfast  <fejj@novell.com>
9328         * textbox.cpp: Reengineered TextBox and PasswordBox to inherit
9329         from a new TextBoxBase class which handles almost all of the logic
9330         for us.
9332 2009-03-26  Jeffrey Stedfast  <fejj@novell.com>
9334         * deepzoomimagetilesource.cpp (DeepZoomImageTileSource::GetTileLayer):
9335         Use the new Uri::Combine() method.
9337         * uri.cpp (Uri::Combine): New method to combine a relative path to
9338         an existing Uri.
9340 2009-03-26  Chris Toshok  <toshok@ximian.com>
9342         * animation.cpp, clock.cpp: move some class-static fields around
9343         so they make more sense.
9345 2009-03-26  Chris Toshok  <toshok@ximian.com>
9347         * clock.h: move enum FillBehavior...
9349         * enums.h: ... to here.
9351 2009-03-26  Chris Toshok  <toshok@ximian.com>
9353         * animation2.h: nuke, moving everything into animation.h.
9355         * clock.h|.cpp, timesource.h|.cpp, timeline.h|.cpp: split out all
9356         the timesource/timeline stuff into separate files to reduce
9357         clock.cpp's size/complexity a bit.
9359         * mediaplayer.cpp, mediaelement.cpp, media.cpp,
9360         mms-downloader.cpp: track new locations of things (that were moved
9361         out of clock.h|.cpp)
9362         
9363         * cbinding.h, cbinding.cpp, type-generate.cpp,
9364         dependencyproperty.g.cpp: regen.
9365         
9366         * Makefile.am: add/remove files.
9367         
9368 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
9370         * multiscaleimage.h|.cpp: fix optimal_layer caclulation for tiles
9371         with an aspect_ratio < 1.0 (portrait images).
9373 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
9375         * multiscaleimage.h|.cpp: replace the single downloader code by
9376         a list of downloader, speed up downloading a lot. (Set --arbitrary--
9377         to 6 dlders for now)
9379 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
9381         * multiscaleimage.h|.cpp: Download directly from Render*
9383 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
9385         * multiscaleimage.h|.cpp: DownloadUri downloads a Uri (sic). Use an Uri
9386         as cache key, use the new get_image_uri_func everywhere.
9388 2009-03-26  Stephane Delcroix  <sdelcroix@novell.com>
9390         * tilesource.h:
9391         * deepzoomimagetilesource.h|.cpp: change the signature of
9392         get_image_uri_func. It returns a bool indicating success, the Uri is
9393         now a method arg, and no longer returned as a string pointer. Fixes 
9394         some random crashes with managed tilesoources.
9396 2009-03-25  Chris Toshok  <toshok@ximian.com>
9398         * uri.h (struct Uri): add accessor methods for all of the fields.
9399         The fields are still public for now, since a few places (e.g.,
9400         plugin-debug, playlist), make direct modifications.
9402         * multiscalesubimage.cpp, playlist.cpp, downloader.cpp,
9403         glyphs.cpp, mediaelement.cpp, application.cpp, media.cpp: use
9404         accessors when getting values.
9405         
9406 2009-03-25  Stephane Delcroix  <sdelcroix@novell.com>
9408         * uri.h, uri.cpp: GetHashCode (), so Uris can be used as keys for
9409         hash_tables.
9411 2009-03-25  Jeffrey Stedfast  <fejj@novell.com>
9413         * mediaelement.cpp (MediaElement::GetStateName): Don't pass an sl2
9414         argument to enums_int_to_str() anymore.
9416         * trigger.cpp (EventTrigger::SetTarget): Surface::IsSilverlight2()
9417         no longer exists, don't bother checking it. If the target is other
9418         than the Loaded event, we need to treat the whole thing as
9419         Silverlight2 anyway.
9421         * runtime.cpp (Surface::Surface): No longer takes a silverlight2
9422         argument or keeps such a flag.
9423         (Surface::EmitEventOnList): Don't need to care about the
9424         silverlight2 flag.
9425         (Surface::HandleUIKeyPress): Same.
9426         (Surface::HandleUIKeyRelease): Here too.
9428         * enums.cpp (enums_str_to_int): No longer takes an sl2 argument.
9429         (enums_int_to_str): Same.
9431         * xaml.cpp (value_from_str_with_typename): No longer takes an sl2
9432         argument.
9433         (value_from_str): Same.
9434         (convert_value_type): Same.
9435         (xaml_set_property_from_str): Same.
9437 2009-03-25  Geoff Norton  <gnorton@novell.com>
9439         * Makefile.am: 
9440         * binding.cpp: 
9441         * binding.h: 
9442         * cbinding.cpp: 
9443         * cbinding.h: 
9444         * frameworkelement.cpp: 
9445         * frameworkelement.h: 
9446         * type-generated.cpp: 
9447         * type.h: 
9448         * value.h: 
9449         * xaml.cpp:  Bindings live 100% in managed land now
9451 2009-03-25  Alan McGovern  <amcgovern@novell.com>
9453         * animation.cpp: Revert the changes in r130133 as they
9454           resulted in double frees of the Value *.
9456 2009-03-25  Jeffrey Stedfast  <fejj@novell.com>
9458         * value.cpp (Value::FreeValue): Don't dereference uri if it is
9459         NULL.
9461 2009-03-25  Stephane Delcroix  <sdelcroix@novell.com>
9463         * multiscaleimage.cpp: emit ViewportChanged
9465 2009-03-25  Stephane Delcroix  <sdelcroix@novell.com>
9467         * multiscaleimage.cpp: renders layer 0 too, drop some old debug code
9469 2009-03-25  Jackson Harper  <jackson@ximian.com>
9471         * xaml.cpp: Can put this back now that bindings are convertering
9472         strings properly.  Don't try to create a value object if we are
9473         just going into managed anyways.
9475 2009-03-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9477         * runtime.h:
9478         * runtime.cpp: Move IsVersionSupported implementation here,
9479           add GetBackgroundColor and sprinkle generator annotations.
9481         * cbinding.h:
9482         * cbinding.cpp: Regenerated.
9484 2009-03-25  Alan McGovern  <amcgovern@novell.com>
9486         * uri.cpp: Scheme was being used uninitialised if the if
9487           (!*start) check succeeded.
9489 2009-03-24  Chris Toshok  <toshok@ximian.com>
9491         * playlist.cpp (PlaylistParser::OnASXStartElement): use
9492         uri->IsScheme()
9493         (PlaylistParser::OnSMILStartElement): use uri->IsScheme()
9495         * uri.h, uri.cpp (struct Uri): add "bool IsScheme(const char
9496         *scheme)" so we can stop twiddling internals.
9498 2009-03-24  Chris Toshok  <toshok@ximian.com>
9500         * downloader.cpp: s/protocol/scheme for Uris
9502         * playlist.cpp: s/protocol/scheme for Uris
9504         * uri.h, uri.cpp: s/protocol/scheme for Uris.
9506 2009-03-24  Chris Toshok  <toshok@ximian.com>
9508         * uri.cpp: do as much as we can to get isAbsolute set correctly.
9510 2009-03-25  Andreia Gaita  <avidigal@novell.com>
9512         * clock.h: remove unused timeline field
9514 2009-03-25  Andreia Gaita  <avidigal@novell.com>
9516         * clock.cpp: Refresh the clock's duration, it might have changed
9517         after it's creation
9519 2009-03-24  Jeffrey Stedfast  <fejj@novell.com>
9521         * value.cpp (Value::Value): If the input value has a NULL uri,
9522         don't call Uri::Copy(), simply set the new uri to NULL too.
9524         * uri.cpp (Uri::Copy): If the 'from' argument is NULL, nullify the
9525         members in the 'to' argument. This should never happen anymore,
9526         but if it does, don't allow 'to' to have invalid pointers.
9528 2009-03-24  Jackson Harper  <jackson@ximian.com>
9530         * xaml.cpp: Need to make this a little smarter, revert for now
9531         because it breaks hardrock.
9533 2009-03-24  Jeffrey Stedfast  <fejj@novell.com>
9535         * layout.cpp (TextLayout::Layout*Wrap*): Fixed to not give 0.0
9536         actual_height extents if the text is "".
9538         * textbox.cpp (TextBoxView::UpdateText): Make sure that we never
9539         set NULL text on the layout so that we won't crash inside
9540         TextLayout::GetCursor() inside g_utf8_offset_to_pointer().
9542 2009-03-24  Jackson Harper  <jackson@ximian.com>
9544         * xaml.cpp: Don't attempt to convert values if we are going to
9545         managed anyways. This prevents things that can be created easily
9546         from strings being created from expressions.
9548 2009-03-24  Jackson Harper  <jackson@ximian.com>
9550         * animation2.h:
9551         * animation.cpp: Use an OBJECT for the Value property.
9552         * dependencyproperty.g.cpp: Regen
9553         
9554 2009-03-24  Stephane Delcroix  <sdelcroix@novell.com>
9556         * uri.h|uri.cpp: new Equals () methods, so we can use its generated
9557         cbinding as GCompareFunc.
9559 2009-03-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9561         * pipeline.cpp: Fix breakage.
9563 2009-03-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9565         * pipeline.h:
9566         * pipeline.cpp: Add a PassThroughDecoder for when the demuxer
9567           gives ready-to-present data. Make it handle pcm, rgb, rgba
9568           and yv12 formats.
9570         * type.h:
9571         * value.h:
9572         * type-generated.cpp: Regenerated.
9574 2009-03-23  Stephane Delcroix  <sdelcroix@novell.com>
9576         * deepzoomimagetilesource.h|cpp: pass a *Uri to the ctor, related
9577         changes to keep working
9579 2009-03-23  Jeffrey Stedfast  <fejj@novell.com>
9581         * uri.cpp (Uri::operator==): If all the != compares pass, return
9582         true. Don't let control reach the end of a non-void function!
9584         * textbox.cpp (TextBoxView::UpdateCursor): Emit a new cursor
9585         position changed event.
9587 2009-03-23  Chris Toshok  <toshok@ximian.com>
9589         * uri.cpp (Uri::Uri): I don't like this fix, mostly because it was
9590         due to vertigo doing some weird stuff that I don't fully
9591         understand :) but in the interest of not requiring every usage to
9592         include a null check, init originalString to g_strdup("") here.
9594 2009-03-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9596         * pipeline.cpp: FillBuffers: fix warning. NullDecoder: Chain
9597           Dispose.
9599 2009-03-23  Chris Toshok  <toshok@ximian.com>
9601         * uri.cpp (Uri::Copy): return immediately if @from == null.
9603 2009-03-21  Chris Toshok  <toshok@ximian.com>
9605         * bitmapimage.cpp (BitmapImage::OnPropertyChanged): pass the Uri
9606         to Application:GetResource.
9608         * application.[h,cpp] (Application::GetResource): this takes a Uri
9609         instead of a string now.
9611 2009-03-21  Chris Toshok  <toshok@ximian.com>
9613         * uri.[h,cpp]: a few changes:
9614           1. Add "bool isAbsolute" and "char* originalString" fields.
9615           2. Remove Clone and add a static Copy method which Value can use
9616              to copy all the internal fields.
9617           3. Add Free method.
9618           4. make it a struct so we'll only box when explicitly asked to in
9619              Value.cs.
9620           5. add an operator== so we can do non-reference comparisons in
9621              value.cpp
9623         * dependencyobject.h,
9624         dependencyobject.cpp (DependencyObject::SetMarshalledValueWithError):
9625         remove.
9627         * bitmapimage.[h,cpp]: UriSourceProperty is a Uri, not a string.
9629         * glyphs.[h,cpp]: FontUriProperty is a Uri, not a string.
9630         
9631         * deepzoomimagetilesource.h: UriSourceProperty is a Uri, not a
9632         string.
9633         
9634         * media.cpp: source->GetUriSource() returns a Uri*
9635         
9636         * mediaelement.[h,cpp]: SourceProperty is a Uri, not a string.
9638         * multiscalesubimage.[h,cpp] (MultiScaleSubImage::MultiScaleSubImage):
9639         use Uris more.
9641         * playlist.cpp (Playlist::MergeWith): don't Clone() the uris, as
9642         the Value ctor does that for us.
9644         * xaml.cpp (value_from_str): add Type::URI case, and rework the
9645         Type::BITMAPIMAGE case to use a Uri object.
9647         * validators.[h,cpp]: rename NonNullStringValidator to
9648         NonNullValidator.  All uses before didn't depend on the
9649         "string"-ness of the value, and we can make use of it for the Uri
9650         stuff.
9652         * value.h.in, value.cpp: add Uri support, and remove
9653         Value::Unmarshal.
9655         * dependencyproperty.g.cpp, cbinding.cpp|.h, type-generated.cpp,
9656         value.h: regen.
9658         * textblock.h, frameworkelement.h: track name change of NonNullStringValidator
9660 2009-03-20  Jeffrey Stedfast  <fejj@novell.com>
9662         * textbox.cpp (TextBoxView::UpdateText): Split out from
9663         TextBoxView::Layout(). Sets the text on the layout engine.
9664         (TextBoxView::Layout): Moved most of the logic into UpdateText()
9665         and the rest into Render(). We now just set the MaxWidth and lay
9666         out the text.
9667         (TextBoxView::Render): If dirty, after calling Layout(), call
9668         UpdateCursor(false) and clear the dirty flag.
9669         (TextBoxView::OnModelChanged): If the text changes, update it
9670         immediately on our layout context by calling UpdateText().
9671         (TextBoxView::SetTextBox): Call UpdateText() here as well and make
9672         it more robust against a NULL textbox argument.
9674 2009-03-20  Jeffrey Stedfast  <fejj@novell.com>
9676         * textbox.cpp (TextBoxView::Layout): No longer takes a cairo
9677         context argument since it never actually uses it anyway.
9678         (TextBoxView::MeasureOverride): Don't create a temporary cairo
9679         context since it never gets used.
9680         (TextBoxView::ArrangeOverride): Same.
9682 2009-03-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9684         * pipeline.h:
9685         * pipeline.cpp:
9686         * pipeline-asf.cpp: Re-implement fallback to http when mms
9687           fails.
9689 2009-03-20  Jeffrey Stedfast  <fejj@novell.com>
9691         * layout.cpp (TextLayout::SetText): Handle text being NULL a bit
9692         better.
9694 2009-03-20  Jackson Harper  <jackson@ximian.com>
9696         * xaml.cpp: Make sure we go to managed when using property element
9697         syntax for setting properties of managed kinds.
9699 2009-03-20  Jeffrey Stedfast  <fejj@novell.com>
9701         * layout.cpp (TextLayout::SetMaxWidth): If the new MaxWidth is
9702         larger than the current ActualWidth (and no wrapping has been
9703         done), then no need to re-layout. This should help improve
9704         performance of many cases of TextBox/Block MeasureOverride() and
9705         ArrangeOverride().
9706         (TextLayout::LayoutWrapWithOverflow): If we have to wrap a line,
9707         set is_wrapped to true.
9708         (TextLayout::LayoutWrap): Same.
9709         (TextLayout::Layout): Reset is_wrapped to false before laying out
9710         the text.
9712 2009-03-19  Larry Ewing  <lewing@novell.com>
9714         * multiscaleimage.cpp (RenderSingle): move the clipping to the
9715         outer loop here too.
9717 2009-03-19  Larry Ewing  <lewing@novell.com>
9719         * multiscaleimage.cpp (RenderCollection): rework the collection
9720         rendering slightly by moving the subimages out of the loop.
9722 2009-03-18  Chris Toshok  <toshok@ximian.com>
9724         * dependencyobject.cpp (unregister_depobj_names): another side of
9725         the TagProperty coin.  don't unregister names from it, since we
9726         aren't registering names from it.
9727         (DependencyObject::SetParent): remove the USERCONTROL extra
9728         registration from here.  it's not necessary now that jackson has
9729         fixed where we register the names.
9731         * dependencyproperty.cpp (DependencyProperty::RegisterFull): only
9732         freeze the default value if the property is not custom.
9734 2009-03-18  Jeffrey Stedfast  <fejj@novell.com>
9736         Fixes a crash in the Microsoft.SilverlightControls
9737         ControlsExtended unit tests (specifically the DatePickerTest).
9739         * control.h (class Control): Set a DefaultValue for the Foreground
9740         property.
9742         * textblock.h (class TextBlock): Same.
9744 2009-03-18  Jackson Harper  <jackson@ximian.com>
9746         * xaml.cpp: When we use x:Name to set an elements name, make sure
9747         that it gets set in the namescope of it's containing element.
9748         * dependencyobject.cpp|h: New method that allows setting objects
9749         name in a different namescope, this will also result in the name
9750         being set in the objects namescope.
9751         - Allow duplicate objects if they are the same object
9752         * namescope.cpp: Allow duplicates if they are the same object.
9754 2009-03-18  Jeffrey Stedfast  <fejj@novell.com>
9756         * textbox.cpp (TextBox::Initialize): Don't bother connecting to
9757         MouseEnter/Leave, we don't care.
9758         (TextBoxView::TextBoxView): Connect to MouseLeftButtonDown/Up.
9759         (TextBoxView::OnMouseLeftButtonDown): Proxy the event to our
9760         parent TextBox control.
9761         (TextBoxView::OnMouseLeftButtonUp): Same.
9763         * runtime.cpp (Surface::FocusElement): Don't do all the checks
9764         here, they are now done in Control::Focus().
9765         (Surface::HandleMouseEvent): Don't loop to FocusElement() here, we
9766         now expect this to be done in the MouseLeftButtonDown event
9767         callback.
9769         * control.cpp (Control::Focus): New method to focus a control.
9771 2009-03-18  Jb Evain  <jbevain@novell.com>
9773         * deployment.cpp: add a MOON_PROFILER environment variable
9774         to control profiling of the embedded mono.
9776 2009-03-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9778         * pipeline.h:
9779         * pipeline.cpp: Remove unused field.
9781 2009-03-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9783         * pipeline-asf.cpp: Fix visitmix.
9785 2009-03-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9787         * debug.h:
9788         * debug.cpp:
9789         * deployment.cpp: Add signal handlers for crash detection in
9790           libmoon instead of libshocker, this way there's not a race
9791           condition between loading mono and installing a signal
9792           handler in libshocker (the signal handler has to get
9793           installed before loading mono, otherwise we'll crash for
9794           real due to managed exceptions getting caught by the signal
9795           handler).
9797 2009-03-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9799         * pipeline.cpp: More asserts.
9801 2009-03-17  Jeffrey Stedfast  <fejj@novell.com>
9803         * xap.cpp (Xap::Unpack): Canonicalize the extracted filename to
9804         lowercase.
9806 2009-03-17  Jeffrey Stedfast  <fejj@novell.com>
9808         * xap.cpp (Xap::Unpack): Don't mix & match malloc/g_free, don't
9809         shadow the fname method argument, and don't leak if
9810         finfo.external_fa has the 4th bit set.
9812 2009-03-17  Chris Toshok  <toshok@ximian.com>
9814         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
9815         don't do the SetParent stuff (even when the value is a
9816         DependencyObject) if the property is UIElement::TagProperty.  This
9817         fixes the cyclic tree warning in RichTextBox.  Right now it's
9818         hardcoded to check for that property, but we need to move it to
9819         the DP metadata, and do an audit of other "typeof(object)" DP's to
9820         make sure we aren't setting parent where we shouldn't be.
9822 2009-03-17  Stephane Delcroix  <sdelcroix@novell.com>
9824         * collection.h|cpp: allow MSISICollections to be sorted by ZIndex
9826 2009-03-16  Jackson Harper  <jackson@ximian.com>
9828         * template.cpp: It doesn't really change anything because
9829         templates are never parented, but technically they should be in non
9830         temporary namescopes.
9832 2009-03-16  Jeffrey Stedfast  <fejj@novell.com>
9834         * textbox.cpp (TextBox::CursorDown, TextBox::CursorUp): Fixed to
9835         go up/down 'n' lines instead of always 1 if n wouldn't overflow.
9837 2009-03-16  Stephane Delcroix  <sdelcroix@novell.com>
9839         * multiscaleimage.cpp:
9840         * multiscalesubimage.h|cpp: keep a ref to the parent MSI, Invalidate
9841         it on VP origin or width changed.
9843 2009-03-13  Stephane Delcroix  <sdelcroix@novell.com>
9845         * multiscaleimage.cpp: fix the clipping issue for collections
9847 2009-03-13  Chris Toshok  <toshok@ximian.com>
9849         * type.h, type-generated.cpp: regen.
9851 2009-03-13  Chris Toshok  <toshok@ximian.com>
9853         * xaml.cpp (value_from_str): in the int32 and int64 case, we need
9854         to parse until we get an invalid character, and return the value
9855         parsed up to that point.  it's only an error if there's no valid
9856         characters.
9858 2009-03-13  Chris Toshok  <toshok@ximian.com>
9860         * textblock.h (class Inline): inlines don't permit multiple
9861         parents (Fixes RunTest.RunMultipleParents).
9863 2009-03-13  Geoff Norton  <gnorton@novell.com>
9865         * xap.cpp: Zip files can contain directory entires, we shouldn't
9866         try to open them as files.
9868 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9870         * xaml.cpp:
9871         * control.cpp: Added a null check to prevent crashes.
9873 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9875         * mediaelement.h:
9876         * mediaelement.cpp: Attach to Deployment::ShuttingDownEvent
9877           and clean up upon shutdown.
9879         * pipeline.h:
9880         * pipeline.cpp: Remove a broken attempt to ensure that we
9881           don't leave Media threads running after having shut down.
9883 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9885         * playlist.cpp: Dispose: fix a typo - dispose the media not
9886           ourselves.
9888 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9890         * playlist.cpp: DownloadProgressChangedHandler: Don't do
9891           anything if we've been disposed. Fixes a warning. 
9893 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9895         * mediaelement.cpp: Dispose: We need to dispose the media
9896           player too.
9898 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9900         * downloader.h: DownloaderResponse: Add virtual ref/unref
9901           methods.
9903 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9905         * mediaplayer.cpp: SetTimeout: Add null-checks to prevent
9906           crashes when we can't find a time manager. Also if we can't
9907           remove a timeout, we have to leak ourselves, otherwise the
9908           timeout might get called after we're destroyed.
9910 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9912         * deployment.h:
9913         * deployment.cpp:
9914         * type-generated.cpp: Added Deployment::ShuttingDownEvent.
9915           This will be used by MediaElement to ensure that all media
9916           threads are cleaned up even if the MediaElement itself is
9917           leaked.
9919 2009-03-13  Stephane Delcroix  <sdelcroix@novell.com>
9921         * multiscaleimage.cpp: no longer use precompiled table for morton
9922         layout, but use short and fast function in place.
9924 2009-03-13  Stephane Delcroix  <sdelcroix@novell.com>
9926         * multiscaleimage.cpp: check for null tiles uri returned by
9927         get_tile_func
9929 2009-03-13  Stephane Delcroix  <sdelcroix@novell.com>
9931         * multiscaleimage.cpp: compute the tie opacity on rendering, avoid
9932         having to loop over all the tiles on every tick.
9934 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9936         * runtime.cpp: Surface::Dispose: call SetSurface (NULL) on the
9937           toplevel element before disposing it, since the SetSurface
9938           will be propagated to all descendants, while Dispose will
9939           detach descendants (preventing subsequent SetSurface calls
9940           to reach them).
9942 2009-03-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9944         * mediaplayer.cpp: Open: when we add an event handler to the
9945           video stream's FirstFrameEnqueued event, the first frame
9946           might already be in the queue, so just call LoadVideoFrame
9947           once always. Fixes test-canvas-no-size.html.
9949 2009-03-12  Geoff Norton  <gnorton@novell.com>
9951         * src/runtime.cpp: MouseLeaveEvent is a MouseEventArgs
9953 2009-03-12  Geoff Norton  <gnorton@novell.com>
9955         * deepzoomimagetilesource.cpp: Ensure we dont override default values
9956         if nothing has been provided in the XML
9958 2009-03-12  Geoff Norton  <gnorton@novell.com>
9960         * animation.cpp:
9961         * animation.h: Implement SkipToFill
9963 2009-03-12  Larry Ewing  <lewing@novell.com>
9965         * canvas.cpp: don't chain up the FE in the overides that is very
9966         wrong these days.
9968 2009-03-12  Chris Toshok  <toshok@ximian.com>
9970         * runtime.cpp (Surface::CreateArgsForEvent): fix crash in the rich
9971         text demo when you click on the buttons.  we need to be creating
9972         RoutedEventArgs, not EventArgs.
9974 2009-03-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9976         * codec-version.h.in: Bump.
9978 2009-03-12  Alan McGovern  <amcgovern@novell.com>
9980         * dependencyproperty.cpp: 1) Refactor the code so that
9981           open/closing parens are parsed in a separate step to
9982           typename/property name. Then merge the codepaths for the
9983           default and '(' case.
9984         2) Attached properties can only be specified inside parens. So
9985           "Canvas.Left" is invalid but "(Canvas.Left)" is valid.
9986         3) For non-attached properties both "Rectangle.RadiusX" and
9987           "(Rectangle.RadiusX)" are acceptable.
9989 2009-03-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9991         * pipeline.cpp: Add a null check.
9993 2009-03-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9995         * audio.cpp: Use media's thread-safe event handling.
9997         * playlist.h:
9998         * playlist.cpp: PlaylistRoot: keep a reference to our media
9999           player (i.e. don't use MediaElement's media player, it may
10000           change). Use the thread-safe event support in media.
10002         * mediaplayer.h:
10003         * mediaplayer.cpp: Use media's thread-safe event handling.
10004           Don't tick while waiting for the media to get the first
10005           frame, just attach an event handler to
10006           FirstFrameEnqueuedEvent.
10008         * pipeline.h:
10009         * pipeline.cpp: IMediaObject: Add thread-safe event support.
10010           Media: inherit from IMediaObject to get the thread-safe
10011           event support.
10013         * pipeline-asf.cpp: ASFDemuxer::SeekAsyncInternal: don't
10014           ignore ASFReader::Seek's result, handle it correctly.
10015           EnqueueGetFrame: requeue a get frame request if we don't
10016           have enough data yet.
10018 2009-03-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10020         * pipeline.h: Move IMediaObject above Media so that Media can
10021           inherit from IMediaObject.
10023 2009-03-12  Andreia Gaita  <avdigal@novell.com>
10025         * clock.[h|cpp]: Fix DispatcherTimer when the timer is stopped and
10026         started during the tick event; in some cases the time between these
10027         two calls was enough to have an extra tick on the time manager, and
10028         the DispatcherTimer would be advanced again even though it was
10029         stopped, and this would happen after the Completed handler was
10030         removed and before it was added again.
10031         Fixes the RestartTimer2 test and SilverlightChess.
10033 2009-03-11  Jeffrey Stedfast  <fejj@novell.com>
10035         * textbox.cpp (TextBox::OnPropertyChanged): Don't create selection
10036         brushes here anymore.
10037         (class TextBoxDynamicPropertyValueProvider): Return default
10038         selection brushes if they've been initialized (happens in
10039         TextBoxView::Render).
10040         (TextBoxView::Render): Initialize the selection brushes if they
10041         haven't already been.
10043 2009-03-11  Alan McGovern  <amcgovern@novell.com>
10045         * dependencyproperty.cpp: Fix issues in resolve_property_path
10046           with some complex paths. Add two new NUnit tests which
10047           verify the correct properties are animated.
10049 2009-03-11  Jeffrey Stedfast  <fejj@novell.com>
10051         * text.cpp|h: Split into textblock.cpp|h and glyphs.cpp|h
10053         * downloader.cpp (downloader_deobfuscate_font): Moved here from
10054         text.cpp and made public.
10056 2009-03-11  Jeffrey Stedfast  <fejj@novell.com>
10058         * layout.cpp (TextLayoutGlyphCluster::Render): If we have nothing
10059         to render, no-op.
10061 2009-03-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10063         * brush.cpp: ImageBrush::image_failed: we need to ref the
10064           eventargs when we do emit chaining.
10066 2009-03-11  Chris Toshok  <toshok@ximian.com>
10068         * border.cpp (Border::OnPropertyChanged): Border is ever the red
10069         headed stepchild.  It has its own validation wrt SetLogicalParent,
10070         that behaves like the InvalidOperationException case in
10071         FrameworkElement, but throws ArgumentException instead of IOE.
10073 2009-03-11  Chris Toshok  <toshok@ximian.com>
10075         * canvas.h, canvas.cpp (Canvas::OnCollectionItemChanged): move the
10076         Top/Left property changed handling from OnSubPropertyChanged to
10077         here, and remove OnSubPropertyChanged.  Basically property changes
10078         on items in collections are never communicated back using
10079         OnSubPropertyChanged.  That is reserved for direct children of the
10080         object (fill/stroke brushes, etc.)
10082         * grid.h, grid.cpp: same.
10084         * dependencyobject.cpp (DependencyObject::NotifyListenersOfPropertyChange):
10085         remove this use of GetParent (yay!) since we don't implicitly
10086         notify our logical parent if an attached property was changed.  we
10087         just notify all listeners.
10089         * clock.h, clock.cpp, animation.cpp: in an effort to disambiguate,
10090         rename GetParent/SetParent to GetParentClock/SetParentClock.
10092 2009-03-10  Chris Toshok  <toshok@ximian.com>
10094         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
10095         hook up (and unhook) the collection events if the dob is a
10096         Type::COLLECTION.  Remove the stupid parent check that was
10097         breaking everything.  Pass in our MoonError parameter to
10098         OnPropertyChanged so we can communicate it back.
10099         (DependencyObject::ClearValue): unhook from the collection events.
10101         * dependencyobject.h (SetLogicalParent, GetLogicalParent): remove.
10102         these methods are now in FrameworkElement.
10103         (SetParent, GetParent): their replacements.  Hopefully these are
10104         not long for this world, and I'm working on getting rid of them.
10105         they are used in very few places now (basically collection.cpp and
10106         provider.cpp).
10107         (collection_changed, collection_item_changed): two new
10108         EventHandlers so we can make collection stop calling directly into
10109         its parent.
10110         (OnPropertyChanged): add a MoonError* arg here so we can transmit
10111         errors back from the various OnPropertyChanged overrides.
10112         
10113         * validators.h,
10114         validators.cpp (Validators::ContentControlContentValidator): add
10115         half of the "multiple parents for .Content" checks here.  This
10116         runs before the value is actually set and checks to see if the
10117         logical parent is a Panel subclass.  If it is it throws an
10118         ArgumentException instead of an InvalidOperationException (don't
10119         ask me.)
10121         * collection.cpp, collection.h: remove the assumption that we can
10122         just call into our parent to notify of collection/collection item
10123         changes.  instead just emit an event.
10125         * eventargs.h: define CollectionItemChangedEventArgs for the new
10126         Collection::ItemChangedEvent.
10127         
10128         * contentcontrol.h,
10129         contentcontrol.cpp (ContentControl::OnPropertyChanged): call
10130         SetLogicalParent on the old/new contents if they're
10131         FrameworkElements, and if either returns an error, return
10132         immediately.
10134         * usercontro.h, usercontrol.cpp (UserControl::OnPropertyChanged):
10135         same.
10137         
10138         * frameworkelement.cpp, frameworkelement.h: move
10139         Set/GetLogicalParent here, and make the InvalidOperationException
10140         on multiple parents unconditional.
10141         
10142         * panel.cpp (Panel::OnCollectionChanged): if the new/old child is
10143         a FrameworkElement, set its logical parent.
10145         * animations.*, bitmapimage.*, border.*, brush.*, canvas.*,
10146         control.*, deepzoomimagetilesource.*, geometry.*, grid.*, media.*,
10147         mediaelement.*, multiscaleimage.*, popup*, shape.*, stylus.*,
10148         textbox.*, text.*, transform.*, uielement.*: change all the
10149         OnPropertyChanged signatures to include MoonError*
10151         * cbinding.*, dependencyproperty.g.cpp, type-generated.cpp,
10152         type.h, value.h: regen.
10154         * resources.cpp: s/LogicaParent/Parent.
10155         
10156         * provider.h, provider.cpp (StylePropertyValueProvider::unlink_converted_value):
10157         not really part of this larger change, but needed for the
10158         toggleref stuff.  we need to call SetParent on all the
10159         DO-subclassed converted values so they never reference a trashed
10160         parent pointer.
10161         (get_parent): add more cases here, none of which I'm sure are
10162         correct.
10164 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
10166         * textbox.cpp (PasswordBox::OnPropertyChanged): Fixed.
10167         (TextBox::TextBox): New protected ctor that PasswordBox's ctor can
10168         chain up to.
10169         (PasswordBox::PasswordBox): Chain up to the TextBox ctor we want,
10170         so that we don't register event callbacks twice. Doh.
10172 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
10174         * validators.cpp (Validators::PasswordValidator):
10175         Removed. PasswordBox::PasswordProperty is internal, so we map it
10176         to TextBox::TextProperty and manually implement the
10177         getter/setter (which si where we manually throw an
10178         ArgumentNullException if set to null).
10180         * textbox.cpp (PasswordBox::OnPropertyChanged): Manually syncing
10181         Password and Text properties sucks, let's not do it. Instead,
10182         we'll map PasswordProperty to TextProperty on the managed
10183         side. Also need to Invalidate() if PasswordChar changes.
10184         (TextBoxView::Layout): Mask the text with PasswordChars if we are
10185         rendering a PasswordBox's content.
10187 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
10189         * textbox.cpp (PasswordBox::OnPropertyChanged): Keep the Text and
10190         Password properties in sync. Don't emit a PasswordChanged event,
10191         that's mapped to TextChanged on the managed side.
10192         (TextBox::OnApplyTemplate): Handle Border and Panel
10193         ContentElements as well.
10195         * textbox.h (class PasswordBox): Get rid of the
10196         PasswordChangedEvent and also some of the properties that it
10197         shares with TextBox.
10199 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
10201         * contentcontrol.cpp (ContentControl::ContentControl): Use the
10202         nice new ManagedTypeInfo ctor.
10204         * type.h.in (struct ManagedTypeInfo): Added a nice ctor.
10206         * textbox.cpp (TextBox::Initialize): New protected method; all of
10207         the old ctor logic was moved here so that PasswordBox could reuse
10208         it.
10209         (TextBox::TextBox): Call Initialize() with out type info.
10210         (PasswordBox::PasswordBox): Call Initialize() with out type info.
10211         (PasswordBox::Cursor*): Override some of TextBox's cursor
10212         navigation because we don't "see" whitespace or lines.
10214 2009-03-10  Larry Ewing  <lewing@novell.com>
10216         * textbox.cpp (OnApplyTemplate): don't crash it ContentElement
10217         isn't found in the template.
10219 2009-03-10  Jackson Harper  <jackson@ximian.com>
10221         * xaml.cpp: Don't use GetLogicalParent here because the parenting
10222         hasn't been setup yet. Wse the XamlElementInstance tree for
10223         figuring out who our parent is.
10225 2009-03-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10227         * brush.cpp: ImageBrush::image_failed: propagate event args.
10229 2009-03-10  Jeffrey Stedfast  <fejj@novell.com>
10231         * layout.cpp (TextLayout::Layout*Wrap*): Changed the outer while
10232         loops into do-while loops so that the line->height and
10233         line->descent get set properly. Needed to fix
10234         TextLayout::GetCursor().
10236 2009-03-10  Jackson Harper  <jackson@ximian.com>
10238         * xaml.cpp: Do some basic type conversion for resources, this
10239         allows you to do things like store a font family as
10240         <clr:String>Arial</clr:String>.
10242 2009-03-10  Jackson Harper  <jackson@ximian.com>
10244         * value.h:
10245         * value.h.in: Consistentify method name.
10246         
10247 2009-03-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10249         * uielement.cpp: GetTimeManager: if we don't have a surface,
10250           try to get it from the deployment.
10252 2009-03-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10254         * pipeline-ui.cpp:
10255         * pipeline-nocodec-ui.cpp: Set current deployment in
10256           ResponseEvent.
10258 2009-03-09  Larry Ewing  <lewing@novell.com>
10260         * border.cpp (Render): set the fill rule after drawing the clip
10261         geometry since it will set the fill rule for itself.
10263 2009-03-09  Chris Toshok  <toshok@ximian.com>
10265         * enums.cpp (cursors_map): add the missing Size* members here.
10266         gets the
10267         http://www.adefwebserver.com/DotNetNukeHELP/Misc/Silverlight/GanttChart/Default.aspx
10268         gallery site to the point where it's displaying a UI.
10270 2009-03-09  Jeffrey Stedfast  <fejj@novell.com>
10272         * textbox.cpp (TextBox::KeyPressUnichar): Fixed a logic goof that
10273         caused a segfault.
10275 2009-03-09  Jeffrey Stedfast  <fejj@novell.com>
10277         * textbox.cpp (TextBox::TextBox): Initialize have_offset to false
10278         and cursor_offset to 0.0. Silverlight doesn't use character column
10279         when moving the cursor up/down, it uses the cursor's x-offset.
10280         (TextBox::CursorDown): Implement using TextLayoutLines.
10281         (TextBox::CursorUp): Same.
10282         (TextBoxView::GetLineFromY): New convenience method.
10283         (TextBoxView::GetLineFromIndex): Another new method.
10285         * layout.cpp (TextLayoutLine::GetCursorFromX): New convenience
10286         method.
10287         (TextLayout::GetCursorFromXY): Moved the remaining logic into
10288         TextLayoutLine::GetCursorFromX().
10289         (TextLayout::GetLineFromY): Provide the line index to our caller,
10290         if requested.
10291         (TextLayout::GetLineFromIndex): New convenience method.
10293 2009-03-09  Jeffrey Stedfast  <fejj@novell.com>
10295         * textbox.cpp (TextBoxView::UpdateCursor): We shouldn't need the
10296         cursor == 0 hack anymore.
10298 2009-03-09  Andreia Gaita  <avidigal@novell.com>
10299     
10300         * dependencyobject.cpp: revert r128895 (toggleref changes) for now,
10301         needs more tests
10303 2009-03-09  Andreia Gaita  <avidigal@novell.com>
10305         * dependencyobject.cpp: do the toggleref callbacks so the managed
10306         side can dispose of things properly
10308 2009-03-09  Jeffrey Stedfast  <fejj@novell.com>
10310         * layout.cpp (unichar_combining_class): New function to protect
10311         against using Glib's g_unichar_combining_class() if the API isn't
10312         available.
10314 2009-03-09  Jackson Harper  <jackson@ximian.com>
10316         * xaml.cpp: Store the top element in the xaml context so we can
10317         still lookup handlers when parsing templates.
10319 2009-03-09  Stephane Delcroix  <sdelcroix@novell.com>
10321         * multiscaleimage.cpp: fix the loop ending conditions for images
10322         with extreme aspect ratios.
10324 2009-03-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10326         * deployment.cpp: Add support for setting the root directory
10327           using MOON_PATH.
10329 2009-03-06  Larry Ewing  <lewing@novell.com>
10331         * multiscaleimage.cpp (Render): cache the surface type as a
10332         similar surface to the rendering target to speed up rendering a
10333         bit.
10335 2009-03-06  Larry Ewing  <lewing@novell.com>
10336         
10337         * layout.cpp (SetText): handle null text here.
10339 2009-03-06  Geoff Norton  <gnorton@novell.com>
10341         * codec-version.h.in: When we change the layout of 
10342         dependencyobject, we need to bump the ABI
10344 2009-03-06  Alan McGovern  <amcgovern@novell.com>
10346         * clock.h:
10347         * cbinding.h:
10348         * animation.h:
10349         * cbinding.cpp:
10350         * animation.cpp: If the PropertyPath supplied to the
10351           TargetPropertyProperty is a DependencyProperty, we need a
10352           special method to retrieve it. Normally PropertyPaths which
10353           are instantiated with a DependencyProperty are returned as
10354           'null' from native. Also add method for getting the manual
10355           target.
10357 2009-03-06  Alan McGovern  <amcgovern@novell.com>
10359         * clock.h:
10360         * ChangeLog:
10361         * cbinding.h:
10362         * animation.h:
10363         * cbinding.cpp:
10364         * animation.cpp: Revert - I didn't mean to commit that yet.
10365           It's not complete.
10367 2009-03-06  Alan McGovern  <amcgovern@novell.com>
10369         * propertypath.h: Need to null check the path before passing
10370           to strcmp - It is possible for the path to be null now.
10372 2009-03-06  Andreia Gaita  <avidigal@novell.com>
10374         * dependencyobject.[h|cpp]: Add toggleref event registration
10375         and handler
10377         * cbinding.[h|cpp]: regen
10379 2009-03-05  Jeffrey Stedfast  <fejj@novell.com>
10381         * layout.cpp (FindLastWord): We need to walk backwards, not
10382         forewards. Oops.
10384 2009-03-05  Alan McGovern  <amcgovern@novell.com>
10386         * propertypath.h: If we set a propertypath with a
10387           DependencyProperty, set the 'path' string to null. This
10388           avoids extra marshalling when it's not needed.
10390 2009-03-04  Geoff Norton  <gnorton@novell.com>
10392         * deployment.cpp: Finalizing the domain destroys all objects
10393         immediately.  Its possible that we might end up invoking more
10394         finalizers in the unref drain thta begins after dispose, so 
10395         we're going to force a full gc and finalizer run of the collected
10396         objects here and allow ~Deployment to finalize the entire domain.
10398 2009-03-04  Jeffrey Stedfast  <fejj@novell.com>
10400         * pipeline.cpp (Media::DisposeObjectInternal): Return
10401         MEDIA_SUCCESS so that control doesn't reach the end of a non-void
10402         function.
10404         * layout.cpp (TextLayout::GetCursorFromXY): Don't use
10405         g_unichar_iszerowidth().
10406         (TextLayout::GetCursor): Same.
10408 2009-03-04  Larry Ewing  <lewing@novell.com>
10410         * border.cpp, border.h: clean up the path_only drawing a
10411         little. set CanFindElement more appropriately.
10413         * panel.cpp: undo the path_only logic a bit.
10415         * frameworkelement.cpp: make FindElementInHostCoordinates a little
10416         simpler.
10418         * uielement.cpp, uielement.h: Make the CanFindElement default be
10419         false, and remove the broken in_stroke check.
10421 2009-03-04  Stephane Delcroix  <sdelcroix@novell.com>
10423         * multiscaleimage.h|cpp: generate PInvoke for Setters so the
10424         animations are used from managed Set() too
10426 2009-03-04  Stephane Delcroix  <sdelcroix@novell.com>
10428         * multiscaleimage.h|cpp: pan and zoom animation in
10429         Viewport[Origin|Width] properties Setters
10431 2009-03-04  Jeffrey Stedfast  <fejj@novell.com>
10433         * layout.cpp: Disable debug printfs unless layout debugging is
10434         enabled.
10436 2009-03-04  Jeffrey Stedfast  <fejj@novell.com>
10438         Fixes the last failing case in LineBreakBasic1.htm
10440         * layout.cpp (layout_word_wrap): When checking for last_word, use
10441         <= instead of < because inptr, at this point, is at the first byte
10442         *after* the character just gobbled up.
10444 2009-03-04  Jeffrey Stedfast  <fejj@novell.com>
10446         Fixes ActualWidth/Height extents for LineBreakBasic1.htm
10448         * layout.cpp (TextLayout::LayoutWrapWithOverflow): ActualWidth
10449         extents include trailing LWSP if-and-only-if that trailing LWSP is
10450         on the last line.
10451         (TextLayout::LayoutNoWrap): Same.
10452         (TextLayout::LayoutWrap): Same.
10454 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
10456         * layout.cpp (GenerateGlyphCluster): Don't crash if glyph->path is
10457         NULL.
10459         * font.cpp (TextFont::GetGlyphInfo): If unichar is
10460         0xFEFF (zero-width no-break space), then return a global
10461         GlyphInfo. We do this because at least some fonts won't have this
10462         glyph and we don't want to render an empty box (the default
10463         glyph).
10465 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
10467         * layout.cpp (layout_word_wrap): Silverlight ignores breaking
10468         rules for glyphs that the font doesn't contain.
10470 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
10472         * layout.cpp (layout_word_wrap): Oops, need to keep op.inptr and
10473         op.prev up-to-date if we combine chars.
10475 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
10477         Fixes a few more cases in LineBreakClasses.htm
10479         * layout.cpp (utf8_find_last_word): If a zero-width space follows
10480         a combining mark, treat the zws as part of a word and not lwsp.
10481         (layout_word_lwsp): Do NOT ignore zero-width characters, let the
10482         font metrics do the talking.
10483         (TextLayout::LayoutNoWrap): Same.
10484         (layout_word_overflow): Same combining-mark fix as above.
10485         (layout_word_wrap): Same. Also changed the way we keep track of
10486         break opportunities. After discoverign that we need to wrap, get
10487         the break-type for the follwoing character before working
10488         backwards. Try to return false if we manage to squeeze the entire
10489         word onto the line anyway.
10491 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
10493         Fixes LineBreakBasic2.htm and some parts of LineBreakClasses.htm
10495         * layout.cpp (BreakSpace): Treat tab as a BREAK_SPACE.
10496         (utf8_find_last_word): Use BreakSpace() instead of
10497         g_unichar_isspace() since that's how the rest of our breaking
10498         logic works.
10499         (FindLastWord): Same.
10500         (layout_word_lwsp): Don't canonicalize all LWSP as a SPACE, just
10501         do it for tabs.
10502         (LayoutNoWrap): Same.
10504 2009-03-03  Jeffrey Stedfast  <fejj@novell.com>
10506         * layout.cpp (TextLayout::SetTextWrapping): Default unknown values
10507         to Wrap here so that we can avoid a re-layout if the old wrapping
10508         mode was 'Wrap'.
10510 2009-03-02  Jeffrey Stedfast  <fejj@novell.com>
10512         Fixes some wrapping issues in LineBreakBasic1.htm
10514         * layout.cpp (TextLayout::LayoutWrap): Use a new 'wrapped' state
10515         variable to keep track of whether or not the layout_word_wrap()
10516         function returned. We want to keep 'linebreak' as a separate
10517         state. If we were told to wrap, but we've reached the end of the
10518         run, postpone wrapping until the next run (which might start with
10519         lwsp).
10521 2009-03-02  Jeffrey Stedfast  <fejj@novell.com>
10523         Fixes for AdobeFonts.htm
10525         * layout.cpp (TextLayoutGlyphCluster::Render): Give the underline
10526         its own Fill() so that if any glyphs have a tail that descends
10527         below the baseline into the underline, the fill doesn't negate
10528         itself where the paths overlap.
10529         (GenerateGlyphCluster): Use the font->Ascender() to get the
10530         baseline offset from the top. Height() + Descender() isn't quite
10531         right. Should probably fix other places that use that strategy as
10532         well, but one step at a time.
10534 2009-03-02  Jeffrey Stedfast  <fejj@novell.com>
10536         * textbox.cpp (TextBoxView::TextBoxView): Init selection_changed
10537         to false.
10538         (TextBoxView::Render): If the selection has changed, update the
10539         selection on the layout engine.
10540         (append_runs): Removed; no longer needed.
10541         (TextBoxView::Layout): Updated to use the new layout APIs.
10542         (TextBoxView::OnModelChanged): When the selection changes, don't
10543         set dirty to true. Instead, set selection_changed to true.
10544         (TextBoxView::SetTextBox): Set the default text attributes on our
10545         layout with the textbox as the source.
10547         * text.cpp (TextBlock::Layout): Updated to use the new text layout
10548         APIs.
10550         * layout.cpp: All new layout/rendering engine.
10552 2009-03-04  Geoff Norton  <gnorton@novell.com>
10554         * deployment.cpp: When we dispose the domain, we force a full GC
10555         run to happen, otherwise objects could retain a ref to the deployment
10556         causing ~Deployment to never be called.
10558 2009-03-04  Jackson Harper  <jackson@ximian.com>
10560         * xaml.cpp|h: Add a new method for grabbing the element_name of a
10561         xaml element instance from managed.
10563 2009-03-04  Alan McGovern  <amcgovern@novell.com>
10565         * src.mdp: Add missing files to the MD solution
10567 2009-03-03  Chris Toshok  <toshok@ximian.com>
10569         * collection.cpp (DependencyObjectCollection::AddedToCollection):
10570         add a check for PermitsMultipleParents here.
10572         * collection.h (UIElementCollection::AddWithError): remove.
10574         * dependencyobject.h (DependencyObject::PermitsMultipleParents):
10575         return true by default.
10577         * style.h (class Setter): setters don't permit multiple parents.
10579         * uielement.h (class UIElement): neither do uielements.
10581         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
10582         change the UIElement test to a PermitsMultipleParents test.
10584 2009-03-03  Chris Toshok  <toshok@ximian.com>
10586         * cbinding.h, cbinding.cpp: regen.
10587         
10588         * collection.h, collection.cpp (DependencyObjectCollection::AddedToCollection): if
10589         the parent of the DO is a collection, throw an exception.
10590         (UIElementCollection::CanAdd): remove.
10591         (DependencyObjectCollection::CanAdd): remove.
10592         (HitTestCollection::CanAdd): remove.
10594         * dependencyobject.cpp (DependencyObject::ProviderValueChanged):
10595         reinstate the multiple parents warning, but make it a MoonError,
10596         and make it only apply to visual elements (UIElement subclasses,
10597         specifically).
10599         * dependencyobject.h (GetLogicalParentIncludingCollections): add a
10600         new getter for just the logical_parent field, which is horribly
10601         named.
10602         (GetLogicalParent): add a pinvoke for this.
10604 2009-03-03  Jackson Harper  <jackson@ximian.com>
10606         * xaml.cpp|h: SetProperty now takes a Value instead of a
10607         DependencyObject, this allows us to set properties on things like
10608         enums.
10610 2009-03-03  Geoff Norton  <gnorton@novell.com>
10612         * pipeline.cpp:
10613         * pipeline-ui.cpp: Stop storing the mscodec path in the configuration
10614         file.
10616 2009-03-03  Alan McGovern  <amcgovern@novell.com>
10618         * value.cpp:
10619         * propertypath.h: Complete the implementation of PropertyPath.
10620           If it is constructed with a DependencyProperty in managed,
10621           propagate this to native.
10623         * dependencyproperty.cpp: If the property path instance was
10624           constructed with a DependencyProperty *, immediately return
10625           it.
10627 2009-03-03  Alan McGovern  <amcgovern@novell.com>
10629         * animation.h:
10630         * animation.cpp: Implement the required exceptions for managed
10631           code when starting storyboards which are missing properties
10632           or can't find the target element/property.
10634 2009-03-03  Alan McGovern  <amcgovern@novell.com>
10636         * src.mdp: Add propertypath.h to the MD solution
10638 2009-03-03  Alan McGovern  <amcgovern@novell.com>
10640         * animation.h:
10641         * animation.cpp: Storyboards should always use the surface in
10642           the current deployment when starting. They don't have to be
10643           explicitly attached to a surface - SL2 has different
10644           semantics as compared to SL1 which caused some of the 1.0
10645           tests to flag this as a regression.
10647 2009-03-03  Alan McGovern  <amcgovern@novell.com>
10649         * ChangeLog:
10650         * animation.h:
10651         * animation.cpp: Revert last change. I have the test failing
10652           locally now.
10654 2009-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10656         * pipeline-asf.cpp: Add a null check.
10658 2009-03-03  Alan McGovern  <amcgovern@novell.com>
10660         * animation.h:
10661         * animation.cpp: Storyboards should always use the surface in
10662           the current deployment when starting. They don't have to be
10663           explicitly attached to a surface.
10665 2009-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10667         * dependencyobject.cpp: EventObject::SetSurface: only warn
10668           about wrong thread if we're actually change something.
10670         * mediaplayer.cpp: Call DisposeObject on the media to dispose
10671           the frames.
10673         * pipeline.h:
10674         * pipeline.cpp: Add Media::DisposeObject to have objects
10675           disposed on the media thread.
10677 2009-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10679         * pipeline.cpp: Add a missing base call to Dispose.
10681 2009-03-02  Geoff Norton  <gnorton@novell.com>
10683         * pipeline.cpp: SetSource (uri) is not required to be called before
10684         SetSource (Downloader, PartName) from the javascript API.
10686 2009-03-02  Geoff Norton  <gnorton@novell.com>
10688         * deployment.cpp: Enable signal chaning
10690 2009-03-02  Jeffrey Stedfast  <fejj@novell.com>
10692         * textbox.cpp (TextBox::Paste): New method to paste the
10693         contents. Since pasting text is asyncronous, we have to emit our
10694         own events and can't rely on them happening inside OnKeyDown().
10695         (TextBoxView::OnModelChanged): Don't allow 'dirty' to get set to
10696         false if updating the layout returns false.
10698 2009-03-01  Andrés G. Aragoneses  <aaragoneses@novell.com>
10700         * runtime.cpp: Add an EOL at the end of a printf.
10702 2009-03-01  Jeffrey Stedfast  <fejj@novell.com>
10704         * utils.h: Mark our g_ptr_array_insert*() symbols as internal, we
10705         don't want to be exporting these symbols.
10707 2009-02-27  Stephane Delcroix  <sdelcroix@novell.com>
10709         * multiscaleimage.cpp: use the tiles containing the shared thumbs for
10710         the highest levels of DZ collections. Saves a lot of network traffic.
10712 2009-02-26  Sebastien Pouliot  <sebastien@ximian.com>
10714         * resources.cpp: Simplify (old glib) Clear and use the "right" macro
10716 2009-02-26  Chris Toshok  <toshok@ximian.com>
10718         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
10719         more tweaking of inheritance behavior.  if the parentProperty
10720         exists, check the local value, and if it exists, return that.
10721         otherwise return return GetValue.
10723 2009-02-26  Chris Toshok  <toshok@ximian.com>
10725         * border.cpp (Border::OnPropertyChanged): robustificate this a
10726         touch.
10728 2009-02-26  Chris Toshok  <toshok@ximian.com>
10730         * cbinding.h, cbinding.cpp: regen.
10732         * frameworkelement.cpp (FrameworkElement::FrameworkElement):
10733         initialize default_style_appled to false.
10734         (FrameworkElement::SetDefaultStyle): new method, so that the
10735         managed code can set the default style without going through the
10736         CLR property wrapper (and the DP system), since (stupidly, imo)
10737         the default style isn't exposed by the Style property.
10738         (FrameworkElement::Measure): I don't like doing this hear, but
10739         according to dave relyea's blog, templates are applied when
10740         Measure is called.  we could add an internal measure hook so that
10741         this code could live in control.cpp, but for now this hack will
10742         do.
10744         * frameworkelement.h: expose SetDefaultStyle (GeneratePInvoke too)
10745         and add the default_style_applied field.
10746         
10747         * control.cpp (Control::OnLoaded): only apply the default style
10748         here if we haven't already (to handle the case where the object is
10749         created programmatically).
10751         * xaml.cpp (end_element_handler): according to the blog post in
10752         the added comment, controls defined in XAML get their default
10753         style applied when the end tag is seen.
10755 2009-02-26  Jeffrey Stedfast  <fejj@novell.com>
10757         * textbox.cpp (TextBuffer::Resize): If we fail to downsize, don't
10758         return failure.
10759         (TextBuffer::Replace): Don't call Resize() if the replacement text
10760         is shorter than the old subtext because the realloc() would lose
10761         data before we had a chance to shift things into place.
10763 2009-02-26  Sebastien Pouliot  <sebastien@ximian.com>
10765         * resources.cpp: Fix crash on SLED (old glib) when clearing the 
10766         hashtable (somehow this did not crash before)
10768 2009-02-25  Jackson Harper  <jackson@ximian.com>
10770         * xaml.cpp: Remove some old code that was preventing non-dob
10771         values from being set to native properties.
10773 2009-02-25  Jeffrey Stedfast  <fejj@novell.com>
10775         * textbox.cpp (TextBuffer::Substring): New method to get a
10776         substring.
10777         (class TextBoxUndoAction*): New classes to represent different
10778         types of Undo/Redo actions.
10779         (class TextBoxUndoStack): New Undo/Redo stack class.
10780         (TextBox::TextBox): Initialize undo/redo stacks.
10781         (TextBox): Destroy undo/redo stacks.
10782         (TextBox::KeyPressBackSpace): Record an undo action.
10783         (TextBox::KeyPressDelete): Same.
10784         (TextBox::KeyPressUnichar): Here too.
10785         (TextBox::OnKeyDown): Call Undo() and Redo() when appropriate.
10786         (TextBox::OnPropertyChanged): Record undo actions for setting
10787         SelectedText and Text properties.
10788         (TextBox::Undo): Undo the most recent action.
10789         (TextBox::Redo): Redo the most recent action.
10791 2009-02-25  Stephane Delcroix  <sdelcroix@novell.com>
10793         * multiscaleimage.h|cpp: return the next tile to download
10794         in RenderSingle, RenderCollection. so the download is triggered
10795         from a single place.
10797 2009-02-25  Stephane Delcroix  <sdelcroix@novell.com>
10799         * multiscaleimage.h|cpp: split Render in RenderSingle,
10800         RenderCollection.
10802 2009-02-24  Chris Toshok  <toshok@ximian.com>
10804         * dependencyobject.cpp (EventObject::FinishEmit): if handlers are
10805         added to the list during emission, we can end up doing the Finish
10806         decrements when we didn't do the Start increments, leading to a
10807         negative events->emitting count.  This causes us to spin in
10808         unref_delayed on shutdown.  Fixes bug #479364.
10810         r: kangaroo.
10812 2009-02-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10814         * codec-version.h.in: Bump abi version.
10816         * mediaplayer.h:
10817         * mediaplayer.cpp: Handle frames with width/height set, and
10818           change our cairo surface accordingly.
10820         * pipeline.h:
10821         * pipeline.cpp: Add width/height to MediaFrame, to support
10822           frames with different sizes than the initial size specified
10823           in the stream.
10825 2009-02-24  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10827         * dependencyobject.cpp: Emit: Add a null check.
10829 2009-02-23  Jeffrey Stedfast  <fejj@novell.com>
10831         * textbox.cpp (TextBoxView::Paint): Try to draw a crisp
10832         1-pixel-wide line for the cursor... apparently cairo has forsaken
10833         1-pixel-wide lines.
10835 2009-02-23  Jeffrey Stedfast  <fejj@novell.com>
10837         * layout.cpp (TextLayout::GetCursor): Revert previous round()
10838         change, this isn't the right way to do it.
10840         * textbox.cpp (TextBoxView::BeginCursorBlink): Call
10841         UpdateCursor().
10842         (TextBox::OnPropertyChanged): Keep proper selection_anchor/cursor
10843         state.
10845 2009-02-23  Stephane Delcroix  <sdelcroix@novell.com>
10847         * multiscaleimage.cpp: remove some debugs, clean the render loops,
10848         cleanly dispose the hashtable and its components
10850 2009-02-23  Jeffrey Stedfast  <fejj@novell.com>
10852         * layout.cpp (TextLayout::GetCursor): Round the cursor's x
10853         position to the nearest whole number (makes the cursor look
10854         nicer).
10856         * textbox.cpp (TextBoxView::Paint): Always paint the cursor black.
10858 2009-02-23  Chris Toshok  <toshok@ximian.com>
10860         * xaml.cpp (value_from_str): handle Type::OBJECT here by just
10861         assuming the value is a string.  Fixes Tag.htm.
10863 2009-02-23  Geoff Norton  <gnorton@novell.com>
10865         * debug.cpp: Don't go poking around in managed land if we don't have
10866         a MonoDomain ()
10868 2009-02-23  Stephane Delcroix  <sdelcroix@novell.com>
10870         * multiscaleimage.cpp: Render () in relative coordinates
10872 2009-02-23  Stephane Delcroix  <sdelcroix@novell.com>
10874         * multiscaleimage.h|cpp: use filename as cache keys
10876 2009-02-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10878         * pipeline.h:
10879         * pipeline.cpp: Only decode on the media thread.
10881 2009-02-23  Alan McGovern  <amcgovern@novell.com>
10883         * uielement.h:
10884         * dependencyproperty.g.cpp: Tag is a System.Object, not a
10885           string.
10887 2009-02-22  Geoff Norton  <gnorton@novell.com>
10889         * pipeline.cpp|h: Add extra_data from managed for AudioStream too
10891 2009-02-22 Geoff Norton  <gnorton@novell.com>
10893         * cbinding.cpp|h: Regen
10894         * pipeline.cpp|h: When constructing a new VideoStream pass the
10895         extra_data from managed.
10897 2009-02-22  Geoff Norton  <gnorton@novell.com>
10899         * pipeline-asf.cpp:
10900         * pipeline.cpp|h: Add some missing codecs.
10902 2009-02-20  Jeffrey Stedfast  <fejj@novell.com>
10904         * layout.cpp (TextLayout::Layout*Wrap*): Always need to update
10905         actual_width, segment->end, etc - even if all we had was
10906         whitespace. Try to keep better track of this state as well.
10907         (TextLayout::GetCursor): The cursor height is actually the same as
10908         the line height.
10910         * textbox.cpp (TextBox::TextBox): Init inkeypress state to false.
10911         (TextBox::OnKeyDown): Set inkeypress to true at the beginning and
10912         false at the end.
10913         (TextBox::OnPropertyChanged): Check for inkeypress so we don't
10914         syncronize things too early (we want to do it in SyncAndEmit() at
10915         the end of OnKeyDown()). Also updated to keep proper emit state.
10916         (TextBox::ClearSelection): Only sync selected text if we aren't in
10917         OnKeyDown().
10918         (TextBox::Select): Same.
10920 2009-02-20  Jeffrey Stedfast  <fejj@novell.com>
10922         * textbox.cpp (TextBuffer::Resize): Return bool - true if we were
10923         able to resize or false if we failed.
10924         (TextBuffer::*): If Resize fails, return.
10925         (TextBox::CursorPrevWord): Only nagivate back so long as i >
10926         begin. Prevents us from returning -1 when begin is 0.
10927         (TextBuffer::Cut): Fixed the logic - we don't want to memmove the
10928         total number of bytes left after cutting, we only want to memmove
10929         the bytes after the cut point.
10931         * moon-path.c (moon_path_ensure_space): New function to replace
10932         the ENSURE_SPACE() macro and moon_path_expand(). Returns bool so
10933         that callers can tell if they have enough space to add the data
10934         they want. Fixed callers to check the return value and return w/o
10935         adding curves, lines, whatever. While this will mean that
10936         Moonlight won't render the path correctly, at least we won't
10937         crash.
10939 2009-02-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10941         * mediaplayer.cpp: Open: Show the first frame upon opening a
10942           video.
10944 2009-02-19  Sebastien Pouliot  <sebastien@ximian.com>
10946         * size.cpp|h: Add FromStr (copied from Point)
10947         * xaml.cpp: Parse Type::SIZE
10949 2009-02-19  Jeffrey Stedfast  <fejj@novell.com>
10951         * stylus.h (class StylusPoint): In managed-land, this class is
10952         actually a struct, so until we find a better way, mark property
10953         accessors for pinvoking.
10954         (class StylusPointCollection): Add AddStylusPoints to the list of
10955         methods to create pinvoke stubs for.
10956         (class StylusInfo): Fixed to have a managed class
10957         autogenerated (internal).
10959         * brush.cpp (VideoBrush::SetSource): Implemented.
10961 2009-02-19  Sebastien Pouliot  <sebastien@ximian.com>
10963         * dependencyobject.cpp|h: The parameter is not needed anymore
10964         since the xaml code was updated to work without using the
10965         logical parent.
10967 2009-02-19  Jackson Harper  <jackson@ximian.com>
10969         * xaml.cpp: Implement StaticResource element syntax.
10971 2009-02-18  Jeffrey Stedfast  <fejj@novell.com>
10973         * geometry.h (class PathGeometry): Don't autocreate the
10974         FiguresProperty until we can figure out why it breaks the PDC
10975         site.
10977 2009-02-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10979         * mediaelement.h: We always want OnPropertyChanged for
10980           PositionProperty. Fixes seeking to start/0.
10982         * dependencyproperty.g.cpp: Regenerated.        
10984 2009-02-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10986         * mediaelement.cpp: ctor: Initialize flags correctly.
10988 2009-02-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10990         * playlist.cpp:
10991         * pipeline.cpp:
10992         * pipeline-asf.cpp:
10993         * mediaelement.cpp: g_warn_if_failed -> g_return_if_failed to
10994           make sled (glib 2.10) happy.
10996 2009-02-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10998         * pipeline.h:
10999         * pipeline.cpp:
11000         * playlist.cpp:
11001         * mediaelement.h:
11002         * mediaelement.cpp: Initial implementation of
11003           MediaStreamSource.
11005         * cbinding.h:
11006         * cbinding.cpp: Regenerated.
11008 2009-02-18  Alan McGovern  <amcgovern@novell.com>
11010         * clock.h:
11011         * clock.cpp:
11012         * animation.h:
11013         * animation.cpp: Storyboards are considered 'children' if they
11014           ever were attached as a child of another timeline. The
11015           current status doesn't appear to matter.
11016           (StoryboardTest.RemoveChildThenStart).
11018 2009-02-18  Stephane Delcroix  <sdelcroix@novell.com>
11020         * multiscaleimage.h|cpp: remove GetViewPortHeight, fix the rendering
11021         of single images
11023 2009-02-17  Chris Toshok  <toshok@ximian.com>
11025         * text.cpp (TextBlock::TextBlock): remove this hack.
11027 2009-02-17  Chris Toshok  <toshok@ximian.com>
11029         * textbox.cpp (TextBox::OnPropertyChanged): add the same hardening
11030         to the SelectedText case, and also don't perform the remaining
11031         operations if g_utf8_to_ucs4_fast fails.
11033 2009-02-17  Jeffrey Stedfast  <fejj@novell.com>
11035         * dependencyobject.cpp: Now takes an only_changed argument; if
11036         true, then only return the properties which have been
11037         changed (plus any values which have been auto-created).
11039         * mediaelement.cpp (MediaElement::MediaElement): Set
11040         BufferingTimeProperty and PositionProperty in the ctor, we can't
11041         use DefaultValue nor AutoCreateValue for these since they need to
11042         be returned by ReadLocalValue() immediately after instantiating a
11043         new MediaElement object.
11045         * media.h (class MediaAttribute): Set managed namespaces for
11046         MediaAttribute and MediaAttributeCollection, we have internal
11047         managed implementations of these now.
11049         * text.h (class TextBlock): Changed default LineHeightProperty
11050         value from NaN to 0.0 (docs say NaN is the default, but not
11051         according to the unit tests).
11053         * textbox.h (class TextBox): Changed default TextProperty value
11054         from "" to null (docs say "" is the default, but not according to
11055         the unit tests).
11057         * media.cpp (Image::Image): Fix the SourceProperty to be
11058         autocreated.
11060         * shape.cpp (Polygon::Polygon): Don't set a point
11061         collection. We'll make it autocreated instead.
11062         (Polyline::Polyline): Same.
11064         * geometry.h (class PathFigure): Set the default value of
11065         IsFilledProperty to true.
11066         (class PathGeometry): AutoCreate the FiguresProperty.
11067         (class PolyBezierSegment): AutoCreate the PointsProperty.
11068         (class PolyLineSegment): AutoCreate the PointsProperty.
11069         (class PolyQuadraticBezierSegment): AutoCreate the PointsProperty.
11071         * deployment.h (class AssemblyPart): Set the default value of
11072         AssemblyPart::SourceProperty to "".
11074         * mediaelement.h: Set the default value of CurrentState to Closed.
11076         * mediaelement.cpp (MediaElement::MediaElement): Don't need to set
11077         Markers or Attributes properties, these are autocreated.
11079 2009-02-17  Alan McGovern  <amcgovern@novell.com>
11081         * animation.cpp: Missed out on a "!" when changing from
11082           GetIsChild to GetIsRootStoryboard
11084 2009-02-17  Alan McGovern  <amcgovern@novell.com>
11086         * cbinding.h:
11087         * cbinding.cpp: Regenerated
11089         * animation.h:
11090         * animation.cpp: Add *WithError functions so that storyboards
11091           can throw the right exceptions when they are not the root
11092           Storyboard.
11094 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11096         * mediaelement.cpp: Add some null checks.
11098 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11100         * mediaelement.h:
11101         * mediaelement.cpp: Move bitfields into our flags field.
11102           Remove allow_downloads and related methods, no longer used.
11104 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11106         * mediaelement.h:
11107         * mediaelement.cpp: Remove GetDownloaderPolicy, not used
11108           anymore.
11110 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11112         * pipeline.h:
11113         * playlist.h:
11114         * playlist.cpp:
11115         * pipeline.cpp:
11116         * mediaelement.cpp: Make SetSource (Stream) work again.
11118 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11120         * mp3.h:
11121         * mp3.cpp:
11122         * audio.h:
11123         * audio.cpp:
11124         * audio-alsa.cpp:
11125         * pipeline-ffmpeg.h:
11126         * yuv-converter.cpp:
11127         * pipeline-ffmpeg.cpp: Update according to new pipeline api.
11129         * playlist.h:
11130         * pipeline.h:
11131         * pipeline.cpp:
11132         * playlist.cpp:
11133         * mediaplayer.h:
11134         * mediaelement.h:
11135         * pipeline-asf.h:
11136         * mediaplayer.cpp:
11137         * pipeline-asf.cpp:
11138         * mediaelement.cpp:
11139         * mms-downloader.h:
11140         * mms-downloader.cpp: Rework pipeline to be async to support
11141           MediaStreamSource.
11143         * type.h:
11144         * value.h:
11145         * cbinding.h:
11146         * cbinding.cpp:
11147         * type-generated.cpp:
11148         * dependencyproperty.g.cpp: Regenerated.
11150         * codec-version.h.in: Bump codec abi.
11152         * downloader.cpp: Include uri.h.
11154         * downloader.h: Add accessor for failed_msg.
11156         * enums.h:
11157         * enums.cpp: Rename MediaElementState to MediaState.
11159         * mutex.h: Added, a pthread implementation of a mutex allowing
11160           easy c++ usage.
11162         * template.h: Inlcude xaml.h and add a forward declaration of
11163           XamlContext.
11165         * window.h: Add a forward declaration of MoonWindow.
11167         * src.mdp: Updated.
11169         * dependencyobject.h:
11170         * dependencyobject.cpp: Added EVENTHANDLER macro. Added
11171           support for emititng events from other than the main thread
11172           (by marshalling the event emission to the main thread).
11174 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11176         * deployment.cpp: Use printf instead of g_warning for a
11177           message which is always printed. Makes it less annoying to
11178           break on g_log while debugging.
11180 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11182         * type.h:
11183         * value.h:
11184         * type-generated.cpp: Regenerate.
11186 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11188         * pipeline.h:
11189         * pipeline.cpp:
11190         * mediaelement.h:
11191         * mediaelement.cpp: Remove MediaErrorEventArgs.
11193 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11195         * debug.h: Added LOG_MP3.
11197         * runtime.cpp: Surface ctor: set the surface of the current
11198           deployment to the ourself.
11200 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11202         * runtime.h: Add a VERIFY_MAIN_THREAD sanity macro.
11204         * runtime.cpp: Add support for MOONLIGHT_DEBUG=all.
11206 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11208         * runtime.h:
11209         * runtime.cpp: CreateDownloader: take an EventObject instead
11210           of UIElement.
11212 2009-02-17  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11214         * runtime.h:
11215         * runtime.cpp: Add mp3 support to MOONLIGHT_DEBUG.
11217 2009-02-17  Atsushi Enomoto  <atsushi@ximian.com>
11219         * geometry.h, geometry.cpp, dependencyproperty.g.cpp:
11220           Fixed type of ArcSegment::Size from Point to Size.
11222 2009-02-16  Jeffrey Stedfast  <fejj@novell.com>
11224         * text.h: Default TextBlock font size seems to be 11px in SL2 as
11225         opposed to 14.667 in SL1.
11227 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11229         * brush.h:
11230         * media.cpp:
11231         * mediaelement.cpp: Move image_brush_compute_pattern_matrix
11232           from media.cpp/mediaelement.cpp to brush.h to avoid having
11233           two declarations of the same method.
11235 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11237         * brush.cpp: Include mediaplayer.h here.
11239 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11241         * dependencyobject.cpp: Change our g_error into a g_warning.
11242           Reffing an object with refcount = 0 can actually happen now.
11244 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11246         * dependencyobject.cpp: AddTickCallInternal: if we don't have
11247           a surface, get it from the deployment.
11249 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11251         * dependencyobject.cpp: EventObject. unref and null out the
11252           deployment in the dtor instead of in Dispose.
11254 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11256         * dependencyobject.h:
11257         * dependencyobject.cpp: Add
11258           DependencyObject::RemoveAllHandlers.
11260 2009-02-16  Alan McGovern  <amcgovern@novell.com>
11262         * animation.cpp: Remove the calls to ref/unref as they are
11263           unnecessary.
11265 2009-02-16  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11267         * libmoon.h: Don't include playlist.h here. Fixes issues with
11268           the plugin when playlist.h includes expat.
11270 2009-02-16  Alan McGovern  <amcgovern@novell.com>
11272         * cbinding.h:
11273         * animation.h:
11274         * cbinding.cpp:
11275         * animation.cpp: Implement the managed side of
11276           Storyboard.GetCurrentState ().
11278 2009-02-16  Alan McGovern  <amcgovern@novell.com>
11280         * type.h:
11281         * type.h.in: The renaming changes in r126921 break the build
11282           if the generator is run because type.h.in didn't contain the
11283           CopyProperties prototype.
11285 2009-02-16  Geoff Norton  <gnorton@novell.com>
11287         * media.cpp:
11288         * downloader.h: Downloaders created in javascript can suffer the
11289         same shared-cache firefox bug, so we need to expose the buffer
11290         to the image layer in case this is the place.
11292 2009-02-14  Jeffrey Stedfast  <fejj@novell.com>
11294         * dependencyobject.cpp (DependencyObject::GetProperties): New
11295         method to get an array of all properties on the object (including
11296         currently attached properties).
11298         * type.cpp (Type::CopyProperties): Renamed from GetProperties()
11299         and changed what it does a bit. Now takes an 'inherited' argument
11300         and returns a GHashTable of properties keyed by GetHashKey().
11302 2009-02-14  Chris Toshok  <toshok@ximian.com>
11304         * dependencyobject.h, dependencyobject.cpp: rename
11305         "current_values" as "local_values".  current_values now means
11306         "local values + autocreated values".  At this point, add
11307         GetCurrentValues which returns a new hashtable containing a union
11308         of both sets, and add FreeCurrentValues to destroy it.
11310         * provider.cpp (LocalPropertyValueProvider::GetPropertyValue): use
11311         DependencyObject::GetLocalValues instead of GetCurrentValues.
11313 2009-02-13  Chris Toshok  <toshok@ximian.com>
11315         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
11316         fix a number of logical errors.  gets inlines properly inheriting
11317         text properties.
11319 2009-02-14  Jeffrey Stedfast  <fejj@novell.com>
11321         * type.cpp (Type::GetProperties): New method to get an array of
11322         DependencyProperties for a Type.
11324 2009-02-13  Geoff Norton  <gnorton@novell.com>
11326         * playlist.cpp: Check these string with g_ascii_str* as well.
11327         Also these should be case-insensitive checks.
11329 2009-02-13  Jeffrey Stedfast  <fejj@novell.com>
11331         * mediaelement.h (class MediaElement): NaturalVideoWidth/Height
11332         should be ints, not doubles.
11334         * text.h (class Glyphs): Set the DefaultValues for
11335         UnicodeStringProperty, IndicesProperty, and FontUriProperty to "".
11337         * bitmapimage.cpp (BitmapImage::BitmapImage): Don't call
11338         SetUriSource("") (it's already the DefaultValue).
11340 2009-02-13  Geoff Norton  <gnorton@novell.com>
11342         * media.cpp|h: Ensure we're comparing magics with unsigned values, and 
11343         fix a logic bug that prevented us from proplery writing progressive pixbuf
11344         loaders.
11346 2009-02-13  Jeffrey Stedfast  <fejj@novell.com>
11348         * multiscaleimage.h (class MultiScaleImage): Rename the
11349         SubImageCollectionProperty to SubImagesProperty to match
11350         Silverlight.
11352 2009-02-13  Geoff Norton  <gnorton@novell.com>
11354         * runtime.cpp|h: Add a new overload to control the gdk_pixbuf_loader
11355         behaviour.
11356         * media.cpp|h: Ensure that we only load jpeg/png images like microsoft
11357         does when running in the browser profile.
11359 2009-02-13  Alan McGovern  <amcgovern@novell.com>
11361         * value.cpp: Use the GPOINTER_TO_INT macro as suggested rather
11362           than casting to a 64bit then 32bit value.
11364 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
11366         * multiscaleimage.h|cpp: drop the friend here too
11368 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
11370         * tilesource.h: drop the friends
11372 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
11374         * Makefile.am: remove deepzoomimagetilesource.h from the
11375         include_headers. no one should code against it.
11377 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
11379         * multiscaleimage.cpp:
11380         * deepzoomimagetilesource.h|cpp: dzits no longer have any friends
11382 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
11384         * multiscaleimage.cpp: timing macros
11386 2009-02-13  Stephane Delcroix  <sdelcroix@novell.com>
11388         * multiscaleimage.cpp: embed the rendering in push_group/pop_group then
11389         paint at once to avoid flickering.
11391 2009-02-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11393         * downloader.cpp: Sprinkle a few SetCurrentDeployments. Fixes
11394           a crash when downloading mms streams (due to not having
11395           deployment set).
11397 2009-02-12  Geoff Norton  <gnorton@novell.com>
11399         * playlist.cpp: Ensure that we don't poke around in random memory
11400         if we have an invalid entry in our parser.
11402 2009-02-12  Alan McGovern  <amcgovern@novell.com>
11404         * value.cpp: Add an assert in case the gchandle value is out
11405           of range.
11407 2009-02-12  Alan McGovern  <amcgovern@novell.com>
11409         * value.cpp: Fix compile error on x64 when casting a void* to
11410           a gint32.
11412 2009-02-12  Alan McGovern  <amcgovern@novell.com>
11414         * value.cpp: Managed objects are stored in native as
11415           GCHandles. Use the mono api to get the target of that
11416           GCHandle so that they can be compared correctly in
11417           value.cpp. Remove hack in ItemCollection.cs which worked
11418           around this bug.
11420 2009-02-12  Stephane Delcroix  <sdelcroix@novell.com>
11422         * multiscalesubimage.h|cpp: add id, n as ctor params, make the ctor
11423         public, drop a friend.
11424         * deepzoomimagetilesource.h|cpp: EndElement is now a class method, drop
11425         a friend.
11427 2009-02-12  Stephane Delcroix  <sdelcroix@novell.com>
11429         * deepzoomtilesource.cpp: some g_ascii love
11431 2009-02-11  Chris Toshok  <toshok@ximian.com>
11433         * text.h: Inline's fontsize default value is 11.  looks like
11434         textblock is the only case where it differs.
11436 2009-02-11  Jeffrey Stedfast  <fejj@novell.com>
11438         * eventargs.h (MouseEventArgs::GetEvent): Expose the raw GdkEvent.
11440         * textbox.cpp (TextBoxView::ConnectBlinkTimeout): Get the cursor
11441         blink timeout from the GtkSettings.
11442         (TextBox::OnKeyDown): Don't bother printing the buffer anymore,
11443         things seem to have been debugged enough now.
11444         (TextBox::CursorLineBegin): New convenience method.
11445         (TextBox::CursorLineEnd): Same.
11446         (TextBox::OnMouseLeftButtonDown): Implemented double and
11447         triple-click. Capture mouse if single-click.
11448         (TextBox::OnMouseLeftButtonUp): Release mouse capture.
11449         (TextBox::CursorPrevWord): Don't allow ourselves to go beyond the
11450         beginning of the line.
11452 2009-02-11  Alan McGovern  <amcgovern@novell.com>
11454         * text.h:
11455         * shape.h:
11456         * media.h:
11457         * panel.h:
11458         * text.cpp:
11459         * border.h:
11460         * panel.cpp:
11461         * shape.cpp:
11462         * textbox.h:
11463         * media.cpp:
11464         * border.cpp:
11465         * textbox.cpp:
11466         * uielement.h:
11467         * uielement.cpp:
11468         * mediaelement.h:
11469         * mediaelement.cpp:
11470         * multiscaleimage.h:
11471         * multiscaleimage.cpp: Switch FindElementsInHostCoordinates to
11472           use the ::Render codepaths instead of it's own custom
11473           codepath. Added an extra parameter to ::Render () to specify
11474           whether or not the paths appended to the cairo_t should be
11475           filled/stroked/clipped. This allows a whole bunch of NUnit
11476           tests to pass.
11478         * usercontrol.cpp:
11479         * frameworkelement.cpp: Add an extra parameter to ::Render ()
11480           to specify whether or not the paths appended to the cairo_t
11481           should be filled/stroked/clipped so it can be shared with
11482           the managed hittesting.
11483         Switch FindElementsInHostCoordinates to use the ::Render
11484           codepaths instead of it's own custom codepath. This allows a
11485           whole bunch of NUnit tests to pass.
11487 2009-02-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11489         * grid.h:
11490         * text.h:
11491         * clock.h:
11492         * panel.h:
11493         * shape.h:
11494         * style.h:
11495         * media.h:
11496         * popup.h:
11497         * brush.h:
11498         * canvas.h:
11499         * border.h:
11500         * stylus.h:
11501         * control.h:
11502         * trigger.h:
11503         * textbox.h:
11504         * geometry.h:
11505         * template.h:
11506         * namescope.h:
11507         * uielement.h:
11508         * animation.h:
11509         * transform.h:
11510         * collection.h:
11511         * downloader.h:
11512         * animation2.h:
11513         * deployment.h:
11514         * bitmapimage.h:
11515         * application.h:
11516         * usercontrol.h:
11517         * mediaelement.h:
11518         * contentcontrol.h:
11519         * multiscaleimage.h:
11520         * frameworkelement.h:
11521         * dependencyobject.h:
11522         * multiscalesubimage.h:
11523         * dependencyproperty.g.cpp:
11524         * deepzoomimagetilesource.h: Make DP backing fields const.
11526 2009-02-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11528         * grid.cpp:
11529         * text.cpp:
11530         * panel.cpp:
11531         * media.cpp:
11532         * shape.cpp:
11533         * popup.cpp:
11534         * brush.cpp:
11535         * border.cpp:
11536         * canvas.cpp:
11537         * stylus.cpp:
11538         * control.cpp:
11539         * textbox.cpp:
11540         * geometry.cpp:
11541         * uielement.cpp:
11542         * transform.cpp:
11543         * usercontrol.cpp:
11544         * bitmapimage.cpp:
11545         * mediaelement.cpp:
11546         * contentcontrol.cpp:
11547         * dependencyobject.h:
11548         * multiscaleimage.cpp:
11549         * dependencyobject.cpp:
11550         * frameworkelement.cpp:
11551         * deepzoomimagetilesource.cpp: PropertyChangedEventArgs: make
11552           dp and id fields private and add accessors.
11554 2009-02-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11556         * type.h:
11557         * grid.h:
11558         * text.h:
11559         * shape.h:
11560         * style.h:
11561         * clock.h:
11562         * brush.h:
11563         * media.h:
11564         * panel.h:
11565         * popup.h:
11566         * grid.cpp:
11567         * canvas.h:
11568         * xaml.cpp:
11569         * type.cpp:
11570         * border.h:
11571         * stylus.h:
11572         * text.cpp:
11573         * media.cpp:
11574         * type.h.in:
11575         * textbox.h:
11576         * shape.cpp:
11577         * panel.cpp:
11578         * trigger.h:
11579         * brush.cpp:
11580         * control.h:
11581         * template.h:
11582         * geometry.h:
11583         * stylus.cpp:
11584         * canvas.cpp:
11585         * border.cpp:
11586         * namescope.h:
11587         * uielement.h:
11588         * control.cpp:
11589         * animation.h:
11590         * textbox.cpp:
11591         * transform.h:
11592         * animation2.h:
11593         * collection.h:
11594         * provider.cpp:
11595         * geometry.cpp:
11596         * downloader.h:
11597         * deployment.h:
11598         * application.h:
11599         * transform.cpp:
11600         * bitmapimage.h:
11601         * usercontrol.h:
11602         * uielement.cpp:
11603         * animation.cpp:
11604         * mediaelement.h:
11605         * usercontrol.cpp:
11606         * mediaelement.cpp:
11607         * contentcontrol.h:
11608         * multiscaleimage.h:
11609         * contentcontrol.cpp:
11610         * frameworkelement.h:
11611         * dependencyobject.h:
11612         * multiscaleimage.cpp:
11613         * dependencyproperty.h:
11614         * multiscalesubimage.h:
11615         * frameworkelement.cpp:
11616         * dependencyobject.cpp:
11617         * dependencyproperty.cpp:
11618         * dependencyproperty.g.cpp:
11619         * deepzoomimagetilesource.h:
11620         * deepzoomimagetilesource.cpp: Change our static
11621           DependencyProperty backing fields to store an integer id
11622           instead of an instance to a DependencyProperty. This way we
11623           can have true per-deployment dependency properties.
11625 2009-02-11  Alan McGovern  <amcgovern@novell.com>
11627         * shape.cpp:
11628         * panel.cpp:
11629         * collection.h:
11630         * usercontrol.h:
11631         * usercontrol.cpp:
11632         * frameworkelement.cpp: Commit some more updates to the
11633           managed hittesting.
11635 2009-02-10  Jeffrey Stedfast  <fejj@novell.com>
11637         * layout.cpp (TextLayout::Layout*Wrap*): Kern between runs. Fixes
11638         xchatitis in TextBox.
11640 2009-02-10  Jeffrey Stedfast  <fejj@novell.com>
11642         * fontfamily.h (struct FontFamily): Implemented != operator.
11644         * text.cpp (Inline::Equals): Fixed the fontfamily check.
11646         * provider.cpp (AutoCreatePropertyValueProvider::SetSurface): Removed.
11648         * dependencyobject.cpp (DependencyObject::Dispose): Fixed to
11649         dispose autocreated values too.
11650         (DependencyObject::RemoveAllListeners): Same here.
11651         (DependencyObject::RegisterAllNamesRootedAt): And here.
11652         (DependencyObject::UnregisterAllNamesRootedAt): Here too.
11654 2009-02-10  Jeffrey Stedfast  <fejj@novell.com>
11656         * panel.cpp (Panel::GetSubtreeObject): Override UIElement's
11657         GetSubtreeObject so that we can auto-create our Children property
11658         and set it if it hasn't already been set.
11660         * dependencyobject.cpp (DependencyObject::SetValueWithErrorImpl):
11661         We need to clear the LocalProvider value as well, if there is
11662         one. Also, don't allow setting a Value* with a null
11663         DependencyObject if it is an autocreate property.
11664         (DependencyObject::ClearValue): Clear the LocalProvider value too.
11665         (DependencyObject::SetSurface): SetSurface on autocreated values too.
11667         * dependencyproperty.cpp (DependencyProperty::DependencyProperty):
11668         Now takes another bool arg to specify whether it is allowed to
11669         autocreate new DP values.
11670         (DependencyProperty::Register): Updated.
11671         (DependencyProperty::RegisterFull): Updated, now also takes an
11672         autocreate arg.
11674         * provider.cpp (AutoCreatePropertyValueProvider): A new provider
11675         which sits below DefaultValue.
11677         * *.cpp (*::ctor): Remove calls to SetValue()
11679         * *.h: Added AutoCreateValue where appropriate.
11681 2009-02-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11683         * color.h: fabs is in math.h.
11685 2009-02-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11687         * list.h:
11688         * list.cpp: Add a simple ArrayList implementation.
11690         * type.h:
11691         * cbinding.h:
11692         * cbinding.cpp:
11693         * type-generated.cpp:
11694         * dependencyproperty.g.cpp: Regenerated.
11696         * dependencyproperty.h:
11697         * dependencyproperty.cpp: RegisterCustom: removed, no longer
11698           used anywhere. RegisterNull: incorporated into
11699           RegisterFull. Register[Full]: take another Types* argument
11700           so that the registration doesn't have to look it up in the
11701           deployment for every call (this way we can later register
11702           dependency properties in the Types ctor). Also move any
11703           logic from the individial Register overloads to
11704           RegisterFull, this way we don't have different logic
11705           depending on the overload.
11707         * type.cpp:
11708         * type.h.in: Keep a list of all properties for all types on
11709           the Types* instance, and remove the custom properties (hash
11710           and list) on the Type* instance, keeping only one hash
11711           table for both native and custom properties.
11713 2009-02-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11715         * brush.h:
11716         * runtime.h:
11717         * window-gtk.h:
11718         * downloader.h:
11719         * usercontrol.h:
11720         * file-downloader.h: Only use G_BEGIN/END_DECLS around c
11721           methods (and in files with no c methods remove completely).
11723 2009-02-10  Jackson Harper  <jackson@ximian.com>
11725         * xaml.h|cpp: New method for getting the key of an element
11726         instance.
11727         - Pass the element instance data for the values to set property
11728         when we have one, otherwise pass NULL.
11730 2009-02-10  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11732         * dependencyproperty.g.cpp: Temporary fix for > 1 xap per
11733           process: don't check if DPs have been created before
11734           recreating them.
11736 2009-02-10  Alan McGovern  <amcgovern@novell.com>
11738         * border.cpp: Corner rounding is now taken into account when
11739           hittesting a Border
11741 2009-02-10  Fernando Herrera  <fherrera@novell.com>
11743         * value.cpp: Fix GetIsNull call casting in the copy
11744         constructor.
11746 2009-02-09  Chris Toshok  <toshok@ximian.com>
11748         * value.cpp: call SetIsNull everywhere so we can always check
11749         GetIsNull.
11751 2009-02-09  Alan McGovern  <alan.mcgovern@gmail.com>
11753         * border.h:
11754         * shape.cpp:
11755         * border.cpp:
11756         * frameworkelement.cpp: Three more of the NUnit tests are now
11757           passing for FindElementsInHostCoordinates
11759 2009-02-09  Alan McGovern  <alan.mcgovern@gmail.com>
11761         * panel.h:
11762         * shape.h:
11763         * shape.cpp:
11764         * panel.cpp:
11765         * uielement.h:
11766         * frameworkelement.cpp: Commit some more of the hittest code.
11768 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
11770         * type.h.in (class Types): Added a private static field to record
11771         whether or not the static DP's have already been registered.
11773 2009-02-09  Geoff Norton  <gnorton@novell.com>
11775         * deployment.cpp: Support enabling coreclr for moonlight so we
11776         can start dogfooding this.
11778 2009-02-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11780         * deployment.cpp: Remove redundant call to SetObjectType.
11782 2009-02-08  Chris Toshok  <toshok@ximian.com>
11784         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
11785         add inheritance of FrameworkElement::DataContextProperty.
11787         * frameworkelement.[cpp,h]: remove all the databinding stuff from
11788         here - it's all handled in managed code now.
11790         * dependencyproperty.[cpp,h]: add SetPropertyChangedCallback.
11792         * cbinding.[cpp,h]: regen.
11794 2009-02-07  Sebastien Pouliot  <sebastien@ximian.com>
11796         * xaml.cpp: Adjust lookup to find StaticResources defined in 
11797         a ResourceDictionary. re-fix parsing of generic.xaml for the
11798         SL toolkit (unit tests)
11800 2009-02-07  Larry Ewing  <lewing@novell.com>
11802         * border.cpp (Border::ArrangeOverride): 
11803         * usercontrol.cpp (UserControl::ArrangeOverride): Fix padding on
11804         border children.
11806         * grid.cpp (Grid::MeasureOverride): distribute the allocation
11807         across auto dimensions when it makes sense.
11808         
11809 2009-02-07  Larry Ewing  <lewing@novell.com>
11811         * grid.cpp (Grid::MeasureOverride): don't give our whole
11812         allocation to the first column.
11814 2009-02-07  Sebastien Pouliot  <sebastien@ximian.com>
11816         * stylus.cpp: Committed a variation of Geoff patch to fix
11817         the crash when running moon-unit
11819 2009-02-07  Geoff Norton  <gnorton@novell.com>
11821         * cbinding.cpp|h: Regenerate
11822         * deployment.cpp|h: API cleanup
11823         * downloader.cpp|h: Generate some code that doesn't need to be
11824         hand maintained.  Clean up some API to prevent a crash when
11825         unregistering downloaders.
11827 2009-02-07  Geoff Norton  <gnorton@novell.com>
11829         * color.h:
11830         * cornerradius.h:
11831         * point.h:
11832         * rect.h:
11833         * size.h: Account for an epsilon when comparing these structures
11834         to avoid erroneously emitting false results.
11836 2009-02-07  Jeffrey Stedfast  <fejj@novell.com>
11838         * text.cpp (TextBlock::GetTextInternal): Now takes an
11839         InlineCollection argument.
11840         (TextBlock::OnPropertyChanged): Pass args->new_value to
11841         GetTextInternal() so that we avoid unnecesary recursion in the
11842         case that we're being called as a result of a GetValue() of the
11843         InlinesProperty.
11844         (TextBlock::OnCollectionChanged): Updated.
11845         (TextBlock::OnCollectionItemChanged): Updated.
11847 2009-02-06  Larry Ewing  <lewing@novell.com>
11849         * shape.cpp (Shape::ArrangeOverride): take alignment into account
11850         when Stretch == None.
11852         * media.cpp (Image::ArrangeOverride):
11853         * mediaelement.cpp (MediaElement::ArrangeOverride): take alignment
11854         into account when Stretch == None.
11856         * grid.cpp, grid.h: keep track of the automagical w/h make handle
11857         it properly when alignment is not stretch.  Fixes leaf control
11858         placement on "the moment".
11860 2009-02-06  Larry Ewing  <lewing@novell.com>
11862         * type.cpp:
11863         * playlist.cpp:
11864         * enums.cpp (enum_from_str): use g_ascii_strcasecmp.
11866         * deepzoomimagetilesource.cpp (start_element): use g_ascii_strtod.
11868         * xaml.cpp (value_from_str): replace use g_ascii_strcasecmp
11869         everywhere.
11871 2009-02-06  Larry Ewing  <lewing@novell.com>
11873         * control.cpp (Control::Control): remove bad setting of
11874         foreground.
11876 2009-02-06  Jackson Harper  <jackson@ximian.com>
11878         * xaml.cpp|h: Add a new method for retrieving the control template
11879         parent of a xaml element instance (called from unmanaged).
11880         - quick hack to force binding expressions to be parsed in managed.
11882 2009-02-06  Jeffrey Stedfast  <fejj@novell.com>
11884         * keyboard.cpp (Keyboard::MapKeyValToKey): Map alternative names
11885         for *+/- and . to our Key enum needed for the DLR Console app.
11887 2009-02-06  Jeffrey Stedfast  <fejj@novell.com>
11889         * Reverted previous commit as I goofed the unit test on
11890         Windows. Once I fixed it, the logic I worked so hard to achieve
11891         wasn't correct :(
11893 2009-02-06  Larry Ewing  <lewing@novell.com>
11895         * frameworkelement.cpp (FrameworkElement::Arrange): don't align if
11896         we are the toplevel.
11898 2009-02-06  Jeffrey Stedfast  <fejj@novell.com>
11900         See InkPresenter's ClearValue unit test
11902         1. Calling SetValue() in ctors was gross.
11903         2. it was wrong because ReadLocalValue() on Silverlight got "Unset"
11904         3. it broke things if ClearValue was used and/or if the properties
11905            were set to null
11907         * dependencyobject.cpp (DependencyObject::GetDefaultValue): New
11908         method to query for a default property value as used by the
11909         PropertyValueProviders.
11910         (DependencyObject::ReadLocalValue): Read the value directly from
11911         the hash table.
11913         * provider.cpp (LocalValuePropertyValueProvider::GetPropertyValue):
11914         Call DependencyObject::GetDefaultValue() to try and get a default
11915         value. If successful, set it on the current_values hash table.
11917         * *.cpp: Fixed all classes that had ctors that called SetValue()
11918         to instead override GetDefaultValue().
11920 2009-02-06  Chris Toshok  <toshok@ximian.com>
11922         * uielement.cpp (UIElement::SetSurface): if we have a subtree
11923         object (which is a UIElement), set its surface too.  Fixes the
11924         ContentPresenter textblocks in ItemsControl.
11926 2009-02-06  Stephane Delcroix  <sdelcroix@novell.com>
11928         * deepzoomimagetilesource.cpp: set subimage width/height
11929         * multiscaleimage.cpp: do not download subimages .xml, we can work
11930         without them
11932 2009-02-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
11934         * cbinding.h:
11935         * cbinding.cpp: Regenerated.
11937         * dependencyobject.h:
11938         * dependencyobject.cpp:
11939           DependencyObject::ProviderValueChanged: Add a MoonError
11940           argument to be able to marshal managed exceptions through
11941           native code. ClearValue: Add a MoonError argument to match
11942           the signature of ProviderValueChanged.
11944         * dependencyproperty.h: Make NativePropertyChangedHandler
11945           take a MoonError argument to be able to marshal managed
11946           exceptions through native code.
11948         * error.h:
11949         * error.cpp: Add a gchandle_ptr field to hold managed
11950           exceptions.
11952         * frameworkelement.h:
11953         * frameworkelement.cpp: Update according to ClearValue
11954           signature changes.
11956         * provider.cpp: Update according to ProviderValueChanged
11957           signature changes.
11959 2009-02-06  Stephane Delcroix  <sdelcroix@novell.com>
11961         * morton-layout-table.inc: pre-computed table for Morton Layout 
11962         indices.
11964 2009-02-06  Stephane Delcroix  <sdelcroix@novell.com>
11966         * multiscaleimage.cpp: fix the most annoying rendering issue for
11967         subimages.
11969 2009-02-06  Jackson Harper  <jackson@ximian.com>
11971         * xaml.cpp: Store a list of resource dictionaries on the xaml
11972         context, so control templates can use these to lookup resources.
11973         Also go back to using the XamlElementInstance's for walking up the
11974         tree, this allows us to parse before parenting items.
11976 2009-02-05  Geoff Norton  <gnorton@novell.com>
11978         * deepzoomimagetilesource.cpp|h: We don't want to download all of
11979         the sub images at creation time, so allow them to defer, otherwise
11980         we might fire off hundreds of downloaders at once.
11982 2009-02-05  Jackson Harper  <jackson@ximian.com>
11984         * xaml.cpp: Use the case sensitive Type::Find (fixes parsing
11985         Double).
11987 2009-02-05  Jeffrey Stedfast  <fejj@novell.com>
11989         * dependencyobject.cpp (DependencyObject::ReadLocalValue): Renamed
11990         to be more consistent with the managed API.
11992         * frameworkelement.cpp (FrameworkElement::ReadLocalValue): Same.
11994 2009-02-05  Geoff Norton  <gnorton@novell.com>
11996         * multiscaleimage.cpp|h: We must emit this event on the main thread
11998 2009-02-05  Alan McGovern  <alan.mcgovern@gmail.com>
12000         * panel.h:
12001         * shape.h:
12002         * border.h:
12003         * cbinding.h:
12004         * uielement.h:
12005         * cbinding.cpp:
12006         * uielement.cpp:
12007         * frameworkelement.h:
12008         * frameworkelement.cpp: Create an unmanaged version of
12009           FindElementsInHostCoordinates
12011 2009-02-05  Geoff Norton  <gnorton@novell.com>
12013         * cbinding.cpp|h:
12014         * dependencyproperty.g.cpp:
12015         * type-generated.cpp: Regenerate
12016         * collection.h: Generate bindings for the multiscalesubimage collection.
12017         * deepzoomimagetilesource.cpp: Trigger a download when we get our URI 
12018         * multiscaleimage.cpp|h: Hide SubImages in a internal property until
12019         we can marshal collections as ReadOnly into managed automatically.
12020         Also emit the ImageOpenSucceeded event when we're done parsing.
12022 2009-02-05  Jackson Harper  <jackson@ximian.com>
12024         * type.cpp|h|h.in: Type:Find does need to be insensitive for JS.
12025         So I've added an ignore_case flag that the parser can use.
12027 2009-02-05  Jackson Harper  <jackson@ximian.com>
12029         * type.cpp: As far as I can tell, Type::Find does not need to be
12030         case sensitive. This fixes "Double" being found when we register
12031         it as "double".
12033 2009-02-05  Jeffrey Stedfast  <fejj@novell.com>
12035         Save some additional state for an optimization I'd like to do.
12037         * layout.cpp (TextLayout::LayoutWrapWithOverflow): Keep track of
12038         character offset for each TextLine.
12039         (TextLayout::LayoutNoWrap): Same.
12040         (TextLayout::LayoutWrap): Here too.
12042 2009-02-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12044         * deployment.cpp: Fix typo.
12046 2009-02-05  Alan McGovern  <alan.mcgovern@gmail.com>
12048         * frameworkelement.cpp: Reverting r125649 as it's incorrect.
12050 2009-02-05  Jeffrey Stedfast  <fejj@novell.com>
12052         * textbox.cpp (TextBox::OnMouseLeftButtonDown): Don't use
12053         ClearSelection() because we'll be syncing the SelectedText in
12054         SyncAndEmit() anyway.
12056         * layout.cpp (TextLayout::Layout*Wrap*): Oops, fix outer loop to
12057         exit when inptr >= inend rather than when *inptr == 0.
12058         (TextLayout::GetCursorFromXY): Slightly improved.
12060 2009-02-05  Sebastien Pouliot  <sebastien@ximian.com> 
12062         * dependencyobject.cpp|h: Let GetLogicalParent optionally report
12063         a collection for it's parent. This is needed in some cases like
12064         a Style inside a ResourceDictionary that defines "{StaticResource..."
12065         that other Style needs (e.g. SL toolkit unit tests)
12066         * xaml.cpp: Adjust lookup to find StaticResources defined in 
12067         a ResourceDictionary
12069 2009-02-05  Stephane Delcroix  <sdelcroix@novell.com>
12071         * multiscaleimage.cpp: Renders subimages
12073 2009-02-05  Jeffrey Stedfast  <fejj@novell.com>
12075         Memory Optimization:
12077         * textbox.cpp (append_runs): Updated. Also fixed a bug which would
12078         sometimes append empty TextRuns to the list.
12080         * text.cpp (TextBlock::Layout): Updated. No longer need to use the
12081         retarded TextRun linebreak ctor.
12083         * layout.cpp (TextRun): Changed TextRuns a bit, all members are
12084         now private but accessors have been added to get the values. Get
12085         rid of the crlf field and ctor params. We also no longer "strdup"
12086         for the ucs4 ctor since TextBox is the only consumer of that API
12087         and it is not constructed using a temp buffer.
12088         (TextSegment): Updated a bit for TextRun changes.
12089         (TextLayout): Updated for TextRun changes.
12091 2009-02-05  Sebastien Pouliot  <sebastien@ximian.com> 
12093         * style.cpp|h: Remove "style-hack" from SetterBaseCollection 
12094         since that collection has no need to know about the style itself.
12095         Simplify the API a bit.
12096         * xaml.cpp: Introduce an hack for SetterBase tp workaround the 
12097         fact that the current parser adds elements to the collections
12098         before setting their properties (and a SetterBase would seal
12099         itself when added to a collection).
12101 2009-02-05  Jb Evain  <jbevain@novell.com>
12103         * propertypath.h: new type.
12104         * value.h.in, value.cpp: make Value deal with PROPERTYPATH.
12105         * xaml.cpp (value_from_str): parse Kind::PROPERTYPATH.
12106         * animation.h: change type of Storyboard.TargetPropertyProperty
12107         from string to PropertyPath.
12108         * animation.cpp: update accordingly.
12109         * dependecyproperty.h (resolve_property_path): now takes a PropertyPath.
12110         * dependecyproperty.cpp: update accordingly.
12111         * value.h, type-generated.cpp, type.h, dependecyproperty.h.cpp: regen.
12113 2009-02-05  Jackson Harper  <jackson@ximian.com>
12115         * xaml.cpp|h: Use the kind for getting content property names.
12117 2009-02-04  Chris Toshok  <toshok@ximian.com>
12119         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
12120         fix property inheritance to walk back up the tree (instead of just
12121         looking at the direct parent.)  Also, we can't use the parent's
12122         kind directly, we have to use parent->Is().
12124 2009-02-04  Larry Ewing  <lewing@novell.com>
12126         * grid.cpp (Grid::ArrangeOverride): make the resizing logic only
12127         apply when the final value is not equal to the measured value.
12129 2009-02-04  Jackson Harper  <jackson@ximian.com>
12131         * xaml.cpp|h: When setting properties pass in the
12132         XamlElementInstance.
12133         - Function so named items can be looked up from managed.
12134         * cbinding.cpp|h: regen.
12136 2009-02-04  Aaron Bockover  <abockover@novell.com>
12138         * color.cpp: Use double_garray_from_str to parse sc# color strings, fixing
12139         bug where the blue channel was dropped in sc#r,g,b
12141 2009-02-04  Sebastien Pouliot  <sebastien@ximian.com>
12143         * collection.cpp|h: Override AddWithError on UIElementCollection
12144         to return an error on duplicate elements
12146 2009-02-04  Jeffrey Stedfast  <fejj@novell.com>
12148         * color.cpp (read_next_double): Use g_ascii_strtod().
12149         (color_from_str): Use g_ascii_strcasecmp().
12151         * textbox.cpp (TextBox::OnKeyDown): Implemented Cut/Copy/Paste.
12153 2009-02-04  Larry Ewing  <lewing@novell.com>
12155         * grid.cpp (Grid::ArrangeOverride): thanks to the listbox test
12156         case we implement star columns in a matching manor.
12158         * mediaelement.cpp (MediaElement::Render): disable mediaelement
12159         pixel snapping for now, we'll deal with this at a higher level.
12161 2009-02-04  Chris Toshok  <toshok@ximian.com>
12163         * type.cpp (type_is_dependency_object): no need to c&p the entire
12164         method, just call Type::IsSubclassOf with the kinds.
12166 2009-02-04  Jeffrey Stedfast  <fejj@novell.com>
12168         * textbox.cpp (TextBoxView::ConnectBlinkTimeout): Use
12169         TimeManager's timeout functions instead of calling g_timeout_add()
12170         ourselves.
12172 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
12174         * multiscaleimage.cpp: prepare the rendering for subimages.
12176 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
12178         * multiscalesubimage.h|cpp: GetViewportHeight () utility method.
12180 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
12182         * deepzoomimagetilesource.cpp: set the aspect ratio for subimages on
12183         subimage creation.
12185 2009-02-04  Jeffrey Stedfast  <fejj@novell.com>
12187         * textbox.cpp (TextBox::TextBox): Initialize our 'selecting' state
12188         to false. Get rid of maxlen state, it's not needed.
12189         (TextBox::KeyPressUnichar): Use GetMaxLength() instead of a maxlen
12190         class member variable.
12191         (TextBox::SyncAndEmit): Renamed from KeyPressThaw() since it's
12192         useful for mouse events too.
12193         (TextBox::KeyPressFreeze): Removed.
12194         (TextBox::OnMouseLeftButtonDown): Set our 'selecting' state to
12195         true, get the cursor from the x,y coordinates and update the
12196         selection to be zero-length starting at the cursor position.
12197         (TextBox::OnMouseLeftButtonUp): Set 'selecting' state to false.
12198         (TextBox::OnMouseMove): If we are in the 'selecting' state,
12199         translate current mouse coordinates into a new cursor position and
12200         update selection start/length.
12201         (TextBoxView::GetCursorFromXY): New helper method.
12202         (TextBoxView::TextBoxView): Set our cursor to be the IBeam.
12204         * layout.cpp (TextLayout::GetCursorFromXY): Implemented.
12206 2009-02-04  Jackson Harper  <jackson@ximian.com>
12208         * template.cpp|h: Add a function for creating xaml template
12209         bindings.
12211 2009-02-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12213         * audio.cpp:
12214         * audio-pulse.cpp: More SetCurrentDeployments.
12216 2009-02-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12218         * audio.cpp: One more SetCurrentDeployment.
12220 2009-02-04  Alan McGovern  <amcgovern@novell.com>
12222         * frameworkelement.cpp: Fixed hit tests which didn't do what
12223           i meant them to do and added new tests. Panels should not
12224           swallow a click when hit testing, so we should never abort
12225           checking children.
12227 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
12229         * multiscalesubimage.cpp: fix the source uri in the subimage
12230         ctor. the source for the subimage is now parsed.
12232 2009-02-04  Alan McGovern  <amcgovern@novell.com>
12234         * type.h:
12235         * value.h:
12236         * cbinding.h:
12237         * uielement.h:
12238         * cbinding.cpp:
12239         * collection.h:
12240         * uielement.cpp:
12241         * collection.cpp:
12242         * type-generated.cpp: Hook up the managed hittesting code to
12243           the native hit testing code.
12245 2009-02-04  Stephane Delcroix <sdelcroix@novell.com>
12247         * multiscaleimage.cpp: iterate the collection and not the GList
12248         anymore.
12250 2009-02-04  Stephane Delcroix <sdelcroix@novell.com>
12252         * multiscalesubimage.h|cpp:
12253         * deepzoomimagetilesource.cpp: add a uri parameter to MSISI ctor
12254         so we can compute the UriSource based on parent's one
12256 2009-02-04  Stephane Delcroix  <sdelcroix@novell.com>
12258         * collection.cpp: MultiScaleSubImageCollection ctor
12260 2009-02-03  Larry Ewing  <lewing@novell.com>
12262         * dirty.cpp (Surface::UpdateLayout): hack some sizing logic into
12263         the toplevel logic.
12265         * usercontrol.cpp: fix missing modification.
12267 2009-02-03  Larry Ewing  <lewing@novell.com>
12269         * frameworkelement.cpp (FrameworkElement::Arrange): shrink the
12270         clip by the margin.
12272 2009-02-03  Geoff Norton  <gnorton@novell.com>
12274         * frameworkelement.cpp (Arrange): If we have a negative margin,
12275         it moves our layout slot, instead of clipping it, as such we need
12276         to adjust the clipping path accordingly in these cases to accomodate
12277         this.
12279 2009-02-03  Jeffrey Stedfast  <fejj@novell.com>
12281         * textbox.cpp (TextBoxView::ResetCursorBlink): We don't care about
12282         ReadOnly status afterall.
12283         (TextBoxView::OnModelChanged): Same.
12284         (TextBox::OnKeyDown): If we are ReadOnly, don't allow editing of
12285         the buffer.
12287         * control.h: Control's default FontSize is 11, not 14.666 like
12288         TextBlock's.
12290 2009-02-03  Larry Ewing  <lewing@novell.com>
12292         * shape.cpp (Shape::ArrangeOverride): invalidate the path cache
12293         when we arrange.  Fixes the rectangle bg on pdc.
12295 2009-02-03  Jeffrey Stedfast  <fejj@novell.com>
12297         * textbox.cpp (TextBox::OnPropertyChanged): Set the default
12298         SelectionBackground and SelectionForeground brushes if
12299         SelectionLength gets to be >0.
12300         (TextBox::TextBox): Don't set them here. Initialize a new state
12301         variable, cursor_column to 0.
12302         (TextBox::CursorDown): Update cursor_column and fix some
12303         inconsistencies with Microsoft's logic. Renamed and c++'ified from
12304         move_down().
12305         (TextBox::CursorUp): Same idea here.
12306         (TextBox::CursorNextWord): Renamed/c++'ified from next_word().
12307         (TextBox::CursorPrevWord): Same idea.
12308         (TextBox::KeyPress*Down): Save/Restore cursor_column state after
12309         updating SelectionStart/Length properties.
12310         (TextBox::KeyPress*Up): Same.
12311         (TextBox::KeyPressHome): We can set cursor_column to 0 here.
12312         (TextBox::OnPropertyChanged): If Text, SelectedText,
12313         SelectionStart or SelectionLength chanegs, we need to reset
12314         cursor_column to -1 (aka "unknown").
12316 2009-02-03  Larry Ewing  <lewing@novell.com>
12318         * grid.cpp (Grid::ArrangeOverride): remove a bunch of the old code
12319         and apply the finalsize adjustments to the existing values.
12320         Handle the empty row/col case specially.
12322         * usercontrol.cpp: revert accicdental diabling (for now).
12324 2009-02-03  Jeffrey Stedfast  <fejj@novell.com>
12326         * textbox.cpp (TextBuffer::Replace): Do the right thing if length
12327         goes beyond the end of the buffer.
12328         (TextBuffer::Cut): Same.
12330         * layout.cpp (RenderSegment): Extend the selection line
12331         Silverlight's TextBox does if the selection crosses over the CRLF
12332         sequence at the end of a line.
12334 2009-02-03  Larry Ewing  <lewing@novell.com>
12336         * border.cpp:
12337         * usercontrol.cpp:
12338         * frameworkelement.cpp: handle the specified size case as well.
12340 2009-02-03  Jb Evain  <jbevain@novell.com>
12342         * xaml.cpp (PrimitiveNamespace::FindElement): correctly retrieve
12343         primitive types.
12345 2009-02-03  Jeffrey Stedfast  <fejj@novell.com>
12347         * textbox.cpp: Rewrote selection logic and vastly simplified
12348         cursor movement along the way.
12350 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12352         * type.h:
12353         * type.cpp:
12354         * type.h.in:
12355         * dependencyproperty.h:
12356         * dependencyproperty.cpp: Remove the need for
12357           DependencyProperty to be a friend class of Type.
12359 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
12361         * multiscalesubimage.h: DefaultValues for DPs.
12363 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
12365         * deepzoomimagetilesource.h|cpp:
12366         * multiscaleimage.h|cpp:
12367         * multiscalesubimage.h|cpp: fill the subimages on MSI
12369 2009-02-03  Sebastien Pouliot  <sebastien@ximian.com>
12371         * deployment.h: Don't use 'volatile' before glib 2.10 (e.g. sled10)
12372         because that was not part of the API before then (and it breaks
12373         compilation).
12375 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12377         * type.h:
12378         * type.cpp:
12379         * type.h.in: Type: don't make Types a friend class of Type.
12381 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12383         * animation.h:
12384         * animation.cpp: Remove animation_init, it's empty.
12386         * audio.cpp: We need to set the current deployment on the
12387           audio thread (but without touching mono at all).
12389         * cbinding.h:
12390         * cbinding.cpp:
12391         * type-generated.cpp:
12392         * dependencyproperty.g.cpp: Regenerated.
12394         * dependencyobject.h:
12395         * dependencyobject.cpp: Move object accounting and delayed
12396           unref handling to Deployment.
12398         * dependencyproperty.h: Remove DependencyProperty::Shutdown,
12399           it's empty.
12401         * deployment.cpp: Add a SetCurrent overload which allows us
12402           to specify whether the current appdomain should be updated
12403           too. GetCurrent: Never access mono if the current domain is
12404           NULL. Move object tracking and delayed unrefs here.
12406         * deployment.h: Add a SetCurrent overload which allows us to
12407           specify whether the current appdomain should be updated
12408           too. Move object tracking and delayed unrefs here.
12410         * runtime.cpp: Move object tracking reports to Deployment.
12411           Remove unnecessary static init and shutdown methods.
12413         * type.h:
12414         * type.cpp:
12415         * type.h.in: Completely remove all static Type
12416           initialization, we now rely on the Types* on the current
12417           Deployment.
12419 2009-02-03  Sebastien Pouliot  <sebastien@ximian.com>
12421         * style.cpp: Remove extra logic and comment the main "bad" hack
12422         still required not to cause regressions. Affected test cases
12423         will marked as known issues until the XAML parser issue (which
12424         is adding elements to collections before setting their properties)
12425         is fixed.
12427 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12429         * window-gtk.cpp: Add missing Deployment::SetCurrent calls.
12431 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12433         * namescope.cpp: NamScope::ObjectDestroyedEvent: upon object
12434           destruction the name might not be available anymore, so
12435           loop over the entire hash tables looking for the object to
12436           remove instead of trying to lookup with a null key. Fixes a
12437           crash while running moon-unit.
12439 2009-02-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12441         * xaml.cpp: Use property accessors on Type instead of
12442           accessing the fields.
12444 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
12446         * debug.h:
12447         * runtime.h|runtime.cpp: new LOG_MSI macro.
12449 2009-02-03  Fernando Herrera  <fherrera@novell.com>
12451         * runtime.cpp:
12452         * runtime.h: Move moonlight_flags and runtime_flags to 64bits
12453         as we reached the 32bits limit for debug.
12455 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
12457         * deepzoomimagetilesource.h|cpp: Parse Collections.
12459 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
12461         * deepzoomimagetilesource.h|cpp: data structures to parse
12462         DZ images with subimages. Move the common parts of both ctors
12463         in Init ()
12465 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
12467         * tilesource.h:
12468         * deepzoomimagetilesource.h|cpp: fix some compilation warning, move
12469         some methods and fields to the private section.
12471 2009-02-03  Stephane Delcroix  <sdelcroix@novell.com>
12473         * multiscalesubimage.h|cpp: re-use the tilesource to parse subimages
12475 2009-02-02  Chris Toshok  <toshok@ximian.com>
12477         * popup.h, popup.cpp: this inherits from FrameworkElement, not
12478         DependencyObject.
12480         * dependencyobject.cpp (dispose_value): this method is doing *way*
12481         too much.  we can't just blindly dispose of our values.  they
12482         could be shared across multiple elements.  don't even unref them
12483         here, as deleting the value does that.
12485         * type-generated.cpp: regen.
12487 2009-02-02  Larry Ewing  <lewing@novell.com>
12489         * mediaelement.cpp:
12490         * media.cpp (Image::UpdateSize): update horrible hacks that are
12491         used when we are part of canvas until they can be removed
12492         completely
12494 2009-02-02  Larry Ewing  <lewing@novell.com>
12496         2009-02-02  Chris Toshok  <toshok@ximian.com>
12498         * enums.cpp (keyboard_navigation_mode_map): add
12499         (initialize_enums): add TabNavigation property handling, mapping
12500         to keyboard_navigation_mode_map.
12502 2009-02-02  Geoff Norton  <gnorton@novell.com>
12504         * bitmapimage.h: 
12505         * xaml.cpp: Inject ImageSource underneath BitmapImage so that
12506         custom xaml that attaches a ImageSource can work.  Every
12507         ImageSource is a BitmapImage in SL2
12508         * type-generated.cpp:
12509         * type.h:
12510         * value.h: Regen
12512 2009-02-02  Larry Ewing  <lewing@novell.com>
12514         * border.cpp:
12515         * usercontrol.cpp:
12516         * frameworkelement.cpp (FrameworkElement::ArrangeOverride): only
12517         stretch back out to finalsize in the stretch case.
12519 2009-02-02  Jeffrey Stedfast  <fejj@novell.com>
12521         * layout.cpp (TextRun): 'crlf' is now a short rather than a 2-bit
12522         int because, duh, the range is -2 to 1, not 0 to 3 and so
12523         TextLine::crlf was being set to -2 instead of 2.
12524         (TextLayout::GetCursor): A minor tweak to get things to work if
12525         the cursor is right after the last char which is a \r.
12527         * textbox.cpp (TextBuffer::Cut): Fixed, this was totally broken
12528         before.
12529         (move_down): Need to use a loop when advancing back to the
12530         previous column so we don't go beyond EOL.
12531         (move_up): Same, but more fixes as well.
12533 2009-02-02  Jeffrey Stedfast  <fejj@novell.com>
12535         * textbox.cpp: Moved all event handling back to TextBox since
12536         that's the focusable element.
12538         * runtime.cpp (Surface::HandleMouseEvent): Loop until we find the
12539         first Control subclass that we can focus.
12541 2009-02-02  Sebastien Pouliot  <sebastien@ximian.com>
12543         * dependencyproperty.g.cpp:Regenerated
12544         * style.cpp|h: Use validators on Setter instead of overriding
12545         SetValueWithErrorImpl on SetterBase
12546         * validators.cpp|h: Addvalidator for checking sealed Setter
12548 2009-02-02  Larry Ewing  <lewing@novell.com>
12550         * border.cpp (Border::Render): don't fill the whole are with the
12551         border brush only fill the BorderThickness.  
12553 2009-02-02  Larry Ewing  <lewing@novell.com>
12555         * textbox.cpp, textbox.h: first pass at implementing arrange and
12556         measure.
12558         * text.cpp: request with padding too.
12560 2009-02-02  Chris Toshok  <toshok@ximian.com>
12562         * textbox.h (class TextBox): store the contentElement as an
12563         instance field so we can update it in OnPropertyChanged.
12565         * textbox.cpp (TextBox::OnApplyTemplate): this is seriously
12566         disgusting, and *SHOULD* be handled in the textbox template, but
12567         we can't handle it in ours in case people replace it.  if the
12568         ContentElement template child has DP's named
12569         VerticalScrollBarVisibility and HorizontalScrollBarVisibility, set
12570         them based on the value of ours.
12571         (TextBox::OnPropertyChanged): handle property changes on our
12572         VerticalScrollBarVisibility/HorizontalScrollBarVisibility
12573         properties by proxying them to our contentElement.
12575 2009-02-02  Alan McGovern  <amcgovern@novell.com>
12577         * media.cpp:
12578         * bitmapimage.cpp: Image.Source defaults to a BitmapImage
12579           with a uri of string.empty.
12581 2009-02-02  Chris Toshok  <toshok@ximian.com>
12583         * rect.h (struct Rect): we can be Grown by a negative amount. make
12584         sure we don't drop below 0 on width/height, since everything blows
12585         up when we do.
12587 2009-02-02  Alan McGovern  <amcgovern@novell.com>
12589         * bitmapimage.h:
12590         * dependencyproperty.g.cpp: The default value for
12591           Bitmap.ImageSource is an empty string.
12593 2009-02-02  Jeffrey Stedfast  <fejj@novell.com>
12595         * textbox.cpp (TextBox::OnPropertyChanged): Emit ModelChanged
12596         events when the selection or text changes. TextBoxView cannot
12597         depend on getting those events if things are changed
12598         programatically.
12599         (TextBox::KeyPressThaw): Don't ever bother with emitting
12600         ModelChanged events here, they'll be emitted in
12601         OnPropertyChanged(), now.
12602         (TextBoxView): We no longer listen to TextChanged or
12603         SelectionChanged events.
12604         (TextBoxView::ResetCursorBlink): New method to do all of the
12605         proper state checking to see if the cursor should be rendered
12606         which calls the appropriate Begin/Delay/EndCursorBlink() method.
12607         (TextBoxView::OnModelChanged): Updated to handle Text and
12608         Selection changes. Dropped CursorPosition because it is no longer
12609         necessary.
12610         (TextBoxView::OnFocusIn): Set focused to true before calling
12611         ResetCursorBlink().
12612         (append_runs): Don't forget to append the LineBreak to the Runs
12613         list.
12614         (TextBoxView::SetTextBox): Need to sync some additional state.
12616 2009-02-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12618         * runtime.cpp: ~Surface: don't call DrainUnrefs, we might
12619           already be in one, and DrainUnrefs isn't recursive anymore.
12621 2009-02-02  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12623         * src.mdp: Updated to use new MD features (ChangeLog and log
12624           message policy).
12626 2009-02-02  Stephane Delcroix  <sdelcroix@novell.com>
12628         * deepzoomimagetilesource.h|cpp: add a parsed_callback.
12629         * multiscaleimage.cpp: re-render on parsed_cb, starting rendering
12630         immediately.
12632 2009-02-02  Stephane Delcroix  <sdelcroix@novell.com>
12634         * deepzoomimagetilesource.h|cpp: parse DisplayRects, returns NULL
12635         in GetTileLayer for missing tiles.
12637 2009-02-02  Stephane Delcroix  <sdelcroix@novell.com>
12639         * multiscaleimage.cpp: render lower layer if the current layer
12640         contains NULL tiles.
12642 2009-02-02  Chris Toshok  <toshok@ximian.com>
12644         * frameworkelement.cpp (FrameworkElement::ArrangeOverride):
12645         correct apparent c&p error.
12647 2009-02-01  Larry Ewing  <lewing@novell.com>
12649         * control.cpp, control.h:
12650         * usercontrol.cpp, usercontrol.h: move ArrangeOverride and
12651         MeasureOverride here from control where they are only used for
12652         binding.
12654 2009-02-01  Larry Ewing  <lewing@novell.com>
12656         * thickness.cpp (Thickness::FromStr): 
12657         * cornerradius.cpp (CornerRadius::FromStr): don't pass a max value
12658         that will cause the rest to be filled with 0.  Fixes parsing of
12659         single value entries.
12661         * frameworkelement.cpp: arrange based on the adjusted rect.
12663 2009-02-01  Chris Toshok  <toshok@ximian.com>
12665         * contentcontrol.cpp (ContentControl::OnPropertyChanged): remove
12666         the ApplyTemplate gunk here, as the template doesn't change when
12667         our content does - the ContentPresenter in our control template
12668         will changed based on our content.
12670         * xaml.cpp (dependency_object_set_attributes):
12671         handle_xaml_markup_extension has three possible return states.
12672         "Need SetValue", "Don't SetValue", and "Error".  the bool return
12673         value is the first two (true == need_setvalue), and p->error_args
12674         determines the last one.
12675         (handle_xaml_markup_extension): add a comment detailing the
12676         need_setvalue return value, and make the return values consistent.
12677         TemplateBindings are weird in that they don't (for now) set a
12678         value, but require that we don't continue on with the set value
12679         machinery in dependency_object_set_attributes.
12681         Also, the TemplateBinding handling in the case of
12682         Property1={TemplateBinding Property2} was attaching things such
12683         that updates to source.Property1 would update target.Property2.
12684         This is exactly backward - it should have been source.Property2 =>
12685         target.Property1.  We got lucky in a vast number of instances
12686         because the property names were the same.
12688 2009-02-01  Sebastien Pouliot  <sebastien@ximian.com> 
12690         * style.cpp: Revert first part (always seal) of last patch due to
12691         regressions.
12693 2009-02-01  Sebastien Pouliot  <sebastien@ximian.com>
12695         * style.cpp: Always seal setters when added to collection (unit 
12696         tested) and unrelated to style (which may not be assigned, SIGSEGV)
12698 2009-01-31  Geoff Norton  <gnorton@novell.com>
12700         * animation.cpp: Its possible for a Storyboard to have TargetName
12701         and TargetProperty set, but be unresolvable, and still use a parent
12702         manual target (See Axelerate3D).
12704 2009-01-31  Chris Toshok  <toshok@ximian.com>
12706         * collection.h, collection.cpp (class UIElementCollection):
12707         UIElements can be reparented logical parent-wise, but can't have
12708         more than one *visual* parent.
12710 2009-01-31  Larry Ewing  <lewing@novell.com>
12712         * border.cpp:
12713         * control.cpp:
12714         * frameworkelement.cpp: rather than trying to fix the rendering
12715         fix the layout_xform to handle margins automatically.
12717 2009-01-31  Larry Ewing  <lewing@novell.com>
12719         * border.cpp (Border::Render): try to match the interior
12720         CornerRound behavior a littler closer.
12722 2009-01-31  Larry Ewing  <lewing@novell.com>
12724         * rect.cpp (Rect::Draw): fix typo in rect drawing.
12726 2009-01-31  Larry Ewing  <lewing@novell.com>
12728         * cornerradius.h: add == and != overloads.
12730         * uielement.cpp: don't include the layout clip if we are
12731         tranforming the bounds.  The layout clip only applies to local
12732         space.
12734         * border.cpp: restore the graphics context after clipping.
12736 2009-01-31  Larry Ewing  <lewing@novell.com>
12738         * rect.cpp, rect.h: move the rounded drawing here for now until
12739         there is a better place.
12740         
12741         * border.cpp: start drawing the borderbrush and using border
12742         thickness.
12743         
12744 2009-01-31  Larry Ewing  <lewing@novell.com>
12746         control.cpp: fix arranged size with border thickness or padding.
12748         border.cpp: fix arranged size with border thickness or
12749         padding. fix rendering with margins.
12751         panel.cpp: fix rendering with a margin.
12753 2009-01-31  Larry Ewing  <lewing@novell.com>
12755         * border.cpp (Border::Render): add corner radius rendering logic
12756         here for now.
12758 2009-01-31  Stephane Delcroix  <sdelcroix@novell.com>
12760         * multiscaleimage.h|cpp: ensure there's only one downloader running,
12761         fixes the issue where wrong images were cached.
12763 2009-01-31  Sebastien Pouliot  <sebastien@ximian.com>
12765         * contentcontrol.h: Add @CallInitialize so the event gets
12766         registred (in the managed side) and we can now track content
12767         changes.
12769 2009-01-30  Geoff Norton  <gnorton@novell.com>
12771         * textbox.cpp: FontFamily is now a FontFamily not a string.
12773 2009-01-30  Chris Toshok  <toshok@ximian.com>
12775         * xaml.cpp: fix ResourceDictionary once and for all.
12777 2009-01-30  Geoff Norton  <gnorton@novell.com>
12779         * deployment.cpp|h: Ensure that any downloaders that might
12780         call back into managed land are aborted before we throw out the
12781         domain.
12782         * downloader.cpp|h: Add a nice interface to DownloaderRequest
12783         and DownloaderResponse to save some code duplication in deployment
12785 2009-01-30  Geoff Norton  <gnorton@novell.com>
12787         * mediaelement.cpp:  If we finish downloading before we can
12788         fill the buffer, we still need to emit this event.
12790 2009-01-30  Chris Toshok  <toshok@ximian.com>
12792         * usercontrol.h (class UserControl): make managed access to
12793         ContentProperty protected internal, not just protected.
12795         * dependencyobject.h (class DependencyObject): generate a
12796         cbinding/pinvoke for SetLogicalParent.
12798         * cbinding.h, cbinding.cpp: regen.
12800 2009-01-30  Jeffrey Stedfast  <fejj@novell.com>
12802         * textbox.cpp (TextBox::KeyPressUnichar): Fixed to update
12803         SelectionStart/Length.
12805 2009-01-30  Geoff Norton  <gnorton@novell.com>
12807         * runtime.cpp: Let managed code change the fullscreen state.
12808         * cbinding.cpp|h: Regenerate
12810 2009-01-30  Chris Toshok  <toshok@ximian.com>
12812         * xaml.cpp (dependency_object_set_property): remove the ugly
12813         assumption - we know if the property type is managed now.
12815 2009-01-30  Jeffrey Stedfast  <fejj@novell.com>
12817         * textbox.cpp (TextBox::KeyPress<key>): Update an internal 'emit'
12818         state rather than returning a changed mask. Also modified to treat
12819         selection.start as the cursor position when selection.length is
12820         0. Otherwise refer to the cursor state to figure out which end of
12821         the selection the cursor is at (for growing/shrinking).
12822         (TextBox::KeyPressFreeze): Reset 'emit' state.
12823         (TextBox::KeyPressThaw): Sync and then emit our changed events.
12824         (TextBox::OnPropertyChanged): Updated for ClearSelection() API
12825         change.
12826         (TextBox::ClearSelection): Now takes a 'start' argument to set
12827         SelectionStart to (e.g. cursor position).
12828         (TextBox::Select): Now longer needs to do a freeze/thaw.
12829         (TextBoxView::OnKeyDown): Updated.
12831 2009-01-30  Chris Toshok  <toshok@ximian.com>
12833         * control.h, control.cpp: same story with InsideObject.
12835 2009-01-30  Chris Toshok  <toshok@ximian.com>
12837         * control.h, control.cpp: remove Control::Render.  handling of the
12838         background property is left to a templatebinding in the visual
12839         tree of the applied template.
12841 2009-01-30  Chris Toshok  <toshok@ximian.com>
12843         * provider.cpp (StylePropertyValueProvider::SealStyle): call
12844         ProviderValueChanged on all values in the style so the object can
12845         do things with them.
12847         * frameworkelement.cpp (FrameworkElement::OnPropertyChanged): add
12848         a comment about SealStyle calling ProviderValueChanged.
12850 2009-01-30  Chris Toshok  <toshok@ximian.com>
12852         * xaml.cpp: when parsing multiple buffers (as we do when hydrating
12853         from a template), we need to keep track of the total offset from
12854         the start of all buffers, since XML_GetCurrentByteIndex returns a
12855         value with that range, it's not the byte index into the current
12856         buffer (unless there's only 1).  Fixes templates stored inside of
12857         other templates.
12859 2009-01-30  Andreia Gaita  <avidigal@novell.com>
12861         * clock.cpp: no use stopping if it's already stopped
12863 2009-01-30  Andreia Gaita  <avidigal@novell.com>
12865         * clock.cpp: reset the state flags as well
12867 2009-01-30  Larry Ewing  <lewing@novell.com>
12869         * text.cpp (TextBlock::Render): Start taking padding into account
12870         and limit the max size to actual not to the arranged value.
12872 2009-01-30  Jeffrey Stedfast  <fejj@novell.com>
12874         * textbox.h (TextBox::GetCursor): Cursor position is aka
12875         selection.start.
12877         * textbox.cpp (TextBox::Freeze): Renamed from PreKeyPress().
12878         (TextBox::Thaw): Decrement freeze count and emit events when we
12879         reach 0.
12880         (TextBox::OnPropertyChanged): When SelectionStartProperty or
12881         SelectionLengthProperty change, call SyncSelectedText(). Fixed the
12882         selection.start/cursor positioning logic when TextProperty or
12883         SelectedTextProperty changes.
12884         (TextBoxView::OnKeyDown): Updated to sue the new Freeze()/Thaw()
12885         methods.
12887 2009-01-30  Larry Ewing  <lewing@novell.com>
12889         * grid.cpp (Grid::ArrangeOverride): fix the minimum measure size
12890         computation.
12892 2009-01-30  Sebastien Pouliot  <sebastien@ximian.com>
12894         * frameworkelement.cpp: Make sure bounds_with_children is always
12895         initialized before being used.
12897 2009-01-30  Geoff Norton  <gnorton@novell.com>
12899         * mediaelement.cpp: Emit MediaOpenedEvent as soon as we've opened the
12900         media.  Fixes the thumber moving on PDC player.
12902 2009-01-30  Jackson Harper  <jackson@ximian.com>
12904         * xaml.cpp: Fixup logic for setting both Key and Name, I was wrong
12905         about them being legal if they are equal.
12907 2009-01-30  Larry Ewing  <lewing@novell.com>
12909         * grid.cpp (Grid::ArrangeOverride): hack around spans in
12910         rebuilding the table until we understand them better.
12912 2009-01-30  Larry Ewing  <lewing@novell.com>
12914         * frameworkelement.cpp:
12915         * border.cpp:
12916         * control.cpp (Control::ArrangeOverride): use alignment properly
12917         in these places as well
12919 2009-01-30  Larry Ewing  <lewing@novell.com>
12921         * frameworkelement.cpp (FrameworkElement::Arrange): don't modify
12922         the alignment here.
12924 2009-01-30  Stephane Delcroix  <sdelcroix@novell.com>
12926         * multiscaleimage.cpp: load png too
12928 2009-01-30  Stephane Delcroix  <sdelcroix@novell.com>
12930         * multiscaleimage.cpp: change the vporigin to relative coords
12932 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12934         * dependencyobject.cpp: EventObject::unref: don't try to get the
12935         typename if there's no deployment around.
12937         * pipeline.cpp: Media::Shutdown: set the current deployment before
12938         looping over each media.
12940 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12942         * deployment.cpp: Remove dead code.
12944 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12946         * downloader.cpp: Downloader::Write: update current deployment.
12948 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12950         * mp3.cpp:
12951         * audio.cpp:
12952         * pipeline.cpp:
12953         * mediaplayer.cpp:
12954         * audio-pulse.cpp:
12955         * mediaelement.cpp:
12956         * pipeline-asf.cpp:
12957         * mms-downloader.cpp:
12958         * pipeline-ffmpeg.cpp: %llu => G_UINT64_FORMAT.
12960 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12962         * deployment.cpp: Comment out log spammer.
12964         * runtime.cpp: Add some sanity checks.
12966         * dependencyobject.cpp: Set current deployment for delayed unrefs too.
12968 2009-01-30  Stephane Delcroix  <sdelcroix@novell.com>
12970         * deepzoomimagetilesource.cpp: normalize ViewportWidth
12972 2009-01-30  Sebastien Pouliot  <sebastien@ximian.com>
12974         * cbinding.cpp|h: Regenerated
12975         * geometry.h: Get bindings/pinvoke on Geometry::GetBounds
12976         * rect.h: Add new ctor so the generator code can work
12978 2009-01-30  Stephane Delcroix  <sdelcroix@novell.com>
12980         * tilesource.h|cpp:
12981         * deepzoomimagetilesource.h|cpp:
12982         * multiscaleimage.cpp: as we can't assume there's a managed DZITS,
12983         implement the DZ parser in native code.
12985 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12987         * mediaplayer.cpp: MediaPlayer: Set object type correctly.
12989 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12991         * deployment.cpp: Allow setting the current deployment to NULL.
12993 2009-01-30  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12995         * mediaelement.cpp: Handle MediaElementStateIndividualizing and
12996         AcquiringLicense in all switch statements to fix gcc warnings.
12998 2009-01-30  Geoff Norton  <gnorton@novell.com>
13000         * debug.cpp: Use the proper headers here, we need them anyways.
13001         * window.h: Store the deployment we were created in.
13002         * window-gtk.cpp: Ensure we set our deployment before starting
13003         to call into our heirarchy.
13005 2009-01-30  Jb Evain  <jbevain@novell.com>
13007         * deployment.h: make Deployment::Surface DP internal.
13009 2009-01-29  Geoff Norton  <gnorton@novell.com>
13011         * deployment.h: Surface is now a DP on the deployment so we 
13012         can share it with managed.
13013         * dependencyproperty.g.cpp: Regen
13014         * clock.cpp: Get the surface of the Deployment we're in so that
13015         clocks from Dispatcher timer end up on the right surface.
13017 2009-01-29  Geoff Norton  <gnorton@novell.com>
13019         * deployment.cpp: Trust the domain over the TLS slot since mono
13020         will switch that on us on any thread really.
13022 2009-01-29  Geoff Norton  <gnorton@novell.com>
13024         * clock.cpp|h: Ensure that we set the correct deployment from the 
13025         clock ticks before traversing back into our heirarchy.
13027 2009-01-29  Jackson Harper  <jackson@ximian.com>
13029         * xaml.cpp: Add support for the primitive types in mscorlib.  This
13030         will get properly formed strings, doubles, and int32s working for
13031         now, we don't handle the oddities of the SL parsing properly yet
13032         though.
13034 2009-01-29  Jackson Harper  <jackson@ximian.com>
13036         * type-generated.cpp: regen
13038 2009-01-29  Larry Ewing  <lewing@novell.com>
13040         * frameworkelement.cpp (FrameworkElement::Arrange): unref the clip
13041         geometry.
13043         * grid.cpp: unref the dummy columns we create here.
13045 2009-01-29  Jeffrey Stedfast  <fejj@novell.com>
13047         * textbox.cpp (TextBoxView::ArrangeOverride): Removed.
13049         * textbox.h: Shuffle some internal accessors/events around.
13051 2009-01-29  Larry Ewing  <lewing@novell.com>
13053         * text.cpp, text.h: implement basic layout size rules and strip
13054         the custom actual* properties.  Still a hack but passable for now.
13056         regenerate.
13058 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13060         * runtime.h:
13061         * runtime.cpp: Surface: Implement Dispose and call Dispose on the
13062         toplevel object. PaintToDrawable: Update current deployment.
13064 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13066         * uielement.cpp: Dispose: add a null-check, and only walk the visual
13067         tree if we haven't been disposed already.
13069 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13071         * namescope.h:
13072         * namescope.cpp: Namespace: Implement Dispose and remove all entries
13073         from our names hash table there.
13075 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13077         * xaml.cpp: XamlLoader::CreateFromFile: Add a ref to avoid a crash later
13078         on upon destruction.
13080 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13082         * dependencyobject.h:
13083         * dependencyobject.cpp: EventObject: Added SetCurrentDeployment: updates
13084         Deployment::Current. Emit DestroyedEvent in Dispose instead of the
13085         dtor.
13087 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13089         * mediaelement.h:
13090         * mediaelement.cpp: Implement Dispose and put most of the cleanup there
13091         instead of in the dtor. media_element_advance_frame: we need to set
13092         the current deployment here.
13094 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13096         * collection.cpp: Collection::Dispose: Post-chain Dispose instead of
13097         pre-chain. Set array's size to 0 after deleting all the values.
13099         * pipeline.cpp: Post-chain Dispose instead of pre-chain. Since there's
13100         one media thread per Media object, there's no need to set the current
13101         deployment for each work node, just set it at thread start.
13102         MediaClosure::SetContext: fix refcounting bug.
13104         * pipeline-asf.cpp: Post-chain Dispose instead of pre-chain.
13106 2009-01-29  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13108         * deployment.h:
13109         * deployment.cpp: Deployment: Enable support managed stackframes after
13110         initializing mono. Implement Dispose, and upon destruction set
13111         current application to NULL.
13113 2009-01-29  Stephane Delcroix  <sdelcroix@novell.com>
13115         * tilesource.h|cpp: image size is long
13117 2009-01-29  Stephane Delcroix  <sdelcroix@novell.com>
13119         * deepzoomimagetilesource.cpp: set the callback to NULL in ctor
13121 2009-01-29  Stephane Delcroix  <sdelcroix@novell.com>
13123         * multiscaleimage.cpp: ElementToLogicalPoint, ZoomAboutLogicalPoint:
13124         logical is [0,1],[0,1]
13126 2009-01-28  Larry Ewing  <lewing@novell.com>
13128         * frameworkelement.cpp (FrameworkElement::MeasureOverride): 
13129         it might help to actually measure things, so do that... *sigh*
13131 2009-01-28  Larry Ewing  <lewing@novell.com>
13133         * shape.cpp (Shape::ComputeStretchBounds): remove the old
13134         width/height short circuiting when one or the other of
13135         width/height was not set simply use the lyaout clip when it is
13136         around.  Might need a little more work but it is definitely
13137         needed.
13139 2009-01-28  Larry Ewing  <lewing@novell.com>
13141         * frameworkelement.cpp, frameworkelement.h: layout and arrange
13142         children if there are any.  set IsLayoutContainer to true if we
13143         have kids.
13145 2009-01-28  Larry Ewing  <lewing@novell.com>
13147         * frameworkelement.cpp (FrameworkElement::HitTest): move the
13148         majority of the hit test logic here.  Now we only walk the
13149         children once and we only call InsideObject when we must.
13150         InsideObject now only checks the local object subtree is handled
13151         in HitTest.
13153         * panel.cpp, panel.h:
13154         * control.cpp, control.h:
13155         * border.cpp, border.h:
13156         * text.cpp, text.h: remove the old HitTest and rework InsideObject
13157         for the new rule.
13159         * uielement.cpp: make InsideClip potentially a little faster.
13161 2009-01-28  Larry Ewing  <lewing@novell.com>
13162         
13163         * uielement.cpp (UIElement::OnPropertyChanged): invalidate measure
13164         on visibility.
13166         * control.cpp:
13167         * border.cpp:
13168         * canvas.cpp: skip invisible elements.
13170 2009-01-28  Jeffrey Stedfast  <fejj@novell.com>
13172         * textbox.cpp (TextBoxView::Layout): We need to break the text
13173         apart by lines so that the TextLayout engine can handle them
13174         properly.
13176         * layout.cpp (TextLayout::LayoutWrapWithOverflow): Copy run->crlf
13177         over to line->crlf for each LineBreak.
13178         (TextLayout::GetCursor): Need to keep track of the line-ending
13179         character sequences as well.
13181         * layout.h (TextRun::IsLineBreak): New method to check if the run
13182         represents a LineBreak, cleaner than manually checking for text ==
13183         NULL.
13184         (TextRun::ctor): LineBreak version now takes a crlf argument to
13185         specify which line ending sequence it is.
13187 2009-01-28  Jeffrey Stedfast  <fejj@novell.com>
13189         * textbox.cpp (move_down): Fixed to handle any line-ending.
13190         (move_up): Same.
13191         (next_word): Same.
13192         (prev_word): Same.
13193         (TextBox::KeyPressBackSpace): Handle backspacing over any eoln
13194         sequence.
13195         (TextBox::KeyPressDelete): Same.
13196         (TextBox::KeyPressHome): Same.
13197         (TextBox::KeyPressEnd): Same.
13198         (TextBox::KeyPressRight): Same.
13199         (TextBox::KeyPressLeft): Same.
13200         (TextBoxView::OnKeyDown): Hitting Enter in a Silverlight TextBox
13201         inserts a \r character, not a \n, nor a \r\n.
13203         * text.cpp (TextBlock::Layout): Handle \r and \r\n as line-ending
13204         formats too.
13205         (TextBlock::SetTextInternal): Canonicalize line endings in our
13206         temp buffer.
13208         * layout.cpp (TextRun::TextRun): Don't worry about line endings...
13210 2009-01-28  Jackson Harper  <jackson@ximian.com>
13212         * xaml.cpp: Fix logic for setting name and key on
13213         storyboards. Rules are:
13214             1. You can set both if you set the name before the key
13215             2. You can set both if both values are equal
13216         
13217 2009-01-28  Chris Toshok  <toshok@ximian.com>
13219         * style.cpp (SetterBaseCollection::AddedToCollection): chain up to
13220         DependencyObjectCollection::AddedToCollection.
13221         (SetterBaseCollection::RemovedFromCollection): chain up to
13222         DependencyObjectCollection::RemovedFromCollection.
13224 2009-01-28  Sebastien Pouliot  <sebastien@ximian.com>
13226         * dependencyproperty.g.cpp: Regenerated
13227         * enums.cpp|h: Add MediaElementState
13228         * playlist.cpp: Use new MediaElementState enum
13229         * mediaelement.cpp|h: Use new MediaElementState enum
13231 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13233         * dependencyobject.cpp: ~EventObject: only inc objects_destroyed once.
13235 2009-01-27  Larry Ewing  <lewing@novell.com>
13237         * grid.cpp: limit the reduction in size to zero.
13239 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13241         * runtime.cpp:
13242         * dependencyobject.cpp: Fix building with object tracking.
13244 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13246         * debug.h: Surround logging macros with #if LOGGING instead of #if
13247         DEBUG.
13249 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13251         * dependencyobject.cpp: Move the OBJECT_TRACK macro here from the
13252         header, it's not used anywhere but in this file.
13254         * dependencyobject.h: Remove OBJECT_TRACKING from here, it's done at
13255         configure time now.
13257 2009-01-28  Jeffrey Stedfast  <fejj@novell.com>
13259         * textbox.cpp (TextBoxView::OnModelChanged): Handle updates to
13260         ReadOnly status.
13261         (TextBox::OnPropertyChanged): Emit ReadOnly model-changed event.
13263 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13265         * uielement.h: Make Dispose public.
13267 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13269         * codec-version.h.in:
13270         * dependencyobject.h:
13271         * dependencyobject.cpp: EventObject: Make the flags field an gint32
13272         field (to keep size consistent), put the flags at the upper bits and
13273         use the remaining lower bits for the object id. This requires a codec
13274         abi bump.
13276 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13278         * dependencyobject.cpp: Use bitfields correctly.
13280 2009-01-28  Sebastien Pouliot  <sebastien@ximian.com>
13282         * text.cpp: FontFamily can be NULL so we can't just access its
13283         source field without a check. Fix SIGSEGV when running moon-unit.
13284         * value.cpp: FontFamily is not a (managed) struct so it can have
13285         a NULL value. Fix SIGSEGV when creating a Value out of a NULL
13286         FontFamily in moon-unit.
13288 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13290         * type.h:
13291         * type-generated.cpp: Regenerated.
13293 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13295         * type.h:
13296         * type.h.in:
13297         * cbinding.h:
13298         * cbinding.cpp:
13299         * type-generated.cpp: Regenerated.
13301 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13303         * audio.h:
13304         * audio.cpp:
13305         * audio-pulse.h:
13306         * audio-alsa.cpp:
13307         * audio-pulse.cpp: Don't register any audio threads, they may interact
13308         badly with the gc and deadlock. Audio threads shouldn't be doing
13309         anything which requires the current deployment to be set anyway.
13311 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13313         * pipeline.h:
13314         * pipeline.cpp: AudioStream: call SetObjectType.
13316 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13318         * dependencyobject.h:
13319         * dependencyobject.cpp: Add an EventObject ctor overload which takes a
13320         Type::Kind. In EventObject::ref don't warn about inexistent
13321         deployments for audio objects.
13323 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13325         * dependencyobject.cpp: EventObject::GetDeployment: Fix warning.
13327 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13329         * audio.h:
13330         * audio.cpp:
13331         * audio-pulse.h:
13332         * audio-alsa.cpp:
13333         * audio-pulse.cpp: Every AudioSource already has deployment set (since
13334         they inherit from EventObject), use that to set the current
13335         deployment.
13337 2009-01-28  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13339         * src.mdp: Updated.
13341 2009-01-27  Chris Toshok  <toshok@ximian.com>
13343         * pipeline.cpp: include codec-version.h
13345         * pipeline-ui.cpp: same.
13347         * pipeline.h: remove the MOONLIGHT_CODEC_ABI_VERSION #define from
13348         here.
13350         * codec-version.h.in: new file.  update the
13351         MOONLIGHT_CODEC_ABI_VERSION #define here when things change.
13353 2009-01-27  Larry Ewing  <lewing@novell.com>
13355         * mediaelement.cpp (MediaElement::MeasureOverride): correct
13356         argument order.
13358 2009-01-27  Larry Ewing  <lewing@novell.com>
13360         * frameworkelement.cpp, frameworkelement.h: move generic
13361         bounds_with_children computation here for now.  Make
13362         GetSubtreeBounds return bounds or bounds_with_children based on
13363         having children. Start setting the layout clip in arrange (it will
13364         probably move later).  Rework the layout_xform logic slightly.
13366         * uielement.cpp: remove the generic render warning, it is ok not
13367         to override here if there is nothing local you need to draw.  When
13368         intersecting bounds with the clip path take the layout clip into
13369         account too.
13370         
13371         * text.cpp: update for bounds changes.  Don't recompute the
13372         natural bounds every pass.
13374         * mediaelement.cpp, mediaelement.h:
13375         * media.cpp, media.h: rework arrange and measure to match shape.
13376         Remove overridden bounds logic since it is no longer needed. Only
13377         use the odd width/height setting logic when we aren're part of a
13378         layout tree. Use the layout clip when drawing.
13380         * shape.cpp: clean up the bounds logic. Use the layout clip when
13381         drawing.
13383         * control.cpp, control.h:
13384         * border.cpp, border.h: use the layout clip when rendering, remove
13385         overrides for bounds now that fe handles them.
13387         
13388 2009-01-27  Chris Toshok  <toshok@ximian.com>
13390         * Makefile.am (libmoon_include_headers): add fontfamily.h
13392         * fontfamily.h: add struct.
13393         
13394         * control.h, text.h: FontFamilyProperty is of type FontFamily now.
13396         * text.cpp: FontFamilyProperty is a FontFamily struct now, not a
13397         string.
13399         * value.cpp: add FontFamily logic, and remove FONTFAMILY from the
13400         unmarshaled bits.
13402         * value.h.in (struct Value): add FontFamily and guint32 cases.
13404         * xaml.cpp (value_from_str): add case for FONTFAMILY.
13406         * value.h, type-generated.cpp, dependencyproperty.g.cpp: regen.
13408 2009-01-27  Geoff Norton  <gnorton@novell.com>
13410         * audio-pulse.cpp|h: Use the Deployment sourced from the player
13411         * dependencyobject.cpp: Fix the warning to not use triple not
13412         negative logic
13413         * deployment.cpp: If we find the deployment from the domain,
13414         put it in the tls slot to make future lookups use the fast-path.
13416 2009-01-27  Jeffrey Stedfast  <fejj@novell.com>
13418         * textbox.cpp (TextBox::TextBox): Don't connect to KeyDown/Up
13419         events anymore. Instead of having a bool 'emit' flag, use
13420         something closer to gtk's freeze_count.
13421         (TextBox::OnKeyDown): Moved to TextBoxView.
13422         (TextBox::OnKeyUp): Same.
13423         (TextBox::SelectAll): Now returns bool to specify if the selection
13424         has changed.
13425         (TextBox::PreKeyPress): Freeze event emission for our state
13426         changes.
13427         (TextBox::PostKeyPress): Thaw them and emit the events.
13428         (TextBoxView::OnKeyDown): Before processing the KeyEvent, call
13429         textbox->PreKeyPress() and after processing, call
13430         textbox->PostKeyPress().
13432 2009-01-27  Jackson Harper  <jackson@ximian.com>
13434         * value.cpp: unmarshall fonts properly.
13436 2009-01-27  Geoff Norton  <gnorton@novell.com>
13438         * dependencyobject.cpp|h:
13439         * mediaplayer.cpp: Remove the stupidity from my last commit.
13440         * audio.cpp: We're in the right thread and Deployment here, use
13441         Deployment::GetCurrent().
13443 2009-01-27  Geoff Norton  <gnorton@novell.com>
13445         * dependencyobject.cpp|h: Add a SetDeployment() call to lazy set
13446         the deployment on a EO.
13447         * deployment.cpp: Add some more logging.
13448         * mediaplayer.cpp: Inherit our Deployment from the MediaElement
13449         who owns us.
13451 2009-01-27  Geoff Norton  <gnorton@novell.com>
13453         * audio-alsa.cpp:
13454         * audio-pulse.cpp: Register the worker-thread's with mono and set our
13455         deployment correctly.
13456         * audio.cpp|h: Inherit the deployment from the MediaPlayer and keep it
13457         around so that our audio-players can register the thread with mono.
13459 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13461         * pipeline.cpp: WorkerLoop: set the current deployment for every work
13462         item.
13464         * deployment.h:
13465         * deployment.cpp: Add RegisterThread.
13467 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13469         * deployment.cpp: Deployment: Add some logging, fix indentation and call
13470         the DependencyObject ctor which takes a Deployment instead of the
13471         default ctor.
13473 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13475         * dependencyobject.h:
13476         * dependencyobject.cpp: Add EventObject and DependencyObject ctors which
13477         take a Deployment*, and an Initialize method which is called by both
13478         ctors of each type.
13480 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13482         * deployment.h: Initialize doesn't need cbinding/pinvoke.
13484 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13486         * debug.h: Add LOG_DEPLOYMENT.
13488         * runtime.h:
13489         * runtime.cpp: Add LOG_DEPLOYMENT. Call Deployment::Initialize in
13490         runtime_init.
13492 2009-01-27  Geoff Norton  <gnorton@novell.com>
13494         * deployment.cpp|h: Lock our access to the hash.  Remove a SetCurrent()
13495         instance since its just sugar and cant be bound anyways.
13497 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13499         * dependencyobject.h:
13500         * dependencyobject.cpp: Move ref to cpp file and add some sanity checks.
13502 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13504         * dependencyobject.h:
13505         * dependencyobject.cpp: Add Deployment* and flags fields on EventObject.
13507 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13509         * collection.cpp: Collection::Dispose: Call base class Dispose too.
13511 2009-01-27  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13513         * grid.h:
13514         * type.h:
13515         * text.h:
13516         * size.h:
13517         * popup.h:
13518         * shape.h:
13519         * value.h:
13520         * media.h:
13521         * error.h:
13522         * panel.h:
13523         * brush.h:
13524         * clock.h:
13525         * style.h:
13526         * stylus.h:
13527         * border.h:
13528         * canvas.h:
13529         * binding.h:
13530         * runtime.h:
13531         * trigger.h:
13532         * control.h:
13533         * textbox.h:
13534         * pipeline.h:
13535         * geometry.h:
13536         * template.h:
13537         * namescope.h:
13538         * uielement.h:
13539         * animation.h:
13540         * eventargs.h:
13541         * resources.h:
13542         * transform.h:
13543         * collection.h:
13544         * animation2.h:
13545         * downloader.h:
13546         * expression.h:
13547         * deployment.h:
13548         * tilesource.h:
13549         * bitmapimage.h:
13550         * usercontrol.h:
13551         * application.h:
13552         * mediaelement.h:
13553         * contentcontrol.h:
13554         * multiscaleimage.h:
13555         * dependencyobject.h:
13556         * type-generated.cpp:
13557         * frameworkelement.h:
13558         * multiscalesubimage.h:
13559         * deepzoomimagetilesource.h: Include all types derived from EventObject
13560         in the type system and remove the IncludeInKinds annotations from
13561         those classes.
13563 2009-01-27  Chris Toshok  <toshok@ximian.com>
13565         * xaml.cpp (XamlElementInstanceManaged::TrySetContentProperty):
13566         add the "XamlElementInstance* value" overload.  part of axelerate
13567         fix.
13568         (XamlElementInfoManaged::GetContentProperty): pass
13569         obj->AsDependencyObject() to GetContentPropertyName, instead of
13570         obj (which is a Value*).
13572 2009-01-26  Chris Toshok  <toshok@ximian.com>
13574         * xaml.cpp (XNamespace::IsParentResourceDictionary, SetAttribute):
13575         some behavior with x:Key/x:Name only happens when the element is a
13576         child of a ResourceDictionary.
13578 2009-01-26  Larry Ewing  <lewing@novell.com>
13580         * grid.cpp: rework proportional contribution of auto columns.
13582         * uielement.cpp: remove the slot logic from the transform here we
13583         will compute it in arrange.
13585 2009-01-26  Larry Ewing  <lewing@novell.com>
13587         * grid.cpp (Grid::ArrangeOverride): fix a an error in the loop
13588         bounds.
13590 2009-01-26  Geoff Norton  <gnorton@novell.com>
13592         * deployment.cpp: Cleanup our usage of hash a bit to avoid some
13593         senseless compare/branches.
13595 2009-01-26  Larry Ewing  <lewing@novell.com>
13597         * shape.cpp (Shape::Clip): hack back in shape clipping until the
13598         layout clip logic fixed.
13600 2009-01-26  Geoff Norton  <gnorton@novell.com>
13602         * deployment.cpp: Remove a useless null guard now that we have
13603         Deployment::Initialize.  Don't rudely nuke the TLS slot we might not
13604         own.
13606 2009-01-26  Geoff Norton  <gnorton@novell.com>
13608         * deployment.cpp|h:  Deployment now does all the domain book keeping
13609         for us, so that calls to GetCurrent will return the Deployment for 
13610         the appropriate context, it will also set the MonoDomain* appropriately
13611         where necessary.
13613 2009-01-26  Jeffrey Stedfast  <fejj@novell.com>
13615         * textbox.cpp (class TextBoxDynamicPropertyValueProvider):
13616         Removed.
13617         (TextBox::OnPropertyChanged): Guard SelectedTextProperty and
13618         TextProperty from reentrancy.
13619         (TextBox::EmitSelectionChanged): Update the value before emitting
13620         the event, this way we don't need the dynamic provider.
13621         (TextBox::EmitTextChanged): Same.
13622         (TextBox::OnKeyDown): Handle key == GDK_Return.
13624 2009-01-26  Jeffrey Stedfast  <fejj@novell.com>
13625         
13626         * textbox.cpp (class TextBoxDynamicPropertyValueProvider): We need
13627         to handle the TextProperty as well.
13628         (TextBox::TextBox): Init text_changed to false.
13629         (TextBox::EmitSelectionChanged): New helper method to set
13630         selection_changed to true and then emit the event.
13631         (TextBox::EmitTextChanged): Same idea.
13632         (TextBox::OnPropertyChanged): Use the new Emit helper methods.
13633         (TextBox::ClearSelection): Same.
13634         (TextBox::Select): Same.
13636 2009-01-26  Sebastien Pouliot  <sebastien@ximian.com>
13638         * animation.h: Change validators for TargetNameProperty and
13639         TargetNameProperty
13640         * dependencyproperty.g.cpp: Regenerated
13641         * validators.cpp|h: Add new IsTimelineValidator that check that
13642         the instance is derived from Timeline.
13644 2009-01-26  Larry Ewing  <lewing@novell.com>
13645         
13646         * border.cpp:
13647         * canvas.cpp:
13648         * dirty.cpp:
13649         * control.cpp, control.h:
13650         * frameworkelement.cpp, frameworkelement.h:
13651         * src/grid.cpp:
13652         * src/media.cpp:
13653         * src/mediaelement.cpp:
13654         * src/shape.cpp:
13655         * src/uielement.cpp:
13656         * src/usercontrol.h: Fix things to match the test results.  Still
13657         a few regressions in shapes.
13658         
13659 2009-01-26  Larry Ewing  <lewing@novell.com>
13661         * border.cpp (Border::MeasureOverride): 
13663 2009-01-26  Larry Ewing  <lewing@novell.com>
13665         * grid.cpp (Grid::MeasureOverride): handle out of bounds
13666         rows/columns the way the tests indicate.
13668 2009-01-24  Larry Ewing  <lewing@novell.com>
13670         * border.cpp (Border::MeasureOverride): Fix a width/height mixup.
13672 2009-01-24  Larry Ewing  <lewing@novell.com>
13674         * uielement.h (class UIElement): add IsLayoutContainer () to test
13675         if a given element wants to do the layout dance.  Hopefully this
13676         can be removed once the logic is more clear.
13678         * panel.h:
13679         * canvas.h:
13680         * border.h:
13681         * usercontrol.h: add IsLayoutContainer values.
13682         
13683 2009-01-26  Larry Ewing  <lewing@novell.com>
13685         * frameworkelement.cpp: tests show some really crazy behavior in
13686         the short circuit case, try to emulate that.
13688 2009-01-26  Larry Ewing  <lewing@novell.com>    
13690         * frameworkelement.cpp (FrameworkElement::Measure): remove the
13691         short circuit.
13693         * media.cpp: fix rendering.
13695 2009-01-26  Larry Ewing  <lewing@novell.com>
13696         
13697         * control.cpp: 
13698         * border.cpp: Try to get alignment working visually.
13700         * frameworkelement.cpp: hack the needed behavior in until I
13701         understand the problem better.
13703         * mediaelement.cpp, mediaelement.h:
13704         * media.cpp: use the layout values in stretching
13706 2009-01-26  Larry Ewing  <lewing@novell.com>
13708         * frameworkelement.cpp:
13709         * shape.cpp:
13710         * media.cpp:
13711         * mediaelement.cpp, mediaelement.h: fix up the bounds to use the
13712         new methods.
13714 2009-01-26  Larry Ewing  <lewing@novell.com>
13716         * media.h:
13717         * media.cpp: add bounds logic.
13719         * dirty.cpp:
13720         * control.cpp:
13721         * canvas.cpp:
13722         * border.cpp: start trying to deal with
13723         alignment.
13725         * frameworkelement.cpp: compute the layout_xform.
13726         
13727         * uielement.cpp, uielement.h: add layout_xform and use it.
13728         
13729         * shape.cpp: try something else in measure.
13731         * size.h: add == and != overrides.
13733 2009-01-26  Jeffrey Stedfast  <fejj@novell.com>
13735         * brush.cpp (VisualBrush::SetupBrush): Updated.
13737         * uielement.cpp (UIElement::Render): Render our subtree in the
13738         Region* version of this method and get rid of the old x,y,w,h
13739         version.
13741         * text.cpp (TextBlock::Render): Override the Render() that takes a
13742         Region.
13743         (Glyphs::Render): Same.
13745         * textbox.cpp (TextBoxView::Render): Same.
13747         * shape.cpp (Shape::Render): Here too.
13749 2009-01-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13751         * src.mdp: Update.
13753 2009-01-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13755         * type.cpp: Revert r124497.
13757 2009-01-26  Sebastien Pouliot  <sebastien@ximian.com>
13759         * transform.cpp: Add comment about a difference between SL2/ML 
13760         in caching/computing the resulting matrix value (exposed in SL2) 
13761         of a TransformGroup
13763 2009-01-26  Jackson Harper  <jackson@ximian.com>
13765         * xaml.cpp: Move this check into a function since it will be used
13766         in a few places.
13768 2009-01-26  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13770         * type.cpp: Type::Find: Check for NULL deployment to avoid crashes.
13772 2009-01-26  Chris Toshok  <toshok@ximian.com>
13774         * animation2.h, animation.[cpp,h], application.[cpp,h], asf/asf.h,
13775         binding.[cpp,h], bitmapimage.[cpp,h], brush.[cpp,h],
13776         canvas.[cpp,h], clock.[cpp,h], collection.[cpp,h],
13777         contentcontrol.[cpp,h], deepzoomimagetilesource.[cpp,h],
13778         dependencyobject.[cpp,h], dependencyproperty.h,
13779         deployment.[cpp,h], downloader.[cpp,h], error.[cpp,h],
13780         eventargs.[cpp,h], expression.[cpp,h], frameworkelement.[cpp,h],
13781         geometry.[cpp,h], grid.[cpp,h], media.[cpp,h],
13782         mediaelement.[cpp,h], multiscaleimage.[cpp,h],
13783         multiscalesubimage.h, namescope.[cpp,h], pipeline.h,
13784         popup.[cpp,h], resources.[cpp,h], runtime.[cpp,h], shape.[cpp,h],
13785         size.[cpp,h], style.[cpp,h], stylus.[cpp,h], textbox.[cpp,h],
13786         text.[cpp,h], tilesource.[cpp,h], transform.[cpp,h],
13787         trigger.[cpp,h], uielement.[cpp,h], uri.h, usercontrol.cpp,
13788         usercontrol.h: move some methods (mostly ctor/dtor) to the .cpp
13789         files, and remove GetObjectType - call SetObjectType instead.  Add
13790         @IncludeInKinds everywhere on types we want in the Kinds array -
13791         nothing is implicit now.  Also, add @SkipValue on types that
13792         shouldn't automatically appear in the Value struct (As* method,
13793         etc).
13795         * border.[cpp,h], control.[cpp,h], panel.[cpp,h]: same as above,
13796         but also call SetSubtreeObject at the right times (basically
13797         whenever our subtree object changes).
13799         * template.[cpp,h]: do the GetObjectType/SetObjectType switch here
13800         too.  also, rework the control template application step - don't
13801         cache the tree and duplicate it.  just reparse.  hook up template
13802         bindings properly as well.  with this change buttons are starting
13803         to look right.
13805         * type.cpp: total_event_count = my_events +
13806         parent->total_event_count, so if my_events == 0...
13807         
13808         * xaml.cpp (start_element): reverse the subclass check.
13810         * cbinding.cpp, cbinding.h, type-generated.cpp, type.h, value.h: regen
13812         * Makefile.am: add expression.cpp, and there's no need for
13813         separate file lists anymore.
13815 2009-01-25  Chris Toshok  <toshok@ximian.com>
13817         * dependencyproperty.cpp (DependencyProperty::RegisterManagedProperty):
13818         this registers a custom property.  Fixes moon-unit failures.
13819         
13820 2009-01-25  Chris Toshok  <toshok@ximian.com>
13822         * value.cpp (Value::Value): allow ManagedTypeInfo of NULL - fixes
13823         moon-unit crash.
13825 2009-01-25  Chris Toshok  <toshok@ximian.com>
13827         * xaml.cpp: mostly just remove the NULL's we were passing to the
13828         various DependencyObject methods that used to require an
13829         additional_types arg.
13830         (dependency_object_set_attributes): one important fix here - force
13831         the loader to do the SetValue if the type is URI, or if the type
13832         of the object itself is a custom type.  Also, if we've converted
13833         the string to a valid value already, don't pass a string to the
13834         loader - this keeps us from passing "{Binding foo...}" to the
13835         loader to setvalue on a databound property.  This does uncover a
13836         failing in our managed code, though, that there's no way to deal
13837         with the unmanaged BindingExpression from managed code.
13839         * application.cpp, application.h: instead of having a
13840         MonoDomain->Application mapping, we now have a
13841         MonoDomain->Deployment mapping, so Application::GetCurrent maps to
13842         Deployment::GetCurrent()->GetCurrentApplication().
13843         
13844         * deployment.cpp, deployment.h: flesh out Deployment, along with
13845         the MonoDomain->Deployment mapping.  Also add a per-deployment
13846         Types* object, so we can look them up anywhere in the engine
13847         without having to rely on the managed layer passing
13848         additional_types.
13849         
13850         * type.h.in, type.cpp: remove additional_types from all the apis.
13851         the currently registered custom types are always available from
13852         the Current deployment, which Type::Find uses.  Also, add
13853         IsCustomType which lets us check if a type is one of our special
13854         built-in types, or if it's one that's been registered dynamically.
13856         * value.h.in, value.cpp: remove additional_types.
13858         * dependencyproperty.h, dependencyproperty.cpp: remove
13859         additional_types.
13861         * dependencyobject.h, dependencyobject.cpp: remove
13862         additional_types.
13864         * uielement.h: add cbindings/pinvokes for ElementAdded and
13865         ElementRemoved.
13867         * contentpresenter.h, contentpresenter.cpp: remove - this is 100%
13868         managed now.
13869         
13870         * Makefile.am: remove contentpresenter.{h,cpp}
13872         * type.h, type-generated.cpp, value.h, cbinding.cpp, cbinding.h:
13873         regen.
13875 2009-01-25  Sebastien Pouliot  <sebastien@ximian.com>
13877         * cbinding.cpp|h: Regenerated
13878         * transform.cpp|h: Add GetMatrix (w/bindings).
13880 2009-01-23  Geoff Norton  <gnorton@novell.com>
13882         * xaml.cpp:  This is case-insensitive here too.
13884 2009-01-23  Geoff Norton  <gnorton@novell.com>
13886         * dependencyobject.cpp:  Avoid a SIGSEGV if the parent_scope is null.
13888 2009-01-23  Jeffrey Stedfast  <fejj@novell.com>
13890         * utils.cpp (managed_stream_read_func): Fixed to do as intended.
13891         (managed_stream_write_func): Same.
13893         * textbox.cpp (next_word): Implemented.
13894         (prev_word): Implemented.
13896 2009-01-23  Andreia Gaita  <avidigal@novell.com>
13898         * clock.[h|cpp]: Add RemoveTickCall() to remove callbacks from the
13899         list in case the dispatcher gets destroyed before they are processed.
13901 2009-01-23  Geoff Norton  <gnorton@novell.com>
13903         * utils.cpp: Remove some g_error and handle ridiculously large
13904         zip files to appease glib.
13906 2009-01-23  Sebastien Pouliot  <sebastien@ximian.com>
13908         * dependencyproperty.g.cpp: regenerated
13909         * brush.h: Set default values for RadialGradientTransform points
13911 2009-01-23  Stephane Delcroix  <sdelcroix@novell.com>
13913         * multiscaleimage.cpp: add a bool so render knows if it was
13914         invalidated locally or not, and should keep rendering the upper
13915         layers or restart from the bottom.
13917 2009-01-23  Geoff Norton  <gnorton@novell.com>
13919         * pipeline.h: Move ManagedStreamCallbacks to utils so other things
13920         can use them
13921         * utils.cpp|h: Implement a minizip io-style wrapper around
13922         ManagedStreamCallbacks so that we can unzip from / to managed Stream's. 
13924 2009-01-23  Stephane delcroix  <sdelcroix@novell.com>
13926         * multiscaleimage.cpp: no longer crash on null uri
13928 2009-01-23  Sebastien Pouliot  <sebastien@ximian.com>
13930         * xaml.cpp: Fix SIGSEGV when we're parsing something that turns out
13931         to be valid (xml-wise) but not a DO (e.g. a Color).
13933 2009-01-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
13935         * src.mdp: Added new files.
13937 2009-01-22  Chris Toshok  <toshok@ximian.com>
13939         * textbox.h, textbox.cpp (class PasswordBox): move the ctor to
13940         .cpp, and call SetDefaultStyleKey to get that working.
13942 2009-01-22  Chris Toshok  <toshok@ximian.com>
13944         [ fixes to get http://www.life-silverlight.com/ to come up with
13945         exceptions ]
13947         * enums.cpp (initialize_enums): add a mapping for the property
13948         VerticaalContentAlignment using the vertical_alignment_map.
13950         * uielement.h, uielement.cpp: move SetVisualParent to the .cpp
13951         file.  Also, call SetSurface in SetVisualParent, so things like
13952         controls templates get the right surface assigned to them (they
13953         have no logical parent, only a visual one.)
13955         * contentpresenter.cpp (ContentPresenter::OnLoaded): follow the
13956         other template stuff - create a temp namescope here.  it won't be
13957         merged, so nothing to worry about.  Also, don't call
13958         PrepareContentPresenter here.  do it after we look up text and
13959         root in OnApplyTemplate.
13960         (ContentPresenter::OnApplyTemplate): prepare the content
13961         presenter.
13963 2009-01-22  Jeffrey Stedfast  <fejj@novell.com>
13965         * contentpresenter.cpp (ContentPresenter::PrepareContentPresenter):
13966         Clean up the goto.
13967         (ContentPresenter::OnLoaded): Only unref the template if it isn't
13968         null.
13970         * contentpresenter.h (ContentPresenter::GetElementRoot):
13971         Implemented temporary binding hack.
13973         * contentpresenter.cpp (ContentPresenter::PrepareContentPresenter):
13974         Implemented.
13975         (ContentPresenter::OnPropertyChanged): Call
13976         PrepareContentPresenter() instead of ApplyTemplate().
13977         (ContentPresenter::OnApplyTemplate): Implemented.
13979 2009-01-22  Chris Toshok  <toshok@ximian.com>
13981         * application.h, application.cpp: make surface a per-application
13982         thing, and add GetSurface/SetSurface.
13984         * cbinding.h, cbinding.cpp: regen.
13986 2009-01-22  Jeffrey Stedfast  <fejj@novell.com>
13988         * contentcontrol.cpp (ContentControl::ContentControl): I'm
13989         guessing this needs to call SetDefaultStyleKey as well.
13991         * textbox.cpp (TextBoxView): Get rid of the TextBoxProperty
13992         because that causes problems (the TextBox already has a logical
13993         parent). Instead, we'll just keep track of it internally
13994         ourselves.
13995         (TextBoxView::SetTextBox): Do what OnPropertyChanged() used to do
13996         when the TextBox property changed.
13998         * contentpresenter.cpp (ContentPresenter::ContentPresenter): Set
13999         the default style key.
14000         (ContentPresenter::OnLoaded): Load the default template.
14002         * contentpresenter.cpp|h: New source files. Subclass Control even
14003         though in managed-land, we technically subclass
14004         FrameworkElement. This way we can take advantage of Control's
14005         template logic.
14007 2009-01-22  Chris Toshok  <toshok@ximian.com>
14009         * xaml.cpp (dependency_object_set_attributes): commit jackson's
14010         patch (with one slight modification) so everyone can have the
14011         wonderful world of non-broken setters.
14013 2009-01-22  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14015         * dependencyobject.h:
14016         * dependencyobject.cpp: Remove comment about weak refs, and #if DEBUG
14017         around object counters (we define DEBUG always anyways, and the
14018         counters are always useful).
14020 2009-01-22  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14022         * dependencyobject.cpp: Protect objects_alive with a mutex.
14024 2009-01-22  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14026         * dependencyobject.h:
14027         * dependencyobject.cpp: Remove the weak ref stuff, it's never been of
14028         any use.
14030 2009-01-22 Stephane delcroix  <sdelcroix@novell.com>
14032         * tilesource.h:
14033         * deepzoomimagetilesource.h|cpp: only download the deepzoomfile the
14034         first time it's needed.
14036 2009-01-21  Geoff Norton  <gnorton@novell.com>
14038         * application.cpp: If we're set to NULL remove the application 
14039         from the hash table.
14041 2009-01-21  Geoff Norton  <gnorton@novell.com>
14043         * Makefile.am: Add bitmapimage.cpp to the build
14044         * application.cpp|h: Add a new callback into Application to
14045         return a resource stream.
14046         * bitmapimage.cpp|h: Add a local buffer backed (possibly) by
14047         a managed resource stream and make this all native.
14048         * brush.cpp|h: Brush.ImageSource is now a BitmapImage
14049         * media.cpp|h: Image.Source is now a BitmapImage
14050         * xaml.cpp: BitmapImage can be constructed from a string in xaml
14051         * cbinding.cpp|h:
14052         * dependencyproperty.g.cpp: Regenerate
14054 2009-01-21  Larry Ewing  <lewing@novell.com>
14056         * grid.cpp (Grid::MeasureOverride): rework the incremental
14057         contribution logic.
14059 2009-01-21  Jeffrey Stedfast  <fejj@novell.com>
14061         * contentcontrol.cpp (ContentControl::OnPropertyChanged):
14062         Implemented by calling ApplyTemplate() when ContentTemplate or
14063         Content properties change.
14064         (ContentControl::OnPropertyChanged): Emit a ContentChangedEvent
14065         when the content changes.
14067 2009-01-21  Larry Ewing  <lewing@novell.com>
14069         * grid.cpp: store measurement info in the row and column
14070         definitions and don't allocate the arrays.
14072 2009-01-21  Larry Ewing  <lewing@novell.com>
14074         * grid.cpp, grid.h:  Hack things to handle missing row
14075         definitions and clean up some old errors.
14077 2009-01-21  Jeffrey Stedfast  <fejj@novell.com>
14079         * textbox.cpp (TextBox::OnApplyTemplate): Use SetValue() directly
14080         rather than SetContent() since SetContent() has been removed.
14081         * contentcontrol.h (class ContentControl): Updated a bit, we're
14082         going to actually use this unmanaged class now.
14083         (class ContentControl): Set PropertyType for ContentProperty to
14084         'object' and get rid of the generated accessors.
14086 2009-01-21  Jackson Harper  <jackson@ximian.com>
14088         * dependencyobject.cpp|h: When setting values, unmarshal values
14089         first.
14090         * value.h|cpp: Add unmarshal function so we can convert types
14091         coming from managed.
14092         * type.h:
14093         * cbinding.cpp|h:
14094         * type-generated.cpp: Regenerated.
14095         
14096 2009-01-21  Sebastien Pouliot  <sebastien@ximian.com>
14098         * dependencyproperty.g.cpp: Regenerated
14099         * text.cpp|h: Revert earlier change as it "turns black" too many
14100         things. DRT #47 will fail until I find the right fix :(
14102 2009-01-21  Larry Ewing  <lewing@novell.com>
14104         * grid.cpp (Grid::ArrangeOverride): make the basic cases work
14105         correctly.
14107 2009-01-21  Alan McGovern  <amcgovern@novell.com>
14109         * popup.cpp: Remove debug code from svn.
14111 2009-01-21  Alan McGovern  <amcgovern@novell.com>
14113         * popup.h:
14114         * popup.cpp:
14115         * cbinding.h:
14116         * Makefile.am:
14117         * cbinding.cpp:
14118         * type-generated.cpp: Initial attempt at trying to get Popup.Child
14119         rendering.
14121 2009-01-21  Sebastien Pouliot  <sebastien@ximian.com>
14123         * dependencyproperty.g.cpp: Regenerated
14124         * text.cpp|h: Move ForegroundProperty from a DefaultValue to a
14125         ctor initialized value. This means that GetLocalValue won't return
14126         null for this property, which makes it behave correctly for SL1/JS
14127         applications.
14128         [Fix DRT#47 failing since r123884]
14130 2009-01-20  Chris Toshok  <toshok@ximian.com>
14132         * application.h, application.cpp: switch from using a static
14133         Application* for "Current" to a hashtable mapping MonoDomain* to
14134         Application*.
14136 2009-01-20  Jackson Harper  <jackson@ximian.com>
14138         * xaml.cpp: Lookup resources in Application.Resources if we don't
14139         find the resource in the tree.
14141 2009-01-20  Chris Toshok  <toshok@ximian.com>
14143         * dependencyproperty.g.cpp, type-generated.cpp, cbinding.h,
14144         cbinding.cpp: regen.
14146         * Makefile.am (libmoon_include_headers): add application.h
14147         (libmoon_la_SOURCES): add application.cpp
14149         * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
14150         if the style was set, call Application::ApplyStyle -- doesn't
14151         actually *apply* the style, it just converts the values.
14153         * style.cpp (SetterBase::SetValueWithErrorImpl): we allow setting
14154         the ConvertedValueProperty after the setter is sealed.
14156         * style.h (class Setter): add ConvertedValueProperty.
14158         * textbox.h (class TextBox): remove @CallInitialize.
14160         * textbox.cpp (TextBox::TextBox): i hate the way this is
14161         expressed (we need a ManagedTypeInfo ctor/dtor), but set
14162         DefaultStyleKey here instead of in managed land.
14164         * provider.cpp (StylePropertyValueProvider::GetPropertyValue):
14165         return the converted property value, not the original (which may
14166         have been a string.)
14167         (StylePropertyValueProvider::SealStyle): only put setters in the
14168         hash if their converted value is non-null.
14170         * control.h (class Control): generate accessors for
14171         DefaultStyleKey.
14173         * control.cpp (Control::OnLoaded): do the default style
14174         application here.
14175         (Control::ApplyTemplate): output a little spew so we
14176         can tell if we're applying a template.
14178         * application.h, application.cpp: move Application here, and make
14179         it a full DO subclass.  It no longer maps to the managed
14180         ApplicationInternal.
14182         * deployment.h: remove Application from here.
14184 2009-01-20  Jackson Harper  <jackson@ximian.com>
14186         * xaml.cpp: When we create templates make sure we track the
14187         template ourself, we can't rely on the ControlTemplate still
14188         having a surface when it is applied.
14190 2009-01-20  Jeffrey Stedfast  <fejj@novell.com>
14192         * keyboard.cpp (Keyboard::OnKeyPress): Update modifiers.
14193         (Keyboard::OnKeyRelease): Same.
14195 2009-01-20  Jackson Harper  <jackson@ximian.com>
14197         * clock.h: Set namespace for Duration and RepeatBehavior
14199 2009-01-20  Sebastien Pouliot  <sebastien@ximian.com>
14201         * dependencyproperty.g.cpp: Regenerated
14202         * uielement.h: Re-apply default value for RenderTransformProperty
14204 2009-01-19  Larry Ewing  <lewing@novell.com>
14206         * runtime.cpp:
14207         * window.h:
14208         * window-gtk.cpp, window-gtk.h: clean up the set background
14209         clearing logic and make it general.
14211 2009-01-19  Larry Ewing  <lewing@novell.com>
14213         * window-gtk.cpp (MoonWindowGtk::InitializeCommon): clear the
14214         window to white by default.
14216 2009-01-19  Larry Ewing  <lewing@novell.com>
14217         
14218         * grid.cpp (Grid::ArrangeOverride): clean up debug spew start
14219         implementing arrangeoverride.
14221 2009-01-19  Larry Ewing  <lewing@novell.com>
14223         * dirty.cpp (Surface::UpdateLayout): make sure we layout the full
14224         screen message too.
14226 2009-01-19  Jackson Harper  <jackson@ximian.com>
14228         * uri.h:
14229         * binding.h: Get kinds generated for these guys.
14230         * type.h:
14231         * type-generated.cpp: updated
14232         
14233 2009-01-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14235         * src.mdp: Update.
14237 2009-01-19  Jackson Harper  <jackson@ximian.com>
14239         * grid.h: GridLength lives in System.Windows.
14241 2009-01-19  Jackson Harper  <jackson@ximian.com>
14243         * color.h: Colours are in System.Windows.Media.
14245 2009-01-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14247         * pipeline.h: Instead of overriding GetTypeName for media clases
14248         override GetObjectType so that the generator puts these classes into
14249         our type system. This will fix a lot of the "event not registered"
14250         warnings.
14252         * type.h:
14253         * value.h:
14254         * type-generated.cpp: Regenerated.
14256 2009-01-19  Alan McGovern  <amcgovern@novell.com>
14258         * type.h:
14259         * src.mdp:
14260         * popup.h:
14261         * value.h:
14262         * popup.cpp:
14263         * cbinding.h:
14264         * cbinding.cpp:
14265         * type-generated.cpp:
14266         * dependencyproperty.g.cpp: Create an unmanaged peer for the Popup class
14268 2009-01-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14270         * type-generated.cpp: When scanning headers in src/ scan src/asf/ too.
14271         Add support for 'unsigned X' types (used in src/asf/).
14273 2009-01-18  Geoff Norton  <gnorton@novell.com>
14275         * xaml.cpp: Only unref the surface if it exists.
14277 2009-01-18  Geoff Norton  <gnorton@novell.com>
14279         * dependencyobject.cpp:  Ensure that the parent scope registration
14280         behavior is only applied to UserControl's.
14282 2009-01-18  Geoff Norton  <gnorton@novell.com>
14284         * xaml.cpp: Only ref the surface if it exists.
14286 2009-01-18  Larry Ewing  <lewing@novell.com>
14288         * dirty.cpp (Surface::UpdateLayout): pass the full size in always.
14290         * grid.cpp, grid.h (Grid::ArrangeOverride): hook up and empty
14291         arrange method for now.
14293 2009-01-18  Larry Ewing  <lewing@novell.com>
14295         * control.cpp: update invaliate/measure to look more like border
14296         (still wrong) and remove some debug spew.
14298 2009-01-18  Sebastien Pouliot  <sebastien@ximian.com>
14300         * cbinding.h|cpp, type.h, value.h: Regenerated
14301         * transform.h: Add UnmanagedMatrix (which is a DO accessible to
14302         managed code) and a new method to get the address of the matrix
14303         elements.
14304         * type-generated.cpp: Regenerated to include UNMANAGEDMATRIX
14306 2009-01-17  Larry Ewing  <lewing@novell.com>
14308         * canvas.cpp (Canvas::MeasureOverride): 
14309         * frameworkelement.cpp (Frameworkelement::MeasureOverride): simplify.
14311 2009-01-17  Jackson Harper  <jackson@ximian.com>
14313         * xaml.cpp: Dont create items for property elements. The element
14314         name for property elements can be an abstract type.
14316 2009-01-17  Jackson Harper  <jackson@ximian.com>
14318         * xaml.cpp: Don't try to set properties that are collections,
14319         they've already had the items added in add_child.
14321 2009-01-17  Jackson Harper  <jackson@ximian.com>
14323         * xaml.cpp|h: Change CreateObject to LookupObject and give it a
14324         flag for actually creating the object. This allows us to verify
14325         the type on hydrated elements without creating another instance
14326         and prevents a circular dependency when elements load themself in
14327         their LoadComponent xaml.
14329 2009-01-17  Geoff Norton  <gnorton@novell.com>
14331         * dependencyobject.cpp:  A custom UserControl has a local namescope
14332         but also needs to be locatable in its parent namescope.
14334 2009-01-16  Jeffrey Stedfast  <fejj@novell.com>
14336         * layout.cpp (TextLayout::GetCursor): Fixed to support segments of
14337         different font size (not that TextBox really needs that since all
14338         runs will be the same exact font).
14340         * textbox.cpp (TextBoxView::UpdateCursor): New convenience method
14341         to update the cursor rect.
14342         (TextBoxView::Layout): Update the cursor after we finish laying
14343         the text out.
14344         (TextBoxView::OnModelChanged): Updated to use UpdateCursor().
14345         (TextBox::OnKeyDown): Prevent character entry if buffer->len >=
14346         maxlen.
14348 2009-01-16  Jackson Harper  <jackson@ximian.com>
14350         * xaml.cpp: NULL is OK if it's being explicitly set.
14352 2009-01-16  Jeffrey Stedfast  <fejj@novell.com>
14354         * textbox.cpp (TextBoxView::OnModelChanged): Invalidate the old
14355         cursor region and the new cursor region.
14356         (TextBoxView::Paint): Paint the cursor as well.
14358         * layout.cpp (Layout::GetCursor): Implemented.
14360 2009-01-16  Larry Ewing  <lewing@novell.com>
14362         * frameworkelement.cpp (FrameworkElement::MeasureOverride):
14363         fix typo.
14364         
14365         * panel.cpp, panel.h: remove arrange override and make measure
14366         override return (0,0) always.
14367         
14368 2009-01-16  Larry Ewing  <lewing@novell.com>
14370         * panel.cpp: Make ArrangeOverride and MeasureOverride do something
14371         closer to the right thing.
14373 2009-01-16  Jeffrey Stedfast  <fejj@novell.com>
14375         * textbox.cpp (TextBox::ArrangeOverride): Removed.
14376         (TextBox::Background) needs to return NULL if not selected mode -
14377         we don't want to be redrawing the normal bg.
14379 2009-01-16  Geoff Norton  <gnorton@novell.com>
14381         * xaml.cpp|h: Allocate a GCHandle to the ManagedXamlLoader if
14382         we're going to keep it alive to apply control templates.
14384 2009-01-16  Geoff Norton  <gnorton@novell.com>
14386         * template.cpp: Add the namescope to the closure to avoid
14387         referencing random memory.
14388         * xaml.cpp: We create a new XamlLoader when applying control 
14389         templates, and inherit the callbacks.  Set vm_loaded to true in
14390         this case.
14392 2009-01-16  Jeffrey Stedfast  <fejj@novell.com>
14394         * textbox.cpp (TextBox::TextBox): Don't init the selection
14395         brushes, they must come from the style.
14397 2009-01-16  Larry Ewing  <lewing@novell.com>
14399         * border.cpp, border.h:
14400         * uielement.cpp, uielement.h:
14401         * panel.cpp, panel.h:
14402         * canvas.cpp, canvas.h:
14403         * control.cpp, control.h:  Remove GetTransformFor completely, use
14404         the layout slot x/y when computing the local transform,
14405         invalidatemeasure (for now) when updating the tranform.
14407         * dirty.cpp: hack in the intial Left/Top stuff until we can clean
14408         up the logic here.
14410 2009-01-16  Larry Ewing  <lewing@novell.com>
14412         * frameworkelement.cpp (FrameworkElement::Arrange): don't stretch
14413         unless stretch is specified.
14415 2009-01-16  Geoff Norton  <gnorton@novell.com>
14417         * mediaelement.h: The MediaElement.Source is a Uri on the managed
14418         side.
14420 2009-01-16  Jackson Harper  <jackson@ximian.com>
14422         * xaml.cpp: FindTypeName type names dont' always have a
14423         namespace/assembly.
14424         - Special case Application and don't try to find it's name since
14425         it is renamed in the managed code. (Need to figure out a better
14426         solution here).
14427         - Pass in NULL for setting propertys and let the underlying types
14428         determine whether or not that is an error.
14430 2009-01-16  Jackson Harper  <jackson@ximian.com>
14432         * xaml.cpp: Before going to managed to create an element, scan the
14433         xnamespace for the x:Class attribute and pass that in as the
14434         element name if we have one, this allows you to use abstract names
14435         for the elements as long as the x:Class is a complete type. Should
14436         also allow us to optimize out a trip into managed.
14438 2009-01-16  Jackson Harper  <jackson@ximian.com>
14440         * xaml.cpp: The xaml context needs to store the callbacks so that
14441         we can properly invoke managed code in a template.
14443 2009-01-16  Jackson Harper  <jackson@ximian.com>
14445         * dependencyproperty.cpp: This warning isn't really needed and now
14446         with managed DP lookup's, this scenario happens about a trillion
14447         times during parsing of generic.xaml.
14449 2009-01-16  Larry Ewing  <lewing@novell.com>
14451         * uielement.h (class UIElement): remove the default value from
14452         RenderTransformProperty until the bugs it introduces are resolved.
14454         * dependencyproperty.g.cpp:Regenerated.
14456 2009-01-15  Sebastien Pouliot  <sebastien@ximian.com>
14458         * dependencyproperty.g.cpp: Regenerated
14459         * grid.h: Add default values for [Column|Row]Definition Width
14460         and Height
14461         * xaml.cpp: Fix most cases (except empty) of GridLength
14463 2009-01-15  Geoff Norton  <gnorton@novell.com>
14465         * downloader.cpp|h: Add downloader_response_abort.
14467 2009-01-15  Jackson Harper  <jackson@ximian.com>
14469         * xaml.cpp|h: We need to pass a pointer to the elements parent
14470         object to managed code, this is so we can look up a Setter's
14471         Style.
14472         - Let managed handle Type::DEPEPENDENCYPROPERTY attributes.
14473         
14474 2009-01-15  Jackson Harper  <jackson@ximian.com>
14476         * dependencyproperty.cpp: Patch mostly by rolf. Allows property
14477         lookup to work on custom types that subclass custom types.
14478         * template.cpp: Now that templates work pretty well, lets reduce
14479         the spam a bit.
14481 2009-01-15  Sebastien Pouliot  <sebastien@ximian.com>
14483         * dependencyproperty.g.cpp: Regenerated to include the specified 
14484         type (and not the implied one from the default value)
14485         * uielement.h: RenderTransformProperty defaults to a empty (identity)
14486         MatrixTransform
14488 2009-01-15  Jeffrey Stedfast  <fejj@novell.com>
14490         * textbox.cpp: Removed default_*[fore,back]ground() functions as
14491         well as textbox_shutdown() since they are no longer needed.
14492         (TextBox::TextBox): Initialize the default SelectionBackground and
14493         SelectionForeground brushes.
14495         * layout.h (struct TextSelection): Removed brushes from
14496         TextSelection struct.
14498 2009-01-15  Jeffrey Stedfast  <fejj@novell.com>
14500         * mediaelement.cpp (MediaElementPropertyValueProvider::GetPropertyValue):
14501         Cannot compare a guint64 with -1, presuming the comparison was
14502         meant to be against TimeSpan_FromPTS (position) instead.
14504         * textbox.cpp: Emit SelectionChanged events with RoutedEventArgs
14505         instead of SelectionChangedEventArgs.
14507         * eventargs.cpp (RoutedEventArgs::RoutedEventArgs): New helper
14508         ctor that takes a source.
14510         * textbox.h (class SelectionChangedEventArgs): Removed, this type
14511         of EventArgs is not actually emitted by TextBox as I had
14512         originally thought. TextBox's SelectionChanged event uses
14513         RoutedEventArgs.
14515 2009-01-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14517         * type-generated.cpp:
14518         * dependencyproperty.g.cpp: Regenerated.
14520         * mediaelement.h:
14521         * mediaelement.cpp: Inherit directly from FrameworkElement instead of
14522         MediaBase. This requires copying some code from MediaBase into
14523         MediaElement (which at some later stage would move into Media).
14525 2009-01-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14527         * cbinding.h:
14528         * cbinding.cpp: Regenerated.
14530         * type.h:
14531         * type.cpp:
14532         * type.h.in:
14533         * type-generated.cpp:
14534         * dependencyproperty.h:
14535         * dependencyproperty.cpp: Add support for looking up custom dependency
14536         properties by name.
14538 2009-01-15  Sebastien Pouliot  <sebastien@ximian.com>
14540         * xaml.cpp: Free Value on error inside ManagedNamespace.FindElement.
14541         Add comment on value_from_str_with_typename to update NativeMethods.cs
14543 2009-01-15  Larry Ewing  <lewing@novell.com>
14545         * panel.cpp:
14546         * border.cpp:
14547         * control.cpp:
14548         * frameworkelement.cpp: start taking layout slot into account when
14549         computing bounds.
14551 2009-01-15  Jackson Harper  <jackson@ximian.com>
14553         * xaml.cpp: Storyboard are allowed to have an x:Name and an
14554         x:Key. This is for backwards compatibility because SL1 didn't have
14555         x:Key. It's also stupid.
14557 2009-01-15  Jackson Harper  <jackson@ximian.com>
14559         * xaml.cpp: Add a fake element to templates with all the imported
14560         namespaces. This allows all the namespaces imported in the main
14561         source to work in the template.
14563 2009-01-14  Jeffrey Stedfast  <fejj@novell.com>
14565         * textbox.cpp (TextBoxView::OnSelectionChanged): Force a
14566         re-layout.
14567         (TextBoxView::Layout): Build the text runs based on the selection.
14568         (TextBoxView::Paint): Updated to no longer pass the selection
14569         state to the layout engine.
14571         * layout.h (class ITextSource): Added a Background() accessor and
14572         changed the Foreground() accessor to take a bool selected
14573         argument.
14575         * layout.cpp (RenderSegment): Render the background if non-NULL.
14576         (TextRun::TextRun): Now takes a 'selected' state.
14577         (TextLayout::Render): No longer takes selection or cursor
14578         arguments.
14580 2009-01-14  Jackson Harper  <jackson@ximian.com>
14582         * xaml.cpp: Fix x:Null handling.
14584 2009-01-14 Sebastien Pouliot  <sebastien@ximian.com> 
14586         * brush.h: Add default values used by some brushes
14587         * dependencyproperty.g.cpp: Regenerated
14589 2009-01-14  Larry Ewing  <lewing@novell.com>
14591         * panel.cpp (Panel::GetTransformFor): override gettransformfor for
14592         now.
14594 2009-01-14  Jackson Harper  <jackson@ximian.com>
14596         * xaml.cpp: Add the namespaces to the xaml context.
14598 2009-01-14  Jeffrey Stedfast  <fejj@novell.com>
14600         * textbox.cpp (TextBox::CursorBackSpace): Implemented.
14601         (TextBox::CursorDelete): Implemented.
14603         * layout.cpp (RenderSegment): Split out from RenderLine().
14605 2009-01-14  Jackson Harper  <jackson@ximian.com>
14607         * xaml.cpp: Apparently there is a new NULL on the block.  Use
14608         SetIsNull instead of a NULL Value* now.
14610 2009-01-14  Jackson Harper  <jackson@ximian.com>
14612         * template.cpp: initialize xaml_context. (fixes shutdown crash)
14614 2009-01-14  Jackson Harper  <jackson@ximian.com>
14616         * type.h|h.in: typo. Don't ask me how, but somehow I accidently flipped
14617         these before my last patch.
14619 2009-01-14  Jackson Harper  <jackson@ximian.com>
14621         * xaml.cpp: Styles use their TargetType as their
14622         ResourceDictionary key.
14623         - Handle the new type MANAGEDTYPEINFO by allowing the managed code
14624         to parse it.
14625         * value.cpp|h|.h.in:
14626         * type.h|h.in: New type, ManagedTypeInfo. Contains info for
14627         loading managed types.
14628         * style.h:
14629         * control.h:
14630         * template.h: Use ManagedTypeInfo when we have a System.Type on
14631         the managed side.
14632         * dependencyproperty.g.cpp:
14633         * typegenerated.cpp: Regen
14635 2009-01-14  Jeffrey Stedfast  <fejj@novell.com>
14637         * textbox.cpp: More fixes for cursor movement & keyboard selection.
14639 2009-01-14  Sebastien Pouliot  <sebastien@ximian.com> 
14641         * grid.cpp (MeasureOverride): Free allocated arrays
14643 2009-01-14  Sebastien Pouliot  <sebastien@ximian.com>
14645         * grid.cpp: Add a bunch of NULL checks for width and height to avoid
14646         crashes when running the SDK controls unit tests.
14648 2009-01-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14650         * dependencyobject.cpp: Fix
14651         media/video/test-reset-media-element-source.html.
14653 2009-01-14  Alan McGovern  <amcgovern@novell.com>
14655         * enums.cpp: Control.HorizontalContentAlignment should map to the
14656         HorizontalAlignment enum.
14658 2009-01-14  Stephane Delcroix  <sdelcroix@novell.com>
14660         * deepzoomtilesource.h|cpp: download the source on UriSourceProperty
14661         changed.
14663 2009-01-14  Stephane Delcroix  <sdelcroix@novell.com>
14665         * deepzoomtilesource.h: mark it with CallInitialize
14667 2009-01-14  Stephane Delcroix  <sdelcroix@novell.com>
14669         * tilesource.h|cpp: autogenerate the cbinding
14671         * deepzoomimagetilesource.h|cpp: define a downloaded cb to poke the
14672         managed side for xml parsing.
14674 2009-01-13  Chris Toshok  <toshok@ximian.com>
14676         * xaml.cpp (XamlLoader::CreateFromFileWithError): strdup the error
14677         message
14678         (XamlLoader::CreateFromStringWithError): same.
14679         (XamlLoader::HydrateFromStringWithError): same.
14680         (~XamlLoader): unref the error_args.
14681         (XamlLoader::HydrateFromString): no need to ref the object again
14682         here if it was passed in.
14684 2009-01-13  Larry Ewing  <lewing@novell.com>
14686         * uielement.cpp, uielement.h (class LayoutInformation): add
14687         LayoutInformation class to hold the layout related attached
14688         properties. (will move it later).
14690         * frameworkelement.cpp: use the new layout information and use it
14691         for invalidation.
14693         * border.cpp: fix the arrange logic.
14695 2009-01-13  Larry Ewing  <lewing@novell.com>
14696         
14697         * shape.cpp: switch over to using the computed values for stretch.
14699         * frameworkelement.cpp:
14700         * uielement.cpp: 
14701         * dirty.cpp, dirty.h:  Try to get invalidation logic close to
14702         correct.
14704 2009-01-13  Larry Ewing  <lewing@novell.com>
14706         * shape.cpp: treat rect and ellipse like normal framework elements.
14707         
14708 2009-01-13  Larry Ewing  <lewing@novell.com>
14710         * frameworkelement.cpp:
14711         * control.cpp:
14712         * canvas.cpp:
14713         * media.cpp: 
14714         * mediaelement.cpp: 
14715         * panel.cpp: Use the layout values for values we used to compute
14716         directly.
14718 2009-01-13  Larry Ewing  <lewing@novell.com>
14720         * grid.cpp (Grid::MeasureOverride): make sure we stay inside the
14721         collection while iterating.
14723 2009-01-13  Larry Ewing  <lewing@novell.com>
14725         * src/canvas.cpp
14726         * src/frameworkelement.cpp
14727         * src/media.cpp
14728         * src/panel.cpp, src/panel.h: layout updates
14730 2009-01-13  Larry Ewing  <lewing@novell.com>
14732         * canvas.cpp (Canvas::ArrangeOverride): pass in the requested
14733         size.
14735         * media.cpp, media.h: add ArrangeOverride/MeasureOverride.
14737 2009-01-13  Larry Ewing  <lewing@novell.com>
14739         * shape.cpp, shape.h: start moving cleaning up references to width
14740         and height and moving towards using the layout logic.  Remove
14741         stale LargestRect stuff
14743         * runtime.c, dirty.h: stub in an update layout function.
14745         * border.cpp, canvas.cpp: try to match some more tests.
14747 2009-01-13  Jeffrey Stedfast  <fejj@novell.com>
14749         * textbox.cpp (TextBox::CursorPageDown): Implemented.
14750         (TextBox::CursorPageUp): Implemented.
14751         (TextBox::CursorHome): Implemented.
14752         (TextBox::CursorEnd): Implemented.
14753         (TextBox::CursorDown): Implemented.
14754         (TextBox::CursorUp): Implemented.
14755         (TextBox::OnKeyDown): Implemented Select-All keybinding and
14756         stubbed out cut/copy/paste.
14758 2009-01-13  Sebastien Pouliot  <sebastien@ximian.com> 
14760         * dependencyproperty.g.cpp: Regenerated
14761         * shape.h|cpp: Remove DefaultValue for Poly[gon|line].Points and 
14762         Shape.StrokeDashArray and set them in the constructors (which is 
14763         bit ifferent and fix Polyhedra animation).
14765 2009-01-13  Sebastien Pouliot  <sebastien@ximian.com>
14767         * dependencyproperty.g.cpp: Regenerated
14768         * shape.h: Add DefaultValue for Poly[gon|line].Points and Shape
14769         StrokeDashArray since they are not NULL in SL2
14771 2009-01-13  Alan McGovern  <amcgovern@novell.com>
14773         * src.mdp: Add the provider stuff to the MD solution
14775 2009-01-13  Chris Toshok  <toshok@ximian.com>
14777         * provider.cpp (StylePropertyValueProvider::SealStyle): only
14778         insert the setter into the hash if the setter's value matches the
14779         type of the setter's property.  Fixes
14780         StyleTest.InvalidValueProgrammatically.
14782 2009-01-13  Jackson Harper  <jackson@ximian.com>
14784         * xaml.cpp|h: Add the ability to lookup full uri's based on local
14785         prefixes. This is so managed can convert something like
14786         'local:' into 'clr-namespace=Foo;assembly=bar'
14788 2009-01-13  Jackson Harper  <jackson@ximian.com>
14790         * xaml.cpp|h: Pass the ParserInfo to every callback, this will
14791         allow us to call back into unmanaged to do extra stuff.
14793 2009-01-13  Stephane Delcroix  <sdelcroix@novell.com>
14795         * tilesource.h|cpp: add a callback and a method to set the callback
14796         so we can poke the managed GetTileLayers.
14798 2009-01-12  Chris Toshok  <toshok@ximian.com>
14800         * style.cpp, style.h (Style::GetPropertyValue): remove this.  it's
14801         been replaced by the hash lookup in the style provider.
14803         * dependencyobject.cpp (DependencyObject::ClearValue): i hate this
14804         change... apparently there's something that happens to lower
14805         precedence providers after you call ClearValue, but *only if the
14806         local value was actually cleared*.  yuck.
14808         * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
14809         remove the Style sealing from SetValueWithErrorImpl, and move it
14810         here where it should have been all along.  Also, do the sealing
14811         via the Style value provider, so it can make things a bit more
14812         efficient.
14814         * provider.cpp (StylePropertyValueProvider::SealStyle): new
14815         method, called by FWE::OnPropertyChanged when the style is
14816         initially set.  we cache the setters (keyed by DP) in a hashtable.
14817         (StylePropertyValueProvider::RecomputePropertyValue): this is the
14818         magic method that DependencyObject::ClearValue calls, which causes
14819         the style provider to refresh its cache for the listed property.
14821 2009-01-12  Jackson Harper  <jackson@ximian.com>
14823         * xaml.cpp: Fix typo, makes ControlTemplates inside of
14824         ControlTemplates work properly.
14826 2009-01-12  Jackson Harper  <jackson@ximian.com>
14828         * xaml.cpp: Add MOON_NOFAIL_MISSING_PROPS, this is a temp hack so
14829         we can load some sites and see which properties are missing, right
14830         now it will only work for attributes. Intentionally not using the
14831         debug flags stuff, because i don't want this hack to stay around
14832         for very long.
14834 2009-01-12  Jackson Harper  <jackson@ximian.com>
14836         * xaml.cpp: Stop trying to set attributes once we hit the first
14837         error.
14839 2009-01-12  Jeffrey Stedfast  <fejj@novell.com>
14841         * collection.cpp (InlineCollection::Equals): New convenience
14842         method to replace text.cpp's inlines_simple_text_equal().
14844         * textbox.h (class TextBox): Now implements ITextSource.
14846         * text.cpp (Inline::UpdateFontDescription): New convenience method
14847         to populate the cached TextFontDescription since we can no longer
14848         rely on doing so from within OnPropertyChanged().
14849         (Inline::Equals): Base comparison method used by
14850         InlineCollection::Equals().
14851         (Run::Equals): Compare the Text property as well.
14852         (TextBlock::Layout): Call UpdateFontDescription() on each Inline
14853         as we iterate through them. Also updated for TextRun ctors.
14854         (TextBlock::OnCollectionItemChanged): Simplified a bit. The basic
14855         premise is that we do not want to force a layout calculation to be
14856         redone, we just need to invalidate if all that changed was a
14857         foreground brush.
14858         (inlines_simple_text_equal): Removed, use
14859         InlineCollection::Equals() instead.
14860         (TextBlock::SetTextInternal): Updated to use
14861         InlineCollection::Equals().
14863         * text.h (class Inline): Now implements the ITextSource
14864         interface. Moved the local TextFontDescription and autogen state
14865         into the private section and added accessors for them.
14867         * layout.cpp|h (class ITextSource): New interface sued by TextRuns
14868         and the internal Layout logic to grab a run's foreground brush and
14869         text decorations.
14870         (TextRun::ctor): No longer take TextDecoration,
14871         TextFontDescription, or Brush arguments, instead takes an
14872         ITextSource that it can query for those properties when it needs
14873         to.
14874         (RenderLine): Updated to get the decorations and foreground brush
14875         from the ITextSource.
14877 2009-01-12  Alan McGovern  <amcgovern@novell.com>
14879         * validators.h:
14880         * validators.cpp:
14881         * mediaelement.h:
14882         * dependencyproperty.g.cpp: Add range validation to TimeSpan
14884 2009-01-12  Jackson Harper  <jackson@ximian.com>
14886         * xaml.cpp: Moved nameditem lookup into the parser info so we can
14887         use the parser context data to lookup resources.  This allows
14888         templates to reference StaticResources.
14890 2009-01-12  Alan McGovern  <amcgovern@novell.com>
14892         * clock.cpp: Minimum FPS is clamped at 1.
14893         
14894 2009-01-12  Jackson Harper  <jackson@ximian.com>
14896         * xaml.cpp|h: Create a xaml context object so we can save some
14897         state information for buffered templates.
14898         * template.h|cpp: Updated xaml methods.
14900 2009-01-12  Alan McGovern  <amcgovern@novell.com>
14902         * animation.h:
14903         * validators.h:
14904         * validators.cpp:
14905         * dependencyproperty.g.cpp: Add correct validator for
14906         Storyboard.TargetName and Storyboard.TargetProperty
14908 2009-01-12  Sebastien Pouliot  <sebastien@ximian.com>
14910         * grid.h: Hide RowDefinitionCollection ctor from managed code
14911         * frameworkelement.cpp, provider.cpp: Even is Is(Type::Style)
14912         returns true the Style value can still be NULL (fix two new crash
14913         in SDK control unit tests)
14915 2009-01-12  Andreia Gaita  <avidigal@novell.com>
14917         * stackpanel.cpp|h: removed, stackpanel is now done in managed
14918           land
14920         * cbinding.cpp|h, dependencyproperty.g.cpp,
14921           type-generated.cpp, type.h,
14922           value.h: regen
14923     
14924         * Makefile.am, src.mdp: update build
14926 2009-01-11  Chris Toshok  <toshok@ximian.com>
14928         * layout.h, layout.cpp (RenderLine): default_fg is unnecessary
14929         now.  the run fg will always be initialized.
14930         (TextRun::TextRun): the fg pointer is Brush*, not Brush**.
14931         (TextLayout::Render): no need to pass in the default foreground.
14933         * runtime.cpp (runtime_shutdown): text_shutdown is gone.
14935         * text.h, text.cpp: stop caching the foreground.  and there's no
14936         need to create the default foreground brush in code.  it's simply
14937         the default value of the Foreground dependency property.
14938         (inlines_simple_text_equal): this needed fixing up since the font
14939         flags really aren't used for inheritance anymore - we need (and
14940         really, always needed to) compare the actual values, not just if
14941         they're set.
14942         (text_shutdown): no need for this anymore.
14943         
14944         * textbox.cpp (TextBoxView::Paint): same.  no more default_fg
14945         needed.
14947 2009-01-11  Chris Toshok  <toshok@ximian.com>
14949         * dependencyobject.h, dependencyobject.cpp: make DO's freezable.
14950         if a DO is frozen, any SetValue() call raises an
14951         UnauthorizedAccessException.  We use this for default values of
14952         DependencyProperties.
14954         * dependencyproperty.cpp (DependencyProperty::DependencyProperty):
14955         freeze the default value.
14957 2009-01-11  Andreia Gaita  <avidigal@novell.com>
14959         * clock.h|cpp (DispatcherTimer): Don't destroy the clock on Stop(), 
14960         it could be called in the middle of a tick. Instead, just reset and 
14961         reuse the clock on every tick. Track if the timer is stopped during 
14962         a tick so the clock is not relaunched. Set a default duration so 
14963         it's never automatic.
14965 2009-01-11  Chris Toshok  <toshok@ximian.com>
14967         * text.h, text.cpp (class Inline): generate accessors for
14968         FontFamily, FontSize, and TextDecoration.
14969         (class Inline, class TextBlock): add an internal DP for the font
14970         filename.
14971         (Inline::OnPropertyChanged): the only case that's needed at the
14972         moment is foreground, but that's slated for the axe as well.
14973         
14974         * dependencyproperty.g.cpp: regen.
14976         * provider.cpp (InheritedPropertyValueProvider::GetPropertyValue):
14977         make sure we inherit properly across the logical tree if the node
14978         doesn't have a visual parent (this fixes inheritance for non
14979         UIElement's, like Runs).  Also, add the FontFilename property to
14980         the list of things that inherit.
14982         * dependencyobject.h,
14983         dependencyobject.cpp (DependencyObject::ProviderValueChanged): new
14984         method.  Providers can call this whenever the value at their
14985         precedence level has changed.  It contains all the smarts to
14986         correctly generate OnPropertyChanged method calls in the face of
14987         all the provider levels.
14989 2009-01-10  Jeffrey Stedfast  <fejj@novell.com>
14991         * textbox.cpp (TextBox::OnKeyDown): Changed a bit. We need to emit
14992         TextChangedEvent and SelectionChangedEvent. Don't combine those
14993         into the ModelChangedEvent that is only meant for TextBoxView.
14994         (TextBox::OnPropertyChanged): Emit TextChangedEvent and
14995         SelectionChangedEvent appropriately.
14996         (TextBoxView::OnSelectionChanged): New event callback handler.
14997         (TextBoxView::OnTextChanged): Same.
14998         (TextBoxView::OnModelChanged): Don't handle text/selection change
14999         notification here anymore, because those 'change' enum types have
15000         been dropped.
15001         (TextBoxView::OnPropertyChanged): Need to listen to more events.
15003 2009-01-10  Jeffrey Stedfast  <fejj@novell.com>
15005         * value.cpp (Value::Value): the const char* ctor now takes a bool
15006         argument specifying whether to take ownership of the string
15007         buffer.
15009         * textbox.cpp (class TextBoxDynamicPropertyValueProvider): We
15010         don't need to keep a char* selection, we only need it temporarily
15011         while creating the Value*.
15012         (TextBox::OnKeyDown): Check for AcceptsReturn when Enter is
15013         pressed.
15014         (TextBox::ClearSelection): Don't set the TextProperty value
15015         anymore. Also don't bother with the setvalue state variable
15016         anymore.
15017         (TextBox::OnPropertyChanged): Don't worry about setvalue state
15018         here anymore.
15019         (TextBox::TextBox): Get rid of 'setvalue' state.
15021 2009-01-10  Geoff Norton  <gnorton@novell.com>
15023         * media.cpp: surface->filename might be NULL, so we need to guard
15024         against this in our cleanup accordingly.
15026 2009-01-09  Chris Toshok  <toshok@ximian.com>
15028         * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
15029         oops.  we still need to seal the style if that's the thing we're
15030         setting.
15032 2009-01-09  Chris Toshok  <toshok@ximian.com>
15034         * Makefile.am (libmoon_include_headers): add provider.h
15035         (libmoon_la_SOURCES): add provider.cpp
15037         * provider.h, provider.cpp: clean up this some.  the only provider
15038         really not being used right now is the Animation value provider,
15039         since the animation code assumes it can just set local values.
15040         
15041         * shape.cpp (Shape::OnPropertyChanged): no need to look up the
15042         default value - GetValue will return it now.
15044         * textbox.h, textbox.cpp (class
15045         TextBoxDynamicPropertyValueProvider): new custom provider class to
15046         replace the ::GetValue override.  Install it in the ctor.
15048         * text.h, text.cpp (class TextBlockDynamicPropertyValueProvider):
15049         new custom provider class to replace the ::GetValue override.
15050         Install it in the ctor.
15051         (GetBoundingWidth, GetBoundingHeight): don't use
15052         GetValueNoDefault.
15053         (SetActualHeight, SetActualWidth): no longer needed.
15054         (textblock_property): no longer needed.
15055         (Inline::GetDefaultValue): no longer needed.  the inherited
15056         property provider handles it.
15057         (TextBlock::OnPropertyChanged): no need to deal with
15058         Actual{Height,Width}Property here anymore.
15059         
15060         * frameworkelement.cpp (FrameworkElement::FrameworkElement):
15061         remove styles initialization.
15062         (FrameworkElement): remove styles destruction.
15063         (FrameworkElement::ClearValue): this doesn't need any styles stuff
15064         anymore - just clear the binding if we have one, and otherwise
15065         chain up.
15066         (FrameworkElement::GetLocalValue): I'm not sure why this was
15067         looking things up via a style, as styles are a lower priority than
15068         local values.  if there's a binding return that, otherwise chain
15069         up.
15070         (FrameworkElement::SetValueWithErrorImpl): remove the styles stuff
15071         here.
15072         (FrameworkElement::UpdateFromStyle): remove.  the style lookup is
15073         done in the style provider.
15076         * style.h, style.cpp (SetterBaseCollection::SetStyle): remove the
15077         public Style* field and use SetStyle to set it.
15078         (Style::GetPropertyValue): new method.  this should probably be a
15079         hash lookup instead of the linear lookup, but for now this will
15080         work.
15081         (SetterBaseCollection::ValidateSetter): make this a static method
15082         on the class instead of just a C function.
15084         * dependencyobject.h: add a couple more GetValue overrides to deal
15085         with precedence levels.  Remove GetDefaultValue, as it's no longer
15086         needed - we can finally use DependencyProperty::GetDefaultValue as
15087         it's meant to be used.
15089         * dependencyobject.cpp (DependencyObject::GetLocalValue): change
15090         this to just call the LocalValue provider.
15091         (DependencyObject::GetValue (DependencyProperty* property)): call
15092         the overload that lets us specify a starting precedence (start at
15093         the highest precedence level).
15094         (DependencyObject::GetValue (DependencyProperty *property,
15095         PropertyPrecedence startingAtPrecedence)): new method.  loop over
15096         the providers until one of them gives us a value.
15097         (DependencyObject::GetValueSkippingPrecedence): we need this for
15098         looking up the value of FrameworkElement::StyleProperty from
15099         inside the style provider.
15100         (DependencyObject::GetValueNoDefault): reimplement this for the
15101         time being using the providers.
15102         (DependencyObject::DependencyObject): register all the default
15103         providers.  we leave a DynamicValue slot open for subclasses who
15104         want to implement "computed" properties.
15105         (DependencyObject): free all the providers.
15107         * dependencyproperty.g.cpp: regen
15109 2009-01-09  Geoff Norton  <gnorton@novell.com>
15111         * media.cpp: Remove a unnecessary synthesized PropertyChangedEvent
15113 2009-01-09  Geoff Norton  <gnorton@novell.com>
15115         * media.cpp: Ensure that we actually do change the value of the 
15116         Source property when we call MediaBase::SetSource (char*)
15118 2009-01-09  Jeffrey Stedfast  <fejj@novell.com>
15120         * text.cpp (TextBlock::OnPropertyChanged): Update our TextLayout
15121         with layout-hint changes (including TextWrapping hints).
15122         (TextBlock::Layout): Don't pass 'hints' to layout->Layout()
15123         anymore. Also no need to set the wrapping mode here anymore as it
15124         is set in OnProeprtyChanged() now.
15126         * layout.cpp (TextLayout): Move TextLayoutHints into TextLayout,
15127         it doesn't make sense to have them separate.
15129         * textbox.cpp (class TextBox): Get rid of TextLayoutHints state,
15130         we'll pass changes directly to the View as they get updated.
15131         (TextBox::OnPropertyChanged): If the layout hints change, set
15132         changed to the appropriate TextBoxModelChanged hint enum. Also
15133         pass the PropertyChangedEventArgs to the ModelChangedEventArgs
15134         ctor so that TextBoxView can grab the new value to update its
15135         state.
15136         (TextBoxView::OnModelChanged): Handle the new enums.
15137         (TextBoxView::OnPropertyChanged): Sync our layout-hints state when
15138         a new TextBox gets set.
15140 2009-01-09  Alan McGovern  <amcgovern@novell.com>
15142         * dependencyproperty.cpp: 'validator' should never be null - it should
15143         be default_validator instead. Regression caused by previous change to
15144         generator.
15146 2009-01-09  Alan McGovern  <amcgovern@novell.com>
15148         * validators.cpp: Validator only converts -1 to null. All other values
15149         appear to be left the same
15151 2009-01-09  Alan McGovern  <amcgovern@novell.com>
15153         * validators.h:
15154         * mediaelement.h:
15155         * validators.cpp: Add a validator to AudioStreamIndex. This converts
15156         negative values to null, as the unit tests show.
15158 2009-01-09  Alan McGovern  <amcgovern@novell.com>
15160         * dependencyproperty.h:
15161         * dependencyproperty.cpp:
15162         * dependencyproperty.g.cpp: Make it possible to use validators with
15163         Nullable properties.
15165 2009-01-08  Jeffrey Stedfast  <fejj@novell.com>
15167         * text.cpp (Glyphs::SetFill): Removed, autogenerated now.
15168         (Glyphs::GetFill): Same.
15170         * text.h (class Glyphs): GenerateAccessors for FillProperty too.
15172         * textbox.cpp (TextBox::CursorRight): Implemented.
15173         (TextBox::CursorLeft): Implemented.
15174         (TextBox::GetValue): New override to set the SelectedText property
15175         if the selection has been changed since the last request.
15177         * eventargs.cpp (KeyEventArgs::IsModifier): Work around gtk < 2.10.
15179         * text.cpp (TextBlock::Layout): Fix bug #435798 in a slightly
15180         different way so that we don't have to use GetValueNoDefault().
15182 2009-01-08  Larry Ewing  <lewing@novell.com>
15184         * text.cpp (TextBlock::Layout): use nan logic for FE:Width here.
15186         * geometry.h, geometry.cpp (class RectangleGeometry): remove
15187         GetRadius logic everything is handled property by the properties
15188         these days.
15190 2009-01-08  Jeffrey Stedfast  <fejj@novell.com>
15192         * textbox.cpp (TextBox::OnKeyDown): Updated a bit to use the new
15193         KeyEventArgs APIs.
15195         * keyboard.cpp (Keyboard::KeyIsChar): Removed.
15196         (Keyboard::KeyToChar): Removed.
15197         (Keyboard::KeyIsMovement): Removed.
15199         * eventargs.cpp (KeyEventArgs::GetModifiers): Renamed from
15200         GetState() to make the purpose clearer.
15201         (KeyEventArgs::IsModifier): New helper method.
15202         (KeyEventArgs::GetKeyVal): New helper method.
15203         (KeyEventArgs::GetUnicode): New helper method.
15205         * textbox.cpp (TextBox::OnPropertyChanged): Get rid of the 'dirty'
15206         state, all places that set dirty=true are now handled by
15207         TextBoxView instead. Only call Invalidate() when appropriate. For
15208         selection state changes, check setvalue state to see if we need to
15209         do anything.
15210         (TextBox::ClearSelection): New helper method to clear the
15211         selection.
15212         (TextBox::OnKeyDown): Properly clear the selection using
15213         ClearSelection() so that the DP values get updated.
15215 2009-01-08  Larry Ewing  <lewing@novell.com>
15217         * shape.cpp, shape.h: remove all the GetValueNoDefault logic,
15218         replace it with proper NAN state.  Remove MixedWidthAndHeight for
15219         c&p checks that will be removed in the layou code.
15220         
15221         * frameworkelement.cpp: more nan cleanup.
15223         * border.cpp:
15224         * control.cpp: handle nan.
15226 2009-01-08  Alan McGovern  <amcgovern@novell.com>
15228         * style.h:
15229         * value.h:
15230         * value.h.in:
15231         * frameworkelement.cpp:
15232         * dependencyproperty.g.cpp: Add the ability to map a DependencyProperty
15233         to/from native. This removes a hack in Style where DP's used to be
15234         looked up by name, which couldn't be done with properties registered
15235         through C#. Fixes 2 NUnit tests.
15237 2009-01-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
15239         * validators.h:
15240         * validators.cpp: Added DoubleGreaterThanZeroValidator.
15242         * mediaelement.h: Use double validator instead of int validator for
15243         double properties.
15245         * dependencyproperty.g.cpp: Regenerated.
15247 2009-01-08  Alan McGovern  <amcgovern@novell.com>
15249         * dependencyobject.cpp: *Warning - Changing default values* When
15250         DO.ClearValue is called, we always return 'NULL' as the new value.
15251         This is incorrect as the pattern: do.ClearValue (property),
15252         do.GetValue (property) will actually return do.GetDefaultValue
15253         (DependencyProperty*). This change fixes a failing assertion in
15254         StyleTest.cs - ModifyAfterBinding.
15256 2009-01-08  Sebastien Pouliot  <sebastien@ximian.com>
15258         * cbinding.h|cpp, collection.h, type.h, type-generated.cpp, value.h:
15259         Regenerated for ITEM_COLLECTION
15261 2009-01-08  Alan McGovern  <amcgovern@novell.com>
15263         * text.cpp:
15264         * dependencyobject.h:
15265         * dependencyobject.cpp: Reinstate GetDefaultValue as it was actually
15266         overridden by Inlines
15268 2009-01-07  Larry Ewing  <lewing@novell.com>
15270         * frameworkelement.cpp, frameworkelement.h:
15271         move all the various duplicate versions GetTransformOrigin here.
15273         * mediaelement.cpp: fix GetTransformOrigin for new default values.
15274         
15275         * shape.cpp, shape.h:
15276         * canvas.cpp, canvas.h:
15277         * media.cpp, media.h:
15278         * shape.cpp, shape.h:
15279         * stackpanel.cpp, stackpanel.h: remove c&p code from all over.
15281         Fixes run-tests 27
15283 2009-01-07  Geoff Norton  <gnorton@novell.com>
15285         * collection.cpp: Ensure that we call any AddWithError overrides
15286         that might exist in a subclass (like TimelineMarkerCollection) as
15287         it could affect the integer returned.
15289 2009-01-07  Geoff Norton  <gnorton@novell.com>
15291         * xaml.cpp, file-downloader.cpp: TextStream::Open has been renamed
15292         to TextStream::OpenFile
15293         * utils.h|cpp: Refactor TextStream to read in-memory and file buffers
15294         * downloader.cpp: GetResponseText needs to ensure it returns data in
15295         UTF-8, and doesn't handle zip files.
15297 2009-01-07  Jeffrey Stedfast  <fejj@novell.com>
15299         * textbox.cpp (TextBox::OnKeyDown): Added support for keyboard
15300         input a bit. Cutting a lot of corners for now, but oh well.
15301         (TextBoxView::TextBoxView): Hooked up some cursor blinking
15302         action. We don't actually render the cursor yet tho.
15304         * keyboard.cpp (Keyboard): Moved into it's own source file from
15305         eventargs.cpp. I have a sneaking suspicion that this logic will
15306         get large and complicated someday soon.
15308 2009-01-07  Sebastien Pouliot  <sebastien@ximian.com>
15310         * dependencyobject.cpp (set_surface): Add null check since the 
15311         hashtable can contain Value with a NULL DependencyObject
15313 2009-01-07  Larry Ewing  <lewing@novell.com>
15315         * canvas.cpp:
15316         * frameworkelement.cpp:
15317         * shape.cpp: Quick hacks to get test 0 passing after the default
15318         value changes.
15320 2009-01-07  Chris Toshok  <toshok@ximian.com>
15322         * textbox.h (class TextBox): add @CallInitialize so we can set the
15323         DefaultStyleKey.
15325         * control.cpp (Control::OnLoaded): move FrameworkElement::OnLoaded
15326         call to before ApplyTemplate(), as the template isn't applied
15327         until after the Loaded event is fired.
15329 2009-01-07  Geoff Norton  <gnorton@novell.com>
15331         * downloader.h|cpp: Work around mozilla bug #444160 by keeping an in
15332         memory cache of all downloads <= 64KB that are streamed in 1 shot.
15334 2009-01-07  Sebastien Pouliot  <sebastien@ximian.com>
15336         * contentcontrol.h|cpp: Remove properties that are not in SL2 final
15337         * dependencyproperty.g.cpp: Regenerated.
15339 2009-01-07  Alan McGovern  <amcgovern@novell.com>
15341         * uielement.h:
15342         * validators.h:
15343         * validators.cpp:
15344         * dependencyproperty.g.cpp: If C# passes a null cursor to C++, convert
15345         it to the default cursor instead.
15347 2009-01-06  Larry Ewing  <lewing@novell.com>
15349         * uielement.h (class UIElement): add a default value to
15350         UIElement::CusorProperty, fixes a crossing event crash.
15352         * uielement.cpp (UIElement::ElementRemoved): remove the element
15353         from the dirty list since it is an orphan now.
15355         * runtime.cpp (Surface::PaintToDrawable): add some logging.
15357 2009-01-06  Jeffrey Stedfast  <fejj@novell.com>
15359         * textbox.cpp (TextBox::OnKeyDown): Added some keyboard keypress
15360         callbacks so that we can eventually make TextBox receive keyboard
15361         input. Currently the events never seem to fire, tho.
15363 2009-01-06  Sebastien Pouliot  <sebastien@ximian.com>
15365         * enums.h: Add enums values for MouseCursorSize[NS|WE]
15366         * window-gtk.cpp: Display MouseCursorSize[NS|WE] cursors
15368 2009-01-06  Alan McGovern  <amcgovern@novell.com>
15370         * frameworkelement.cpp:
15371         * dependencyobject.cpp: Fixes so that StyleTests.NullLocalValue passes
15372         again after my previous commit changing the handling of
15373         GetValue/GetLocalValue.
15375 2009-01-06  Alan McGovern  <amcgovern@novell.com>
15377         * cbinding.h:
15378         * cbinding.cpp:
15379         * dependencyobject.h:
15380         * dependencyobject.cpp: Nuke DO.GetDefaultValue as it just wraps the
15381         DP.GetDefaultValue function. Fixed the implementation of 'null'
15382         Value*. Now a Value* with GetIsNull () == true will be returned as
15383         'NULL' for calls to GetValue or GetValueNoDefault. This makes
15384         Value.GetIsNull opaque to native code so existing null checks will
15385         work as they should. The only function which is aware of GetIsNull is
15386         GetLocalValue, and this correctly handles this case.
15388 2009-01-06  Alan McGovern  <amcgovern@novell.com>
15390         * textbox.h:
15391         * validators.h:
15392         * validators.cpp:
15393         * dependencyproperty.g.cpp: Ensure correct exception is thrown when a
15394         null string is passed to PasswordBox.Password. Use correct range
15395         validation for MaxLength.
15397 2009-01-06  Alan McGovern  <amcgovern@novell.com>
15399         * frameworkelement.h:
15400         * frameworkelement.cpp:
15401         * dependencyproperty.g.cpp: Default value for FE.Height and FE.Width is
15402         NAN.
15404 2009-01-06  Alan McGovern  <amcgovern@novell.com>
15406         * style.h:
15407         * style.cpp:
15408         * frameworkelement.cpp: Implement proper validation of Setters and also
15409         correctly implement behaviour of sealed/unsealed styles. They are now
15410         passing all the NUnit tests except for one.
15412 2009-01-05  Chris Toshok  <toshok@ximian.com>
15414         * frameworkelement.h, frameworkelement.cpp: remove all reference
15415         to template_namescope.
15417         * template.cpp (ControlTemplate::Apply): remove call to
15418         FrameworkElement::SetTemplateNameScope - just set it as the
15419         namescope on the root of the applied template.  This way name
15420         references within the template resolve correctly.
15422         * control.cpp (Control::GetTemplateChild): with the above change,
15423         this just becomes template_root->FindName ()
15425 2009-01-05  Sebastien Pouliot  <sebastien@ximian.com>
15427         * runtime.cpp: Add a null check in Surface::FocusElement since both
15428         the C bindings and the MouseLeftButtonDown event can call it with a
15429         NULL value causing a SIGSEGV.
15431 2009-01-05  Jeffrey Stedfast  <fejj@novell.com>
15433         * textbox.cpp (TextBox::OnApplyTemplate): Override. Insert a
15434         TextBoxView in the appropriate place.
15436         * control.cpp (Control::GetTemplateChild): Now takes a const
15437         char*.
15439 2009-01-05  Alan McGovern  <amcgovern@novell.com>
15441         * uielement.h: Cursor shouldn't have a default value in SL2.
15443         * template.cpp:
15444         * dependencyobject.h:
15445         * dependencyobject.cpp:
15446         * dependencyproperty.g.cpp: DO.Name defaults to String.Empty. Modify
15447         code calling NameScope::[Un]RegisterName to ignore empty names just
15448         like it ignores null names.
15450 2009-01-05  Alan McGovern  <amcgovern@novell.com>
15452         * validators.h:
15453         * validators.cpp:
15454         * frameworkelement.h:
15455         * frameworkelement.cpp:
15456         * dependencyproperty.h:
15457         * dependencyproperty.cpp:
15458         * dependencyproperty.g.cpp: We need a reference to the current
15459         DependencyProperty so that write-once properties can be properly
15460         validated. Moved validation of StyleProperty from
15461         FrameworkElement.SetValue into the new StyleValidator.
15463 2009-01-05  Alan McGovern  <amcgovern@novell.com>
15465         * validators.h:
15466         * validators.cpp:
15467         * dependencyobject.cpp:
15468         * dependencyproperty.h:
15469         * dependencyproperty.cpp: When validating the Value we need a reference
15470         to the current DependencyObject as some properties are
15471         write-once/read-only
15473 2009-01-02  Jeffrey Stedfast  <fejj@novell.com>
15475         * textbox.cpp (TextBox): No longer maintains a TextLayout nor a
15476         dirty flag. TextBox is basically just a model now. Also added a
15477         ModelChanged event.
15478         (TextBox::Render): Removed.
15479         (TextBox::GetValue): Removed, dunno why it was ever overridden.
15480         (TextBox::OnPropertyChanged): Emit a ModelChangedEvent when the
15481         view needs to be updated.
15482         (TextBoxView): New class that renders the contents of a TextBox
15483         control.
15485         * value.cpp (Value::GetIsNull): Fixed compiler warning.
15487         * pipeline.h (class MediaMarker): dtor needs to be virtual.
15489 2009-01-02  Sebastien Pouliot  <sebastien@ximian.com>
15491         * validators.cpp: Remove the printf calls (that won't compile under
15492         SLED10 without changing includes).
15494 2008-12-22  Alan McGovern  <amcgovern@novell.com>
15496         * border.h:
15497         * validators.h:
15498         * validators.cpp:
15499         * dependencyproperty.g.cpp: Add validators for the Border class
15501         * value.h:
15502         * value.cpp:
15503         * value.h.in: unused_padding is now used as a bitfield. Currently used
15504         to indicate whether an object is null or not
15506         * frameworkelement.cpp: the styles hashtable only indicates if the
15507         current value comes from a style. It does not show if a dp has been
15508         bound to a style. If the current value is cleared, we need to update
15509         from the style to repopulate the styles hashtable and correctly set
15510         the style value. This can be optimised by passing the current dp to
15511         UpdateFromStyle.
15513         * dependencyobject.cpp: When do.SetValue (dp, null) is called, correctly
15514         set the null value as opposed to calling do.ClearValue(dp).
15516 2008-12-22  Andreia Gaita  <avidigal@novell.com>
15518         * cbinding.h|cpp, type-generated.cpp, type.h, value.h:
15519         Regenerated for DispatcherTimer
15521         * animation.h: Move Completed events to the timeline
15523         * clock.h|cpp: Add DispatcherTimer class, a timeline to drive a
15524         clock whose duration is the timer Interval property. The timeline's
15525         completed event is a tick of the timer, and the clock gets restarted
15526         when it completes.
15527         Save the current time when a clock starts so that clocks that are
15528         set to be started on the next tick with BeginOnTick include the time
15529         between the BeginOnTick call and the actual Begin in their elapsed
15530         time. Also, clocks beneath the time manager root clock now track time
15531         since they were started, and not since the time manager started.
15533 2008-12-20  Larry Ewing  <lewing@novell.com>
15535         * mediaelement.cpp (MediaElement::UpdateProgress): 
15536         * media.cpp (Image::UpdateProgress): Change the delta from 0.0005
15537         to 0.05 which appears to be what the docs actually say.
15539 2008-12-19  Sebastien Pouliot  <sebastien@ximian.com>
15541         * cbinding.cpp|h: Regenerated for read-only DP.
15542         * dependencyproperty.h: Expose IsReadOnly. Add read_only parameter 
15543         to RegisterManagedProperty.
15545 2008-12-19  Alan McGovern  <amcgovern@novell.com>
15547         * src.mdp:
15548         * animation.h:
15549         * dependencyproperty.g.cpp: Add validation + tests for
15550         Storyboard.TargetNameProperty and TargetPropertyProperty
15552 2008-12-18  Chris Toshok  <toshok@ximian.com>
15554         * control.h, text.h, frameworkelement.h, grid.h, mediaelement.h,
15555         textbox.h: decorate properties with @Validator attributes which
15556         the generator uses to generate the proper call to
15557         DependencyProperty::RegisterFull.
15559         * control.h, text.h, frameworkelement.h, grid.h, mediaelement.h,
15560         textbox.cpp: Remove the calls to
15561         DependencyProperty::SetValueValidator.  They're generated by the
15562         generator now from our metadata.
15564         * dependencyproperty.cpp, dependencyproperty.h: add new parameter
15565         to RegisterFull prototypes so we can supply a validator at
15566         registration time.
15568         * dependencyproperty.g.cpp: regen.
15569         
15570 2008-12-18  Chris Toshok  <toshok@ximian.com>
15572         * validators.cpp, validators.h: move these into a class instead of
15573         static C methods, and don't include C methods into every file.  we
15574         were getting warnings every time they went unused, and namespacing
15575         with C++ is better than #including them all over the place.
15577         * grid.cpp, control.cpp, text.cpp, mediaelement.cpp, textbox.cpp,
15578         dependencyproperty.cpp, frameworkelement.cpp: track change above.
15579         
15580 2008-12-18  Chris Toshok  <toshok@ximian.com>
15582         * xaml.cpp (class XamlElementInstanceManaged): this instance can
15583         be a DependencyObject sometimes.  we need an instance field to
15584         tell.
15585         (XamlElementInstanceManaged::XamlElementInstanceManaged): when
15586         @obj, set is_dependency_object to true.  This fixes setting x:
15587         namescope properties on managed DependencyObject subclasses, as in
15588         '<Button x:Name="foo" />'.
15589         (dependency_object_add_child): remove the template case from here.
15590         it'll be handled differently (being parsed at application time,
15591         essentially).
15593 2008-12-18  Alan McGovern  <amcgovern@novell.com>
15595         * text.cpp:
15596         * control.cpp:
15597         * validators.h:
15598         * mediaelement.cpp:
15599         * multiscaleimage.h:
15600         * multiscaleimage.cpp:
15601         * frameworkelement.cpp: Add validation to DPs
15603 2008-12-18  Alan McGovern  <amcgovern@novell.com>
15605         * mediaelement.cpp: Add validation for NaturalVideoHeight and
15606         NaturalVideoWidth.
15608 2008-12-18  Alan McGovern  <amcgovern@novell.com>
15610         * src.mdp:
15611         * grid.cpp:
15612         * textbox.h:
15613         * textbox.cpp:
15614         * Makefile.am:
15615         * dependencyobject.h:
15616         * frameworkelement.h:
15617         * frameworkelement.cpp:
15618         * dependencyproperty.cpp: Move parameter validation for DP's to use the
15619         new ValueValidator callback.
15621         * validators.h: All validators are defined in this header file so they
15622         can be easily reused for different DPs.
15624 2008-12-18  Alan McGovern  <amcgovern@novell.com>
15626         * grid.cpp: Correctly set the validators - forgot to revert changes
15627         before committing.
15629 2008-12-18  Alan McGovern  <amcgovern@novell.com>
15631         * grid.cpp:
15632         * dependencyobject.cpp:
15633         * dependencyproperty.h:
15634         * dependencyproperty.cpp: Add the ability to validate the value for a
15635         DependencyProperty before setting it.
15637 2008-12-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15639         * text.h, text.cpp: Remove some useless code.
15641 2008-12-16  Alan McGovern  <amcgovern@novell.com>
15643         * cbinding.h:
15644         * cbinding.cpp:
15645         * dependencyproperty.h: If a default value has been set in native code,
15646         propagate that to managed code.
15648 2008-12-15  Chris Toshok  <toshok@ximian.com>
15650         * template.cpp (ControlTemplate::Apply): make sure we clear the
15651         toplevel namescope from the template tree.  instead we keep a
15652         different namescope around (full of the duplicated elements) which
15653         is populated during DuplicateObject.
15655 2008-12-15  Jeffrey Stedfast  <fejj@novell.com>
15657         * xaml.cpp: Macroize the static tables.
15658         (create_binding_expression_from_markup): Got rid of
15659         BindingExtension::path.
15660         (xaml_markup_parse_binding): Update the markup pointer before a
15661         successful return.
15663 2008-12-15  Jackson Harper  <jackson@ximian.com>
15665         * xaml.cpp: fix typo.
15666         - remove sneaky debug
15668 2008-12-15  Jackson Harper  <jackson@ximian.com>
15670         * xaml.cpp: Always check if we are in buffering mode. (Otherwise
15671         we'll get cdata content at the end of a template or a namespace
15672         handler during a template).
15674 2008-12-15  Alan McGovern  <amcgovern@novell.com>
15676         * grid.h:
15677         * dependencyproperty.g.cpp: ShowGridLines is true by default.
15679 2008-12-15  Alan McGovern  <amcgovern@novell.com>
15681         * control.cpp: Default foreground brush is black
15683 2008-12-12  Jackson Harper  <jackson@ximian.com>
15685         * xaml.cpp: Remove some old code.
15687 2008-12-12  Jackson Harper  <jackson@ximian.com>
15689         * xaml.cpp: Still need to call setproperty on non managed
15690         attributes, they could be events.
15692 2008-12-12  Jackson Harper  <jackson@ximian.com>
15694         * xaml.cpp: A little cleanup so that we only try setting non-dp
15695         attributes on managed objects. (previously we would try but fail,
15696         so the results are basically the same, just less waste).
15698 2008-12-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15700         * runtime.h: Make DetachDownloaders public so that the plugin can call
15701           it.
15703 2008-12-12  Alan McGovern  <amcgovern@novell.com>
15705         * textbox.cpp: Add bounds checking to SelectionStartProperty too
15707 2008-12-12  Alan McGovern  <amcgovern@novell.com>
15709         * textbox.h:
15710         * textbox.cpp: Add range checking for MaxLengthProperty and
15711         SelectionLengthProperty
15713 2008-12-11  Sebastien Pouliot  <sebastien@ximian.com>
15715         * dependencyobject.h: Name setter is public in SL2 final.
15717 2008-12-11  Chris Toshok  <toshok@ximian.com>
15719         * control.h, control.cpp: hook up TemplateApplied event.
15721         * type-generated.cpp: regen.
15723 2008-12-11  Chris Toshok  <toshok@ximian.com>
15725         * control.h (class Control): generate cbinding/pinvoke for
15726         GetTemplateChild.
15728         * cbinding.h, cbinding.cpp: regen.
15730 2008-12-11  Alan McGovern  <amcgovern@novell.com>
15732         * textbox.cpp: Unbreak the build.
15734 2008-12-11  Alan McGovern  <amcgovern@novell.com>
15736         * textbox.cpp: It should not be possible to set a null value as the
15737         password.
15739 2008-12-11  Alan McGovern  <amcgovern@novell.com>
15741         * textbox.h:
15742         * dependencyproperty.g.cpp: Fix several issues with default values for
15743         TextBox and PasswordBox
15745 2008-12-11  Andreia Gaita  <shana@jitted.com>
15747         * cbinding.h|cpp, clock.h: Framerate accessors
15749 2008-12-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15751         * audio.cpp: Enqueue: don't enqueue anything if we've reached EOF. Also
15752           remove some stale code.
15754 2008-12-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15756         * mediaplayer.cpp, mediaplayer.h: Added locking to accesses to the
15757           audio field. Added comments/explicit verification in every method
15758           describing which methods must be thread-safe and which aren't.
15760 2008-12-10  Jeffrey Stedfast  <fejj@novell.com>
15762         * xaml.cpp (parser_error): Now takes varargs to simplify
15763         things. Fixed all callers to not strdup/g_strdup_printf (and leak)
15764         the message argument.
15765         (create_binding_expression_from_markup): Check that the source is
15766         a DO before casting.
15768 2008-12-10  Alan McGovern  <amcgovern@novell.com>
15770         * type.h:
15771         * textbox.h:
15772         * type-generated.cpp:
15773         * dependencyproperty.g.cpp: PasswordCharProperty should be a char. This
15774         is represented by an int32 in unmanaged code.
15776 2008-12-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15778         * audio-pulse.cpp: Fix int->enum conversion.
15780 2008-12-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15782         * audio-pulse.h, audio-pulse.cpp: PulsePlayer: Use enum instead of
15783           random constants for the connected variable.
15785 2008-12-10  Jackson Harper  <jackson@ximian.com>
15787         * xaml.cpp: Add a buffering mode to the parser, this mode is used
15788         for templates and simply buffers all the text without doing
15789         any real parsing. So everything between a
15790         <DataTemplate>..</DataTemplate> block is turned into a string.
15792 2008-12-10  Alan McGovern  <amcgovern@novell.com>
15794         * textbox.h:
15795         * textbox.cpp: Implement the SelectAll function and raise an event when
15796         the Password changes
15798         * type.h:
15799         * value.h:
15800         * cbinding.h:
15801         * cbinding.cpp:
15802         * type-generated.cpp:
15803         * dependencyproperty.g.cpp: Commit the files from the generator.
15805 2008-12-10  Alan McGovern  <amcgovern@novell.com>
15807         * textbox.h: Partial implementation of the PasswordBox control
15809 2008-12-09  Chris Toshok  <toshok@ximian.com>
15811         * template.h, template.cpp: add DataTemplates.
15813         * cbinding.h, cbinding.cpp, value.h, type.h, type-generated.cpp:
15814         regen.
15815         
15816 2008-12-09  Jeffrey Stedfast  <fejj@novell.com>
15818         * xaml.cpp (create_binding_expression_from_markup): Converter can
15819         also take a StaticResource.
15821         * playlist.cpp: Don't use ctype is*() with a char argument, these
15822         functions are meant to take unsigned char values cast to an
15823         int. Use the g_ascii_is*() functions instead.
15825         * xaml.cpp (create_binding_expression_from_markup):
15826         ConverterParameter can either be a string or a StaticResource. If
15827         it is a StaticResource, lookup the resource object.
15829         * binding.cpp (BindingExpressionBase::SetConverterParameter): Now
15830         takes a Value* since we need to handle either string or
15831         DependencyObject.
15833 2008-12-09  Jackson Harper  <jackson@ximian.com>
15835         * xaml.cpp: Don't use the cpp initializers.
15836         - More consistent naming.
15838 2008-12-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15840         * audio-pulse.cpp, audio-pulse.h: Improve locking while waiting for
15841           pulseaudio to initialize - keep waiting if we get spurious wakeups.
15843 2008-12-09  Jeffrey Stedfast  <fejj@novell.com>
15845         * xaml.cpp (create_binding_expression_from_markup): Lookup the
15846         StaticResource property for Source.
15848         * binding.cpp (BindingExpressionBase::SetSourceName): Removed. No
15849         longer needed.
15850         (BindingExpressionBase::*): No longer do dynamic lookup of the
15851         source_name.
15853 2008-12-09  Sebastien Pouliot  <sebastien@ximian.com>
15855         * usercontrol.cpp|h: Remove @CallInitialize and set IsTabStop to 
15856         false in C++ constructor.
15858 2008-12-09  Jeffrey Stedfast  <fejj@novell.com>
15860         * xaml.cpp (handle_xaml_markup_extension): Lots more refactoring
15861         action.
15862         (xaml_markup_parse_binding): Fixed to handle
15863         "Source={StaticResource ...}" syntax.
15865 2008-12-08  Sebastien Pouliot  <sebastien@ximian.com>
15867         * usercontrol.h: Tag with @CallInitialize since IsTabStop is false
15868         for UserControl while it's true for Control
15870 2008-12-08  Jeffrey Stedfast  <fejj@novell.com>
15872         * xaml.cpp: A bit of refactoring...
15874         * binding.cpp (BindingExpressionBase::SetConverterParameter):
15875         Added.
15876         (BindingExpressionBase::SetConverterCulture): Same.
15877         (BindingExpressionBase::SetConverter): Same.
15878         (BindingExpressionBase::SetSourceName): Same.
15879         (BindingExpressionBase::AttachListener): Lookup the source by name
15880         if we don't already have it.
15881         (BindingExpressionBase::GetValue): Same.
15882         (BindingExpressionBase::UpdateSource): Same.
15884         * xaml.cpp (binding_expression_from_str): Finished implementing.
15886 2008-12-07  Jeffrey Stedfast  <fejj@novell.com>
15888         Fixes bug #444872
15890         Patches by Argiris Kirtzidis
15892         * dependencyobject.h: Fix forward declarations of classes declared
15893         struct.
15895         * multiscaleimage.cpp (MultiScaleImage::RenderLayer): Use floating
15896         point constant to make sure we get the correct overload in MSVC.
15898         * playlist.cpp (duration_from_asx_str): Same.
15900         * value.cpp (Value::FreeValue): Free corner radius.
15902 2008-12-05  Geoff Norton  <gnorton@novell.com>
15904         * audio-pulse.cpp: PulseAudio sometimes gives us errors sync, 
15905         and sometimes async.  Lets ensure we can actually connect before
15906         continuing on.
15908 2008-12-05  Jeffrey Stedfast  <fejj@novell.com>
15910         * runtime.cpp (Surface::FocusElement): Removed #if SL_2_0 check.
15912         * dependencyobject.cpp (DependencyObject::IsValueValid): Removed
15913         #if SL_2_0 check.
15915         * binding.h (class Binding): Added more bool members.
15917         * xaml.cpp (binding_expression_from_str): New method to
15918         parse {Binding} markup syntax into a BindingExpression.
15919         (handle_xaml_markup_extension): Parse Binding markup extensions.
15921 2008-12-05  Chris Toshok  <toshok@ximian.com>
15923         * deepzoomimagetilesource.h (class DeepZoomImageTileSource): fix
15924         the GenerateAccessors thing the right way.
15926         * dependencyproperty.g.cpp: regen.
15927         
15928 2008-12-05  Jackson Harper  <jackson@ximian.com>
15930         * xaml.cpp: Move the markup extension handler out of
15931         set_attributes, ideally each markup extension will get it's own
15932         function eventually.
15934 2008-12-05  Jeffrey Stedfast  <fejj@novell.com>
15936         * binding.cpp (Binding::SetPropertyPath): Fixed to take a const
15937         char *
15939         * xaml.cpp: Conditionally define DEBUG, which I guess is a
15940         temporary thing, in a way which will not spew gcc warnings.
15942 2008-12-05  Jackson Harper  <jackson@ximian.com>
15944         * xaml.cpp: Let managed code own it's Value pointers.
15946 2008-12-04  Jackson Harper  <jackson@ximian.com>
15948         * xaml.cpp: We can store the Value* in the base element instance
15949         now, since they all use a Value.
15951 2008-12-05  Fernando Herrera  <fherrera@novell.com>
15953         * playlist.cpp:
15954         * playlist.h: Don't check duration at playlist level but let MediaPlayer
15955         handle it. Don't do a delayed element->Play() for repeats because that
15956         can broke js doing "e.Play();e.Stop()"
15958 2008-12-04  Fernando Herrera  <fherrera@novell.com>
15960         * playlist.cpp (Playlist::Open): Check duration properly.
15962 2008-12-04  Jeffrey Stedfast  <fejj@novell.com>
15964         * binding.cpp: Get rid of excessive use of 'this' keyword.
15966 2008-12-04  Geoff Norton  <gnorton@novell.com>
15968         * playlist.cpp: 100ms not 10s should be when we start playing the
15969         playlist entries.
15971 2008-12-04  Larry Ewing  <lewing@novell.com>
15973         * layout.cpp (RenderLine): do all the filling in one pass rather
15974         than adding a stroke at the end.  Tidy up the path creation and
15975         modification logic.
15977 2008-12-04  Jeffrey Stedfast  <fejj@novell.com>
15979         We only support vector fonts, so get rid of the TextFont::Render()
15980         API that is only useful as an abstraction over rendering as bitmap
15981         vs pathing. Leave the *Path() APIs which are the only ones
15982         actually used.
15984         * layout.cpp (RenderLine): Don't bother checking IsScalable(), all
15985         fonts are scalable for now.
15987         * font.cpp (TextFont::RenderGlyphPath): Removed.
15988         (TextFont::Render): Same.
15990 2008-12-04  Sebastien Pouliot  <sebastien@ximian.com>
15992         * control.h: Changed my mind and moved DefaultStyleKeyProperty and
15993         IsEnabledProperty to the managed world
15994         * dependencyproperty.g.cpp: regenerated
15996 2008-12-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
15998         * pipeline.cpp: IMediaDemuxer::GetBufferedSize: Only calculate buffered
15999           size using video and audio streams. Fixes #456154.
16001 2008-12-04  Jackson Harper  <jackson@ximian.com>
16003         * xaml.cpp: The element instance now has ownership of the Value
16004         objects.
16006 2008-12-03  Jackson Harper  <jackson@ximian.com>
16008         * xaml.cpp: Cleanup managed namespaces when we shutdown.
16009         - Reduce the number of Value's we are creating. These still aren't
16010         being freed properly, but at least there isn't as many of them.
16012 2008-12-03  Geoff Norton  <gnorton at novell.com>
16014         * media.cpp: Ensure we null our reference to the image loader in
16015         all the failure cases to avoid a possible double free/unref.
16017 2008-12-03  Alan McGovern  <amcgovern@novell.com>
16019         * binding.h:
16020         * frameworkelement.h:
16021         * frameworkelement.cpp: If a Binding has bound to a datacontext, refresh
16022         the binding when the context is altered.
16024 2008-12-03  Alan McGovern  <amcgovern@novell.com>
16026         * frameworkelement.h:
16027         * dependencyproperty.g.cpp: DataContext should take 'object'
16029 2008-12-03  Jackson Harper  <jackson@ximian.com>
16031         * xaml.cpp: Call setproperty for all the children in the property
16032         block, this is needed because we aren't doing as much magic
16033         collection handling in addchild anymore.
16035 2008-12-02  Sebastien Pouliot  <sebastien@ximian.com>
16037         * control.h: Add DefaultStyleKeyProperty and IsEnabledProperty
16038         * dependencyproperty.g.cpp: regenerated
16040 2008-12-02  Jackson Harper  <jackson@ximian.com>
16042         * xaml.cpp: Map in enumerations in 2.0. So you can do something
16043         like <Visibility>Collapsed</Visibility>
16044         * enums.h|cpp: Expose a function so we can check if a certain enum
16045         exists.
16047 2008-12-02  Jackson Harper  <jackson@ximian.com>
16049         * xaml.cpp: We can map in non-DO managed elements now, so check to
16050         make sure it's actually a dependency object.
16051         - Pass NULL for the property name if we weren't able to query for
16052         a content property name.  The managed backing might be able to
16053         find a name some other way.
16055 2008-12-02  Jackson Harper  <jackson@ximian.com>
16057         * xaml.cpp: Return false if the base content property setter didnt
16058         work.
16060 2008-12-02  Alan McGovern  <amcgovern@novell.com>
16062         * cbinding.h:
16063         * cbinding.cpp:
16064         * dependencyproperty.h:
16065         * dependencyproperty.cpp: Ensure the default value of a CustomDP is
16066         propagated to the unmanaged
16068 2008-12-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16070         * dependencyobject.cpp: We need to raise changed events when clearing
16071           values too.
16072         * cbinding.cpp, cbinding.h: Regenerated.
16074 2008-12-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16076         * dependencyproperty.h: Added a IsNullable setter (instead of adding
16077           yet another parameter to the Register methods).
16079 2008-12-02  Andreia Gaita  <shana@jitted.com>
16081         * Makefile.am, stackpanel.cpp|h: Add StackPanel implementation
16083 2008-12-02  Andreia Gaita  <shana@jitted.com>
16085         * panel.cpp: Fix debugging messages
16087 2008-12-01  Larry Ewing  <lewing@novell.com>
16089         * brush.cpp, brush.h: add Fill and Stroke methods to brush so that
16090         we can handle image and video brush opacity properly.
16092         * src/control.cpp
16093         * src/layout.cpp
16094         * src/panel.cpp
16095         * src/shape.cpp
16096         * src/text.cpp: use the new Fill and Stroke methods when using
16097         brushes.  Fixes test-imagebrush-opacity* when the masters are
16098         correctly updated.
16100 2008-12-01  Chris Toshok  <toshok@ximian.com>
16102         * frameworkelement.h: add decl for ClearBindingExpression.
16103         
16104         * frameworkelement.cpp (FrameworkElement::ClearBindingExpression):
16105         factor out the 2 operations (Detach + hash_remove) here since
16106         we'll be calling it in a couple places.
16107         (binding_destroy): this should delete value, not call ValueFree.
16108         (FrameworkElement::SetBindingExpression): call
16109         ClearBindingExpression if there's a current one, and don't ref the
16110         expression.  Value will hold one.
16111         (FrameworkElement::ClearValue): a couple of changes.
16112         
16113         1. Call ClearBindingExpression instead of just removing the
16114         binding from the hash (and not detaching it...)
16116         2. don't remove the style value from the style has.
16118         3. instead of looping over all the setters in the style just set
16119         the value back to the value in the styles hash.
16120         
16121         4. if we're going to be resetting the value to the style, don't
16122         notify listeners in UIElement::ClearValue.  it'll happen in
16123         SetValue.
16125 2008-12-01  Geoff Norton  <gnorton@novell.com>
16127         * audio.cpp: Fix a logic error that prevented falling back to alsa when
16128         built with both pulse and alsa support.
16130         r: toshok
16132 2008-12-01  Chris Toshok  <toshok@ximian.com>
16134         * template.cpp, template.h: when copying the tree over, register
16135         the template element names to their instantiated counterparts.
16136         and build up a NameScope object as we go.
16138         * frameworkelement.cpp: add a "template_namescope" which maps
16139         names that were registered in the template itself to elements in
16140         the instantiated visual tree.
16142         * control.cpp (Control::GetTemplateChild): look the child up in
16143         the template namescope, not against the visual tree.
16145 2008-12-01  Jackson Harper  <jackson@ximian.com>
16147         * xaml.cpp: Value types can not have properties set on them.
16149 2008-12-01  Fernando Herrera  <fherrera@novell.com>
16151         * mediaelement.cpp:
16152         * mediaplayer.cpp:
16153         * pipeline.cpp:
16154         * playlist.cpp:
16155         * playlist.h: Implement Server side playlists. Still missing duration based
16156         constraints.
16158 2008-12-01  Alan McGovern  <amcgovern@novell.com>
16160         * border.h: ChildProperty should not be exposed
16162 2008-12-01  Alan McGovern  <amcgovern@novell.com>
16164         * frameworkelement.cpp: If a null value is being set to a DP when using
16165         databinding, clear the value instead. Makes test pass. (left this out
16166         of the last commit)
16168 2008-11-28  Alan McGovern  <amcgovern@novell.com>
16170         * binding.h:
16171         * cbinding.h:
16172         * binding.cpp:
16173         * cbinding.cpp:
16174         * frameworkelement.cpp: DataBinding now works for one-way, one-time and
16175         two-way bindings with managed objects.
16177 2008-11-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16179         * audio.cpp: Remove a print_stack_trace.
16181 2008-11-27  Andreia Gaita  <shana@jitted.com>
16183         * runtime.cpp: enable debug #if that was disabling the D key.
16185 2008-11-27  Alan McGovern  <amcgovern@novell.com>
16187         * frameworkelement.cpp: Fix some build breakage under the SL1 profile.
16189 2008-11-27  Alan McGovern  <amcgovern@novell.com>
16191         * binding.h:
16192         * cbinding.h:
16193         * binding.cpp:
16194         * cbinding.cpp:
16195         * frameworkelement.cpp: Allow the Binding class to be mapped between
16196         managed and unmanaged code.
16198 2008-11-26  Larry Ewing  <lewing@novell.com>
16200         * shape.cpp (Shape::IsCandidateForCaching): add more logic to
16201         avoid the cache in special cases.
16203 2008-11-26  Jackson Harper  <jackson@ximian.com>
16205         * xaml.cpp|h: clean up the managed/plugin interface, use Values
16206         for most things instead of expected DependencyObjects.
16207         * deepzoomimagetilesource.h|cpp: Add the uri property and a public
16208         constructor so we can parse these from attributes.
16209         * cbinding.h|cpp:
16210         * dependencyproperty.g.cpp: regen
16212 2008-11-26  Alan McGovern  <amcgovern@novell.com>
16214         * frameworkelement.cpp: Store a Value * rather than
16215         BindingExpressionBase in the bindings hashtable to allow
16216         GetLocalValue to work.
16218 2008-11-26  Alan McGovern  <amcgovern@novell.com>
16220         * frameworkelement.h:
16221         * dependencyobject.h:
16222         * frameworkelement.cpp: Styles are now used/ignored correctly when local
16223         values are set/unset. Added tests for this.
16225         * dependencyobject.cpp: GetLocalValueWithError should call GetLocalValue
16227         * shape.cpp: args->new_value will be null if DO.ClearValue has been
16228         called. In this case use DP.DefaultValue
16230 2008-11-26  Alan McGovern  <amcgovern@novell.com>
16232         * binding.h:
16233         * cbinding.h:
16234         * binding.cpp:
16235         * cbinding.cpp:
16236         * frameworkelement.h:
16237         * dependencyobject.h:
16238         * frameworkelement.cpp:
16239         * dependencyobject.cpp: Implement a basic ReadLocalValue equivalent for
16240         unmanaged code. Only handles databindings.
16242 2008-11-26  Alan McGovern  <amcgovern@novell.com>
16244         * binding.h:
16245         * cbinding.h:
16246         * binding.cpp:
16247         * cbinding.cpp:
16248         * frameworkelement.cpp: Rename the members of BidningExpressionBase to
16249         better reflect their actual usage.
16251 2008-11-26  Alan McGovern  <amcgovern@novell.com>
16253         * style.h:
16254         * style.cpp:
16255         * collection.h:
16256         * collection.cpp: InsertWithError should return a bool to match Insert
16258         * media.h:
16259         * media.cpp: Fix regression introduced in r119963 when changing which
16260         collection functions were virtual
16262 2008-11-25  Larry Ewing  <lewing@novell.com>
16264         * uielement.cpp (UIElement::FrontToBack): enable ftb on 90 degress
16265         rotations as well.
16267         * media.cpp (Image::GetCoverageBounds): be slightly smarter about
16268         computing coverage.
16270 2008-11-25  Geoff Norton  <gnorton@novell.com>
16272         * cbinding.(cpp|h): Regenerate
16273         * downloader.h: Expose the status code and status text to the
16274         DownloaderResponse object.
16276 2008-11-25  Alan McGovern  <amcgovern@novell.com>
16278         * style.h:
16279         * error.h:
16280         * style.cpp:
16281         * cbinding.h:
16282         * cbinding.cpp:
16283         * collection.h:
16284         * dependencyproperty.g.cpp: Added full support for sealing styles.
16286 2008-11-25  Stephane Delcroix  <sdelcroix@novell.com>
16288         * multiscaleimage.h: element_to_logical_point
16290 2008-11-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16292         * cbinding.cpp, cbinding.h: Regenerated.
16294 2008-11-24  Larry Ewing  <lewing@novell.com>
16296         * media.cpp (MediaBase::SetSource): only queue a tick if we need
16297         to, fixes regression on mediaelement downloaders.
16299         r:toshok
16301 2008-11-24  Larry Ewing  <lewing@novell.com>
16303         * mediaelement.cpp (MediaElement::GetCoverageBounds): be more
16304         precise about the coverage bounds.  Use the coveragebounds when
16305         invalidating based on position so that we don't invalidate a lot
16306         more area than we need to.  Only use CAIRO_FILTER_FAST when
16307         playing use the default when in other states.
16309 2008-11-24  Geoff Norton  <gnorton@novell.com>
16311         * media.cpp: If we do a SetSource on a image element with a 
16312         completed downloader, short circuit the async call, as the downloader
16313         theoretically can be immediately reused in javascript after the call.
16314         Also remove the internal completed event after its been fired, for the
16315         same reason (downloader reuse).  Fixes halo3
16316         
16317         r: lewing
16319 2008-11-24  Larry Ewing  <lewing@novell.com>
16321         * media.cpp, media.h: hide USE_OPT_RGB24 inside MOON_FORMAT_* use
16322         them where appropriate.
16324         * mediaplayer.cpp: use MOON_FORMAT_RGB.
16326 2008-11-24  Larry Ewing  <lewing@novell.com>
16328         * brush.cpp, brush.h: add IsAnimating member to indicate if the
16329         brush is expected to change each render tick.
16331         * shape.cpp: don't cache animating brushes.
16333 2008-11-22  Jeffrey Stedfast  <fejj@novell.com>
16335         * frameworkelement.cpp (FrameworkElement::SetBindingExpression):
16336         Set the destination element and property on the binding expression
16337         so that we can easily get at them in the callback when the source
16338         property changes. Instead of passing 'this' as the user_data
16339         argument to the property change handler, pass the expression.
16340         (FrameworkElement::BoundPropertyChanged): No longer need to
16341         iterate thru the hash table, we now are able to get all the info
16342         we need from the binding expression.
16343         (FrameworkElement::bound_property_changed): Updated.
16345 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
16347         * frameworkelement.cpp (FrameworkElement::BoundPropertyChanged):
16348         Implemented properly (I think/hope).
16350 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
16352         * binding.cpp (BindingExpressionBase::AttachListener): Now takes a
16353         callback and user data.
16354         (BindingExpressionBase::DetachListener): Now takes a callback.
16356         * frameworkelement.cpp (FrameworkElement::BoundPropertyChanged):
16357         Moved here from binding.cpp.
16358         (FrameworkElement::SetBindingExpression): Made protected instead
16359         of public.
16360         (FrameworkElement::GetBindingExpression): Same.
16362 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
16364         * frameworkelement.cpp: Fixed to build w/o SL2 support.
16366 2008-11-21  Larry Ewing  <lewing@novell.com>
16368         * brush.cpp (VideoBrush::SetupBrush): make sure we use the fast
16369         filter in videobrush when scaling.
16371         r: kangaroo
16373 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
16375         * binding.cpp (changed_cb): Implemented... but it's
16376         wrong. Committing anyay with a big FIXME explaining why it's
16377         wrong.
16379         * frameworkelement.cpp (FrameworkElement::SetBindingExpression):
16380         New method to set a binding expression for a property.
16381         (FrameworkElement::GetBindingExpression): Get the binding
16382         expression for a property.
16383         (FrameworkElement::SetValueWithErrorImpl): Cleaned up the binding
16384         stuff to make the logic a bit clearer.
16386 2008-11-21  Jeffrey Stedfast  <fejj@novell.com>
16388         * binding.cpp (BindingExpressionBase::AttachListener): We want to
16389         use AddPropertyChangeHandler(), not AddPropertyChangeListener() -
16390         we want to provide our own callback, not re-use
16391         OnSubPropertyChanged() for a purpose it wasn't meant for.
16393         * frameworkelement.cpp (FrameworkElement::OnSubPropertyChanged):
16394         #if 0'd out, we might not need this afterall.
16396         * panel.cpp (Panel::OnSubPropertyChanged): Reverted back to only
16397         chaining up if the property change wasn't handled.
16399         * text.cpp (Inline::OnSubPropertyChanged): Same.
16400         (TextBlock::OnSubPropertyChanged): Same.
16401         (Glyphs::OnSubPropertyChanged): Same.
16403 2008-11-21  Larry Ewing  <lewing@novell.com>
16405         * shape.cpp: disable custom layout code as it seems to have
16406         changed in 2.0 final.
16408 2008-11-21  Alan McGovern  <amcgovern@novell.com>
16410         * frameworkelement.cpp: If a style is already set, you cannot set it
16411         again.
16413 2008-11-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16415         * value.cpp, value.h, value.h.in: Added a npobj field and Value ctor to
16416           create such a Value.
16418 2008-11-21  Alan McGovern  <amcgovern@novell.com>
16420         * frameworkelement.cpp: Implement initial support for using a Style when
16421         it is present.
16423 2008-11-20  Jeffrey Stedfast  <fejj@novell.com>
16425         * text.cpp (Inline::OnSubPropertyChanged): Always chain up.
16426         (TextBlock::OnSubPropertyChanged): Always chain up.
16427         (Glyphs::OnSubPropertyChanged): Always chain up.
16429         * geometry.cpp (Geometry::OnSubPropertyChanged): Always chain up.
16431         * brush.cpp (Brush::OnSubPropertyChanged): Always chain up.
16433         * panel.cpp (Panel::OnSubPropertyChanged): Always chain up.
16435         * binding.cpp (BindingExpressionBase::GetValue): Implemented, but
16436         might not be correct.
16438         * frameworkelement.cpp (FrameworkElement::OnSubPropertyChanged):
16439         Stubbed out.
16441 2008-11-20  Jeffrey Stedfast  <fejj@novell.com>
16443         * binding.cpp (BindingExpressionBase::AttachListener): Now takes
16444         an FE argument as the listener.
16445         (BindingExpressionBase::DetachListener): Same.
16447         * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
16448         Fixed up a bit.
16450 2008-11-20  Alan McGovern  <amcgovern@novell.com>
16452         * src.mdp:
16453         * binding.h:
16454         * binding.cpp:
16455         * frameworkelement.cpp: Add more support code for databinding.
16457 2008-11-19  Geoff Norton  <gnorton@novell.com>
16459         * audio.cpp: If we fail to initialize pulseaudio, lets try alsa before
16460         giving up on media entirely.
16462         r: toshok
16464 2008-11-19  Jeffrey Stedfast  <fejj@novell.com>
16466         Note: the way this is abstracted will probably go thru several
16467         iterations of change.
16469         * frameworkelement.cpp (FrameworkElement::SetValueWithErrorImpl):
16470         Do special handling if setting a binding expression or if the
16471         value is replacing a binding expression.
16473         * dependencyobject.cpp (DependencyObject::IsValueValid): Made
16474         protected, no reason for this to be public.
16475         (DependencyObject::SetValueWithErrorImpl): New virtual method, has
16476         all the code logic of the old SetValueWithError().
16477         (DependencyObject::SetValueWithError): Call IsValueValid() and
16478         then SetValueWithErrorImpl().
16480 2008-11-19  Jeffrey Stedfast  <fejj@novell.com>
16482         * frameworkelement.cpp (FrameworkElement::IsValueValid):
16483         Overridden so that we can check if the Value is a
16484         BindingExpression. All DependencyProperties of FrameworkElements
16485         may be data-bound.
16487 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16489         * mediaplayer.h, mediaplayer.cpp: Make MediaPlayer use MediaElement's
16490           Rendered/DroppedFramesPerSecond DP.
16491         * pipeline.cpp: Fix warning.
16493 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16495         * dependencyproperty.g.cpp: Regenerated.
16496         * grid.h: ColumnDefinitionCollection doesn't have a public ctor.
16497         * mediaelement.h: Add RenderedFramesPerSecond, DownloadProgressOffset
16498           and DroppedFramesPerSecond.
16500 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16502         * cbinding.cpp, cbinding.h, dependencyproperty.g.cpp, text.h, type.h,
16503           type-generated.cpp, value.h: Added InputMethod.
16505 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16507         * geometry.cpp: Fix breakage in r119300.
16509 2008-11-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16511         * dependencyproperty.g.cpp, transform.h: Corcompare.
16512         * geometry.h: Move FillRule from Geometry to
16513           PathGeometry/GeometryGroup.
16515 2008-11-18  Jeffrey Stedfast  <fejj@novell.com>
16517         * expression.h, binding.cpp|h: added to the build
16519 2008-11-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16521         * animation2.h, dependencyproperty.g.cpp: Corcompare fixes.
16523 2008-11-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16525         * uielement.h: Define UseLayoutRounding accessors to unbreak build.
16527 2008-11-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16529         * dependencyproperty.g.cpp, frameworkelement.h, style.h, trigger.h,
16530           uielement.h: More corcompare work.
16532 2008-11-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16534         * cbinding.cpp, cbinding.h, trigger.h, type.h, type-generated.cpp,
16535           value.h: Add TriggerBase, make EventTrigger inherit from it and
16536           regenerate.
16538 2008-11-17  Jeffrey Stedfast  <fejj@novell.com>
16540         * enums.cpp (initialize_enums): Map BindingMode in unmanaged land.
16542 2008-11-17  Michael Dominic K.  <mdk@mdk.am>
16544         * clock.cpp: Fixing seek-test-multiple-repeat.html (a problem with multiple 
16545         repeats when seeking anims with RepeatBehavior >= 2.0).
16547 2008-11-17  Michael Dominic K.  <mdk@mdk.am>
16549         * clock.cpp: When running without idle hint (runtime init) do not apply it 
16550         here. Makes the idle hint switch actually do something and makes debugging
16551         easier.
16553 2008-11-14  Michael Dominic K.  <mdk@mdk.am>
16555         * animation.cpp:
16556         * animation.h: The KeySpline quadratics used to generate interpolation
16557         values are generated dynamically = faster and less mem.
16559 2008-11-14  Michael Dominic K.  <mdk@mdk.am>
16561         * animation.cpp:
16562         * animation.h: Slightly more nice value caching.
16564 2008-11-14  Geoff Norton  <gnorton@novell.com>
16566         * pipeline-ui.cpp:
16567         * codec-url.h:  Update to the final URLs for beta 1
16569         r: miguel
16571 2008-11-14  Geoff Norton  <gnorton@novell.com>
16573         * pipeline-ui.(cpp|h): Rework the pipeline for codec installation to 
16574         handle the pango markup we're using.
16576         r: miguel
16578 2008-11-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16580         * mediaelement.cpp: SetMedia: when getting the playlist for an
16581           asxdemuxer, set the media for it. Fixes a memory leak (the media
16582           should get disposed with the playlist gets disposed).
16583         * pipeline.cpp, pipeline.h: Implement ASXDemuxer::Dispose.
16584         * playlist.cpp, playlist.h: Implement Playlist[Entry]::GetTypeName, and
16585           add a parameter to PlaylistEntry::SetMedia to specify whether the
16586           entry should start playing the media or not.
16588 2008-11-13  Sebastien Pouliot <sebastien@ximian.com>
16590         * runtime.cpp (running_on_nvidia): Fix leak of Display
16591         r: kangaroo
16593 2008-11-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16595         * mediaelement.cpp: MediaElement::Play: we want to queue a PlayNow
16596           request even if we're currently playing, there might be a PauseNow
16597           request already queued.
16599 2008-11-11  Sebastien Pouliot <sebastien@ximian.com>
16601         * pipeline-asp.cpp: Fix case where get_audio_data returns NULL
16602         r: fer
16604 2008-11-11  Geoff Norton  <gnorton@novell.com>
16606         * Makefile.am: Only build the appropriate pipeline-ui based on wether
16607         we're building on a os/arch combo that supports the SMP.
16608         * codec-url.h: Set the appropriate CODEC_URL for our target platform
16609         * pipline-nocodec-ui.(cpp|h): New UI for unsupported OS/Arch targets
16610         of the codec install pipeline.
16612 2008-11-11  Geoff Norton  <gnorton@novell.com>
16614         * debug.h: Its unlikely that debug flags will be set.
16616         r: spouliot
16618 2008-11-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16620         * pipeline.cpp: IMediaStream::Dispose: delete our queue of frames.
16621           Plugs a memory leak.
16623 2008-11-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16625         * playlist.cpp: Playlist::Dispose: dispose all the items in our entries
16626           too.
16628 2008-11-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16630         * pipeline.cpp, pipeline.h: Plug a memory leak.
16632 2008-11-10  Geoff Norton  <gnorton@novell.com>
16634         * runtime.cpp: Do not enable debug features by default, and remove a 
16635         superflous warning.
16636         r: toshok
16638 2008-11-10  Geoff Norton  <gnorton@novell.com>
16640         * runtime.cpp: Force NVIDIA binary driver to go to the image backend
16641         to work around serious performance problems when we use accelerated
16642         rendering with it.
16643         r: toshok
16645 2008-11-10  Chris Toshok  <toshok@ximian.com>
16647         * runtime.cpp (copy_input_list_from_node): rename
16648         copy_input_list_with_visibility_check to this method.  the
16649         caller (HandleMouseEvent) already walks over the list to determine
16650         if an element has total render or hittest visibility == false.  By
16651         definition, everything before that in the input list (the input
16652         list is ordered from most deeply nested to the root) also has
16653         those == false, so we can short circuit things by traversing from
16654         the tail of the list, and then only copying the nodes we've seen
16655         before (but which come after) the offending one.
16657 2008-11-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16659         * mediaplayer.cpp, mediaelement.cpp, playlist.cpp, playlist.h,
16660           pipeline.cpp: Instead of calling Media::Dispose in MediaElement,
16661           move that to Playlist(Entry) and Dispose of the playlist instead.
16662           This makes re-playing already played content in playlists work
16663           again.
16665 2008-11-10  Michael Dominic K.  <mdk@mdk.am>
16667         * animation.cpp:
16668         * animation.h: Cache some vals internally in *Animation for better 
16669         performance in loop-called routines.
16671 2008-11-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16673         * audio.cpp, audio.h, mediaelement.cpp, mediaplayer.cpp, mediaplayer.h:
16674           Implement MediaElement.AudioStreamIndex.
16676 2008-11-07  Michael Dominic K.  <mdk@mdk.am>
16678         * clock.cpp: Fixing one broken block in the AnimationMatrix2 test. 
16679         It was broken but diff was too small to be picked by the test runner.
16681 2008-11-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16683         * pipeline-ffmpeg.cpp: FfmpegDecoder::DecodeFrame: for audio packets we
16684           need to keep decoding until the entire input has been consumed.
16686 2008-11-06  Geoff Norton  <gnorton@novell.com>
16688         * pipline(-ui).cpp: Move the codec location on more time.
16689         r: miguel
16691 2008-11-05  Michael Dominic K.  <mdk@mdk.am>
16693         * animation.cpp:
16694         * animation.h: Fixing one more mem-leak case. Fixes #436068.
16696 2008-11-06  Stephane Delcroix  <sdelcroix@novell.com>
16698         * downloader.h: change the signature of downloaderRequestFinishedHandler
16699         to pass the resulting uri.
16701         * downloader.cpp: validate the returned uri against redirection policies
16703         r:gnorton
16705 2008-11-05  Jeffrey Stedfast  <fejj@novell.com>
16707         Patches by Argiris Kirtzidis to fix bug #441687
16709         * audio.cpp: Use g_alloca() to create dynamically sized arrays on
16710         the stack rather than relying on g++ features.
16712         * clock.cpp: Applied MSVC portability patch which implements
16713         gettimeofday().
16715 2008-11-04  Fernando Herrera  <fherrera@novell.com>
16717         * mediaplayer.cpp: Add logging information about selected streams
16718         properties.
16720 2008-11-03  Jeffrey Stedfast  <fejj@novell.com>
16722         See tests/xaml/test-textblock-actualheight.html and
16723         test-textblock-hittest.html as compared with Microsoft
16724         Silverlight.
16726         * layout.cpp (TextLayout::Layout*): trailing LineBreak elements
16727         actually do count toward ActualHeight metrics.
16729 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16731         * audio-pulse.cpp: OnContextStateChanged: always print an error message
16732           if we fail to connect to pa daemon.
16734 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16736         * mediaelement.h, mediaelement.cpp: Add a MissingCodecs flag and don't
16737           invalidate when that flag is set.
16739 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16741         * runtime.cpp: get_flags: take the default flags as an argument, this
16742           way the environment variables can disable flags which are enabled
16743           by default.
16745 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16747         * pipeline-ui.cpp, runtime.h, runtime.cpp, pipeline.cpp: Only enable ms
16748           codecs by default for browsers.
16750 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16752         * mediaplayer.cpp: FrameCallback: If the frame couldn't be retrieved
16753           because of a buffer underflow and we're waiting for the initial
16754           frame, enqueue a request for another frame. Fixes #440317.
16756 2008-11-03  Larry Ewing  <lewing@novell.com>
16758         * rect.h (struct Rect): clamp the intersection w/h to 0 fixes some
16759         extreme exposure issues in popfly.
16761 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16763         * runtime.h: Remove #include <config.h> from headers
16765 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16767         * mp3.h, mp3.cpp: Mp3FrameReader::TryReadFrame: if we don't succeed in
16768           reading a header, try to sync to one. FindMpegHeader: Return proper
16769           error code (MEDIA_NO_MORE_DATA) if we can't read more data. Fixes
16770           #426440 (slideshow doesn't go beyond the first slide).
16772 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16774         * mediaelement.h, mediaelement.cpp: When a AutoPlay=False media is
16775           opened, the final state is Stopped, not Paused. When media finish,
16776           the final state is Paused, not Stopped. Fixes #365827.
16778 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16780         * audio-alsa.cpp: Add another dlopened symbol, fixes an unresolved
16781           external reference.
16783 2008-11-03  Fernando Herrera  <fherrera@novell.com>
16785         * audio-alsa.cpp:
16786         * audio-pulse.cpp:
16787         * audio.cpp:
16788         * audio.h:
16789         * debug.cpp:
16790         * debug.h:
16791         * dependencyobject.cpp:
16792         * downloader.cpp:
16793         * font.cpp:
16794         * http-streaming.cpp:
16795         * layout.cpp:
16796         * media.cpp:
16797         * mediaelement.cpp:
16798         * mediaplayer.cpp:
16799         * mms-downloader.cpp:
16800         * pipeline-asf.cpp:
16801         * pipeline-ffmpeg.cpp:
16802         * pipeline-ui.cpp:
16803         * pipeline.cpp:
16804         * playlist.cpp:
16805         * runtime.cpp:
16806         * runtime.h:
16807         * text.cpp:
16808         * textbox.cpp:
16809         * xaml.cpp:
16810         * yuv-converter.cpp: Change debug macros to runtime conditionals based
16811           on MOONLIGHT_DEBUG env variable of compile time. Checks are only
16812           enabled if configured with --with-debug=yes option.
16814 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16816         * debug.cpp: Don't dlopen mono, just link with it if -with-debug is
16817           specified.
16819 2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16821         * pipeline-ffmpeg.cpp: Revert r117547 and related.
16823 2008-11-02  Chris Toshok  <toshok@ximian.com>
16825         * text.cpp (TextBlock::InsideObject): textblocks are hit only in
16826         their ActualWidth/ActualHeight, not in the full bounding
16827         rectangle.  Fixes bug #434258.
16829 2008-10-31  Chris Toshok  <toshok@ximian.com>
16831         * runtime.h, runtime.cpp: remove transparency from properties of
16832         the surface
16833         (Surface::PaintToDrawable): add a @transparent argument to this
16834         method.
16836         * window-gtk.cpp (MoonWindowGtk::expose_event): pass the window's
16837         transparency to Surface::PaintToDrawable.
16839         * window.h: move the idea of transparency here from Surface.
16841 2008-10-31  Jeffrey Stedfast  <fejj@novell.com>
16843         Portability patch by Argiris Kirtzidis.
16845         * *.cpp: s/#if false/#if 0/g and s/#if true/#if 1/g
16847         * xaml.cpp (start_element): strchr() returns const.
16848         (repeat_behavior_from_str): Same.
16850 2008-10-31  Larry Ewing  <lewing@novell.com>
16852         * runtime.cpp (Surface::PaintToDrawable): instead of the content
16853         type check if active_window is fullscreen. This is uglier but the
16854         mozilla hands us rgb drawables not rgba drawables so until we have
16855         a better plan this will solve the problem.
16857 2008-10-31  Larry Ewing  <lewing@novell.com>
16859         * runtime.cpp (Surface::PaintToDrawable): only follow the
16860         transparent path if our target supports it.
16862 2008-10-31  Sebastien Pouliot  <sebastien@ximian.com>
16864         * pipeline-asp.cpp (ASFDemuxer::ReadHeader): Fix logic when skipping
16865         a bad stream so we dont include NULL holes streams[]
16867 2008-10-31  Michael Dominic K.  <mdk@mdk.am>
16869         * runtime.cpp: Reverting for now the recent crossing events 
16870         changes -- causes issues with Ink Journal.
16872 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16874         * pipeline.h, pipeline.cpp: Added IMediaStream::GetMediaTypeName.
16875         * mediaplayer.cpp: Use IMediaStream::GetMediaTypeName instead of
16876           complex ifs on the GetType return value.
16878 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16880         * debug.cpp: dlopen libmono too for our stack walking methods.
16882 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16884         * pipeline-ffmpeg.cpp: Don't use ffmpeg version defines which aren't
16885           present in older ffmpeg version (r10885).
16887 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16889         * pipeline-ffmpeg.cpp: DecodeFrame: free the frame after error
16890           conditions.
16892 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16894         * pipeline-ffmpeg.cpp: dlopen ffmpeg.
16896 2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16898         * pipeline.cpp: Fix warning (variable might be used uninitialized).
16900 2008-10-30  Jeffrey Stedfast  <fejj@novell.com>
16902         Fix for bug #435815.
16904         * stylus.cpp (StrokeCollection::AddedToCollection): Override so
16905         that we can avoid aborting if a stroke already has a logical
16906         parent (not an error for strokes).
16908         * error.h (MoonError::Clear): New convenience method.
16910 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16912         * libmoon.h: Fix build.
16914 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16916         * audio.cpp, brush.cpp, cbinding.h, dependencyproperty.g.cpp,
16917           Makefile.am, media.cpp, media.h, mediaelement.cpp, mediaelement.h,
16918           mediaplayer.cpp, mediaplayer.h, pipeline.cpp, type-generated.cpp,
16919           src.mdp, playlist.cpp: Split MediaElement out from media.[cpp|h]
16920           into its own mediaelement.[cpp|h].
16922 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16924         * type-generated.cpp, Makefile.am, media.h, mediaplayer.cpp,
16925           mediaplayer.h, mplayer.cpp, mplayer.h, src.mdp: Rename
16926           mplayer.[cpp|h] -> mediaplayer.[cpp|h].
16928 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16930         * cbinding.cpp, cbinding.h: Regenerated.
16932 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16934         * audio.cpp, audio-pulse.cpp, media.cpp, mms-downloader.h, mp3.cpp,
16935           mplayer.h, pipeline.cpp, pipeline.h, pipeline-asf.cpp,
16936           pipeline-asf.h, src.mdp, xaml.cpp: Move asf related bits from
16937           pipeline.[h|cpp] to pipeline-asf.[h|cpp].
16939 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16941         * pipeline.h: IMediaDemuxer: Add Source getter.
16942         * pipeline.cpp: IMediaDemuxer::GetLastAvailablePts: don't take into
16943           account streams which aren't selected. IMediaStream::AppendFrame:
16944           update last available pts with the frame's pts.
16945         * media.cpp: MediaElement::CalculateBufferingProgress: never use last
16946           available pts to calculate buffering progress for streams which can
16947           seek to directly to the requested pts. Fix math to check for
16948           negative values to avoid weird results.
16950 2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16952         * media.cpp, media.h: MediaElement: fix buffering progress after
16953           seeking regression - don't only use the buffer level in the
16954           pipeline to report buffering progress, but take into accout the
16955           point from where we seek.
16956         * mp3.h, mp3.cpp: Store the AudioStream in the frame reader and update
16957           the stream's LatestAvailablePts field whenever we read a frame.
16958           Also rename the previous 'stream' (IMediaSource*) field to 'source'
16959           to avoid confusion with AudioStream.
16960         * pipeline.cpp, pipeline.h: Add a last_available_pts field to
16961           IMediaStream and the corresponding GetLastAvailablePts to
16962           IMediaDemuxer, enabling the calculation of correct buffering
16963           progress after a seek. This also requires a codec abi version bump.
16965 2008-10-29  Sebastien Pouliot  <sebastien@ximian.com>
16967         * clock.h: Change MilliSeconds_[From|To]Pts to use the new
16968         PTS_PER_MILLISECOND define.
16969         * mplayer.cpp: Rework fix on GetTimeoutInterval to avoid a division
16970         resulting in zero (and the endless loop of #439631).
16972 2008-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16974         * mplayer.cpp: GetTimeoutInterval: Calculate timeout correctly. Fixes
16975           #439631.
16977 2008-10-28  Jeffrey Stedfast  <fejj@novell.com>
16979         * downloader.cpp (scheme_is): Check protocol non-null.
16980         (same_scheme): Same.
16982         * uri.cpp (Uri::Parse): If no protocol is found, init to NULL
16983         instead of file. Also make sure to parse the path in all valid
16984         cases.
16986 2008-10-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
16988         * mplayer.cpp: LoadVideoFrame: if target_pts is invalid, set 0 as
16989           target_pts.
16990         * media.cpp: AdvanceFrame: handle cases where position = -1 and don't
16991           do anything.
16993 2008-10-27  Jeffrey Stedfast  <fejj@novell.com>
16995         * uri.cpp (Uri::Parse): Do a bit better than just strchr() for ':'
16996         to parse out the uri scheme.
16998 2008-10-27  Jeffrey Stedfast  <fejj@novell.com>
17000         Performance optimization patch for bug #409793
17002         * stylus.cpp (Stroke::AddStylusPointToBounds): Modified to take a
17003         Rect bounds argument so that we can update a bounds of our
17004         choosing.
17005         (Stroke::ComputeBounds): Updated.
17006         (Stroke::OnCollectionChanged): Update our new 'dirty' bounds.
17007         (Stroke::OnCollectionItemChanged): Same.
17008         (InkPresenter::PostRender): Reset stroke dirty regions.
17009         (InkPresenter::OnCollectionItemChanged): Invalidate only the
17010         stroke's dirty region.
17012 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17014         * media.cpp: TryOpen: Don't try to open anything if downloaded_file is
17015           null.
17017 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17019         * mplayer.cpp: LoadVideoFrame: Don't check if buflen = 0, makes things
17020           work with ffmpeg.
17021         * pipeline-ffmpeg.cpp, pipeline-ffmpeg.h: CleanState: Properly clean
17022           up/reset codec. DecodeFrame: ffmpeg might delay output one frame,
17023           i.e. the decoder output is the input of the previous time we called
17024           avcodec_decode_video, so keep track of pts from previous frame and
17025           properly set pts of the decoded frame.
17027 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17029         * mplayer.cpp: LoadVideoFrame: show the frame if the end pts of the
17030           frame is above the target pts (previously we only showed the frame
17031           if the start pts was above the target pts, causing us to show one
17032           frame too late). Fixes test-asf-demuxer-shuffled-payloads.html.
17034 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17036         * media.cpp: MediaElement::Play: Call Play when in Opening state too.
17038 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17040         * mplayer.cpp: AdvanceFrame/GetCurrentPts: if the audio isn't playing
17041           we should just work as if there's no audio at all. The video might
17042           play after the audio has stopped if the a/v streams have different
17043           length.
17045 2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17047         * pipeline.cpp: Media::ClearQueue: delete the list nodes with the
17048           queue_mutex unlocked, since the node dtor may cause unrefs, causing
17049           other dtors to be called, and it may all end up in Media::Dispose
17050           which will then try to lock the mutex again (and deadlock).
17052 2008-10-24  Jeffrey Stedfast  <fejj@novell.com>
17054         * font.cpp (style_info_parse): Tokenize the style string so that
17055         the individual sub-parsers can be a bit smarter than than
17056         strstr().
17057         (style_width_parse): Made smarter - now handles lwsp between
17058         multi-word width specifiers (or no lwsp at all).
17059         (style_weight_parse): Same.
17061 2008-10-23  Larry Ewing  <lewing@novell.com>
17063         * media.cpp: remove compute bounds since it mirrors
17064         FrameworkElement now.
17066 2008-10-23  Larry Ewing  <lewing@novell.com>
17068         * shape.cpp, shape.h: remove origin fixup GetOriginPoint and
17069         GetSizeForBrush.
17071 2008-10-23  Jeffrey Stedfast  <fejj@novell.com>
17073         * textbox.cpp (TextBox::Paint): Updated.
17075         * text.cpp (TextBlock::Paint): Updated.
17077         * layout.cpp (TextLayout::Render): Swapped origin & offset
17078         arguments which feels more natural to me.
17080 2008-10-23  Sebastien Pouliot  <sebastien@ximian.com>
17082         * pipeline.cpp: (ASFDemuxer::ReadHeader): Don't allow video height or
17083         width over 2048 pixels since this is likely to be corrupted values.
17084         * pipeline.h: Define MAX_VIDEO_[HEIGHT|WIDTH] to 2048 (I'm sure that
17085         someday people will laugh at me for proposing such a small value)
17087 2008-10-23  Larry Ewing  <lewing@novell.com>
17089         * layout.cpp, layout.h: Change the Render api to drop the uielement argument. 
17091         * textbox.cpp:
17092         * text.cpp: call layout with the new arguments.
17093         
17094 2008-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17096         * mplayer.cpp: Pause: Don't set the SeekSynched flag. This would cause
17097           fast-forwarding video when seeking to a position which hadn't been
17098           downloaded (since we automatically pause the video then). Fixes
17099           #435908.
17101 2008-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17103         * mplayer.h, mplayer.cpp: Implement RenderedFramesPerSecond and
17104           DroppedFramesPerSecond. Only in SL 2.0, but very useful for
17105           debugging 1.0 too.
17107 2008-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17109         * pipeline.h, pipeline.cpp: Increase codec ABI version (IMediaStream
17110           changed size). IMediaStream: Remove msec_per_frame, it's already in
17111           VideoStream. VideoStream: make msec_per_frame be pts_per_frame to
17112           loose less precision.
17113         * mplayer.cpp: Calculate advance frame timeout based on video fps.
17115 2008-10-22  Chris Toshok  <toshok@ximian.com>
17117         * runtime.cpp (Surface::HandleUICrossing): disable the crossing
17118         check from r116528 in the case of a windowless plugin (where
17119         event->window == NULL).  Also, active_window->GetGdkWindow should
17120         never be trusted to return the actual window - it's use is
17121         strictly to find the screen/monitor for full-screening.  In the
17122         windowless case it returns the toplevel netscape window.
17124 2008-10-22  Larry Ewing  <lewing@novell.com>
17126         * brush.cpp, brush.h: remove the uielement references from the api
17127         pass the required information as a rect to SetupBrush instead.
17129         * shape.cpp, shape.h:
17130         * panel.cpp:
17131         * layout.cpp:
17132         * text.cpp:
17133         * uielement.cpp:
17134         * control.cpp:
17135         * broder.cpp: update SetupBrush callers for the new signature.
17137 2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17139         * audio.h, audio.cpp: AudioSource: Initialize last_write_pts and
17140           last_current_pts to their max value, to detect when they haven't
17141           been set yet. Properly reinitialize these variables (to their max
17142           values) in Stop, and make GetCurrentPts return G_MAXUINT64 for this
17143           case.
17144         * mplayer.cpp: AdvanceFrame: the audio might return G_MAXUINT64 for
17145           current pts, handle this. Fixes fast-forwarding issue in #435908.
17147 2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17149         * mp3.cpp: Mp3Demuxer::SeekInternal: Initialize result so that we don't
17150           use random memory if we don't have a reader.
17152 2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17154         * mms-downloader.cpp: Add logging methods.
17156 2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17158         * media.cpp: Sprinkle Dispose calls to plug leaks.
17160 2008-10-20  Chris Toshok  <toshok@ximian.com>
17162         * pipeline.cpp (Media::RegisterMSCodecs): free libmscodecs_path
17163         before reassigning (and reallocating memory for) it.
17165         * dependencyobject.h, dependencyobject.cpp: add an optional
17166         argument to all the EventObject::AddHandler* overloads, called
17167         data_dtor, which is invoked just before the EventClosure is
17168         destroyed so that the data can be freed.
17170 2008-10-20  Chris Toshok  <toshok@ximian.com>
17172         * window-gtk.h, window-gtk.cpp: move the Surface conversion from
17173         MouseCursor -> GtkCursor here.
17175         * runtime.h, runtime.cpp: surface only deals with MouseCursors
17176         anymore.  the gtk support is in window-gtk now.
17177         
17178         * window.h: remove SetCursor (GdkCursor) and add
17179         SetCursor (MouseCursor), so subclasses of MoonWindow can do their
17180         own thing.
17182 2008-10-20  Jeffrey Stedfast  <fejj@novell.com>
17184         * media.cpp (MediaElement::MediaOpened): If the stream decoder is
17185         null, use null for the decoder_name. Fixes a segfault.
17187 2008-10-20  Sebastien Pouliot  <sebastien@ximian.com>
17189         * pipeline.cpp (ASFDemuxer::ReadHeader): Don't count invalid streams
17190         since a lot of loops don't handle NULL values.
17192 2008-10-20  Michael Dominic K.  <mdk@mdk.am>
17194         * runtime.cpp: More fixes to crossing events: when entering fullscreen
17195         ignore the crossing events coming from previous window. Otherwise we get
17196         double enter/leave pair.
17198 2008-10-20  Michael Dominic K.  <mdk@mdk.am>
17200         * window-gtk.cpp: GetGdkWindow () - handle the fullscreen window case 
17201         correctly (no parent window).
17203 2008-10-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17205         * debug.h, pipeline.cpp, audio.cpp: #define print_stack_trace to
17206           nothing if not DEBUG is set, removing the need for surrounding all
17207           print_stack_trace calls with #if DEBUG.
17209 2008-10-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17211         * pipeline.cpp: Remove debugging code.
17213 2008-10-17  Michael Dominic K.  <mdk@mdk.am>
17215         * animation.cpp:
17216         * animation.h:
17217         * applier.h: Fixing one more osbcure case of Storyboard transitions where
17218         stopping a prev sboard makes the next one starting from bad base value.
17220 2008-10-17  Michael Dominic K.  <mdk@mdk.am>
17222         * runtime.cpp: Make sure we get the new pointer motion notify when 
17223         entering/leaving fullscreen. This fixes the fullscreen-enter-leave test 
17224         but interestingly doesn't fix the original problem of #434267.
17226 2008-10-17  Sebastien Pouliot  <sebastien@ximian.com>
17228         * runtime.cpp (Surface::PaintToDrawable): Don't leak cairo context
17229         when using "backend=image".
17231 2008-10-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17233         * pipeline.cpp: NullDecoder::OpenVideo: Fix comment (logo is centered
17234           now, not tiled), and fix inner loop, we were including one pixel
17235           too many for width and height.
17237 2008-10-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17239         * pipeline.cpp: RegisterMSCodecs: if there's no codec in
17240           ~/.mozilla/plugins, use just the filename of the codec library and
17241           make dlopen search for it. This makes it easier to run parallell
17242           tests from different revisions without having the codecs from each
17243           revision overwrite eachother in user's home.
17245 2008-10-16  Geoff Norton  <gnorton@novell.com>
17247         * pipeline.cpp: Dont tile our logo, it looks like ass.  Lets
17248         center it in the available window instead.
17250 2008-10-16  Geoff Norton  <gnorton@novell.com>
17252         * pipeline-ui.cpp: Avoid a resize when realizing which causes an
17253         annoying flicker in the codec window.
17255 2008-10-16  Geoff Norton  <gnorton@novell.com>
17257         * pipeline.cpp: Unbreak the world.
17259 2008-10-16  Geoff Norton  <gnorton@novell.com>
17261         * pipeline(-ui).cpp: Use the updated mscodec name and location.
17263 2008-10-16  Fernando Herrera  <fherrera@novell.com>
17265         * playlist.cpp: Fix a segfault parsing ASX3 malformed files.
17267 2008-10-16  Sebastien Pouliot  <sebastien@ximian.com> 
17269         * text.cpp (TextBlock::Layout): Delay allocation of List so that we
17270         don't leak when TextBlock::TextProperty is NULL.
17272 2008-10-16  Sebastien Pouliot  <sebastien@ximian.com>
17274         * runtime.cpp (Surface::SetCursor): Unref cursors once they are set
17275         on the window. Fix one more leak.
17277 2008-10-16  Jb Evain  <jbevain@novell.com>
17279         * collection.cpp: TriggerCollection, UIElementCollection, InlineCollection:
17280         mark managed constructor internal.
17282 2008-10-16  Jb Evain  <jbevain@novell.com>
17284         * collection.cpp (RemoveAtWithError): throw an ArgumentOutOfRangeException
17285         instead of an ArgumentException when providing an out of range index.
17287 2008-10-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17289         * window-gtk.cpp, window.h: Add file header and fix copy-paste error.
17291 2008-10-15  Chris Toshok  <toshok@ximian.com>
17293         * runtime.cpp (Surface::HandleUIKeyPress): check to see if the key
17294         is already down, and if so, don't emit another event.  (really?
17295         there's a test for this?  ugh.).  also, let Keyboard know the key
17296         is down.
17297         (Surface::HandleUIKeyRelease): let Keyboard know the key is up.
17299         * eventargs.h, eventargs.cpp (class Keyboard): augment Keyboard
17300         quite a bit -- it might soon deserve its own file.  It now
17301         maintains a static hashtable of keys that are pressed/released
17302         inside the moonlight plugin, and has logic to map a gdk keyval to
17303         Key, and query if a particular key is pressed.
17305 2008-10-15  Larry Ewing  <lewing@novell.com>
17307         * uielement.cpp: fix the transform ordering.
17309         * canvas.cpp, canvas.h: handle the toplevel canvas correctly.
17311 2008-10-15  Larry Ewing  <lewing@novell.com>
17313         * uielement.cpp, uielement.h: remove UpdatePosition and
17314         ComputePosition, all transform changes are handled in
17315         ComputeTransform now.
17317         * shape.cpp, shape.h: update for the new transform api.
17318         
17319         * dirty.cpp, dirty.h: remove DirtyPostion is it no longer needed.
17320         
17321         * canvas.cpp: Use UpdateTransform. 
17323         * point.h: add a (lame) == operator.
17324         
17325 2008-10-15  Larry Ewing  <lewing@novell.com>
17327         * geometry.cpp, geometry.h: add shape bounds caching to all
17328         geometry classes apply the transform when retrieving the bounds.
17329         Make GetBounds the public bounds interface and make the
17330         computation interface protected.
17332         * shape.cpp, uielement.cpp: call use GetBounds not ComputeBounds.
17334 2008-10-14  Larry Ewing  <lewing@novell.com>
17336         * geometry.cpp, geometry.h: remove unused arguments to
17337         ComputeBounds remove caching from PathGeometry.
17339         * uielement.cpp, shape.cpp: call with correct arguments.
17341 2008-10-14  Larry Ewing  <lewing@novell.com>
17343         * uielement.cpp, uielement.h: make ComputeTransform virtual and
17344         have it return a bool.
17346         * shape.cpp, shape.h: override ComputeTransform and optimize the
17347         bounds computations.  Use a general ComputeShapeBounds for actual
17348         drawn bounds compuations for now.
17349         
17350         * dirty.cpp (Surface::ProcessDownDirtyElements): add a short
17351         circuit path to DirtyTransform for elements that can recompute
17352         without updating bounds.
17354 2008-10-13  Larry Ewing  <lewing@novell.com>
17356         * geometry.cpp, geometry.h: remove unused arguments from function
17357         prototypes.
17358         
17359         * uielement.cpp, shape.cpp: update calls.
17360         
17361 2008-10-15  Jeffrey Stedfast  <fejj@novell.com>
17363         Fix for bug #435798
17365         * text.cpp (TextBlock::TextBlock): Let OnPropertyChanged() know
17366         that we are setting the default brush/inlines.
17367         (TextBlock::Layout): If no Text value has yet been set, use 0.0 as
17368         the actualHeight.
17370 2008-10-14  Chris Toshok  <toshok@ximian.com>
17372         * window-gtk.h, window-gtk.cpp (MoonWindowGtk::GetGdkWindow): ref
17373         the return value.
17374         (MoonWindowGtk::InitializeFullScreen): unref the return value of
17375         GetGdkWindow.
17377         * cbinding.h, cbinding.cpp: regen so we don't have to use void*
17378         for the parent parameter to MoonWindowGtk.
17380 2008-10-14  Sebastien Pouliot  <sebastien@ximian.com>
17382         * applier.cpp|h: Add a readonly flag to ensure nothing gets added in
17383         the hashtable while we're flushing it on shutdown. Add a few more
17384         checks and avoid re-creating the hashtable on flush.
17386 2008-10-14  Geoff Norton  <gnorton@novell.com>
17388         * pipeline-ffmpeg.cpp:  FFMpeg changed the API with version #52, no
17389         longer requiring the bits_per_pixel.
17391 2008-10-14  Stephane Delcroix  <sdelcroix@novell.com>
17393         * window.h: GetGdkWindow () method
17395         * window-gtk.h|.cpp: implement GetGdkWindow, new ctor signature
17396         taking the parent window reference. Only go fullscreen on the monitor
17397         moonlight is running on.
17399         * runtime.cpp: call the new MoonWindowGtk ctor
17401 2008-10-14  Fernando Herrera  <fherrera@novell.com>
17403         * pipeline-ui.cpp: Override codecs download URL with
17404         MOONLIGHT_CODEC_URL env variable if present.
17406 2008-10-13  Jeffrey Stedfast  <fejj@novell.com>
17408         * xaml.cpp (XamlLoader::CreateFromFile): Since we use the nread
17409         variable expecting it to be the value returned from read(), don't
17410         modify it inside the loop, use another variable for that. Before
17411         eating leading whitespace, make sure we have data.
17413 2008-10-13  Fernando Herrera  <fherrera@novell.com>
17415         * audio.cpp: Fix AudioSources::GetNext iteration for next playing
17416         source logic. Fixes bug #433267
17418 2008-10-13  Jeffrey Stedfast  <fejj@novell.com>
17420         * media.cpp (MediaElement::Play): Don't add a TickCall to start
17421         playing if we haven't even opened the media yet. Fixes bug
17422         #434462.
17424 2008-10-13  Michael Dominic K.  <mdk@mdk.am>
17426         * dependencyproperty.cpp: Fixing a mem leak.
17428 2008-10-13  Michael Dominic K.  <mdk@mdk.am>
17430         * animation.cpp: Reverting the whole attaching-to-prev storage in Begin. 
17431         This fixes some recent problems in PopFly.
17433 2008-10-10  Jeffrey Stedfast  <fejj@novell.com>
17435         * downloader.cpp (validate_policy): Made static so we don't export
17436         this symbol.
17438 2008-10-10  Sebastien Pouliot  <sebastien@ximian.com>
17440         * dependencyproperty.cpp (detach_target_func): Fix bad function 
17441         signature for GHFunc.
17442         * dependencyobject.cpp (unref_object): Fix bad function signature
17443         for GFunc.
17445 2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17447         * pipeline.h, pipeline.cpp: Media: Add a BufferingEnabled flag, don't
17448           start buffering until this is set to true (starts out as false).
17449         * media.cpp: Only enable buffering on the media after reading the
17450           markers, otherwise we may loose markers in the beginning of the
17451           media. Fixes test-asf-demuxer-big-markers.html. Also don't add a
17452           tick call to notify the MediaElement that a marker has been added,
17453           always check in AdvanceFrame.
17454         * mplayer.cpp: Add a null check in a printf.
17456 2008-10-10  Larry Ewing  <lewing@novell.com>
17458         * media.cpp (Image::DownloaderComplete): handle the case where the
17459         sureface uri and the new uri are the same.
17461 2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17463         * pipeline-logo.cpp: New logo.
17465 2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17467         * media.cpp: MediaElement::Reinitialize: Dispose the media to break
17468           cyclic refs.
17469         * mplayer.cpp: AdvanceFrame: don't decode here anymore, we shouldn't
17470           get non-decoded frames anymore. Open: Handle null demuxers,
17471           shouldn't happen, but at least we won't crash if it happens.
17472         * pipeline.cpp, pipeline.h: Media::~Media: move cleanup to Dispose.
17473           Media::Open: unref the decoder after giving it to the stream, the
17474           stream now take a ref on the decoder. Media::EnqueueWork:
17475           queued_requests might be nothing if we're disposed. IMediaStream:
17476           move cleanup to dispose and take a ref on the decoder. Add decoder
17477           getter/setters, and update code to use them.
17479 2008-10-10  Sebastien Pouliot  <sebastien@ximian.com>
17481         * applier.cpp: Fix another bad function signatures for GFunc.
17483 2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17485         * audio.cpp, pipeline-ffmpeg.cpp, pipeline.h, mplayer.cpp: Remove
17486           FRAME_COPY_DECODED_DATA and always copy decoded data. Fixes video
17487           stuttering when using ffmpeg.
17489 2008-10-09  Jackson Harper  <jackson@ximian.com>
17491         * runtime.cpp: The resize event is only emitted when switching
17492         from fullscreen to non fullscreen.
17494 2008-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17496         * pipeline.cpp, pipeline.h: Properly ref/unref MediaMarkers instead of
17497           deleting them.
17499 2008-10-09  Jackson Harper  <jackson@ximian.com>
17501         * runtime.cpp: When we change to/from fullscreen there should be a
17502         resize event.
17504 2008-10-09  Sebastien Pouliot  <sebastien@ximian.com>
17506         * media.cpp (Image::CreateSurface): Protect against a NULL
17507         filename (valid value). This will avoid crash like bug #433810
17508         even if, in this case, the problem lies elsewhere (bad downloader
17509         which looks related to #433814).
17511 2008-10-09  Jeffrey Stedfast  <fejj@novell.com>
17513         * font.cpp (FontFace::LoadDefaultFace): Pass the families to
17514         LoadDefaultFont() for font name comparison, we need to match the
17515         font names exactly or fall back to the next font.
17517 2008-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17519         * audio.cpp: Add a nullcheck.
17521 2008-10-08  Sebastien Pouliot  <sebastien@ximian.com>
17523         * media.cpp (Image::IsSurfaceCached): Don't leak (actually 
17524         don't dupe) uri.
17526 2008-10-08  Jeffrey Stedfast  <fejj@novell.com>
17528         * font.cpp: Add fallback for Liberation fonts.
17530         * pipeline.cpp (Media::Warning): Replacement for both
17531         Media::AddMessage() methods.
17533 2008-10-08  Sebastien Pouliot  <sebastien@ximian.com>
17535         * applier.cpp: Fix function signatures for GFunc and GHFunc.
17536         Fix random crash when closing silverlight world #433461
17538 2008-10-08  Larry Ewing  <lewing@novell.com>
17539         * window-gtk.cpp (MoonWindowGtk::realized): make sure we remove
17540         any existing render_cb attachments before adding new ones in case
17541         our realize wordering is out of sync.
17543         Fixes the rest of b.n.c #432975
17545 2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17547         * mp3.cpp: Fix boolean->MediaResult logic.
17549 2008-10-08  Jackson Harper  <jackson@ximian.com>
17551         * playlist.cpp|h: When we encounter invalid characters in an
17552         attribute try to patch them and reparse the document.
17554 2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17556         * mp3.h, mp3.cpp: Fix mpeg_frame_duration to use the static array of
17557           block sizes instead of hard-coded almost-matching values. Make
17558           mpeg_frame_length return a floating point value, and in ReadHeader
17559           calculate total duration using floating point. Fixes
17560           test-mp3-media-properties.html
17562 2008-10-08  Stephane Delcroix  <stephane@delcroix.org>
17564         * runtime.cpp: CAIRO_VERSION_XXX symbols no longer available in cairo
17565         1.8.0, changing the error msg.
17567 2008-10-08  Sebastien Pouliot  <sebastien@ximian.com>
17569         * xaml.cpp (XamlElementInstanceNative::SetProperty): Avoid SIGSEGV
17570         on bad XAML input when no (NULL) dependecy property is returned.
17572 2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17574         * pipeline.h, pipeline.cpp: Add a marker field to MediaFrame and make
17575           MediaMarker refcounted. Fix a couple of crashing leakfixes, and
17576           simplify cleanup code a tiny bit.
17578 2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17580         * audio-pulse.h: Remove unused method definition.
17582 2008-10-07  Jeffrey Stedfast  <fejj@novell.com>
17584         * animation.cpp (AnimationStorage::AttachToPrevStorage): Delete
17585         the old baseValue before allocating a new one.
17587         * mms-downloader.cpp (MmsDownloader::ProcessHeaderPacket): Need to
17588         delete dx_info when we're done with it. Also get rid of the
17589         unneeded parser pointer since we're just using this->parser
17590         anyway.
17592 2008-10-07  Sebastien Pouliot  <sebastien@ximian.com>
17594         * runtime.cpp (Surface::SetCursor): Don't create the GdkPixmap and
17595         GdkColor unless we need them. Unref the pixmap after the call to
17596         gdk_cursor_new_from_pixmap.
17598 2008-10-06  Jeffrey Stedfast  <fejj@novell.com>
17600         * pipeline.h (IMediaStream::dtor): Delete the frame. This prevents
17601         a MediaFrame leak-per-node whenever the queue is cleared.
17603         * pipeline.cpp (ASFMarkerDecoder::DecodeFrame): Free the
17604         frame->bufefr before updating it to point to a new malloc'd
17605         buffer.
17606         (ASFDemuxer::TryReadFrame): Delete the frame on error.
17607         (IMediaStream::PopFrame): After getting the node's frame, set the
17608         node->frame to NULL.
17610 2008-10-06  Larry Ewing  <lewing@novell.com>
17612         * media.cpp, media.h: rework image code to skip using a downloader
17613         when a cached image surface is available.  Fix a crash where
17614         multiple loading errors occur for a single image.  Rewrite
17615         existing SetSourceAsync ticks when the source changes again before
17616         the initial tick was processed.  
17618         The goal here is to greatly reduce the work we do in cases where
17619         existing sources are moved between images. Future work should
17620         consist of moving things to the ImageSource model internally.
17622 2008-10-06  Sebastien Pouliot  <sebastien@ximian.com> 
17624         * text.cpp (Glyphs::Layout): Handle NULL values coming from 
17625         GetGlyphInfo. Avoid crash in DRT #177 (not sure why it did 
17626         not come up before today or why it now fails anyway).
17628 2008-10-06  Jeffrey Stedfast  <fejj@novell.com>
17630         * brush.cpp (ImageBrush::TargetLoaded): Don't bother with g_atomic
17631         stuff, it's too expensive for what we need.
17632         (ImageBrush::TargetUnloaded): Same.
17634 2008-10-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17636         * dependencyobject.h, dependencyobject.cpp: Fix SLED10.
17638 2008-10-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17640         * pipeline.cpp: Reorganize some code.
17642 2008-10-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17644         * audio.cpp, audio.h: Access the Media directly to enqueue frames,
17645           avoiding the need for a tick call on the main thread. If audio
17646           underflowed and we don't have more data available, set buffer
17647           underflow flag on the media player.
17648         * playlist.cpp, playlist.h: Playlist::Parse: until the source has all
17649           the data available, return MEDIA_NOT_ENOUGH_DATA.
17650         * downloader.cpp, downloader.h: Remove RequestPosition methods, no
17651           longer needed.
17652         * mms-downloader.h, mms-downloader.cpp: Added Set|GetRequestedPts, and
17653           use that value to determine if we should seek or not.
17654         * mplayer.cpp, mplayer.h: Add a BufferUnderflow flag, set when
17655           audio/video needs more data, but the buffer is empty.
17656         * pipeline.cpp, pipeline.h: Media: Change how buffering works: we now
17657           have an in-memory buffer of demuxed frames (one queue for frames
17658           for each stream), and calculate buffer size from that.
17659           ProgressiveSource: open an additional file descriptor for writing,
17660           makes locking unnecessary. Change al io to return failure if there
17661           is not enough data, this allows us to remove all the
17662           blocking/waiting logic. MemoryQueueSource: push seeks to
17663           MmsDownloader, instead of waiting for MmsDownloader to check for
17664           pending seeks. FileSource: don't reinvent the wheel and use stdio
17665           to get buffered io instead of having buffering logic ourselves.
17666         * mp3.h, mp3.cpp: Implemented non-blocking reading to support buffer
17667           underruns correctly.
17668         * media.cpp: MediaElement: Retrieve buffer size from the demuxer
17669           instead of calculating it. Handle MEDIA_NOT_ENOUGH_DATA errors when
17670           trying to open media and retry later on.
17672 2008-10-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17674         * src.mdp: Updated.
17676 2008-10-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17678         * dependencyobject.cpp: Use atomic operations with
17679           objects_created|destroyed.
17681 2008-10-02  Chris Toshok  <toshok@ximian.com>
17683         * resources.cpp (glib_is_stupid): we need to cast value in order
17684         to delete it.
17686 2008-10-02  Geoff Norton  <gnorton@novell.com>
17688         * media.cpp,pipeline-ffmpeg.cpp,yuv-converter.cpp,mplayer.cpp:
17689         Add some headers needed to compile when #undef DEBUG
17691 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com> 
17693         * xaml.cpp:  Fix mixup between delete and g_free
17695 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com>
17697         * value.cpp: Fix == for KeyTime (padding too). Add comments and
17698         indent method correctly.
17700 2008-10-02  Jeffrey Stedfast  <fejj@novell.com>
17702         * xaml.cpp: Move the definition of XamlElementInfo to the top so
17703         that g++ doesn't complain about deleting an incomplete type inside
17704         the XamlElementInstance dtor. Also gets rid of other g++ compiler
17705         warnings.
17707         * list.cpp (List::InsertAfter): New convenience function to sort
17708         of balance the API.
17710         * font.cpp (FontFace::Load): Don't ref the default face, it is
17711         returned to us with a ref already.
17713 2008-10-02  Jackson Harper  <jackson@ximian.com>
17715         * xaml.cpp: Now that Info's aren't shared, Instance's can free
17716         them.  Also properties need to free their name.
17718 2008-10-02  Larry Ewing  <lewing@novell.com>
17720         * geometry.cpp (Geometry::OnSubPropertyChanged): move
17721         OnSubPropertChanged to Geometry to pick up transform changes until
17722         a better solution is devised.  Fixes updated
17723         test-clip-invalid-update.htm.
17725 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com>
17727         * value.cpp: Fix == for Duration and RepeatBehavior. We can't
17728         use memcmp to compare them since they include (unassigned)
17729         padding. Both structs overrides their == operator so we use that.
17731 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com> 
17733         * resources.cpp: Free the values (not only their content) when
17734         the hash table is destroyed. Correctly (delete) free the value
17735         when compiled against glib < 2.12 (e.g. SLED10).
17737 2008-10-02  Sebastien Pouliot  <sebastien@ximian.com>
17739         * geometry.cpp: Remove last patch to GeometryGroup::Draw as this
17740         mess clipping. Add similar fill rule setting code in Geometry::Draw
17741         because Shape::Fill is not called for clipping (but the fill rule
17742         still applies). Comment both so I don't mess with them again :)
17744 2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
17746         * font.cpp (FontFace::LoadGlyph): We need to force the font size
17747         if we don't own it, since we don't know what the current size is
17748         set to.
17749         (FontFace::Kerning): Same.
17750         (FontFace::GetExtents): Here too.
17752 2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
17754         Attempt #2 at fixing bug #430766.
17756         * font.cpp (FontFace::LoadFontFace): Don't load non-scalable fonts
17757         - this helps us do better fallback for bug #430766.
17758         (FontFace::LoadDefaultFace): Do manual fallback of fonts. First
17759         try to use the Microsoft Lucida Sans font if available. If not,
17760         fall back to GNOME's Bitstream Vera Sans font. Then fallback to
17761         DejaVu Sans and finally to X.Org's Luxi Sans font (which doesn't
17762         render many of the glyphs in bug #430766, hence why it is last
17763         choice). If the user doesn't have the X.Org fonts, he's SOL.
17765 2008-10-01  Sebastien Pouliot  <sebastien@ximian.com>
17767         * value.h[.in],value.cpp: Fix operator == to work for non-DO and
17768         non-string values. This fix the issue of removing stuff from a
17769         ResourceDictionary (while a copy still exists in the underlying
17770         Collection).
17772 2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
17774         Attempt #1 at fixing bug #430766.
17776         * font.cpp (FontFace::LoadDefaultFace): Pass NULL as the families
17777         argument to LoadFontFace() so that we don't fail when matching the
17778         loaded family name.
17780 2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
17782         * font.cpp (FontFace::OpenFontDirectory): Now a static class
17783         method.
17784         (FontFace::LoadFontFace): New static method which tries to load an
17785         FT_Face given an FcPattern and a list of families.
17786         (FontFace::FontFace): No longer tries to load an FT_Face, instead
17787         we have it passed to us as an argument.
17788         (FontFace::LoadDefaultFace): New static method to load a global
17789         FT_Face representing the default system font.
17790         (FontFace::GetDefault): Instantiates a new FontFace using the
17791         global system default FT_Face.
17792         (FontFace::Load): Now takes only a TextFontDescription (much
17793         cleaner/simpler). If we are loading the default system font or if
17794         loading the requested font fails, simply return a new FontFace
17795         based on the global system default FT_Face.
17796         (TextFont::TextFont): Now takes fewer arguments (cleaner API,
17797         yay!).
17798         (TextFont::Load): Now only takes a TextFontDescription argument to
17799         make the API simpler/cleaner.
17800         (TextFontDescription::CreatePattern): Now public and takes a
17801         'sized' argument specifying whether or not the created pattern
17802         should include the size field. This is needed because TextFont
17803         caches based on all attributes while FontFace caches on everything
17804         but size. Also, don't include weight, width, or slant if our font
17805         family is the default (Portable User Interface is not allowed to
17806         have any of those attributes).
17807         (TextFontDescription::IsDefault): New method to decide if our
17808         family is the default or not.
17809         (TextFontDescription::GetFamilies): New convenience method to
17810         strsplit the family string into an array.
17811         (TextFontDescription::SetFamily): If the value "Portable User
17812         Interface" is set, set our family to NULL instead.
17814 2008-10-01  Sebastien Pouliot  <sebastien@ximian.com>
17816         * geometry.cpp (GeometryGroup::Draw): Make sure the original
17817         fill rule is still in effect at the end of drawing the group.
17819 2008-10-01  Chris Toshok  <toshok@ximian.com>
17821         * geometry.cpp (GeometryGroup::Draw): reinstate the call to
17822         cairo_set_fill_rule removed in r105643.  This fixes
17823         http://mapul.com/Tutorials.html.
17825 2008-10-01  Sebastien Pouliot  <sebastien@ximian.com>
17827         * shape.cpp: (Shape::InsideObject) Move cairo_save after the 
17828         extents.PointInside check since there was no cairo_restore
17829         if false was returned. Looks likely that false was not much
17830         returned (if ever).
17832 2008-09-30  Chris Toshok  <toshok@ximian.com>
17834         * stylus.cpp (Stroke::OnCollectionItemChanged): we need to
17835         recompute our bounds when an item (can only be a stylus point)
17836         changes its properties.  Fixes stroke bounds in the face of
17837         dragging text in inkjournal.
17839 2008-10-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17841         * audio-pulse.cpp, audio-pulse.h: Don't use callbacks with
17842           pa_stream_[cork|trigger|flush|drain] since the audio source might
17843           have gotten deleted by the time the callback is called.
17845 2008-09-30  Chris Toshok  <toshok@ximian.com>
17847         * dirty.cpp (Surface::ProcessDownDirtyElements): use
17848         AddDirtyElement instead of |= to set flags, since it might require
17849         dirty list manipulation.
17851 2008-09-30  Sebastien Pouliot  <sebastien@ximian.com>
17853         * xaml.cpp: Fix (again) the leaks in dependency_object_add_child, 
17854         this time with new/delete to make it work with non-DO.
17856 2008-09-30  Sebastien Pouliot  <sebastien@ximian.com> 
17858         * xaml.cpp: Better fix for the leaks in dependency_object_add_child.
17860 2008-09-30  Sebastien Pouliot  <sebastien@ximian.com>
17862         * xaml.cpp: Fix leak in dependency_object_add_child when AddWithError
17863         returns false.
17865 2008-09-30  Stephane Delcroix  <sdelcroix@novell.com>
17867         * downloader.cpp: fix the leak in validate_policy.
17869 2008-09-30  Sebastien Pouliot  <sebastien@ximian.com>
17871         * debug.cpp: Make sure allocated 'binary' is freed in every case
17872         inside addr2line_offset.
17874 2008-09-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17876         * audio-alsa.cpp: Close the pcm in the dtor, not in Close. Refcounting
17877           ensures that the dtor won't be called while playing or that we'll
17878           be playing destructed sources, but Close might be called at any
17879           time.
17881 2008-09-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
17883         * pipeline.cpp: NullDecoder::DecodeAudioFrame: protected against int
17884           underflows and /0 errors.
17886 2008-09-29  Chris Toshok  <toshok@ximian.com>
17888         * dependencyobject.cpp (DependencyObject::RegisterAllNamesRootedAt):
17889         if during the course of traversing the tree, we come across a temp
17890         namescope, merge that up instead of recursing down even further.
17891         (DependencyObject::SetLogicalParent): only clear the namescope if
17892         we're merging ourselves into a parent namescope.
17894         * canvas.cpp (Canvas::Canvas): remove the temp namescope creation
17895         here.  the parser does it for us if we're parsing an element, and
17896         programmatically created objects don't seem to have them.
17898 2008-09-29  Jeffrey Stedfast  <fejj@novell.com>
17900         * media.cpp (MediaBase::GetDownloaderPolicy): New virtual method
17901         to get the download policy based on the uri. By default, returns
17902         MediaPolicy.
17903         (MediaElement::GetDownloaderPolicy): Return StreamingPolicy if
17904         mms://
17905         (MediaBase::SetAllowDownloads): Use GetDownloaderPolicy() instead
17906         of hardcoding mms:// check.
17907         (MediaBase::OnPropertyChanged): Same.
17909         * brush.cpp (ImageBrush::SetSurface): Remove previous hack.
17910         (ImageBrush::TargetLoaded): Call SetAllowDOwnloads(true) on our
17911         image once we have at least 1 target which is loaded in the visual
17912         tree.
17913         (ImageBrush::TargetUnloaded): Disallow image downloads once our
17914         loaded_count falls back to 0.
17915         (ImageBrush::AddTarget): Listen to the target's Loaded/Unloaded
17916         events.
17917         (ImageBrush::RemoveTarget): Remove our listeners for the Loaded
17918         and Unloaded events placed on the target object.
17920         * uielement.cpp (UIElement::ClearLoaded): Emit an UnloadedEvent.
17922         * dependencyobject.cpp (DependencyObject::SetValueWithError): Call
17923         AddTarget()/RemoveTarget() on DO property values as they are
17924         set/unset.
17925         (DependencyObject::AddTarget): New virtual method which gets
17926         called on DependencyObject property values when they are set on a
17927         target.
17928         (DependencyObject::RemoveTarget): Same but when unset.
17930         * media.cpp (MediaBase::SetAllowDownloads): New method to handle a
17931         state-change of allowing new downloads vs not.
17932         (MediaBase::OnLoaded): Call SetAllowDownloads(true).
17934 2008-09-29  Jeffrey Stedfast  <fejj@novell.com>
17936         * brush.cpp (ImageBrush::SetSurface): Update the image's Loaded
17937         state. Fixes some regressions introduced by moving the async
17938         downloading logic from MediaBase::SetSurface() into
17939         ImageBase::OnLoaded().
17941 2008-09-29  Sebastien Pouliot  <sebastien@ximian.com>
17943         * pipeline-ffmpeg.cpp: Free extradata, if allocated, on failure.
17945 2008-09-28  Chris Toshok  <toshok@ximian.com>
17947         * xaml.cpp (XNamespace::SetAttribute): don't both RegisterName and
17948         SetValue (NameProperty) - just set the NameProperty, it'll update
17949         the proper namescope automatically.
17950         (get_parent): remove.
17951         (set_parent): remove.  we no longer need to maintain a temporary
17952         chain while parsing.  there's also no need for set_parent(NULL)
17953         anywhere.
17954         (XamlElementInstance::TrySetContentProperty): if there was an
17955         error in DependencyObject::SetValueWithError or
17956         Collection::AddWithError, raise a parser error.
17957         (dependency_object_add_child): call
17958         Collection/ResourceDictionary::AddWithError, and raise a
17959         parser_error if it fails.  also, remove set_parent (NULL) calls.
17961         * dependencyobject.h,
17962         dependencyobject.cpp (DependencyObject::MergeNameScopes): remove.
17963         (DependencyObject::RegisterAllNamesRootedAt): this now takes a
17964         MoonError argument so we can signal when there's been a conflict.
17965         (DependencyObject::SetLogicalParent): this also now takes a
17966         MoonError argument, and this is where ALL the namescope merging
17967         code lives.  It's been removed from everywhere else.  Also, this
17968         change means we can no longer be setting/clearing the parent in
17969         xaml.cpp, as it destroys temp namescopes.
17971         * namescope.h, namescope.cpp (NameScope::MergeTemporaryScope): add
17972         a MoonError parameter, so we can communicate back an
17973         error (conflicting names) properly.
17974         (NameScope::Dump): new method.
17975         
17976         * collection.h, collection.cpp (Collection::AddWithError): new
17977         method, generate a binding for this instead of Add.  This allows
17978         us to check for name conflicts when a DOCollection is updated.
17979         (Collection::InsertWithError): same.  Also, this method has
17980         something quirky about it - it calls AddedToCollection *before*
17981         the collection is modified.  suck, but the logic in that code
17982         needs to be run before the change occurs.
17983         (Collection::AddedToCollection): add a MoonError arg so we can
17984         properly pass errors back up.
17985         (DependencyObjectCollection::RegisterAllNamesRootedAt): add the
17986         MoonError arg.
17987         (DependencyObjectCollection::AddedToCollection,
17988         DependencyObjectCollection::RemovedFromCollection): remove
17989         namescope handling from here.
17990         
17991         * animation.h,
17992         animation.cpp (KeyFrameCollection::AddedToCollection): track api
17993         change to Collection::AddedToCollection.
17995         * resources.h, resources.cpp: track changes to AddedToCollection,
17996         RegisterAllNamesRootedAt, and AddWithError.  Also, remove
17997         namescope handling code from here.
17999         * cbinding.cpp, cbinding.h, type-generated.cpp: regen.
18000         
18001 2008-09-28  Chris Toshok  <toshok@ximian.com>
18003         * geometry.cpp (Geometry::OnPropertyChanged): this method was
18004         never chaining up to DependencObject::OnPropertyChanged, which it
18005         must do for properties whose ownerType != Geometry.
18007 2008-09-28  Chris Toshok  <toshok@ximian.com>
18009         * media.cpp (TimelineMarkerCollection::Add): no need to check the
18010         element type of the value, by the time it makes it here it should
18011         already be the right type.
18013 2008-09-26  Jeffrey Stedfast  <fejj@novell.com>
18015         * media.cpp (MediaBase::OnLoaded): Logic moved here from
18016         SetSurface().
18017         (MediaBase::OnPropertyChanged): Check IsLoaded() to see if we
18018         should start the downloader yet.
18020         * xaml.cpp: Revert the hydrating check for SetSurface() from the
18021         previous commit. This is causing a bunch of failures :(
18023 2008-09-26  Jeffrey Stedfast  <fejj@novell.com>
18025         * xaml.cpp (XamlLoader::HydrateFromString): Properly initialize
18026         parser_info->hydrating and parser_info->hydrate_expecting based on
18027         whether or not we are really doing a HydrateFromString() vs
18028         CreateFromString().
18029         (create_element_info_from_imported_managed_type): Only
18030         SetSurface() if we are hydrating.
18031         (XamlElementInstanceNative::CreateItem): Same.
18032         (XamlElementInfoManaged::CreateElementInstance): Here too.
18033         (XamlElementInfoManaged::CreateWrappedElementInstance): And here.
18034         (XamlElementInfoManaged::CreatePropertyElementInstance): And here...
18035         (XamlElementInfoImportedManaged::CreateElementInstance): Same.
18036         (XamlElementInfoImportedManaged::CreateWrappedElementInstance): And here.
18037         (XamlElementInfoImportedManaged::CreatePropertyElementInstance): Here too.
18039 2008-09-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18041         * dependencyobject.cpp, dependencyobject.h: Make objects_created and
18042           objects_destroyed thread-safe. Added MOONLIGHT_OBJECT_TRACK_TYPE to
18043           track a specific type, might be useful when the id varies from run
18044           to run. Make Dispose public.
18045         * media.cpp: Reinitialize: Dispose the downloaded_file if we're being
18046           destructed.
18047         * pipeline.cpp, pipeline.h: Implement MemoryQueueSource::Dispose, and
18048           cleanup properly there instead of in the dtor. This breaks a
18049           circular reference between ASFPacket/ASFDemuxer/MemoryQueueSource.
18051 2008-09-26  Stephane Delcroix  <sdelcroix@novell.com>
18053         * downloader.cpp: use StreamingPolicy for streaming
18055 2008-09-25  Jeffrey Stedfast  <fejj@novell.com>
18057         * runtime.cpp (Surface::ShowFullScreenMessage): Don't use
18058         g_str_has_prefix() on NULL strings.
18060 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18062         * pipeline.cpp: RegisterMSCodecs: Don't duplicate that much code, and
18063           only print messages to stdout if MOONLIGHT_OVERRIDES=codecs=debug.
18065 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18067         * downloader.cpp: validate_policy: Fix boolean logic according to
18068           comment, fixes crash.
18070 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18072         * media.cpp: Plug one more leak.
18074 2008-09-25  Stephane Delcroix  <sdelcroix@novell.com>
18076         * downloader.cpp: neforce security policies on Open ()
18078 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18080         * pipeline.cpp, pipeline.h: Added Media::IsMSCodecsInstalled, and look
18081           for the mp3 codecs in libmscodecs.so, libmscodecs-mp3.so doesn't
18082           exist anymore.
18084 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18086         * pipeline-ui.cpp: AdaptToParentWindow: free the toplevels list.
18088 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18090         * downloader.cpp: Fix a potential leak.
18092 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18094         * dependencyobject.cpp: DependencyObject::RemoveListener: We need to
18095           delete the listener link, not only remove it. Plugs a leak.
18097 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18099         * audio-pulse.h, clock.h, layout.h, pipeline.h, template.h,
18100           yuv-converter.h: Sprinkle virtual on some destructors.
18102 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18104         * internal-downloader.h, file-downloader.h, mms-downloader.h: Fix
18105           another leak.
18107 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18109         * audio-pulse.cpp: Another leak plugged.
18111 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18113         * debug.cpp: Fix stack traces.
18115 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18117         * audio-pulse.cpp: Add a missing unref.
18119 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18121         * pipeline-ui.cpp: Store libmscodecs.so in ~/.mozilla/plugins.
18123 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18125         * pipeline-ui.cpp: Hush.
18127 2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18129         * pipeline.cpp, pipeline.h: Added an abi_version to codec registration
18130           functions.
18132 2008-09-24  Aaron Bockover  <abockover@novell.com>
18134         * pipeline-ui.cpp: 
18135         * pipeline-ui.h: Redesigned the dialog to conform to the GNOME HIG 
18136         in regards to header messages, detail messages, spacing, padding, and
18137         button layout; use a GtkDialog instead of a GtkWindow, and take all
18138         input through the dialog's response signal; require the user to explicitly
18139         tell us that they never want to see the installer again instead of 
18140         assuming on cancel; fix crash when cancelling while downloading
18142 2008-09-24  Jeffrey Stedfast  <fejj@novell.com>
18144         * dependencyproperty.cpp (resolve_property_path): Fixicated.
18146 2008-09-24  Sebastien Pouliot  <sebastien@ximian.com>
18148         * pipeline.cpp: Fix a valgrind complaint when a NULL parameter is 
18149         given to g_file_test 
18151 2008-09-24  Jeffrey Stedfast  <fejj@novell.com>
18153         * dependencyproperty.cpp (resolve_property_path): Cleaned up the
18154         code, robustified, and fixed bug #429396.
18156 2008-09-24  Sebastien Pouliot  <sebastien@ximian.com>
18158         * dependencyproperty.cpp: Fix SIGSEGV when parsing something that
18159         does not exists.
18160         [Fix bug #429396]
18162 2008-09-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18164         * pipeline-ui.cpp, pipeline-ui.h: UI to download and install codecs.
18165         * pipeline-logo.cpp, pipeline-logo.inc: Renamed pipeline-logo.inc to
18166           pipeline-logo.cpp and made it an extern variable to avoid
18167           duplicating the entire image in the binary for every time we want
18168           to use it.
18169         * pipeline.cpp, pipeline.h: RegisterMSCodecs: Read the path to ms
18170           codecs from our configuration, and always register ms codecs first
18171           in the list. NullDecoder: fix a buffer overrun and update according
18172           to pipeline-logo changes.
18173         * moonlightconfiguration.cpp, moonlightconfiguration.h: Added: a class
18174           to store our configuration.
18175         * media.cpp: MediaElement::MediaOpened: if any of the streams is
18176           handled by a nulldecoder, it means we don't have ms codecs
18177           installed. If so, show the codec downloader UI.
18178         * Makefile.am, src.mdp: Updated.
18180 2008-09-23  Chris Toshok  <toshok@ximian.com>
18182         * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
18183         back out (#if false) this change for now.
18185 2008-09-23  Stephane Delcroix  <sdelcroix@novell.com>
18187         * runtime.h|cpp: Surface::GetSourceLocation()
18189 2008-09-23  Sebastien Pouliot  <sebastien@ximian.com>
18191         * uielement.cpp: Delete the temporary region before returning on an
18192         invisible element (common in defiwind).
18194 2008-09-22  Chris Toshok  <toshok@ximian.com>
18196         * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
18197         another case we hadn't addressed - if the object we're merging
18198         *from* doesn't have a namescope, we iterate over the entire tree,
18199         registering names into our (possibly temporary, if it didn't exist
18200         before) namescope.  Fixes firstfloorsoftware.com (bug #425268).
18202         * xaml.cpp (XamlElementInstanceNative::CreateItem): fix memory
18203         leak.
18205 2008-09-22  Jeffrey Stedfast  <fejj@novell.com>
18207         * dependencyobject.cpp (merge_namescope): Return the parent_ns so
18208         that our caller doesn't have to call FindNameScope() in case it
18209         was created.
18210         (DependencyObject::MergeTemporaryNameScopes): Adjust for above API
18211         change.
18213 2008-09-22  Larry Ewing  <lewing@novell.com>
18215         * geometry.cpp (Geometry::Draw): fix the transform brokeness that
18216         crept in.  Fixes test-geometry-transform.xaml
18218 2008-09-22  Michael Dominic K.  <mdk@mdk.am>
18220         * animation.cpp:
18221         * clock.cpp:
18222         * clock.h: 0-time animations are valid (as in: passing the timeline
18223         validation test) but do nothing. Fixes the clock11 test.
18225 2008-09-22  Michael Dominic K.  <mdk@mdk.am>
18227         * animation.cpp:
18228         * animation.h: Attach storage only once. Fixes a crash in clock21.html.
18230 2008-09-19  Jeffrey Stedfast  <fejj@novell.com>
18232         Fix for bug #427560
18234         * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
18235         Use FindNameScope() to get the scope to merge into, and only call
18236         this once - don't re-get it ever loop.
18238 2008-09-19  Jeffrey Stedfast  <fejj@novell.com>
18240         * dependencyobject.cpp (EventObject::AddXamlHandler): New method
18241         to add a handler from XAML so that we can force the listener token
18242         to be 0, like Silverlight does.
18244 2008-09-19  Michael Dominic K.  <mdk@mdk.am>
18246         * animation.cpp:
18247         * animation.h: Attach the storage to the prev storage on the
18248         partuclar AnimationClock/Storage Begin, not when the parent
18249         storyboard begins. That fixes: #412074 .
18251 2008-09-19  Stephane Delcroix  <sdelcroix@novell.com>
18253         * src/downloader.cpp:
18254         * src/downloader.h: DownloadAccessPolicy enum, used as dl.Open
18255         argument. Drop downloder_open method.
18256         * src/media.cpp:
18257         * src/playlist.cpp:
18258         * src/deepzoomimagetilesource.cpp:
18259         * src/text.cpp: use the new Open with the corresponding policy.
18261 2008-09-19  Sebastien Pouliot  <sebastien@ximian.com>
18263         * media.cpp: Reduce the pixbuffer leaks on popfly.com. The biggest
18264         offenders are gone now but it's still leaking in a few cases.
18266 2008-09-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18268         * pipeline.cpp: MediaFrame::~MediaFrame: Free the buffer before calling
18269           any custom Cleanup methods (allowing the Cleanup method to free
18270           buffer if g_free isn't the way to do it).
18272 2008-09-18  Jeffrey Stedfast  <fejj@novell.com>
18274         Fixes bug #410619.
18276         * dependencyobject.cpp (class EventLists): Init current_token to
18277         1. Popfly uses a token of 0 to mean no-listener (sorta like gtk
18278         apps use 0 to mean that a g_signal is not connected).
18280 2008-09-18  Geoff Norton  <gnorton@novell.com>
18282         * media.cpp: Stop leaking pixbuf loaders.
18284 2008-09-18  Sebastien Pouliot  <sebastien@ximian.com>
18286         * mp3.cpp: Need to g_strdup the "mp3" string or we could crash when
18287         g_free-ing it later.
18289 2008-09-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18291         * pipeline.cpp: Check for register_mswmv in libmscodecs.so, and honor
18292           RUNTIME_INIT_CODECS_DEBUG.
18293         * runtime.h, runtime.cpp: Add a runtime init flag to print codec debug
18294           info.
18296 2008-09-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18298         * src.mdp: Updated.
18299         * pipeline.cpp, pipeline.h: Add a generic null decoder, shows a
18300           moonlight logo for video and plays silence for audio.
18301         * mp3.cpp, mp3.h: Remove NullMp3Decoder, no longer needed.
18302         * mplayer.cpp: RenderFrame: take stride into account when blitting rgb
18303           data.
18304         * pipeline-logo.inc: Added.
18306 2008-09-17  Larry Ewing  <lewing@novell.com>
18308         * border.cpp:
18309         * control.cpp:
18310         * grid.cpp:
18311         * frameworkelement.cpp: start filling in InvalidateArrange and
18312         InvalidateMeasure calls.
18314         * panel.cpp:
18315         * panel.h:
18316         * canvas.h:
18317         * canvas.cpp (Canvas::OnCollectionItemChanged): move the ZIndex
18318         change handling here from panel since it is a Canvas property.
18320 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18322         * pipeline.h: Remove some dead code.
18324 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18326         * runtime.h, runtime.cpp: Instead of having a flag to enable ms codecs,
18327           add flags to disable both ffmpeg and ms codecs and include them by
18328           default.
18329         * pipeline.cpp: register_mscodecs: look for libmscodecsmp3.so too
18330           (until it gets integrated in libmscodecs.so), and register the mp3
18331           codec. Media::Initialize: Update according to runtime init flag
18332           changes, and always register null encoders.
18334 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18336         * pipeline.cpp, runtime.cpp, runtime.h: Add a runtime override to not
18337           delete downloaded media files.
18339 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18341         * dependencyobject.cpp: Add TODO.
18343 2008-09-17  Jackson Harper  <jackson@ximian.com>
18345         * xaml.cpp: Don't try setting the content prop in managed if there
18346         is no cdata content (we're just dealing with spaces).
18348 2008-09-17  Larry Ewing  <lewing@novell.com>
18350         * grid.cpp (Grid::MeasureOverride): fix the span accumulators to
18351         use the right index value.
18353 2008-09-17  Sebastien Pouliot  <sebastien@ximian.com>
18355         * frameworkelement.cpp: Fix moon-unit SIGSEGV when unreferencing
18356         SizeChangedEventArgs.
18358 2008-09-17  Michael Dominic K.  <mdk@mdk.am>
18360         * clock.cpp:
18361         * clock.h: Separate raising events from raising completed events. 
18362         In certain clock hierarchies this would cause us to emit completed event
18363         before raising animation setter events.
18365         * applier.cpp: Enabling the applier again.
18366         * applier.h: Animation resets don't have INSTANT precedence. The just 
18367         have higher precedence than normal animation setters.
18369 2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18371         * audio-pulse.cpp: Remove stray characters.
18373 2008-09-16  Chris Toshok  <toshok@ximian.com>
18374         
18375         * dirty.h, dirty.cpp: add DirtyMeasure/DirtyArrange.
18377         * frameworkelement.h, frameworkelement.cpp
18378         (FrameworkElement::UpdateLayout): override
18379         UIElement::UpdateLayout, and if that base class method returns
18380         true, emit LayoutUpdatedEvent.
18382         * uielement.h, uielement.cpp (UIElement::InvalidateMeasure): add
18383         DirtyMeasure.
18384         (UIElement::InvalidateArrange): add DirtyArrange.
18385         (UIElement::DoMeasure): this should drive the measure process -
18386         needs filling in, though.
18387         (UIElement::DoArrange): this should drive the arrange
18388         process. same.
18389         (UIElement::UpdateLayout): change return type to bool.  call
18390         DoMeasure and DoArrange synchronously, and return true if we
18391         arrange.
18393         * runtime.cpp (Surface::Attach): call InvalidateMeasure on the new
18394         toplevel.
18396         * cbinding.h, cbinding.cpp: regen.
18398 2008-09-16  Larry Ewing  <lewing@novell.com>
18400         * clock.cpp: make AddTimeout take a priority. Make the render
18401         timeout slightly lower than default so that we process gdk events
18402         before rendering.
18404         * media.cpp: raise the priority of the media timeout so that it
18405         doesn't drop below default or the render tick.
18407 2008-09-16  Chris Toshok  <toshok@ximian.com>
18409         * dirty.h, dirty.cpp: add a priority queue-like setup for the
18410         dirty lists, where priority == level in the visual hierarchy.
18411         Processing the down dirty list proceeds from lower "priority" to
18412         higher, and the up dirty list proceeds from higher to lower.
18413         * runtime.h, runtime.cpp: use the new dirty lists.
18415         * uielement.h, uielement.cpp: add a visual_level field, which is
18416         updated when the element is added to the
18417         hierarchy (this->visual_level = parent->visual_level + 1).
18419 2008-09-16  Jackson Harper  <jackson@ximian.com>
18421         * xaml.cpp: keys should be a property of the instance.
18423 2008-09-16  Fernando Herrera  <fherrera@novell.com>
18425         * pipeline.cpp: Register MS codecs if MOONLIGHT_OVERRIDES
18426           has codecs=microsoft.
18427         * runtime.h: Do not default to RUNTIME_INIT_MICROSOFT_CODECS
18428           in RUNTIME_INIT_BROWSER.
18430 2008-09-16  Jackson Harper  <jackson@ximian.com>
18432         * xaml.cpp: Move cdata handling code into the content property
18433         setters, allow managed content property setters to set values from
18434         strings.
18436 2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18438         * audio-pulse.cpp: dlsym another method previously forgotten.
18440 2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18442         * multiscaleimage.h, textbox.h: Use quotes to include our headers.
18444 2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18446         * audio-alsa.cpp: Use dlopen/dlsym to access all alsa methods, and
18447           don't link with alsa anymore
18449 2008-09-16  Jb Evain  <jbevain@novell.com>
18451         * template.h (TemplateBinding): decorate with a SLVersion=2.
18453 2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18455         * audio-pulse.cpp: Use dlopen/dlsym to access all pa methods, and don't
18456           link with pulseaudio anymore. Hopefully fixes #425560.
18458 2008-09-16  Fernando Herrera  <fherrera@novell.com>
18460         * asf/asf-structures.h:
18461         * asf/asf.cpp:
18462         * asf/asf.h:
18463         * mplayer.h:
18464         * pipeline.h: Don't use relative paths in #includes.
18465         * Makefile.am: Add -Iasf
18467 2008-09-15  Michael Dominic K.  <mdk@mdk.am>
18469         * src/applier.cpp: Disabling the applier for now, it seems there are still
18470         some tiny 'issues' with it.
18472 2008-09-15  Chris Toshok  <toshok@ximian.com>
18474         * dependencyobject.h, dependencyobject.cpp: add real
18475         PropertyChange callbacks (so we can implement listeners without
18476         the listener being a dependencyobject - which is nice for
18477         TemplateBindings, which don't need all that overhead.)
18478         
18479         * template.h, template.cpp: switch over to using this new listener
18480         interface.
18482 2008-09-15  Chris Toshok  <toshok@ximian.com>
18484         * xaml.cpp (dependency_object_set_attributes): add the
18485         TemplateBinding to the item, not the containing template.
18487 2008-09-15  Larry Ewing  <lewing@novell.com>
18489         * applier.h: really disable the applier to make changes instant,
18490         fixes page turn and the test regressions.
18492         * applier.cpp: ref and unref the object to avoid crashes on
18493         popfly.
18495 2008-09-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
18497         * src.mdp: Updated with new files.
18499 2008-09-12  Larry Ewing  <lewing@novell.com>
18501         * grid.cpp (Grid::Measure): accumulate colspan width and pass
18502         pixel size restrictions on to the children.
18504 2008-09-11  Michael Dominic K.  <mdk@mdk.am>
18506         * animation.cpp:
18507         * applier.cpp:
18508         * applier.h: Adding some defines for applier precedences + a way
18509         to instant apply with precedence == 0.
18511 2008-09-10  Michael Dominic K.  <mdk@mdk.am>
18513         * clock.cpp: Properly emit the Completed event after the properties have
18514         been applied.
18516 2008-09-09  Michael Dominic K.  <mdk@mdk.am>
18518         * animation.cpp:
18519         * applier.cpp: Removing debug messages, adding proper free code.
18521 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
18523         * animation.cpp:
18524         * animation.h:
18525         * applier.cpp: Do not set the values, instead move them to applier. 
18527 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
18529         * applier.cpp:
18530         * clock.cpp:
18531         * clock.h:
18532         * runtime.cpp:
18533         * runtime.h: Moving the Applier instance to TimeManager.
18535 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
18537         * runtime.cpp:
18538         * runtime.h: Adding Applier to Surface.
18540 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
18542         * applier.cpp:
18543         * applier.h: Adding a basic Flush method, totally bad for now.
18545 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
18547         * applier.cpp:
18548         * applier.h: Adding basic Apply function that applies all the changes
18549         to objects.
18551 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
18553         * applier.cpp:
18554         * applier.h: Adding basic method to add property to apply on object.
18556 2008-09-08  Michael Dominic K.  <mdk@mdk.am>
18558         * Makefile.am:
18559         * applier.cpp:
18560         * applier.h: Introducing the applier helper class. Will be used 
18561         to apply property changes in order.
18563 2008-09-11  Jackson Harper  <jackson@ximian.com>
18565         * xaml.cpp: Move some of the content property setting logic into
18566         the XamlElementInstance's.
18568 2008-09-11  Stephane Delcroix  <sdelcroix@novell.com>
18570         * multiscaleimage.cpp: draw a pattern that should look like
18571         a MSI (currently still wrong)
18573 2008-09-10  Jeffrey Stedfast  <fejj@novell.com>
18575         * text.h (class Run): Apparently Run's TextProperty is internal in
18576         managed-land.
18578 2008-09-10  Larry Ewing  <lewing@novell.com>
18580         * border.cpp:
18581         * frameworkelement.cpp:
18582         * shape.cpp, shape.h:
18583         * canvas.cpp: update to pass the new more extensive tests.
18585 2008-09-10  Larry Ewing  <lewing@novell.com>
18587         * size.h:  Tweak to match updated tests.
18589 2008-09-09  Chris Toshok  <toshok@ximian.com>
18591         * style.h (class Setter): make ValueProperty's PropertyType
18592         'object' instead of 'Managed'.
18594         * template.cpp (FrameworkTemplate::AddXamlBinding): make this a
18595         little more bulletproof.
18596         (ControlTemplate::DuplicateObject): XamlTemplateBinding can return
18597         NULL, don't create a TemplateBindingNode (and add it to the list)
18598         in that case.
18600         * type.h.in (class Type): remove OBJECT - it gets autogenerated
18601         now.
18603         * xaml.cpp (start_element): we need to set inst->parent before
18604         setting the attributes, as the attributes might include a
18605         StaticResource (or TemplateBinding) that requires us to walk back
18606         up the tree.
18607         (XamlElementInfoNative::CreateElementInstance): create a
18608         XamlElementInstanceTemplate if the type is a subclass of
18609         FRAMEWORKTEMPLATE.
18610         (dependency_object_set_attributes): return out of this after
18611         adding the templatebinding (so we don't end up in the managed xaml
18612         loader code trying to set properties to "{TemplateBinding ...}"
18613         Also, if the property type is OBJECT, call into the loader (like
18614         we do with MANAGED), and fix the logic check on
18615         p->loader->SetAttribute in that case.
18617         * type.h, type-generated.cpp: regen.
18619 2008-09-09  Sebastien Pouliot  <sebastien@ximian.com>
18621         * xaml.cpp: Don't unref NULL collections. Fix regression when
18622         parsing invalid points (or doubles).
18624 2008-09-08  Chris Toshok  <toshok@ximian.com>
18626         * xaml.h, xaml.cpp: stopgap before jackson gets the completely
18627         managed approach to managed object parsing going.  a few key
18628         changes:
18630         1) xaml_load_managed_object takes an out bool
18631         parameter (is_dependency_object) so the managed code can create
18632         non-DO subclasses, and then the parser will pass that GCHandle
18633         back to managed code in set_attribute.
18635         2) added an add_child callback to the loader so that managed DO
18636         subclasses (and non-subclasses) can deal with collection
18637         properties.  theres no ContentProperty handled in managed code,
18638         yet.
18640 2008-09-08  Geoff Norton  <gnorton@novell.com>
18642         * audio-*.(cpp|h): The Alsa code requires us to join the play
18643         thread before we remove the audio sources otherwise we can 
18644         end up in a race accessing closed pcm's when shutting down.
18646 2008-09-08  Geoff Norton  <gnorton@novell.com>
18648         * audio.cpp: Ensure that we dont enter an infinite loop before
18649         we actually start playing a source.
18651 2008-09-08  Larry Ewing  <lewing@novell.com>
18653         * frameworkelement.cpp: make things 1.0 safe.
18655 2008-09-08  Larry Ewing  <lewing@novell.com>
18657         * frameworkelement.cpp (FrameworkElement::Arrange): rework to
18658         match some of the Measure logic
18660         * border.cpp:
18661         * canvas.cpp, canvas.h:
18662         * control.cpp, control.h: rework arrange implementation to match
18663         the measure logic and the current thinking on arrange.
18665         * uielement.cpp, uielement.h: expose render_size accessor.
18667 2009-09-08  Stephane Delcroix  <sdelcroix@novell.com>
18669         * tilesource.h|cpp: keep the source and tiles info on the c++ side
18671         * multiscaleimage.cpp: draw a cairo pattern instead of nothing
18673 2008-09-08  Larry Ewing  <lewing@novell.com>
18675         * grid.cpp: Chain collection changed up properly.
18677 2008-09-07  Larry Ewing  <lewing@novell.com>
18679         * thickness.h (struct Thickness): add +/-/- to thickness to clean
18680         up some of the other code.
18682         * rect.h: remove ShrinkBy now that we can negate thickness
18684         * size.h: clean things and make GrowBy stop at 0 now that we can
18685         deal with thickness addition outside of things.
18687         * canvas.cpp:
18688         * frameworkelement.cpp: 
18689         * control.cpp:
18690         * border.cpp: subtract the padding and border thickness from
18691         available size before passing it to children.  Handle some corner
18692         cases in measure with ugly hacks.
18693         
18694 2008-09-07  Larry Ewing  <lewing@novell.com>
18696         * canvas.cpp, canvas.h:         
18697         * control.cpp, control.h:
18698         * border.cpp:
18699         * grid.cpp:
18700         * panel.cpp, panel.h: refactor MeasureOverride to return the size of the
18701         actual contents.
18703         * frameworkelement.cpp: Make measure pre and post condition the
18704         output rather than doing it in the overrides themselves.
18706         * size.h: make sure min/max will never set a known size to NAN.
18708 2008-09-07  Chris Toshok  <toshok@ximian.com>
18710         * type.h.in: add OBJECT kind.
18712         * type.h, cbinding.h, cbinding.cpp, type-generated.cpp: regen.
18714 2008-09-06  Chris Toshok  <toshok@ximian.com>
18716         * value.cpp (Value::CreateUnref): don't use 'Foo foo = Foo(args);'
18717         - instead use 'Foo foo(args)'.  the former creates 2 objects to
18718         the latter's 1.
18720         * media.cpp (MediaElement::GetValue): same.
18722         * uielement.cpp: same.
18724         * error.h, error.cpp (class MoonError): make this a class instead
18725         of a struct, add a default ctor, remove Dispose and use ~MoonError
18726         instead, add FillIn methods that take a "code" as well as an
18727         ErrorType to support the parser.
18729         * dependencyobject.h, dependencyobject.cpp: some api cleanup - get
18730         rid of GError and use MonoError exclusively, move the internal
18731         EventLists/EventList types to the .cpp file.  Also, remove a few
18732         redundant methods on DependencyObject.  The hit at call sites is
18733         negligable (one additional line, perhaps), and the call sites are
18734         few and far between.
18736         * xaml.cpp (dependency_object_set_attributes)
18737         (dependency_object_set_property): call
18738         DependencyObject::SetValueWithError.
18740         * animation.cpp (KeyFrameCollection::GetKeyFrameForTime): look up
18741         the property here.  the DO api is gone.
18743 2008-09-06  Chris Toshok  <toshok@ximian.com>
18745         * grid.h, grid.cpp: flesh out some of the
18746         OnPropertyChanged/OnSubPropertyChanged/OnCollectionChanged stuff.
18747         Also add in a completely broken and unfinished MeasureOverride
18748         implementation.  It passes some of the tests, but not for the
18749         right reasons :) Lastly, move the GridUnitType enum to enums.h
18751         * enums.h: move GridUnitType here, and rename its elements to have
18752         a "GridUnitType" prefix.
18754         * xaml.cpp: track GridUnitType enum references.
18756         * dependencyproperty.g.cpp: fix up attached properties getters to
18757         return default values if there is one.
18759 2008-09-05  Jeffrey Stedfast  <fejj@novell.com>
18761         * text.cpp (TextBlock::OnPropertyChanged): TextAlignment doesn't
18762         actually change the lauout, so no need to set the dirty flag when
18763         it changes.
18764         (TextBlock::Layout): Updated to handle Silverlight 2.0 TextBlock's
18765         Padding property.
18766         (TextBlock::Paint): Same.
18768 2008-09-05  Larry Ewing  <lewing@novell.com>
18770         * uielement.cpp: use render bounds rather than bounds to determine
18771         if we have something to draw.
18773         * stylus.h, stylus.cpp: remove the EmptyBackground method.
18775         Fixes the annotation regression in page turn (again).
18776         
18777 2008-09-04  Larry Ewing  <lewing@novell.com>
18779         * uielement.h (class UIElement): generate managed accessors for
18780         the subtree hack.
18782 2008-09-04  Chris Toshok  <toshok@ximian.com>
18784         * xaml.cpp (dependency_object_add_child): add code here for
18785         FrameworkTemplate, call SetVisualTree with the child.
18787         * control.cpp (Control::Control): init bindings.
18788         (Control::~Control): unref applied_template and delete bindings.
18789         (Control::ApplyTemplate): make sure we return false here from a
18790         few error places (NULL template, a template with a NULL
18791         visual_tree.)
18793         * template.cpp (FrameworkTemplate::FrameworkTemplate): init
18794         visual_tree to NULL.
18795         (FrameworkTemplate::~FrameworkTemplate): unref visual_tree.
18796         (FrameworkTemplate::SetVisualTree): new method, set visual_tree
18797         and ref it.
18798         (ControlTemplate::DuplicateObject): we need to special case a
18799         couple of classes (collections, templates) in order to traverse
18800         them.. ugh.
18801         (ControlTemplate::Apply): if the visual_tree is null, don't try to
18802         copy it.
18804         * template.h (class FrameworkTemplate): add SetVisualTree method
18805         for the parser.
18807 2008-09-04  Larry Ewing  <lewing@novell.com>
18809         * uielement.cpp, uielement.h: new methods GetSubtreeObject and
18810         ElementAdded ElementRemoved.
18812         * dependencyobject.h: remove ContentAdded, ContentRemoved.
18813         
18814         * collection.cpp, collection.h: rename ContentWalker to
18815         VisualTreeWalker use GetSubtreeObject () rather than content for walking.
18817         * template.cpp, template.h: make Apply return the newly created
18818         tree.
18820         * panel.cpp, panel.h:
18821         * control.cpp, control.h: add template_root child that isn't
18822         hooked into the normal tree.  Start implementing ApplyTemplate and
18823         GetTemplateChild.
18825         * usercontrol.cpp: mess around with Content a little in making it
18826         use the ElementAdded ElementRemoved logic since UserControl
18827         doesn't really support template changes.
18828         
18829         * border.h: implement GetSubtreeObject. 
18831         * stylus.cpp:
18832         * dirty.cpp:
18833         * frameworkelement.cpp:
18834         * canvas.cpp, canvas.h: update for new treewalker.
18836 2008-09-04  Jeffrey Stedfast  <fejj@novell.com>
18838         * layout.cpp (TextLayout::Render): Added some new arguments which
18839         aren't actually used yet but will be eventually (assuming I
18840         continue with this approach).
18842         * textbox.cpp (TextBox::Paint): Don't bother painting the
18843         background, control does this for us.
18845 2008-09-04  Stephane Delcroix  <sdelcroix@novell.com>
18847         * tilesource.h, deepzoomimagetilesource.h|.cpp: move the dzits in its
18848         own file, implement the downloader.
18850 2008-09-03  Chris Toshok  <toshok@ximian.com>
18852         * dependencyobject.h: as much as i hate this, add
18853         GetCurrentValues() for the template stuff.
18855         * xaml.cpp: add XamlElementInstanceTemplate and initial support
18856         for TemplateBindings.
18858         * template.h, template.cpp: add a bunch of stuff for templates.
18860         * control.h, control.cpp: add OnLoaded and OnPropertyChanged to
18861         watch for template property changes, and apply the template in
18862         OnLoaded (or if we're already loaded).  Also, add accessors for
18863         TemplateProperty.
18865         * dependencyproperty.g.cpp: regen.
18867 2008-09-03  Larry Ewing  <lewing@novell.com>
18869         * frameworkelement.cpp (FrameworkElement::MeasureOverride): use
18870         the new Size methods.
18872         * border.cpp, border.h: add some initial (broken) rendering
18873         support, rework measure to use some of the new rect and size
18874         methods.
18876 2008-09-03  Jeffrey Stedfast  <fejj@novell.com>
18878         * textbox.cpp (TextBox::OnPropertyChanged): When the AcceptsReturn
18879         property chanegs, no need to re-layout or invalidate - according
18880         to my little test program, Silverlight 2 Beta 2 does not change
18881         the rendered text when this property changes - any newlines in the
18882         input text stay there.
18884 2008-09-03  Sebastien Pouliot  <sebastien@ximian.com> 
18886         * resources.cpp: (ContainsKey) Don't crash if a null key is
18887         supplied. (Remove) same. (Add) same.
18889 2008-09-03  Jeffrey Stedfast  <fejj@novell.com>
18891         * enums.cpp (initialize_enums): Map Horizontal and
18892         VerticalScrollBarVisibility properly.
18894         * textbox.cpp (TextBox::CalcActualWidthHeight): Removed, I don't
18895         think we need this for TextBox controls since their
18896         ActualWidth/Height aren't based on the text extents afaik.
18897         (TextBox::Paint): Implemented, sorta.
18899 2008-09-03  Chris Toshok  <toshok@ximian.com>
18901         * resources.cpp (ResourceDictionary::Clear): add pre-glib 2.12
18902         code.
18904 2008-09-03  Larry Ewing  <lewing@novell.com>
18906         * uielement.cpp, uielement.h: 
18907         (UIElement::FrontToBack): Make FrontToBack non-virtual and move
18908         the generic logic here.
18910         * control.cpp, control.h:
18911         * panel.cpp, panel.h: Remove ftb logic, everything is handled in
18912         uielement now.
18914 2008-09-03  Larry Ewing  <lewing@novell.com>
18916         * uielement.cpp, uielement.h: 
18917         * media.cpp, media.h:
18918         * panel.cpp, panel.h:
18919         * shape.cpp, shape.h: Add GetCoverageBounds virtual method
18920         to let elements compute their own opaque coverage.
18922 2008-09-03  Stephane Delcroix  <sdelcroix@novell.com>
18924         * multiscaleimage.h|.cpp: new MultiScaleImage type
18926 2008-09-02  Chris Toshok  <toshok@ximian.com>
18928         * resources.h, resources.cpp: constify this.
18929         (ResourceDictionary::Remove): fix g_hash_table_lookup_extended
18930         logic.
18932         * xaml.cpp (XamlElementInstance::LookupNamedResource): implement
18933         resource lookups.
18934         (dependency_object_set_attributes): add support for StaticResource
18935         lookups.  going to refactor all this to add support for
18936         TemplateBinding.
18938 2008-09-02  Jeffrey Stedfast  <fejj@novell.com>
18940         * eventargs.h (class CollectionChangedEventArgs): Implemented
18941         accessor methods to get/set the event arg values.
18943         * trigger.cpp (EventTrigger::SetTarget): Fixed to not need to
18944         strdup the event_name string and also updated to use an accessor
18945         method to prevent a possible NULL dereference.
18947 2008-09-02  Michael Dominic K.  <mdk@mdk.am>
18949         * animation.cpp:
18950         * animation2.h: Reworking the animation hookup storage fix. Checking for
18951         subclass is plain dumb. Just make an exception for ObjectAnimation.
18953 2008-09-02  Michael Dominic K.  <mdk@mdk.am>
18955         * animation.cpp: Fixing a problem in animation hookup 
18956         storage -- the type/kind that the animation generates has to be the subclass
18957         of the type/kind the target property is ready to accept.
18959 2008-09-01  Stephane Delcroix  <sdelcroix@novell.com>
18961         * multiscalesubimage.h: fixing code generation decorators
18963 2008-09-01  Stephane Delcroix  <sdelcroix@novell.com>
18965         * multiscalesubimage.h: new type
18967 2008-08-29  Jeffrey Stedfast  <fejj@novell.com>
18969         * layout.cpp (TextLayout::LayoutWrap): Keep track of when 'words'
18970         end so that we can fall back to that position as the line
18971         width (we don't want to include trailing spaces unless
18972         underlined).
18973         (TextLayout::Render): If the line width is greater than the
18974         allowable width, keep the line left-aligned like Silverlight does.
18976 2008-08-29  Chris Toshok  <toshok@ximian.com>
18978         * resources.cpp (ResourceDictionary::Clear): call
18979         Collection::Clear after we've cleared the hash so the hash will be
18980         empty in event handlers.
18982 2008-08-29  Jeffrey Stedfast  <fejj@novell.com>
18984         * layout.cpp (TextLayout::Layout): Do a slightly better job of
18985         keeping track of line->width - still not 100% correct.
18987 2008-08-28  Chris Toshok  <toshok@ximian.com>
18989         * Makefile.am: add resources.h and resources.cpp
18991         * xaml.cpp (class XamlElementInfo): add x:Key field (since this
18992         can't set a field on the object -- it might be a value type).
18993         (class XamlElementInstanceValueType): remove the empty
18994         implementation of SetAttributes.  we'll define it later.
18995         (XNamespace::SetAttribute): handle name/key behavior here.  Only
18996         allow one of them to be set on an object. Also, only attempt to
18997         set DependencyObject::NameProperty on an item if it's not a value
18998         type.
18999         (start_element): don't add value type children to their parent in
19000         start_element (as we haven't read the data that will allow us to
19001         create the value typed object.)  we need to push this off to the
19002         end_element handler.  also return early if there are problems
19003         setting attributes.
19004         (end_element_handler): if we're creating a value typed ELEMENT,
19005         add the child to the parent here.
19006         (dependency_object_add_child): add some ResourceDictionary
19007         validation here (if there's no key, etc), and actually call
19008         dict->Add(key, child).
19009         (XamlElementInstanceNative::CreateItem): don't crash if we failed
19010         to create an item.  (fixes one of the crashes caused by the
19011         ResourceDictionaryTests - ParseDouble)
19012         (XamlElementInstanceValueType::SetAttributes): call
19013         value_type_set_attributes.
19014         (value_type_set_attributes): stripped down version of
19015         dependency_object_set_attributes, as there are only a handful (is
19016         it really only x:Name and x:Key?) attributes we handle on value
19017         types.
19018         (globally): always call set_parent as opposed to
19019         ->SetLogicalParent.  we might not be dealing with a DO-subclass.
19021         * xaml.h (class XamlLoader): remove the explicit C api calls
19022         xaml_create_from_file, xaml_create_from_str, and
19023         xaml_hydrate_from_str.  Replace them with instance methods on
19024         XamlLoader (CreateFromFile, CreateFromString, and
19025         HydrateFromString, respectively) Add WithError variants of the
19026         these, and have the generator generate bindings for them so we can
19027         throw parse exceptions into managed code.
19029         * error.h (struct MoonError): add XAML_PARSE_EXCEPTION.
19031         * value.h.in (struct Value): add Is overload with
19032         additional_types.
19034         * uielement.h: include resources.h.
19036         * collection.h, collection.cpp: change the api in a few ways to
19037         make ResourceDictionary easier to write - make Count virtual,
19038         remove all the type checks for element type from methods, and add
19039         that check to Collection::CanAdd.  ResourceDictionary overrides
19040         that and always returns true.  Make Clear return a bool.
19042         * animation.h, animation.cpp: track collection changes.
19044         * stylus.h, stylus.cpp: track Collection::CanAdd change, and move
19045         implementations to the .cpp file.
19047         * resources.h, resources.cpp: split out the code for
19048         ResourceDictionary here.  ResourceDictionary is an odd fish.  In
19049         1.0 land, it provides the same api as a collection, and things can
19050         be looked up by name via findName.  In 2.0 land, items in
19051         ResourceDictionaries have to have either an x:Key or x:Name
19052         attribute.  If both are lacking it's an error.  If the former is
19053         specified you can only get at it through Resources["name"].  If
19054         the latter is specified, you can use both Resources["name"] or
19055         findName("name").
19057         * dependencyobject.cpp, dependencyobject.h: add Is and GetType
19058         overloads that take additional_types.  Make IsValueValid take an
19059         additional_types parameter too.  Expose ClearValue to managed code
19060         so we can actually clear the Value* to null without using
19061         the (unsupported from the generator) old method of passing
19062         IntPtr.Zero (Value* now maps to "ref Value" in generated
19063         pinvokes.)  Lastly add a SetValueWithError method so we can throw
19064         exceptions in managed code.
19066         * border.h: add defaults for Padding and BorderThickness.
19068         * border.cpp: simplify things a bit since we don't have to worry
19069         about padding/border thickness being NULL.
19071         * depenencyproperty.g.cpp, value.h, type-generated.cpp: regen.
19073 2008-08-28  Jeffrey Stedfast  <fejj@novell.com>
19075         * layout.cpp (TextLayout::Render): Respect TextAlignment.
19077 2008-08-26  Chris Toshok  <toshok@ximian.com>
19079         * dependencyobject.cpp (DependencyObject::SetLogicalParent): get
19080         rid of this g_assert, it's crashing the moon-unit tests.  just
19081         warn and bail.
19082         (DependencyObject::SetSurface): don't do anything if the surface
19083         is already set to the same value.
19085         * animation.cpp (Storyboard::SetSurface): don't do anything if
19086         GetSurface() == surface.
19088         * text.cpp (Glyphs::SetSurface): same.
19090         * uielement.cpp (UIElement::SetSurface): same.
19092         * brush.cpp (ImageBrush::SetSurface): same.
19094         * media.cpp: same.
19096         * collection.cpp (DependencyObjectCollection::SetSurface): same.
19097         (Collection::RemoveAtWithError): this (against logic) raises
19098         ArgumentException, not ArgumentOutOfRangeException.
19100 2008-08-25  Chris Toshok  <toshok@ximian.com>
19102         * rect.h, rect.cpp: rename the w/h fields to width/height, since
19103         every other instance of similar fields are named that.
19105         * value.cpp, border.cpp, window-gtk.cpp, control.cpp, runtime.cpp,
19106         uielement.cpp, geometry.cpp, shape.cpp, frameworkelement.cpp,
19107         brush.cpp: track rect change.
19109 2008-08-25  Chris Toshok  <toshok@ximian.com>
19111         * border.h, border.cpp: implement ArrangeOverride, and fix up some
19112         test failures in MeasureOverride.
19114         * frameworkelement.cpp (FrameworkElement::Arrange): it seems we
19115         also set the desired size here (to the final size we get from
19116         ArrangeOverride.)
19118 2008-08-25  Michael Dominic K.  <mdk@mdk.am>
19120         * animation2.h: Advertise self (ObjectAnimationUsingKeyFrames) as providing
19121         proper kinds of values (TYPE::DEPENDENCY_OBJECT).
19123 2008-08-25  Michael Dominic K.  <mdk@mdk.am>
19125         * animation.cpp:
19126         * animation2.h: Properly guard 2.0 stuff with if SL_2_0 .
19127         Also adding validation methods.
19129 2008-08-25  Michael Dominic K.  <mdk@mdk.am>
19131         * animation.cpp:
19132         * animation2.h: Base work for ObjectAnimationUsingKeyFrames 
19133         implementation.
19135 2008-08-24  Geoff Norton <gnorton@novell.com>
19136         
19137         * media.h: Add a new overload to set the SourceProperty from managed land.
19138         * media.cpp: Support async source changing downloader creation for ImageSource
19139         * cbinding.(cpp|h): Regen
19141 2008-08-23  Geoff Norton  <gnorton@novell.com>
19143         * mplayer.cpp: Only ref the audio if we have it as well.
19145 2008-08-23  Geoff Norton  <gnorton@novell.com>
19147         * bitmapimage.h: Add to the build
19149 2008-08-23  Geoff Norton  <gnorton@novell.com>
19151         * cbinding.cpp|h, dependencyproperty.g.cpp, type-generated.cpp,
19152           type.h, value.h: Regenerated
19153         * downloader.cpp|h: Return failure state for downloader->GetResponse
19154         * runtime.h: Generate C bindings for IsMainThread.
19156 2008-08-23  Larry Ewing  <lewing@novell.com>
19158         * animation.cpp, animation.h: make ControlPoint1 and ControlPoint2
19159         properties.  Move the quadratic generation into
19160         GenerateQuadratics.
19162         Regenrate and remove the managed wrappers.
19163         
19164 2008-08-23  Larry Ewing  <lewing@novell.com>
19165         
19166         * xaml.cpp (value_from_str): fixed crossed commits with Auto
19167         parsing.
19169         * collection.cpp (ContentWalker::Step): add some debug logic to
19170         protect against an error case for now.
19172 2008-08-23  Chris Toshok  <toshok@ximian.com>
19174         * Makefile.am (libmoon_la_SOURCES): add cornerradius.cpp
19176         * thickness.h, thickness.cpp: rename thickness_from_str to
19177         Thickness::FromStr, and make it return a bool instead of a
19178         pointer, as Point and Rect do.
19180         * cornerradius.h, cornerradius.cpp: add CornerRadius::FromStr.
19182         * xaml.cpp (value_from_str): use the CornerRadius parsing method,
19183         and track the change to the Thickness one.
19185 2008-08-23  Larry Ewing  <lewing@novell.com>
19187         * xaml.cpp (value_from_str): quick auto hack so we can test
19188         controls more.
19190         * runtime.cpp (RenderNode::Render): fix typo in merge
19192 2008-08-23  Larry Ewing  <lewing@novell.com>
19194         * uielement.cpp, uielement.h: move basic ftb logic here from
19195         panel.  Start storing extents allong with bounds.
19197         * panel.cpp, panel.h: move most ftb logic to uielement.cpp.  Use
19198         content walker.
19200         * stylus.cpp, stylus.h: rework the PostRender hack by chaining up
19201         to uielement in front_to_back mode unconditionaly.
19203         * runtime.cpp, runtime.h: make RenderNode members private and move
19204         the ftb override logic here and out of the PostRender call.
19205         
19206         * shape.cpp|h, frameworkelement.cpp|h, media.cpp, text.cpp: store
19207         extents.
19209         * control.cpp, control.h: implement basic functionality.
19211 2008-08-22  Chris Toshok  <toshok@ximian.com>
19213         * color.h, rect.h, point.h: remove the copy ctors.  we don't need
19214         them, and they were causing crashes (!)
19216 2008-08-22  Chris Toshok  <toshok@ximian.com>
19218         * frameworkelement.cpp (FrameworkElement::MeasureOverride): always
19219         take the margins into account, even when we're childless.
19221         * panel.h, panel.cpp: add MeasureOverride which always returns
19222         0,0.
19224         * border.h (class Border): add property accessors for everything.
19226         * border.cpp (Border::MeasureOverride): new implementation.
19228         * value.h.in, value.cpp: add CornerRadius support, and remove the
19229         unnecessary casts (and in the Rect/Point cases, calls to the copy
19230         ctor)
19232         * value.h, dependencyproperty.g.cpp: regenerate.
19233         
19234 2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
19236         * textbox.h (class SelectionChangedEventArgs): Added
19237         Text/SelectionChangedEventArgs.
19239 2008-08-22  Chris Toshok  <toshok@ximian.com>
19241         * frameworkelement.cpp (FrameworkElement::Measure): instead of
19242         always calling MeasureOverride here, we call the registered manage
19243         callback if there is one.  So, we proxy into managed code here,
19244         invoke the virtual method FWE.MeasureOverride, and if there's no
19245         subclass override (or if it chains up for some reason), we end up
19246         in MeasureOverride by virtue of the pinvoke in
19247         FrameworkElement.cs.
19248         (FrameworkElement::MeasureOverride): move all the logic for the
19249         default MeasureOverride implementation here.  it's pretty
19250         braindead - takes margins into account, measures our child, makes
19251         sure our size is between Min/Max.  That's about it.
19252         (FrameworkElement::Arrange): same drill as ::Measure.
19253         (FrameworkElement::ArrangeOverride): still (incorrectly) return
19254         finalSize.
19256 2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
19258         * textbox.h: Made ArrangeOverride() virtual and added
19259         SelectionChangedEvent.
19261 2008-08-22  Chris Toshok  <toshok@ximian.com>
19263         * dependencyobject.cpp (DependencyObject::GetContent): guard
19264         against the value being NULL.
19266 2008-08-22  Larry Ewing  <lewing@novell.com>
19268         * collection.cpp (ContentWalker::ContentWalker): make
19269         ContentWalker understand directions (Logical, ZForward, ZReverse).
19271 2008-08-22  Larry Ewing  <lewing@novell.com>
19273         * runtime.cpp (Surface::PaintToDrawable): restore the x/y offsets
19274         when drawing in the image backend.
19276 2008-08-22  Chris Toshok  <toshok@ximian.com>
19278         * frameworkelement.h, frameworkelement.cpp: add in the layout foo
19279         - provide implementations of Measure and Arrange that just call
19280         MeasureOverride and ArrangeOverride.  These are virtual and meant
19281         to be overridden either in unmanaged code (by simply overriding
19282         them), or in managed code (RegisterManagedOverrides is called in
19283         FWE.Initialize.)  Decorate the class with @CallInitialize so the
19284         managed ctor calls it.
19286         * uielement.h, uielement.cpp: remove the PInvoke/CBinding for the
19287         ctor, and add the layout methods.  Measure and Arrange are pure
19288         virtual.
19290         * cbinding.h, cbinding.cpp, type-generated.cpp: regen.
19291         
19292 2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
19294         * textbox.cpp (TextBox::Layout): Implemented rough layout.
19296         * layout.cpp (TextRun::TextRun): New ctor for use with TextBox.
19298 2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
19300         * textbox.cpp (TextBox::ArrangeOverride): Added.
19302         * frameworkelement.h (class FrameworkElement): Changed default
19303         Width/Height values to NAN.
19305         * textbox.cpp: Initial implementation of TextBox, Layout and
19306         Rendering logic still missing.
19308 2008-08-22  Larry Ewing  <lewing@novell.com>
19310         * usercontrol.cpp (UserControl::OnPropertyChanged): make sure the
19311         values are there.
19313 2008-08-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19315         * audio-alsa.cpp: Call Underflowed () when we run out of data.
19317 2008-08-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19319         * mplayer.h, mplayer.cpp: Remove the Eof state and add two separate
19320           VideoEnded and AudioEnded states. Implement handling of VideoEnded
19321           state, and call MediaElement::MediaEnded when both states have been
19322           reached.
19323         * media.h, media.cpp: Rename AudioFinished to MediaFinished and handle
19324           all media finished (both video and audio) logic there.
19326 2008-08-21  Larry Ewing  <lewing@novell.com>
19328         * uielement.cpp (UIElement::ComputeLocalTransform): clean up
19329         accumulated transform logic.  Keep the parent TransformFor out of
19330         the local_transform.
19332 2008-08-21  Larry Ewing  <lewing@novell.com>
19334         * uielement.cpp (UIElement::Dispose): add logic removed from
19335         panel.
19337         * dirty.cpp (Surface::PropagateDirtyFlagToChildren): use
19338         ContentWalker.
19340 2008-08-21  Chris Toshok  <toshok@ximian.com>
19342         [ fixes annotations not showing up in pageturn due to a NULL
19343         background on the ink presenter ]
19345         * stylus.h, stylus.cpp (class InkPresenter): add an override of
19346         EmptyBackground().  If we have a non-empty stroke bounding
19347         rectangle, return false.  Otherwise fall back to
19348         Panel::EmptyBackground.
19350         * panel.h, panel.cpp (class Panel): add EmptyBackground() virtual
19351         method.  the panel implementation returns true if GetBackground()
19352         returns NULL.  Use this virtual method instead of an explicit
19353         GetBackground() call in Panel::FrontToBack.
19355 2008-08-21  Jeffrey Stedfast  <fejj@novell.com>
19357         * enums.cpp: Added ScrollBarVisibility enum
19359         * text.cpp (TextBlock::OnPropertyChanged): Er... we need to
19360         invalidate if the TextWrappingProperty changes too.
19362 2008-08-21  Chris Toshok  <toshok@ximian.com>
19364         * border.h, border.cpp, cornerradius.h: add new
19365         types.
19367         * Makefile.am: add border/cornerradius to the file list.
19369         * type.h, value.h, cbinding.cpp, cbinding.h, type-generated.cpp,
19370         dependencyproperty.g.cpp: regen.
19372 2008-08-21  Jeffrey Stedfast  <fejj@novell.com>
19374         * textbox.h (class TextBox): The TextBox namespace should be
19375         System.Windows.Controls
19377         * stackpanel.h (class StackPanel): #include panel.h
19379 2008-08-21  Jeffrey Stedfast  <fejj@novell.com>
19381         * textbox.h: Initial implementation of the TextBox class (just
19382         stubs atm).
19384         * value.h.in (struct Value): Don't use int32_t or uint64_t,
19385         etc. Be consistent and use the glib types.
19387         * layout.cpp (TextLayout::Layout): Fixed
19388         LineStackingStrategy/LineHeight issues. If we are using
19389         BlockLineHeight & the specified LineHeight is not Auto, then we
19390         need to use 0.0 as the descender.
19392 2008-08-21  Chris Toshok  <toshok@ximian.com>
19394         * animation.h: make KeyFrame::Get/SetKeyTime pure virtual, and add
19395         accessors to all the subclasses.  They're autogenerated from the
19396         respective class's DP's.
19398         * animation2.h: same.
19400         * animation.cpp: remove KeyFrame::Get/SetKeyTime implementations.
19402         * control.h (class Control): add some more GenerateAccessors.
19404         * control.cpp: and remove the manual implementations here.
19406         * dependencyproperty.g.cpp: regen.
19408 2008-08-21  Larry Ewing  <lewing@novell.com>
19410         * animation.cpp (KeyFrameCollection::OnSubPropertyChanged): remove
19411         debug spew.
19413         * xaml.cpp (value_from_str): unref the collections we create after
19414         setting them.
19416 2008-08-21  Jackson Harper  <jackson@ximian.com>
19418         * xaml.cpp: Can't rely on the type for getting a managed element's
19419         name, we have to pull it from the element name provided to the
19420         XamlElementInfo.
19422 2008-08-21  Chris Toshok  <toshok@ximian.com>
19424         * dependencyobject.cpp (DependencyObject::HasProperty): pass
19425         additional_types to IsSubclassOf.
19427         * type.h, type.cpp: add IsSubclassOf variants that take
19428         additional_types.  Fixes lookup problems of non-custom DP's on
19429         managed subclasses.
19431 2008-08-21  Chris Toshok <toshok@ximian.com>
19433         * value.h.in (struct Value): make all single arg primitive value
19434         typed ctors "explicit" so c++ won't do any magic implicit
19435         conversion from value type to Value.
19437         * value.h: regen
19439         * runtime.cpp (Surface::ShowFullScreenMessage): need to create the
19440         Value()'s explicitly.
19442         * collection.cpp (DoubleCollection::FromStr): same.
19444 2008-08-20  Larry Ewing  <lewing@novell.com>
19446         * dependencyobject.cpp (create_temp_namescope): don't leak the
19447         temporary namescope we create.  Also don't create it over and over
19448         again.
19450 2008-08-20  Larry Ewing  <lewing@novell.com>
19452         * dependencyobject.cpp|h: Add ContenAdded and ContentRemoved
19453         virtual methods so that we can begin to simplify content rules.
19455         * dirty.cpp (Surface::PropagateDirtyFlagToChildren): use
19456         GetContent to handle the children in a generic way.
19458         * uielement.cpp|h: start moving generic uielement content logic
19459         here.  Implement OnLoaded and deal with content directly.
19460         
19461         * canvas.cpp|h: remove obsolete methods. Move most of zindex
19462         property logic from panel to here.
19464         * panel.cpp|h: move ZIndex logic to canvas and move OnLoaded logic
19465         to uielement.
19467         * control.cpp|h: generate accessors, start remove OnLoaded and
19468         SetSurface.
19470         * dependencyproperty.g.cpp: regen.
19471         
19472 2008-08-20  Chris Toshok  <toshok@ximian.com>
19474         * text.cpp, text.h: generate accessors for Glyph properties.
19476         * geometry.cpp, grid.cpp, media.cpp, panel.cpp, runtime.cpp,
19477         shape.cpp, stylus.cpp, transform.cpp, trigger.cpp, uielement.cpp,
19478         xaml.cpp: make another pass through files switching to C++
19479         accessors from GetValue(FooClass::FooProperty)->AsFoo().
19481         * dependencyproperty.g.cpp: regen.
19483 2008-08-20  Chris Toshok  <toshok@ximian.com>
19485         * animation.cpp, animation.h, brush.cpp, brush.h, canvas.cpp,
19486           canvas.h, clock.cpp, clock.h, collection.cpp, collection.h,
19487           frameworkelement.cpp, frameworkelement.h, geometry.cpp,
19488           geometry.h, grid.h, media.cpp, media.h, namescope.cpp,
19489           namescope.h, panel.cpp, panel.h, playlist.cpp, shape.cpp,
19490           shape.h, stackpanel.h, style.h, stylus.cpp, stylus.h, text.cpp,
19491           text.h, transform.cpp, transform.h, trigger.h, uielement.cpp,
19492           uielement.h, xap.cpp, xap.h:
19494           mostly, decorate almost all DependencyProperties with
19495           @GenerateAccessors, add in lots of new ones that weren't present
19496           before (to the .h), and remove all those implementations from
19497           the .cpp files.
19499           Also, don't use #if SL_2_0 in the headers.  we can't depend on
19500           that being defined (especially once we install).  Any
19501           2.0-specific behavior needs to be done in the .cpp files.  There
19502           are still a few things that are wrong wrt
19503           this (dependencyproperty.g.cpp needs to define the DP's
19504           regardless of version, they can just be NULL in the 1.0 case for
19505           2.0 properties, for instance.)
19507         * cbinding.cpp, cbinding.h, dependencyproperty.g.cpp: regen
19509 2008-08-20  Chris Toshok  <toshok@ximian.com>
19511         * uielement.h (ClearLoaded): use &=, not |=, here.  fixes tests.
19513 2008-08-20  Jeffrey Stedfast  <fejj@novell.com>
19515         * layout.cpp (TextLayout::Layout): Updated to take a
19516         TextLayoutHints argument for providing hints like text alignment
19517         and line stacking/height.
19519         * text.cpp (class TextBlock): Updated a bit for Silverlight
19520         2.0. All of the properties added in 2.0 are now there, although
19521         only 2 of them are respected at the moment (line stacking strategy
19522         & line height).
19524         * enums.cpp|h: Added LineStackingStrategy and TextAlignment enums.
19526 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19528         * audio.cpp: NULL out the player instance after deleting it.
19530 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19532         * audio-pulse.cpp, audio-pulse.h: Close: Detect if Close has been
19533           called and if so, do nothing.
19535 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19537         * audio.cpp: We only support 1 or 2 channels for the moment.
19539 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19541         * media.cpp, media.h: Fix buffering progress to take into account that
19542           the first pts isn't necessarily 0 (happens for live media).
19544 2008-08-20  Chris Toshok  <toshok@ximian.com>
19546         * runtime.cpp (Surface::HandleMouseEvent): make sure not to emit
19547         Focus events on click in a 1.0 context.
19549 2008-08-20  Jackson Harper  <jackson@ximian.com>
19551         * xaml.cpp|h: Setting properties requires the xaml namespace so it
19552         can lookup managed types. TODO: It also needs the default
19553         assembly, but I am thinking of moving that to the loader.
19555 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19557         * mplayer.cpp: Properly ref/unref the AudioSource.
19559 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19561         * media.h: Remove G_BEGIN/END_DECLS and two unnecessary #includes.
19563 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19565         * media.cpp, media.h, runtime.cpp: Remove media_init, just make
19566           runtime_init call Media::Initialize directly.
19568 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19570         * media.h, media.cpp: Remove media_element_advance_frame from header,
19571           no need to make it public.
19573 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19575         * mplayer.cpp: AdvanceFrame: only return true if we actually processed
19576           any frames. SeekCallback: clear the queue of audio frames as well.
19577         * media.h, media.cpp: Removed SetPreviousPosition, no longer needed.
19578           Don't change previous_position while we're seeking, and don't make
19579           it go backwards.
19580         * audio.cpp, audio.h: Added AudioSource::ClearFrames.
19582 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19584         * runtime.cpp: Fix 1.0 build. No idea if the fix is correct.
19586 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19588         * cbinding.cpp, cbinding.h, xap.h: Mark Xap as 2.0 only for the
19589           generator.
19591 2008-08-20  Stephane Delcroix  <sdelcroix@novell.com>
19593         * canvas.h, canvas.cpp:
19594         * uielement.h, uielement.cpp: move the ZIndexProperty and Get/Set-ers
19595         from uielement to Canvas. Drop the non-static Get/Set-Top/Left ()
19597         * panel.cpp, collection.cpp: related changes.
19599 2008-08-20  Stephane Delcroix  <sdelcroix@novell.com>
19601         * uielement.h: change the generator instructions so the 
19602         NameProperty is generated in FrameworkElement.
19604 2008-08-19  Chris Toshok  <toshok@ximian.com>
19606         * dependencyobject.h,
19607         dependencyobject.cpp (DependencyObject::GetContent): ripped this
19608         out of a hack, should prove useful for the work coming up.
19610 2008-08-19  Chris Toshok  <toshok@ximian.com>
19612         * runtime.cpp (Surface::FocusElement): fix the IsTabStop check.
19614 2008-08-19  Chris Toshok  <toshok@ximian.com>
19616         * control.h, control.cpp (class Control): generate a binding for
19617         Control::InitializeFromXaml and drop the 2 manual C bindings.
19619         * cbinding.h, cbinding.cpp: regen.
19621 2008-08-19  Chris Toshok  <toshok@ximian.com>
19623         * xap.h, xap.cpp (class Xap): rename xap_unpack to Xap::Unpack.
19624         autogenerate our binding for it.
19626         * cbinding.h, cbinding.cpp: regen.
19628 2008-08-19  Chris Toshok  <toshok@ximian.com>
19630         * eventargs.h, eventargs.cpp (class Keyboard): make this more of a
19631         real class, and remove the implementation of
19632         keyboard_get_modifiers.  instead, provide a c++ method (both a
19633         getter and setter) and annotate the Getter with
19634         GenerateCBinding/GeneratePInvoke.
19636         * collection.h, collection.cpp: reorder the class decls (why do
19637         people put private first?) and make CollectionIterator a real
19638         class, with annotated methods.  Also, move
19639         double_collection_from_str and point_collection_from_str to
19640         DoubleCollection::FromStr and PointCollection::FromStr
19641         respectively.  move double_garray_from_str out of here (to
19642         utils.h/utils.cpp)
19644         * utils.h, utils.cpp: new (hopefully last) home for
19645         double_garray_from_str.
19647         * point.h, point.cpp (struct Point): rename point_from_str to
19648         Point::FromStr.  no reason to have a C method for that.
19650         * rect.h, rect.cpp (struct Rect): same thing with Rect::FromStr.
19652         * window-gtk.h (class MoonWindowGtk): mark the ctor and
19653         GetWidget() with GenerateCBinding/GeneratePInvoke.
19655         * window-gtk.cpp: and remove their implementations.
19657         * xaml.cpp: convert over to all the new ::FromStr methods.
19659         * thickness.cpp: track new home of double_garray_from_str.
19661         * cbinding.h, cbinding.cpp: regen.
19663 2008-08-19  Chris Toshok  <toshok@ximian.com>
19665         * uielement.h, uielement.cpp: make almost all data
19666         private/protected.  Add a couple of methods to aid in
19667         this (IsLoaded, ClearLoaded, TransformPoint).  Get rid of the
19668         cbinding for transform_point - it's never used.  Also, re-order
19669         the header to put public things first, then protected then
19670         private.
19672         * runtime.cpp: use IsLoaded.
19674         * panel.cpp: use ClearLoaded.
19676         * text.cpp, shape.cpp, eventargs.cpp, frameworkelement.cpp: use
19677         TransformPoint.
19679 2008-08-19  Chris Toshok  <toshok@ximian.com>
19681         * runtime.cpp (Surface::HandleMouseEvent): don't compare the input
19682         lists, as we will almost always have identical lists.  compare the
19683         head of the new list to focused_element to determine if focus
19684         changes.
19686 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19688         * pipeline.cpp: Beautify error messages.
19690 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19692         * media.cpp: test-inexistent-media(s) were failing due to ISP's
19693           tendency to return search pages for failed dns lookups. Fixed tests
19694           after testing with sane DNS settings and did the appropiate change
19695           in code (raise correct error message/number).
19697 2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19699         * runtime.h: Make RUNTIME_INIT values sequential.
19701 2008-08-19  Chris Toshok  <toshok@ximian.com>
19703         * xaml.cpp (xaml_hydrate_from_str): make sure to set the surface
19704         of the object before parsing so that objects don't switch from the
19705         loader's surface to NULL as they're added to the hierarchy while
19706         being parsed.
19708 2008-08-19  Larry Ewing  <lewing@novell.com>
19710         * shape.cpp (Shape::InsideObject): check the extents first, then
19711         reorder the stroke/fill tests to test for the most likely first.
19713         Helps speed up sliverlight.net/world a bit.
19715 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19717         * mplayer.h, pipeline.h: No need to surround GetTypeName with
19718           OBJECT_TRACKING anymore.
19720 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19722         * audio.cpp, audio.h, audio-alsa.cpp, audio-alsa.h, audio-pulse.cpp,
19723           audio-pulse.h: Added, our new audio abstraction/implementation.
19724         * Makefile.am, src.mdp, type-generated.cpp: Updated.
19725         * mplayer.cpp, mplayer.h: Moved audio code into its own file(s).
19726         * runtime.cpp, runtime.h: Add runtime overrides for audio.
19728 2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
19730         * xap.cpp (xap_unpack): Fixed compiler warning.
19732 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19734         * media.cpp: Include headers mplayer.h doesn't include anymore.
19735           MediaElement::SetMedia: only set audio data on the MediaPlayer if
19736           the media has audio. TImelineMarkerCollection::Add: don't call the
19737           base class' Add, call base's Insert instead. Fixes a stack overflow
19738           since base class' Add calls Insert, which TimelineMarkerCollection
19739           overrides to call Add.
19741 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19743         * enums.cpp: Wrap 2.0-only code in SL_2_0.
19745 2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
19747         * zip/unzip.c: Get rid of unused variable.
19749         * value.cpp (Value::ToString): Get rid of unused variable.
19751 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19753         * dependencyobject.h: EventObject::ref: print a stack trace before the
19754           abort if we can, and fix typo in the abort message.
19756 2008-08-19  Geoff Norton  <gnorton@novell.com>
19758         * xap.cpp: Ensure we can actually enter the directory we're creating.
19760 2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
19762         * mplayer.cpp: Silence the compile warning.
19764         * color.cpp (color_from_str): Got rid of unused variable.
19766         * xaml.cpp (dependency_object_set_attributes): Don't need to use
19767         strlen(str) == 0 to figure out if the string is empty, just check
19768         the first char.
19769         (wrap_type): Removed. Doesn't seem to be used any longer.
19770         (get_type_for_property_name): Same.
19771         (panel_add_child): Same.
19772         (dependency_object_set_property): Made static.
19773         (dependency_object_set_attributes): Same.
19774         (dependency_object_hookup_event): Same.
19775         (dependency_object_missed_property): Same.
19777         * dependencyproperty.cpp (resolve_property_path): Use proper
19778         integer types and avoid calling strlen if all we care to know is
19779         if the string is empty.
19781         * runtime.cpp (Surface::Paint): Get rid of an annoying debug
19782         printf.
19783         (Surface::HandleMouseEvent): Removed unused variable.
19785 2008-08-19  Chris Toshok  <toshok@ximian.com>
19787         * trigger.cpp (EventTrigger::SetTarget): make the 2.0 case more
19788         robust - handle Type.Event notation, making sure that the type is
19789         valid for the target.
19791 2008-08-19  Larry Ewing  <lewing@novell.com>
19793         * runtime.cpp|h: add override to use sofware fallbacks for
19794         rendering.
19796 2008-08-19  Chris Toshok  <toshok@ximian.com>
19798         * trigger.cpp (EventTrigger::SetTarget): do the AddHandler in both
19799         1.0 and 2.0 cases.  big oops.
19801 2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
19803         * dependencyobject.cpp (DependencyObject::GetObjectType): Get rid
19804         of a warning that is no longer valid.
19806 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19808         * downloader.h, downloader.cpp: Add a request field to
19809           DownloaderResponse, and a response field to DownloaderRequest. When
19810           a request is aborted, also abort the response. This fixes a crash
19811           when we aborted the request before receiving a response, the
19812           response had no idea the request had been aborted (since the
19813           request didn't store the response after creating it, it couldn't
19814           notify the response of the abort), and happily accessed deleted
19815           objects.
19817 2008-08-18  Chris Toshok  <toshok@ximian.com>
19819         * runtime.cpp (Surface::CreateArgsForEvent): new method, create
19820         the right kind of args for a given event.  we should probably
19821         autogenerate this.
19822         (Surface::EmitEventOnList): use CreateArgsForEvent.  Only create
19823         one instance of the event args that we use to bubble along the
19824         element list.  If it's a RoutedEventArgs subclass, set the source
19825         to be the first element in the list, and check the "Handled"
19826         attribute after every emit to see if we should finish early (this
19827         provides for 2.0 semantics).
19828         (Surface::FocusElement): unfortunately the event generation is
19829         async, so add a tick call if we need to.  if we already have a
19830         tick call (meaning >= 1 focus change has happened already in this
19831         tick), we drop the intervening change(s).  This is likely wrong.
19832         (Surface::GenerateFocusChangeEvents): emit GotFocus/LostFocus on
19833         the proper element lists.
19834         (Surface::HandleUIKeyPress, Surface::HandleUIKeyRelease): if we're
19835         silverlight2 (and we have a focused element), emit the event on
19836         the list of elements from the focused element back up to the root.
19837         Otherwise just emit it on the toplevel.
19839         * runtime.h (class Surface): add GetFocusedElement/FocusElement
19840         methods, which are used to implement
19841         FocusManager.GetFocusElement() and Control.Focus().
19843         * uielement.h, uielement.cpp (class UIElement): remove a bunch of
19844         Emit$Event() methods that were never used.
19846         * trigger.cpp: in 2.0, you can put other events in RoutedEvent,
19847         not just "Loaded".  there are parsing rules that we can't make use
19848         of here, so more work will likely have to happen in the parser.
19850         * trigger.h (class EventTrigger): add registered_event_id.
19852         * cbinding.h, cbinding.cpp: regenerate.
19854 2008-08-18  Geoff Norton  <gnorton@novell.com>
19855         
19856         * type-generated.cpp, cbinding.cpp|h: Rengerated
19857         * dependencyobject.h: Bind DependencyObject .ctor
19859 2008-08-18  Geoff Norton  <gnorton@novell.com>
19861         * deployment.h: Move CrossDomainAccess to
19862         * enums.h|cpp: Register CrossDomainAccess so that AppMainfest
19863         can specify values from the enum.
19865 2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19867         * cbinding.cpp, cbinding.h, uielement.h: Mark
19868           UIElement::GetTransformToUIElement as 2.0, fixes 1.0 build.
19870 2008-08-18  Larry Ewing  <lewing@novell.com>
19872         * panel.cpp|h: remove SetSurface override, the
19873         DependencyObjectCollection::SetSurface does the work already.
19875 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
19877         * uielement.cpp: Autogenerate more of the bindings, make
19878         desired_size private, etc.
19880 2008-08-18  Geoff Norton  <gnorton@novell.com>
19881         
19882         * eventargs.cpp|h: Change the return type to int, fix the build.
19884 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
19886         * uielement.cpp (uielement_get_surface): Removed.
19887         (uielement_invalidate): Removed.
19888         (uielement_set_transform_origin): Removed.
19890         * transform.cpp: Removed manual c-bindings.
19892         * text.cpp: Removed manual c-bindings for property accessors.
19894 2008-08-18  Geoff Norton  <gnorton@novell.com>
19896         * type-generated.cpp, cbinding.cpp|h: Rengerated
19897         * uielement.cpp|h, type.h, value.h: Keyboard->Key
19898         * runtime.cpp|h: Move key translation to eventargs, and pass the
19899         raw GdkEventKey to KeyEventArgs.
19900         * eventargs.cpp|h: Implement KeyEventArgs bound to the managed stuff
19901         and remove the old KeyboardEventArgs.
19903 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
19905         * stylus.h: Moved required manual c-bindings into G_*_DECLS block.
19907         * size.cpp: Removed manual ctor c-binding.
19909         * shape.cpp: Removed manual c-bindings for property accessors.
19911 2008-08-18  Geoff Norton  <gnorton@novell.com>
19913         * media.cpp|h, cbinding.cpp|h: Implement support for generating Image's
19914         from managed Streams.
19916 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
19918         * runtime.cpp: Removed manual c-bindings for Surface and renamed
19919         Get/SetTrans() to Get/SetTransparent().
19921         * panel.cpp: Removed manual c-bindings for property accessors.
19923         * media.cpp: Removed manual c-bindings for property accessors and
19924         other methods that are now autogenerated.
19926 2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19928         * dependencyobject.h: Make the generator happy.
19930 2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
19932         * geometry.cpp: Removed manual c-bindings for property accessors.
19934 2008-08-18  Michael Dominic K.  <mdk@mdk.am>
19936         * runtime.h: Caller is "in main thread" also when the main_thread
19937         pointer equals NULL (no surface has been created).
19939 2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19941         * debug.cpp: Fix a leak found by valgrind.
19943 2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19945         * dependencyobject.h: Make GetTypeName virtual if we're tracking
19946           objects, enables better output of lost objects.
19948 2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
19950         * dependencyobject.cpp: DrainUnrefs: since unreffing objects may cause
19951           more objects to be enqueued for unref, loop until there are none
19952           left.
19954 2008-08-17  Geoff Norton  <gnorton@novell.com>
19956         * downloader.cpp|h: Add a method for DownloaderResponse to 
19957         support a Header Visitor.
19959 2008-08-17  Geoff Norton  <gnorton@novell.com>
19961         * uielement.h: Expose desired_size as public to fix the build.
19963 2008-08-17  Chris Toshok  <toshok@ximian.com>
19965         * uielement.h, frameworkelement.h: can't use SL_2_0 in headers.
19967 2008-08-17  Chris Toshok  <toshok@ximian.com>
19969         * Makefile.am (libmoon_include_HEADERS): INCLUDE_MONO_RUNTIME ->
19970         INCLUDE_MANAGED_CODE.
19972 2008-08-15  Larry Ewing  <lewing@novell.com>
19974         * clock.cpp|h: add methods Jeff removed back. 
19976 2008-08-15  Chris Toshok  <toshok@ximian.com>
19978         * stylus.h (class DrawingAttributes): all managed DP fields are
19979         private.
19980         (class Stroke): DrawingAttributesProperty and StylusPointsProperty
19981         are private in managed-land.
19983 2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
19985         * grid.h: Autogenerate bindings for GetActualWidth/Height
19987         * grid.cpp: Removed manual c-bindings.
19989         * frameworkelement.cpp: Removed manual c-bindings.
19991 2008-08-15  Chris Toshok  <toshok@ximian.com>
19993         * eventargs.h (enum CollectionChangedAction): change Reset to
19994         Cleared, and add Clearing to handle the old functionality in
19995         DependencyObject::OnCollectionClear.
19997         * dependencyobject.h (class DependencyObject): remove
19998         OnCollectionClear.  we handle that case in OnCollectionChanged
19999         now.
20001         * panel.h, panel.cpp (Panel::OnCollectionChanged): move
20002         OnCollectionClear code to here.
20004         * uielement.cpp (UIElement::OnCollectionChanged): add
20005         ActionClearing code here.
20007         * stylus.cpp, text.cpp: track CollectionChangedAction enum change.
20009         * collection.cpp (Collection::Clear): use
20010         EmitChanged (CollectionChangedActionClearing,...) instead of
20011         OnCollectionClear.
20013 2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
20015         * eventargs.cpp|h: Same.
20017         * control.cpp: Same.
20019         * contentcontrol.cpp: Removed manual property accessor c-bindings.
20021         * clock.cpp: Removed manual c-bindings for things that can be
20022         autogenerated.
20024         * brush.cpp|h: Removed manual c-bindings for property accessors.
20026         * animation.cpp|h: Added some convenience c++ property accessors and
20027         got rid of all of the manual c-bindings. Fixed them to be
20028         auto-generated.
20030         * stylus.cpp: Added c++ property accessors and updated the code to
20031         use them (cleans up some code) and also got rid of the c binding
20032         accessors. We'll autogenerate these.
20034 2008-08-15  Sebastien Pouliot  <sebastien@ximian.com>
20036         * layout.cpp: Don't add kerning before a dot (.). This match SL
20037         behavior (i.e. it's not a "sliding dot" algorithm like I expected)
20038         and the effect is visible in a few DRT (like #184).
20040 2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
20042         * uielement.cpp (UIElement::GetTriggers): Added for convenience.
20043         (UIElement::Dispose): Use the new convenience method.
20045 2008-08-15  Chris Toshok  <toshok@ximian.com>
20047         * panel.cpp (Panel::ChildRemoved): queue a ZIndex re-sort here.
20048         (Panel::ChildAdded): call item->OnLoaded if we're loaded, and
20049         queue a re-sort.
20050         (Panel::OnCollectionChanged): simplify this since the code moved
20051         to ChildAdded/ChildRemoved.
20053         * panel.h, panel.cpp (Panel::Dispose): loop over our children
20054         setting their visual parent to NULL.
20056         * uielement.h, uielement.cpp (UIElement::Dispose): loop over the
20057         trigger collection removing ourselves as the target.
20058         (UIElement::OnPropertyChanged): handle TriggersProperty here -
20059         remove target from the old triggers and set target on the new
20060         ones.
20061         (UIElement::OnCollectionChanged): new method, handle
20062         TriggersCollection.
20064         * dependencyobject.cpp: be consistent in our treatment of
20065         LogicalParent - clear it in every place we're removing a DO.  Warn
20066         if we're setting it again on the same DO.
20068         * collection.h, collection.cpp: remove triggercollection's
20069         added/removedfromcollection, adn remove uielementcollection's
20070         removedfromcollection.  Also, stop using a separate closure.  The
20071         collection's LogicalParent always has the same value - use that.
20073 2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
20075         * clock.cpp (TimeManager::SourceTick): Instead of always using up
20076         to 1/30 of a second for flushing the async queue, use only the
20077         time remaining in our render pass to flush it.
20079 2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20081         * animation.h: KeyTimeProperty isn't nullable in managed code.
20083 2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20085         * cbinding.cpp, cbinding.h: Regenerated.
20086         * media.cpp, media.h: Add a MediaElement::SetStreamSource, and hack it
20087           to at least open the source.
20088         * pipeline.cpp, pipeline.h: Added ManagedStreamSource.
20090 2008-08-15  Jackson Harper  <jackson@ximian.com>
20092         * xaml.cpp: Need to advance after F.
20094 2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20096         * animation.h, dependencyproperty.g.cpp: KeyTime is nullable. Fixes MS
20097           DRT#114.
20099 2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20101         * dependencyproperty.g.cpp: Regenerated.
20103 2008-08-14  Larry Ewing  <lewing@novell.com>
20105         * animation.h (class KeyFrame): remove the KeyTime DP and make
20106         the ctor private this is an abstract class.
20108         * animation.cpp: retrieve the property via name.
20110 2008-08-14  Jeffrey Stedfast  <fejj@novell.com>
20112         * clock.cpp (TimeManager::SourceTick): Call InvokeTickCall() as
20113         many times as we can in 1/30th of a second. Major visual
20114         performance improvement for bug #395160.
20116 2008-08-14  Jackson Harper  <jackson@ximian.com>
20118         * xaml.cpp|h: We need to pass a pointer to the top level control
20119         when hooking up a managed event, the managed code uses this to
20120         find the method to invoke.
20122 2008-08-14  Jeffrey Stedfast  <fejj@novell.com>
20124         * uielement.cpp: Implemented property accessors for ZIndex
20126         * collection.cpp (UIElementZIndexComparer): Use
20127         UIElement::GetZIndex(). If, in the future, we make GetZIndex()
20128         return a cached value, now we'll automagically benefit from it.
20130 2008-08-14  Jeffrey Stedfast  <fejj@novell.com>
20132         ZIndex sorting optimization for bug #395160
20134         * panel.cpp (Panel::UpdateTotalHitTestVisibility): Don't iterate
20135         over the z_sorted list, it might not yet be
20136         populated (e.g. ResortZIndex() may not have been called yet).
20137         (Panel::OnPropertyChanged): Set a DirtyChildrenZIndices bit if the
20138         new collection is non-null.
20139         (Panel::OnCollectionChanged): Queue ZIndex resorts as appropriate.
20140         (Panel::OnLoaded): Queue a resort here too.
20142         * collection.cpp (UIElementCollection::AddedToCollection):
20143         Removed. We don't want to do the zindex sortign here anymore. Too
20144         slow. Instead, we'll have Panel::OnCollectionChanged() set the
20145         DirtyChildrenZIndices dirty flag so that the renderer forces a
20146         resort.
20147         (UIElementCollection::Insert): Removed, no need to override
20148         anymore since we won't be resorting by zindex here anymore.
20149         (UIElementCollection::ResortByZIndex): Now that z_sorted isn't
20150         maintained as items are added/inserted, we need to always init the
20151         z_sorted array here even if we only have 1 item.
20153 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20155         * xaml.cpp, pipeline.cpp: Don't use base_unref, call unref on the
20156           instance.
20157         * playlist.cpp: Use DependencyObject::SetName instead of the C method.
20158         * dependencyobject.h, dependencyobject.cpp: Generate all c methods, as
20159           well as Name accessors.
20160         * cbinding.h, dependencyproperty.g.cpp, cbinding.cpp: Regenerated.
20161         * runtime.cpp: Updated according to new method names.
20163 2008-08-14  Jackson Harper  <jackson@ximian.com>
20165         * xaml.cpp: We now create property instances from the property's
20166         type info not the property's parent type. This will allow us to
20167         have a managed attached property on a native object.
20169 2008-08-14  Chris Toshok  <toshok@ximian.com>
20171         * Makefile.am (libmoon_la_SOURCES): add thickness.cpp
20173         * thickness.h, thickness.cpp: add thickness_from_str.
20175         * xaml.cpp: add thickness parsing.
20177 2008-08-14  Jackson Harper  <jackson@ximian.com>
20179         * xaml.cpp: Need to lookup property element name's in their
20180         namespace so that managed attached properties can be set.
20182 2008-08-14  Jackson Harper  <jackson@ximian.com>
20184         * xaml.cpp: If there is a dot in the element name we can assume
20185         it's a property (or at least not an element).  This should prevent
20186         some extra calls into managed code to try to create types from
20187         property names.
20189 2008-08-13  Geoff Norton  <gnorton@novell.com>
20191         * runtime.cpp|h, clock.cpp|h: Move the g_idle_idd and g_timeout
20192         calls into the time manager.
20194 2008-08-13  Geoff Norton  <gnorton@novell.com>
20196         * runtime.cpp|h: Add a binding for g_idle_add.
20198 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20200         * cbinding.cpp, cbinding.h, eventargs.cpp, eventargs.h: Generate two
20201           MouseEventArgs methods.
20203 2008-08-14  Jackson Harper  <jackson@ximian.com>
20205         * type-generated.cpp: Value types.
20207 2008-08-13  Jackson Harper  <jackson@ximian.com>
20209         * xaml.cpp: Make sure we set content properties.
20211 2008-08-13  Jackson Harper  <jackson@ximian.com>
20213         * xaml.cpp: Add support for parsing value types.
20215 2008-08-13  Chris Toshok  <toshok@ximian.com>
20217         * panel.cpp (Panel::OnCollectionChanged): we only need to call
20218         OnLoaded on the new child.
20220 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20222         * stylus.h: StylusInfo doesn't have a managed equivalent.
20224 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20226         * dependencyproperty.h: Generate CBinding and PInvoke for IsAttached.
20227         * cbinding.cpp, cbinding.h: Regenerated.
20229 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20231         * type.cpp: Remove spew.
20232         * dependencyobject.cpp: GetValue*WithError: Fix error messages to say
20233           we're trying to get values, not set them.
20235 2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20237         * dependencyproperty.g.cpp: Regenerated.
20238         * geometry.h: Added IsFilled property.
20240 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20242         * brush.h: Set correct managed DP access and property types.
20244 2008-08-13  Jeffrey Stedfast  <fejj@novell.com>
20246         * *.h: Added GeneratePInvoke attribute to each ctor
20248 2008-08-13  Jeffrey Stedfast  <fejj@novell.com>
20250         * text.cpp: s/Inlines/InlineCollection/g
20252         * xaml.cpp: s/Inlines/InlineCollection/g
20254         * collection.h (class InlineCollection): Renamed from Inlines.
20256         * trigger.h (class TriggerAction): Generate C Binding for ::Fire()
20257         and also the ctor. Needed to prevent a crash in test-props.html
20259 2008-08-13  Geoff Norton  <gnorton@novell.com>
20261         * runtime.cpp|h: Reuse the old html_timer infrastructure for the
20262         intial DispatcherTimer implementation.
20264 2008-08-13  Jeffrey Stedfast  <fejj@novell.com>
20266         * media.h (class MediaElement): Make MarkersProperty internal for
20267         managed-side.
20269         * grid.h (class Grid): Make Column/RowDefinitionsProperties
20270         internal for managed-side.
20272         * text.h (class TextBlock): Make InlinesProperty internal for
20273         managed-side.
20275         * panel.h (class Panel): Update ChildrenProperty managed property
20276         access.
20278         Also added newlines to the end of some files to silence compile
20279         warnings.
20281 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20283         * dependencyproperty.g.cpp, type.h, type-generated.cpp, value.h,
20284           cbinding.cpp, cbinding.h: Regenerated.
20285         * geometry.h: Annotation fix.
20286         * Makefile.am, src.mdp: Added tilesource.h
20287         * tilesource.h: Added.
20289 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20291         * src.mdp, Makefile.am: Added animation2.h
20292         * type.h, type-generated.cpp, value.h, cbinding.cpp, cbinding.h,
20293           dependencyproperty.g.cpp: Regenerated.
20294         * animation.h: Added missing 2.0 DPs and more annotations.
20295         * animation2.h: Added, contains 2.0 animation classes.
20296         * clock.h: There are no managed equivalent of TimelineGroup and
20297           ParallelTimeline, remove their Namespace annotation.
20299 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20301         * shape.h: Fix warning.
20303 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20305         * shape.h: The managed Shape class must be constructable, so make all
20306           pure virtual methods from the native Shape class just virtual.
20307         * cbinding.cpp, cbinding.h, type-generated.cpp: Regenerated.
20309 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20311         * animation.h, brush.h, cbinding.cpp, cbinding.h, clock.h,
20312           dependencyproperty.g.cpp, frameworkelement.h, geometry.h, panel.h,
20313           text.h, transform.h, type-generated.cpp, usercontrol.h: Added more
20314           annotations to make gui-compare happier.
20316 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20318         * control.h, dependencyobject.h, deployment.h, frameworkelement.h,
20319           style.h, template.h, trigger.h, uielement.h: Gui-compare annotation
20320           tweaking.
20322 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20324         * stackpanel.h, src.mdp, Makefile.am, cbinding.cpp, cbinding.h,
20325           dependencyproperty.g.cpp, enums.cpp, enums.h, type.h,
20326           type-generated.cpp, value.h: Added a native StackPanel class and
20327           generate the managed StackPanel.
20329 2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20331         * brush.h, contentcontrol.h, deployment.h, downloader.h, media.h,
20332           namescope.h, stylus.h, transform.h: Tweak some annotations.
20334 2008-08-12  Chris Toshok  <toshok@ximian.com>
20336         * style.h (class Style): make the "Setters DP" field private.
20338         * template.h (class ControlTemplate): add TargetType DP
20340         * dependencyproperty.g.cpp: regen.
20342 2008-08-12  Chris Toshok  <toshok@ximian.com>
20344         * style.h (class Setter): hack for the DependencyProperty valued
20345         property.  we need to parse a string DP name in a context where we
20346         don't know the type to apply to it, so we need to have a string
20347         backed property.
20349         * dependencyproperty.g.cpp: regen.
20351 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20353         * collection.h: Annotate Collection.
20355 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20357         * animation.h, clock.h, collection.h, error.h, eventargs.h, media.h,
20358           size.h, style.h, template.h, trigger.h: Add @Namespace annotations.
20360 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20362         * src.mdp: Updated.
20364 2008-08-12  Chris Toshok  <toshok@ximian.com>
20366         * collection.cpp (Collection::Clear): make a temporary copy of the
20367         array so we can zero out the ptrarray before calling
20368         RemovedFromCollection.
20370 2008-08-12  Jackson Harper  <jackson@ximian.com>
20372         * xaml.h:
20373         * xaml.cpp: Hydrate now passes in the default assembly name and
20374         path (we can probably do away with path's I think that's just a
20375         holdover from 1.1).  If no assembly name is specified in the
20376         custom xmlns, the default's are used.
20378 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20380         * trigger.h, control.h, deployment.h, text.h, dependencyproperty.g.cpp,
20381           style.h, uielement.h, grid.h, media.h: Tweaked annotations to
20382           support managed DP accessor generation.
20384 2008-08-12  Jeffrey Stedfast  <fejj@novell.com>
20386         * collection.cpp (Collection::SetCount): Convenience function.
20387         (Collection::Clear): Use SetCount().
20388         (Collection::Insert): Same.
20389         (Collection::RemoveAt): Same.
20391         * media.cpp (TimelineMarkerCollection::Add): Chain up to direct
20392         parent class rather than base class - while the
20393         DependencyObjectCollection might not currently override Add/Insert
20394         methods, if at some later point overrides are added, then we need
20395         to do no work here.
20397         * collection.cpp (DependencyObjectCollection::SetValueAt):
20398         Removed (not used anywhere).
20399         (Collection::SetValueAtWithError): This needs to call
20400         SetValueAt(), not GetValueAt().
20401         (Collection::SetValueAt): Delete the removed Value after emitting
20402         the event so we don't leak it.
20404 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20406         * animation.h, brush.h, clock.h, control.h, dependencyobject.h,
20407           deployment.h, downloader.h, frameworkelement.h, media.h, text.h,
20408           trigger.h, uielement.h: Use string instead of char* as
20409           @PropertyType.
20411 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20413         * animation.h, brush.h, canvas.h, clock.h, collection.h,
20414           contentcontrol.h, control.h, dependencyobject.h, deployment.h,
20415           downloader.h, frameworkelement.h, geometry.h, grid.h, media.h,
20416           namescope.h, panel.h, shape.h, style.h, stylus.h, text.h,
20417           transform.h, trigger.h, uielement.h, usercontrol.h: Added
20418           @Namespace annotations, and changed @PropertyType which were
20419           declared as gint32 (and are enums) to use the actual enum type.
20420         * dependencyproperty.g.cpp: Updated.
20422 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20424         * src.mdp: Updated.
20426 2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20428         * dependencyproperty.h, type.h, type-generated.cpp, value.h: Added
20429           DependencyProperty to the Kind enum.
20431 2008-08-11  Chris Toshok  <toshok@ximian.com>
20433         * deployment.h (class Application): add ResourceProperty.
20435         * style.h: add ValueProperty.
20437         * cbinding.h, cbinding.cpp: hm, looks like I forgot to regen these
20438         after adding the Version=2.0 stuff to the collection api.
20440         * dependencyproperty.g.cpp: regen.
20442 2008-08-11  Chris Toshok  <toshok@ximian.com>
20444         * error.h, error.cpp: add an enum to MoonError that lets us
20445         specify which exception to raise.
20446         
20447         * collection.h, collection.cpp: a few changes:
20449         1. make most methods take Value* now instead of Value, to ease the
20450         autogenerated bindings.  Leave in Add/Remove taking (Value v) so
20451         we can let c++ do some implicit conversion lifting for us.  Leave
20452         the (Value) variants as non-virtual, and make the Value* ones
20453         virtual.
20455         2. Make ::Add call ::Insert, instead of duplicating all the code.
20457         3. Move all calls of AddedToCollection and RemovedFromCollection
20458         to *after* the work has been done (they're past-tense, so do what
20459         their name implies.)  This means subclasses can assume the item is
20460         already in the array (or removed from it) when those methods are
20461         called.  The one holdout to this utopian ideal is Clear().  we
20462         need to fix that.
20464         4. Switch from overriding GetValue to handle CountProperty (and
20465         leaking a Value* every time we get it) to setting the
20466         CountProperty whenever we need to (in Insert/RemoveAt).
20468         5. Add special GetValueAtWithError, SetValueAtWithError, and
20469         RemoveAtWithError methods, that allow us to effectively raise
20470         exceptions from the unmanaged code.  Use the new
20471         MoonError::ErrorKind enum to specify which exception.
20473         6. remove a bunch of C api, which is now autogenerated.
20474         
20475         * dependencyproperty.g.cpp (dependency_property_g_init): regen to
20476         pick up Collection::CountProperty's default value.
20478         * cbinding.h, cbinding.cpp: autogen'ed collection api.
20480         * stylus.h, media.h, media.cpp: track collection changes.
20482         * dependencyobject.cpp: track MoonError enum change.
20484 2008-08-11  Chris Toshok  <toshok@ximian.com>
20486         * dependencyproperty.g.cpp: regen.
20488         * control.h (class Control): add StyleProperty.
20490 2008-08-11  Sebastien Pouliot  <sebastien@ximian.com>
20492         * layout.cpp: Compute line's height with more precision. This 
20493         removes the cumulative difference (over multiple lines) with
20494         Silverlight implementation. Fix DRT#209 (enough to PASS) and 
20495         improve several other ones (already passing but imperfect).
20497 2008-08-11  Chris Toshok  <toshok@ximian.com>
20499         * style.h: comment out 2 problematic DP's for now.
20501         * dependencyproperty.g.cpp: regen
20503 2008-08-11  Chris Toshok  <toshok@ximian.com>
20505         * style.h, style.cpp: add Style, SetterBase, Setter, and
20506         SetterBaseCollection unmanaged types.
20508         * Makefile.am: add them to the 2.0 build.
20510         * type.h, type-generated.cpp, value.h, cbinding.h, cbinding.cpp,
20511         dependencyproperty.g.cpp: regenerate from style.h/style.cpp.
20512         
20513 2008-08-11  Jeffrey Stedfast  <fejj@novell.com>
20515         * shape.cpp (Polyline::OnCollectionChanged): Invalidate the path
20516         cache.
20517         (Polygon::OnCollectionChanged): Same.
20519         * text.cpp (TextBlock::OnPropertyChanged): Set dirty to true when
20520         the TextDecorationsProperty changes too. Fixes the "underline
20521         hyperlinks" portion of bug #412986.
20523 2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20525         * xaml.cpp: Remove debug spew.
20527 2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20529         * array.cpp, array.h: Removed, no longer needed.
20530         * collection.cpp, collection.h: Moved double_garray_from_str to
20531           collection.cpp|h.
20532         * geometry.cpp, libmoon.h, Makefile.am, point.cpp, point.h, rect.cpp,
20533           shape.cpp, src.mdp, type.h, value.cpp, value.h, value.h.in,
20534           xaml.cpp: Remove the double and point arrays, no longer needed.
20535         * type-generated.cpp: Remove the double and point arrays, no longer
20536           needed. Implement support for 2.0 events.
20538 2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20540         * runtime.cpp: Fix a crash (xaml parser tries to access the NULL loader
20541           during parsing).
20543 2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20545         * dependencyproperty.g.cpp: Surround 2.0 DP declarations in #if SL_2_0.
20547 2008-08-09  Jeffrey Stedfast  <fejj@novell.com>
20549         * *.h: Removed *_new() prototypes which are autogenerated in
20550         cbinding.h
20552 2008-08-08  Chris Toshok  <toshok@ximian.com>
20554         * template.h, template.cpp: new file, stub implementations for
20555         FrameworkTemplate and ControlTemplate.
20557         * Makefile.am: add template.h/cpp.
20559         * control.h: add Template property.
20561         * frameworkelement.h: add some 2.0 events.
20563         * cbinding.h, cbinding.cpp, type.h, dependencyproperty.g.cpp,
20564         value.h, type-generated.cpp: regenerate.
20565         
20566 2008-08-08  Chris Toshok  <toshok@ximian.com>
20568         * xaml.h, xaml.cpp: we need to propagate the 2.0-ness of the
20569         parser around in various methods (starting from the public
20570         xaml_set_property_from_str and value_from_str*) in order to get it
20571         down to where it's needed for the enum_* calls.
20573         * enums.h, enums.cpp: add a "sl2" argument so we can resolve
20574         sl1/sl2 specific enum values, and add the 2.0 specific
20575         Horizontal/VerticalAlignment mappings.
20577 2008-08-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20579         * runtime.cpp: Remove comments to self :)
20581 2008-08-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20583         * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
20584           control.h, deployment.h, text.h, trigger.cpp, dependencyobject.h,
20585           canvas.cpp, transform.h, downloader.cpp, transform.cpp,
20586           animation.h, grid.cpp, shape.h, animation.cpp, deployment.cpp,
20587           control.cpp, runtime.cpp, text.cpp, clock.h, contentcontrol.h,
20588           clock.cpp, uielement.h, collection.h, geometry.h,
20589           contentcontrol.cpp, frameworkelement.h, uielement.cpp, grid.h,
20590           collection.cpp, geometry.cpp, shape.cpp, dependencyobject.cpp,
20591           frameworkelement.cpp, namescope.cpp, brush.h, panel.h, stylus.h,
20592           namescope.h, media.cpp, brush.cpp, usercontrol.h: Remove DP
20593           registration from *_init methods, and remove *_init methods which
20594           turned out to be empty after that.
20596 2008-08-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20598         * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
20599           control.h, deployment.h, text.h, trigger.cpp, dependencyobject.h,
20600           canvas.cpp, transform.h, downloader.cpp, transform.cpp,
20601           animation.h, grid.cpp, downloader.h, shape.h,
20602           dependencyproperty.g.cpp, animation.cpp, deployment.cpp,
20603           control.cpp, runtime.cpp, text.cpp, dependencyproperty.h,
20604           Makefile.am, clock.h, contentcontrol.h, dependencyproperty.cpp,
20605           clock.cpp, uielement.h, collection.h, geometry.h,
20606           contentcontrol.cpp, frameworkelement.h, src.mdp, uielement.cpp,
20607           grid.h, collection.cpp, geometry.cpp, shape.cpp,
20608           dependencyobject.cpp, frameworkelement.cpp, namescope.cpp, media.h,
20609           brush.h, panel.h, stylus.h, namescope.h, media.cpp, brush.cpp,
20610           usercontrol.h: Generate dependency property registration.
20612 2008-08-07  Chris Toshok  <toshok@ximian.com>
20614         * collection.h, collection.cpp (double_collection_from_str): new
20615         method.
20616         (point_collection_from_str): new method.
20618         * xaml.cpp (value_from_str): add support for
20619         DoubleCollection/PointCollection properties.  leave
20620         DoubleArray/PointArray in for now, although nothing should use it.
20622         * shape.h, shape.cpp, geometry.h, geometry.cpp: switch all
20623         PointArray/DoubleArray properties to using
20624         PointCollection/DoubleCollection.  This is unfortunately a
20625         necessity due to the 2.0 changes, but it should be transparent for
20626         everything else.
20628 2008-08-07  Larry Ewing  <lewing@novell.com>
20630         * shape.cpp (Shape::ShiftPosition): add an unfortunate restriction
20631         on ShiftPosition interaction with the shape cache to fix the
20632         droppings we were seeing in AnimationMatrix and
20633         StoryBoard_ModifyProperty.htm.
20635 2008-08-07  Geoff Norton  <gnorton@novell.com>
20637         * media.cpp: When the MediaElement source changes set the
20638         BufferingProgress back to 0 otherwise we may never emit a 
20639         BufferingProgressChangedEvent for the new source.
20641 2008-08-07  Sebastien Pouliot  <sebastien@ximian.com>
20643         * layout.cpp: Handle negative horiBearingX correctly. This gives
20644         better visual results in DRT #47 (same width value, up to 2 
20645         decimal) and #209 (not enough to make it PASS but I doubt the 
20646         master is ok, since I can't duplicate its output).
20648 2008-08-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20650         * dependencyobject.cpp: HasProperty: accept attached properties for
20651           now.
20653 2008-08-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20655         * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
20656           control.h, deployment.h, text.h, thickness.h, trigger.cpp,
20657           canvas.cpp, transform.h, color.h, downloader.cpp, eventargs.cpp,
20658           transform.cpp, animation.h, grid.cpp, downloader.h, eventargs.h,
20659           shape.h, animation.cpp, size.h, deployment.cpp, control.cpp,
20660           text.cpp, clock.h, contentcontrol.h, clock.cpp, uielement.h,
20661           point.h, collection.h, geometry.h, contentcontrol.cpp,
20662           frameworkelement.h, uielement.cpp, grid.h, collection.cpp,
20663           geometry.cpp, shape.cpp, frameworkelement.cpp, media.h, brush.h,
20664           rect.h, panel.h, stylus.h, media.cpp, brush.cpp, usercontrol.h: Add
20665           instructions to generate c constructors in headers and remove *_new
20666           implementations from cpp files.
20667         * dependencyobject.h: Typedef function pointer to avoid making the
20668           generator understand function pointer syntax. Update comments to
20669           new syntax.
20670         * cbinding.h, value.h, src.mdp, cbinding.cpp: Updated.
20671         * type.h, type.h.in: Updated comments to new syntax.
20672         * mms-downloader.h: Use C++ syntax.
20673         * dependencyproperty.h, dependencyproperty.cpp: Make
20674           dependency_property_register_managed_property a method on the type
20675           and update comments to new syntax.
20676         * type-generated.cpp: Updated by new generator, which did actually
20677           catch a few errors.
20679 2008-08-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20681         * dependencyproperty.cpp: DP: Comment out the duplicate DP warning
20682           until it's fixed.
20684 2008-08-06  Geoff Norton  <gnorton@novell.com>
20686         * dependencyproperty.cpp: When registering a clashing DP
20687         return the original so that the code can act on it as it
20688         expects.  Fixes about 18 DRT regressions.
20690 2008-08-06  Chris Toshok  <toshok@ximian.com>
20692         * uielement.h, uielement.cpp: add GetTransformToUIElement, the
20693         unmanaged equivalent to the managed UIElement.TransformToVisual.
20695         Also change the signature of HitTest to take a Point, not two
20696         doubles.  Add a HitTest overload that takes a Rect in
20697         preparation for 2.0.
20699         * panel.h, panel.cpp: track HitTest signature change.
20701         * control.h, control.cpp: track HitTest signature change.
20703 2008-08-06  Chris Toshok  <toshok@ximian.com>
20705         * transform.h, transform.cpp: add a convenience ctor for Matrix
20706         that takes a cairo_matrix_t*.
20708 2008-08-06  Chris Toshok  <toshok@ximian.com>
20710         * type-generated.cpp (type_infos): fix ctors for UIElement and
20711         UIElementCollection.
20713 2008-08-06  Chris Toshok  <toshok@ximian.com>
20715         * frameworkelement.h, frameworkelement.cpp: add
20716         DataContextProperty.
20718 2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20720         * type.cpp: Fix for old glib in sled.
20722 2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20724         * dependencyproperty.cpp, type.cpp, type.h, type.h.in,
20725           type-generated.cpp: Add custom properties to a GSList instead of
20726           the hash table given that several custom properties can be
20727           registered on the same type with the same name.
20729 2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20731         * src.mdp: Make src and plugin projects build.
20733 2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20735         * src.mdp: Updated.
20737 2008-08-05  Chris Toshok  <toshok@ximian.com>
20739         * transform.h, transform.cpp, brush.cpp: Add GeneralTransform as a
20740         superclass of Transform, and move all the current Transform stuff
20741         there.
20743         * type.h, type-generated.cpp, value.h: resync
20745 2008-08-05  Chris Toshok  <toshok@ximian.com>
20747         * uielement.h, uielement.cpp, frameworkelement.h,
20748         frameworkelement.cpp: move the UIElement DPs back - the move to
20749         FrameworkElement breaks tests.
20751         * collection.cpp (TriggerCollection::AddedToCollection): quiet
20752         this down.
20753         (TriggerCollection::RemovedFromCollection): same.
20755 2008-08-05  Chris Toshok  <toshok@ximian.com>
20757         * frameworkelement.h, frameworkelement.cpp: add in the 2.0-only
20758         DependencyProperties.  we need a way to limit access to these to
20759         only the 2.0 case.
20761         * uielement.h, uielement.cpp: CursorProperty, ResourcesProperty,
20762         TagProperty, TriggersProperty are moved to
20763         frameworkelement.h/.cpp.
20764         
20765         * runtime.cpp (Surface::UpdateCursorFromInputList): CursorProperty
20766         moved from UIElement to FrameworkElement.
20768         * size.h, size.cpp: add SizeChangedEventArgs.
20770         * thickness.h: move this type here
20772         * control.h: #include thickness.h
20774         * type.h, value.h, type-generated.cpp: regenerate for
20775         SIZECHANGEDEVENTARGS.
20776         
20777 2008-08-05  Chris Toshok  <toshok@ximian.com>
20779         * Makefile.am (libmoon_la_SOURCES): enums.c => enums.cpp
20781         * enums.h: add comment about keeping MouseCursors enum in sync
20782         with Cursor.cs.
20784         * enums.cpp: make all the mappings use symbols instead of integer
20785         constants.  Also, rename enums.c to enums.cpp so it can include
20786         the .h files for enums not in enums.h.
20788 2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20790         * src.mdp: Remove visual.cpp|h from here too.
20792 2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20794         * brush.cpp, brush.h, dirty.cpp, panel.cpp, panel.h, type.h,
20795           type-generated.cpp, uielement.cpp, uielement.h, value.h,
20796           visual.cpp, visual.h, collection.h, collection.cpp, Makefile.am,
20797           libmoon.h: Deleted Visual (moved content into UIElement), and
20798           renamed VisualCollection to UIElementCollection.
20800 2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20802         * cbinding.cpp, cbinding.h, dependencyobject.cpp, dependencyobject.h:
20803           GetValueWithError: Add a parameter to specify the exact type
20804           (including managed subclassing) of the object. HasProperty: use
20805           that parameter to determine if the type has the specified property
20806           or not.
20807         * dependencyproperty.cpp, dependencyproperty.h: DependencyProperty: Add
20808           a is_custom field to determine if the property is our own or not.
20810 2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20812         * cbinding.cpp, cbinding.h: Updated.
20813         * dependencyobject.h, dependencyobject.cpp, dependencyproperty.cpp,
20814           dependencyproperty.h, runtime.cpp, runtime.h, type.cpp, type.h,
20815           type.h.in, type-generated.cpp: Create a Types class which may
20816           contain additional types. Change the DP/DO/Type overloads
20817           containing a Surface to take a Types argument instead.
20819 2008-08-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20821         * dependencyobject.cpp: Implement Get[No[Default]]ValueWithError.
20823 2008-08-04  Michael Dominic K.  <mdk@mdk.am>
20825         * animation.cpp:
20826         * clock.cpp:
20827         * clock.h: Adding method to store a manual target (instead of a named target)
20828         for a timeline. This will be used to bind a Storyboard.SetTarget 2.0 method.
20830 2008-08-04  Michael Dominic K.  <mdk@mdk.am>
20832         * animation.cpp:
20833         * animation.h: A little bit of C API for KeySpline.
20835 2008-08-04  Michael Dominic K.  <mdk@mdk.am>
20837         * runtime.cpp: _get_surface can only be called from the main thread.
20839 2008-08-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20841         * src.mdp, cbinding.h, cbinding.cpp: Updated.
20842         * Makefile.am: Include error.cpp.
20843         * error.h, error.cpp: Added MoonError.
20844         * dependencyproperty.h: Make RegisterFull 2.0 only.
20845         * dependencyobject.h, dependencyobject.cpp: Added and implemented
20846           Get[[No]Default]ValueWithError and a HasProperty method which takes
20847           into account properties registered on a surface.
20849 2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20851         * canvas.cpp, grid.cpp: Use C++ binding instead of C binding.
20852         * media.cpp: Use property accessors instead of GetValue.
20854 2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20856         * cbinding.cpp, cbinding.h: Update.
20857         * dependencyproperty.cpp: RegisterFull: Only wrap method code in
20858           SL_2_0, fixed 1.0 build.
20860 2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20862         * dependencyproperty.h: Make GetName return a const char*, and rename
20863           parameters from readonly to read_only (to not conflict with C#
20864           keywords).
20866 2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20868         * src.mdp: Updated.
20869         * dependencyproperty.cpp, dependencyproperty.h, Makefile.am: Generate
20870           DependencyProperty's C methods.
20871         * cbinding.cpp, cbinding.h: Added.
20872         * typegen, typegen/typegen.cs, typegen/typegen.sh: Moved typegen to
20873           moon/generators, and add methodgen to generate pinvokes, and cgen
20874           to generate c bindings.
20876 2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20878         * dependencyobject.cpp, dependencyproperty.cpp, dependencyproperty.h:
20879           Implement property changed callbacks.
20881 2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20883         * contentcontrol.h, control.h: Fix includes.
20885 2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20887         * pipeline-ffmpeg.cpp: Fix warning.
20889 2008-08-01  Jeffrey Stedfast  <fejj@novell.com>
20891         * dependencyobject.cpp (EventObject::Dispose): Call
20892         SetSurface (NULL)
20893         (EventObject::unref): Don't call SetSurface() here anymore.
20895 2008-08-01  Michael Dominic K.  <mdk@mdk.am>
20897         * runtime.cpp|h: Adding few utility functions to modify the flags
20898         at runtime -- provided that there are no surfaces currently
20899         present. Would be nice to be able to somehow do it before calling
20900         runtime_init ().
20902 2008-08-01  Michael Dominic K.  <mdk@mdk.am>
20904         * runtime.cpp|h: Adding an expose handoff custom
20905         function that can be set on surface.  It's called just after
20906         render_cb when something has been updated on the screen.
20908 2008-08-01  Michael Dominic K.  <mdk@mdk.am>
20910         * runtime.cpp|h: Adding a global surface list and an
20911         ability to access it.  I have a bad feeling we need some locking
20912         in the _get_surface_list function.
20914 2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20915         
20916         * src.mdp: Updated.
20918 2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
20920         This is the proper fix for bug #412443
20922         * visual.cpp (VisualCollection::Dispose): Implement Dispose()
20923         method.
20924         (VisualCollection::RemovedFromCollection): Now that we know we are
20925         disposing, we can unset VisualParent here instead of in our
20926         dtor/Dispose() method, saving us from having to interate over our
20927         children twice.
20929         * collection.cpp (Collection::Dispose): Implement a Dispose()
20930         method which does what the dtor used to do.
20932         * dependencyobject.cpp (EventObject::unref): Call Dispose() just
20933         before deleting the object.
20935 2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
20937         * dependencyobject.cpp (struct Listener): Comment out the listener
20938         reffing from previous commit. I don't think this is correct.
20940         * visual.cpp (VisualCollection): Set z_sorted to NULL after
20941         freeing it so that parent class dtor calling
20942         RemovedFromCollection() will not poke at free'd memory.
20944 2008-07-31  Geoff Norton  <gnorton@novell.com>
20946         * Makefile.am: Undo part of the recent Makefile changes as they broke 
20947         the 1.0 build.
20949 2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
20951         Fixes bug #412443
20953         * dependencyobject.cpp (DependencyObject::AddPropertyChangeListener):
20954         Ref the listener.
20955         (DependencyObject::RemovePropertyChangeListener): Unref the listener.
20957 2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
20959         * animation.cpp (KeyFrameCollection::RemovedFromCollection): Oops,
20960         this needs to chain up to
20961         DependencyObjectCollection::RemovedFromCollection() rather than
20962         AddedToCollection(). Duh.
20964 2008-07-30  Jeffrey Stedfast  <fejj@novell.com>
20966         * contentcontrol.cpp|h: Added.
20968         * enums.h: Moved some font/text enums here from font.h
20970 2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20972         * dependencyproperty.cpp: Fix build.
20974 2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20976         * runtime.cpp: Fix 1.0 build.
20978 2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20980         * dependencyproperty.cpp, dependencyproperty.h, runtime.cpp, runtime.h,
20981           type.cpp, type.h, type.h.in, typegen/typegen.cs,
20982           type-generated.cpp: Store DependencyProperties in the Type* instead
20983           of a hashtable keyed on the kind.
20985 2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
20987         * dependencyobject.cpp: IsValueValid: treat all MANAGED types as valid,
20988           given that since we might not have access to the surface where the
20989           type was registered, it's not possible to do any type checking 
20990         * dependencyproperty.cpp, dependencyproperty.h, runtime.cpp, runtime.h:
20991           Implement registration of managed properties on a surface.
20992         * type.cpp, type.h, type.h.in: Implement a Type::Find which can look in
20993           types registered on a surface, added a Type::MANAGED enum value.
20994         * typegen/typegen.cs, type-generated.cpp, value.h, value.h.in: Add a
20995           MANAGED type.
20997 2008-07-29  Jeffrey Stedfast  <fejj@novell.com>
20999         * text.cpp (inline_new): Added.
21001 2008-07-29  Jackson Harper  <jackson@ximian.com>
21003         * xaml.cpp: Add a set_parent call, I need to do some fanagling
21004         there so collection items don't have their parents set.
21005         - Managed items that are being hydrated or created using x:Class
21006         need to get content properties from the managed world.
21007         
21008 2008-07-28  Chris Toshok  <toshok@ximian.com>
21010         * value.cpp, value.h.in, value.h, type.h, typegen/typegen.cs,
21011         type-generated.cpp: Add Size foo.
21013 2008-07-28  Jeffrey Stedfast  <fejj@novell.com>
21015         * value.cpp (Value::FreeValue): Oops, free Thickness.
21017 2008-07-28  Chris Toshok  <toshok@ximian.com>
21019         * control.h (struct Thickness): reorder fields to match managed
21020         struct.
21022 2008-07-28  Jeffrey Stedfast  <fejj@novell.com>
21024         * typegen/typegen.cs: Added Thickness.
21026         * value.h.in, type.h.in: Added Thickness.
21028         * value.cpp: Implemented Thickness value ctor/etc.
21030         * enums.h: Added more 2.0-specific enums.
21032         * control.cpp|h: Implemented property accessors/bindings and
21033         Thickness struct.
21035 2008-07-28  Michael Dominic K.  <mdk@mdk.am>
21037         * animation.cpp: When starting an SB that has been started already make sure to
21038         remove the Completed handler before the teardown. Fixes #405518.
21040 2008-07-28  Chris Toshok  <toshok@ximian.com>
21041         
21042         * collection.cpp (collection_iterator_next): move the check for
21043         index-in-range to after the increment of it.  that way managed
21044         code doesn't step off the end of the list.
21046 2008-07-26  Chris Toshok  <toshok@ximian.com>
21048         * eventargs.h, eventargs.cpp: some 2.0 event stuff.  Make the
21049         MouseEventArgs and KeyboardEventArgs classes subclasses of a new
21050         class - RoutedEventArgs.  Also, add a "Handled" field to both
21051         MouseEventArgs and KeyboardEventArgs.  Lastly add a "Keyboard"
21052         class to map to the 2.0 static Keyboard class.  it exposes nothing
21053         but a Modifiers property, which isn't updated at present, but will
21054         be by the Surface code (in the key event handler).
21056         * type.h, value.h, type-generated.cpp: sync - new ROUTEDEVENTARGS
21057         type/value.
21059 2008-07-26  Chris Toshok  <toshok@ximian.com>
21061         * enums.h (enum ModifierKey): 2.0 specific enum for use by the
21062         Keyboard class.
21064 2008-07-26  Jackson Harper  <jackson@ximian.com>
21066         * xaml.cpp: If there isn't a managed content property, try looking
21067         for an unmanaged one.
21069 2008-07-26  Jackson Harper  <jackson@ximian.com>
21071         * xaml.h|cpp: Create elements for imported managed namespaces.
21072         
21073 2008-07-25  Chris Toshok  <toshok@ximian.com>
21075         * runtime.h, runtime.cpp: reformat the class decl to put public:
21076         stuff first.  add "bool silverlight2" to the surface ctor so we
21077         can start to use it for behavioral differences (routed event
21078         handlers, key events, focus, etc).
21080 2008-07-25  Jeffrey Stedfast  <fejj@novell.com>
21082         * stylus.h (StrokeCollection::CanAdd): Strokes can exist in
21083         multiple StrokeCollections at a time but they cannot be added to
21084         the same collection multiple times. Do not default to
21085         DependencyObjectCollection::CanAdd()'s behavior because it checks
21086         that the logical parent is unset (which will not be accurate for
21087         strokes).
21088         (StylusPointCollection): Same as StrokeCollection.
21090         * xaml.cpp (dependency_object_add_child): Set the logical parent
21091         of items to NULL before adding them to a collection.
21093         * collection.h (class Collection): Removed 'unique' field, it's
21094         not necessary afterall.
21095         (Collection::CanAdd): New virtual method to check if the value can
21096         be added to the collection (by default always returns true).
21097         (DependencyObjectCollection::CanAdd): Override CanAdd() by
21098         checking if the object being added has a logical parent. If it
21099         already has a parent, it cannot be added (this is how Silverlight
21100         behaves).
21102         * collection.cpp (Collection::Add): There's no such thing as
21103         'unique' anymore. Don't check if the value is already contained
21104         within our collection like the old code used to do, instead call
21105         our new virtual method CanAdd() to see if we can add it.
21106         (Collection::Insert): Check CanAdd().
21107         (Collection::SetValueAt): Check CanAdd().
21109 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
21111         * collection.cpp (collection_add): Fixed.
21113         * collection.h: Get rid of convenience wrappers that aren't even
21114         used. Also removes the need for previous commit.
21116 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
21118         * collection.h (class DependencyObjectCollection): Add virtual
21119         Add(), Clear() and Insert(). This makes it possible for subclasses
21120         to chain up if they need to override any of these.
21121         (class DoubleCollection): Same.
21122         (class PointCollection): Here too.
21124         * visual.cpp (VisualCollection::Clear): Chain up to
21125         DependencyObjectCollection::Clear() rather than
21126         Collection::Clear().
21127         (VisualCollection::Insert): Don't bother resizing the z_sorted
21128         array here, it will be done inside ResortByZIndex() anyway.
21129         (VisualCollection::Insert): Chain up to
21130         DependencyObjectCollection::Insert() rather than
21131         Collection::Insert()
21133 2008-07-24  Geoff Norton  <gnorton@novell.com>
21135         * downloader.cpp: When a downloader is reused reset the completed
21136         state when we get the new Open call.
21138 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
21140         * text.cpp (inlines_simple_text_equal): Fixed a stupid typo.
21142         * collection.cpp (DependencyObjectCollection::RemovedFromCollection):
21143         Unregister the NameScope the same way the old Collection::Remove()
21144         way did it. This way seems the most correct (RemoveAt() was
21145         totally broken and SetVal() doesn't seem right afterall).
21147 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
21149         * collection.cpp: Added c-wrappers for creating new
21150         collections. Also changed the c-bindings for
21151         setting/adding/inserting/etc items to the collection to take
21152         Value* instead of Value. Should make it simpler for the managed
21153         code to pass that.
21155 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
21157         * collection.cpp (DependencyObjectCollection::RemovedFromCollection):
21158         Unregister the NameScope the same way it was done in the more
21159         common case in the old code (why were there different ways?).
21161         * text.cpp (TextBlock::OnCollectionChanged): Chain up.
21162         (TextBlock::OnCollectionItemChanged): Same.
21164         * brush.cpp (GradientBrush::OnCollectionChanged): Chain up.
21165         (GradientBrush::OnCollectionItemChanged): Chain up and notify
21166         listeners.
21168         * geometry.cpp (GeometryGroup::OnCollectionChanged): Chain up.
21169         (GeometryGroup::OnCollectionItemChanged): Chain up and notify
21170         listeners.
21171         (PathGeometry::OnCollectionChanged): Chain up.
21172         (PathGeometry::OnCollectionItemChanged): Chain up and notify
21173         listeners.
21174         (PathFigure::OnCollectionChanged): Chain up.
21175         (PathFigure::OnCollectionItemChanged): Chain up and notify
21176         listeners.
21178         * shape.cpp (Polygon::OnCollectionChanged): Chain up.
21179         (Polygon::OnCollectionItemChanged): Same.
21180         (Polyline::OnCollectionChanged): Same.
21181         (Polyline::OnCollectionItemChanged): Same.
21183         * stylus.cpp (Stroke::OnCollectionItemChanged): Need to
21184         call NotifyListersOfPropertyChange().
21186         * transform.cpp (TransformGroup::OnCollectionItemChanged): Need to
21187         call NotifyListersOfPropertyChange().
21189 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
21191         * collection.cp|h: Reworked Collections a lot. Collection is now a
21192         generic collection of Values. Added 3 new collections:
21193         DependencyObjectCollection (which holds DO's like the old
21194         Collection class did), DoubleCollection and PointCollection.
21196         * dependencyobject.h (DependencyObject::OnCollectionChanged):
21197         Changed the way this works to reflect the managed API.
21199         *.cpp|h: Updated to reflect above changes.
21201 2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
21203         * utils.cpp (g_ptr_array_insert): New utility function.
21204         (g_ptr_array_insert_sorted): Call g_ptr_array_insert() once we
21205         find the index where we want to add the item.
21207 2008-07-23  Chris Toshok  <toshok@ximian.com>
21209         * panel.cpp, xaml.cpp, stylus.cpp, usercontrol.cpp, canvas.cpp,
21210         transform.cpp, grid.cpp, animation.cpp, text.cpp,
21211         dependencyproperty.h, dependencyproperty.cpp, uielement.cpp,
21212         geometry.cpp, shape.cpp, dependencyobject.cpp,
21213         frameworkelement.cpp, media.cpp, brush.cpp: a couple of
21214         DependencyPropertyChanges:
21216         1. switch to the Silverlight/WPF naming of the two Types.
21217         type/value_type change to owner_type/property_type.
21219         2. go all gtk-3.0, and make things private with accessors.
21221 2008-07-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21223         * animation.cpp, brush.cpp, canvas.cpp, clock.cpp, collection.cpp,
21224           dependencyobject.cpp, dependencyobject.h, dependencyproperty.cpp,
21225           dependencyproperty.h, deployment.cpp, downloader.cpp,
21226           frameworkelement.cpp, geometry.cpp, grid.cpp, media.cpp,
21227           namescope.cpp, panel.cpp, runtime.cpp, shape.cpp, stylus.cpp,
21228           text.cpp, transform.cpp, trigger.cpp, uielement.cpp,
21229           usercontrol.cpp, xaml.cpp: Move Register(Full|Nullable) and
21230           GetDependencyObject from DependencyObject to DependencyProperty.
21232 2008-07-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21234         * dependencyobject.h, dependencyproperty.h, Makefile.am,
21235           dependencyproperty.cpp, src.mdp, dependencyobject.cpp: Move
21236           DependencyProperty to its own file before it grows bigger.
21238 2008-07-21  Jackson Harper  <jackson@ximian.com>
21240         * xaml.cpp: Add back in the ability to create elements from
21241         managed elements using the x:Class syntax.
21243 2008-07-21  Jackson Harper  <jackson@ximian.com>
21245         * user-control.h:
21246         * type-generated.cpp: The UserControl's Content Property name is
21247         Content not ContentProperty.
21249 2008-07-21  Jeffrey Stedfast  <fejj@novell.com>
21251         * collection.cpp (collection_add): Fixed to return int.
21253 2008-07-21  Jackson Harper  <jackson@ximian.com>
21255         * xaml.cpp: Add support for parsing GridLength attribute values.
21257 2008-07-19  Geoff Norton  <gnorton@novell.com>
21259         * mms-downloader.(cpp|h):  Ensure that we always stream-select a marker
21260         stream when there is one available.  Fixes drt #2.
21261         Refactor some code duplication into a utility method.
21263 2008-07-19  Jackson Harper  <jackson@ximian.com>
21265         * xaml.cpp: We can't blindly assume an object has a content
21266         property.
21268 2008-07-19  Jackson Harper  <jackson@ximian.com>
21270         * type-generated.cpp: UserControl has a content property.
21271         * value.h|.h.in|.cpp: Add GridLength to Value.
21273 2008-07-18  Geoff Norton  <gnorton@novell.com>
21275         * media.cpp: Revert InitialBuffer work around as it has some unexpected
21276         consequences. :(
21278 2008-07-18  Geoff Norton  <gnorton@novell.com>
21280         * media.cpp: Clear the InitialBuffer state when we seek as well, as that will
21281         get a new burst from the mms server with AccelBW.
21283 2008-07-18  Geoff Norton  <gnorton@novell.com>
21285         * media.cpp: If we're using a mms source we can attempt to start playing the 
21286         first time before the entire 5s buffer is full due to AccelBW/AccelDuration.
21287         Fixes c9 stream start lag.
21289 2008-07-18  Geoff Norton  <gnorton@novell.com>
21290         
21291         * mms-downloader.cpp: Set LinkBW, AccelBW and AccelDuration so we can fill
21292         our initial buffer quickly.
21294 2008-07-18  Geoff Norton  <gnorton@novell.com>
21296         * pipeline.(cpp|h), mp3.(cpp|h): Break mp3 out into its own files.
21297         * Makefile.am: Add mp3.(cpp|h) to the build.
21298         * pipeline-ffmpeg.cpp: MP3 streamed over asf will bunch multiple frames
21299         together, so we need to split them up and pass them to avcodec_decode_audio2
21300         one at a time.  Its also possible that we could get a partial frame, so we need
21301         to buffer that data. Fixes mms+mp3.
21303 2008-07-18  Jeffrey Stedfast  <fejj@novell.com>
21305         Fix for bug #410206
21307         * text.h (TextBlock::GetBoundingHeight): Return the larger of the
21308         2 values.
21309         (TextBlock::GetBoundingWidth): Same.
21311 2008-07-18  Chris Toshok  <toshok@ximian.com>
21313         * Makefile.am (libmoon_include_HEADERS): add window.h and
21314         window-gtk.h
21315         (libmoon_la_SOURCES): add window-gtk.cpp
21317         * window.h: abstract class for windows, that surface will use to
21318         deal with window/widget level operations.
21320         * window-gtk.h, window-gtk.cpp: MoonWindow implementation using
21321         gtk widgets.
21323         * runtime.h, runtime.cpp: factor out all the widget stuff from
21324         this file, along with all "width" and "height" fields.  now
21325         Surface knows nothing about widgets or windowless.  It speaks to
21326         MoonWindow implementations instead.  Add several public methods
21327         that the window implementations can call (anything HandleUI*) to
21328         communicate events back to the surface.
21330         * canvas.cpp: surface->Get{Width,Height} ==>
21331         surface->GetWindow()->Get{Width,Height}.
21332         
21333 2008-07-18  Michael Dominic K.  <mdk@mdk.am>
21335         * clock.cpp:
21336         * media.cpp: Reverting prev change, different solution: process the tick calls
21337         before processing the render.
21339 2008-07-18  Michael Dominic K.  <mdk@mdk.am>
21341         * media.cpp: If the downloader is already completed, don't do an extra async 
21342         call when setting source. Fixes the downloader-set-source... testcase.
21344 2008-07-18  Michael Dominic K.  <mdk@mdk.am>
21346         * media.cpp: Fixing a crasher in case bad parameters passed from js.
21348 2008-07-18  Jackson Harper  <jackson@ximian.com>
21350         * xaml.h: New delegates and functions for the loader.  We need to
21351         call back into managed code when we import a xaml namespace so
21352         that it knows which objects are available and we need a new
21353         function for creating those objects.
21355 2008-07-18  Jackson Harper  <jackson@ximian.com>
21357         * usercontrol.cpp|h: Add C functions for accessing the Content
21358         element.
21360 2008-07-17  Jackson Harper  <jackson@ximian.com>
21362         * type.h:
21363         * value.h:
21364         * type-generated.cpp:
21365         * deployment.cpp|h: Add an Application type.  This doesnt directly
21366         map to the managed Application because it inherits from
21367         DependencyObject, but it allows us to parse Application XAML files
21368         and then we can pull the values we need.
21370 2008-07-17  Jackson Harper  <jackson@ximian.com>
21372         * libmoon.h: Add usercontrol.h, I want access to this in the
21373         plugin debug code.
21375 2008-07-17  Jackson Harper  <jackson@ximian.com>
21377         * xaml.cpp: Had a backwards IsSubclassOf here causing
21378         UserControl's content property to not get set (and I imagine many
21379         other content properties).
21380         * usercontrol.h: Add the ContentProperty metadata.
21382 2008-07-17  Stephane Delcroix  <sdelcroix@novell.com>
21384         * downloader.h|cpp: provide hooks for DownloadeRequest
21386 2008-07-17  Jeffrey Stedfast  <fejj@novell.com>
21388         * pipeline.cpp (FileSource::ReadInternal): EOF isn't an error.
21390         * runtime.cpp (surface_create_downloader): We need to actually
21391         return the downloader here or our caller will just get garbage ;-)
21393 2008-07-17  Michael Dominic K.  <mdk@mdk.am>
21395         * clock.cpp: When _USE_IDLE_HINT is not sent, don't do idle hinting.
21397         * runtime.h: On desktop and browser by default use idle hinting.
21399 2008-07-17  Michael Dominic K.  <mdk@mdk.am>
21401         * runtime.cpp: Adding "idlehint" to moonlight overrides that will 
21402         control the use of idle hint in the clocks.
21404 2008-07-17  Stephane Delcroix  <sdelcroix@novell.com>
21405         
21406         * runtime.h|cpp: add surface_get_downloader
21408 2008-07-16  Larry Ewing  <lewing@novell.com>
21410         * runtime.cpp: try to get the resize logic correct for all cases,
21411         including popfly, ControlState.htm and fullscreen tests.
21413         Fixes the (non)rendering issues in the popfly game creator.
21415 2008-07-16  Geoff Norton  <gnorton@novell.com>
21417         * mplayer.cpp: Its possible that extremely small audio files will
21418         never fill the sound buffer enough causing us to never call snd_pcm_open.
21419         Ensure that we open the buffer to play the sound before shutting down
21420         the player.
21422 2008-07-16  Geoff Norton  <gnorton@novell.com>
21424         * pipeline.cpp: Update to be able to build with LOG_PIPELINE still
21426 2008-07-16  Sebastien Pouliot  <sebastien@ximian.com>
21428         * layout.cpp: (TextLayout::LayoutWrap) Don't let actualWidth be 
21429         greater than Width. Fix MS DRT#184 and #208. ALso makes #206 
21430         looks better (but it already passed)
21432 2008-07-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21434         * pipeline.cpp, pipeline.h: ProgressiveSource: clean up a bit, this
21435           class doesn't do anything live/mms anymore. LiveSource: removed
21436           completely, never used. Added MemoryNestedSource to wrap another
21437           MemorySource without messing with its current position pointer.
21438           MemoryQueueSource: store already parsed packets instead of
21439           MemorySources in the queue, saves a memory allocation and prevents
21440           parsing each packet twice when buffering (once for the code which
21441           determines the last available pts, and again for the normal
21442           demuxing code path).
21443         * mms-downloader.cpp: Updated to not delete asf parser, unref it
21444           instead.
21445         * mplayer.cpp: Enqueue 3 audio frames instead of 10, makes the pipeline
21446           wait a bit longer before ending up waiting for more data (which
21447           causes the MediaElement to go into buffering mode).
21448         * media.cpp: ProgressiveSource ctor doesn't take any bool arguments
21449           anymore.
21451 2008-07-15  Larry Ewing  <lewing@novell.com>
21453         * dirty.cpp (Surface::AddDirtyElement): quick patch from toshok to
21454         fix a regression in the fullscreen message code.
21456 2008-07-15  Jb Evain  <jbevain@novell.com>
21458         * deployment.cpp|h: start updating Deployment to sl2b2.
21460 2008-07-15  Jb Evain  <jbevain@novell.com>
21462         * deployment.h: remove SupportedCulture and SupportedCultureCollection
21463         as they no longer exist.
21464         * value.h, type.h, type-generated.cpp: regenerate.
21466 2008-07-15  Jb Evain  <jbevain@novell.com>
21468         * deployment.cpp|h: rename RuntimeVersion DP to RuntimeVersionProperty.
21470 2008-07-15  Jb Evain  <jbevain@novell.com>
21472         * list.cpp: set pointers to NULL instead of 0.
21474 2008-07-14  Geoff Norton  <gnorton@novell.com>
21476         * mplayer.cpp: If we've already reached the EOF in the audio stream
21477         don't keep processing GetNextBuffer.  This was causing us to emit
21478         MediaEnded more than once, causing failures in the test suite.
21480 2008-07-14  Geoff Norton  <gnorton@novell.com>
21482         * downloader.cpp:  Change completed to check a bool instead of 
21483         filename, as filename can now be set before the downloader is in fact
21484         completed.
21486 2008-07-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21488         * media.cpp: Initialize Media with our downloader.
21489         * pipeline.cpp: Media::Open: Check if the source has ended while
21490           waiting for an asfparser. Remove print_stack_traces.
21492 2008-07-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21494         * internal-downloader.h: Add InternalDownloader::GetType to allow the
21495           derived internal downloader to tell what kind of internal
21496           downloader it is.
21497         * file-downloader.h: Implement InternalDownloader::GetType.
21498         * downloader.h: Make the internal downloader publicly accessible. Add a
21499           Downloader::IsAborted method.
21500         * mms-downloader.h, mms-downloader.cpp: Implement
21501           InternalDownloader::GetType. Store the ASFParser we create in the
21502           class instance, so that the pipeline can get it. No need to write
21503           the header packet to the stream anymore.
21504         * media.cpp: Don't unref in AddTickCall callbacks anymore. Fix
21505           calculation of buffering progress to take into account that the
21506           currently available pts might be before the last played pts.
21507         * mplayer.cpp, mplayer.h, downloader.cpp: Don't unref in AddTickCall
21508           callbacks anymore.
21509         * pipeline.cpp, pipeline.h: Make the Media ctor take a Downloader
21510           argument and access the internal mms downloader on that Downloader
21511           to get the asf parser. Remove Read/Seek support from
21512           MemoryQueueSource, and just add a Pop method which returns a
21513           MemorySource for the next packet in the queue. Also add support to
21514           return all the packets in the queue as an array so that the
21515           ASFParser can easily determine the last pts available.
21516         * clock.cpp, clock.h: Use our own thread-safe Queue instead of GList +
21517           g_mutex. Also make TickCall take a ref to the data parameter until
21518           the tick call has been made. This also ensures that the data
21519           parameter gets unreffed correctly when the tick call is never made
21520           (such as when we skip calls due to the TimeManager getting shut
21521           down).
21522         * dependencyobject.cpp: Don't ref in AddTickCall anymore.
21524 2008-07-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21526         * playlist.cpp: Fix warning.
21528 2008-07-11  Sebastien Pouliot  <sebastien@ximian.com>
21530         * font.cpp: (FontFace::LoadGlyph) Use linearHoriAdvance instead 
21531         of horiAdvance since the later is rounded to an integer. FixMS
21532         DRT#45 and get better results (less differences) on many font
21533         related tests.
21535 2008-07-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21537         * http-streaming.cpp, playlist.cpp: Add missing #include <config.h>
21539 2008-07-11  Sebastien Pouliot  <sebastien@ximian.com>
21541         * font.cpp: (font_conic_to) Directly use moon_quad_curve_to 
21542         instead of doing it's own second to third order calculation.
21544 2008-07-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21546         * mplayer.cpp: Don't store target pts from audio thread if we're paused
21547           (audio thread might not have gotten the pause request yet).
21549 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21551         * pipeline.cpp: Don't Signal more than once. I have no idea why the
21552           waiting thread doesn't wake up though.
21553         * mplayer.cpp: Comment out a printf, and always break the play loop
21554           when we're doing rw access.
21556 2008-07-10  Sebastien Pouliot  <sebastien@ximian.com>
21558         * geometry.cpp|h: Remove useless code for computing bounds on
21559         PathFigure (now all handled at PathGeometry level).
21561 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21563         * mplayer.cpp: Fix a couple of leaks.
21565 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21567         * pipeline.cpp: There's no need to call AudioPlayer::Initialize
21568           anymore.
21569         * runtime.cpp, runtime.h: Added
21570           RUNTIME_INIT_AUDIO_NO_MMAP/audio=mmap|rw to runtime flags.
21571         * mplayer.cpp, mplayer.h: Implement support for using RW access mode in
21572           addition to the already supported MMAP access mode for alsa. This
21573           also required a major refactoring to only call alsa on the audio
21574           thread due to buggy pulseaudio hanging us (and the rest of the
21575           machine) otherwise.
21577 2008-07-10  Sebastien Pouliot  <sebastien@ximian.com>
21579         * shape.cpp|h: (ComputeStretchBounds) Move shape-specific code
21580         inside each type (and out of the general case).
21582 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21584         * dependencyobject.cpp: Fix leak.
21586 2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21588         * debug.cpp: Make valgrind happy.
21590 2008-07-09  Geoff Norton  <gnorton@novell.com>
21592         * media.cpp: Ensure that we clear our old loader when we set
21593         a new source.
21595 2008-07-09  Fernando Herrera  <fherrera@novell.com>
21597         * pipeline.cpp: Always set MemoryQueueSource element's size
21598         based to offset+n even for live sources.
21600 2008-07-09  Jeffrey Stedfast  <fejj@novell.com>
21602         Fixes for bug #406934
21604         * text.cpp (Glyphs::SetSurface): Override so that we can start
21605         downloading the font as soon as the element gets (re)attached.
21606         (Glyphs::OnPropertyChanged): If we aren't attached, set
21607         uri_changed to true so that when we are (re)attached, we can start
21608         the download.
21610         * media.cpp (MediaBase::MediaBase): Init new state variable
21611         'source_changed' to false.
21612         (MediaBase::SetSurface): If source_changed and we are being
21613         attached to a surface, initiate a download.
21614         (MediaBase::SetSource): Set source_changed to false.
21615         (MediaBase::OnPropertyChanged): Handle SourceProperty changes for
21616         our subclasses.
21617         (MediaElement::OnPropertyChanged): Don't handle SourceProperty
21618         changes anymore, let MediaBase do that for us.
21619         (Image::OnPropertyChanged): Same.
21621 2008-07-09  Geoff Norton  <gnorton@novell.com>
21623         * mms-downloader.cpp: Remove the guard we had against copying
21624         random memory and provide the correct amount of data to the 
21625         pipeline from each packet.
21627 2008-07-09  Geoff Norton  <gnorton@novell.com>
21628         
21629         * downloader.(cpp|h): NotifyFinished is now the finished
21630         event.  The filename will be set (if available) in SetFilename.
21631         * media.(cpp|h): Change to progressivly loading the image
21632         where available (fixes popfly).  We still fallback to file loading
21633         for the JS downloader case for now.
21635 2008-07-09  Larry Ewing  <lewing@novell.com>
21637         * runtime.cpp (Surface::motion_notify_callback): don't call
21638         get_pointer when in windowless mode, I don't think we can trust
21639         the results.
21641         * runtime.h (class Surface): make widget public so that we can
21642         peek at it in windowless mode.
21644 2008-07-08  Sebastien Pouliot  <sebastien@ximian.com>
21646         * xaml.cpp: Always do a move after closing a path. Fix DRT test
21647         #138 (even if it was passing too!) for a bad (extra) arc.
21649 2008-07-08  Larry Ewing  <lewing@novell.com>
21651         * runtime.cpp, runtime.h: remove a bunch of code rot relating to
21652         temporary cairo surfaces that is no longer used.
21654 2008-07-08  Sebastien Pouliot  <sebastien@ximian.com>
21656         * shape.cpp: Consider PenLineCap when computing bounds using
21657         cairo. Fix (even if it was passing) some corners in DRT test #7
21659 2008-07-08  Jeffrey Stedfast  <fejj@novell.com>
21661         * xaml.h: Reorganized a bit.
21663 2008-07-07  Chris Toshok  <toshok@ximian.com>
21665         * dirty.cpp (Surface::AddDirtyElement): don't add elements to the
21666         list if they lack a visual parent (and aren't the toplevel.)
21667         Fixes bug #406935.
21669 2008-07-07  Larry Ewing  <lewing@novell.com>
21671         * shape.cpp (Rectangle::BuildPath): handle some special case
21672         degenerates slightly differently.
21674         Fixes most of test-shape-rectangle-matrix.xaml.
21676 2008-07-07  Larry Ewing  <lewing@novell.com>
21678         * shape.cpp (Ellipse::BuildPath): a thickness equal to a width
21679         degenerates in drawing, use the workaround there too.
21681         Fixes shape #5 in test/xaml/assorted/stroke-thickness-test.html
21683 2008-07-03  Larry Ewing  <lewing@novell.com>
21685         * geometry.cpp (RectangleGeometry::ComputeBounds): simplify the
21686         rectangle geometry computation.  It matches in the sl
21687         implementation now.
21689         * shape.cpp: simplify rectangle and ellipse drawing and bounds so
21690         that they match the sl implementation and deal with degenerate
21691         cases better.  Try to avoid setting up a clip rectangle when it
21692         isn't needed.
21694 2008-07-07  Chris Toshok  <toshok@ximian.com>
21696         [ fixes the media element not showing up in flowers-for-you, bug
21697         #382490. ]
21698         * media.h, media.cpp: move Image::use_img_{width,height} and
21699         Image::updating into MediaBase and rename then
21700         use_media_{width,height} and updating_size_from_media.
21701         (MediaElement::OnPropertyChanged) duplicate the
21702         WidthProperty/HeightProperty stuff here (c&p from
21703         Image::OnPropertyChanged - this should probably just be refactored
21704         to MediaBase.  will do this later).
21705         (MediaBase::ComputeBounds): we don't need the subclass
21706         ComputeBounds methods.  Just put it here, as they share the same
21707         behavior.
21708         (MediaElement::SetMedia): remove the call to ComputeBounds here,
21709         since the new block of use_media_{width,height} checks will call
21710         UpdateBounds if they need to.
21711         
21712 2008-07-07  Fernando Herrera  <fherrera@novell.com>
21714         * media.cpp:
21715         * pipeline.cpp:
21716         * pipeline.h: Implement MemoryQueueSource::NotifyFinished so
21717         we don't wait for new packets when the downloader has finished.
21718         Also calculate size based on offset + n for mms streams, so the
21719         ASFReader can check Eof based on positions.
21721 2008-07-05  Chris Toshok  <toshok@ximian.com>
21723         * dirty.cpp: remove the down_dirty_node_succ and
21724         up_dirty_node_pred code from here.  it arguably helped speed up
21725         insertions into the dirty lists, but at the cost of lots of
21726         dangling pointers.  we always walk up the tree looking for a
21727         down/up node.  works, and is much simpler.  and fixes bug #362561.
21729         * uielement.h, uielement.cpp: remove the down_dirty_node_succ and
21730         up_dirty_node_pred code.
21731         
21732 2008-07-04  Sebastien Pouliot  <sebastien@ximian.com>
21734         * xaml.cpp: Avoid a SIGSEGV in dependency_object_set_attributes
21735         when the atchname is invalid.
21737 2008-07-04  Chris Toshok  <toshok@ximian.com>
21739         * runtime.cpp (Surface::EmitEventOnList): don't leak the event
21740         args here.
21742 2008-07-03  Chris Toshok  <toshok@ximian.com>
21744         * animation.h, animation.cpp: the *KeyFrame KeySplineProperty
21745         values need to be initialized in the ctors, not in animation_init.
21747 2008-07-03  Sebastien Pouliot  <sebastien@ximian.com>
21749         * shape.cpp: Add back the cairo_[save|restore] in ::Draw methods
21750         since they are needed for stretching.
21752 2008-07-03  Jeffrey Stedfast  <fejj@novell.com>
21754         * text.cpp (TextBlock::Render): Check to see if we need to
21755         calculate layout before painting.
21757 2008-07-03  Sebastien Pouliot  <sebastien@ximian.com>
21759         * moon-path.c|h: Draw ellipse clockwise to match Silverlight.
21760         Also remove the closing point since it's not needed (but that was
21761         not the problem, just a small memory saving).
21762         [Re-fix bug #391684]
21764 2008-07-02  Jeffrey Stedfast  <fejj@novell.com>
21766         * text.h (TextBlock::GetBoundingWidth/Height): Use
21767         GetValueNoDefault() so we don't get 0.0 for the width/height if
21768         unset.
21770         Fixes for bug #404858
21772         * runtime.cpp: Added SHOW_TEXTBOXES bit flag.
21774         * layout.cpp: Don't keep track of bbox_width and height anymore,
21775         it was never actually set to anything other than
21776         actual_width/height anyway.
21778         * text.cpp (TextBlock::Paint): If SHOW_TEXTBOXES, render a green
21779         bounding box around the text (this is to aid in debugging text
21780         which may have a transform applied to it).
21782         * text.h (class TextBlock): Removed bbox_width and
21783         bbox_height. These were never anything other than
21784         actual_width/height respectively anyway.
21785         (TextBlock::GetBoundingWidth): Return the FrameworkElement::Width
21786         if set, else the ActualWidth.
21787         (TextBlock::GetBoundingHeight): Same.
21789 2008-07-02  Sebastien Pouliot  <sebastien@ximian.com>
21791         * shape.cpp: Remove cairo_save|restore from [Shape|Path]::Draw
21792         since their callers already do this. Simplify a bit Shape::
21793         InsideObject to check ret only if a Clip is present (instead of
21794         always checking it).
21796 2008-07-02  Chris Toshok  <toshok@ximian.com>
21798         * runtime.h, runtime.cpp: get rid of the cursor_func,
21799         invalidate_func, render_func stuff.  Instead use 3 virtual
21800         methods: SetCursor(GdkCursor*), Invalidate(Rect), and
21801         ProcessUpdates().  That way the plugin can instantiate a
21802         WindowlessSurface which overrides those methods instead of having
21803         the stupid callback mechanism we had.
21805 2008-07-02  Chris Toshok  <toshok@ximian.com>
21807         * runtime.h, runtime.cpp: virtualize SetCursor so the plugin can
21808         override the behavior.
21810 2008-07-02  Sebastien Pouliot  <sebastien@ximian.com>
21812         * moon-path.c: Revert ordering change I made in r105586 to fix
21813         a clipping issue (fillrule bug) as this breaks stroke dash (which
21814         confirm the original behaviour was the correct one).
21815         [Fix most of #404858]
21817 2008-07-01  Jeffrey Stedfast  <fejj@novell.com>
21819         Fixes for bug #405514.
21821         * text.cpp (TextBlock::Layout): If the Text property is empty,
21822         default the actualHeight to the font's height.
21823         (TextBlock::OnPropertyChanged): If the FrameworkElement::Width
21824         property changes, we need to set dirty to true (in most cases) so
21825         that the actual width/height values are recalculated.
21827 2008-06-30  Sebastien Pouliot  <sebastien@ximian.com>
21829         * shape.cpp|h: Use Cairo by default to ComputeBounds. In effect 
21830         this change Polyline and Polygon to use Cairo instead of (faster
21831         but less acurate) custom code. In reality PathGeometry (PML) is 
21832         much more used than those Poly[line|gon] and (upcoming) caching 
21833         negate much of the impact.
21834         * geometry.cpp: Use the more precise (and surviving) 
21835         calc_line_bounds function that accept PenLineCap.
21837 2008-06-30  Jeffrey Stedfast  <fejj@novell.com>
21839         * shape.cpp (Shape::OnPropertyChanged): If the Stroke property
21840         chanegs between null and an actual brush (in either direction),
21841         invalidate the cached path because the shape may need to
21842         recalculate the stroke offsets.
21844 2008-06-30  Sebastien Pouliot  <sebastien@ximian.com>
21846         * xaml.cpp: Move reading the first point of C|Q beziers into the 
21847         loop. Fix quite a few misrendering for http://xmldocs.net/ball
21848         [Partial fix for #404858]
21850 2008-06-30  Chris Toshok  <toshok@ximian.com>
21852         * dirty.cpp: add all the ordering smarts to keep the two dirty
21853         lists partially sorted.  hopefully this won't be a huge
21854         performance hit.
21856         * uielement.h, uielement.cpp: add 2 new dirty pointers.  a "succ"
21857         pointer for the down dirty list, and a "pred" for the up dirty
21858         list.
21860 2008-06-30  Jeffrey Stedfast  <fejj@novell.com>
21862         * list.cpp (List::InsertBefore): Handle a NULL @before.
21864 2008-06-30  Geoff Norton  <gnorton@novell.com>
21866         * mms-downloader.cpp: Rework Fernando's incomplete packet guard to be a little
21867         more sane while we determine how to fix this properly.
21869 2008-06-30  Jeffrey Stedfast  <fejj@novell.com>
21871         * shape.cpp (Shape::ComputeShapeBounds): Reverted my previous fix,
21872         it's not correct.
21873         (Ellipse::ComputeShapeBounds): Same.
21875 2008-06-30  Michael Dominic K.  <mdk@mdk.am>
21877         * animation.cpp: Make sure our default KeySplines parameters are correct
21878         to generate a linear dynamics curve as Silverlight. Fixes #404850.
21880 2008-06-30  Fernando Herrera  <fherrera@novell.com>
21882         * pipeline.cpp: don't use g_queue_clear as is present only in glib >= 2.14
21884 2008-06-30  Fernando Herrera  <fherrera@novell.com>
21886         * pipeline.h:
21887         * pipeline.cpp: Implement the packet writer MemoryQueueSource.
21888         * asf/asf.h:
21889         * asf/asf.cpp: 
21890         * media.h:
21891         * media.cpp: Use MemoryQueueSource for all mms streams
21892         * mms-downloader.cpp: Don't try to parse/write incomplete data packets.
21894 2008-06-29  Chris Toshok  <toshok@ximian.com>
21896         * panel.cpp (Panel::OnCollectionChanged): when the ZIndex of a
21897         child changes, invalidate them here.
21899         * dirty.cpp (Surface::ProcessDownDirtyElements): and remove the
21900         subtree invalidate from the zindex processing here.
21902 2008-06-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21904         * pipeline-ffmpeg.cpp: Add debug spew.
21905         * media.cpp: Remove debug spew.
21907 2008-06-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21909         * media.cpp, media.h: Add streamed markers to the media element on the
21910           main thread.
21912 2008-06-28  Geoff Norton  <gnorton@novell.com>
21914         * downloader.h: The finished event raises a success condition now
21915         so that we can notify failure on unsuccessful downloads.
21917 2008-06-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21919         * mplayer.h: Add AudioPlayer::Drain to drain whatever data the audio
21920           has stored, now called by the MediaPlayer when seeking. Execute the
21921           'seeking complete' logic on the main thread (marshalling
21922           SeekCallback to the main thread). Always use the thread-safe
21923           AddTickCallSafe instead of AddTickCall, and override
21924           EventSurface::SetSurface to lock/unlock the required locks.
21925         * mplayer.cpp: Add AudioPlayer::Drain to drain whatever data the audio
21926           has stored, now called by the MediaPlayer when seeking. Execute the
21927           'seeking complete' logic on the main thread (marshalling
21928           SeekCallback to the main thread), and set the previous_position on
21929           the MediaElement to the seeked-to position when the seek is
21930           finished. Always use the thread-safe AddTickCallSafe instead of
21931           AddTickCall, and override EventSurface::SetSurface to lock/unlock
21932           the required locks.
21933         * dependencyobject.cpp, dependencyobject.h: Split AddTickCall into a
21934           thread-safe version (AddTickCallSafe) and don't do any locking in
21935           AddTickCall. Add SetSurfaceLock/Unlock so that types overriding
21936           SetSurface can do the proper locking.
21937         * media.cpp, media.h: CheckMarkers: Don't try to detect seeking by
21938           comparing to/from pts, MediaPlayer will now set previous_position
21939           correctly when seeking. AdvanceFrame: only check markers if we
21940           advanced or if we're not seeking. SetSurface: add proper locking,
21941           and use AddTickCallSafe where appropiate.
21943 2008-06-27  Larry Ewing  <lewing@novell.com>
21945         * uielement.cpp (UIElement::OnPropertyChanged): opcacity mask
21946         affects the subtree as well.
21948 2008-06-27  Larry Ewing  <lewing@novell.com>
21950         * uielement.cpp (UIElement::OnPropertyChanged): on things that can
21951         potentially be trapped by the Invalidate visibility check we need
21952         to invalidate the whole subtree before we start processing the
21953         dirty lists to avoid ordering issues.
21955         Fixes test/xaml/assorted/rendering-glitches2.html.
21957 2008-06-27  Chris Toshok  <toshok@ximian.com>
21959         * panel.cpp (Panel::FrontToBack): add a special case for
21960         non-translucent (but NULL background) panels - we don't render
21961         them at all.
21963 2008-06-27  Larry Ewing  <lewing@novell.com>
21965         * panel.cpp (Panel::FrontToBack): treat opacity specially for
21966         panel since we need the right subtree render region in PreRender.
21968 2008-06-27  Jeffrey Stedfast  <fejj@novell.com>
21970         * downloader.cpp (dummy_downloader_create_web_request): Return
21971         NULL to fix a compile warning about control reaching the end of a
21972         non-void function.
21974 2008-06-27  Stephane Delcroix  <sdelcroix@novell.com>
21976         * downloader.[h|cpp]: move browserrequest/response from the plugin
21977         as downloaderrequest/response.
21979 2008-06-26  Chris Toshok  <toshok@ximian.com>
21981         * runtime.h (RUNTIME_INIT_DESKTOP, RUNTIME_INIT_BROWSER): enable
21982         the shape cache.
21984         * shape.h, shape.cpp (Shape::IsCandidateForCaching): remove the
21985         condition that was keeping small surfaces from being cached, so
21986         bubblemark gets a win from this (from ~38 to 70+ fps on my
21987         laptop).
21988         (Shape::ShiftPosition): if we have a cached surface, set the
21989         device offset to mirror the new bounds x/y.
21991 2008-06-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
21993         * clock.h, clock.cpp, dependencyobject.h, downloader.cpp,
21994           dependencyobject.cpp, mplayer.h, media.h, mplayer.cpp, media.cpp:
21995           Change AddTickCall to take a TickCallHandler (EventObject*)
21996           function pointer and a EventObject * tick_data instead of untyped
21997           function pointer/tick_data.
21999 2008-06-26  Chris Toshok  <toshok@ximian.com>
22001         * dependencyobject.h,
22002         dependencyobject.cpp (DependencyProperty::DependencyProperty):
22003         convert the name to downcase prior to registering and prior to
22004         calling g_hash_table_lookup to remove the casecmp overhead from
22005         our key comparisons.  store the converted name in DP::hash_key.
22007         * runtime.h, runtime.cpp: remove strcase_equal (use g_strcasecmp)
22008         and strcase_hash.
22010         * type.cpp: strcase_equal -> g_strcasecmp.
22012         * playlist.cpp (PlaylistParser::OnStartElement): same.
22014 2008-06-26  Jeffrey Stedfast  <fejj@novell.com>
22016         * pipeline.cpp (ASXDemuxerInfo::Supports): Fix broken boolean
22017         logic/compiler warning and at the same time simplified.
22019         * shape.cpp (Shape::ComputeShapeBounds): Need to take stroke
22020         thickness into consideration. Fixes bug #400657.
22021         (Ellipse::ComputeShapeBounds): Same.
22023 2008-06-26  Chris Toshok  <toshok@ximian.com>
22025         * dirty.cpp (Surface::ProcessDownDirtyElements): add code to
22026         re-sort the children by zindex.
22028         * dirty.h (enum DirtyType): add DirtyChildrenZIndices.
22030         * panel.cpp (Panel::OnCollectionChanged): don't resort-by-zindex
22031         here.  just add it to the dirty list.
22033         * transform.h, transform.cpp: move the OnSubPropertyChanged method
22034         to MatrixTransform, so we can notify our listeners with the right
22035         property.
22037 2008-06-26  Chris Toshok  <toshok@ximian.com>
22039         * transform.h, transform.cpp (Transform::OnSubPropertyChanged): we
22040         need this to deal with sub-dependencyobjects of transforms (in
22041         this case, MatrixTransform's Matrix object.)  when you set
22042         properties on these subobjects, we need to update the transform.
22044 2008-06-26  Chris Toshok  <toshok@ximian.com>
22046         * brush.h, brush.cpp (Brush::OnSubPropertyChanged): add this (i
22047         think it used to be there and was removed by me in a flurry of
22048         propertychanged event fixing way back) to take care of brushes
22049         properly causing the uielement to invalidate when the Brush's
22050         transform/relativetransform changes.
22052 2008-06-26  Sebastien Pouliot  <sebastien@ximian.com>
22054         * geometry.h: #ifdef out GeometryFlags until we start using it.
22055         * shape.cpp: Remove unused global variable.
22057 2008-06-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22059         * mplayer.cpp: AudioFinished: Check if we still have audio when the
22060           callback is reached. Fixes test-double-stop.html.
22062 2008-06-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22064         * mplayer.cpp: When calculating start_time take into account current
22065           position. Fixes test-video-only-seek.html (and fox seeking without
22066           audio).
22068 2008-06-25  Jeffrey Stedfast  <fejj@novell.com>
22070         * mms-downloader.cpp: Got rid of overuse of this-> and some int vs
22071         uint comparisons.
22073 2008-06-25  Sebastien Pouliot  <sebastien@ximian.com>
22075         * geometry.cpp: Cache bounds, both logical and "physical" for
22076         PathFigure. This reduce the number of time we need to call 
22077         cairo_[path|stroke|fill]_extents functions and speed up many
22078         sites.
22079         * geometry.h: Add stuff needed for geometry.cpp changes.
22080         * xaml.cpp: Change geometry_from_str to directly create a 
22081         moon_path and avoid the PathFigure[Collection] DO. This match
22082         how Silverlight handle Path Markup Language (PML) and reduce
22083         memory requirements when huge PML are used.
22085 2008-06-24  Chris Toshok  <toshok@ximian.com>
22087         * shape.cpp (calc_offsets): we don't want to divide by the sin,
22088         because as angle approaches either 0, PI, or PI/2, the sin will
22089         approach 0, and therefore the deltas will grow very, very large.
22090         Turns out multiplying is what we want.
22092 2008-06-24  Larry Ewing  <lewing@novell.com>
22094         * runtime.cpp (Surface::Resize): set the width and height properly
22095         in the windowless case, let the widget resize logic handle it
22096         otherwise.
22097         (Surface:render_cb): don't process dirty elements if we are in a
22098         zombie state, just clear the dirty lists and move on.  Fixes a
22099         crash we were seeing when calling ForceRender on a zombie plugin.
22101 2008-06-24  Chris Toshok  <toshok@ximian.com>
22103         * runtime.cpp: in the switch from function pointer to integer in
22104         the HandleMouseEvent stuff, I didn't catch that C++ apparently
22105         doesn't flag NULL as different from 0.  This was causing the
22106         "HandleMouseEvent (NULL" to become effectively become
22107         "HandleMouseEvent (UIElement::DestroyedEvent" which of course
22108         breaks all sorts of things.  In bug 401884 it was causing the
22109         namescope to drop the named item from its hashtable, causing the
22110         tattoo needle to not move vertically.
22112 2008-06-23  Chris Toshok  <toshok@ximian.com>
22114         * uielement.cpp (UIElement::PreRender): comment from the code is
22115         changelog-worthy:
22116         
22117         we need this check because ::PreRender can (and will) be called
22118         for elements with empty regions.
22119         
22120         The region passed in here is the redraw region intersected with
22121         the render bounds of a given element.  For Panels with no
22122         width/height specified in the xaml, this region will be
22123         empty. (check panel.cpp::FrontToBack - we insert the ::PreRender
22124         calling node if either the panel background or any of the children
22125         intersect the redraw region.)  We can't clip to the empty region,
22126         obviously, as it will keep all descendents from drawing to the
22127         screen.
22129 2008-06-23  Chris Toshok  <toshok@ximian.com>
22131         * uielement.h, uielement.cpp (UIElement::ShiftPosition): virtualize
22132         the "bounds.x = p.x; bounds.y = p.y" code, since subclasses have
22133         other, more specialized bounds that also need updating.
22135         * panel.h, panel.cpp (Panel::ShiftPosition): new method, chain up
22136         to UIElement::ShiftPosition and also update bounds_with_children.
22138         * stylus.h, stylus.cpp (InkPresenter::ShiftPosition): new method,
22139         chain up to Canvas::ShiftPosition, and also update render_bounds.
22141 2008-06-23  Chris Toshok  <toshok@ximian.com>
22143         * canvas.cpp (Canvas::OnSubPropertyChanged): allow switching
22144         between UpdatePosition and UpdateTransform according to the
22145         updatepos=yes/no override.
22147         * runtime.h, runtime.cpp: add updatepos=yes/no override.
22148         
22149 2008-06-23  Michael Dominic K.  <mdk@mdk.am>
22151         * clock.cpp: Fixing a problem with repeating animations. Fixes #401983.
22153 2008-06-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22155         * media.cpp: Don't check markers if from > to, no markers will ever be
22156           found in that interval. Also detect forward seeks by checking the
22157           difference between from and to, if difference > 1s, behave as a
22158           seek (and don't emit markers in that interval). 
22159         * pipeline-ffmpeg.cpp: Give more missing information to ffmpeg.
22161 2008-06-20  Jeffrey Stedfast  <fejj@novell.com>
22163         * animation.h: Added "Property Accessor" comments and grouped the
22164         property accessors, etc.
22166         * dependencyobject.cpp (EventObject::SetSurface): Reworded debug
22167         printf.
22168         (EventObject::AddTickCall): Same.
22170         * dependencyobject.h (EventObject::GetSurface): Don't amke this
22171         virtual, nothing overrides it currently.
22173 2008-06-20  Michael Dominic K.  <mdk@mdk.am>
22175         * animation.cpp:
22176         * animation.h:
22177         * clock.cpp:
22178         * clock.h: When detaching/reattaching to Surface execute a special
22179         handler on clocks that (in case of animation clocks) removes the update
22180         property handler. This fixes the (regressed some time ago)
22181         StoryboardEnterLeave semantics test.
22183 2008-06-19  Jackson Harper  <jackson@ximian.com>
22185         * animation.h: 
22186         * type-generated.cpp: Make sure the content property is set.
22188 2008-06-19  Larry Ewing  <lewing@novell.com>
22190         * uielement.cpp (UIElement::PreRender): work around what appears
22191         to be a bug in the ftb logic by not clipping to the render region.
22193         * clock.cpp (SystemTimeSource::Start): make the timer priority
22194         DEFAULT again since otherwise we can get into starvation
22195         situations.
22197         * uielement.cpp (UIElement::PreRender): don't save/restore around
22198         the clip changes, they restrict the group bounds and speed up
22199         opacity related masking substantially.  (See bubblemark).
22201 2008-06-19  Jeffrey Stedfast  <fejj@novell.com>
22203         * font.cpp (FontFace::GetExtents): Only set face pixel size if the
22204         requested size is not what we already have set.
22205         (FontFace::LoadGlyph): Same.
22206         (FontFace::Kerning): Need to set pixel sizes here or our kerning
22207         could be off.
22209 2008-06-19  Chris Toshok  <toshok@ximian.com>
22211         * canvas.cpp (Canvas::OnSubPropertyChanged): call
22212         ui->UpdatePosition instead of UpdateTransform.  Since
22213         UpdateTransform calls UpdateBounds, this should save us a
22214         sometimes costly (in the case of Shape's) trip through
22215         ComputeBounds.
22217         * uielement.h, uielement.cpp: Add UpdatePosition (adds the dirty
22218         node) and ComputePosition (called from ProcessDownDirtyElements.)
22219         (UIElement::ComputePosition): Apply the inverse absolute transform
22220         to the bounds x/y, compute the new transform, then reapply it to
22221         the bounds x/y to compute our new position.
22222         (UIElement::UpdateTransform): clear the DirtyPosition flag.
22223         (UIElement::UpdatePosition): only add the DirtyPosition flag if
22224         the Dirty*Transform flags aren't already set.
22226         
22227         * dirty.cpp (Surface::ProcessDownDirtyElements): add blocks for
22228         Clip, LocalClip, and Position (only Position is implemented).
22230         * dirty.h: clean up the enum some, and add 3 new passes (only one
22231         of which, DirtyPosition, is implemented).
22233 2008-06-19  Jeffrey Stedfast  <fejj@novell.com>
22235         * transform.cpp: Started adding property accessor methods.
22237         * canvas.cpp (Canvas::[G,S]etLeft): Implemented.
22238         (Canvas::[G,S]etTop): Same.
22240         * uielement.cpp (UIElement::[G,S]etLeft): Moved to Canvas.
22241         (UIElement::[G,S]etTop): Same.
22243 2008-06-19  Chris Toshok  <toshok@ximian.com>
22245         * rect.h: add Get{Top,Bottom}{Left,Right} methods.
22247         * point.h, point.cpp: add Transform method.
22249 2008-06-19  Michael Dominic K.  <mdk@mdk.am>
22251         * animation.cpp: In a *AnimationUsingKeyFrames if we don't have any
22252         keyframes specified the duration is 0, not Automatic. This fixes the 
22253         http://www.etonline.com/silverlight/grammys50/ website.
22255 2008-06-18  Sebastien Pouliot  <sebastien@ximian.com>
22256         
22257         * geometry.cpp: Use the new moon-path functions for ArcSegment
22258         and QuadraticBezierSegment
22259         * moon-path.c: Change some validation to use g_return_if_fail
22261 2008-06-18  Jeffrey Stedfast  <fejj@novell.com>
22263         * runtime.cpp (Surface::ShowFullScreenMessage): Simplified to use
22264         SetLeft().
22266         * control.cpp (Control::GetTransformFor): Simplified.
22268         * uielement.cpp (UIElement::SetLeft): Added for setting
22269         Canvas.Left property.
22270         (UIElement::GetLeft): Same.
22271         (UIElement::SetTop): Same.
22272         (UIElement::GetTop): Same.
22274         * canvas.cpp (Canvas::GetTransformFor): Simplified.
22276 2008-06-18  Sebastien Pouliot  <sebastien@ximian.com>
22278         * shape.cpp: When possible (i.e. if we won't change the bounds
22279         anyway) avoid the second pass inside Shape::ComputeStretchBounds.
22280         This reduce (but does not eliminate) a BIG bottleneck for SL
22281         applications with many path using stretch (e.g. SL world).
22283 2008-06-18  Geoff Norton  <gnorton@novell.com>
22285         * media.cpp: The state when Seeking should not be changed to Stopped.
22286         Fixes another test.
22288 2008-06-17  Jeffrey Stedfast  <fejj@novell.com>
22290         Partial fix for bug #400657.
22292         * dependencyobject.cpp (DependencyObject::IsValueValid): If the
22293         value is a null dependency object, don't check that the types
22294         match - it doesn't matter.
22296         * color.cpp (color_to_string): New convenience utility function to
22297         aid in debugging. Returns a pointer to a static string buffer, so
22298         be careful...
22300 2008-06-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22302         * playlist.cpp, playlist.h: Only unref/null out the media in
22303           PlaylistEntry::Stop if we're a playlist and not if we're a single
22304           file.
22306 2008-06-17  Sebastien Pouliot  <sebastien@ximian.com>
22308         * moon-path.c|h: Add moon_quad_curve_to and moon_arc_to so they
22309         can be reused without a PathFigure-derived instance. Refactor
22310         code to expand/realloc paths to reduce duplication.
22312 2008-06-16  Chris Toshok  <toshok@ximian.com>
22314         * uielement.cpp (UIElement::OnPropertyChanged): call
22315         Invalidate(GetSubtreeBounds()) and UpdateBounds() directly instead
22316         of FullInvalidate.
22317         (UIElement::OnSubPropertyChanged): same.
22319 2008-06-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22321         * playlist.cpp: When Merging items only merge duration if the source
22322           has duration.
22323         * media.cpp: MediaElement::MediaOpened: when setting the media on the
22324           current item in the playlist, make sure we set the media on a
22325           PlaylistEntry, not on a (nested) Playlist.
22327 2008-06-16  Jeffrey Stedfast  <fejj@novell.com>
22329         * yuv-converter.cpp (YUVConverter::YUVConverter): Replace
22330         g_error() with g_warning(). There's really nothing else we can do
22331         here...
22332         (YUVConverter::Convert): Check if rgb_uv is NULL, if it is try
22333         allocating it again? Maybe some resources have been released since
22334         the ctor was called?
22336         * pipeline-ffmpeg.cpp (FfmpegDecoder::DecodeFrame): Replace
22337         g_error() with a g_warning() and return MEDIA_OUT_OF_MEMORY error.
22339         * mplayer.cpp (MediaPlayer::Open): Change g_error() into a
22340         g_warning() and return fail.
22342 2008-06-16  Michael Dominic K.  <mdk@mdk.am>
22343         
22344         * clock.cpp: Don't do the ExtraRepeat action when seeking.
22346 2008-06-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22348         * media.cpp, media.h: Move Play/Pause due to AutoPlay logic into one
22349           method.
22350         * playlist.cpp: When we stop, clear out our media. This fixes an issue
22351           where we didn't correctly download a file if it was stopped after
22352           it was opened, but before fully downloaded, and then restarted.
22354 2008-06-13  Jeffrey Stedfast  <fejj@novell.com>
22356         * dependencyobject.cpp (include): stdlib.h for strtol()
22358         Fix for jumping to the last page in PageTurn.
22360         * uielement.cpp (UIElement::OnSubPropertyChanged): Need to call
22361         UpdateTotalRenderVisibility() when the clip changes.
22363 2008-06-13  Michael Dominic K.  <mdk@mdk.am>
22365         * animation.cpp:
22366         * moon-curves.c:
22367         * moon-curves.h: Cleaning up the KeySpline curve implementation a bit.
22369 2008-06-13  Michael Dominic K.  <mdk@mdk.am>
22371         * Makefile.am:
22372         * animation.cpp:
22373         * animation.h:
22374         * moon-curves.c:
22375         * moon-curves.h: First version of the new algho for calculating the "y
22376         at x" for KeySplines, now with 200% more accuracy guaranteed! Fixes the
22377         AnimationMatrix2 test.
22379 2008-06-12  Jackson Harper  <jackson@ximian.com>
22381         * xaml.cpp: Remove some cruft.
22382         - Rename Custom to Managed
22383         - We don't need element maps for the namespaces anymore
22384         - Deploy can go into the default list of namespaces.
22386 2008-06-12  Fernando Herrera  <fherrera@novell.com>
22388         * playlist.cpp: Parse ASX2 files using GKeyFile API to have sane NULL
22389         terminated strings. Also keep any uri paramson the mms Ref.
22391 2008-06-12  Jackson Harper  <jackson@ximian.com>
22393         * xaml.cpp: Use the new stuff for creating wrapped types.
22394         - make XamlElementInstance pure virtual.
22396 2008-06-12  Jackson Harper  <jackson@ximian.com>
22398         * xaml.cpp: Clean up API for creating wrapped dependency objects.
22400 2008-06-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22402         * type.cpp: Fix type verification to not check 2.0 types for 1.0
22403           builds.
22405 2008-06-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22407         * media.cpp, media.h: Don't AutoPlay playlists which have already been
22408           autoplayed. Make Play/Pause/Stop/Seek async.
22409         * playlist.cpp, playlist.h: Add a AutoPlayed field to Playlist.
22411 2008-06-12  Chris Toshok  <toshok@ximian.com>
22413         * control.cpp, control.h, deployment.h, frameworkelement.h,
22414         grid.h, runtime.cpp, size.h, type-generated.cpp, type.h,
22415         uielement.h, value.h, xaml.cpp: I was a little too aggressive.  we
22416         can't use SL_2_0 in most places in headers (or rather, shouldn't).
22417         It might be a good idea to remove all references to it, but this
22418         at least gets the ms-tests running and passing again --with-mono.
22419         Switch to using SL_2_0 around the #includes in the .cpp files, and
22420         in value.h/type.h just include the 2.0 types.
22422         * usercontrol.h, usercontrol.cpp: split out the code from
22423         control.h, control.cpp here.
22425         * Makefile.am: add usercontrol.[h,cpp]
22427         * typegen/typegen.cs: fix up the header emission.
22429 2008-06-12  Sebastien Pouliot  <sebastien@ximian.com>
22431         * geometry.cpp|h: Refactor work between PathGeometry and PathFigure
22432         ComputeBounds to avoid creating/destroying a new cairo context for
22433         each figure (it's now shared). Refactor PathFigure::Build not to scan
22434         the path list twice and rely on moon-path automatic size increase.
22435         Also avoid cairo_fill_extents if the path can't be filled or no fill
22436         brush is present.
22438 2008-06-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22440         * runtime.cpp: CreateDownloader: don't allow creating downloaders if we
22441           can't get a surface, nor if the surface is a zombie.
22442         * text.cpp, playlist.cpp, media.cpp: Surface::CreateDownloader may
22443           return NULL now, add a null check.
22445 2008-06-11  Jackson Harper  <jackson@ximian.com>
22447         * xaml.cpp: Move GetKind to the info.  Doesn't make sense for
22448         Instances to have a kind (they can access their kind from their
22449         info).
22451 2008-06-11  Sebastien Pouliot  <sebastien@ximian.com>
22453         * geometry.cpp: Remove unneeded cairo_save|restore inside Draw 
22454         methods (since Shape::Draw already does it) and remove
22455         cairo_set_fill_rule (since Shape::Fill does it).
22457 2008-06-11  Jackson Harper  <jackson@ximian.com>
22459         * xaml.cpp: Clean up the namespace map when destroying the parser.
22461 2008-06-11  Sebastien Pouliot  <sebastien@ximian.com>
22463         * geometry.h: Fix GeometryGround::ComputeBounds so it does
22464         not always returns 0,0,0,0 (from Geometry).
22466 2008-06-11  Geoff Norton <gnorton@novell.com>
22468         * downloader.cpp: Only Abort if we have a surface.
22469         * runtime.cpp: Detach the downloaders when we zombify.
22471 2008-06-11  Sebastien Pouliot  <sebastien@ximian.com>
22473         * moon-path.c: Reorder ellipse points so the fill rule can be 
22474         applied correcly (e.g. filling or clipping).
22476 2008-06-11  Michael Dominic K.  <mdk@mdk.am>
22478         * clock.cpp: Fixing seeking on nested storyboards. Fixes
22479         seek-test-nested-storyboard.xaml in assorted and one more
22480         AnimationMatrix2 block. Now only one left to fix...
22482 2008-06-10  Geoff Norton  <gnorton@novell.com>
22484         * mms-downloader.cpp: Reset our internal state after seeking so
22485         we can resume the stream in the right place.
22487 2008-06-10  Geoff Norton  <gnorton@novell.com>
22489         * mms-downlodaer.cpp: Remove some improperly commited debug code
22491 2008-06-10  Chris Toshok  <toshok@ximian.com>
22493         * control.h, control.cpp, deployment.h, uielement.h,
22494         uielement.cpp, frameworkelement.h, value.h, grid.h, size.h, xap.h,
22495         runtime.cpp: wrap everything SL2.0 with INCLUDE_MONO_RUNTIME (for
22496         now.  I'll be changing that ifdef soon.)  Also, mark all 2.0
22497         specific types with the following typegen pragma: /*
22498         @SilverlightVersion="2" */ so that the generated files contain the
22499         proper ifdefs as well.
22501         * type-generated.cpp, type.h, value.h: resync with new ifdefs.
22503 2008-06-10  Jackson Harper  <jackson@ximian.com>
22505         * dependencyobject.cpp: Add todo for Name validation.
22507 2008-06-11  Fernando Herrera  <fherrera@novell.com>
22509         * xaml.cpp: Accept numbers and strings representing numbers as
22510         values for BOOL properties. Also accept "true" and "false" case
22511         variants.
22512         * playlist.cpp: ASX2 files can use ?MSWMExt=.asf and &MSWMExt=.asf
22513         ending uris, so just check for "MSWMExt=.asf".
22514         Fixes hsn.tv, bug #362328.
22516 2008-06-10  Jackson Harper  <jackson@ximian.com>
22518         * xaml.cpp: ContentProperty should be on the ElementInfo not the
22519         ElementInstance, since you can only have one content property per
22520         a type.
22522 2008-06-10  Geoff Norton  <gnorton@novell.com>
22523         
22524         * mms-downloader.cpp: Fix some looping logic when seeking (partially
22525         fixed).  Fix a typo when enumerating the streams array to not exceed
22526         the bounds.
22528 2008-06-10  Jackson Harper  <jackson@ximian.com>
22530         * xaml.cpp: Remove default prefix override check.  This must have
22531         only been in one of the early versions of SL because I can't get
22532         SL to do it anymore.  This helps fix video page turn.
22534 2008-06-10  Jackson Harper  <jackson@ximian.com>
22536         * xaml.cpp: Remove x:Code since this isn't used in SL 2.0.
22538 2008-06-10  Chris Toshok  <toshok@ximian.com>
22540         * dependencyobject.h, dependencyobject.cpp: split the Emit()
22541         machinery up into 3 methods.  StartEmit, DoEmit, and FinishEmit.
22542         StartEmit returns a context object passed to the other two
22543         methods.
22545         * runtime.h, runtime.cpp: use the new
22546         EventObject::{Start,Do,Finish}Emit methods to make event bubbling
22547         more transactional - any changes made to the listener list for the
22548         event we're bubbling up, for any element in our input list, are
22549         delayed until after the event has propagated.  Fixes our test id
22550         191 (test-bubbling.html) as well as bug #351568.
22552 2008-06-10  Sebastien Pouliot  <sebastien@ximian.com>
22554         * shape.cpp|h: Don't call ComputeShapeBounds(true) unless we need
22555         its value (i.e. Stretch != None). Make Shape::ComputeShapeBounds
22556         reuse it's physical bounds for logical instead of computing it 
22557         twice.
22559 2008-06-10  Michael Dominic K.  <mdk@mdk.am>
22561         * animation.cpp:
22562         * animation.h:
22563         * clock.cpp:
22564         * clock.h: Replacing CreateClock with AllocateClock implementation and
22565         making sure the latter is called for Storyboards. That fixes the nested
22566         storyboards inside other storyboards...
22567         test-animation-nested-storyboard.xaml and one step more for
22568         AnimationMatrix2.
22570 2008-06-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22572         * dependencyobject.h: Another greppable comment.
22574 2008-06-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22576         * dependencyobject.cpp: Add comment to assert which shows up while
22577           grepping.
22579 2008-06-06  Geoff Norton  <gnorton@novell.com>
22581         * file-downloader.h: Fix a bug between argument sending and class
22582         variables that was causing us to free and strdup the free'd pointer.
22584 2008-06-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22586         * mms-downloader.cpp: Return NULL from GetDownloadedFilename and
22587           GetResponseText.
22589 2008-06-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22591         * src.mdp: Updated.
22593 2008-06-06  Jeffrey Stedfast  <fejj@novell.com>
22595         * xaml.cpp: Don't use the c++ ctor initializer stuff, it breaks if
22596         members change order (like it did recently).
22597         (wrap_dependency_object): Get rid of unused variables.
22599         * media.cpp (Image): Made bools share a single int.
22601 2008-06-06  Jackson Harper  <jackson@ximian.com>
22603         * xaml.cpp: Use the Type system for looking up elements, make
22604         things a little more OOP so we can easily add some of the 2.0
22605         features.  Note:  This is going to break x:Code and deployment
22606         temporarily.
22607         
22608 2008-06-05  Geoff Norton  <gnorton@novell.com>
22610         * downloader.cpp, downloader.h: More refactoring to hide the zip related
22611         details in the FileDownloader.  NOTE: The exposure of the file downloader
22612         to the Text side is ugly and should be cleaned up.
22613         * text.cpp: Access obfuscated font details thru the FileDownloader API.
22614         * file-downloader.cpp, mms-downloader.cpp, internal-downloader.h: Expose
22615         the filename thru the downlodaer api.
22616         * downloader.cpp: No longer leak InternalDownloaders.
22618 2008-06-05  Geoff Norton <gnorton@novell.com>
22620         * mms-downloader.cpp, mms-downloade.h: Implement time measuring of
22621         the $P packet pair, and implement and initial algorithm to do proper
22622         bandwidth stream selection.
22624 2008-06-05  Geoff Norton <gnorton@novell.com>
22625         
22626         * downloader.cpp:  Remove some left over unused variables, and the
22627         is_valid_mms_type inline.
22629 2008-06-05  Geoff Norton <gnorton@novell.com>
22631         * Makefile.am: Add file-downloader and mms-downloader to the build.
22632         * file-downloader.(cpp|h): This class is a implementation of the new
22633         InternalDownloader class utilized by the downloader to differentiate
22634         between MMS and regular requests.  We should move the zip logic here.
22635         * mms-downloader.(cpp|h): This class is the MMS implementation of the
22636         InternalDownloader class.
22637         * internal-downloader.h: Route callbacks from the plugin thru this class
22638         to their appropriate file (NPStream) / MMS based implementations.
22639         * downloader.cpp: Update the API to call the InternalDownloader based
22640         representation instead of large if (mms) branches.
22642 2008-06-05  Geoff Norton  <gnorton@novell.com>
22644         * downloader.cpp, downloader.h:  Initial implementation of MMS inside
22645         libmoon.  The API has been extended to register two additional callbacks
22646         to set HTTP headers, and the HTTP body.
22648 2008-06-05  Michael Dominic K.  <mdk@mdk.am>
22650         * xaml.cpp: Removing the "broken parsing" of RepeatBehavior in
22651         --with-compatibility-bugs mode. It looks like the parsing is fine. The
22652         bug is now "implemented" in clock.cpp.
22654 2008-06-05  Michael Dominic K.  <mdk@mdk.am>
22656         * clock.cpp: In ComputeNewTime when we're going over our duration time
22657         and we're AutoReversed, check actually how big the diff is cause it
22658         might be that we need to "wrap around self" and switch to forward time
22659         direction anyways (such is the case with seeking). 
22661         In other words, allow to seek into particular interation of
22662         RepeatBehavior="XXXx", not only the first one. Fixes one more
22663         AnimationMatrix2 block and seek-test-multiple-repeat.xaml in assorted.
22665         This prolly needs a littlbe bit more work still, similiar mechanism
22666         needs to be present in DoRepeat etc.
22668 2008-06-05  Stephane Delcroix  <sdelcroix@novell.com>
22670         * stylus.cpp: fixing a bug. stupid me.
22672 2008-06-05  Stephane Delcroix  <sdelcroix@novell.com>
22674         * rect.h: new Rect (Point, Point) ctor, new ExtendTo (point) and
22675         ExtendTo (double, double) methods.
22677         * stylus.h|cpp: new StylusPointCollection::GetBounds (), check for
22678         intersection of bounds and StylusPointCollection::GetBounds in HitTest
22679         to avoid checking for stroke intersection in most of the cases. Speed
22680         up erasing in inkJournal.
22682 2008-06-04  Michael Dominic K.  <mdk@mdk.am>
22684         * clock.cpp: Interesting -- looks like in SL the timespan-based 
22685         RepeatBehavior is scaled by the SpeedRatio. Ie. 00:00:10 with SpeedRatio
22686         0.5 becomes 00:00:05. I wonder if it's a bug or intended feature?
22687         Anyways, implementing this and fixing two more blocks in
22688         AnimationMatrix2.
22690 2008-06-04  Michael Dominic K.  <mdk@mdk.am>
22692         * clock.cpp: Slightly reworking the seek offsett calculations to include
22693         the SpeeRatio multiplier but do not apply it to BeginTime. Fixes one
22694         more block in AnimationMatrix2 and the test-seek-spee-ratio-begin.xaml
22695         assorted test.
22697 2008-06-04  Michael Dominic K.  <mdk@mdk.am>
22699         * clock.cpp: When seeking include the SpeedRatio calculations. Fixes the
22700         test-seeking-speed-ratio.xaml from assorted tests and one more block in
22701         the AnimationMatrix2 test. 
22703 2008-06-03  Jeffrey Stedfast  <fejj@novell.com>
22705         * control.cpp (user_control_new): %p does what %x was trying to do
22706         in this case, but without compile warnings :)
22708 2008-06-03  Jeffrey Stedfast  <fejj@novell.com>
22710         Glyphs rendering optimization.
22712         * text.cpp (Glyphs::Layout): Accumulate the glyph paths here
22713         instead of re-looping this logic again in Glyphs::Render().
22714         (Glyphs::Render): Just blit the path.
22716 2008-06-03  Chris Toshok  <toshok@ximian.com>
22718         * dependencyobject.cpp (DependencyObject::SetValue): Simplify this
22719         a bunch and remove all the redundant checks.
22720         
22721         (DependencyObject::MergeTemporaryNameScopes): merge both DO and
22722         Collection versions into the same method to reduce code
22723         duplication.
22725         * dependencyobject.h: no need to provide multiple overloads for
22726         MergeTemporaryNameScopes.
22728 2008-06-03  Jeffrey Stedfast  <fejj@novell.com>
22730         Text rendering optimization via reduction of font loading.
22732         * font.cpp (FontFace): A new abstraction for FT_Face which is
22733         meant to prevent Moonlight from ahving to load the same font face
22734         multiple times just because the FontSize attributes don't match.
22735         (TextFont): Greatly simplified this class by using FontFace.
22737 2008-06-02  Jackson Harper  <jackson@ximian.com>
22739         * xaml.cpp: Make sure we don't try to look up Content Properties
22740         on anything but elments.  Property elements are given the
22741         XamlElementInfo of their parent so GetContentProperty on a
22742         PROPERTY element will return the parent's content property.
22744 2008-06-02  Michael Dominic K.  <mdk@mdk.am>
22746         * clock.cpp: If we have duration-based RepeatBehavior set the
22747         repeat_count to 1 in bug-mode (--with-compatibility-bugs).
22749 2008-06-02  Michael Dominic K.  <mdk@mdk.am>
22750         
22751         * xaml.cpp: SL seems to correctly parse 0:0:0 TimeSpans in "bug-mode"
22752         even.
22754         * clock.cpp: Remove the RepeatBehavior=1.0 forcing in Validate when
22755         RepeatBehavior=0:0:0.
22757 2008-06-02  Michael Dominic K.  <mdk@mdk.am>
22759         * clock.cpp: Even more timeline validation rules.
22761 2008-06-02  Sebastien Pouliot  <sebastien@ximian.com>
22763         * font.cpp: Use the existing DOUBLE_FROM_26_6 instead of dividing
22764         by 64.0 since this makes it clear why we're doing it.
22766 2008-05-30  Michael Dominic K.  <mdk@mdk.am>
22768         * clock.cpp: Don't validate animations that have Duration of "00:00:00"
22769         and RepeatBehavior="Stop". That is what SL does. Fixes the clock41.xaml
22770         test.
22772 2008-05-30  Michael Dominic K.  <mdk@mdk.am>
22774         * xaml.cpp: Adding a compatibility option
22775         (--with-compatibility-bugs=yes) that introduces a Silverlight 1.0
22776         RepeatBehavior bug.
22778 2008-05-30  Michael Dominic K.  <mdk@mdk.am>
22780         * clock.cpp: Ceil the delta and ret_time. This is a very poor-man's
22781         protection against the desync's coming from integers (TimeSpan) being
22782         multiplied by floating values (SpeedRatio). Better to be non-precise
22783         forward than backward.
22785 2008-05-30  Michael Dominic K.  <mdk@mdk.am>
22787         * clock.cpp: The initial ticking difference needs to be multiplied by
22788         the SpeedRatio as well. This fixes few timing desyncs. Fixes
22789         clock40.xaml, test-animation-hold-stop-speed.xaml and the RoyalBlue
22790         block from the AnimationMatrix2.
22792 2008-05-29  Jeffrey Stedfast  <fejj@novell.com>
22793         
22794         * media.cpp (Image::OnPropertyChanged): Just like MediaElement, if
22795         you set an Image's Source property to an empty string (or null),
22796         it stops rendering the image.
22798 2008-05-29  Stephane Delcroix  <sdelcroix@novell.com>
22800         * stylus.cpp: fix intersect_line_2d to fix the inkJournal thing.
22802 2008-05-29  Jeffrey Stedfast  <fejj@novell.com>
22804         * layout.cpp|h (TextRun::IsUnderlined): Replacement for
22805         TextLayout::IsUnderline().
22806         (TextLayout::IsUnderline): Removed.
22808         * font.h (enum TextDecorations): Add a comment explaining that
22809         this is meant to be used as bit flags and not a normal
22810         enumeration.
22812 2008-05-29  Sebastien Pouliot  <sebastien@ximian.com>
22814         * font.h: Revert TextWrapping change as it regress DRT tests
22815         (it's possible that the value were right, but did not match
22816         the managed value used by Silverlight 1.1).
22818 2008-05-29  Jackson Harper  <jackson@ximian.com>
22820         * type.cpp: INVALID types don't have content properties.
22821         * dependencyobject.h: Content properties are stored on the Type so
22822         we don't need to store them here.
22823         * xaml.cpp: Get content properties from the Type system instead of
22824         the parser's internal type map.
22825         - We don't need to do any special handling in the start_element
22826         handler for content properties anymore.
22827         * control.cpp|h: We don't need to expose the content property
22828         anymore.
22829         - Mark the content property for controls.
22830         
22831 2008-05-29  Sebastien Pouliot  <sebastien@ximian.com>
22833         * font.h: Fix enum values for TextWrapping
22834         * layout.cpp: Fix regression (in earlier commit) for wrapping.
22836 2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22838         * debug.cpp: Fix an invalid read issue found with valgrind.
22840 2008-05-29  Sebastien Pouliot  <sebastien@ximian.com>
22842         * layout.h|cpp: Handle invalid values for TextDecorations and
22843         TextWrapping like Silverlight does.
22845 2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22847         * runtime.cpp: When setting the background color delete any previoys
22848           background color.
22850 2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22852         * uielement.cpp: Fix minor leak.
22854 2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22856         * src.mdp: Updated.
22858 2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22860         * http-streaming.cpp: Handle quoted feature strings.
22862 2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22864         * downloader.cpp: Null out request_position in the ctor.
22866 2008-05-28  Michael Dominic K.  <mdk@mdk.am>
22868         * clock.cpp: Reverting the change that invalidates the timelines which
22869         have 00:00:00 duration. It is actually supported by SL. 
22871 2008-05-28  Michael Dominic K.  <mdk@mdk.am>
22873         * clock.cpp: In Clock::ComputeNewTime all those checks are useless.
22874         Multiply always instead of recursing down into properties.
22876 2008-05-28  Michael Dominic K.  <mdk@mdk.am>
22878         * animation.cpp: If "To" and "By" are not specified use the
22879         defaultOriginValue always instead of "start" (which might be "From").
22880         Fixes the test-animation-only-from.xaml and the green block in
22881         AnimationMatrix2.
22883 2008-05-28  Michael Dominic K.  <mdk@mdk.am>
22885         * clock.cpp: When Validating the timeline, if RepeatBehavior is
22886         incorrect make it 1.0 instead of marking the timeline as invalid.
22888 2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22889         
22890         * downloader.cpp: Fix typo.
22892 2008-05-28  Sebastien Pouliot  <sebastien@ximian.com>
22894         * enums.c: Fix None value in style_simulations_map and remove
22895         unneeded one (they exists only in WPF but SL parser does not like
22896         them).
22897         * font.cpp|h: Fix FontStyle and FontWeigth properties when the 
22898         supplied value are invalid. Add new constants specific to SL.
22899         * text.h: Add simulation_none. Share an integer between all bool
22900         flags.
22901         * text.cpp: Invalid values for StyleSimulation does not render
22902         the Glyphs.
22903         * runtime.cpp: Invalid MouseCursor values hides the cursor.
22905 2008-05-27  Jeffrey Stedfast  <fejj@novell.com>
22907         Fixes the Legend (Space Invaders) demo without breaking
22908         storyboard_EnterLeaveSemantics.htm.
22910         * clock.cpp|h (Clock::Completed): New virtual method which gets
22911         called when a clock completes.
22912         (Clock::ComputeNewTime): If a clock completes (has no more
22913         repeats, etc) then call ::Complete().
22914         (ClockGroup::ClockGroup): Changed the name of emitted_complete to
22915         emit_completed which has also changed the meaning a bit.
22916         (ClockGroup::Begin): Updated.
22917         (ClockGroup::RaiseAccumulatedEvents): If emit_completed is true,
22918         then emit the Completed event and reset emit_completed back to
22919         false so we don't re-emit.
22920         (ClockGroup::Completed): Set emit_completed to true.
22922 2008-05-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22924         * media.cpp: MediaElement: Fix refcounting for our 'media' field. In
22925           DownloaderComplete only emit DownloadProgressChangedEvent if we
22926           have a surface.
22928 2008-05-27  Michael Dominic K.  <mdk@mdk.am>
22930         * xaml.cpp: Adding a comment/explanation about the RepeatBehavior and
22931         Silverlight 1.0/2.0 situation.
22933 2008-05-26  Michael Dominic K.  <mdk@mdk.am>
22935         * clock.cpp: Don't validate timelines that have specified duration of
22936         00:00:00. Fixes the test-animation-zero-duration test.xaml.
22938 2008-05-26  Michael Dominic K.  <mdk@mdk.am>
22940         * clock.cpp:
22941         * clock.h: When Validating the Timeline also make sure that the
22942         RepeatBehavior is correct, otherwise don't start the anim. Fixes the
22943         test-animation-zero-repeat-behavior test and brings us closer with
22944         AnimationMatrix2 test.
22946 2008-05-26  Michael Dominic K.  <mdk@mdk.am>
22948         * clock.cpp: When Validating TimelineGroup don't forget to call parent's
22949         base validation method.
22951 2008-05-26  Michael Dominic K.  <mdk@mdk.am>
22953         * xaml.cpp: Reverting spouliot's commit from 2008-05-08. It looks like
22954         SL supports the RepeatBehavior="XX:XX:XX" just fine. This fixes the
22955         test-aniamtion-repeat-behavior.xaml test.
22957 2008-05-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
22959         * src.mdp: Updated.
22961 2008-05-23  Sebastien Pouliot  <sebastien@ximian.com>
22963         * text.cpp: (Glyphs::InsideObject) Avoid expensive, and unneeded,
22964         cairo_save/cairo_restore since we don't use the context.
22966 2008-05-23  Stephane Delcroix  <sdelcroix@novell.com>
22968         * dependencyobject.[h|cpp]: merge namescopes on SetValue.
22970 2008-05-23  Jeffrey Stedfast  <fejj@novell.com>
22972         * font.cpp (TextFont::PixelsPerEM): Removed, the logic was broken.
22974         * text.cpp (Glyphs::Layout): Reverted previous commit and go back
22975         to the magic math.
22976         (Glyphs::Render): Same.
22978 2008-05-22  Chris Toshok  <toshok@ximian.com>
22980         * stylus.h, stylus.cpp (Stroke::HitTest): correct our width/height
22981         code.  Only include the +2 to each side if the outline color is
22982         non-transparent.
22983         (Stroke::AddStylusPointToBounds): same.
22984         (Stroke::OnPropertyChanged): new method.  we need to recompute the
22985         bounds if our DrawingAttributes change.
22986         (Stroke::OnSubPropertyChanged): same, if width/height/online-color
22987         of the drawing attributes change.
22989 2008-05-22  Sebastien Pouliot  <sebastien@ximian.com>
22991         * brush.cpp: Fix defaults when wrong values are being used for
22992         enumerations from Javascript.
22993         [Fix part of #340799]
22995 2008-05-22  Jackson Harper  <jackson@ximian.com>
22997         * dependencyobject.cpp: Only merge temp namescopes.
22999 2008-05-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23001         * dependencyobject.cpp, dependencyobject.h: EventObject: instead of
23002           surrounding event emission with ref/unref, set a flag specifying
23003           that we're doing event emission, and catch unrefs which would cause
23004           object destruction replacing them with a delayed unref.
23006 2008-05-21  Chris Toshok  <toshok@ximian.com>
23008         * collection.cpp (Collection::Add): remove the check for AddToList
23009         returning -1.  It never will.  Also, call SetSurface() on the new
23010         child *before* we create the Collection::Node for it, so we can
23011         tell (in SetSurface) if it's being added individually to the
23012         surface, or as part of a subtree.  This is required to fix
23013         storyboard_EnterLeaveSemantics.
23015         * animation.cpp (Storyboard::SetSurface): resume the clock when
23016         we're reattached to the surface, but *only* if we're being added
23017         as part of a subtree (that is, we already have a logical parent
23018         when we hit this method.)
23020         * clock.cpp (Clock::Begin): revert the previous
23021         change (has_started needs to be initialized to false).  Required
23022         to fix storyboard_EnterLeaveSemantics.htm.  We'll need to figure
23023         out another way to fix the site (or a better way that fixes one
23024         without breaking the other.)
23026 2008-05-21  Jeffrey Stedfast  <fejj@novell.com>
23028         * text.cpp (Glyphs::Layout): Use PixelsPerEM() instead of
23029         hard-coding the EM units ourselves.
23030         (Glyphs::Render): Same.
23032         * font.cpp (TextFont::PixelsPerEM): New convenience function.
23034         * clock.cpp (Clock::Begin): Init has_started to true. Fixes
23035         http://www.tek.co.jp/Legend
23037         * animation.cpp (Storyboard::storyboard_completed): Merged
23038         teardown_clockgroup() and invoke_completed() into a single
23039         callback. Also makes it so that we don't have to remove 2
23040         CompletedEvent handlers (which we were not doing properly afaict
23041         in Storyboard::Stop).
23042         (Storyboard::Stop): After unregistering the CompletedEvent handler
23043         and stopping the root_clock, tear down the clock group.
23045 2008-05-21  Larry Ewing  <lewing@novell.com>
23047         * shape.cpp (Ellipse::BuildPath): try to shape our degenerate
23048         ellipses a little better.
23049         (Shape::ComputeStretchBounds): modify the needs_clip logic a
23050         little to catch the degenerate ellipse cases we were running into.
23052         Fixes test-shape-ellipse-stroke*.xaml.
23054 2008-05-21  Michael Dominic K.  <mdk@mdk.am>
23056         * clock.cpp: Include the offsett coming from the BeginTime in the
23057         seek_time calculations. Fixes seek-test-begin-time and
23058         seek-test-wrapping-set tests. Brings us closer with AnimationMatrix2.
23060 2008-05-21  Michael Dominic K.  <mdk@mdk.am>
23062         * clock.cpp: Actually do set the seek_time before using it.
23064 2008-05-21  Michael Dominic K.  <mdk@mdk.am>
23066         * clock.cpp: When seeking ClockGroup, don't seek children as weel
23067         (results in cumulative behavior).
23069 2008-05-21  Sebastien Pouliot  <sebastien@ximian.com>
23071         * font.cpp: (TextFont::Path) Avoid expensive save of cairo 
23072         context since only the transform is changed (current point 
23073         location is not part of the context).
23075 2008-05-20  Larry Ewing  <lewing@novell.com>
23077         * runtime.cpp (Surface::motion_notify_callback): always return
23078         true in the windowed motion handler otherwise we something steals
23079         mouse events from us.
23081         Fixes most of MouseInput.htm
23083 2008-05-20  Michael Dominic K.  <mdk@mdk.am>
23085         * clock.cpp: Fixing a problem where timeline with BeginTime set do not
23086         respond at all to Seek. Brings us closer with AnimationMatrix2.
23088 2008-05-19  Jackson Harper  <jackson@ximian.com>
23090         * xaml.cpp: Only do the type wrapping if we are dealing with
23091         collection types, otherwise we just ignore the property decl.
23093 2008-05-19  Jackson Harper  <jackson@ximian.com>
23095         * xaml.cpp: When we wrap a property we need to ignore the property
23096         element so that the children get added to the wrapped object
23097         properly.
23098         * dependencyobject.cpp: We also need to merge the collection's
23099         namescope because collections can be created with their own temp
23100         namescope using createFromXaml.
23101         
23102 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
23104         * animation.cpp:
23105         * animation.h:
23106         * clock.cpp:
23107         * clock.h: Changing ExtraRepeatHandler to ExtraRepeatAction to avoid
23108         confusion.
23110 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
23112         * animation.cpp:
23113         * animation.h: Adding an implementation for ExtraRepeatHandler to
23114         AnimationClock that fetches target value and sets it on
23115         AnimationStorage. Fixes clock37.xaml test.
23117 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
23119         * animation.cpp:
23120         * animation.h: Adding helper methods to get target value out of the
23121         given AnimationTimeline. We're still missing implementations for
23122         keyframe-based anims. Coming soon.
23124 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
23126         * animation.cpp:
23127         * animation.h: Adding two helper methods to AnimationStorage:
23128         GetStopValue (get's current base or (if set) stop value) and
23129         UpdatePropertyWithValue to manually force prop to a given state.
23131 2008-05-19  Michael Dominic K.  <mdk@mdk.am>
23133         * clock.cpp:
23134         * clock.h: Addin a virtual ExtraRepeatHandler to Clock class fired on
23135         repeat. By default does nothing.
23137 2008-05-19  Jackson Harper  <jackson@ximian.com>
23139         * xaml.cpp: When createFromXaml ('<some property>...</property>')
23140         is called, we need to create and return an object that represents
23141         that property.  ie createFromXaml ('<Canvas.Triggers>...); should
23142         return a ResourceDictionary object.
23144 2008-05-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23146         * downloader.cpp: Fix warnings.
23148 2008-05-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23150         * clock.cpp: Added comment.
23152 2008-05-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23154         * runtime.cpp: Destroy EventObject::objects_alive upon runtime
23155           shutdown.
23157 2008-05-16  Miguel de Icaza  <miguel@novell.com>
23159         * dependencyobject.h (DependencyObject::GetContentProperty):
23160         returns a DependencyProperty that is the target for the content of
23161         a XAML content assignment. 
23163         * xaml.cpp (XNamespace::SetAttribute): while hydrating, ignore the
23164         Class attribute as the object has already been created. 
23166         (start_element): Add support for the ContentPropertyAttribute on
23167         DependencyObjects to the XAML parser.       This is very primitive
23168         support at this point, and does not support collections, or type
23169         conversions as specified on the docs. 
23171         * control.cpp (Control::SetContent): Refactor setting the
23172         real_object into its own routine.     Currently takes a Surface
23173         parameter, not clear that this is even needed, but kept for
23174         compatibility with the old code. 
23176         (UserControl::OnPropertyChanged): Hook up setting the Content
23177         property.
23179         * runtime.cpp (Surface::Attach): Let the widget be UIElement.
23181 2008-05-16  Larry Ewing  <lewing@novell.com>
23183         * shape.cpp: draw ellipses with no width/height specified as the
23184         ms tests indicate.
23186         Fixes StretchAndShapes.xaml.
23188 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23190         * media.cpp: Abort the downloader when we emit MediaFailed, and always
23191           emit a DownloadProgressChangedEvent with 1.0 when we're finished
23192           downloading (we won't get any writes if the file has already been
23193           downloaded and mozilla just gives us the filename).
23195 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23197         * src.mdp: Updated.
23199 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23201         * downloader.cpp: Don't emit any events if we don't have a surface. Add
23202           warnings to Send(Internal) when we have no surface (the plugin is
23203           already checking for it, so if the warning is printed we're doing
23204           something else wrong).
23205         * runtime.h, runtime.cpp: Surface: keep a list of the downloaders we
23206           create, and when the toplevel canvas changes or the surface is
23207           destroyed clear the downloader's surface pointer.
23209 2008-05-16  Jeffrey Stedfast  <fejj@novell.com>
23211         * downloader.cpp (Downloader::Abort): Set download progress to 0.
23213 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23215         * downloader.cpp: Don't emit nor set DownloadProgress(ChangedEvent) in
23216           NotifySize, mozilla calls NotifySize for every write.
23218 2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23220         * type.cpp, type.h, type.h.in: Added Type::LookupEventName.
23222 2008-05-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23224         * playlist.cpp: If we're stopping a playlist, reopen the first entry.
23225         * media.h: MediaElement: Make EmitMediaOpened and Reinitialize public
23226           so that Playlist can call them.
23228 2008-05-15  Larry Ewing  <lewing@novell.com>
23230         * runtime.cpp (Surface::button_press_callback): stop firefox from
23231         stealing our focus in the widget case by always returning true on
23232         button press events.  There may be a better way to handle this by
23233         only returning true if the press lands on and element but this at
23234         least improves the situation.
23236         Fixes FullScreenKey.htm.
23238 2008-05-15  Michael Dominic K.  <mdk@mdk.am>
23240         * clock.cpp: Also apply the idle_hint when the ClockGroup itself goes to
23241         Filling state, this makes the idle optimization cover all the cases. Big
23242         perf boost expected.
23243         
23244 2008-05-14  Jeffrey Stedfast  <fejj@novell.com>
23246         Fix for tests/xaml/test-directory-in-zip.html
23248         * media.cpp (Image::Image): Initialize some new state variables to
23249         keep track of whether or not the FrameworkElement::Width and
23250         Height values are ever manually set.
23251         (Image::DownloaderComplete): Properly set the Width/Height
23252         property values based on whether a particular Width/Height have
23253         been requested. Use the image's native width/height if not.
23254         (Image::OnPropertyChanged): Listen for changes to Width/Height
23255         properties.
23257 2008-05-14  Larry Ewing  <lewing@novell.com>
23259         * src/uielement.cpp (UIElement::PostRender): clear any existing
23260         paths when rendering the bounds rectangle.
23262 2008-05-14  Jeffrey Stedfast  <fejj@novell.com>
23264         * media.cpp (MediaElement::MediaOpened): Use GetAutoPlay() instead
23265         of the more complex GetValue API.
23267         * pipeline.cpp (IMediaSource::ReadSome): Don't return false on
23268         error, return -1 (since this is an int32 return value, not bool).
23270 2008-05-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23272         * media.cpp, media.h: Added MediaElement::IsLive, and move
23273           initialization of this field to before our MediaPlayer is opened.
23274         * mplayer.cpp, mplayer.h: For live sources the first frame might not
23275           come with pts = 0, so store that pts so that later we can correctly
23276           calculate how much we've actually played.
23278 2008-05-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23280         * mplayer.cpp, mplayer.h: Add support for Duration tags in ASX files.
23281         * playlist.h, playlist.cpp: Added a PlaylistEntry::HasDuration method,
23282           and skip entries with zero duration.
23284 2008-05-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23286         * dependencyobject.cpp: EventObject::AddTickCall: make sure we release
23287           the read lock if don't have a surface or timemanager.
23289 2008-05-14  Michael Dominic K.  <mdk@mdk.am>
23291         * clock.cpp: No need to SoftStop the ClockGroup itself (unlike the
23292         children) on DoRepeat (). Fixes a small regression in clock21.xaml
23293         introduced with last commit.
23295 2008-05-14  Michael Dominic K.  <mdk@mdk.am>
23297         * clock.cpp:
23298         * clock.h: Fixing a case for Clock when the clock has RepeatBehavior but
23299         it doesn't start from 00:00:00. Fixes #388745 (clock22.xaml test).
23301 2008-05-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23303         * runtime.cpp: Don't call Attach (NULL) in Surface::Zombify, it causes
23304           crashes when javascript removes the plugin in an eventhandler.
23306 2008-05-13  Jeffrey Stedfast  <fejj@novell.com>
23308         * media.cpp (MediaElement::DownloaderFailed): Make this more
23309         easily extensible.
23311 2008-05-13  Fernando Herrera  <fherrera@novell.com>
23313         * media.cpp: Fix mms:// and rtsp:// fallback uri rewrite.
23315 2008-05-13  Jeffrey Stedfast  <fejj@novell.com>
23317         * media.cpp (MediaBase::SetSourceAsyncCallback): Prevent memory
23318         corruption of the source.* variables by creating local references
23319         to them and setting source.* to NULL before calling
23320         SetSourceInternal().
23322 2008-05-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23324         * clock.cpp, clock.h: Remove InvokeOnMainThread.
23325         * dependencyobject.cpp, dependencyobject.h: EventObject: added
23326           AddTickCall. Requred when adding ticks from other than the 
23327           main thread.
23328         * downloader.cpp: Send: use a TimeManager to add the timeout.
23329         * media.cpp, media.h, mplayer.h, mplayer.cpp: Don't use
23330           TimeManager::InvokeOnMainThread anymore, add the timeouts using a
23331           TimeManager instance.
23333 2008-05-12  Jeffrey Stedfast  <fejj@novell.com>
23335         * list.cpp (List::List): Init length to 0.
23336         (List::Clear): Reset length to 0.
23337         (List::Append): length++
23338         (List::Prepend): length++
23339         (List::Insert): length++
23340         (List::InsertBefore): length++
23341         (List::Unlink): length--
23342         (List::Length): Fixed to be O(0) instead of O(n)
23344         * stylus.cpp (StrokeCollection::HitTest): Use List::IsEmpty()
23345         instead of comparing List::Length() to 0.
23346         (Stroke::HitTest): Same.
23348 2008-05-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23350         * media.cpp: Set the MediaOpenedEmitted flag before emitting the event,
23351           prevents us from emitting the event again as a consequence of what
23352           any of the event handlers do.
23354 2008-05-12  Michael Dominic K.  <mdk@mdk.am>
23356         * animation.cpp:
23357         * dependencyobject.cpp: Fix a crash due to bad destroy recursion.
23359 2008-05-12  Michael Dominic K.  <mdk@mdk.am>
23361         * animation.cpp:
23362         * animation.h:
23363         * dependencyobject.cpp:
23364         * dependencyobject.h: Float the AnimationStorage only when it's the
23365         current storage.
23367 2008-05-12  Michael Dominic K.  <mdk@mdk.am>
23369         * animation.cpp:
23370         * animation.h: Introduce floating state for animation storage that has
23371         it's clock destroyed but it hasn't been stopped before. We need to keep the
23372         animation storage (reffed from the DependencyProperty hash) around to be
23373         able to get proper value for the next (continous) Storyboard on same
23374         property. Fixes #383879 and #375275.
23376 2008-05-09  Geoff Norton <gnorton@novell.com>
23378         * mplayer.cpp, pipeline.cpp, pipeline.h:  When iterating streams
23379         ensure that we select the stream with the highest available bit
23380         rate, opposed to the first stream that we come across.
23382 2008-05-09  Jeffrey Stedfast  <fejj@novell.com>
23384         * dependencyobject.cpp (DependencyObject::FindName): Don't need
23385         nested if/elses.
23387         * namescope.cpp (NameScope::FindName): Simplify.
23389 2008-05-08  Larry Ewing  <lewing@novell.com>
23391         * shape.cpp: silence some warnings.
23393 2008-05-08  Larry Ewing  <lewing@novell.com>
23395         * shape.h: remove ClipOnWidthAndHeight method, replace with
23396         needs_clip variable.
23397         
23398         * shape.cpp (Shape::ComputeStretchBounds): set needs_clip based on
23399         the actual size of the object before and after the stretch and the
23400         stretch flags.  
23402         Speeds up Sprawl and a lot of other applications that use stretch
23403         extensively.
23405 2008-05-08  Larry Ewing  <lewing@novell.com>
23407         * runtime.cpp (Surface::expose_to_drawable): fill the background
23408         instead of painting and don't create the clip until the rendering
23410 2008-05-08  Miguel de Icaza  <miguel@novell.com>
23412         * xaml.cpp (xaml_hydrate_from_str): New method to hydrate an
23413         existing DependencyObject with the contents of a XAML string.  
23415         Needed for Silverlight 2.0 support, for the new model:
23416         create object then do LoadComponent on it.
23418 2008-05-08  Sebastien Pouliot  <sebastien@ximian.com>
23420         * xaml.cpp: RepeatBehavior does not use the (documented) 0:0:0
23421         notation.
23423 2008-05-07  Jeffrey Stedfast  <fejj@novell.com>
23425         * font.cpp: Removed old layout code.
23426         (TextFont::GetGlyphInfo): Updated to use some handy Fixed->Double
23427         conversion macros to make understanding the code easier. Also,
23428         added FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH bit flag to fix layout
23429         of broken fixed-width CJK fonts.
23431         * clock.cpp (TimeManager::Stop): Added for convenience.
23432         (SystemTimeSource::SystemTimeSource): Init frequency to -1 so we
23433         can make sure it is init'd properly via SetTimerFrequency() before
23434         Start()ing.
23436         * runtime.cpp (Surface::Attach): Call our time_manager's Start(),
23437         not it's source's Start(). We need things like frequency to be
23438         setup and other values to be initialized properly.
23439         (Surface::Attach): After calling canvas->OnLoaded(), check that we
23440         are not zombied - if we are, return.
23442 2008-05-07  Larry Ewing  <lewing@novell.com>
23444         * runtime.cpp (Surface::Zombify): call Attach (NULL) to notify the
23445         objects that the surface is undead.
23447 2008-05-06  Jeffrey Stedfast  <fejj@novell.com>
23449         * animation.cpp (animation_shutdown): Renamed from
23450         animation_destroy().
23452         * text.cpp (text_shutdown): Renamed from text_destroy().
23454         * clock.cpp: Don't include gtk.h for just gtk_timeout_add(),
23455         include glib.h and use g_timeout_add() instead.
23456         (SystemTimeSource::SystemTimeSource): Init the timeout_id to 0,
23457         not -1 (the timeout ids are uint, not int).
23458         (SystemTimeSource::SetTimerFrequency): Updated.
23459         (SystemTimeSource::Start): Updated.
23460         (SystemTimeSource::Stop): Updated.
23462         * list.cpp (List::Remove): Don't need to search for the node, we
23463         already have a pointer to it.
23465 2008-05-07  Larry Ewing  <lewing@novell.com>
23467         * runtime.cpp (Surface::Resize): handle a resize in windowless mode
23468         gracefully.
23470         Fixes part of windowless resizing.
23471         
23472 2008-05-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23474         * media.cpp: Handle the rtsp protocol too.
23475         * playlist.cpp, playlist.h: Store base and source_name as Uris.
23476           Implement GetFullSourceName better, and do some uri validation.
23477         * uri.h, uri.cpp: Added a allow_trailing_sep flag to Uri::Parse,
23478           disables canonicalization of trailing directory separators since
23479           asx playlists may treat urls differently depending on the presence
23480           or absence of any trailing directory separators. Added Clone ().
23482 2008-05-06  Michael Dominic K.  <mdk@mdk.am>
23484         * animation.cpp:
23485         * animation.h: When attaching new animation storage and previous storage
23486         exist, flag it as non-resetable (meaning that the storage will never
23487         reset animated property to base/stop value). This fixes the
23488         storyboard-stopping-two.html test.
23490 2008-05-06  Michael Dominic K.  <mdk@mdk.am>
23492         * dependencyobject.cpp:
23493         * dependencyobject.h: DependencyProperty::AttachAnimationStorage now
23494         returns the previously attached AnimationStorage.
23496         * animation.cpp:
23497         * animation.h: When attaching new animation storage try to inherit the
23498         resetValue from the previously attached storage. Reset value is the
23499         value that we reset to when storyboard is stopped (originally it always
23500         used to be the base value of the current AnimationStorage). 
23502         This replicates the bahavior of SL where starting a new (second)
23503         storyboard on a property renders the prev storyboard useless
23504         (non updating the prop) but keeps it's "starting value" for storyboard
23505         reset. In other words we can say that starting a new storyboard on a
23506         prop makes this new storyboard a "continuation" of the prev storyboard.
23508 2008-05-05  Larry Ewing  <lewing@novell.com>
23510         * runtime.cpp (Surface::render_cb): only call ForceRender if we
23511         dirtied something.
23513 2008-05-05  Larry Ewing  <lewing@novell.com>
23515         * runtime.cpp: update the (almost unused) frame count where it can
23516         get hit in windowless.  Clear existing paths before rendering the
23517         expose box.
23519         Minor cleanups to help with debugging the expose regions.
23521 2008-05-05  Jeffrey Stedfast  <fejj@novell.com>
23523         * clock.cpp (TimeManager::Shutdown): Renamed from
23524         TimeManager::Stop() and also updated to remove all registered
23525         timeouts.
23527         * runtime.cpp (Surface): We no longer keep track of signal ids, we
23528         simply remove all signals on the widgets with 'this' as the user
23529         data.
23531         * clock.cpp (TimeManager::Stop): Added. New method to stop the
23532         time manager.
23534         * runtime.cpp (Surface::Zombify): Stop the time manager, prevents
23535         emission of timeout events.
23537 2008-05-05  Michael Dominic K.  <mdk@mdk.am>
23539         * src/shape.cpp: Reverting sde's stretch thing for now, breaks a lot of
23540         other stuff.
23542 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23544         * media.cpp, media.h, playlist.cpp, playlist.h: MediaElement: when
23545           playing playlists, we only emit MediaEnded if we're playing the
23546           last entry in the playlist. Call Playlist::OnEntryEnded manually
23547           instead of letting the playlist rely on the MediaEnded event, since
23548           the MediaEnded event isn't raised for all entries. Playlist: Added
23549           IsCurrentEntryLastEntry.
23551 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23553         * media.cpp: MediaElement::UpdateProgress: Don't call BufferingComplete
23554           until the pipeline got all the data it was waiting for.
23556 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23558         * media.cpp, media.h: Add an EmitMediaOpened method and emit
23559           MediaOpened somewhat more aggressively, but only once.
23561 2008-05-05  Jeffrey Stedfast  <fejj@novell.com>
23563         * text.cpp (Glyphs::GetSizeForBrush): Use this->width and
23564         this->height for the brush size - fixes TextTransforms.xaml once
23565         again.
23567 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23569         * media.cpp: Don't emit any BufferingProgressChanged events in
23570           OnPropertyChanged.
23572 2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23574         * pipeline-ffmpeg.cpp: Give more information to ffmpeg, otherwise
23575           ffmpeg won't decode any wma audio.
23577 2008-05-05  Stephane Delcroix  <sdelcroix@novell.com>
23579         * shape.cpp: draw the line caps with the stretch_transform matrix.
23580         Finetune the stretch computation again.
23582 2008-05-05  Miguel de Icaza  <miguel@novell.com>
23584         * src/control.cpp: Add a skeleton UserControl, to get a bit
23585         further on the loading of a Silverlight 2 application. 
23587         See the TODO, there are still many limitations.
23589 2008-05-04  Larry Ewing  <lewing@novell.com>
23591         * runtime.cpp: restrict invalidations to the active windowless
23592         bounds.
23594         Fixes massive drawing issues on http://my.liveatedu.com/ where
23595         were creating invalidations with a negative coords.
23597 2008-05-04  Miguel de Icaza  <miguel@novell.com>
23599         * xap.cpp: Expose xap_unpack, include when Mono runtime is
23600         included. 
23602         * deployment.cpp: Small fixups.
23604         * xaml.cpp (deploy_namespace): New namespace used to parse
23605         AppManifest.xaml files that start with a <Deployment> tag on the
23606         http://schemas.microsoft.com/client/2007/deployment namespace. 
23607         
23608         (xaml_init): Register the deployment classes.
23610         * type.cpp (type_is_dependency_object): Add new helper method
23611         to determine if a Kind is a DEPENDENCYOBJECT, the list is no
23612         longer separated in value-types and DependencyObjects, so its not
23613         possible to do a fast lookup from managed code. 
23615 2008-05-04  Chris Toshok  <toshok@ximian.com>
23617         [ fixes #361906, while simultaneously keeping halo3,
23618         ControlLife.htm, and ControlState.htm happy ]
23619         
23620         * runtime.h, runtime.cpp, type-generated.cpp: move back to the
23621         LoadEvent instead of the broken Attaching event, reverting
23622         r102288.
23624         * panel.h, panel.cpp: add a "emitting_loaded" guard around the
23625         body of OnLoaded so we don't end up re-entering this method.
23626         Also, revert r102196 as the ordering of parent-to-child was
23627         correct originally, there were just other ordering constraints we
23628         weren't handling.
23630         * control.h, control.cpp: same.
23632         * dependencyobject.h, dependencyobject.cpp: add a count field to
23633         EventClosure so we can support the "only_unemitted" arg in
23634         EventObject::Emit.  The idea is that the Loaded event seems to
23635         only be emitted on those events that haven't yet been emitted.
23636         This may also be implemented just by making Loaded event handlers
23637         one-shot (removing themselves after they fire), but this is easy
23638         enough and works.  The only event with this odd behavior (that I
23639         know of) is Loaded.
23641         * uielement.cpp (UIElement::OnLoaded): set the IS_LOADED
23642         flag (which may actually be useless now, given the Emit change)
23643         but don't emit Loaded only when the flag is unset.
23645         * collection.cpp: remove the last bit of closure access from
23646         VisualCollection.  The OnLoaded call now happens in
23647         Panel::OnCollectionChanged, in 1 spot as opposed to 3 different
23648         spots in VisualCollection.
23650 2008-05-02  Sebastien Pouliot  <sebastien@ximian.com>
23652         * text.cpp|h: Adjust Glyphs::InsideObject with bounds changes.
23653         [Complete the fix for #383870]
23655 2008-05-02  Jeffrey Stedfast  <fejj@novell.com>
23657         * text.cpp (Glyphs::Layout): Take negative vOffset attr's for
23658         glyphs into account when calculating extents. Fix usage of OriginX
23659         and OriginY as far as extents goes.
23660         (Glyphs::GetOriginPoint): Don't leak the TextFont.
23661         (Glyphs::GetTransformOrigin): Always use 0.0,0.0 as the
23662         RenderTransformOrigin, Microsoft's implementation for Glyphs
23663         doesn't seem to take into account the width/height of the bounding
23664         box.
23665         (Glyphs::Layout): Use OriginX,OriginY as the bounding box origin
23666         rather than MIN (OriginX, 0), Min (OriginY, 0)
23668 2008-05-02  Sebastien Pouliot  <sebastien@ximian.com>
23670         * text.cpp|h: Add Glyphs::InsideObject so Mouse events will work.
23671         [Partial fix for #383870, bounds are not always correct]
23673 2008-05-02  Jeffrey Stedfast  <fejj@novell.com>
23675         * text.cpp (Glyphs::Render): Cache the glyph string in a moon-path
23676         rather than copying it from the cairo context for the same reason
23677         we did this for TextBlock segment path caching.
23679 2008-05-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23681         * playlist.h, playlist.cpp: Implemented ClientSkip.
23682         * media.cpp: Handle playlists entry with ClientSkip set correctly.
23684 2008-05-02  Michael Dominic K.  <mdk@mdk.am>
23686         * animation.cpp:
23687         * animation.h: For the KeySpline: getting rid of the ugly lookup-table
23688         with x -> y values and instead using a two-way curve approximation
23689         methodology for calculating the Spline progress. This is not 100% accurate
23690         (same as original bezier) for fine-grained values but removes all the
23691         precision problems and greatly improves the quality for long KeySpline
23692         animations (no more jags). 
23694 2008-05-01  Larry Ewing  <lewing@novell.com>
23696         * uielement.cpp (UIElement::OnPropertyChanged): go ahead and
23697         invalidate here as changes in the upstream opacity could make us
23698         unable to invalidate later.
23700         Fixes invalidation of last hex in a sprawl run.
23702 2008-05-01  Larry Ewing  <lewing@novell.com>
23704         * runtime.cpp: Fix a bunch of rendering bugs in windowless mode.
23705         Previously there were no time manager handlers listening to events
23706         in windowless mode so we were missing expose events.  Make all
23707         invalidations go throw Invalidate so that they get picked up in
23708         windowless.  Take into account that exposes go to a full size
23709         window in windowless mode so we don't need to subtract the device
23710         offsets.
23712         Fixes most of the issues with
23713         http://silverlight.r2musings.com/weatherwidget/default.aspx and
23714         fixes the harness failure on ZIndex.htm.
23715         
23716 2008-05-01  Chris Toshok  <toshok@ximian.com>
23718         * runtime.h, runtime.cpp: remove the LoadEvent and instead add an
23719         AttachingEvent, which is emitted after the toplevel control is set
23720         on the surface, but before UIElement::LoadedEvent is emitted on
23721         it.  Used by the plugin for hooking up the plugin onLoad handler.
23723 2008-05-01  Jeffrey Stedfast  <fejj@novell.com>
23725         * layout.cpp (RenderLine): Instead of grabbing the cairo_path_t
23726         from the cairo_t after pathing out all of the glyphs for a segment
23727         of text, keep our own moon_path for caching. Apparently the path
23728         gotten from cairo_copy_path() has whatever transforms are on the
23729         context pre-applied which is the cause for the breakage in bug
23730         #375279.
23732         * font.cpp (TextFont::AppendPath): New method to append a glyph's
23733         path to a moon_path for caching purposes.
23735 2008-04-30  Fernando Herrera  <fherrera@novell.com>
23737         * media.cpp: at MediaElement::DownloaderFailed if the uri was a mms://
23738         stream, fallback to http:// uri
23740 2008-04-30  Michael Dominic K.  <mdk@mdk.am>
23742         * panel.cpp:
23743         * panel.h: Adding the panel_add_child helper method used by the ancient
23744         demo. It actually makes sense.
23746 2008-04-30  Michael Dominic K.  <mdk@mdk.am>
23748         * Makefile.am:
23749         * collection.h:
23750         * text.cpp:
23751         * xaml.cpp: Include the utils.h locally in .cpp file and remove it from
23752         the install. This way we don't need to bundle the zip includes.
23754 2008-04-30  Stephane Delcroix  <sdelcroix@novell.com>
23756         * shape.cpp: calc_line_bounds: compute the start|end caps in the
23757         bounds.
23759 2008-04-30  Sebastien Pouliot  <sebastien@ximian.com>
23761         * panel.cpp: Emit Loaded on Canvas before it's child.
23762         [Fix part #361906 - i.e. back to original issue]
23764 2008-04-30  Fernando Herrera  <fherrera@novell.com>
23766         * downloader.cpp:
23767         * downloader.h: export downloader_get_downloaded_file without the
23768         partName.
23770 2008-04-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23772         * pipeline.cpp: Mp3FrameReader/Demuxer: Calculate frame duration
23773           correctly, and calculate file duration as MS seems to be doing it.
23774           SkipFrame: when seeking don't take into account the size of the
23775           mpeg header, since we only peaked it. 
23777 2008-04-29  Michael Dominic K.  <mdk@mdk.am>
23779         * shape.cpp: Clipping is not taken into account with cairo_in_*
23780         functions therefore do the hit-test in two steps -- first check if
23781         within clipping bounds and then check if within shape bounds. Fixes
23782         #383894 and test-shape-cursor-clipping.xaml test. 
23784 2008-04-28  Chris Toshok  <toshok@ximian.com>
23786         * runtime.cpp (Surface::Attach): emit the canvas's Loaded event
23787         before we emit our own Load event (and trigger the plugin's onLoad
23788         handler).
23790 2008-04-28  Chris Toshok  <toshok@ximian.com>
23792         * runtime.cpp (Surface::Attach): always emit Resize on Attach.
23793         fixes ControlState.htm.
23795 2008-04-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23797         * typegen/typegen.cs: Minor fix to support C constructors immediately
23798           prepended with *.
23799         * type-generated.cpp: Regenerated (includes a lot more C constructors
23800           now).
23802 2008-04-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23804         * geometry.h: Include glib.h before using glib macros.
23806 2008-04-28  Michael Dominic K.  <mdk@mdk.am>
23808         * xaml.cpp: Silently skip the attributes that are empty instead of
23809         throwing an error. Fixes the test-parser-empty-property.xaml and
23810         #383904.
23812 2008-04-28  Michael Dominic K.  <mdk@mdk.am>
23814         * brush.cpp: Make sure to use proper width for image stretching params.
23815         Fixes the image-brush-stretch-set.html and bug #383938.
23817 2008-04-25  Jeffrey Stedfast  <fejj@novell.com>
23819         * shape.cpp: Added property accessors.
23821 2008-04-25  Chris Toshok  <toshok@ximian.com>
23823         * type-generated.cpp: add the Surface Loaded event.
23825         * runtime.cpp (Surface::widget_destroyed): null out s->widget if
23826         it matches too.  no more dangling pointers.
23828         * runtime.h, runtime.cpp: give the Surface class a Load
23829         event (used to run the JS OnLoad event in the plugin) and an
23830         IsLoaded accessor.
23832         * xaml.cpp (dependency_object_hookup_event): raise a parser error
23833         if an event is specified with a javascript: prefix.
23834         
23835 2008-04-25  Larry Ewing  <lewing@novell.com>
23837         * stylus.cpp (InkPresenter::OnCollectionChanged): wrap the stroke
23838         changed logic inside a type check.
23840 2008-04-25  Jeffrey Stedfast  <fejj@novell.com>
23842         * xaml.cpp (geometry_from_str): Use the new gemoetry property
23843         accessor methods.
23845         * geometry.cpp: Added property accessor methods
23847 2008-04-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23849         * media.cpp: Always emit DownloadProgressEvents, even if we're
23850           buffering.
23852 2008-04-25  Stephane Delcroix  <sdelcroix@novell.com>
23854         * stylus.cpp: InkPresenter::OnCollectionChanged: call the parent 
23855         method, so the Canvas.Top, Canvas.Left properties are read. Fixes
23856         inkJournal.
23858 2008-04-25  Geoff Norton  <gnorton@novell.com>
23860         * pipeline-ffmpeg.cpp, pipeline-ffmpeg.h:  Support using ffmpeg's
23861         new libavcodec/avcodec.h
23863 2008-04-25  Jeffrey Stedfast  <fejj@novell.com>
23865         * runtime.cpp (runtime_init): No longer need to call
23866         assembly_part_init().
23868         * deployment.cpp (assembly_part_init): Moved into
23869         deployment_init().
23871         * deployment.h: Added missing virtual dtors.
23873         * collection.cpp (Collection::GetCount): Added.
23875 2008-04-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23877         * media.cpp: Set DownloadProgress to 0 when media fails to load.
23879 2008-04-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23881         * media.cpp: MediaElement::CheckMarkers: if the marker is from a live
23882           stream, emit it even if we missed it by up to 0.1 s. Refactored
23883           parts of UpdateProgress into GetBufferedSize. Emit MediaOpened only
23884           after we've either started playing or finished buffering. Emit
23885           MediaFailed/InvalidFileFormat if we failed to initialize the media.
23886           Reinitialize the media synchronously in SetSource.
23887         * media.h: Added
23889 2008-04-25  Michael Dominic K.  <mdk@mdk.am>
23891         * runtime.cpp:
23892         * uielement.cpp:
23893         * uielement.h: Also include the IsHitTestVisible status when checking
23894         our input_list after handling the mouse event. This fixes the
23895         mouse-enter-leave-hit-test-visibility.html test.
23897 2008-04-25  Stephane Delcroix  <sdelcroix@novell.com>
23899         * runtime.cpp: move the hotspot for the eraser, Fixes bnc 375213.
23901 2008-04-24  Jeffrey Stedfast  <fejj@novell.com>
23903         * clock.cpp: Added property accessor methods for TimelineMarker
23904         and added c-bindings.
23906         * downloader.cpp: Same.
23908         * media.cpp: Added property accessors so that it isn't
23909         necessary to use long-winded c-function names to get property
23910         values. Also made all c-wrappers call the c++ property accessor
23911         methods.
23913 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23915         * mplayer.cpp: When a video-only media reaches its end, set target_pts
23916           to the last rendered pts, since that's what is reported as our
23917           current position.
23919 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23921         * mplayer.cpp: When a video-only media reaches its end, set target_pts
23922           to the last rendered pts, since that's what is reported as our
23923           current position.
23925 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
23927         * runtime.cpp:
23928         * uielement.cpp:
23929         * uielement.h: Renaming UIElement::GetActualRenderVisibility to
23930         UIElement::GetActualTotalRenderVisibility for better name matching.
23932 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
23934         * runtime.cpp: Another perf fix for the fix -- make it a corner case
23935         when the new_input_list needs to be copied. In most cases we can just
23936         reuse it. 
23938 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
23940         * runtime.cpp:
23941         * uielement.cpp:
23942         * uielement.h: Ooops, so my prev fix was correct but *totally* dumb from
23943         the perf/sanity point of view. Here goes a better refactor.
23945         Adding UIElement::GetActualRenderVisibility which returns the visibility
23946         (like UIElement::ComputeTotalRenderVisibility) without setting the
23947         flags.
23949 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
23951         * runtime.cpp: After emitting the events make sure to update our
23952         input_list since it can be changed -- as a result of somebody ie.
23953         changing element's visibility in the enter/leave callback. Fixes the
23954         #375220 (Microsoft downloads index chars).
23956 2008-04-24  Michael Dominic K.  <mdk@mdk.am>
23958         * animation.cpp: Do a slightly more precise generation of key-spline
23959         tables. Improves smoothness ie. in test-animation-slow-keyspline.xaml.
23961 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23963         * media.cpp, media.h: MediaElement: add a handler for DownloaderFailed
23964           and raise MediaFailed.
23966 2008-04-24  Stephane Delcroix  <sdelcroix@novell.com>
23968         * geometry.h:
23969         * geometry.cpp:
23970         * shape.cpp:
23971         * shape.h: override some Compute[Shape]Bounds method to pass a matrix
23972         argument. Allows measuration of transformed Pathes and a 2nd pass to 
23973         refines the guesses we're doing for Stretches.
23975 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23977         * src.mdp: Updated.
23979 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23981         * media.cpp, pipeline.cpp, pipeline.h: Addded
23982           ProgressiveSource::NotifyFinished to notify that the download has
23983           finished. This is required for streaming downloads which download 0
23984           bytes, otherwise the pipeline will hang waiting for data.
23986 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23988         * collection.cpp, collection.h: TimelineMarkerCollection needs to be
23989           sorted at all times, added a virtual Collection::AddToList method
23990           which appends the item to the list (and overriden by
23991           TimelineMarkerCollection to add it in the correct position to keep
23992           the collection ordered).
23994 2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
23996         * clock.cpp, clock.h: Added property accessors to TimelineMarker.
23998 2008-04-23  Jeffrey Stedfast  <fejj@novell.com>
24000         * panel.cpp: Add property accessors and added c-bindings.
24002 2008-04-23  Geoff Norton  <gnorton@novell.com>
24004         * Makefile.am: Fix make dist when building with ffmpeg.
24006 2008-04-23  Jeffrey Stedfast  <fejj@novell.com>
24008         * frameworkelement.cpp: Added property accessors so that it isn't
24009         necessary to use long-winded c-function names to get property
24010         values. Also made all c-wrappers call the c++ property accessor
24011         methods.
24013         * text.cpp: Added property accessors to all text classes so that
24014         it isn't necessary to use long-winded c-function names to get
24015         property values. Also made all c-wrappers call the c++ property
24016         accessor methods.
24017         (TextBlock::LayoutSilverlight): Removed, logic moved into
24018         ::Layout().
24020         * animation.h: Make sure all c-API _new() functions take void as
24021         argument.
24023         * uielement.cpp: Added some property accessors.
24025         * text.cpp: Use the new SolidColorBrush ctor.
24027         * brush.cpp: Added property accessors to all brush classes so that
24028         it isn't encessary to use long-winded c-function names to get
24029         property values. Also made all c-wrappers call the c++ property
24030         accessor methods.
24031         (SolidColorBrush::SolidColorBrush): New .ctor to make life
24032         simpler.
24034 2008-04-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24036         * mplayer.cpp: AudioPlayer: prevent calling SetTargetPts on the
24037           MediaPlayer with a negative pts.
24039 2008-04-23  Geoff Norton  <gnorton@novell.com>
24041         * libmoon.h: Drop mango.h
24042         
24043 2008-04-23  Geoff Norton  <gnorton@novell.com>
24045         * runtime.cpp: Remove pango support.
24046         
24047 2008-04-23  Geoff Norton  <gnorton@novell.com>
24049         * Makefile.h, text.cpp, text.h, mango.cpp, mango.h:  Remove pango 
24050         support.
24051         
24052 2008-04-23  Geoff Norton  <gnorton@novell.com>
24054         * swscale-converter.cpp, pipeline-ffmpeg.cpp, Makefile.am: Only
24055         include swscale and ffmpeg cpp files in the build if their configure
24056         flags are set.
24057         
24058 2008-04-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24060         * type.cpp: When looking for types use case-insensitive type
24061           comparison. Fixes #375230 and #375231.
24063 2008-04-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24065         * pipeline.cpp, pipeline.h: MediaClosure: add SetContextUnsafe which
24066           don't take a ref to the context, and add a context_refcounted field
24067           to keep track of refcounting. This is required for long-living
24068           closures which would otherwise cause circular references. Add and
24069           implemetn a ASFMarkerDecoderInfo class, and implement notification
24070           of found markers back to listeners.
24071         * src.mdp: Updated.
24072         * downloader.cpp, downloader.h: Downloader: Add a streaming_features
24073           field, so that the plugin can return information about mms streams.
24074         * http-streaming.cpp, http-streaming.h: Added
24075           parse_http_streaming_features.
24076         * mplayer.h: Add property accessors for CanSeek and CanPause, and
24077           implement them. Select any marker streams.
24078         * media.h, media.cpp: MediaElement: store the marker closure in the
24079           instance, so that we can delete it upon destruction. Read the
24080           streaming features from the downloader in order to set
24081           CanSeek/CanPause properly. TryOpen: if we don't have a filename,
24082           but we do have a downloaded file, use the downloaded file as the
24083           source (might happen if streaming stops before TryOpen is called).
24084         * mplayer.cpp: Add property accessors for CanSeek and CanPause, and
24085           implement them. Select any marker streams. Don't check if we can
24086           pause in Pause (), since MediaElement implements Buffering calling
24087           Pause on us. MediaElement is already checking if media can be
24088           paused or not.
24089         * Makefile.am: Added http-streaming.h|cpp.
24091 2008-04-22  Stephane Delcroix  <sdelcroix@novell.com>
24093         * rect.h: overrides for Union and IsEmpty to take a logical bool,
24094         allowing logical bounds computation.
24095         * geometry.cpp: use the overrided Union () in Computebounds
24096         * shape.cpp: This is the stretches' Holy Grail !
24098 2008-04-22  Jeffrey Stedfast  <fejj@novell.com>
24100         * eventargs.cpp (MouseEventArgs::GetStylusPoints): Make sure
24101         event->device non-NULL.
24103 2008-04-22  Larry Ewing  <lewing@novell.com>
24105         * playlist.h: remove expat references from public symbols.
24106         * playlist.cpp: Wrap XML_Parser in simple class to hide the symbol
24107         from the plublic headers.
24109         Start cleaning things up for ff3.
24111 2008-04-22  Chris Toshok  <toshok@ximian.com>
24113         * runtime.h, runtime.cpp: add Zombify() which sets the zombie
24114         flag.  basically this allows us to unwind gracefully from an event
24115         that has caused the surface to be destroyed.  when the flag is
24116         set, we basically stop emitting UI events that we're in the
24117         process of emitting.
24118         (Surface::widget_destroyed) simplify this, and zero out the
24119         widgets here so we don't destroy them again in ~Surface().
24120         
24121         * dependencyobject.h, dependencyobject.cpp: make unref_delayed
24122         public again, and don't warn about calling it on the main thread.
24123         we need it in the plugin.
24125 2008-04-22  Jeffrey Stedfast  <fejj@novell.com>
24127         * shape.cpp (Shape::DoDraw): Cast extents to int for
24128         AddToCacheSizeCounter().
24129         (Shape::IsCandidateForCaching): Same for
24130         VerifyWithCacheSizeCounter().
24132 2008-04-22  Michael Dominic K.  <mdk@mdk.am>
24134         * animation.cpp: Safely allow now the KeyTime property to be nullable.
24135         Fixes the Animation_NegativeTst.htm test.
24137 2008-04-22  Michael Dominic K.  <mdk@mdk.am>
24139         * animation.cpp:
24140         * animation.h: Making the Storyboard::Begin return bool (true if
24141         storyboard started correctly, false otherwise).
24143 2008-04-22  Michael Dominic K.  <mdk@mdk.am>
24145         * animation.cpp:
24146         * animation.h:
24147         * clock.cpp:
24148         * clock.h: Adding a 'bool Validate ()' virtual to Timeline which is used
24149         to validate the Timeline before starting it. Timelines are always valid
24150         by default except for KeyFrame-based animations where we perform a
24151         check on the keyframes. 
24153         Storyboard doesn't start if any of it's timelines are not valid. This
24154         fixes the test-animation-invalid-keyframe-keytime.xaml test.
24156 2008-04-22  Michael Dominic K.  <mdk@mdk.am>
24158         * animation.cpp: Don't initialize the KeyTime for KeyFrame to a default
24159         value, make it be NULL by default. This currently causes a segfault in
24160         the just-added test-animation-invalid-keyframe-keytime.xaml which is
24161         fine.
24163 2008-04-22  Fernando Herrera  <fherrera@novell.com>
24165         * pipeline.h:
24166         * pipeline.cpp: set the new read position after Seeking to pts.
24167         Added ProgressiveSource::SeekInternal that refuses to Seek to a
24168         non-filled position.
24170 2008-04-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24172         * dependencyobject.cpp, dependencyobject.h: Added another SetValue
24173           overload, to enable calling all SetValues with stack objects.
24174         * xaml.cpp: Fix a Value leak.
24176 2008-04-21  Jeffrey Stedfast  <fejj@novell.com>
24178         Fixes a double-destroy bug in FullScreen.htm
24180         * runtime.cpp (Surface::Surface): Initialize normal_widget - never
24181         let it be NULL unless we are in windowless mode.
24182         (Surface::.dtor): Don't call DestroyWidget on 'widget', call it on
24183         'widget_normal' instead, this way we can't accidently destroy the
24184         fullscreen widget twice (e.g. if we are in fullscreen mode).
24185         (Surface::ConnectEvents): Record the unrealize signal id so that
24186         we can later disconnect from it.
24187         (Surface::DestroyWidget): Now takes a SignalIds argument so that
24188         we can disconnect from unrealize/destroy signals which may fire in
24189         response to destroying the widget.
24190         (Surface::InitializeWidget): Now takes a SignalIds argument so
24191         that we can save the destroy signal id.
24193 2008-04-21  Geoff Norton  <gnorton@novell.com>
24195         * runtime.cpp: Guard against freeing a list in a sub-event
24196         loop when crossings are invoked.  Fixes bug#378902
24197         
24198 2008-04-20  Miguel de Icaza  <miguel@roxanne.site>
24200         * deployment.cpp: new dependency property objects for the
24201         Deployment class.
24203         * xap.cpp: XAP loader, unpacks and instantiates deployment, but
24204         does not load assemblies in VM.  Not sure if this should be done
24205         here (and add a VM dependency) or in the plugin and later as well
24206         on mopen.
24208         * runtime.cpp: Deployment initialization.
24210         * downloader.cpp Moved some code from here into utils.cpp: Expose
24211         CreateTempDir instead of MakeTempDir that takes care of creating
24212         the directory with a unique signature.
24214 2008-04-21  Geoff Norton  <gnorton@novell.com>
24216         * yuv-converter.cpp: Emit a warning on unaliged memory and fall back
24217         to the C implementation.
24219 2008-04-18  Larry Ewing  <lewing@novell.com>
24221         * dirty.cpp (Surface::ProcessDownDirtyElements): When visibility
24222         changes invalidate our parents bounds to notify them that their
24223         subtree may have changed.
24225         Fixes the status boxes on MouseInput.htm
24227 2008-04-18  Jeffrey Stedfast  <fejj@novell.com>
24229         * runtime.cpp (Surface::ConnectEvents): Connect to focus-in-event
24230         and focus-out-event.
24231         (Surface::focus_in_callback): If we have a toplevel canvas, emit a
24232         GotFocus event on it.
24233         (Surface::focus_out_callback): If we have a toplevel canvas, emit
24234         a LostFocus event on it.
24235         (Surface::Attach): If our widget has focus, emit GotFocus event on
24236         our canvas right after we emit the Loaded event.
24238         * uielement.cpp (UIElement::EmitGotFocus): New method.
24239         (UIElement::EmitLostFocus): New method.
24241 2008-04-18  Geoff Norton  <gnorton@novell.com>
24243         * yuv-converter.cpp:  It seems that ffmpeg will occasionally
24244         over-pad the YUV buffers with a SIMD aligned amount (see
24245         timecode-*.wmv)
24246         
24247 2008-04-18  Michael Dominic K.  <mdk@mdk.am>
24249         * animation.cpp: Make sure we always return targetValue when
24250         progress >= 1.0 for Spline*KeyFrame's.
24252         This fixes the clock36.xaml test and PopFly bug of "line dirt
24253         leftovers" when collapsing block list or tutorial list.
24255 2008-04-17  Larry Ewing  <lewing@novell.com>
24257         * xaml.cpp (xaml_init): register MouseEventArgs as a dependency object.
24259 2008-04-17  Larry Ewing  <lewing@novell.com>
24261         * src/eventargs.cpp:
24262         * src/eventargs.h: 
24263         * src/type-generated.cpp:
24264         * src/value.h: add a default ctor for MouseEventArgs.
24266 2008-04-17  Larry Ewing  <lewing@novell.com>
24268         * typegen/typegen.cs: don't require an svn repo for proper
24269         functioning, try to make the error messages functional still.
24271 2008-04-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24273         * media.cpp: MediaElement::MediaOpened: Advance state to Buffering
24274           before trying to play/pause, otherwise nothing will happen (if
24275           coming from the Opening state). Fix printf.
24277 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24279         * dependencyobject.cpp, dependencyobject.h: Add an always_change flag
24280           for DependencyProperty, if a property has this flag, it will always
24281           be changed, even if the new value is the same as the old value.
24282           DependencyObject::SetValue: honor the new always_change flag.
24283         * media.cpp: Set the always_change flag to true for
24284           MediaBase::SourceProperty.
24286 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24288         * media.cpp: MediaElement: Move the Play/Pause/AutoPlay logic to
24289           MediaOpened, so that it also happens when TryLoadFinished opens the
24290           media. Fixes media not starting to play when the media was
24291           downloaded between the moment we tried to open it and it was
24292           successfully opened.
24294 2008-04-17  Jeffrey Stedfast  <fejj@novell.com>
24296         * color.cpp (color_from_str): Handle uint32 color values that are
24297         not hex.
24299 2008-04-17  Larry Ewing  <lewing@novell.com>
24301         * dependencyobject.cpp (DependencyProperty::DependencyProperty):
24302         initialize is_nullable.
24304         Fixes random failure of ParserErrors.htm.
24306 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24308         * media.cpp: MediaElement::TryOpen: always unref the FileSource we
24309           create when we're done with it.
24311 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24313         * dependencyobject.cpp, dependencyobject.h: EventObject: we need to
24314           remember how many events the current type has, since in our
24315           destructor we can't get that information anymore. Add a new
24316           EventLists class which does the book-keeping.
24318 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24320         * media.cpp: MediaElement::Reinitialize: don't call SetValue if we're
24321           in the destructor. MediaElement::SetMedia: call ComputeBounds at
24322           the end. Fixes xaml/test-canvas-no-size.html
24324 2008-04-17  Michael Dominic K.  <mdk@mdk.am>
24326         * animation.cpp: It turns out that KeyFrames doesn't have default Value
24327         of NULL but rather 0/Black/etc.  
24329         This fixes the the test-animation-null-defaults-*.xaml tests and the bug
24330         in PopFly where clicking the block list collapser wouldn't do anything
24331         (it collapses now properly like the tutorial right pane). 
24333 2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24334         
24335         * src.mdp: Updated.
24337 2008-04-16  Larry Ewing  <lewing@novell.com>
24339         * type.cpp: avoid an infinite recursion in LookupEvent.
24341         Fixes a crash in RuntimeErrors.htm.
24343 2008-04-16  Larry Ewing  <lewing@novell.com>
24345         * shape.cpp (Shape::ComputeStretchBounds): get another test working.
24347 2008-04-16  Larry Ewing  <lewing@novell.com>
24349         * shape.cpp (Shape::ComputeStretchBounds): an incomplete fix to
24350         try to resolve the regression in stretch that had crept in.  Still
24351         working on a more complete patch.
24353 2008-04-16  Larry Ewing  <lewing@novell.com>
24355         * geometry.cpp (RectangleGeometry::ComputeBounds): rectangles have
24356         a logical size.
24358 2008-04-16  Jeffrey Stedfast  <fejj@novell.com>
24360         * dependencyobject.cpp (free_value): value argument may be NULL.
24362 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24364         * dependencyobject.cpp: DependencyObject: Emit DestroyedEvent before
24365           decreasing refcount, so that ref in event emission doesn't abort.
24366           Reenable ref/unref in event emission.
24368 2008-04-16  Jeffrey Stedfast  <fejj@novell.com>
24370         * dependencyobject.cpp (set_surface): value argument can be NULL.
24371         (DependencyObject::IsValueValid): Fixed compile warnings.
24373         * downloader.cpp: Properly set/reset Status and StatusText
24374         properties.
24375         (Downloader::Open): Properly reinitialize all state.
24376         (Downloader::Write): Clamp progress to 1.0 (altho it should never
24377         go above, especially not that I've fixed resetting 'total' state).
24379         * enums.c (initialize_enums): Don't cast arrays using
24380         GINT_TO_POINTER(), doesn't make any sense.
24382 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24384         * collection.cpp: Collection::EmitChanged: don't create a
24385           ChangeEventArgs if we don't need one, and unref it when we're
24386           finished with it.
24388 2008-04-16  Michael Dominic K.  <mdk@mdk.am>
24390         * clock.cpp: Add protection against division by 0.
24392 2008-04-16  Michael Dominic K.  <mdk@mdk.am>
24394         * animation.cpp:
24395         * animation.h: Don't detach the ClockGroup from parent on the Completed
24396         event. This is now finally no longer needed. While keeping the
24397         clockgroup means little perf difference it makes the whole thing much
24398         more simple to read (there is just one place that explains why Filling
24399         groups are no longer processed after Completed).
24401 2008-04-16  Larry Ewing  <lewing@novell.com>
24403         * shape.cpp: tweak the origin tweak again.  This should pass
24404         test-shape-path-stretch[34].xaml.
24406 2008-04-16  Jeffrey Stedfast  <fejj@novell.com>
24408         Fix for OMPackagingSource.htm
24410         * media.cpp (MediaElement::OnPropertyChanged): If the new source
24411         is empty, Invalidate().
24412         (MediaElement::Render): Render nothing if our downloader is NULL.
24414 2008-04-16  Larry Ewing  <lewing@novell.com>
24416         * shape.cpp: don't adjust the origin unless we are adjusting that
24417         axis.
24419 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24421         * playlist.cpp: Simplify printf.
24423 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24425         * src.mdp: Updated to (mostly) compile.
24427 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24429         * src.mdp: Updated.
24431 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24433         * typegen/typegen.sh: Updated to work correctly independently of
24434         the current directory when executed.
24436 2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24438         * animation.cpp, animation.h, brush.cpp, brush.h, clock.cpp, clock.h,
24439           collection.cpp, collection.h, dependencyobject.h, downloader.cpp,
24440           downloader.h, Makefile.am, media.cpp, media.h, runtime.cpp, runtime.h,
24441           type.cpp, type.h, type.h.in, typegen/typegen.cs, type-generated.cpp,
24442           uielement.cpp, uielement.h: Initialize our type system statically.
24443         * dependencyobject.cpp: Initialize our type system statically. Comparing a
24444           Kind value to another to determine type hierarchy isn't supported
24445           anymore, use Value::Is or Type::IsSubclassOf, which are doing the right
24446           thing.
24447         * src.mdp: Updated.
24448         * type.cpp.in: Removed, no longer required.
24449         * value.cpp, value.h, value.h.in: Comparing a Kind value to another to
24450           determine type hierarchy isn't supported anymore, use Value::Is or
24451           Type::IsSubclassOf, which are doing the right thing.
24453 2008-04-16  Larry Ewing  <lewing@novell.com>
24455         * shape.cpp (Shape::ComputeStretchBounds): fix typo.
24457 2008-04-16  Larry Ewing  <lewing@novell.com>
24459         * shape.cpp (Shape::ComputeStretchBounds): fix the centering logic
24460         that got accidentally lost when fixing other bits.
24462         Fixes regression in StretchAndShapes.xaml.
24464 2008-04-16  Jackson Harper  <jackson@ximian.com>
24466         * xaml.cpp: {x:Null} evaluates to NULL, if we encounter this value
24467         we need to check if the property is Nullable and raise an error if
24468         it isn't.
24470 2008-04-16  Jackson Harper  <jackson@ximian.com>
24472         * dependencyobject.h|cpp: SetValue now validates values and
24473         returns false with a GError when invalid values are used.
24474         Subclasses can (and should) override IsValidValue to do their own
24475         value validation.
24476         * xaml.cpp: Use new SetValue that returns errors.
24477         
24478 2008-04-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24480         * media.cpp: MediaBase::SetSourceAsyncCallback: don't do anything if we
24481           don't have a surface anymore. We're probably executing after the surface
24482           has been destroyed.
24484 2008-04-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24486         * src.mdp: Updated to include typegen/*.
24487         * type.cpp, type.cpp.in, type.h, type.h.in: Added type_get_name, and fix
24488           Behaviour/Behavior inconsistency.
24490 2008-04-15  Jeffrey Stedfast  <fejj@novell.com>
24492         * media.cpp (MediaElement::OnPropertyChanged): Moved the
24493         PositionProperty seek logic into here so we could get rid of
24494         MediaElement::SetValue() overload.
24496         * dependencyobject.h (class DependencyObject): SetValue() is no
24497         longer a virtual method.
24499 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
24501         * clock.cpp: ret_time is 0 when reaching repeat_count == 0. Fixes the
24502         clock35.xaml test.
24504 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
24506         * clock.cpp: Clock::ComputeNewTime - make sure to take the speed ratio 
24507         into account also when moving back in time. 
24509         Fixes the clock34.xaml test.
24511 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
24513         * animation.cpp: Make sure to clamp the progress to 0.0 - 1.0 when we're
24514         calculating it ourselves (instead of using the CalcProgress). Otherwise
24515         we're bypassing the clamping and extending animations/values beyond
24516         their bounds. 
24518         This is a real fix for the Popfly #378390 (cannot configure the box in
24519         Popfly). Also fixes the clock34.xaml test-case.
24521 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
24523         * clock.cpp: Since we're at it, small fix in Clock::Tick -- Clamp time
24524         when previous OR current state is Clock::Active.
24526 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
24528         * clock.cpp: Reverting the change that was supposed to fix popfly. It's
24529         actually totally bad. I knew I was too fast with this one.
24531 2008-04-15  Michael Dominic K.  <mdk@mdk.am>
24533         * clock.cpp: The time needs to be clamped always. Fixes #378390 (cannot
24534         configure the box in Popfly). Whoah, that was a nasty one.
24536 2008-04-14  Chris Toshok  <toshok@ximian.com>
24538         * runtime.cpp (Surface::Attach): don't clear the up/down dirty
24539         lists here.  Calling toplevel->SetSurface(NULL) ensures that all
24540         elements from the previous tree have their dirty elements removed,
24541         so what's left will correspond to 1) things that are about replace
24542         the current hierarchy, or 2) things that haven't actually been
24543         added to the hierarchy yet, but need to be associated with a
24544         surface.
24546         * collection.cpp (Collection::Clear): emit
24547         CollectionChangeTypeChanging event before we do the actual change
24548         so the owner can do something with the children if it needs to.
24549         (VisualCollection::VisualAdded, VisualCollection::VisualRemoved):
24550         nuke.
24551         (VisualCollection::Add): remove call to VisualAdded.  that
24552         behavior will be handled by Panel in its OnCollectionChanged
24553         method.
24554         (VisualCollection::SetVal): same.
24555         (VisualCollection::Insert): same.
24556         (VisualCollection::Remove): same, but with VisualRemoved.
24557         (VisualCollection::RemoveAt): same.
24558         (VisualCollection::Clear): remove the loop calling VisualRemoved.
24559         this will be handled by the additional
24560         CollectionChangeTypeChanging handling in panel.cpp.
24562         * enums.h (enum CollectionChangeType): add
24563         CollectionChangeTypeChanging.
24565         * panel.h, panel.cpp (Panel::OnPropertyChanged): handle the case
24566         where the ChildrenProperty is changed, by calling ChildRemoved on
24567         all the old children, and ChildAdded on all the new ones.
24568         (Panel::ChildAdded): new home for VisualCollection::VisualAdded.
24569         (Panel::ChildRemoved): new home for
24570         VisualCollection::VisualRemoved.
24571         (Panel::OnCollectionChanged): add support for
24572         CollectionChangeTypeChanging, so we can remove all children.  this
24573         change type is generated by Collection::Clear.
24575         * stylus.cpp (Stroke::OnCollectionChanged): add empty handler for
24576         CollectionChangeTypeChanging.
24577         (InkPresenter::OnCollectionChanged): same.
24579 2008-04-14  Jeffrey Stedfast  <fejj@novell.com>
24581         * media.cpp (Image::CreateSurface): Robustification of image
24582         loading.
24584 2008-04-14  Michael Dominic K.  <mdk@mdk.am>
24586         * clock.cpp:
24587         * clock.h: When calculating the new time in DoRepeat use modulo on new
24588         value. Otherwise we're 'losing' a little bit of time on every repeat and
24589         end time doesn't match with parent. This fixes a few more "jags" on
24590         animations ie. clock13.xaml.
24592 2008-04-11  Larry Ewing  <lewing@novell.com>
24594         * xaml.cpp (value_from_str): make sure we propogate the error if
24595         color_from_string returns NULL.
24597         * color.cpp (color_from_str): return NULL on invalid color values
24598         rather than simply returning black.
24600         Add an error condition to color_from_string so that we pass the
24601         color tests in ParserErrors test.
24602         
24603 2008-04-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24605         * dependencyobject.cpp: Surround event emission with ref/unref of ourselves.
24607 2008-04-11  Jeffrey Stedfast  <fejj@novell.com>
24609         * playlist.cpp: Disable debugging spew unless DEBUG_PLAYLISTS is
24610         defined.
24612         * downloader.cpp (Downloader::Send): Use
24613         TimeManager::InvokeOnMainThread() here like Rolf did in
24614         MediaBase. Simplifies things by not needing a surface.
24616         * text.cpp (TextBlock::SetFontSource): Now takes a Downloader
24617         object as opposed to a DependencyObject.
24619 2008-04-11  Michael Dominic K.  <mdk@mdk.am>
24621         * clock.cpp: in Clock, make sure we CalcProgress on the last tick before
24622         we go Filling/Stopped. Without this we never "finish off" our animations
24623         and depending on the framerate we get "jags". Fixes the clock32.xaml
24624         test.
24626 2008-04-11  Jeffrey Stedfast  <fejj@novell.com>
24628         * runtime.cpp: Make the dot and eraser cursors const to avoid
24629         compiler warnings.
24631 2008-04-11  Michael Dominic K.  <mdk@mdk.am>
24633         * enums.c: Removing bolox comment and behavior. Always return -1 on
24634         fail.
24636         * xaml.cpp: Push a g_warning when we're hitting bad enums on bad props.
24637         Should make it a little bit easier to spot problems.
24639 2008-04-11  Michael Dominic K.  <mdk@mdk.am>
24641         * dependencyobject.cpp: When calling RegisterAllNamesRootedAt be
24642         actually recursive (I'm not sure why this was commented out? Toshok?). 
24643         Fixes the sprawl end-game animation, #378748.
24645 2008-04-11  Stephane Delcroix  <sdelcroix@novell.com>
24647         * runtime.cpp: create the stylus and eraser cursors from xpm. Fixes 
24648         bnc #375213. Implemented the MouseCursorNone too.
24650 2008-04-10  Larry Ewing  <lewing@novell.com>
24652         * xaml.cpp (start_element): throw an error if there is an xml
24653         attribute on a dependency property.
24655 2008-04-10  Larry Ewing  <lewing@novell.com>
24657         * enums.c (enum_from_str): return -1 on an invalid enum string so
24658         that we can catch it as a ParserError fixes
24659         Parser_Invalid_Enum.xaml.
24661 2008-04-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24663         * media.cpp: MediaBase::SetSource: no need to get a
24664           Surface/TimeManager instance to do an asynchronous call, just
24665           call TimeManager::InvokeOnMainThread.
24667 2008-04-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24669         * mplayer.h, mplayer.cpp: Added MediaPlayer::AudioFinished, called
24670           by the audio thread when the audio finishes.
24672         * media.h, media.cpp: Added MediaElement::AudioFinished, called by
24673           the media player when the audio finishes. Enables us to raise
24674           MediaEnded for audio-only media.
24676 2008-04-10  Jeffrey Stedfast  <fejj@novell.com>
24678         * brush.cpp|media.cpp: All SetSource() entry points now take
24679         Downloader objects rather than DependencyObject arguments - the
24680         same as MSDN defines.
24682         * media.cpp (SetSourceInternal): More cleanup /
24683         simplification. Since *::SetSource() already takes steps to be
24684         async, no need to use Downloader::Send() which would introduce
24685         another delay in downloading. It should be plenty safe to call
24686         Downloader::SendNow() in all ::SetSourceInternal()
24687         implementations. Also, we now need to handle NULL downloader which
24688         we get called with if the original SetSource() was passed a NULL
24689         downloader.
24690         (Image::SetSource): Don't cleanup the surface here, do that in
24691         SetSourceInternal() so that we delay until appropriate.
24692         (Image::SetSourceInternal): If there is a downloader, delay
24693         CleanupSurface() even longer until the new image has been
24694         downloaded.
24695         (Image::DownloaderComplete): Call CleanupSurface() here.
24697 2008-04-10  Jeffrey Stedfast  <fejj@novell.com>
24699         * media.cpp: Consolidated Image and MediaElement downloader bits
24700         by putting them into MediaBase.
24702 2008-04-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
24704         * dependencyobject.cpp: Guard against calling closures which have
24705           been removed during emission of previous events in the same
24706           event list: when we're emitting and a closure is removed, mark
24707           the closure as pending removal, don't call it anymore, and only
24708           remove it when we're finished emitting.
24710         * dependencyobject.h: Guard against calling closures which have
24711           been removed during emission of previous events in the same
24712           event list.
24714 2008-04-10  Michael Dominic K.  <mdk@mdk.am>
24716         * downloader.cpp:
24717         * downloader.h:
24718         * media.cpp: A straight-forward fix for "gray flashes" in comic and
24719         slideshow (#375275). It's circumventing a change to make downloaders
24720         async for Image. Jeff, maybe you can figure more?
24722         (The commit that broke the the slideshow was r99065, Jeff from
24723         2008-03-26).
24725 2008-04-10  Michael Dominic K.  <mdk@mdk.am>
24727         * shape.cpp: Little fix for new stretching algho by Stephane. Fixes the
24728         Showcase and test-shape-path-stretch2.xaml.
24730 2008-04-09  Chris Toshok  <toshok@ximian.com>
24732         * stylus.cpp (Stroke::HitTestEndcapSegment): don't fail if root_1
24733         is invalid, as root_2 might be.
24735 2008-04-09  Chris Toshok  <toshok@ximian.com>
24737         [ Fixes some odd behavior in
24738           http://www.thedatafarm.com/silverink/, and also fixes bug
24739           #375229 ]
24740         
24741         * panel.cpp (Panel::FrontToBack): Kind of a screwy change - we
24742         intersect the expose region with our RenderBounds, not our normal
24743         Bounds.  This forces us to add the ink presenter to the render
24744         list even when the exposed area is just going to redraw a stroke,
24745         not the actual canvas rectangle.  When we go to subtract, however,
24746         we still only subtract the canvas rectangle.
24748         * stylus.cpp (InkPresenter::OnPropertyChanged): invalidate the old
24749         stroke collection's bounds as well as the new stroke collection's
24750         bounds.
24751         (InkPresenter::OnCollectionChanged): when the collection has
24752         changed, we can't just use Invalidate() since that only
24753         invalidates the canvas bounds.  We need to invalidate our render
24754         bounds to get rid of strokes that are outside the canvas bounds.
24755         Also, make sure to also invalidate the new bounds of the stroke
24756         collection (it will usually be empty, but do it anyway).
24757         (InkPresenter::ComputeBounds): add logic to compute the
24758         render_bounds here.
24759         (InkPresenter::GetRenderBounds): new method.
24761         * stylus.h (class InkPresenter): add GetRenderBounds, and also add
24762         an OnPropertyChanged method so we can deal with the stroke
24763         collection being assigned to something else.
24765         * uielement.h (class UIElement): as much as I hate to do this, add
24766         yet another type of bounds (RenderBounds).  this is only here for
24767         the special case of the inkpresenter, which has the normal canvas
24768         bounds (the rectangle), the subtree bounds (which unions the
24769         canvas bounds with the bounds of strokes and children) and render
24770         bounds (which unions canvas bounds and stroke bounds.)
24772 2008-04-09  Jeffrey Stedfast  <fejj@novell.com>
24774         * dependencyobject.cpp (resolve_property_path): Alias TextElement
24775         to TextBlock to work around some buggy beta versions of Blend.
24777 2008-04-09  Stephane Delcroix  <sdelcroix@novell.com>
24779         * shape.cpp: Shape::ComputeStretchBounds: compute the stretch assuming
24780         the logical/shape bounds diff stays the same. It's IMHO as close as we
24781         can go without drawing and recalculating.
24783 2008-04-08  Jeffrey Stedfast  <fejj@novell.com>
24785         * xaml.cpp: Cleaned up some of the debugging printf's and and
24786         wrapped them in d() to declutter console spewage when unneeded.
24787         (xaml_create_from_str): ctype functions take int arguments, where
24788         normal char values are in the range 0-255 - in order to work with
24789         non-GNU, need to cast from char to unsigned char.
24791         * error.h (class ParserErrorEventArgs): Avoid using the c++ ctor
24792         initializer stuff to be consistent with other classes.
24794 2008-04-08  Sebastien Pouliot  <sebastien@ximian.com>
24796         * xaml.cpp: Fix (yesterday's fix) on parsing properties. Thanks 
24797         to Jackson.
24799 2008-04-08  Michael Dominic K.  <mdk@mdk.am>
24801         * clock.cpp:
24802         * clock.h: SkipToFill the automatic duration clock groups except if 
24803         this is the root of all roots clock (the TimeManager's clock). Due to
24804         the idle_hint optimization, we don't process those clocks anyways.
24806 2008-04-08  Michael Dominic K.  <mdk@mdk.am>
24808         * value.h: 
24809         * animation.cpp:
24810         * animation.h:
24811         * dependencyobject.cpp:
24812         * dependencyobject.h: Making sure that each property is animated only by
24813         a single animation at a time (the last one started). 
24814         From Silverlight forums:
24816         "Keep in mind Silverlight only supports a single animation on a
24817         property at a time, so if you begin multiple animations on the same
24818         property, the last one will prevail."
24820         This prevents us from overriding Filling/HoldEnd animations by sb's
24821         started before. 
24823         The implementation is: for each prop we create a hash table (when
24824         needed) which stores objects (keys) + last AnimationStorage attached
24825         (values). When new AnimationStorage is attached to a prop, the last one
24826         is notified to stop updating the target (we don't touch the clock
24827         structure). And then there is some magic to handle destroy's etc. 
24829         This fixes PopFly mouse enter/leave problems in the toolbox and the 
24830         http://www.designwithsilverlight.com/tutorials/photoGallery/gallery.html
24831         problems. Fixes #375231, #362363.
24833 2008-04-07  Jeffrey Stedfast  <fejj@novell.com>
24835         Fixes needed for Zombomatic
24837         * downloader.cpp (Downloader::GetDownloadedFilePart): When
24838         creating the full pathname for parts we are extracting, convert
24839         everything to lowercase since we need to treat archived filenames
24840         case-insensitively.
24841         (Downloader::GetUnzippedPath): Convert filenames from the zip
24842         archive to lowercase so that it is easier for us to find them
24843         case-insensitively on the filesystem once they are extracted.
24845 2008-04-07  Sebastien Pouliot  <sebastien@ximian.com>
24847         * xaml.cpp: Fix parsing properties by ensure they start with the 
24848         element name (and not something else). Fix crasher.
24850 2008-04-07  Michael Dominic K.  <mdk@mdk.am>
24852         * src/shape.cpp:
24853         * src/shape.h: Compute the origin point as a separate step after
24854         computing the shape bounds and the stretch bounds. This fixes the
24855         recently broken sprawl.
24857         I think it also fixes other things. Before, given the way code was,
24858         the stretch_bounds would affect the origin *only* in the case of Path,
24859         in other cases (Line, Polygon, Polyline...) they would be ignored.
24861 2008-04-04  Chris Toshok  <toshok@ximian.com>
24863         * stylus.cpp (Stroke::HitTestEndcapSegment): fix this method.  it
24864         was missing a bunch of tests (basically it was intersecting
24865         infinite lines with ellipses, not segments), and some of the math
24866         was wrong.
24868 2008-04-04  Jeffrey Stedfast  <fejj@novell.com>
24870         Intended to fix bug #373462, but something else is preventing that
24871         site from working now...
24873         * media.cpp (MediaElement::SetSourceInternal): PartName is no
24874         longer a const char * argument, which means we take ownership of
24875         the PartName string.
24876         (MediaElement::SetSourceAsyncCallback): New method which is the
24877         async callback for SetSource().
24878         (MediaElement::SetSource): Reinitialize() right away.
24879         (MediaElement::SetSource): Clear out any pending SetSource async
24880         data, replacing it with the new downloader/part name info.
24881         (MediaElement::SetSource): Allow a NULL downloader object but make
24882         sure we don't crash in that case either.
24884 2008-04-04  Sebastien Pouliot  <sebastien@ximian.com>
24886         * dependencyobject.cpp (resolve_property_path): Avoid crash on 
24887         invalid syntax and leaks in other error cases. Fix #377039 (more
24888         test cases coming soon).
24890 2008-04-04  Jeffrey Stedfast  <fejj@novell.com>
24892         * animation.cpp (KeyFrameCollection::GetKeyFrameForTime): Return
24893         immediately if the array len is 0, prevents a crash accessing
24894         sorted_list->pdata[0] when working backwards in the second
24895         for-loop. Fixes one of the crashes I found while investigating bug
24896         #362561.
24898 2008-04-04  Sebastien Pouliot  <sebastien@ximian.com>
24900         * runtime.cpp: Don't crash in strcase_hash if the hashtable 
24901         contains NULL values.
24903 2008-04-03  Chris Toshok  <toshok@ximian.com>
24905         * runtime.cpp (Surface::InitializeWidget): disable the
24906         GDK_POINTER_MOTION_HINT_MASK stuff for now.  we're not passing
24907         tests with it enabled.
24908         (Surface::motion_notify_callback): force the emission of a motion
24909         event.
24911 2008-04-03  Jeffrey Stedfast  <fejj@novell.com>
24913         * runtime.cpp (Surface::SetCursor): Stylus cursor should map to
24914         the pencil cursor. Also updated Hand (which should be a
24915         left-pointing hand, not right-pointing) and also Eraser (we need
24916         to make our own icon for this, but I suck at art so I'll pass for
24917         now).
24919 2008-04-03  Michael Dominic K.  <mdk@mdk.am>
24921         * shape.cpp:
24922         * shape.h: Calculate the logical extents when computing the shape bounds
24923         and pass them to the ComputeStretchBounds. They're currently not used in
24924         any way.
24926 2008-04-03  Michael Dominic K.  <mdk@mdk.am>
24928         * shape.cpp: Don't init the stretch matrix to identity on each
24929         Shape::ComputeShapeBounds. We want to be able to call it freely.
24931 2008-04-02  Michael Dominic K.  <mdk@mdk.am>
24933         * geometry.cpp: Use the cairo_path_extents to calculate the logical
24934         bounds instead of faking small stroke.
24936 2008-04-02  Michael Dominic K.  <mdk@mdk.am>
24938         * shape.cpp:
24939         * shape.h: Adding new parameter (bool logical) to all the
24940         Shape::ComputeShapeBounds functions and overrides. See prev commit for
24941         explanation of what is logical bounds.
24943         Currently all clients use logical == false. Just adding this
24944         functionality.
24946 2008-04-02  Michael Dominic K.  <mdk@mdk.am>
24948         * geometry.cpp:
24949         * geometry.h:
24950         * shape.cpp:
24951         * uielement.cpp: Adding new parameter (bool logical) to all the
24952         Geometry::ComputeBounds functions and overrides. Calculating logical
24953         bounds means calculating bounds without stroke included. Ie. a line
24954         (0,0) - (100, 0) has logical bounds of width=100, height=0, no matter
24955         what the stroke is. 
24957         Not used right now, will be used in just a few commits (all current
24958         ComputeBounds clients call it will logical == false).
24960 2008-04-02  Michael Dominic K.  <mdk@mdk.am>
24962         * shape.cpp: Don't automatically compute the stretch bounds when
24963         computing shape bounds. Instead, compute it as a separate step in
24964         Shape::ComputeBounds.
24966 2008-04-03  Chris Toshok  <toshok@ximian.com>
24968         * uielement.cpp (UIElement::EmitMouseLeave): turns out that,
24969         contrary to msdn2, MS *is* indeed emitting this event with
24970         non-null eventargs.  it's just an EventArgs object, not a
24971         MouseEventArgs.
24973 2008-04-03  Jeffrey Stedfast  <fejj@novell.com>
24975         * dependencyobject.cpp (EventObject::Emit): Unref the calldata
24976         even in the "no such event" exception case.
24978 2008-04-03  Larry Ewing  <lewing@novell.com>
24980         * xaml.cpp: (expat_parser_error): translate XML_ERROR_NO_ELEMENTS
24981         into appropriate error code.
24983 2008-04-03  Larry Ewing  <lewing@novell.com>
24985         * xaml.cpp: Generate errors when trying to set readonly properties.
24987 2008-04-03  Larry Ewing  <lewing@novell.com>
24989         * xaml.cpp: make sure we set an error if the property name isn't
24990         valid.
24992         * runtime.cpp: make it legal to attach to a NULL toplevel, hook up
24993         the needed events.
24995 2008-04-03  Larry Ewing  <lewing@novell.com>
24997         * runtime.cpp (Surface::expose_to_drawable): make sure we take
24998         allocation.x and allocation.y into account when deciding not to
24999         draw.  Should fix the disappearing gtksilver widget reported on irc.
25001 2008-04-02  Larry Ewing  <lewing@novell.com>
25003         * xaml.cpp: flush character data at the end of property elements
25004         too.
25006 2008-04-02  Jackson Harper  <jackson@ximian.com>
25008         * xaml.cpp: Add the element name for this error.
25010 2008-04-02  Chris Toshok  <toshok@ximian.com>
25012         * stylus.cpp (Stroke::HitTestEndcapSegment): fix up some math.
25013         (Stroke::HitTestEndcapPoint): same.
25014         (point_gte_line): new method.
25015         (point_lte_line): new method.
25016         (Stroke::HitTestSegmentPoint): use point_gte_line and
25017         point_lte_line to determine if the point is inside the segment.
25018         (global): wrap all spew in DEBUG_HITTEST.
25019         
25020 2008-04-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25022         * pipeline.cpp, mplayer.cpp, pipeline.h: Remove SeekToStart completely, it's
25023           just plain broken.
25025 2008-04-02  Jeffrey Stedfast  <fejj@novell.com>
25027         * media.cpp (MediaElement::UpdatePlayerPosition): Cast to same
25028         integer type when comparing.
25030         * playlist.cpp (Playlist::OnMediaEnded): Prevent a segfault in the
25031         debugging printfs. Fixes bug #375273.
25033 2008-04-01  Chris Toshok  <toshok@ximian.com>
25035         * xaml.cpp: back out the SetSurface call removal.
25037         * dependencyobject.cpp (EventObject::unref): instead,
25038         SetSurface(NULL) here before we delete the object.
25040 2008-04-01  Chris Toshok  <toshok@ximian.com>
25042         * control.cpp (Control::InitializeFromXaml): make sure to call
25043         SetSurface(NULL) on the old real_object since we're detaching it
25044         from the tree.  Call SetSurface on ourselves (really, should just
25045         be the real_object, right?) before calling the real_object methods
25046         that would cause dirty stuff to happen.
25048         * xaml.cpp (create_custom_element): don't call SetSurface here, it
25049         will cause problems if there's a parser error (since elements
25050         can/will be on the surface's dirty list after they're destroyed.)
25051         (default_create_element_instance): same.
25053 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25055         * playlist.cpp, playlist.h: A lot of fixes according to the tests.
25056         * mplayer.h, mplayer.cpp: Initialize the rgb buffer. Add a start_pts to
25057           specify where in the stream we start and (playlists can specify a
25058           starting point which isn't in the beginning), and set the duration from
25059           the playlist (if the playlist has it).
25060         * media.cpp: MediaElement::SetMedia: Handle the case if mplayer returns
25061           false from MediaPlayer::Open. MediaElement::MediaOpened: Handle the case
25062           if the recursive playlist couldn't be replaced.
25064 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25066         * media.h: Added MediaElement::GetPlaylist.
25068 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25070         * type.cpp, type.cpp.in, type.h, type.h.in, value.cpp, value.h, value.h.in:
25071           Remove Type::NPOBJ, it's not needed.
25073 2008-04-01  Michael Dominic K.  <mdk@mdk.am>
25075         * animation.cpp: Since now the clocks are synced we don't need to
25076         recursively check the states in the teardown on completed.
25078 2008-04-01  Michael Dominic K.  <mdk@mdk.am>
25080         * clock.cpp:
25081         * clock.h: Getting rid of the nasty clock desyncing (setting ClockGroup
25082         manually to Stopped but not touching the state of children).
25084         We do this by introducing a new idle_hint on ClockGroup. If idle_hint is
25085         set, we don't tick the ClockGroup no matter what the state is. Idle_hint
25086         is set when all children of ClockGroup have state != Active (ie. are
25087         filling). This can be seen as "optimization" -- not to dumbly process
25088         filling clocks which keep setting same value all the time (it creates
25089         insane recursion ie. in Showcase making it unusable). Silverlight seems
25090         to do something very similiar.
25092         Before this commit a same effect was achieved by the said "desyncing" --
25093         forcing the ClockGroup to Stopped. This approach however is a bit more
25094         clean. 
25096 2008-04-01  Michael Dominic K.  <mdk@mdk.am>
25098         * animation.cpp: Chain to parent's Clock::Stop in AnimationClock::Stop.
25100 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25102         * pipeline.cpp: Use base_unref, base_unref_delayed doesn't exist anymore.
25104 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25106         * value.cpp: Remove a few warnings which might give false positives now.
25108 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25110         * dependencyobject.h, dependencyobject.cpp: EventObject::unref: check if
25111           we're being unreffed on the main thread, if not, call unref_delayed.
25113 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25115         * runtime.cpp, runtime.h: Added a Surface::InMainThread.
25117 2008-04-01  Fernando Herrera  <fherrera@novell.com>
25119         * media.cpp: Remove the request position function when aborting the
25120         downloader.
25122 2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25124         * media.cpp, media.h, mplayer.cpp, mplayer.h: Add a dtor parameter to
25125           MediaElement::Reinitialize and MediaPlayer::Close to specify if we're
25126           being called from the destructor, and if so, null out the element field
25127           of the MediaPlayer, so that we don't access a destructed media element.
25128           Add an async version of MediaPlayer::EnqueueFrames, so that the audio
25129           threads can request more data in a thread-safe manner.
25131 2008-04-01  Fernando Herrera  <fherrera@novell.com>
25133         * asf/asf.cpp:
25134         * pipeline.h: Support for live mms streams, that have packet_count as
25135         0 and return false for CanSeekToPts.
25137 2008-03-31  Chris Toshok  <toshok@ximian.com>
25139         * namescope.h, namescope.cpp: make no semblance of having a
25140         superior namescope implementation (where they get transported
25141         around with the subtree they're attached to when it's
25142         removed/re-added to the hierarchy.)  Instead follow MS's broken
25143         implementation where temporary namescopes are completely removed
25144         when merged into another one.
25146         * collection.h, collection.cpp (Collection::MergeNames): factor
25147         out some common code from Add, Insert, and SetVal. Also, deal with
25148         the fact that merging namescopes now really adds all the names to
25149         the parent namescope, so clear the old namescope.
25150         (Collection::SetVal): don't just unregister the old toplevel name,
25151         but all the names in the subtree.
25152         (Collection::Remove): same.
25153         (Collection::Clear): same.
25154         (Collection::UnregisterAllNamesRootedAt): override DO's method,
25155         recursing into all our children.
25156         (Collection::RegisterAllNamesRootedAt): same.
25157         (VisualCollection::VisualRemoved): clear the IS_LOADED flag so
25158         UIElement::OnLoaded is called again, and <BeginStoryboard>
25159         elements restart when the subtree is added to the hierarchy again.
25161         * control.h, control.cpp (Control::UnregisterAllNamesRootedAt):
25162         override and forward onto real_object.
25163         (Control::RegisterAllNamesRootedAt): same.
25164         
25165         * dependencyobject.cpp (DependencyObject::ClearValue): add a
25166         parameter to allow us to specify *not* to notify listeners of the
25167         property change.  we do this with the NameScope property, which
25168         noone should be listening too.  It was causing a tremendous
25169         performance hit when merging a lot of namescopes (as we do in
25170         inkStylusPointCount.htm)
25171         (DependencyObject::UnregisterAllNamesRootedAt): used when a DO is
25172         removed from the hierarchy, we need to unregister all the names
25173         beneath it.
25174         (DependencyObject::RegisterAllNamesRootedAt): used when a DO is
25175         added to the hierarchy, if it doesn't have a temporary
25176         namescope (in which case we just merge it).
25178 2008-03-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25180         * pipeline.cpp, pipeline.h: MemorySource: Add a value specifying if the
25181           MemorySource owns the memory or not (if it will be freed upon
25182           destruction or not).
25184 2008-03-31  Jeffrey Stedfast  <fejj@novell.com>
25186         * stylus.cpp (Stroke::HitTestEndcap): Fixed a bug where the
25187         for-loop would only use every other point as a starting point for
25188         a segment. E.g. if you had points a, b, c, d and e - the code only
25189         checked segments ab, cd, and e when it should have been checking
25190         ab, bc, cd, and de.
25192 2008-03-31  Fernando Herrera  <fherrera@novell.com>
25194         * downloader.cpp: Check if aborted before cheking for requested
25195         position.
25197 2008-03-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25199         * pipeline.cpp, pipeline.h: Moved locking down to IMediaSource from
25200           ProgressiveSource.
25201         * playlist.cpp: Updated according to pipeline changes.
25202         * mplayer.h: Fix SetState to not overwrite current bits, only current state.
25203         * media.h, media.cpp: Rework buffering progress to use the available time of
25204           media available (pts) instead of doing some funny math on file
25205           positions.
25206         * mplayer.cpp: Don't allow SetTargetPts if we're waiting for a seek.
25208 2008-03-31  Michael Dominic K.  <mdk@mdk.am>
25210         * animation.cpp: Don't Stop the Storyboard root_clock before begining
25211         the Storyboard again, just silently tear it down.
25213         Calling Stop resets the property values to base which is something we
25214         don't want. When Begin () is called on Sb in SL, the last animated
25215         values are used. 
25217 2008-03-31  Michael Dominic K.  <mdk@mdk.am>
25219         * animation.cpp:
25220         * animation.h: Adding Storyboard::DetachClockGroupFromParent () that
25221         works similar to Teardown but doesn't destroy the clock/animation
25222         hierarchy. We need this hierarchy to ie. reset prop values to base when
25223         Storyboard::Stop is called manually. 
25225         When Storyboard is completed, call DetachClockGroupFromParent (if not
25226         Teardown). Otherwise the Storyboard will ghostly change state with parent 
25227         state changes.
25229 2008-03-31  Michael Dominic K.  <mdk@mdk.am>
25231         * animation.cpp: Slightly reworking the clock_is_fully_stopped_recursive
25232         to check for NULL and report stopped == true when both ClockGroup state
25233         is Stopped and all children are Stopped. 
25235         To be honest, this never currently reports Stopped == true as we do
25236         intentional state desync when storyboard reaches end -- setting the
25237         ClockGroup state to Stopped but keeping the children in Active/Filling.
25238         This *has* to go away.
25240 2008-03-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25242         * src.mdp: Updated.
25244 2008-03-28  Jeffrey Stedfast  <fejj@novell.com>
25246         * utils.cpp (TextStream::Read): Better handling of iconv() failure
25247         cases.
25249 2008-03-28  Chris Toshok  <toshok@ximian.com>
25251         * animation.cpp, animation.h: remove Storyboard::FindSurface -
25252         EventObject::GetSurface() always returns the right thing.
25253         Override SetSurface to check whether we're being detached from or
25254         attached to a surface, and pause or resume the clock in response.
25255         This fixes some issues in storyboard_EnterLeaveSemantics.
25257 2008-03-28  Chris Toshok  <toshok@ximian.com>
25259         * dependencyobject.h,
25260         dependencyobject.cpp (DependencyObject::SetSurface): new method,
25261         set the surface for all our DependencyObject subclassed property
25262         values.
25264         * collection.h, collection.cpp (Collection::Add): SetSurface work.
25265         (Collection::Insert): same.
25266         (Collection::SetVal): same.
25267         (Collection::Remove): same.
25268         (Collection::RemoveAt): same.
25269         (Collection::Clear): same.
25270         (Collection::SetSurface): new method, iterate over all children
25271         setting the surface.
25272         (VisualCollection): remove surface logic here.
25273         (VisualCollection::VisualAdded): same.
25274         (VisualCollection::VisualRemoved): same.
25276 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25278         * mplayer.cpp: Clear all queues after a seek has completed.
25280 2008-03-28  Jeffrey Stedfast  <fejj@novell.com>
25282         * text.cpp (deobfuscate_font): Updated for CopyFileTo() rename.
25284         * downloader.cpp (Downloader::CleanupUnzipDir): Updated for
25285         RemoveDir() rename.
25286         (create_unzipdir): Updated for MakeTempDir() rename.
25288         * utils.cpp (MakeTempDir): Renamed from make_tmpdir() to try and
25289         be more consistent with moonlight API naming convensions.
25290         (RemoveDir): Renamed from moon_rmdir().
25291         (CopyFileTo): Renamed from moon_copy_file()
25293 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25295         * debug.cpp: Fix warning.
25297 2008-03-28  Michael Dominic K.  <mdk@mdk.am>
25299         * clock.cpp: Fixing the clock repeat for duration-based
25300         RepeatBehavior. 
25301         
25302         Fixes the clock14.xaml and clock31.xaml tests. All 31 clock tests are
25303         passing now (same behavior as in SL).
25305 2008-03-28  Michael Dominic K.  <mdk@mdk.am>
25307         * clock.cpp: In ComputeNewTime: when we're moving backward and hitting
25308         the bound decrease the repeat_count no matter what (if auto-reversed or
25309         not). This makes the auto-reversed storyboard work.
25311         Fixes the clock7.xaml and clock30.xaml. The only clock test broken now
25312         is clock14.xaml.
25314 2008-03-28  Michael Dominic K.  <mdk@mdk.am>
25316         * animation.cpp: Teardown the storyboard in Completed only if the root
25317         clock is stopped AND all the children are stopped too. After teardown we
25318         loose the ability to reset-back the values and Completed is
25319         fired always, even if the clock is filling (a filling clock should reset
25320         on Stop).
25321         
25322         This ie. fixes http://www.idcorporate.com.ar/ and other sites that use
25323         the popular methodology of beginning a filling Storyboard on MouseEnter
25324         and stopping it on MouseLeave.
25326 2008-03-27  Michael Dominic K.  <mdk@mdk.am>
25328         * runtime.cpp: Ignore the enter/leave crossing events coming as a 
25329         result of grab/press started/finished.
25331 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25333         * uielement.cpp, pipeline.h, media.cpp, brush.cpp: Update according to
25334           MediaPlayer changes.
25335         * mplayer.cpp, mplayer.h: Major cleanup in MediaPlayer: make all fields
25336           private, and add public accessors when required. Remove all boolean
25337           fields and add a single bit/state field with its corresponding enum and
25338           public accessors. Removed IncTargetPts, StopThreads and PauseInternal,
25339           no longer used. Removed unused defines. Made video and audio structures
25340           nested inside MediaPlayer instead of pointers (and queue inside
25341           video/audio), avoids pointer accesses and additional malloc/frees, since
25342           they were always created anyways. Don't seek to anywhere in Stop if
25343           we're stopping because we're closing, since it may cause crashes if
25344           we're closing because the MediaElement is being destructed (it may cause
25345           the MediaElement to be resurrected). Made public methods private
25346           whenever possible.
25348 2008-03-28  Fernando Herrera  <fherrera@novell.com>
25350         * asf/asf.cpp: Use the pts == 0 optimization before trying to
25351         SeekToPts.
25353         * downloader.cpp:
25354         * downloader.h: Add functions to allow request a remote postition.
25356         * media.cpp:
25357         * media.h:
25358         * pipeline.cpp:
25359         * pipeline.h: Implement SeekToPts for mms:// sources.
25361 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25362         
25363         * dependencyobject.h: Detect an unrecoverable error condition with
25364           refcounting (reffing an object with refcount of 0), and abort instead of
25365           crashing randomly and insecurely later on.
25367 2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25369         * mplayer.h, mplayer.cpp: Remove more unused fields in MediaPlayer.
25371 2008-03-27  Jeffrey Stedfast  <fejj@novell.com>
25373         * downloader.cpp (Downloader::GetResponseText): Use the new
25374         TextStream class.
25376         * utils.cpp (TextStream::Open): Fixed the BOM checking, had LE/BE
25377         reversed.
25379         * xaml.cpp (xaml_create_from_file): Oops, if we read 0 bytes, make
25380         sure to exit the loop ;-)
25382 2008-03-27  Jeffrey Stedfast  <fejj@novell.com>
25384         * xaml.cpp (xaml_create_from_file): Use the new TextStream class
25385         instead of doing things the hard way. Might be more performant,
25386         definitely won't malloc/free nearly as much. Also fixed a bug
25387         where leading lwsp might be larger than our read buffer.
25389         * utils.cpp (TextStream): New class for reading text input
25390         streams, converting them to UTF-8 as they are read.
25392         * downloader.cpp (Downloader::Send): Handle the case where the
25393         attached surface is NULL.
25394         (Downloader::GetResponseText): Handle zero-length files. Also,
25395         nul-terminate the returned buffer (which is now a char* rather
25396         than a void*) since it is clear that the javascript expects to be
25397         able to use this value as a string buffer.
25399 2008-03-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25400         
25401         * mplayer.h, mplayer.cpp: Don't create any audio threads until we're
25402           requested to play audio. Don't hold the lock when polling.
25404 2008-03-26  Jeffrey Stedfast  <fejj@novell.com>
25406         * downloader.cpp (Downloader::SendInternal): New method that is
25407         basically the same as the old ::Send().
25408         (Downloader::Send): Queue the SendInternal() call via
25409         TimeManager's TickCall API.
25411 2008-03-26  Chris Toshok  <toshok@ximian.com>
25413         * dependencyobject.h, dependencyobject.cpp (class EventObject):
25414         add RemoveMatchingHandlers variants that let you pass in a
25415         predicate to test event handlers with.
25417 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25419         * pipeline.cpp, pipeline.h: ASFDemuxer: updated according to asf
25420           changes.  Added a MemoryStream.
25422         * media.cpp: Updated according to API changes.
25424 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25426         * mplayer.cpp, mplayer.h: Add a new state to the audio:
25427           WaitingForData, in which case we don't poll on that audio
25428           node (since the hardware will just tell us it's ready to recieve
25429           data). Fixes audio using 100% cpu after when it runs out of
25430           data (either because of network hiccup or the stream finished).
25432 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25434         * pipeline.cpp, mplayer.cpp, pipeline.h: Made
25435           IMediaStream::selected private and add accessors.
25437 2008-03-26  Stephane Delcroix  <sdelcroix@novell.com>
25439         * shape.h:
25440         * shape.cpp: set the dash caps for all the shapes, draw start/end caps
25441         on line and polylines.
25443 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25445         * mplayer.cpp: Remove unused fields.
25447 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25449         * debug.cpp: Correctly compute base addresses of libraries, and use a
25450           thread-safe version of strtok.
25452 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25454         * runtime.h, runtime.cpp, pipeline.cpp: Reverse the meaning of our YUV flag
25455           - it's now necessary to explicitly disable it in order to get rid of it
25456           instead of relying on a default flag to have the right value in order to
25457           get it. Makes video work with mopen again.
25459 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25461         * pipeline.cpp: Fix a crash.
25463 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25465         * mplayer.cpp: Remove Instance (), it's redundant.
25466         * mplayer.h: AudioPlayer: Remove Instance (), it's redundant. Synchronize
25467           everything in the audio player with one semaphore, it simplifies things
25468           and removes a couple of problems helgrind found.
25469         * pipeline.cpp: ~Media: Add a nullcheck. Media::Initialize: Initialize the
25470           audio player as well. Use delayed unreffing in destructors which may be
25471           called on worker threads.
25473 2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25475         * runtime.cpp, runtime.h: Remove the pending unref stuff from Surface.
25476         * dependencyobject.cpp: Remove the surface-based delayed unloading, it's not
25477           thread-safe and making it thread-safe isn't worth it. Also use a pthread
25478           mutex instead of a glib mutex, since helgrind reports a lot of false
25479           positives for glib mutexes. Hold the mutex for the smallest amount of
25480           time possible, making it unnecessary to use a recursive mutex.
25482 2008-03-26  Michael Dominic K.  <mdk@mdk.am>
25484         * shape.cpp: Reverting the clip changes, it was bolox.
25486 2008-03-25  Jeffrey Stedfast  <fejj@novell.com>
25488         * pipeline.cpp (Mp3FrameReader::EstimatePtsPosition): Get rid of
25489         the assert - it was only needed during implementation to make sure
25490         the bsearch worked correctly.
25491         (Mp3FrameReader::Seek): Same.
25493 2008-03-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25495         * media.cpp: Don't access any TimeManager instance from another thread, just
25496           call the static TimeManager::InvokeOnMainThread.
25498 2008-03-25  Michael Dominic K.  <mdk@mdk.am>
25500         * src/shape.cpp: Shape is empty always when it's bounds are <= 0.0, even
25501         if Width/Height was specified. Fixes a bogus warning about infinity
25502         transformations.
25504 2008-03-25  Michael Dominic K.  <mdk@mdk.am>
25506         * src/shape.cpp: When setting the clipping for the shape also include
25507         the transformations coming from stretching. This fixes
25508         test-shape-line-stretch3 test and the missing stripes on Silverlight
25509         showcase.
25511 2008-03-24  Chris Toshok  <toshok@ximian.com>
25513         * runtime.h (class Surface): add
25514         Surface::PropagateDirtyFlagToChildren.
25516         * dirty.cpp (Surface::PropagateDirtyFlagToChildren): factor this
25517         duplicated code out of ProcessDownDirtyElements.
25519 2008-03-24  Chris Toshok  <toshok@ximian.com>
25521         * panel.cpp (Panel::FrontToBack): remove the tree walking
25522         code (where we walked up the hierarchy looking for cases where we
25523         shouldn't subtract.)  Instead, we always subtract if the local
25524         state says we can.  Instead of forcing all leaf elements to walk
25525         up to their parent panel, we assume they'll operate on local state
25526         as well, and give them a copy of the region to subtract their
25527         bounds from, instead of the real region.  We are sneaky.
25529         * uielement.cpp (UIElement::FrontToBack): Operate on our local
25530         state only, no walking up the tree.
25532 2008-03-24  Jeffrey Stedfast  <fejj@novell.com>
25534         * pipeline.cpp (mpeg_parse_header): Fix the MPEG layer parsing, it
25535         was seemingly getting layer 1 and layer 2 backwards.
25536         (mpeg_frame_length): Seems like we are never supposed to add 2
25537         bytes for 16bit crc?
25539         * layout.cpp (TextLayout::LayoutWrap): If the glyph advance is 0,
25540         then don't bother applying kerning. Fixes 2 cases in
25541         LineBreakClasses.htm
25542         (TextLayout::LayoutWrap): Disable breaking after a
25543         G_UNICODE_BREAK_AFTER if we can break before the word as this
25544         seems to fix the last test case in LineBreakBasic1.htm
25545         (TextLayout::LayoutWrap): Reverted a fix that introduced a
25546         regression but didn't fix any known test cases.
25548 2008-03-21  Michael Dominic K.  <mdk@mdk.am>
25550         * src/runtime.cpp: When calling gdk_window_get_pointer in
25551         motion_notify_ to pop more hints actually use the results as they're
25552         more valid than x,y in the event passed. Without doing so, we're not
25553         getting the last mouse coords.
25555         Fixes the nasty problem that MouseEnter/Leave is not called once in a
25556         while.
25558 2008-03-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25560         * brush.cpp, media.cpp, mplayer.cpp, mplayer.h: Refcount MediaPlayer. Rename
25561           MediaPlayer::GetSurface to GetCairoSurface so that it doesn't conflict
25562           with EventObject::GetSurface.
25564 2008-03-20  Jeffrey Stedfast  <fejj@novell.com>
25566         * font.cpp (TextFont::GetGlyphInfo): Comment out the fixed-width
25567         font hack for now.
25569         * text.cpp (deobfuscate_font): New helper function used by
25570         TextBlock and Glyphs.
25571         (TextBlock::DownloaderComplete): Check for obfuscated fonts.
25572         (Glyphs::DownloaderComplete): Same.
25574         * font.cpp (DecodeObfuscatedFontGUID): New function to decode the
25575         GUID from a string.
25576         (DeobfuscateFontFileWithGUID): Deobfuscate a font file in-place.
25577         (TextFont::OpenFontDirectory): Renamed from OpenZipArchiveFont()
25578         since we no longer get passed zip files. Instead of extracting
25579         fonts from a zip archive, we now index the fonts in the
25580         directory (if they haven't already been indexed) and then try to
25581         find the best matching font from the indexed fonts.
25582         (IndexFontDirectory): New function to index all fonts in a
25583         directory (and all subdirs).
25584         (TextFont::TextFont): Changed for other API changes.
25586 2008-03-20  Jeffrey Stedfast  <fejj@novell.com>
25588         * downloader.cpp (Downloader::IsDeobfuscated)
25589         (Downloader::SetDeobfuscated, Downloader::SetDeobfuscatedFile):
25590         Some new methods for replacing the original downloaded file with
25591         another tmp file that will need to be unlinked when the downloader
25592         is destroyed or a new file is requested.
25594         * utils.cpp (moon_copy_file): New convenience function.
25596 2008-03-20  Jeffrey Stedfast  <fejj@novell.com>
25598         * downloader.cpp (Downloader::Downloader): Initialize the unzipdir
25599         and unzipped state variables. Get rid of part_hash, no longer
25600         needed.
25601         (Downloader::CleanupUnzipDir): New method to cleanup the files
25602         extracted from any zip files we downloaded.
25603         (Downloader): Call CleanupUnzipDir ().
25604         (Downloader::GetDownloadedFile): New method that gets the original
25605         untouched downloaded file path.
25606         (Downloader::DownloadedFileIsZipped): New method to check to see
25607         if the downloaded file is a zip archive.
25608         (Downloader::GetDownloadedFilePart): A new method that replaces
25609         the old GetResponseFile() API, behaves the same as the old API.
25610         (Downloader::GetUnzippedPath): New method to get the unzip
25611         directory path (and unzip the downloaded file if it hasn't already
25612         been unzipped).
25613         (Downloader::Open): Cleanup any extracted zip files.
25615         * utils.cpp (moon_rmdir): New convenience function.
25617 2008-03-20  Larry Ewing  <lewing@novell.com>
25619         * runtime.cpp (Surface::ShowFullScreenMessage): make sure we set
25620         the surface first so that the changes to the properties cause
25621         invalidations.
25623 2008-03-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25625         * src.mdp: Added new files.
25627 2008-03-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25629         * pipeline.h: Added CanSeekToPts and SeekToPts to IMediaStream.
25631 2008-03-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25633         * pipeline.h: Added two more error conditions.
25635 2008-03-19  Jeffrey Stedfast  <fejj@novell.com>
25637         * font.cpp (TextFont::GetGlyphInfo): Use a different approach to
25638         caching glyphs. Try to take full advantage of the pre-allocated
25639         glyphs array before clobbering previously loaded glyphs.
25641 2008-03-19  Michael Dominic K.  <mdk@mdk.am>
25643         * src/dependencyobject.cpp: Making the prop resolving a bit more
25644         gracefull (smart) in case of common mistakes. 
25646         Solves test-crash-gracefull-prop-resolving.xaml.
25648 2008-03-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25650         * pipeline.cpp: We need to unlock the mutex before joining the
25651         thread. Fixes a dead-lock.
25653 2008-03-19  Geoff Norton  <gnorton@novell.com>
25655         * yuv-converter.cpp:  Use xmm0 to store a load value to avoid a
25656         repeated load.
25658 2008-03-19  Geoff Norton  <gnorton@novell.com>
25659         
25660         * yuv-converter.cpp:  More 64-bit fixes
25662 2008-03-19  Geoff Norton  <gnorton@novell.com>
25663         
25664         * yuv-converter.cpp:  Fix the test/cmp on x86-64
25666 2008-03-18  Geoff Norton  <gnorton@novell.com>
25668         * yuv-converter.cpp:  Fold RESTORE_COLOR_MODIFIERS into
25669         CALC_COLOR_MODIFIERS and prepare our own branches rather than trusting
25670         gcc.  The aligned load/store version of CALC_COLOR_MODIFIERS was
25671         clobbering (x)mm3 (green coefficient) when processing the high order
25672         pels.  I've reordered the method to remove some useless load/calc
25673         patterns that were there simply for readability and fixed the
25674         clobbering.
25675         
25676 2008-03-18  Jeffrey Stedfast  <fejj@novell.com>
25678         * font.cpp (TextFontDescription::CreatePattern): Always return the
25679         original pattern.
25680         (TextFont::Load): No longer takes a fromFile argument.
25681         (TextFont::TextFont): Cache using the original pattern (which is
25682         what we really wanted to do originally, but were caching the
25683         "closest-match" pattern before which was wrong).
25684         (TextFont::GetGlyphInfo): Use FT_Get_Char_Index() rather than
25685         FcFreeTypeCharIndex(). Doesn't fix any bugs, just avoids use of
25686         wrapper API that is unnecessary.
25687         (TextFont::GetGlyphInfo): Added a gross hack for *Che fonts.
25689 2008-03-18  Geoff Norton  <gnorton@novell.com>
25691         * yuv-converter.cpp: 768bits != 768bytes.  Implement prefetching the 
25692         cache lines for the Y plane.
25693         
25694 2008-03-18  Andrew Jorgensen  <ajorgensen@novell.com>
25696         * plugin-ffmpeg.cpp: Remove avformat dependency (not needed anymore)
25697         * plugin-ffmpeg.h: Fix conditional swscale inclusion
25699 2008-03-18  Michael Dominic K.  <mdk@mdk.am>
25701         * animation.cpp:
25702         * animation.h: Adding a new virtual method GetValueKind to Animation
25703         that returns the kind/type of values that given animation generates
25704         (doubles, points, etc.).
25706         Modyfying the HookupStorage to check if the animation type matches the
25707         type that the animated property expects. If it doesn't, bail out with a
25708         helpfull warning in the style of:
25710         "Ellipse.Fill property value type is 'Brush' but animation type is
25711         'Color'"
25713         This fixes a crash in test-crash-color-anim-on-solid.xaml and all
25714         crashes where we try to animate ie. a color property using doubles.
25716 2008-03-18  Michael Dominic K.  <mdk@mdk.am>
25718         * animation.cpp: Even more smoothing for KeySpline.
25720 2008-03-18  Michael Dominic K.  <mdk@mdk.am>
25722         * dependencyobject.cpp: Enabling back the inheritance test for property
25723         resolving but only when dealing with non-attached properties. 
25725 2008-03-17  Geoff Norton  <gnorton@novell.com>
25727         * Makefile.am:
25728         * pipeline-ffmpeg.cpp:
25729         * pipeline-ffmpeg.h:
25730         * swscale-converter.cpp:
25731         * swscale-converter.h:  Refactor the swscale based yuv2rgb converter
25732         out to a seperate file so it can be included optionally in the build.
25734 2008-03-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25736         * mplayer.cpp: Show error message, not only error number, upon thread
25737           creation failure.
25739 2008-03-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25741         * playlist.cpp, playlist.h: Add a way to determine if the playlist was
25742           created to play a single file, or if it was created from an asx file
25743           (IsSingleFile).
25745 2008-03-17  Chris Toshok  <toshok@ximian.com>
25747         * dependencyobject.cpp (EventObject::EventObject): reorder things
25748         to quiet g++.
25750 2008-03-17  Geoff Norton  <gnorton@novell.com>
25752         * yuv-converter.cpp: __attribute ((aligned ())) can be ignored
25753         for locals.  Use posix_memalign and share the instance for the 
25754         lifespan of the converter.
25755         
25756 2008-03-17  Jeffrey Stedfast  <fejj@novell.com>
25758         * font.cpp (FontPackFileFace::FontPackFileFace): Now takes an
25759         index argument, apparently FreeType2 always set face->face_index
25760         to 0 for these type fonts, so don't rely on it being accurate.
25761         (FontPack::CacheFileInfo): Pass the index value as an argument to
25762         FontPackFileFace's ctor.
25763         (TextFont::TextFont): Do hash lookups based on the matched
25764         pattern, not the original pattern passed in.
25766 2008-03-17  Jeffrey Stedfast  <fejj@novell.com>
25768         * text.h: Added #include "layout.h"
25770         * font.cpp: Removed font.cpp's layout logic which has been
25771         rewritten in layout.cpp.
25772         (TextFont::HasGlyph): It seems that Silverlight may wrap text
25773         differently depending on whether the glyph is in the font?
25775         * layout.cpp (TextLayout::LayoutWrap): More tweaking action...
25777 2008-03-17  Geoff Norton  <gnorton@novell.com>
25779         * yuv-converter.cpp: Ensure that our pointer alignment checks are
25780         64-bit safe.
25782 2008-03-17  Michael Dominic K.  <mdk@mdk.am>
25784         * animation.cpp: Interpolate linearly between keyspline values. This
25785         fixes the jags in test-animation-slow-keyspline.xaml.
25787 2008-03-17  Michael Dominic K.  <mdk@mdk.am>
25789         * animation.cpp: Fixes to the way we generate the KeySpline values to be
25790         more smooth an precise.
25792 2008-03-17  Larry Ewing  <lewing@novell.com>
25794         * runtime.cpp: go ahead and invalidate the toplevel before
25795         cleaning everything up. remove the disconnect call in
25796         DestroyWidget, all the handlers should be ok with getting called
25797         on fullscreen or the normal widget.
25799 2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
25801         * layout.cpp (TextLayout::LayoutWrap): Added some improved unicode
25802         line breaking logic.
25804 2008-03-14  Geoff Norton  <gnorton@novell.com>
25805         
25806         * yuv-converter.cpp: Remove some dead code.
25808 2008-03-14  Geoff Norton  <gnorton@novell.com>
25810         * mplayer.cpp: We actually need to align % 64 bytes on a 16 byte 
25811         bounary.  Each pel will expand to 4 bytes.  Since we process 16
25812         pels at a time in SSE2 we need 64 output bytes per iteration.
25814         * yuv-converter.cpp: Remove the rest of the unaligned move/stores
25816 2008-03-14  Sebastien Pouliot  <sebastien@ximian.com>
25818         * xaml.cpp: (flush_char_data) free data inside GString since the
25819         Value constructed around it creates it's own copy.
25821 2008-03-14  Geoff Norton  <gnorton@novell.com>
25823         * pipeline-ffmpeg.cpp: Use posix_memalign for the YUV data buffers
25824         to get a 16byte alignment for SSE2.
25825         * yuv-converter.cpp: Remove most of our unaligned load/stores.
25827 2008-03-14  Larry Ewing  <lewing@novell.com>
25829         * collection.h:
25830         * error.h:     
25831         * eventargs.h, enventargs.cpp:
25832         * type.h, type.cpp: make EventArgs a subclass of DependencyObject
25833         and all that entails.  Still need to look over the properties.
25835         * runtime.cpp, runtime.h: expose EmitError for now.
25836         
25837 2008-03-14  Larry Ewing  <lewing@novell.com>
25839         * mplayer.cpp (MediaPlayer::Open): use posix_memalign to allocate
25840         with a a 16bit alignment for the yuv converter.
25842 2008-03-14  Sebastien Pouliot  <sebastien@ximian.com>
25844         * xaml.cpp: (expat_parser_error) ParserErrorEventArgs free it's 
25845         own copy of the message.
25847 2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
25849         * font.cpp (TextRun::TextRun): Can't drop non-printable chars
25850         because soft-hyphen is apparently non-printable.
25852 2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
25854         * text.cpp (Glyphs::Layout): Check for NULL glyphs (which can
25855         happen now if the glyph does not exist in the font).
25856         (Glyphs::Render): Same.
25858         * font.cpp (TextFont::GetGlyphInfo): Added a new GetGlyphInfo
25859         which takes a unichar and index. This is now the main
25860         implementation that the other GetGlyphInfo() and
25861         GetGlyphInfoByIndex() use. The glyph table is now indexed by index
25862         rather than unichar.
25864 2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
25866         * text.cpp (Glyphs::Layout): Don't error out on (1:1) clusters
25867         without a specified index, these are ok.
25869 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
25871         * brush.cpp: In ImageBrush, if the image has not been downloaded
25872         yet, draw nothing like SL does -- instead of the grayish shadow.
25874 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
25876         * dependencyobject.cpp: Check the types of objects when
25877         resolving_property_paths and some more verbosity to the error
25878         reporting. Now test-crash-non-existing-animation-target-prop3
25879         fails with the proper warning.
25881         Also, terminate first on first error found.
25883 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
25885         * dependencyobject.cpp: Even more verbose error reporting in the
25886         resolve_property_path ().
25888 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
25890         * animation.cpp: Making the warning report proper error when can't
25891         resolve property on object. Now we're getting:
25893         "No property named
25894         (UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)
25895         on object ball, which has type Ellipse!"
25897 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
25899         * animation.cpp: Check correctly if we have object and property
25900         before trying to hookup storage.
25902         Fixes the crash in test-crash-non-existing-animation-target-prop.xaml
25903         but the warning message is still incorrect:
25905                 "No object named ball!"
25907         The object named "ball" exists but it doesn't have the requested
25908         property.
25910 2008-03-14  Michael Dominic K.  <mdk@mdk.am>
25912         * animation.cpp: Changing few printf's to g_warnings.
25914 2008-03-14  Stephane Delcroix  <sdelcroix@novell.com>
25916         * shape.cpp: Deal with different [start|end|dash] caps for lines 
25917         and polylines.
25919 2008-03-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25921         * mplayer.cpp: Comment out printf.
25923 2008-03-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25925         * mplayer.cpp: AudioNode::Play: property calculate the delay between the
25926           play position in the hardware and the pts we just sent to alsa, and
25927           subtract it from that pts.
25929 Thu Mar 13 23:25:41 CET 2008 Paolo Molaro <lupus@ximian.com>
25931         * clock.cpp: use a monotonic clock if available to avoid issues with
25932         the system time changing.
25934 2008-03-13  Jeffrey Stedfast  <fejj@novell.com>
25936         * layout.cpp (TextRun::TextRun): Don't drop non-printable
25937         chars... somehow soft-hyphen (0xAD) is non-printable according to
25938         glib and so breaks the LineBreakBasic1.htm test.
25939         (TextLayout::LayoutNoWrap): Keep appending words to the line until
25940         a line ends beyond max_width, we don't care where it begins (it
25941         could begin way beyond max_width for all we care).
25943 2008-03-13  Chris Toshok  <toshok@ximian.com>
25945         * text.cpp (~Glyphs): don't unref the fill, since we don't take a
25946         ref on it.
25948 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25950         * mplayer.cpp: Make this build on SLED until I find a proper workaround.
25952 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25954         * media.cpp: Update according to MediaPlayer changes.
25956 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25958         * mplayer.cpp, mplayer.h, pipeline.cpp: Play audio on a single
25959         thread. Fixes #326902.
25961 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25963         * Makefile.am: Set our G_LOG_DOMAIN.
25965 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25967         * xaml.cpp: default_create_element_instance: Set the surface as soon as
25968           possible.
25970 2008-03-13  Michael Dominic K.  <mdk@mdk.am>
25972         * animation.cpp: Modyfying the KeyFrameCollection::GetKeyFrameForTime
25973         behavior. When getting the keyframe for time additionally crawl back (if
25974         needed) to find the last non-null keyframe and non-null previous
25975         keyframe. By doing so we silently ignore the frames without values set
25976         and don't crash on nullable types.
25978         Fixes the crash in AnimationMatrix2.html/xaml and in the
25979         test-animation-null-keyframe.xaml test.
25981         Remving the XXX warnings about nullabled types from file since they
25982         don't apply anymore.
25984 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
25986         * visual.h, uielement.cpp, visual.cpp: Remove the 'surface' field from
25987           Visual, we're already storing the surface in the EventObject.
25988         * dependencyobject.cpp: EventObject::unref_delayed: remove the #if false,
25989           and comment out the warning, since with the current code it's entirely
25990           possible to unref a dependecyobject with no surface.
25992 2008-03-13  Stephane Delcroix  <sdelcroix@novell.com>
25994         * brush.cpp: compute relative transform as it's done in SL. We used to
25995         derelativize transform to match the absolute ones. Now we map the brush
25996         to a 1x1 square, apply the transform, and unmap back. It simplify the 
25997         computation a lot too. Fixes bnc #354892 and a bad gradient in 
25998         brushes.xaml.
26000 2008-03-12  Chris Toshok  <toshok@ximian.com>
26002         * media.cpp (expand_rgb_to_argb): use a different codepath if the
26003         rowstride isn't padded out to be divisible by 4 (or else we read
26004         off the end by a byte).
26006 2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26008         * pipeline.cpp: ASFDemuxer: Only seek in the selected streams.
26010 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26012         * pipeline.cpp, pipeline.h: Break all media threads upon media shutdown.
26013         * pipeline-ffmpeg.cpp: Don't check if we've been registered before, the
26014           pipeline correctly removes registered infos upon shutdown, so if we're
26015           initialized again we should also register again.
26016         * runtime.cpp: Call Media::Shutdown do shut down the media threads before
26017           doing anything else.
26019 2008-03-12  Jeffrey Stedfast  <fejj@novell.com>
26021         * font.cpp (TextRun::TextRun): Fixed canonicalization logic.
26023         * text.cpp (TextBlock::LayoutSilverlight): When creating a list of
26024         TextRun's, if the Run contains \n's, break the text into
26025         non-linebreak and linebreak TextRun elements. Allows the
26026         TextLayout::Layout() logic to be simplified considerably.
26028 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26030         * dependencyobject.cpp: DependencyObject: Initialize our surface field to
26031           NULL.
26033 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26035         * pipeline.h, pipeline.cpp: Add logging macros. Use ErrorEventArgs for error
26036           reporting so that the errors can easily be bubbled up the pipeline. Add
26037           a 'selected' field to IMediaStream, whether the media player is using
26038           that stream or not.
26039         * error.h: Add a MediaErrorEventArgs class.
26041 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26043         * pipeline.cpp: Propagate the surface from the media element to the media.
26045 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26047         * mplayer.cpp, pipeline.cpp, pipeline.h: Add a 'selected' field to the
26048           IMediaStream, indicates whether the stream is being played or not.
26050 2008-03-12  Sebastien Pouliot  <sebastien@ximian.com>
26052         * dependencyobject.cpp: Add NULL check in method 
26053         RemovePropertyChangeListener since a bad XAML input can cause a
26054         NULL entry in the list.
26056 2008-03-12  Michael Dominic K.  <mdk@mdk.am>
26058         * runtime.cpp:
26059         * runtime.h:
26060         * shape.cpp: Properly calculate the shape cache depending on our bpp etc.
26062 2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26064         * xaml.cpp: xaml_create_from_file: if there was some error loading the file,
26065           don't crash, print an error message. Dup all strings put into
26066           namespace_map, and free them all upon its destruction.
26068 2008-03-11  Larry Ewing  <lewing@novell.com>
26069         
26070         * collection.cpp (VisualCollection::VisualAdded): make sure we set
26071         the surface as the first step, dirty processing depends on it.
26072         Fixes OM_RemoveClearRemoveAt.htm regression.
26074 2008-03-11  Larry Ewing  <lewing@novell.com>
26076         * canvas.h:
26077         * canvas.cpp (Canvas::OnPropertyChanged): listen to changes on Top
26078         and Left when we are toplevel so that we can recompute our
26079         transform.
26081         * uielement.cpp: if we don't have a parent call GetTransformFor on
26082         ourself so that Top and Left are taken into account on toplevel
26083         canvases.  Fixes test-canvas-toplevel.xaml
26085 2008-03-11  Chris Toshok  <toshok@ximian.com>
26087         * clock.h, clock.cpp: a few changes, the most important
26088         being (ifdefed for now) code to put the timemanager to sleep when
26089         it's not needed for animations, rendering, or tick calls.  To do
26090         this we need a couple of changes to the clock code.  1) propagate
26091         the time_manager out to all clocks, so we can force it to tick the
26092         clock hierarchy the first time whenever a storyboard is started.
26093         2) make Clock/ClockGroup::Tick return a bool, which means "i'll be
26094         in need of another tick."  Do the same for the tick call stuff,
26095         where the bool return value means "we have more tick calls
26096         pending."  Also, add a couple of methods to the
26097         TimeManager (NeedRedraw, NeedClockTick) which will start up the
26098         timemanager if it's asleep, and set the proper flag so it'll do
26099         the right work on the next tick.
26102         * uielement.cpp: notify the timemanager that we have a redraw to
26103         process.
26104         
26105         * runtime.cpp (Surface::realized_callback): tell the time manager
26106         to redraw us to get the process moving.
26108 2008-03-11  Sebastien Pouliot  <sebastien@ximian.com>
26110         * xaml.cpp: Work around the fact that it's not always safe to 
26111         call some expat functions, like XML_GetCurrentLineNumber, if the
26112         parsing failed early.
26114 2008-03-11  Chris Toshok  <toshok@ximian.com>
26116         * namescope.h, namescope.cpp: switch from reffing the objects to
26117         using the DestroyedEvent.  Otherwise our toplevel canvas has a ref
26118         cycle with its namescope.  Also, short circuit out if we're
26119         registering the same object twice.  keeps us from having too many
26120         DestroyedEvents (since RemoveHandler only removes one).
26122         * dependencyobject.h, dependencyobject.cpp: move
26123         GetSurface/SetSurface to EventObject, and add unref_delayed as a
26124         method.  If the event object has a surface associated with it, add
26125         it to the surface's pending list of unrefs.  otherwise warn us and
26126         add it to the global list.  The warnings should be fixed as the
26127         global list really should go away.
26129         Also, before we free a value, make sure to remove our handler and
26130         unset the closure.
26132         Also, get rid of OBJECT_TRACK_ID.  use an environment variable for
26133         this.  So if you compile with OBJECT_TRACKING on, nothing new
26134         happens unless you set the "MOONLIGHT_OBJECT_TRACK_ID" environment
26135         variable to the id of the object you want to track.  Makes the
26136         turnaround time a little quicker.
26138         shift some things around in the header file while I'm making this
26139         change.
26141         * runtime.h, runtime.cpp: move some more methods to the .cpp from
26142         the .h, and also add the per-surface pending unrefs list.  This is
26143         basically a c&p of the global list from dependency.cpp.
26145         * downloader.h, downloader.cpp: remove Get/Set Surface in favor of
26146         using EventObject's.
26147         
26148 2008-03-11  Sebastien Pouliot  <sebastien@ximian.com>
26150         * xaml.cpp: Add NULL check in dependency_object_add_child since
26151         parent->parent->item may be NULL in malformed XAML files.
26153 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26155         * pipeline.h, media.cpp, pipeline.cpp: Rename GetPositionOfPts to
26156           EstimatePtsPosition and remove the estimate parameter, it's never used.
26158 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26160         * runtime.cpp: No need to scream in printfs.
26162 2008-03-11  Jeffrey Stedfast  <fejj@novell.com>
26164         * font.cpp (TextLayout::Layout): More fixes, this is getting
26165         gross.
26167 2008-03-11  Sebastien Pouliot  <sebastien@ximian.com>
26169         * xaml.cpp: Avoid crashing if the PML does not start with a 
26170         M(ove) instruction.
26172 2008-03-11  Michael Dominic K.  <mdk@mdk.am>
26174         * src/: Moving implementations from .h to .cpp, leaving only
26175         setters/getters + simple constructors in .h.
26177 2008-03-11  Larry Ewing  <lewing@novell.com>
26179         * xaml.cpp (dependency_object_set_property): throw an error if we
26180         get here without a DependencyObject.  Fixes
26181         test-property-parsing.xaml
26183 2008-03-10  Larry Ewing  <lewing@novell.com>
26185         * panel.cpp:
26186         * uielement.cpp: add more checks to the parent tree.
26188 2008-03-10  Chris Toshok  <toshok@ximian.com>
26190         * dependencyobject.cpp (~DependencyObject): use
26191         g_hash_table_foreach_remove, so the dtor of one value can't access
26192         an already destroyed DO from another value.
26194 2008-03-10  Chris Toshok  <toshok@ximian.com>
26196         * namescope.cpp: don't explicitly unref the object when removing
26197         it.  instead use base_unref as the value-dtor for the GHashTable.
26198         This will cause unrefs when the hash table is destroyed in the
26199         dtor (a case we were missing before.)
26201         * collection.h, collection.cpp (class Collection): factor out the
26202         body of Collection::Clear into a non-virtual method that we can
26203         call from the dtor.
26205 2008-03-10  Larry Ewing  <lewing@novell.com>
26207         * uielement.cpp:
26208         * panel.cpp: make sure we don't subtract the region unless non of
26209         our anscestors have a slip mask.  This should be implemented in a
26210         more efficient way.
26212 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26214         * playlist.cpp, playlist.h: Move PlaylistContent info PlaylistEntry.
26216 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26218         * dependencyobject.h, dependencyobject.cpp: Enable object counting when
26219           DEBUG is defined.
26220         * runtime.cpp: Show a message if we leak objects and DEBUG is defined.
26221         * pipeline.cpp: Remove printfs.
26223 2008-03-10  Larry Ewing  <lewing@novell.com>
26225         * geometry.h:
26226         * geometry.cpp: make IsBuilt check for actual path data as well
26227         then use it everywhere we need it.  Invalidate the path if the
26228         figures change.  Fixes test-transform-clip.htm.
26230 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26232         * playlist.cpp: Playlist::AddEntry: unref the entry after adding it.
26234 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26236         * mplayer.cpp: When stopping, we need to seek to the beginning again. Fixes
26237           #368461.
26239 2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26241         * media.cpp: Update according to pipeline changes. TryOpen: our
26242           downloaded_file field may change when we call MediaOpened, so save a
26243           local copy before calling MediaOpened. Unref our playlist upon
26244           destruction, and 
26245         * mplayer.cpp: Update according to changes in the pipeline.
26246         * pipeline.cpp, pipeline.h: Delete all but one of GetNextFrameAsync, the
26247           rest aren't used. Make the remaining method take the stream as a
26248           parameter, and the resulting frame will be put in the closure. Also
26249           handle the case when the codec returns MEDIA_CODEC_DELAYED, in which
26250           case just try again with the next frame. Make MediaWork ref/unref the
26251           fields that can be ref counted. 
26252         
26253 2008-03-10  Chris Toshok  <toshok@ximian.com>
26255         [ Fixes bug #368460 ]
26256         * collection.cpp (Collection::SetVal): make sure to unregister the
26257         name of the object(s) we remove from the collection.
26258         (Collection::Remove): same.
26259         (Collection::RemoveAt): same.
26260         (Collection::Clear): same.
26262         * namescope.cpp (NameScope::RegisterName): ref the object.
26263         (NameScope::UnregisterName): unref the object.
26265 2008-03-10  Jeffrey Stedfast  <fejj@novell.com>
26267         * font.cpp (TextLayout::Layout): More line-wrap fixes - implement
26268         Silverlights TextWrapping="Wrap" bug where it doesn't ever break
26269         the last word.
26271 2008-03-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26273         * src.mdp: Updated.
26275 2008-03-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26277         * dependencyobject.h: Make the OBJECT_TRACKING stuff public.
26278         * runtime.cpp: Use GetRefCount, not refcount.
26280 2008-03-10  Chris Toshok  <toshok@ximian.com>
26282         * runtime.h, runtime.cpp: add surface_get_time_manager.
26284         * downloader.h, downloader.cpp: add downloader_get_surface.
26285         
26286 2008-03-10  Michael Dominic K.  <mdk@mdk.am>
26288         * runtime.cpp:
26289         * runtime.h:
26290         * shape.cpp: Making the shape-caching a runtime parameter
26291         (shapecache=yes). Turned off right now.
26293 2008-03-10  Michael Dominic K.  <mdk@mdk.am>
26295         * shape.cpp: Tiny refactoring to the surface-size calculation code.
26297 2008-03-10  Michael Dominic K.  <mdk@mdk.am>
26299         * runtime.h:
26300         * shape.cpp: Adding functionality to limit the amount of caching
26301         happening on one surface. Currently set to ~6mb. 
26303 2008-03-09  Larry Ewing  <lewing@novell.com>
26305         * mplayer.cpp: fix another place that used the wrong stride.
26307 2008-03-09  Geoff Norton  <gnorton@novell.com>
26309         * yuv-converter.cpp: Make sure we emms after finishing sse/mmx 
26310         instrucitons.
26312 2008-03-09  Geoff Norton  <gnorton@novell.com>
26314         * yuv-converter.cpp: Detect the CPU features at runtime.  We
26315         should now be able to distribute a 32-bit SSE2/MMX build to
26316         non SSE2/MMX machines
26318 2008-03-09  Geoff Norton  <gnorton@novell.com>
26320         * yuv-converter.cpp: Implement runtime fallbacks in the Convert
26321         function (TODO: Still need to runtime detect SSE2/MMX) 
26323 2008-03-09  Larry Ewing  <lewing@novell.com>
26325         * mplayer.cpp (MediaPlayer::Open): make the stride % 16 for now.
26327 2008-03-09  Larry Ewing  <lewing@novell.com>
26329         * mplayer.cpp (MediaPlayer::Open): use the proper stride
26330         calculation functions.
26332 2008-03-08  Geoff Norton  <gnorton@novell.com>
26334         * yuv-converter.cpp:  Implement a SSE2 version of the YUV2RGB
26335         codepath along with some code cleanup.  Still some more cleanup
26336         to do for runtime detection of CPU features.
26338 2008-03-08  Geoff Norton  <gnorton@novell.com>
26340         * yuv-converter.cpp:  Fix some erroneous math.  U' != U.
26341         These coefficients are far more sane now and our lum change is 
26342         reflected properly.
26344 2008-03-08  Chris Toshok  <toshok@ximian.com>
26346         * clock.cpp (TimeManager::SourceTick): larry gets credit for
26347         spotting this problem and suggesting the fix.  remove the
26348         hysteresis code, and *always* set a new timeout, based on what our
26349         idea of the timeout and the amount of time we spent rendering the
26350         previous frame.  This smooths things out immensely, removes (for
26351         me) the animation stutters induced by audio in sprawl, and results
26352         in fewer dropped frames.
26354 2008-03-08  Geoff Norton  <gnorton@novell.com>
26356         * yuv-converter.cpp: Fix the luminance problem (Y needs shift;
26357         and b was pulling the wrong l/h value.
26359 2008-03-08  Chris Toshok  <toshok@ximian.com>
26361         * value.cpp (Value::CreateUnrefPtr): use GetRefCount() instead of
26362         accessing dob->refcount.
26363         (Value::CreateUnref): same.
26365         * dependencyobject.h, dependency.cpp (class EventObject): reorder
26366         this class definition so that we don't have multiple
26367         public/protected/private areas.  confusing as hell :) Also, move
26368         the implementations of the non-performance critical things into
26369         the .cpp file, as they were making the .h rather cluttered (ctor,
26370         dtor, weak ref/unref.)  Lastly, make almost everything private
26371         instead of public (most importantly the refcount.)
26373         * debug.h, debug.cpp: random code cleanup.  we don't need to be
26374         concerned with adding some additional stack methods to the plugin
26375         in the DEBUG case, so go ahead and just use DEBUG here instead of
26376         STACK_DEBUG.
26378 2008-03-08  Chris Toshok  <toshok@ximian.com>
26380         * uielement.cpp, text.cpp, clock.cpp, mplayer.cpp: remove the
26381         extern guint32 moonlight_flags.
26383         * pipeline.cpp: if RUNTIME_INIT_CONVERTER_YUV, use the yuv
26384         converter, otherwise use ffmpeg.
26386         * runtime.h: add RUNTIME_INIT_CONVERTER_YUV to the list of init
26387         flags, and (my god) put the extern moonlight_flags here.
26389         * runtime.cpp: add yuv converter options. use
26390         MOONLIGHT_OVERRIDES=converter=yuv to enable it.  default is
26391         "converter=ffmpeg".
26393 2008-03-08  Geoff Norton  <gnorton@novell.com>
26395         * yuv-converter.cpp: Clear the mmx state when we're done
26396         processing.  Fixes most problems on x86_32.
26398 2008-03-08  Geoff Norton  <gnorton@novell.com>
26400         * pipeline.cpp: Disable YUV converter, its crashing on x86_32
26401         currently.
26403 2008-03-08  Geoff Norton  <gnorton@novell.com>
26404         
26405         * pipeline-ffmpeg.cpp:  Dont register YUV converter here.
26406         * pipeline.cpp: Register YUV converter here.
26408 2008-03-08  Geoff Norton  <gnorton@novell.com>
26410         * yuv-converter.cpp:  Remove some code duplication and refactor
26411         to support register starved implementations.
26413 2008-03-08  Geoff Norton  <gnorton@novell.com>
26415         * Makefile.am: Add yuv-converter.cpp to the build
26416         * yuv-conveter.*: Our YUV2RGB 420P converter.  Replaces
26417         libswscale.
26418         * pipeline-ffmpeg.cpp: Use YUVConverter instead of libswscale.
26420 2008-03-08  Chris Toshok  <toshok@ximian.com>
26422         * clock.h, clock.cpp, animation.cpp: a few clock related changes.
26424         1. Revert the change that uses "forward" to tell if we're moving
26425         forward or not.  This isn't the only indicator, as a parent clock
26426         might be ticking backward, so we really do need to use "our_delta"
26428         2. Also, we need to not clamp the time of the clock (on either
26429         end) when we're filling, as if the parent's duration is longer
26430         than ours and they autoreverse, there needs to be some padding in
26431         the reverse direction before we start again.
26433         3. Only call ComputeBeginTime() on a newly created clock if the
26434         timeline has a begin time specified.  Otherwise, use
26435         BeginOnTick/GetBeginOnTick to make it begin on the next tick.
26436         This fixes the chess animation breakage.  The problem was caused
26437         by us computing the begin time immediately in Storyboard::Begin,
26438         which would calculate the clock's begin time relative to the
26439         *previous* tick.  on the next tick, the clock was almost always at
26440         1.0 progress, which caused the animations to skip directly to the
26441         end.
26443 2008-03-08  Chris Toshok  <toshok@ximian.com>
26445         * value.cpp, type.cpp, type.cpp.in, trigger.cpp, runtime.cpp,
26446         dirty.cpp, dependencyobject.cpp: more assert removal.  we can't
26447         assert in a plugin (even if people are running a debug build it's
26448         not exactly nice to bring down their browser.)
26450 2008-03-07  Chris Toshok  <toshok@ximian.com>
26452         * value.cpp (Value::CreateUnrefPtr): don't assert here.
26453         (Value::CreateUnref): same.
26455 2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26457         * type.cpp.in, typegen.cs, type.cpp: If the type system is accessed when
26458           it's not initialized, print a warning and re-initialize it.
26460 2008-03-08  Fernando Herrera  <fherrera@novell.com>
26462         * pipeline.cpp:
26463         * playlist.cpp:
26464         * playlist.h: Add support for ASX2 playlist files returned by
26465         mediaservers when requesting a mmsh file over plain http. Fixes
26466         http://channel9.msdn.com.
26468 2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26470         * pipeline.cpp: Add a couple of null checks in ~Media. Detect ASX files
26471           case-insensitively.
26473 2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26475         * pipeline.h, pipeline.cpp: Refcount IMediaObject, and make dtors in all
26476           derived classes protected.
26477         * media.cpp: Update according to pipeline changes. TryOpen: our
26478           downloaded_file field may change when we call MediaOpened, so save a
26479           local copy before calling MediaOpened.
26481 2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26483         * clock.cpp, clock.h: Added TimeManager::InvokeOnMainThread.
26484         * mplayer.cpp: Use TimeManager::InvokeOnMainThread instead of finding a
26485           TimeManager instance to add the timeout to.
26487 2008-03-07  Sebastien Pouliot  <sebastien@ximian.com>
26489         * downloader.cpp: Fix access to Status from JScript.
26491 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26493         * mplayer.cpp: LoadVideoFrame: if we got the last frame, don't request any
26494           more frames.
26496 2008-03-07  Sebastien Pouliot  <sebastien@ximian.com> 
26498         * brush.cpp: Fix default value for ColorInterpolationMode (js
26499         unit tests)
26500         * parsertest.cpp: Adapt to API change.
26501         * xaml.cpp|h: Change value_from_str[_with_typename] to return a
26502         bool since NULL can be a valid Value in some cases (e.g. empty
26503         stuff that should not reset the DO default values).
26505 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26507         * mplayer.cpp: Add a null check before accessing any time managers.
26509 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26511         * brush.cpp, uielement.cpp: Use MediaElement::GetMediaPlayer instead of
26512           accessing the field.
26513         * media.cpp, media.h: Use MediaElement::GetMediaPlayer instead of accessing
26514           the field. Update according to pipeline changes.
26515         * mplayer.cpp, mplayer.h: Update according to pipeline changes.
26516         * pipeline.cpp, pipeline.h: Make Media inherit from EventObject so that it
26517           can be ref counted. Make MediaClosure more intelligent by ref/unreffing
26518           the context and media fields. All variations of MediaWork has a closure,
26519           so move the closure field out of the union. This simplifies
26520           Media::WorkerLoop a bit. Add a Media::SeekToStart, which is required to
26521           not cause any reads/seeks which may block. Remove SetQueueCallback, the
26522           request takes a closure now. Implement an ASXDemuxer to read ASX files.
26523         * sizes.cpp: Updated.
26524         * playlist.h, playlist.cpp: First part of the new playlist support.
26526 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26528         * dependencyobject.cpp: Make the output in EventObject::Track print
26529           atomically. Really avoids a lot of confusion if several threads are
26530           printfing at the same time.
26532 2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26534         * debug.cpp: Add a couple of null checks.
26536 2008-03-06  Jeffrey Stedfast  <fejj@novell.com>
26538         * font.cpp (TextLayout::Layout): Don't wrap on a space char, ever.
26539         (TextLayout::Layout): Don't include trailing lwsp in the line
26540         width calculation unless it is the last line.
26541         (TextLayout::Layout): Don't include trailing empty lines in the
26542         height calculation.
26544 2008-03-06  Chris Toshok  <toshok@ximian.com>
26546         * clock.h, clock.cpp: some changes to make TimeManager a
26547         per-surface item, instead of a singleton/global.  The time manager
26548         creates a root clock group, just like Surface used to, which is
26549         the parent of all storyboards for a surface.
26550         
26551         * dirty.h, dirty.cpp: remove the method prototypes and globals -
26552         switch everything to be Surface:: methods.
26553         
26554         * runtime.h, runtime.cpp: get rid of our ClockGroup and Timeline
26555         for the root clock, and create a TimeManager instead.  Also, add
26556         the dirty methods/fields to Surface, even though the
26557         implementation still lives in dirty.cpp.  Also, call
26558         toplevel->SetSurface(NULL) early in our dtor so that elements can
26559         react before, e.g., the time manager has been destroyed.
26561         * media.h, media.cpp: use the surface's TimeManager instead of a
26562         global one.  Also override SetSurface so we can tell if we're
26563         losing access to it, and remove our timeout accordingly.
26565         * mplayer.cpp: use the media element's TimeManager.
26567         * visual.h, visual.cpp: add GetTimeManager() method, which just
26568         does GetSurface()->GetTimeManager().
26570         * dependencyobject.cpp (base_unref_delayed): as much as I hate to
26571         do this, use a g_idle instead of a tick call here, since we have
26572         no access to the surface.
26574         * animation.cpp (Storyboard::Begin): the surface no longer has the
26575         root clock group, the surface's TimeManager does.
26577         * panel.h, panel.cpp (SetSurface): recursively call SetSurface on
26578         our children.
26580         * uielement.h, uielement.cpp: translate global dirty calls into
26581         surface calls, and override SetSurface to remove ourselves from
26582         the dirty list if we're losing our surface.
26584         * eventargs.cpp: translate global dirty calls into surface calls.
26585         
26586 2008-03-06  Michael Dominic K.  <mdk@mdk.am>
26588         * src/clock.cpp: In ClockGroup Clamp the time *before* ticking on
26589         child clocks. Othewise children always get a small delta and keep
26590         going beyond the parent Duration bounds. Fixes the contrained
26591         storyboard examples.
26593         Also making the forward/backward ComputeNewTime behavior depend on
26594         'forward' instead of out_delta (which can be 0 if hitting bounds).
26596 2008-03-06  Sebastien Pouliot  <sebastien@ximian.com>
26598         * transform.cpp: Fix Matrix default values to match identity 
26599         matrix (and fix one js unit test).
26601 2008-03-05  Larry Ewing  <lewing@novell.com>
26603         * shape.cpp: drop the code that checks stretch when building the
26604         paths for polyline and polygon.  Fix the condition for translation.
26606 2008-03-05  Larry Ewing  <lewing@novell.com>
26608         * shape.h:
26609         * shape.cpp: refactor the stretch code slightly and fix the
26610         original stretch tests (that passed the harness but are clearly
26611         wrong).
26613 2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26615         * media.h: Made destructors in objects deriving from EventObject protected,
26616           preventing 'delete obj' and stack-allocation for these objects.
26617         
26618         * playlist.cpp: Can't delete downloaders anymore, unref it.
26620 2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26622         * animation.h, brush.h, canvas.h, clock.h, collection.h, control.h,
26623           dependencyobject.h, downloader.h, frameworkelement.h, geometry.h,
26624           namescope.h, panel.h, runtime.h, shape.h, stylus.h, text.h, transform.h,
26625           trigger.h, uielement.h, visual.h: Made destructors in objects deriving
26626           from EventObject protected, preventing 'delete obj' and stack-allocation
26627           for these objects.
26628         * demo.cpp, runtime.cpp: Can't delete a surface anymore, unref it.
26629         * dirty.h: Added header.
26631 2008-03-05  Chris Toshok  <toshok@ximian.com>
26633         * runtime.h (RUNTIME_INIT_DESKTOP, RUNTIME_INIT_BROWSER): make
26634         front-to-back rendering the default.
26636 2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26638         * clock.h, playlist.h, trigger.h, text.h, clock.cpp, playlist.cpp,
26639           trigger.cpp, dependencyobject.h, downloader.cpp, dependencyobject.cpp,
26640           media.h, animation.h, brush.h, runtime.h, media.cpp, animation.cpp,
26641           runtime.cpp, text.cpp: Updated event handling to take an EventArgs*
26642           calldata instead of a gpointer.
26643         * error.h: Added EventArgs, a base class for all *EventArgs.
26644         * collection.h: Make ChangeEventArgs inherit from EventArgs.
26645         * uielement.cpp: Create all *EventArgs on the heap and simply the code a
26646           bit.
26647         * collection.cpp: Don't allocate Collection::ChangeEventArgs on the stack.
26648         * eventargs.cpp, eventargs.h: Added EventArgs, a base class for all
26649           *EventArgs. Added MarkerReachedEventArgs.
26650         * brush.cpp: Updated event handling to take an EventArgs* calldata instead
26651           of a gpointer. ~ImageBrush: don't delete, unref.
26653 2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26655         * value.cpp: Fix warning.
26657 2008-03-05  Larry Ewing  <lewing@novell.com>
26659         * shape.cpp: Fix line, polyline and polygon to apply stretches
26660         properly (modulo pesimistic shape bounds bugs).  Mostly fixes
26661         test-shape-line-stretch2.xaml, test-shape-polyline-stretch2.xaml
26662         and test-shape-polygon-stretch2.xaml. 
26664         * shape.h: move stretch transform out of Path and into Shape.
26666         * stylus.h:
26667         * stylus.cpp: include the strokes in the subtree bounds so that we
26668         will get invalidations and update bounds when the collection
26669         changes.  There are still potential bounds issues point changes,
26670         those are being looked into.  Fixes invalidation issues in
26671         test-inkpresenter-position and test-inkpresenter-scale.
26673 2008-03-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
26675         * xaml.cpp: Add a null at the end of the namespace array.
26677 2008-03-05  Jeffrey Stedfast  <fejj@novell.com>
26679         * font.cpp (TextRun::TextRun): Drop \r's and convert non-new-line
26680         white space into a simple space.
26681         (TextLayout::Layout): Treat embedded \n's as LineBreaks
26682         (TextLayout::Layout): When calculating the width of a line that
26683         ends in a space, don't include the width of the space char -
26684         Silverlight doesn't seem to.
26685         (TextLayout::Layout): Don't pad the height. Don't pad the width
26686         either, altho it seems like a padding of +2.0 is about right but
26687         ONLY if the text is in a canvas? See OMTextInline.htm's
26688         actualWidth/Height measurements as well as the out-of-tree
26689         measurement.
26691         * xaml.cpp (char_data_handler): Always create the GString cdata,
26692         we need to note leading lwsp which the old implementation didn't.
26693         (flush_char_data): Try to emulate Silverlight's chug/chomp
26694         behavior more closely.
26696 2008-03-05  Chris Toshok  <toshok@ximian.com>
26698         * canvas.cpp (Canvas::OnSubPropertyChanged): make sure to chain up
26699         to panel's OnSubPropertyChanged if we don't handle it.
26701         * dependencyobject.cpp (DependencyObject::NotifyListenersOfPropertyChange):
26702         make sure we don't call this method with NULL args.  Also, remove
26703         larry's g_warning (which wasn't the case, i tested with sprawl!),
26704         and also remove the check for matching property/parent type for
26705         attached properties.  this will break controls.
26707         * transform.h, transform.cpp: it used to be that logical parents
26708         of children could rely on OnSubPropertyChanged being invoked for
26709         any property change.  This is no longer the case - the only
26710         instance where it still happens is if there's an attached property
26711         involved.  All other cases have to use OnCollectionChanged.  So,
26712         switch OnSubPropertyChanged to OnCollectionChanged here.
26714 2008-03-05  Jeffrey Stedfast  <fejj@novell.com>
26716         * text.cpp (TextBlock::OnCollectionChanged): We need to update
26717         bounds/text even if element_args is NULL (because adding/removing
26718         an item still changes our text).
26719         (Inline::OnPropertyChanged): Use args->new_value.
26721 2008-03-05  Chris Toshok  <toshok@ximian.com>
26723         * transform.h, transform.cpp: remove
26724         TransformCollection::OnSubPropertyChanged.  it was gumming up the
26725         works.
26727 2008-03-05  Larry Ewing  <lewing@novell.com>
26729         * shape.cpp: disable the shape caching code for now unless
26730         USE_OPT_SHAPE_SURFACE_CACHING=1.
26732 2008-03-05  Michael Dominic K.  <mdk@mdk.am>
26734         * Makefile.am:
26735         * enums.c:
26736         * enums.h:
26737         * xaml.cpp: Taking out all the enum->str (and vice versa) code from
26738         xaml.cpp and putting it into a new file -> enum.c + some utilities. 
26740         The enum<->str code is not specific to xaml and is usefull from plugin as
26741         well.
26743 2008-03-05  Stephane Delcroix  <sdelcroix@novell.com>
26745         * media.cpp: close the pixbuf_loader to load the small images too.
26747 2008-03-04  Chris Toshok  <toshok@ximian.com>
26749         * runtime.cpp (Surface::expose_to_drawable): re-enable the
26750         clearing of the cairo surface, but only if we have a
26751         widget (i.e. not in the windowless plugin case.)  Should fix
26752         translucent desklets without breaking the plugin.
26754 2008-03-04  Chris Toshok  <toshok@ximian.com>
26756         [ rather large change, reworking much of the property change event
26757         system to be a little smaller api surface-wise, and also cleaning
26758         up uses of it to remove some of the accumulated cruft that we'd
26759         developed over the past 10 months.]
26760         
26761         * dependencyobject.h, dependencyobject.cpp: A few key changes:
26763         1. Attach -> AddPropertyChangeListener
26764            Detach -> RemovePropertyChangeListener
26765            NotifyAttachersOfPropertyChange -> NotifyListenersOfPropertyChange
26767            This was done to remove the confusion between "attached"
26768            properties and our use of the word "attach" to mean "listen for
26769            property changes".  Attached properties are those which
26770            implicitly notify the parent when they're changed.
26771         
26772            OnChildPropertyChanged is gone.  Canvas (the only user of it)
26773            now uses OnSubPropertyChanged to deal with child property
26774            changes.
26776         2. *PropertyChanged methods take a
26777            structure (PropertyChangedEventArgs) that contains the
26778            DependencyProperty, as well as the old and new values of it.
26779            This was to remove the need for almost every
26780            OnPropertyChangedMethod to immediately call GetValue on the
26781            property.  Passing the old value requires changing the
26782            current_values hash to not have a value destructor, so we have
26783            to manually delete values again.
26785         3. Reordered the args for
26786            AddPropertyChangeListener/RemovePropertyChangeListener so that
26787            the listener comes first and the second arg defaults to NULL.
26788            Cleans up a bit of the use of this method globally.
26790         * animation.h, animation.cpp: track OnSubPropertyChanged changes.
26792         * brush.h, brush.cpp (SolidColorBrush::OnPropertyChanged,
26793         LinearGradientBrush::OnPropertyChanged,
26794         RadialGradientBrush::OnPropertyChanged): remove, unnecessary.
26796         also lots of changes to use args->new_value instead of calling
26797         GetValue(property).
26799         Clear up confusion regarding the meaning of the property passed to
26800         AddPropertyChangeListener.
26802         * canvas.h, canvas.cpp: switch OnChildPropertyChanged to
26803         OnSubPropertyChanged.
26804         
26805         * collection.h, collection.cpp (Node::Node): don't add parent as a
26806         listener for every property change here.  We handle this
26807         specifically (and automatically) in
26808         DependencyObject::NotifyListenersOfPropertyChange, but only for
26809         attached properties.
26810         (Node::~Node): don't remove the listener here either.
26812         lots of tracking the DO api changes here too.
26814         * control.h, control.cpp: track On*PropertyChanged changes.
26816         * font.cpp: fix some warnings
26818         * frameworkelement.h, frameworkelement.cpp: track
26819         On*PropertyChanged changes.
26820         
26821         * geometry.h, geometry.cpp: track On*PropertyChanged changes.
26822         
26823         * media.h, media.cpp (MediaElement::OnPropertyChanged): remove a
26824         lot of the empty blocks here - there's nothing to do for these
26825         properties, so we might as well not bloat the code.  Also, use
26826         new_value when we can.
26827         (Image::DownloaderComplete): add a (I hope) suitably nasty comment
26828         about calling brush->OnPropertyChanged directly.  code shouldn't
26829         do this, we should figure out if we can just set the property, and
26830         if so, do that.  otherwise something else is broken.
26831         (Image::OnPropertyChanged): use new_value where we can.
26833         * panel.h, panel.cpp: remove the cached background field.  It
26834         wasn't used except to Attach/ref + Detach/unref it, and that's
26835         handled automatically by the DependencyProperty machinery.
26836         Otherwise just track the On*PropertyChanged api changes.
26838         * shape.h, shape.cpp: similarly, we don't need to ref/attach our
26839         cached stroke and fill fields.  They're populated for us (and
26840         ref'ed/unref'ed as needed), so we don't need anything additional
26841         here.  Use new_value instead of GetValue in OnPropertyChanged.
26842         Also, factor out some redundant code from all the subclass
26843         OnPropertyChanged methods that was nearly the same as the
26844         Shape::OnPropertyChanged code for it.
26846         * stylus.h, stylus.cpp: On*PropertyChanged api changes.
26848         * text.h, text.cpp: mostly On*PropertyChanged api changes, and
26849         lots of using new_value instead of GetValue, but also get rid of
26850         the cached TextBlock foreground instance field.  It's easy enough
26851         to fetch when we need it in the ::Paint method, and the
26852         dependencyobject stuff already refs and attaches to it.
26854         * transform.h, transform.cpp: lots of On*PropertyChanged api
26855         changes, and using new_value instead of GetValue.
26857         * uielement.h, uielement.cpp: remove the cached opacityMask
26858         field (it wasn't used except for attach/detach, which is handled
26859         for us.)  The usual On*PropertyChanged changes as well as using
26860         new_value instead of GetValue.
26861         
26862 2008-03-04  Jeffrey Stedfast  <fejj@novell.com>
26864         * xaml.cpp (style_simulations_map): There's only one
26865         StyleSimulation value, and that is None.
26867         * font.cpp (TextLayout::Layout): In Wrap mode, if we overflow the
26868         width and the text is not part of the first run on a line, break
26869         at the beginning of the Run. This seems to be what Silverlight
26870         does in OMTextInline.htm.
26872 2008-03-04  Larry Ewing  <lewing@novell.com>
26874         * eventargs.cpp: update the dirty list before trying calculating
26875         relative locations.
26876         
26877         * runtime.cpp (Surface::HandleMouseEvent): process dirty elements
26878         here so that our hit testing has up to date bounds.
26881         * dirty.h: remove the prototypes for up/down since it isn't safe
26882         to split the up/down passes.
26884         * src/uielement.cpp: remove dirty processing.
26885         
26886 2008-03-04  Stephane Delcroix  <sdelcroix@novell.com>
26888         * media.cpp: use a pixbuf_loader instead of the pixbuf_new_from_file to
26889         create the pixbuf from a file, allowing partial rendering of broken
26890         imagefiles, like in Image.htm
26892 2008-03-04  Jeffrey Stedfast  <fejj@novell.com>
26894         * text.cpp (Inline::GetDefaultValue): Implemented.
26896 2008-03-04  Michael Dominic K.  <mdk@mdk.am>
26898         * src/uielement.cpp: When calling uielement_transform_point, make sure our
26899         transforms are up-to-date (not dirty).
26901         Since we're updating the transform matrices only in the expose (dirty)
26902         callback it can happen that two ie. mouse events arrive before we get to
26903         the expose. If the first mouse event invalidated the transform and the
26904         second one relies on the transform (ie. tries to obtain relative mouse
26905         position) it'd get bogus values since the transform has not been
26906         regenerated yet.
26908         Fixes the drag & drop behaviour in SL ink journal (the selection tool).
26909         Fixes: #362227.
26911 2008-03-04  Michael Dominic K.  <mdk@mdk.am> 
26913         * src/dirty.cpp:
26914         * src/dirty.h: Splitting the process_dirty_elements () into two individual
26915         chunks -- process_down_dirty_elements () and process_up_dirty_elements ().
26916         process_dirty_elements () now calls both. 
26918         The point here is that we need to process down dirty elements (call
26919         process_down_dirty_elements ()) from other contextes as well.
26921 2008-03-03  Larry Ewing  <lewing@novell.com>
26923         * uielement.cpp:  Call FullInvalidate when clip changes so that
26924         our subtree bounds are updated and invalidated.  Make sure we
26925         don't reset the forced invalidate flag.
26926         
26927         * dirty.cpp: invalidate subtree bounds on forced invalidations.
26928         Fixes test-clip-invalid-update.htm.
26929         
26930 2008-03-03  Jeffrey Stedfast  <fejj@novell.com>
26932         * text.cpp (TextBlock::GetText): New method to generate a string
26933         representing the Text property from the inlines.
26934         (TextBlock::SetText): New method (split out from the old
26935         ::SetValue code) to parse the newly set text string into a list of
26936         Inlines and update out InlinesProperty if changed. Returns whether
26937         or not the inlines property changed.
26938         (TextBlock::OnPropertyChanged): Call SetText() to update out
26939         Inlines if the TextProperty value was changed by an outside
26940         source. If the InlinesProperty was changed by an outside source,
26941         update our TextProperty.
26942         (TextBlock::OnCollectionChanged): Update our TextProperty if an
26943         Inline was added or removed or if a Run element had its
26944         TextProperty changed.
26946 2008-03-03  Chris Toshok  <toshok@ximian.com>
26948         * animation.cpp: plug a memory leak in the 3
26949         UsingKeyFrames::GetCurrentValue methods.
26951 2008-03-03  Chris Toshok  <toshok@ximian.com>
26953         * transform.h, transform.cpp: Make Matrix::GetUnderlyingMatrix
26954         return a cairo_matrix_t instead of a pointer to the
26955         internal (mutable) field, and update its only use.
26957 2008-03-03  Jeffrey Stedfast  <fejj@novell.com>
26959         * media.cpp (media_element_get_audio_stream_index): Fixed to
26960         handle nullable value.
26961         (media_element_set_audio_stream_index): Same.
26962         (media_init): Register the AudioStreamIndex property as being
26963         nullable.
26964         (MediaElement::Reinitialize): Set the CurrentStateProperty to
26965         "Closed".
26967 2008-03-03  Jeffrey Stedfast  <fejj@novell.com>
26969         * media.cpp (media_init): Register AudioStreamCount,
26970         BufferingProgress, CanPause, CanSeek, CurrentState,
26971         NaturalDuration, NaturalVideoWidth, NaturalVideoHeight properties
26972         as being read-only.
26974         * text.cpp (text_init): Register ActualWidth and ActualHeight
26975         properties as ReadOnly.
26977         * transform.cpp (Matrix::GetValue): Removed.
26978         (Matrix::SetValue): Removed.
26979         (Matrix::OnPropertyChanged): Implemented.
26981 2008-03-01  Larry Ewing  <lewing@novell.com>
26983         * shape.cpp (Shape::DoDraw): refactor slightly.
26985         * geometry.cpp: fix extents calculation when there is only a fill
26986         on the shape.  Fixes test-path-stretch-fill-extents.xaml.
26987         
26988         * shape.cpp (Shape::ComputeShapeBounds): make sure shapes with
26989         negative widths or heights have no bounds.
26990         (Shape::DoDraw): Silence warning.
26992 2008-02-29  Larry Ewing  <lewing@novell.com>
26994         * shape.cpp (Shape::ComputeShapeBounds): tweak shape bounds to
26995         match StretchAndShapes.xaml.
26997         * collection.cpp (VisualCollection::Remove): don't fire
26998         VisualRemoved unless we are going to actually remove the item.
26999         Fixes OM_RemoveClearRemoveAt.htm.
27001 2008-02-29  Jeffrey Stedfast  <fejj@novell.com>
27003         * collection.cpp (VisualCollection::ResortByZIndex): Reinitialize
27004         the z_sorted array before sorting so that we can be sure the end
27005         result will be a stable sort.
27006         (VisualCollection::Insert): Don't use g_ptr_array_insert_sorted()
27007         because we need to take index into account. Instead, grow our
27008         array and call ResortByZIndex().
27010 2008-02-29  Jeffrey Stedfast  <fejj@novell.com>
27012         * text.cpp (TextBlock::GetValue): Revert memleak fix, it created
27013         an even more fun memory corruption bug.
27015 2008-02-29  Larry Ewing  <lewing@novell.com>
27016         
27017         src/control.cpp:
27018         src/frameworkelement.cpp:
27019         src/geometry.cpp:
27020         src/media.cpp:
27021         src/rect.cpp:
27022         src/rect.h:
27023         src/shape.cpp:
27024         src/text.cpp:
27025         src/uielement.cpp: Fix Rect::Transform, replace all occurances of
27026         bounding_rect_for_transformed_rect with Rect::Transform.
27028 2008-02-29  Larry Ewing  <lewing@novell.com>
27030         * geometry.cpp: apply transform to all bounds calculations.  Fixes
27031         test-geometry-bounds.xaml.
27033 2008-02-29  Larry Ewing  <lewing@novell.com>
27035         * geometry.cpp: Make sure geometry groups draw their children
27036         rather than just copying the paths so that local transforms are
27037         applied correctly.
27039 2008-02-29  Jeffrey Stedfast  <fejj@novell.com>
27041         * text.cpp (TextBlock::GetValue): Fixed memory leak.
27043         * media.cpp (MediaElement::GetValue): Fixed compile warning.
27045         * text.cpp (Inline::OnPropertyChanged): Use GetValueNoDefault()
27046         rather than calling inline_get_*() which use GetValue().
27048         * font.cpp (TextFont::TextFont): Don't let the underline thickness
27049         be < 1.0
27051         * dependencyobject.cpp (DependencyObject::GetValueNoDefault):
27052         Simplified.
27053         (DependencyObject::GetValue): Simplified.
27054         (DependencyObject::GetDefaultValue): New method to get the default
27055         value for a property (now used by GetValue()).
27057 2008-02-29  Larry Ewing  <lewing@novell.com>
27059         * geometry.cpp (PathGeometry::ComputeBounds): take the geometry
27060         transform into account when computing bounds.  Fixes
27061         CGeometry_AddToRenderList.xaml
27063 2008-02-29  Larry Ewing  <lewing@novell.com>
27065         * shape.h:
27066         * shape.cpp: export calc_line_bounds.
27068         * geometry.cpp: use calc_line_bounds from shape.h.  Fixes bounds
27069         problems on Animation_TargetingAndHandoff.xaml.
27071 2008-02-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27073         * pipeline.cpp: Add a missing const modifier.
27075 2008-02-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27077         * mplayer.cpp: Use the first streams found in the media, not the last.
27079 2008-02-28  Stephane Delcroix  <sdelcroix@novell.com>
27081         * stylus.cpp: if there's an outline, draw a line of at least 2px.
27083 2008-02-28  Stephane Delcroix  <sdelcroix@novell.com>
27085         * brush.cpp: No longer ignore out-of-bounds offest in
27086         SetupGradient. Add the bounds stop with linearinterpolation
27087         between the nearest stop and the outofbounds one. Handle the
27088         degenerated case with only outofbounds stops.
27090 2008-02-28  Michael Dominic K.  <mdk@mdk.am>
27092         * shape.cpp: Commenting a left-over debug g_warning.
27094         Additionally adding a protection against NULL in cache-size reporting (as
27095         experienced by rolf). However, if GetSurface () returns NULL in the Render
27096         callback... I guess we're screwed anyways.
27098 2008-02-28  Michael Dominic K.  <mdk@mdk.am>
27100         * xaml.cpp:
27101         * xaml.h: Adding convert_property_value_to_enum_str function to
27102         check/convert if the value for the given property can be represented by an
27103         enum string. 
27105         It would be nicer to mover all the enums tables/resolving to a separate
27106         place in future instead of gluing it to xaml.cpp.
27108 2008-02-28  Stephane Delcroix  <sdelcroix@novell.com>
27110         * shape.h|cpp: override GetSizeForBrush for Rectangle to honor the
27111         Stretch property.
27113 2008-02-27  Jeffrey Stedfast  <fejj@novell.com>
27115         * text.cpp (Glyphs::Render): Use horiBearingX for the first char
27116         in the Glyphs string just like we do for TextBlock rendering.
27118 2008-02-27  Jeffrey Stedfast  <fejj@novell.com>
27120         Fixes the last remaining issue in the TextRegressions.htm test.
27122         * xaml.cpp (flush_char_data): Only preserve LWSP in CDATA between
27123         non-autogenerated <Run>'s.
27125         * text.cpp (TextBlock::SetValue): Mark the Inlines auto-generated
27126         from the TextBlock's Text property as being auto-generated.
27128 2008-02-27  Larry Ewing  <lewing@novell.com>
27130         * shape.cpp: change the shape surface cache to cache in device
27131         coordinates and rework the candidate restrictions to reject
27132         huge shapes and allow scaled caches.
27134 2008-02-27  Larry Ewing  <lewing@novell.com>
27136         * shape.cpp: center the filled image within the new bounds.
27138 2008-02-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27140         * media.h, media.cpp: When a media is opened, seek to the current
27141         position.
27143         * value.cpp: ToString: Return 'NULL' if we're null.
27145 2008-02-27  Michael Dominic K.  <mdk@mdk.am>
27147         * src/animation.cpp: When storyboard is completed, Teardown the clocks
27148         only if we're realling stopping (not holding). Fixes the
27149         StoryBoard_ModifyProperty test.
27151 2008-02-27  Michael Dominic K.  <mdk@mdk.am>
27153         * clock.cpp: Make sure we actually hit the our_delta < 0 code 
27154         path. Fixes the AutoReversed/Repeated animations.
27156 2008-02-27  Michael Dominic K.  <mdk@mdk.am>
27158         * shape.cpp: More cases to invalidate (free mem) of the surface cache.
27160 2008-02-26  Jeffrey Stedfast  <fejj@novell.com>
27162         * font.cpp (TextFont::TextFont): Precalculate underline position
27163         and thickness. Also, we need to adjust the position based on 1/2
27164         the underline thickness.
27165         (TextLayout::Layout): Only adjust by the horiBearingX if < 0.
27166         (TextLayout::RenderLine): Same.
27168 2008-02-26  Chris Toshok  <toshok@ximian.com>
27170         * runtime.cpp (runtime_cairo_create): take the visual too, so the
27171         plugin can send ours in - we can't rely on the pixmap having a
27172         visual associated with it, because it's initialized with the
27173         _foreign api which doesn't fill in the colormap. yay.
27174         (Surface::Surface): if we're windowless don't create the widget.
27175         also, init render/render_data and invalidate/invalidate_data to
27176         NULL.
27177         (Surface::ConnectEvents): exit early if we're windowless.
27178         (Surface::Invalidate): call through the invalidate function if
27179         there is one.  otherwise, default behavior (if we have a widget).
27180         (Surface::Paint): exit early if no toplevel.
27181         (Surface::render_cb): call through the render function if there is
27182         on.
27183         (Surface::expose_to_drawable): this is most of the guts of
27184         expose_callback, changed to handle the case where we're already
27185         drawing to the backbuffer (in the windowless case) and therefore
27186         don't need the temporary pixmap.  Also, commented out some code
27187         that clears the contents - do we actually need this?  The comment
27188         for it is enormous...
27189         (Surface::expose_event_callback): just call expose_to_drawable
27190         with the widget's window.
27192         * runtime.h (class Surface): we need to make the gtk callbacks
27193         public since the plugin will be invoking them directly.  Also,
27194         switch the event methods to returning bools, and add a new method
27195         called expose_to_drawable, so the plugin can direct rendering to a
27196         pixmap in the windowless case.
27198         * uielement.h, uielement.cpp: change all the Emit* methods to
27199         return bool.
27201         * dependencyobject.h, dependency.cpp: make EventObject::Emit
27202         return true if there were handlers for the event, and false
27203         otherwise.
27205 2008-02-26  Jeffrey Stedfast  <fejj@novell.com>
27207         * text.cpp (TextBlock::TextBlock): Removed the useless
27208         text_block_set_text() call. This was just a broken hack meant to
27209         do what MDK's previous commit fixed the right way.
27211         * font.cpp (TextFont::UnderlinePosition): Fixed to take font
27212         y_scale metrics into consideration.
27213         (TextFont::UnderlineThickness): Same.
27215 2008-02-26  Michael Dominic K.  <mdk@mdk.am>
27217         * src/text.cpp: TextBlock when constructed by default has an empty
27218         Inlines collection instead of NULL. Along with all the previous
27219         commits fixes the OM_CreateAddInsert.htm test.
27221 2008-02-26  Michael Dominic K.  <mdk@mdk.am>
27223         * src/collection.cpp: Don't allow collection insert at negative
27224         position.
27226 2008-02-26  Michael Dominic K.  <mdk@mdk.am>
27228         * src/collection.cpp: Don't add the object to the collection if it
27229         already contains the object (return -1 instead).
27231 2008-02-26  Michael Dominic K.  <mdk@mdk.am>
27233         * src/animation.cpp:
27234         * src/animation.h:
27235         * src/collection.cpp:
27236         * src/collection.h: The "Add" method of collections returns int (index of
27237         the element added), not bool. As explained in:
27239         http://msdn2.microsoft.com/en-us/library/system.windows.media.visualcollection.add.aspx
27241 2008-02-25  Jeffrey Stedfast  <fejj@novell.com>
27243         * font.cpp (TextFont::OpenZipArchiveFont): Since we aren't going
27244         through FontConfig, we need to parse the font's family name to
27245         extract styleistic info so we can do proper font name matching and
27246         style matching (e.g. "Myriad Pro Cond Black Italic" should match
27247         "Myriad Pro, Condensed Black Italic").
27249 2008-02-25  Chris Toshok  <toshok@ximian.com>
27251         * runtime.h, runtime.cpp: s/drawing_area/widget and
27252         s/DrawingArea/Widget
27254         * demo.cpp: same.
27256 2008-02-25  Michael Dominic K.  <mdk@mdk.am>
27258         * src/uielement.h: Adding a virtual CacheInvalidateHint () function that
27259         can be called on the element to give it a hint that it should free it's
27260         cache for the time being.
27262         * src/collection.cpp:
27263         * src/panel.cpp:
27264         * src/panel.h: Forward CacheInvalidateHint to all children.
27266         * src/shape.cpp:
27267         * src/shape.h: Destroy the surface and path cache when hinted.
27269         In total improves our memory usage with surface/path caching, ie. in the
27270         Showcase.
27272 2008-02-22  Michael Dominic K.  <mdk@mdk.am>
27274         * src/runtime.cpp:
27275         * src/runtime.h:
27276         * src/shape.cpp:
27277         * src/shape.h: Adding functionality to report the cache size usage. By
27278         default it's turned off. MOONLIGHT_OVERRIDES="cache=show" to turn it on. 
27280 2008-02-22  Michael Dominic K.  <mdk@mdk.am>
27282         * src/shape.cpp: RoundOut to pixels the extents of the shapes. Causes us
27283         to expose a few more pixels but helps with surface caching.
27285 2008-02-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27287         * downloader.cpp: downloader_get_response_file: remove any directory
27288           components from the part name, otherwise the creation of the tmp file
27289           fails. If we're aborted, don't call any callbacks.
27290         * media.cpp: If we have a downloader and SetSource is called with a new
27291           downloader, abort the previous download, not only unref it, otherwise
27292           our callbacks and events may still get called from the old downloader.
27294 2008-02-21  Jeffrey Stedfast  <fejj@novell.com>
27296         * font.cpp (TextFont::TextFont): Simplified the fallback code.
27298 2008-02-21  Jeffrey Stedfast  <fejj@novell.com>
27300         Fixes Glyphs.xaml
27302         * text.cpp (Glyphs::SetIndices): Fixed to properly parse glyph
27303         cluster mappings.
27304         (Glyphs::Layout): Properly handle glyph clusters.
27305         (Glyphs::Render): Same.
27307 2008-02-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27309         * media.cpp: When aborting a downloader, null out the write
27310         functions too.
27312 2008-02-21  Michael Dominic K.  <mdk@mdk.am>
27314         * src/clock.cpp: Emit the Completed event when Filling as
27315         well. Together with prev commit fixes: #359024 and #324935.
27317 2008-02-21  Michael Dominic K.  <mdk@mdk.am>
27319         * src/animation.cpp:
27320         * src/animation.h: Detach the AnimationStorage update handler from the
27321         clock when the clock is stopped -- prevents us from overriding the (just
27322         reset) base value with another update.
27324 2008-02-21  Michael Dominic K.  <mdk@mdk.am> 
27326         * src/value.cpp: Implementing ToString () for DOUBLE.
27328 2008-02-21  Michael Dominic K.  <mdk@mdk.am>
27330         * src/color.cpp: A slightly more relaxed/tolerant way of parsing
27331         the colors... it's the web and it's broken by default. Fixes:
27332         #362287 (the US candidates website).
27334 2008-02-21  Stephane Delcroix  <sdelcroix@novell.com>
27336         * text.h|cpp: compute GetOriginPoint and fix GetSizeForBrush
27338 2008-02-20  Jeffrey Stedfast  <fejj@novell.com>
27340         Fixes the TextBlockFontDownloads.htm test.
27342         * font.cpp (TextFontDescription::Set*): If the new value is not
27343         the same as the old, invalidate the loaded TextFont.
27344         (TextFont::TextFont): Always compare family names unless we're
27345         requesting the "Sans" (e.g. last) fallback font.
27346         (TextFont::TextFont): If the requested family name does not match
27347         the specified font file, fall back to a system font of the same
27348         name (we were doing this for zip archievs before, but not for
27349         specified ttf font files).
27351         * text.cpp (TextBlock::SetFontSource): If the downloader is null,
27352         set the font filename to null and invalidate the textblock.
27354 2008-02-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27356         * media.cpp: Add a printf to inform when we're trying to load an
27357         mms stream.  Helps a lot when trying to identify sites depending
27358         on mms/streaming support.
27360         * runtime.cpp: Unref debug_selected_element upon
27361         destruction. Fixes a leak.
27363 2008-02-20  Michael Dominic K.  <mdk@mdk.am>
27365         * src/shape.cpp: Fixing the shape caching to work also with
27366         Path/Geometry.  Fixes: #362021.
27368 2008-02-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27370         * media.cpp: MediaElement/Image: Remove event handlers when we abort the
27371           downloader, otherwise the handlers might be called after we're
27372           destroyed.
27374 2008-02-19  Jeffrey Stedfast  <fejj@novell.com>
27376         * uri.cpp (Uri::ToString): Now takes a 'flags' argument to let us
27377         know which, if any, parts of the URI to hide.
27378         (Uri::Parse): If we don't have a protocol, don't simply assume
27379         that the entire string is the filename. We might have a fragment
27380         attached, for example.
27382         * text.cpp (Glyphs::OnPropertyChanged): Decode the URI here and
27383         get the font index (if a fragment is set). Also, use the parsed
27384         Uri's ::ToString() method to hide the fragment so that requesting
27385         the file actually works.
27386         (Glyphs::DownloaderComplete): Don't need to parse the URI here
27387         anymore, we've already got the index from OnPropertyChanged().
27389 2008-02-19  Jackson Harper  <jackson@ximian.com>
27391         * xaml.cpp: Parser error if we can't find the owner type or
27392         property name when setting properties.
27394 2008-02-19  Sebastien Pouliot  <sebastien@ximian.com> 
27396         * geometry.cpp|h: #if out GetOriginPoint which calls moon_get_origin
27398 2008-02-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27400         * pipeline-ffmpeg.cpp: Comment out error message which just shows ffmpeg's
27401           shortcomings.
27402         * media.cpp: Remove printf.
27404 2008-02-19  Sebastien Pouliot  <sebastien@ximian.com>
27406         * moon-path.c: #if out moon_get_origin since it's not used 
27407         anymore. Change cairo_path_display output to be easier to read 
27408         with negative numbers.
27410 2008-02-18  Michael Dominic K.  <mdk@mdk.am>
27412         * src/media.cpp:
27413         * src/media.h: Load images slightly faster by skipping one pixbuf blit and
27414         doing the expansion + conversion in one step.
27416         Also fixing an ugly memory leak where all RGBA images loaded were leaked
27417         (two times in memory).
27419 2008-02-15  Michael Dominic K.  <mdk@mdk.am> 
27421         * src/clock.cpp: Before processing dirty enter/leave gdk threads. We're
27422         being called from a timeout (unprotected) and we're potentially calling
27423         gdk_ invalidation functions. I think it only matters (in this case) 
27424         on non-X backends though. 
27426 2008-02-15  Michael Dominic K.  <mdk@mdk.am> 
27428         * src/uielement.cpp: Moving the debug timers for rendering slightly and
27429         uncommenting them so that they work when TIMERS is enabled.
27431 2008-02-15  Michael Dominic K.  <mdk@mdk.am> 
27433         * src/runtime.cpp:
27434         * src/runtime.h: Adding an extra DEBUG_MARKER_KEY define (disabled by
27435         default) that changes your 'd' key into a special debug key. When pressed,
27436         a message is printed to the console (region start). When pressed again,
27437         another message is printed (region end). This is usefull to see what
27438         happens in a particular part of the program timeline (ie. after click). 
27440         Makes sense obviously only with timers debugging on and stuff.
27442 2008-02-14  Michael Dominic K.  <mdk@mdk.am>
27444         * src/clock.cpp: Changing max/default FPS to 50. Empirical experience
27445         shows that SL runs by default at something around that. Also, with the
27446         recent fixes some sites are suffering from 24 (can run/look much better
27447         at higher fps).
27449 2008-02-14  Michael Dominic K.  <mdk@mdk.am> 
27451         * src/shape.cpp:
27452         * src/shape.h: Adding surface caching for shapes. The strategy
27453         is to cache big surfaces that have little transformations (such as
27454         ie. backgrounds, fade overlays, etc.). Improves performance greatly
27455         for many sites (ie. Showcase).
27457 2008-02-14  Michael Dominic K.  <mdk@mdk.am> 
27459         * src/uielement.cpp: Commenting out the timer in post-pre render as it's
27460         broken and blocks the compilation with timers on.
27462 2008-02-12  Michael Dominic K.  <mdk@mdk.am> 
27464         * src/animation.cpp:
27465         * src/animation.h: Massive fix for our KeySpline animation calculation
27466         routines (which were broken and giving wrong values). According to:
27468         http://msdn2.microsoft.com/en-us/library/ms533119(VS.85).aspx
27470         "...think of the horizontal axis as the pace with which the interpolation
27471         proceeds along the timing interval. The vertical axis is the resulting
27472         value for the animation's progress, yielded by the function that underlies
27473         the keySplines property. Another way of describing this is that the
27474         horizontal axis is the input unit time for the interval, and the vertical
27475         axis is the output unit time."
27477         Therfore, we need to perform an "Y for X" bezier lookup. The current fix is
27478         a little bit ugly -- we waste 256 bytes per KeySpline to store
27479         pre-calculated values in a lookup table. But maybe it's not soo bad, since
27480         balf function (from prev implementation) was coming up top in the
27481         profiles anyways.
27483         The only other way I can (currently) think of would be to solve a cubic
27484         equation each time we poll the KeySpline for a value. That would be,
27485         however, a *massive* performance hit. 
27487         Hence the lookup solution for now (note: the generation of the table is
27488         very fast, no cubics involved).
27490 2008-02-11  Michael Dominic K.  <mdk@mdk.am>
27492         * src/runtime.h: Fixing our debug-timing routine. It reported 10x as much
27493         as it should... yes, our redraws are slow, but not *that* slow ;)
27495 2008-02-09  Michael Dominic K.  <mdk@mdk.am> 
27497         * src/mplayer.cpp: If we have no audio devices present in the system,
27498         launch a special audio loop variant to still read/fetch audio (and discard
27499         it) so that the video playback is not blocked. Fixes: #341835.
27501 2008-02-08  Jeffrey Stedfast  <fejj@novell.com>
27502         
27503         * font.cpp (TextFont::TextFont): If the loaded font's family_name
27504         doesn't match the requested family name, fall back to the default
27505         font (it means the requested font doesn't exist on the system).
27506         (TextLayout::Layout): Added a 'first_char' state variable that can
27507         be used to figure out if if the current char is the first char on
27508         a line. This is needed for the wrapping logic.
27510 2008-02-08  Jeffrey Stedfast  <fejj@novell.com>
27512         Fixes some text layout bugs in TextBlockFontFamilies.xaml
27514         * xaml.cpp (flush_char_data): Now takes a string 'next_element'
27515         argument rather than a bool 'start' argument so that we can make
27516         sure that the previous and next element types are <Run>'s because
27517         lwsp between a <LineBreak/> and a <Run> or a </Run> and a
27518         <LineBreak/> should be ignored. Also, never g_strchomp() this
27519         cdata.
27520         (start_element_handler): Pass the name of the next element to
27521         flush_char_data().
27522         (end_element_handler): Pass NULL to flush_char_data() as the
27523         next_element argument.
27525 2008-02-08  Chris Toshok  <toshok@ximian.com>
27527         * media.cpp (MediaElement::Render): reorder things so that we're
27528         calculating the brush pattern matrix with the snapped pixels.
27530 2008-02-08  Stephane Delcroix  <sdelcroix@novell.com>
27532         * brush.cpp: fix Image|Video|VisualBrushes for Shapes.
27534 2008-02-07  Chris Toshok  <toshok@ximian.com>
27536         * media.cpp (MediaElement::Render): snap to the pixel grid if
27537         we're not rotated/skewed.
27539 2008-02-07  Sebastien Pouliot  <sebastien@ximian.com>
27541         * shape.cpp: Add comment about (missing) Path::ComputeLargestRectangle
27543 2008-02-07  Larry Ewing  <lewing@novell.com>
27545         * brush.cpp (GradientBrush::SetupGradient): treat stops > 1.0 the
27546         same as out of bounds stops.
27548         * shape.cpp: cache the results of CompouteShapeBounds in
27549         extents rect, use that value in GetSizeForBrush.
27551 2008-02-07  Jeffrey Stedfast  <fejj@novell.com>
27553         Fixes a rendering glitch for xaml similar to:
27555         <TextBlock>
27556            <Run FontStyle="Italic">This </Run>is Dodger Blue
27557         </TextBlock>
27559         * xaml.cpp (flush_char_data): Don't g_strchomp() the cdata when
27560         setting the value of a content_property (e.g. a Run).
27562 2008-02-07  Michael Dominic K.  <mdk@mdk.am>
27564         * src/color.cpp: Added support to parse scRGB-style color specificators
27565         (sc#), see #345931. The scRGB -> sRGB conversion is a bit simplified but
27566         should produce accurate-enough colors for most uses.
27568         http://silverlight.net/quickstarts/silverlight10/controls.aspx now works.
27570 2008-02-07  Sebastien Pouliot  <sebastien@ximian.com>
27572         * shape.cpp|h: Split ComputeBounds to avoid calling functions 
27573         bounding_rect_for_transformed_rect and IntersectBoundsWithClipPath
27574         inside each shape. This will enable us to reuse the non-transformed
27575         value elsewhere too. This also fix (for me) the origin point that
27576         caused problems for some brushes. Started implementing methods 
27577         ComputeLargestRectangle[Bounds] to optimize drawing.
27579 2008-02-06  Chris Toshok  <toshok@ximian.com>
27581         * frameworkelement.cpp (FrameworkElement::GetSizeForBrush): we
27582         want the untransformed size of the element.  otherwise we end up
27583         with a pattern matrix that scales things too large given that
27584         we're also scaling the element.  Fixes fullscreen mode in halo3
27585         and /fox video players (bug #335845).
27587 2008-02-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27589         * mplayer.cpp: AdvanceFrame: Create a target_pts range, if we're within the
27590           range, draw the current frame. If we're ahead of the range, do nothing
27591           (fixes some video/audio sync problems), and if we're behind drop frames.
27592           The range makes sure that we paint every frame even when the audio loop
27593           doesn't update the target pts as often as we're drawing video.
27595 2008-02-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27597         * panel.cpp, runtime.cpp: Fix warnings.
27599 2008-02-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27601         * mplayer.cpp: Simplify our advance frame loop: don't lock the queue during
27602           the entire loop, only when fetching packets. This allows packets to
27603           arrive from the pipeline while in the loop (especially noticable when
27604           decoding the video inside the loop).
27606 2008-02-06  Chris Toshok  <toshok@ximian.com>
27608         * uielement.cpp (UIElement::FrontToBack): use the media state
27609         accessors, and don't exclude Buffering state - we could be
27610         buffering with a frame rendered.
27612 2008-02-06  Sebastien Pouliot  <sebastien@ximian.com>
27614         * shape.cpp|h: Keep track if a rectangle has radii or not.
27615         * uielement.h: Add a flag for radii
27617 2008-02-06  Chris Toshok  <toshok@ximian.com>
27619         * uielement.cpp (UIElement::FrontToBack): make sure
27620         media_element_get_current_state != NULL before we strcmp it.
27622 2008-02-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27624         * src.mdp: Updated.
27626 2008-02-06  Stephane Delcroix <sdelcroix@novell.com>
27628         * brush.cpp: fix the radialgradientbrush setup.
27630 2008-02-05  Chris Toshok  <toshok@ximian.com>
27632         * collection.cpp (Collection::EmitChanged): new method.  Emit the
27633         Changed event and then call closure->OnCollectionChanged.  Also
27634         replace all references to closure->OnCollectionChanged to
27635         EmitChanged.
27637         * collection.h (class Collection): add ChangeEventArgs struct, and
27638         an EmitChanged method declaration.
27640         * type.h.in, type.cpp.in (Type::~Type): no need to free all the
27641         events explicitly.
27642         (Type::HideEvent): remove the event name from the hash so it's
27643         inaccessible from javascript.
27644         (Type::RegisterEvent): use g_hash_table_new_full so we can specify
27645         a destroy function for keys instead of doing the _foreach in the
27646         dtor.
27647         (types_init_manually): add the #if 0 here instead of type.cpp.
27648         oops.
27649         (types_init_register_events): register a Changed event for
27650         Collections.
27652 2008-02-05  Jeffrey Stedfast  <fejj@novell.com>
27654         * downloader.cpp (Downloader::ll_downloader_get_response_file):
27655         Simplified by using the new ExtractFile utility function from
27656         utils.cpp.
27658         * font.cpp: Moved ExtractFile() and make_tmpdir() into utils.cpp
27660         * utils.cpp: New collection of utility functions.
27662 2008-02-05  Jeffrey Stedfast  <fejj@novell.com>
27664         * font.cpp: If a font is requested from a zip archive, extract the
27665         contents and try to figure out which font is the closest match to
27666         the one requested. Fixes bug #356044.
27668 2008-02-05  Chris Toshok  <toshok@ximian.com>
27670         * uielement.cpp (UIElement::FrontToBack): enable the rectangle
27671         code, and make sure to round in the bounds we're subtracting.
27672         this was causing the flashing white border on silverlight.net/fox.
27674 2008-02-05  Sebastien Pouliot  <sebastien@ximian.com>
27676         * shape.cpp: Use existing MIN macro. Use local variables when
27677         available.
27679 2008-02-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27681         * fullscreen.cs, fullscreen.sh: Tool to generate fullscreen.h
27683 2008-02-05  Chris Toshok  <toshok@ximian.com>
27685         * runtime.h, runtime.cpp: add support for a "selected" element
27686         when in debug mode.  Also, make use of the Region methods instead
27687         of using region->gdkregion, which is private now.
27689 2008-02-05  Chris Toshok  <toshok@ximian.com>
27691         * region.h, region.cpp (class Region): add Offset().
27693 2008-02-05  Sebastien Pouliot  <sebastien@ximian.com>
27695         * geometry.cpp|h: PathGeometry does a Build (not a Draw) to 
27696         populate it's moon_path (like others) so the data can always be 
27697         used.
27698         * moon-path.c|h: Add moon_get_origin to get the minimal X and Y
27699         from a moon_path (Stephane) and moon_merge to merge a subpath into
27700         a main path.
27702 2008-02-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27704         * pipeline-ffmpeg.cpp: Remove another printf.
27706 2008-02-02  Jeffrey Stedfast  <fejj@novell.com>
27708         * pipeline.cpp (FileSource::Peek): Only memmove() if we have data
27709         to move.
27710         (FileSource::Peek): Slightly better fix.
27712 2008-02-01  Jeffrey Stedfast  <fejj@novell.com>
27714         * pipeline.cpp (Mp3Demuxer::GetPositionOfPts): Reimplemented to
27715         estimate the stream position if not known rather than reading data
27716         to find out as we don't have to return an exact stream position.
27718 2008-02-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27720         * pipeline.h: Update comment.
27722 2008-02-01  Stephane Delcroix  <sdelcroix@novell.com>
27724         * uielement.h:
27725         * shape.h:
27726         * shape.cpp: rename GetOringin into GetOriginPoint
27728         * brush.cpp: implement a bad origin computation (based on bounds)
27729         for Shape::Path
27731 2008-02-01  Jeffrey Stedfast  <fejj@novell.com>
27733         * pipeline.cpp (Mp3Demuxer::GetPositionOfPts): Implemented.
27734         (FileSource::Peek): As before, only read as much as we need - but
27735         don't clobber what we had prebuffered, only clobber as much as w
27736         need to in order to make room for the new data - this way we make
27737         it more efficient to seek backward later (if need be).
27739 2008-02-01  Stephane Delcroix  <sdelcroix@novell.com>
27741         * shape.h:
27742         * shape.cpp: define GettOrigin at the Shape level, compute GetOrigin
27743         from the path data instead of from bounds.
27745         * brush.cpp: translate the brushes with a translation matrix.
27747 2008-02-01  Larry Ewing  <lewing@novell.com>
27749         * brush.cpp: Make sure we use the brush opacity when computing the
27750         color stops.
27752 2008-02-01  Jeffrey Stedfast  <fejj@novell.com>
27754         * pipeline.cpp (FindMpegHeader): Now checks for Xing and
27755         Fraunhofer VBRI headers.
27757 2008-01-31  Chris Toshok  <toshok@ximian.com>
27759         * uielement.h: include region.h
27761         * point.h: don't assume the right headers have been included
27762         before this file - include glib.h to make sure
27763         G_BEGIN_DECLS/G_END_DECLS is there.
27765         * region.h, region.cpp: split out the region code from
27766         rect.h/rect.cpp.
27768         * rect.h, rect.cpp: remove region code.
27770         * Makefile.am: add region.h/region.cpp
27772 2008-01-31  Chris Toshok  <toshok@ximian.com>
27774         * runtime.h, runtime.cpp: remove runtime_cairo_region (we can just
27775         use Region::Draw instead).
27777         * panel.cpp: remove references to runtime_cairo_region, and switch
27778         to the new Region* copy ctor.  also, use Region::IsEmpty instead
27779         of gdk_region_empty.
27781         * uielement.cpp: more region cleanup, removing references to
27782         GdkRegion in favor of our Region class.  Also, commit (ifdef'ed
27783         out until the rendering glitch is fixed) the rectangle back to
27784         front special case code.
27786 2008-01-31  Chris Toshok  <toshok@ximian.com>
27788         * rect.cpp (Region::Region): new overload which takes a Region*,
27789         so we don't have to access ->gdkregion everywhere when we copy a
27790         region.
27792         * rect.h (struct Rect): add a GrowBy method that takes both x and
27793         y deltas, and have the 1 parameter version call it.
27794         (class Region): add a copy ctor that takes a Region*.
27796 2008-01-31  Chris Toshok  <toshok@ximian.com>
27798         * panel.h, panel.cpp: rename use_back_to_front to UseBackToFront
27799         and add it to the class, protected so subclasses can get at it.
27801         * stylus.cpp (InkPresenter::PostRender): given the ordering
27802         required, we have to c&p some of Panel::PostRender here to render
27803         the children.  Chaining up to Canvas::PostRender at the start of
27804         the method would have caused the translucency/opacity mask code in
27805         UIElement::PostRender to be executed *before* we rendered our
27806         strokes.
27808 2008-01-31  Chris Toshok  <toshok@ximian.com>
27810         * stylus.h, stylus.cpp (InkPresenter::PostRender): rename
27811         RenderChildren to this, and chain up to Canvas::PostRender here,
27812         which will do the RenderChildren call if it needs to.
27814 2008-01-31  Chris Toshok  <toshok@ximian.com>
27816         * panel.cpp (Panel::FrontToBack): simplify this a bunch with
27817         Brush::IsOpaque.
27819         * brush.h (class Brush): remove GetTotalOpacity() which wasn't
27820         being used anywhere, and add IsOpaque() so that we can use it from
27821         the new front-to-back stuff (instead of duplicating code in Panel
27822         and Shape handling parts).
27824 2008-01-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27826         * media.cpp: Update.
27828 2008-01-31  Chris Toshok  <toshok@ximian.com>
27830         * media.cpp (MediaElement::MediaElement): fix build.
27831         (Image::Image): fix initialization order to quiet g++.
27833 2008-01-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27835         * mplayer.cpp, mplayer.h: Render: removed, not used. LoadVideoFrame:
27836           implemented again. Added an ugly caught_up_with_seek value, used to
27837           determine if video is late due to a seek, in which case it shouldn't
27838           show any frames (fixes #356053).
27839         * pipeline.cpp, pipeline.h: Added IMediaDecoder::CleanState and
27840           HasDelayedFrame.
27841         * pipeline-ffmpeg.cpp: Implemented FfmpegDecoder::CleanState and
27842           HasDelayedFrame. Use a mutex to serialize access to avcodec_open.
27843         * pipeline-ffmpeg.h: Implemented FfmpegDecoder::CleanState and
27844           HasDelayedFrame.
27846 2008-01-31  Jeffrey Stedfast  <fejj@novell.com>
27848         * pipeline.cpp (mpeg_parse_samplerate): Doh, need to bitshift the
27849         value.
27850         (FindMpegHeader): Now takes an MpegFrameHeader argument, no sense
27851         having our caller re-parse the header.
27852         (Mp3Demuxer::ReadHeader): Updated.
27854 2008-01-31  Stephane Delcroix  <sdelcroix@novell.com>
27856         * brush.cpp: apply the correct offset to RadialGradientBrushes too.
27858 2008-01-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
27860         * clock.h: Added macros to convert between pts, milliseconds and timespans.
27861         * media.cpp, media.h: MediaElement: Updated to normalized pts (starting at
27862           0). Use the new macros when converting between time formats. Remove the
27863           AdvanceFrame timeout upon reinitialization. Implement a better buffering
27864           algorithm (and honor the BufferingTime property).
27865         * mplayer.cpp, mplayer.h: Remove initial_pts, everything coming from the
27866           pipeline is now normalized to start at 0. Use the new macros when
27867           converting between time formats.
27868         * pipeline.cpp, pipeline.h: Normalize all pts to start at 0, and remove
27869           start_time/initial_pts handling. Added Demuxer::GetPositionOfPts to
27870           estimate the position of a pts. ProgressiveSource::CancelWait: only
27871           cancel if we're waiting, and then wait until actually cancelled.
27873 2008-01-31  Stephane Delcroix  <sdelcroix@novell.com>
27875         * shape.cpp:
27876         * shape.h: GetOrigin for Polyline and Polygon
27878 2008-01-31  Stephane Delcroix  <sdelcroix@novell.com>
27880         * uielement.h: add a GetOrigin ()
27882         * shape.cpp:
27883         * shape.h: implement GetOrigin for Path
27885         * brush.cpp: use GetOrigin as offset, fix the Crystal test.
27887 2008-01-30  Chris Toshok  <toshok@ximian.com>
27889         * mplayer.h (class MediaPlayer): add rendered_frame.
27891         * mplayer.cpp (MediaPlayer::MediaPlayer): init rendered_frame to
27892         false.
27893         (MediaPlayer::Close): reset rendered_frame.
27894         (render_frame): set rendered_frame to true if we've successfully
27895         copied data into the video surface.
27897         * media.cpp (Image::CreateSurface): set CachedSurface::has_alpha
27898         to the pixbuf's has_alpha if USE_OPT_RGB24.
27900         * media.h (class Image): make the CachedSurface type and the
27901         instance field "surface" public, so the front to back stuff can
27902         get at it.  Also, add "has_alpha" to it, since once the xlib
27903         surface has been created, we lose that information.
27905         * control.cpp (Control::FrontToBack): nothing to do but call
27906         FrontToBack on real_object.
27908         * control.h (class Control): add override for FrontToBack.
27910         * panel.cpp (Panel::FindStartingElement): get rid of this crap.
27911         it was broken and the wrong way to implement it.
27912         (Panel::Render): remove the RenderChildren call here, we do it in
27913         PostRender (and only if we're not rendering front to back)
27914         (Panel::PostRender): if we aren't rendering front to back, call
27915         RenderChildren.
27916         (Panel::RenderChildren): remove references to FindStartingElement.
27917         (Panel::FrontToBack): this method is a little more complicated
27918         than UIElement::FrontToBack owing to the fact that we're
27919         flattening things to a list.  We need to prepend a "cleanup node"
27920         first, before calling FrontToBack on our children, to do the
27921         Panel::PostRender stuff after our children have been rendered.  We
27922         remove this cleanup node if none of the children have added
27923         themselves to the list, and our bounds (without the children)
27924         don't intersect the expose region.  We apply the same logic to
27925         removing our rectangular bounds as the UIElement code does, but
27926         also have to take into account our background brush.  We punt if
27927         any part of it is transparent, and only handle SolidColorBrush and
27928         GradientBrush subclasses.
27930         * panel.h (class Panel): override UIElement:: FrontToBack,
27931         PreRender, and PostRender.
27933         * uielement.cpp (UIElement::DoRender): factor out most of the guts
27934         of this method so it can be used in either front-to-back or
27935         back-to-front.  Make sure to pass "false" as the front-to-back arg
27936         for PreRender and PostRender.
27937         (UIElement::FrontToBack): calculate the intersection of the expose
27938         region and our bounds.  Add this region to the front of the render
27939         list, and then do some calculating to decide if we should remove
27940         it from consideration by elements lower than us in the display.
27941         Things like "are we opaque", "have we been rotated or skewed, such
27942         that our rectangular shape no longer fills the bounds entirely",
27943         stuff like that.  We further limit subtracting in element type
27944         specific ways - right now just for MediaElement and Image with
27945         certain constraints (images can't have alpha, media elements must
27946         have a frame rendered, both types must fill their rectangle, etc).
27947         If everything passes, we remove our bounds from the expose region.
27948         (UIElement::PreRender): new method, do the things that DoRender
27949         used to do before calling Render.
27950         (UIElement::PostRender): new method, do the things that DoRender
27951         used to do after calling Render.
27953         * uielement.h: move the IS_TRANSLUCENT/IS_INVISIBLE #defines here
27954         so they can be used in panel.cpp.  Also, add 3 new virtual
27955         methods (FrontToBack, PreRender, PostRender) as well as two
27956         callback methods to invoke the 2 latter ones.
27958         * runtime.cpp (overrides): add "render=ftb" and "render=btf"
27959         overrides (with btf the default) corresponding to
27960         RUNTIME_INIT_RENDER_FRONT_TO_BACK.
27961         (Surface::Paint): add support for front-to-back rendering.  If
27962         it's enabled, make a FrontToBack pass on the fullscreen message
27963         and the toplevel element.  This populates the render list with a
27964         back to front ordered list of elements to paint, along with the
27965         regions they need repainted.  If the render list is empty for some
27966         reason (or if the user didn't select ftb rendering), we fall back
27967         to back to back-to-front rendering at the toplevel.
27968         (RenderNode::RenderNode): add ctor/dtor for RenderNode.
27970         * runtime.h: add the RenderNode class, used by the front to back
27971         rendering.
27973         * rect.h, rect.cpp: add IsEmpty() and two overloads of Subtract()
27974         to Region.
27976 2008-01-30  Jackson Harper  <jackson@ximian.com>
27978         * xaml.cpp: Strip leading whitespace from xaml files.
27979         
27980 2008-01-30  Jackson Harper  <jackson@ximian.com>
27982         * xaml.cpp: Handle more names for the default namespace.
27984 2008-01-30  Jackson Harper  <jackson@ximian.com>
27986         * xaml.cpp: Add support for ucs4.
27988 2008-01-29  Jackson Harper  <jackson@ximian.com>
27990         * xaml.cpp: pull in unistd.h
27992 2008-01-29  Jackson Harper  <jackson@ximian.com>
27994         * xaml.cpp: Properly handle utf-16, converting it to utf-8 so
27995         expat doesn't choke.
27997 2008-01-28  Chris Toshok  <toshok@ximian.com>
27999         * brush.cpp (VisualBrush::SetupBrush): RoundOut doesn't update
28000         inplace, it returns the new rect.
28002         * uielement.cpp (UIElement::DoRender): same change.
28004 2008-01-28  Jeffrey Stedfast  <fejj@novell.com>
28006         * pipeline.cpp (FindMpegHeader): Validate that the sequence is
28007         actually an mpeg frame header by parsing it and calculating its'
28008         length and checking that another frame header starts where we
28009         expect it.
28010         (Mp3DemuxerInfo::Supports): We need to use FindMpegHeader() here
28011         too.
28013 2008-01-28  Jeffrey Stedfast  <fejj@novell.com>
28015         * pipeline.cpp (FindMpegHeader): Scan over binary garbage and find
28016         an MPEG sync header.
28017         (Mp3Demuxer::ReadHeader): Use FindMpegHeader() and also use
28018         IMediaSource's new GetSize() method to help calculate media
28019         duration as opposed to seeking to the end.
28021 2008-01-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28023         * media.cpp, media.h: Open the media async.
28024         * pipeline.cpp, pipeline.h: Add and implement OpenAsync.
28026 2008-01-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28028         * media.cpp: MediaElement::AdvanceFrame: Only stop if the media player
28029           reached eof and couldn't advance.
28030         * mplayer.cpp, mplayer.h: Add a seeking flag, allows us to skip frames we
28031           get while we're waiting for a seek to happen. Implement a better pause
28032           algorithm, the previous one was flawed and dead-locked once in a while.
28033         * pipeline.cpp, pipeline.h: Media: Add a callback to async seek. ASFDemuxer:
28034           Create one frame reader for each stream.
28036 2008-01-27  Jeffrey Stedfast  <fejj@novell.com>
28038         * media.cpp (MediaElement::UpdateProgress): Check (pos +
28039         buffering_size) > size, not < size. Duh.
28041         * pipeline.cpp: IMediaDemuxer ctors now take an IMediaSource
28042         argument to use in place of media->GetSource().
28043         (Media::Open): Don't set this->source unless we successfully open
28044         the source.
28046 2008-01-26  Jeffrey Stedfast  <fejj@novell.com>
28048         * media.cpp (MediaElement::TryOpen): In the DownloadComplete case,
28049         set the state to Buffering so that calling Play() will actually
28050         start playing the media (if the file was local, then we'll be in
28051         the Opening state which means that calling Play() will only note
28052         that a Play action was requested, but won't actually play the
28053         media).
28054         (MediaElement::SetState): Don't check for downloaded_file == NULL,
28055         it might fail in the above case.
28057 2008-01-26  Jackson Harper  <jackson@ximian.com>
28059         * xaml.cpp: Set the encoding when we are reading files also.
28061 2008-01-25  Jeffrey Stedfast  <fejj@novell.com>
28063         * pipeline.cpp (WaitForPosition): Only update wait_pos if it is
28064         greater than the current wait_pos.
28066         * media.cpp (UpdateProgress): Use the buffering_start position
28067         rather than the current write position to calculate buffer_size.
28069 2008-01-25  Jeffrey Stedfast  <fejj@novell.com>
28071         * media.cpp (TryOpen): When download is complete and we
28072         successfully open the media, don't set the state to Paused - this
28073         breaks Halo3 if the video is cached.
28075         * media.cpp|h: Consolidated all of the bool state variables into a
28076         single bitfield.
28078 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28080         * pipeline.h, pipeline.cpp: ProgressiveSource: Make the position we're
28081           waiting for publicly available.
28082         * media.cpp: UpdateProgress: use the position the file is waiting for to
28083           calculate the buffer size (if it would exceed the default buffer size).
28085 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28087         * media.h: Add some descriptive comments.
28089 2008-01-25  Sebastien Pouliot  <sebastien@ximian.com>
28091         * shape.cpp: Merge UIElement::InsideClip inside Shape::InsideObject
28092         instead of calling it since it can reduce some heavy cairo calls 
28093         (cairo_in_*), if there's a clip, otherwise it won't affect 
28094         performance.
28096 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28098         * media.cpp: Initialize play_pending, and when buffering is
28099           finished, only play if autoplay or play_pending is true.
28101 2008-01-25  Jeffrey Stedfast  <fejj@novell.com>
28103         * mplayer.cpp: Get rid of some unused variables and cleaned up
28104         some code.
28106 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28108         * pipeline.cpp, media.cpp: More printfs removed.
28110 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28112         * src.mdp: Updated.
28114         * pipeline-ffmpeg.cpp: Commented out printf.
28116         * pipeline.h, pipeline.cpp: Removed some dead code. Made all
28117         interfaces inherit from IMediaObject, and put the media field
28118         there. Commented out printfs.
28120         * mplayer.h, mplayer.cpp: Unified Mute and UnMute into SetMuted to
28121         simplify code a bit. Encapsulated target_pts handling into
28122         separate methods.
28124         * media.h, media.cpp: Create one and only one MediaPlayer for the
28125         life-time of the MediaElement. If not AutoPlay is set, then pause
28126         instead of play.
28128 2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28130         * pipeline.cpp, pipeline.h: Media: Don't create the worker thread upon first
28131           usage, but on construction, and finish it upon destruction. Fixes race
28132           between creating and destructing the thread.
28134 2008-01-24  Chris Toshok  <toshok@ximian.com>
28136         * stylus.cpp (Stroke::HitTestEndcapSegment): implement.
28137         (calc_perpendicular_intersection_points): new method.
28138         (Stroke::HitTestSegmentSegment): use
28139         calc_perpendicular_intersection_points to give us the end points
28140         of the outer line segments, and use those for hit testing.
28142 2008-01-24  Jeffrey Stedfast  <fejj@novell.com>
28144         * media.cpp (UpdateProgress): When switching to Buffering mode,
28145         save the position where we're currently at in the file so that we
28146         can use that as a reference point when calculating progress. Also,
28147         pause the MPlayer so that audio won't continue to play while we're
28148         waiting for buffering to complete. Fixes bug #356051.
28150 2008-01-24  Sebastien Pouliot  <sebastien@ximian.com>
28152         * shape.cpp: Avoid calls to cairo_in_[stroke|fill] if no stroke 
28153         (or fill) are present for the shape.
28155 2008-01-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28157         * pipeline.cpp, pipeline.h: Create a more general worker thread,
28158         and use unions to save some space in WorkItem. In the ASFDemuxer,
28159         when seeking, we need to seek to the audio stream, since that's
28160         what we're using to sync against (if we have audio).
28161           
28162         * list.cpp, list.h: Added List::InsertBefore.
28164 2008-01-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28166         * media.cpp: MediaElement::SetSource: only trigger the download
28167         after we've attached to the CompletedEvent.
28169 2008-01-23  Chris Toshok  <toshok@ximian.com>
28171         * runtime.cpp (Surface::HandleMouseEvent): don't crash when we
28172         re-enter HandleMouseEvent, which can happen when that stupid JS
28173         timeout dialog pops up.
28175 2008-01-23  Chris Toshok  <toshok@ximian.com>
28177         * runtime.cpp (Surface::SetMouseCapture): this fails not only if
28178         there's an existing capture, but also if there's a pending
28179         capture (so if both a parent and child capture on the same event,
28180         the child gets it.)  Fixes dragging things around in ink journal.
28182 2008-01-23  Chris Toshok  <toshok@ximian.com>
28184         * stylus.cpp, stylus.h: initial hit testing stuff.  right now the
28185         only tests that are implemented are endcap (ellipse) vs. point,
28186         and segment vs. segment (although this one isn't the full test, as
28187         we're using the stroke line, as opposed to the exterior lines
28188         created by the ellipse pen tracing that line).
28190         * rect.h: add PointInside (Point p).
28191         
28192 2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
28194         * pipeline-ffmpeg.cpp: Don't #include "asf/asf-ffmpeg.h" anymore,
28195         it's no longer part of the build.
28197 2008-01-23  Sebastien Pouliot  <sebastien@ximian.com>
28199         * shape.cpp|h: Add support for different PenLineCap on Line (part 
28200         of #345888). Fix Polyline when a single segment is used (removed 
28201         TODO). Avoid extra work when a start/end PenLineCap is Flat (default)
28203 2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
28205         * media.cpp (SetSource): Initialize the ProgressiveSource.
28207         * pipeline.cpp (ProgressiveSource::Seek): Simplified by calling
28208         parent class's implementation.
28210 2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
28212         * pipeline.cpp|h: ProgressiveSource now inherits from FileSource.
28214 2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
28216         * pipeline.cpp (FileSource::Read): Optimized a bit more for cases
28217         where the caller is trying to read a block larger than our
28218         internal buffer.
28219         (FileSource::Seek): Fixed 'n' to be an int64_t rather than a
28220         uint64_t (which is needed in the case of seeking backwards).
28222 2008-01-22  Larry Ewing  <lewing@novell.com>
28224         * shape.cpp, shape.h: Move the stretch logic out of geometry.cpp
28225         and into Path.cpp as a transform not by modifying the data.
28227         * geometry.cpp, geometry.h: remove stretch logic.
28229 2008-01-22  Jeffrey Stedfast  <fejj@novell.com>
28231         * pipeline.cpp (FileSource::Seek): Also optimize seeking backwards
28232         if within our pre-buffered bounds.
28233         (ProgressiveSource::Write): When restoring position state, use the
28234         proper offset (e.g. the offset of the end of our pre-buffered
28235         block).
28237 2008-01-22  Chris Toshok  <toshok@ximian.com>
28239         * collection.cpp (UIElementZIndexComparer): the magnitude of the
28240         return value doesn't matter, only the sign.
28242 2008-01-22  Chris Toshok  <toshok@ximian.com>
28244         * media.cpp (Image::InsideObject): if we have no surface (the
28245         image hasn't been loaded), we aren't HitTestVisible.
28247         * media.h (class Image): add InsideObject override.
28249 2008-01-22  Chris Toshok  <toshok@ximian.com>
28251         * panel.cpp (Panel::OnCollectionChanged): remove the fix for
28252         #353954 as its redundant after the previous commit.
28254 2008-01-22  Chris Toshok  <toshok@ximian.com>
28256         * garray-ext.cpp (bsearch): fix this so the g_array_insert_sorted
28257         function works.
28259 2008-01-22  Jeffrey Stedfast  <fejj@novell.com>
28261         * media.cpp (TryOpen): Don't leak Media objects. Also make sure to
28262         call Initialize() on the file source.
28264         * pipeline.cpp (IMediaSource): Read() now returns the number of
28265         bytes read rather than true/false and does nto guarantee that all
28266         of the data was read. Added a ReadAll() method which does what the
28267         old Read() method did.
28268         (FileSource): Rewritten to do our own buffering which allows for
28269         nice optimizations for Peek() and Seek().
28270         (ProgressiveSource): Also rewritten.
28272         * asf/asf.cpp: Updated to use IMediaSource::ReadAll()
28274         * asf/asf-guids.h: Moved all of the guids into asf-guids.cpp and
28275         just made them extern in the ehader, this way we don't duplicate
28276         those values in each source file that includes this header.
28278 2008-01-22  Sebastien Pouliot  <sebastien@ximian.com>
28280         * shape.cpp|h: First part of DoDraw refactoring. Pass all 
28281         regression tests from harness (moon versus moon) but it's possible
28282         that some degenerated cases (without test cases) regress.
28284 2008-01-22  Larry Ewing  <lewing@novell.com>
28286         * clock.cpp: initalize the smoothing to max framerate, the first
28287         frame is quite likely the slowest frame we'll ever draw.  Bump
28288         error delta back up to 1/50th.
28290 2008-01-22  Chris Toshok  <toshok@ximian.com>
28292         * media.cpp (MediaElement::Render): a little cairo cleanup, and
28293         remove the USE_OPT_REGION_CLIP block.
28295 2008-01-22  Andrew Jorgensen  <ajorgensen@novell.com>
28297         * pipeline.cpp: include unistd.h, fixes a build error introduced in
28298         r93311 when building without-ffmpeg
28300 2008-01-22  Larry Ewing  <lewing@novell.com>
28302         * clock.cpp: reduce delta to 1/100 of a second and fix a bug in
28303         previous commit.
28305 2008-01-22  Larry Ewing  <lewing@novell.com>
28307         * clock.cpp: Tweak clock timing and smoothing.  Increase timer
28308         priority so that ticks get deliver when we want them this doesn't
28309         change the smoothing calculation but it can raise the actual fps
28310         by assuring all our clocks are delivered.  Change smoothing alpha
28311         from 0.3 to 0.03 to improve noise immunity.  Don't reset the timer
28312         unless our new calculated timeout differs from our old by at least
28313         1/50 of a second.  Resetting the clock on every tick had the
28314         effect adding the drawing time to the tick time for every tick
28315         since the timeout starts over at zero.
28317 2008-01-21  Jeffrey Stedfast  <fejj@novell.com>
28319         * pipeline.cpp (Mp3FrameReader::ReadFrame): If the bitrate was
28320         unspecified, encode the bitrate back into the header so that if we
28321         are using the NullMp3Decoder, it will know how to handle
28322         it. Probably also needed for any actual Mp3 decoders as well since
28323         it won't reliably be able to keep track of variable-bitrate
28324         streams otherwise since it wouldn't know if/when we seek.
28325         (NullMp3Decoder::DecodeFrame): Implemented.
28327 2008-01-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28329         * pipeline.cpp: Remove printf.
28331 2008-01-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28333         * src.mdp: Remove mplayer2.cpp from here too.
28335 2008-01-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28337         * mplayer.cpp, mplayer2.cpp, Makefile.am: Deleted mplayer.cpp and moved
28338           mplayer2.cpp to mplayer.cpp.
28340 2008-01-21  Jeffrey Stedfast  <fejj@novell.com>
28342         * downloader.cpp (ll_downloader_get_response_file): Fixed to use
28343         mkstemp() rather than tmpnam_r() and also simplified.
28345         * pipeline.cpp: Fixed various things about the progressive stream.
28347 2008-01-19  Jeffrey Stedfast  <fejj@novell.com>
28349         * mplayer2.cpp (audio_play): Get rid of the 'play' argument. Also
28350         don't memmove() data unless we don't have enough to play a single
28351         frame. Instead, what we'll do is keep progressing audio->outbuf as
28352         we play it.
28354 2008-01-19  Chris Toshok  <toshok@ximian.com>
28356         * uielement.cpp (UIElement::OnPropertyChanged): remove the
28357         handling of TriggersProperty and ResourcesProperty's closure.
28359         * trigger.cpp, trigger.h: remove EventTrigger's OnPropertyChanged
28360         method.
28362         * transform.cpp (TransformGroup::OnPropertyChanged): remove
28363         handling of ChildrenProperty's closure.
28365         * text.cpp, text.h: remove Run::OnPropertyChanged, and also remove
28366         the handling of Inlines->closure from TextBlock.
28368         * stylus.cpp, stylus.h: remove a couple of OnPropertyChanged
28369         methods (InkPresenter and Stroke).
28371         * panel.cpp (Panel::OnPropertyChanged): remove handling of the
28372         ChildProperty's closure here.
28374         * media.cpp, media.h: remove the unnecessary
28375         MediaBase::OnPropertyChanged.
28377         * geometry.cpp, geometry.h: remove a few OnPropertyChanged
28378         methods (GeometryGroup, PathGeometry, and PathSegment.)
28380         * clock.cpp, clock.h: remove TimelineGroup::OnPropertyChanged.
28382         * brush.cpp, brush.h: remove the unnecessary
28383         Brush::OnPropertyChanged and GradientBrush::OnPropertyChanged.
28385         * animation.cpp, animation.h: remove all the
28386         *AnimationUsingKeyFrames::OnPropertyChanged methods, since all
28387         they did was deal with collection closures.
28389         * dependencyobject.cpp (DependencyObject::SetValue): factor out
28390         the "collection->closure" setting code from all the
28391         OnPropertyChanged methods sprinkled around and put it here.  Also,
28392         set collection->closure to NULL on the old value (something the
28393         old code didn't do).
28395 2008-01-19  Chris Toshok  <toshok@ximian.com>
28397         * animation.cpp: the remaining macros (SET_NULLABLE_FUNC and
28398         NULLABLE_{PRIM_}GETSET_IMPL) are moved here, right before their
28399         use.
28401         * animation.h: clean this file up by removing all those disgusting
28402         macros.  for the DECL macros, just expand them here, as having the
28403         methods listed in the class declaration is a good thing.
28405         * collection.cpp (collection_new): remove the switch statement
28406         from here and use Type::CreateInstance instead.  this largely
28407         removes the need to be including extra headers (like animation.h).
28409 2008-01-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28411         * media.cpp, mplayer.cpp, mplayer2.cpp, Makefile.am, pipeline.h: Remove all
28412           MOON_MEDIA ifdefs and completely disable the old mplayer.cpp
28413         * src.mdp: Updated.
28415 2008-01-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28417         * media.h, media.cpp: MediaElement: make this a state machine to follow the
28418           behaviour specified in MSDN. Implement buffering of media files.
28419           MediaSource (and derived): take a IMediaSource instead of a filename.
28420         * mplayer.h, mplayer2.cpp: Make Open take a Media instead of a filename.
28421           Remove all MOON_MEDIA ifdefs, too many changes to support both versions
28422           now. Make seeking async.
28423         * pipeline.cpp, pipeline.h: Changed the FrameReaderLoop into a more general
28424           worker thread, seeking can now be done there too. Implement
28425           ProgressiveSource.
28426         * playlist.cpp: Change IsPlaylistFile to peek the file instead of checking
28427           the file extension. MediaSource (and derived): take a IMediaSource
28428           instead of a filename.
28429         * playlist.h: MediaSource (and derived): take a IMediaSource instead of a
28430           filename.
28432 2008-01-18  Larry Ewing  <lewing@novell.com>
28434         * uielement.cpp: compute total_opacity for invalidation logic but
28435         use local_opacity for drawing.  This fixes monotones grid.xaml and
28436         some hit test regressions.
28438 2008-01-18  Jackson Harper  <jackson@ximian.com>
28440         * xaml.cpp: KeyFrameCollections can be specified in the xaml if
28441         they are in a property element.
28442         - When searching for collections, use is subclass instead of
28443         making them be the same type, so derivied collections can be used.
28444         
28445 2008-01-17  Chris Toshok  <toshok@ximian.com>
28447         * pipeline.h (class IMediaDemuxer): initializer streams and
28448         stream_count so we don't crash on ltbennett.com.
28450 2008-01-17  Jeffrey Stedfast  <fejj@novell.com>
28452         * pipeline.cpp (Mp3FrameReader::ReadFrame): If we fail to read an
28453         MPEG header, set MediaFrame->event to EOF. Same if we can't read
28454         the frame data.
28455         (Media::GetNextFrame): Don't try to decode the frame if it is an
28456         event.
28457         (ASFDemuxer::ReadFrame): If we reach EOF, set MediaFrame->event to
28458         EOF.
28460         * mplayer2.cpp (media_player_callback): pts is allowed to be 0.
28461         (AdvanceFrame): Handle EOF frame events.
28462         (audio_loop): Handle EOF frame events.
28464 2008-01-17  Chris Toshok  <toshok@ximian.com>
28466         * stylus.cpp (InkPresenter::OnCollectionChanged): we need to
28467         invalidate the old bounds of the stroke for ItemRemoved as well as
28468         ItemChanged.
28470 2008-01-17  Chris Toshok  <toshok@ximian.com>
28472         * rect.h (Rect::Transform): new method, allows for transforming a
28473         rectangle by a cairo_matrix_t, used with transforming the stroke
28474         bounds back to screen space using the InkPresenter's
28475         absolute_xform.
28477         * stylus.cpp, stylus.h: deal with collection changed notifications
28478         on Stroke::StylusPointsProperty and on
28479         InkPresenter::StrokesProperty, and correctly invalidate a stroke's
28480         bounds.  The bounds of a stroke needs to be looked at - right now
28481         it's in the coordinate space of the InkPresenter, and so it needs
28482         to be transformed back to screen space before invalidating.  Need
28483         to check if MS uses screen space for a stroke's bounds (seems
28484         likely they do, but this was easier to code.)
28486 2008-01-17  Jeffrey Stedfast  <fejj@novell.com>
28488         * mplayer2.cpp: Updated for MediaFrame changes.
28490         * pipeline-ffmpeg.cc: Updated for MediaFrame changes.
28492         * pipeline.cpp: Instead of having a compressed_data and
28493         uncompressed_data field, simply have a 'buffer' field that gets
28494         reused by both the demuxer and the decoder. The decoder will set
28495         the buffer to the compressed data and the decoder will, once
28496         finished decoding, free the buffer and then update it to point to
28497         the decoded data. This reduces memory overhead.
28499 2008-01-17  Chris Toshok  <toshok@ximian.com>
28501         * uielement.cpp (UIElement::InsideClip): use
28502         uielement_transform_point instead of duplicating it.
28504         * shape.cpp (Shape::InsideObject): use uielement_transform_point
28505         instead of duplicating it.
28507         * text.cpp (TextBlock::InsideObject): use
28508         uielement_transform_point instead of duplicating it.
28510 2008-01-17  Larry Ewing  <lewing@novell.com>
28511         
28512         * shape.cpp (Rectangle::BuildPath): fix the origin calculation for
28513         unstroked rectangles (see test-rectangle-aliasing.xaml).  Suggest
28514         more rectangle testing after this.
28516 2008-01-17  Jackson Harper  <jackson@ximian.com>
28518         * xaml.cpp: After setting a property stop walking up the element
28519         tree.
28521 2008-01-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28523         * pipeline-ffmpeg.cpp: Comment out a couple of confusing printfs.
28525 2008-01-17  Jeffrey Stedfast  <fejj@novell.com>
28527         * mplayer2.cpp (audio_decode): Removed as it is no longer really
28528         needed.
28529         (audio_loop): We can't assume that an entire decoded audio packet
28530         will fit into the audio output buffer in a single shot, break it
28531         up if needed.
28533 2008-01-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28535         * mplayer2.cpp: Max out video frame rate at 60fps.
28537 2008-01-17  Fernando Herrera  <fherrera@novell.com>
28539         * panel.cpp: Reorder based on ZIndex when a new item is added.
28540         Fixes bug #353954
28542 2008-01-17  Larry Ewing  <lewing@novell.com>
28544         * runtime.cpp (Surface::InitializeDrawingArea): disable extended
28545         input devices until the remaining issues can be resolved.
28547 2008-01-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28549         * mplayer2.cpp, pipeline-ffmpeg.cpp: Plug a leak.
28551 2008-01-16  Larry Ewing  <lewing@novell.com>
28553         * uielement.cpp, uielement.h: 
28554         * panel.cpp, panel.h: 
28555         * collection.cpp, control.cpp: remove Compute/UpdateTotalOpacity.
28556         Combine the opacity visibility check into the total render
28557         visibility.  Make sure we compute/invalidate in all the same
28558         places.
28560         * dirty.cpp, dirty.h: remove all references to DirtyOpacity.
28562         * uielement.cpp (UIElement::DoRender): make sure we don't reset
28563         the coordinate system when setting up the clip calls in the
28564         opacity and opacity mask cases.  Go back to using the brush
28565         directly when rendering masks.  Should speed things up a little
28566         and fixes http://mycomix.wintellect.com/Spotlight.aspx?Item=1041
28568 2008-01-16  Chris Toshok  <toshok@ximian.com>
28570         * stylus.h, stylus.cpp: a few changes.  Move the
28571         StylusPointCollection and StrokeCollection classes here from
28572         collection.h/collection.cpp.  I didn't like the addition of
28573         stylus.cpp logic in two places.  Convert Stroke::GetBounds use use
28574         the new DrawingAttributes::ComputeBounds{WithoutDrawingAttributes}
28575         methods, and build up the bounds for the StrokeCollection by
28576         unioning all the Stroke bounds (these should be cached, but aren't
28577         yet.)  StrokeCollection::HitTest has been implemented, just
28578         looping over the strokes.  Stroke::HitTest is missing its guts at
28579         the moment, since hit testing is going to be a little bit of a
28580         pain for it.
28582         * collection.h, collection.cpp: remove StylusPointCollection and
28583         StrokeCollection.
28585 2008-01-16  Larry Ewing  <lewing@novell.com>
28587         * uielement.cpp, uielement.h: Rework the way we handle opacity to
28588         operate like the reference platform by removing the concept of
28589         TotalOpacity and instead using push/pop group and paint_with
28590         alpha.  See test-sibling-opacity.xaml for an example.  Handle
28591         clipping in DoRender rather than in every subclass because we want
28592         the clip path active before calling push/pop so that the temporary
28593         surface is bounded.
28594         * brush.cpp, panel.cpp: remove GetTotalOpacity references.
28595         * media.cpp, media.h: cleanup the complicated render logic now
28596         that things are handled in uielement.
28597         * shape.cpp, text.cpp: remove RenderClipPath calls.
28599         * rect.cpp, rect.h: add draw methods.
28601 2008-01-16  Jeffrey Stedfast  <fejj@novell.com>
28603         * pipeline.cpp: Implemented mpeg seeking support for
28604         Mp3FrameReader and, thusly, Mp3Demuxer.
28605         (Mp3Demuxer::ReadHeader): Calculate the duration of the stream.
28607 2008-01-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28609         * mplayer2.cpp: Remove a superfluous variable from Audio.
28611 2008-01-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28613         * mplayer2.cpp: Remove superfluous variables from Video.
28615 2008-01-16  Sebastien Pouliot  <sebastien@ximian.com>
28617         * moon-path.c: Fix typo (but was same value).
28619 2008-01-15  Jeffrey Stedfast  <fejj@novell.com>
28621         * pipeline.cpp: Implemented mp3 demuxer.
28623 2008-01-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28625         * mplayer2.cpp: Don't crash if Seek is called before Open.
28627 2008-01-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28629         * mplayer2.cpp: Remove dead code and variables, and only request
28630         audio/video frames if we have audio/video.
28632 2008-01-15  Jeffrey Stedfast  <fejj@novell.com>
28634         * mplayer2.cpp: Get rid of extra member variables in Packet.
28636 2008-01-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28638         * mplayer2.cpp: Implement audio decoding on the main thread as well.
28640 2008-01-14  Jeffrey Stedfast  <fejj@novell.com>
28642         * pipeline.cpp: Partially implemented an mp3 demuxer.
28644 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28646         * media.cpp, media.h, mplayer2.cpp, pipeline.cpp, pipeline.h: Make markers
28647           work again with the new pipeline.
28649 2008-01-14  Sebastien Pouliot  <sebastien@ximian.com>
28651         * shape.cpp|h: It looks like we stopped needing consider_fill a 
28652         while ago.
28654 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28656         * mplayer.h: We don't need io_tread anymore, so remove it.
28657         * mplayer2.cpp: We don't need io_tread anymore, so remove it. Add support
28658           for doing the decoding on the main thread with easy (in-code) switch.
28659           Comment out printfs, and remove dead/old/commented-out code.
28660         * pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp: Add support for doing the
28661           decoding on the main thread with easy (in-code) switch.
28662         * runtime.cpp: Don't print entire object tracking output if nothing leaked.
28664 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28666         * xaml.cpp: Unref a matrix object when we are done with it.
28667         * mplayer2.cpp: Remove printf.
28669 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28671         * mplayer2.cpp: Remove printfs.
28672         * pipeline.cpp, pipeline.h: Remove printfs and only print messages if they
28673           are errors.
28674         * pipeline-ffmpeg.cpp: Free context->extradata upon destruction.
28676 2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28678         * pipeline.cpp: Fix crash with several web-sites (when seeking before
28679           reading anything).
28681 2008-01-11  Chris Toshok  <toshok@ximian.com>
28683         * clock.h (class Clock): add an instance
28684         field (calculated_natural_duration).
28686         * clock.cpp (Clock::ComputeBeginTime): don't include the parent's
28687         current time here.  this was inflating animation begin time's in
28688         some cases to be either very close to the parent's calculated
28689         duration (or even after it).
28690         (ClockGroup::ComputeBeginTime): don't chain up to
28691         Clock::ComputeBeginTime.  clock groups in our system need to
28692         include their parent time in their begin time.  There are only two
28693         levels of clockgroups - storyboards, and the clockgroup we have
28694         associated with a given surface (Which will be the parent of all
28695         the storyboards running on that surface.)
28696         (output_clock): print out the BeginTime of the clock.
28697         (TimeManager::AddChild): I don't really like this, but we need to
28698         force the calculation of the natural duration of the clock when
28699         it's added to the hierarchy.
28700         (ClockGroup::AddChild): same here.
28701         (Clock::Clock): don't calculate the natural duration of the clock
28702         here - when we instantiated a ClockGroup it was calculating the
28703         duration before the child clocks were added.
28705 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28707         * pipeline.cpp: Seek on the frame reader, not on the source.
28708         * mplayer2.cpp, mplayer.h: Change all use of audio/video->stream != NULL to
28709           HasAudio/Video (). Fix seeking to actually work.
28711 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28713         * mplayer2.cpp, mplayer.h: Move the media variable from audio/video into
28714           mplayer.h where it belongs.
28715         * pipeline.cpp, pipeline.h: Implement seeking.
28716         * pipeline-ffmpeg.cpp: Copy decompressed data instead of using ffmpeg's data
28717           directly, since ffmpeg uses one single memory location for all decoded
28718           frames, causing us to always show the last decoded frame.
28720 2008-01-11  Sebastien Pouliot  <sebastien@ximian.com>
28722         * shape.cpp: Add support for PenLineCapTriangle with a patched cairo.
28723         See bug #345892 for the required cairo patch.
28725 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28727         * media.cpp: Initialize Media too upon initialization.
28728         * pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp, pipeline-ffmpeg.h,
28729           mplayer2.cpp, mplayer.cpp: Implement registration of components, making
28730           it possible to completely remove ffmpeg.
28732 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28734         * pipeline.cpp: Remove stray character.
28736 2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28738         * mplayer2.cpp, pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp,
28739           pipeline-ffmpeg.h: Code-cleanup.
28741 2008-01-10  Larry Ewing  <lewing@novell.com>
28743         * runtime.cpp (Surface::InitializeDrawingArea): realize the widget
28744         before setting the extension events (lame api) and disable the
28745         cursor test.
28747 2008-01-10  Chris Toshok  <toshok@ximian.com>
28749         * runtime.cpp (Surface::InitializeDrawingArea): activate all
28750         devices that have a cursor associated with them.
28752 2008-10-10  Andrew Jorgensen  <ajorgensen@novell.com>
28754         * pipeline.cpp: include config.h (fixes an ffmpeg-related build error)
28756 2008-01-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28758         * mplayer.cpp: Surround with ifdef to conditionally include the new
28759           MediaPlayer or not.
28760         * Makefile.am: Added pipeline* and mplayer2.cpp.
28761         * pipeline-ffmpeg.h, pipeline-ffmpeg.cpp: Added, support for using ffmpeg in
28762           the pipeline.
28763         * pipeline.cpp, pipeline.h: Added.
28764         * mplayer2.cpp: Added, a MediaPlayer that uses the new pipeline.
28766 2008-01-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28768         * panel.cpp: Delete leaked region.
28770 2008-01-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28772         * src.mdp: Added.
28774 2008-01-09  Chris Toshok  <toshok@ximian.com>
28776         * stylus.h, stylus.cpp, collection.h, collection.cpp: fix
28777         _get_bounds.
28779 2008-01-09  Chris Toshok  <toshok@ximian.com>
28781         * collection.h, collection.cpp: add C wrappers for
28782         StrokeCollection::GetBounds and ::HitTest.
28784         * stylus.h, stylus.cpp: same deal for Stroke::
28785         
28786 2008-01-09  Chris Toshok  <toshok@ximian.com>
28788         * collection.h, collection.cpp: add empty implementations of
28789         StrokeCollection::GetBounds and StrokeCollection::HitTest.
28791         * stylus.h, stylus.cpp: add empty implementations of
28792         Stroke::GetBounds and Stroke::HitTest.
28794 2008-01-09  Chris Toshok  <toshok@ximian.com>
28796         * uielement.h, uielement.cpp: change all the Emit* methods that
28797         deal with mouse events to take a GdkEvent instead of state/x/y,
28798         and also change their calldata to a heap allocated MouseEventArgs,
28799         which we unref after the emit.  This is because the pointer itself
28800         is wrapped by the managed MouseEventArgs, and will be unref'ed in
28801         ~MouseEventArgs at some later time.
28803         * runtime.h, runtime.cpp: change all the mouse events to pass
28804         around the actual GdkEvent instead of the state/x/y.  This is due
28805         to the fact that our MouseEventArgs class now wraps the GdkEvent,
28806         so we can get at all the stylus/extension event stuff.
28808         * stylus.h, stylus.cpp: remove stylus_get_current, as it's no
28809         longer required.  We correctly create a StylusInfo instance from
28810         the MouseEventArgs.
28812         * Makefile.am (libmoon_la_SOURCES): add eventargs.cpp
28813         (libmooninclude_headers): add eventargs.h
28815         * libmoon.h: add eventargs.h.
28817         * eventargs.h, eventargs.cpp: new files, splitting out the
28818         KeyboardEventArgs and MouseEventArgs from uielement.h, and flesh
28819         out MouseEventArgs, making it a refcounted object with enough
28820         smarts to handle both the managed case and plugin case.  Include
28821         all the stylus related code as well, so this *should* make all the
28822         stylus requiring demos work.
28824 2008-01-09  Jeffrey Stedfast  <fejj@novell.com>
28826         * geometry.cpp (path_get_bounds): My fix the other day wasn't
28827         quite ideal. Instead of using a 0.1 line thickness when the
28828         shape's StrokeThickness is 0, continue using that 0 thickness but
28829         use cairo_fill_extents() instead. Also, when shape is null, ise a
28830         0.0 thickness & cairo_fill_extents() as well.
28832         * shape.cpp (DoDraw): Removed the if (thickness == 0) optimization
28833         that breaks Paths with a StrokeThickness of 0. Fixes bug #352188.
28835         * runtime.cpp (EmitEventOnList): Changed to take double x,y
28836         coordinate arguments rather than int.
28837         (HandleMouseEvent): Same.
28839 2008-01-09  Jeffrey Stedfast  <fejj@novell.com>
28841         * list.cpp (List::~List): Added a dtor that deletes all nodes
28842         currently in the list. This is doable now that List::Nodes are
28843         classes where the node dtors can be overloaded.
28845 2008-01-09  Jackson Harper  <jackson@ximian.com>
28847         * xaml.cpp: If a property is a collection, don't assume that the
28848         collection is already initialized (they used to always be), and
28849         initialize the collection if needed. This fixes BNC 350893.
28851 2008-01-09  Stephane Delcroix  <sdelcroix@novell.com>
28853         * brush.cpp: fix (useless) derelativization for MappingmodeAbsolute
28854         on LinearGradientBrush. Fixes bnc 346308 and lineargrad.xml.
28856 2008-01-08  Chris Toshok  <toshok@ximian.com>
28858         * animation.cpp (Storyboard::Begin): simple change to fix a nasty
28859         bug.  we need to add the teardown handler before the completed
28860         handler.  otherwise cases where people were using a storyboard as
28861         a timer would break - the completed handler would fire, the JS
28862         would restart the storyboard, then the teardown handler would free
28863         the new clock hierarchy.  Fixes the page animation in pageturn,
28864         and gets the bubbles moving again in the SilverlightCLRBalls demo.
28866 2008-01-07  Jeffrey Stedfast  <fejj@novell.com>
28868         * geometry.cpp (path_get_bounds): Cairo seems to break if the line
28869         thickness is 0.0, so if the shape's thickness is set to 0.0, use
28870         0.1 like we do if shape is null. Fixes bug #351575.
28872 2008-01-07  Sebastien Pouliot  <sebastien@ximian.com>
28874         * shape.cpp|h: Add NeedsLineCaps and NeedsLineJoin so some shapes,
28875         that ignore those properties, can avoid setting them on the cairo
28876         context.
28878 2008-01-04  Chris Toshok  <toshok@ximian.com>
28880         * runtime.cpp: mostly switch all emit_* calls to take doubles, and
28881         pass doubles around for button x/y.
28882         (Surface::motion_notify_callback): if we're gtk > 2.12, use
28883         gdk_event_request_motions (falling back to gdk_window_get_pointer
28884         if not).  also, we can use the mouse_event_x/y from the event,
28885         even when it's a hint.
28887         * runtime.h: switch back to using doubles for everything mouse
28888         event related.  Change MoonlightEventEmitFunc to take doubles.
28890 2008-01-04  Jeffrey Stedfast  <fejj@novell.com>
28892         * runtime.cpp|h: Make mouse_event_x/y ints rather than doubles
28893         since the events that use them want them as ints anyway.
28894         (button_release_callback): Cast the button->x/y doubles to int.
28895         (button_press_callback): Same.
28896         (motion_notify_callback): Cast event->x/y to int.
28897         (crossing_notify_callback): Same.
28899         * dependencyobject.cpp: EventObjects now use a List class for
28900         event_lists rather than GSList which is far more costly for
28901         appends.
28902         (Emit): Reduce the number of linked-list iterations from 5 to 2.
28904 2008-01-04  Chris Toshok  <toshok@ximian.com>
28906         * runtime.h, runtime.cpp: completely overhaul the way we handle
28907         mouse events.  Instead of doing both hit testing and event
28908         dispatch in one recursive tree traversal, we build up a list of
28909         all elements that will bubble the event, and then use that list
28910         along with the previous one to generate Enter/Leave events for the
28911         elements that require it.  Also fix the way capture is done (it's
28912         not handled until the end) and fix the Enter event dispatch when
28913         you release mouse capture.
28915         * uielement.h, uielement.cpp: rename the mouse events to match the
28916         names used in C# and JS, as it's been singularly annoying to
28917         remember that ButtonPressEvent -> MouseLeftButtonDown, etc.  Also
28918         rename all the Handle* event methods to Emit*, as that's all they
28919         do.  Make them nonvirtual, as the traversal and emission of the
28920         events now happens in runtime.cpp.  Add a new virtual
28921         method (HitTest), that is overridden by the container elements,
28922         which appends elements that are going to bubble the event to the
28923         list.
28925         * panel.h, panel.cpp: remove all the Handle* methods, implement
28926         HitTest.
28928         * control.h, control.cpp: remove all the Handle* methods,
28929         implement HitTest.
28931 2008-01-04  Jeffrey Stedfast  <fejj@novell.com>
28933         * media.cpp (UpdateProgress): Don't SetValue() unless the delta
28934         was large enough - otherwise we could get into a situation where
28935         we never emit a progress changed event in a case where the data
28936         trickles in at < 0.05%.
28938 2008-01-04  Chris Toshok  <toshok@ximian.com>
28940         * animation.cpp (Storyboard::HookupAnimationsRecurse): look back
28941         up the clock hierarchy for the target property like we do with the
28942         target name.
28944 2008-01-04  Chris Toshok  <toshok@ximian.com>
28946         * media.h: add Image::DownloaderFailed.
28948         * media.cpp (Image::UpdateProgress): make sure to qualify the
28949         DownloadProgressProperty we lookup on the Downloader, since
28950         without the Downloader:: it'll try to get
28951         Image::DownloadProgressProperty, which will always return 0.0.
28952         (Image::SetSource): use the static qualifier for
28953         events (Downloader:: instead of downloader->).
28954         (Image::DownloaderFailed): new method, emit our ImageFailedEvent.
28956         * brush.cpp (ImageBrush::image_progress_changed): make sure to set
28957         our ImageBrush::DownloadProgressProperty before emitting the
28958         changed event.
28959         (brush_init): lookup the ImageBrush::ImageFailedEvent.
28961 2008-01-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28963         * runtime.cpp: Free background_color upon surface
28964           destruction. Fixes a minor leak.
28966         * clock.cpp|h: Free the tick_call_mutex upon destruction.
28968 2008-01-03  Jeffrey Stedfast  <fejj@novell.com>
28970         Fix for bug #350962
28972         * media.cpp (MediaBase::OnPropertyChanged): Don't emit
28973         DownloaderProgressChanged events anymore, leave that up to Image
28974         and MediaElement classes so that we don't emit events when an
28975         outside source changes the value.
28976         (MediaElement::UpdateProgress): Emit the DownloaderProgressChanged
28977         event if the proper download delta has occured.
28978         (Image::UpdateProgress): Same.
28980 2008-01-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28982         * dependencyobject.h: Remove warning.
28984 2007-12-31  Jeffrey Stedfast  <fejj@novell.com>
28986         * runtime.h (CreateDownloader): Simplified.
28988 2007-12-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28990         * collection.cpp: Upon destruction on VisualCollection, remove the visual
28991           parent of all items.
28992         * dependencyobject.h: Add weak_ref/unref and a comment explaining when and
28993           how to use them.
28994         * dirty.cpp: Don't take a ref in DirtyNode.
28996 2007-12-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
28998         * media.cpp: Add const modifier 
29000 2007-12-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29002         * downloader.cpp: Null-initialize a field.
29003         * dirty.cpp: Make DirtyNode keep a reference to the element it wraps.
29005 2007-12-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29007         * pipeline.h: Added, the start of the new media pipeline.
29009 2007-12-20  Sebastien Pouliot  <sebastien@ximian.com>
29011         * collection.cpp|h: Add missing method AddStylusPoints for 
29012         StylusPointCollection
29014 2007-12-20  Sebastien Pouliot  <sebastien@ximian.com> 
29016         * geometry.h: Remove hack for PathGeometry::FiguresProperty
29017         * xaml.cpp: If a collection is null by default then we must call
29018         parent->SetValue(dp, collection) or the collection, and it's 
29019         contents, won't be available. Fix (correctly) Chess.
29021 2007-12-19  Sebastien Pouliot  <sebastien@ximian.com> 
29023         * geometry.cpp: Fix Draw and ComputeBound to deal with the fact that
29024         there's no default Figure collection. Fix Chess crasher.
29025         * xaml.cpp: Fix unit test were empty string are parsed as 0.0,
29026         foir doubles, and as an "empty" (but not NULL) Value for 
29027         DOUBLE_ARRAY.
29029 2007-12-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29031         * media.cpp, media.h: Implement support for markers as a separate stream
29032           (the demuxer will call a callback when it encounters any streamed
29033           markers).
29035 2007-12-19  Sebastien Pouliot  <sebastien@ximian.com>
29037         * xaml.cpp: Add create_item_func for PathFigureCollection. This is 
29038         now needed since it defaults to null and not an empty collection.
29040 2007-12-19  Stephane Delcroix  <sdelcroix@novell.com>
29042         * uielement.[h|cpp]: set a default value (0,0) for RenderTransformOrigin.
29044 2007-12-18  Sebastien Pouliot  <sebastien@ximian.com>
29046         * color.cpp: Handle empty string correctly in color_from_str. Unit 
29047         tests shows this return 0 (and not transparent).
29049 2007-12-18  Stephane Delcroix  <sdelcroix@novell.com>
29051         * xaml.cpp: fix for bnc 348581.
29053 2007-12-18  Sebastien Pouliot  <sebastien@ximian.com> 
29055         * brush.cpp: Fix default color values for SolidColorBrush::Color and
29056         GradientStop::Color properties (see js unit tests).
29057         * geometry.cpp|h: Remove default collection from PathGeometry. Fix
29058         testPathGeometry unit test.
29060 2007-12-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29062         * media.cpp: ReadASFMarkers: Read markers as well as script commands.
29063           Subtract the preroll value from the pts before adding the marker. Unref
29064           the created collection and markers when finished with them.
29065           AdvanceFrame: Always call CheckMarkers, even if we couldn't advance the
29066           frame (might be necessary if the last frame has a marker).
29068 2007-12-17  Jb Evain  <jbevain@novell.com>
29070         * xaml.cpp: fix testMatrixWithZeroItem test case.
29072 2007-12-17  Jb Evain  <jbevain@novell.com>
29074         * type.cpp|h(.in), value.cpp|h(.in): remove the Matrix
29075         value type, has SL exposes it as a DependencyObject.
29077         * transform.cpp|h: define and implement the
29078         Matrix DependencyObject type.
29080         * xaml.cpp: create a Matrix DO on a Matrix xaml element.
29081         Also create such an object with the <MatrixTransform Matrix='...'>
29082         syntax.
29084 2007-12-17  Sebastien Pouliot  <sebastien@ximian.com>
29086         * xaml.cpp: Return an "empty" Value (not NULL) if no POINT_ARRAY
29087         is provided. Fix testAllowEmptyPointsOnPoly[gon|line] JS tests.
29089 2007-12-14  Jeffrey Stedfast  <fejj@novell.com>
29091         * runtime.cpp (fps_report_default): Default printf FPS report
29092         callback.
29093         (Surface::render_cb): Use instance-local variables for keeping
29094         track of FPS and use the report func if RUNTIME_INIT_SHOW_FPS bit
29095         is set.
29097         * runtime.h: Added a RUNTIME_INIT_SHOW_FPS flag
29098         (class Surface): New method to set the FPS report callback for a
29099         surface.
29101 2007-12-14  Chris Toshok  <toshok@ximian.com>
29103         * type.cpp.in, type.cpp (types_init_register_events): need to
29104         register DownloadProgressChanged and ImageFailed events on
29105         imagebrushes.
29107         * brush.h, brush.cpp: same, and hook up the events from
29108         ImageBrush's embedded image so that we can re-emit the events.
29109         
29110 2007-12-14  Jeffrey Stedfast  <fejj@novell.com>
29112         * downloader.cpp (Downloader::Abort): Don't abort if we've already
29113         been aborted or been notified that we've failed (needed protection
29114         for the Plugin downloader).
29115         (Downloader::Send): Set aborted = false.
29116         (Downloader::NotifyFailed): Don't do anything if we've already
29117         been notified of failure for this download request.
29119         * downloader.h (class Downloader): Keep track of aborted state as
29120         well.
29122 2007-12-14  Stephane Delcroix  <sdelcroix@novell.com>
29124         * brush.cpp: Fix for bnc 346204: Set both Width and Height for Image if
29125         only one (Width XOR Height) is provided.
29127 2007-12-14  Sebastien Pouliot  <sebastien@ximian.com> 
29129         * shape.cpp: Fix Path::GetBrushSize to ensure the geometry has
29130         been built before calling cairo_stroke_extents. This fix sample
29131         http://designwithsilverlight.com/tutorials/photoGalleryWall/default.html
29133 2007-12-13  Sebastien Pouliot  <sebastien@ximian.com> 
29135         * shape.cpp|h: Shortcut path bounds calculation when both Width
29136         and Height are specified. Add same clipping rules to Line, 
29137         Polyline and Polygon classes.
29139 2007-12-13  Sebastien Pouliot  <sebastien@ximian.com>
29141         * geometry.cpp: Resume using cairo_stroke_extents in some cases
29142         because we need very precise bounds for Fill to work properly.
29143         This fix Sprawl's cowboy hat ribbon :-)
29145 2007-12-12  Stephane Delcroix  <sdelcroix@novll.com>
29147         * brush.cpp: Fix RelativeTransform for RadialGradientBrush'es too.
29149 2007-12-11  Jeffrey Stedfast  <fejj@novell.com>
29151         * downloader.cpp|h: Made the ::Write() method take the same
29152         int-type args as the NPP_Write() function (which means int32 for
29153         both offset and nbytes).
29155 2007-12-11  Sebastien Pouliot  <sebastien@ximian.com>
29157         * stylus.cpp: Fix JS unit tests for Stroke properties by having
29158         a default DrawingAttributes inside the Stroke.
29160 2007-12-10  Chris Toshok  <toshok@ximian.com>
29162         * dependencyobject.h, dependencyobject.cpp: more event changes.
29163         events keep a integer "token" per event, that starts at 0, that is
29164         returned from the plugin's addEventListener method, and can be can
29165         be passed to the plugin's removeEventListener method.
29167 2007-12-10  Sebastien Pouliot  <sebastien@ximian.com>
29169         * shape.cpp: Fix Shape::GetSizeForBrush to adjust to the Stretch
29170         property of the Shape. Fix bug #346018
29172 2007-12-10  Jeffrey Stedfast  <fejj@novell.com>
29174         * runtime.cpp (InitializeDrawingArea): Removed the call to
29175         gtk_widget_set_size_request() - we now call it elsewhere (since
29176         going fullscreen requiers us to call set_size_request() /before/
29177         calling gtk_window_fullscreen(). When going to fullscreen mode,
29178         this was causing the FullScreenMessage item to appear in the
29179         upper-left corner rather than centered like it should have been.
29180         (Surface): Make the call to gtk_widget_set_size_request() here now
29181         that it no longer is called inside InitializeDrawingArea().
29183 2007-12-07  Sebastien Pouliot  <sebastien@ximian.com> 
29185         * geometry.cpp: Set SHAPE_EMPTY if only Height or Width is specified.
29186         * shape.cpp|h: Add Shape and Path NeedsClipping methods. Adjust the
29187         bounds calculation on paths when Height *and* Width are present.
29189 2007-12-07  Sebastien Pouliot  <sebastien@ximian.com>
29191         * shape.cpp: In Shape::ComputeBounds don't compute half thickness
29192         unless the value is needed.
29194 2007-12-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29196         * xaml.cpp: Plug more leaks.
29198 2007-12-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29200         * animation.cpp, geometry.cpp: Fix a couple of memory leaks,
29201           detected by the javascript tests.
29203 2007-12-06  Jeffrey Stedfast  <fejj@novell.com>
29205         * media.cpp (media_element_get_attributes): Added.
29206         (media_element_set_attributes): Added.
29207         (MediaElement): Set an empty list of attributes as per the spec.
29209 2007-12-06  Stephane Delcroix  <sdelcroix@novell.com>
29211         * media.cpp:
29212         * brush.cpp: implement RelativeTransform for image brushes and 
29213         LinearGradientBrush. RadialGradientBrush still missing.
29215 2007-12-06  Chris Toshok  <toshok@ximian.com>
29217         * dependencyobject.h, dependencyobject.cpp: make
29218         EventObject::AddHandler return the id (when using the event_name
29219         variant).
29221 2007-12-06  Chris Toshok  <toshok@ximian.com>
29223         * xaml.cpp (xaml_init): register the right constructors for
29224         PathSegmentCollection, GeometryCollection, and
29225         TransformCollection.
29227 2007-12-05  Chris Toshok  <toshok@ximian.com>
29229         * animation.cpp, animation.h: a couple of fixes.  Move away from
29230         watching the clock state in AnimationStorage and resetting the
29231         property value there.  instead, just override Clock::Stop in
29232         AnimationClock and call ResetPropertyValue on the storage.
29234         Also, when a storyboard's clock group is stopped, free it and
29235         remove it from the parent clock's list of children.  This should
29236         keep us from growing the number of clocks over time for
29237         storyboards which don't have Begin() called again (the only
29238         circumstance under which we destroy the clock).
29240         * clock.cpp, clock.h: handle the case where a clock can be started
29241         and then stopped before the next clock tick.  This happens when
29242         you move the mouse very quickly over the thumbnails in pageturn.
29244 2007-12-05  Sebastien Pouliot  <sebastien@ximian.com>
29246         * geometry.cpp: Fix crash when EllipseGeometry is used for clipping
29247         (no path provided). Fix Build/ComputeBounds when no center point
29248         is provided.
29250 2007-12-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29252         * uielement.h, visual.h, uielement.cpp, collection.cpp, control.cpp,
29253           dirty.cpp: Move UIElement::parent to Visual, rename it to visual_parent,
29254           and make it a real property with accessors.
29256 2007-12-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29258         * xaml.cpp, dependencyobject.h, collection.cpp, dependencyobject.cpp,
29259           animation.cpp: Rename DependencyObject::parent/SetParent/GetParent to
29260           logical_parent/SetLogicalParent/GetLogicalParent.
29262 2007-12-04  Larry Ewing  <lewing@novell.com>
29264         * media.cpp (Image::Render): fix the conditions for the opacity
29265         stability count.
29267 2007-12-03  Larry Ewing  <lewing@novell.com>
29269         * src/media.cpp (Image::Render): use paint_with_alpha if opacity
29270         is changing, use the old buffered alpha if it is not.
29272 2007-12-04  Jb Evain  <jbevain@novell.com>
29274         * stylus.cpp|h: add stylus_info_get_current function.
29275         Right now, it's an hack which always return a StylusInfo
29276         of type Mouse, not inverted.
29278 2007-12-03  Chris Toshok  <toshok@ximian.com>
29280         * clock.h, clock.cpp: rename ClampTimeToDuration to ClampTime, as
29281         it now clamps to [0,duration_timespan].  This fixes the Simon
29282         "button flying off the screen" bug.
29284 2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
29286         * clock.cpp (RaiseEnqueuedEvents): Optimized a bit by not
29287         iterating thru the list 6 times :)
29288         (ClockGroup::RaiseAccumulatedEvents): Make a copy of the
29289         child_clocks list here too, or we end up corrupting memory.
29291 2007-12-03  Larry Ewing  <lewing@novell.com>
29293         * media.cpp (Image::Render): wrap the region clipping in a #define
29294         for testing.
29296 2007-12-03  Larry Ewing  <lewing@novell.com>
29298         * media.cpp (Image::Render): remove accumulated drawing cruft.
29300 2007-12-03  Chris Toshok  <toshok@ximian.com>
29302         * animation.cpp: put back in the calls to ComputeBeginTime that I
29303         accidentally committed a few days ago (and lewing reverted to fix
29304         the build).  they're needed with the new clock changes.
29306 2007-12-03  Chris Toshok  <toshok@ximian.com>
29308         * clock.cpp, clock.h: rework the clock code a bunch.  There are a
29309         couple of large changes.
29311         Get rid of the stupid new_ and current_ fields.  Just update the
29312         field immediately.  This cuts down on logic in if checks, and also
29313         makes subclocks update much faster in relation to their parent
29314         clock (we used to have to wait 1 tick per level in the tree for
29315         state to propagate).
29317         Abstract out all the QueueEvent calls into setters in clock.h.
29319         Break up Clock::Tick some, so more of the code is reusable from
29320         ClockGroup::Tick without having to call Clock::Tick and then work
29321         behind its back.
29323 2007-12-03  Sebastien Pouliot  <sebastien@ximian.com>
29325         * brush.cpp: Fix breakage introduced in r90549 (the matrix is 
29326         already set on the pattern).
29328 2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
29330         * dependencyobject.cpp (RemoveHandler): Simplified a little.
29332         * animation.cpp (Stop): Remove the CompletedEvent root_clock
29333         handler. Fixes Simon's GAME OVER! textblock storyboard.
29335 2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
29337         * runtime.cpp: Added clipping/bounding-box override values.
29339         * uielement.cpp (DoRender): Changed optional bounding-box/clipping
29340         debugging drawing based on runtime settable bitflags.
29342 2007-12-03  Larry Ewing  <lewing@novell.com>
29344         * uielement.cpp: Clean up the debug rendering code for bounding
29345         boxes and clip regions.
29347 2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
29349         Fixes a bug pointed out by Larry when rendering lines beginning
29350         with a 'J', where the tail escapes the bounding box.
29352         * font.cpp (Layout): Use the horiBearingX font metric.
29353         (RenderLine): Same.
29355 2007-12-03  Larry Ewing  <lewing@novell.com>
29357         * brush.cpp (RadialGradientBrush::SetupBrush): add debug spew
29358         if we can't invert the matrix but still draw someting.
29360 2007-11-29  Larry Ewing  <lewing@novell.com>
29362         * panel.cpp (Panel::ComputeBounds): clip the clip the subpath
29363         bounds to the clip region as well.
29365         * control.cpp (Control::ComputeBounds): differenciate between our
29366         bounds and our subpath bounds.
29368         * control.h: add bounds_with_children and GetSubpathBounds ().
29370 2007-11-29  Jeffrey Stedfast  <fejj@novell.com>
29372         * font.cpp (TextFont::GetGlyphInfoByIndex): If we reach the end of
29373         the font face charmap, use unichar = 0 rather than returning NULL.
29375 2007-11-28  Chris Toshok  <toshok@ximian.com>
29377         * runtime.cpp (Realloc): when we Realloc(), we need to tell the
29378         toplevel canvas to update its bounds.  This *may* be wrong, but it
29379         definitely fixes matrix.
29380         (UpdateFullScreen): we need to stop the timesource when emitting
29381         the fullscreenchangeevent.  otherwise we can end up stuck in a
29382         nested glib mainloop and never return from the emit (actually we
29383         never even invoke the JS callback in matrix.  the nested loop
29384         happens somewhere deep in the bowels of NPN_Invoke).
29386 2007-11-28  Jeffrey Stedfast  <fejj@novell.com>
29388         * media.cpp (MediaElement::UpdateProgress): Got rid of a hardcoded
29389         hack that forced the assumption of a streaming (vs progressive)
29390         media download. Also fixed to emit a DownloadProgressChanged event
29391         at progress == 1.0 (which is what th Silverlight book says we're
29392         supposed to do).
29394 2007-11-28  Larry Ewing  <lewing@novell.com>
29396         * src/uielement.cpp (UIElement::DoRender): make sure we don't
29397         leave a path on the cairo context when clipping.
29399 2007-11-28  Chris Toshok  <toshok@ximian.com>
29401         * uielement.cpp (UIElement::UIElement): compute the initial total
29402         hit test visibility.
29404         * dirty.cpp (process_dirty_elements): don't invalidate/update
29405         bounds when the hit test visibility changes.
29407         * frameworkelement.(h,cpp): calculate the bounds here using
29408         width/height.
29410         * panel.cpp: chain up to frameworkelement.
29411         
29412 2007-11-27  Jeffrey Stedfast  <fejj@novell.com>
29414         * text.cpp (TextBlock::SetValue): Check the resulting Inlines
29415         collection formed from the Text property being set against the old
29416         Inlines - if no change, don't set the new Inlines collection,
29417         simply keep using the old. The idea is to prevent unnecessary
29418         layout re-calculations and invalidates.
29420 2007-11-27  Chris Toshok  <toshok@ximian.com>
29422         * dirty.[cpp,h] panel.[cpp,h], control.[cpp,h], uielement.[cpp,h],
29423         canvas.cpp, collection.cpp, shape.cpp:
29425         rather large change - don't use a large rectangular bounding box
29426         encompassing both the panel's frameworkelement bounds as well as
29427         the bounds of all its children.  Instead, only worry about the
29428         frameworkelement bounds, and let the children invalidate
29429         themselves.  but do all this in a way that we still use the
29430         subtree's bounding box to prune rendering and hit testing.
29432         since we won't be invalidating the entire box surrounding all
29433         children, we need to propagate visibility information down the
29434         tree as we do opacity.
29436         This should really speed up most animations (such as those in
29437         sprawl and airlines) since we'll be invalidating far smaller
29438         areas.
29439         
29440         (this code was stupidly hard for lewing and me to get right.  yay
29441         for jet lag.)
29443 2007-11-23  Larry Ewing  <lewing@novell.com>
29445         * runtime.cpp: add show=expose to toggle expose display.
29447 2007-11-22  Jb Evain  <jbevain@novell.com>
29449         * xaml.cpp (XamlElementInstantce::ClearSetProperties): avoid
29450         a glib warning if set_properties is NULL.
29452 2007-11-21  Chris Toshok  <toshok@ximian.com>
29454         * media.cpp (MediaElement::UpdateProgress): only set 1 of
29455         DownloadProgressProperty and BufferingProgressProperty.  The
29456         former is used if we're playing progressively, the latter if we're
29457         buffering before playing.  This fixes the buffering animation on
29458         the halo site.
29459         
29460 2007-11-21  Chris Toshok  <toshok@ximian.com>
29462         * runtime.cpp (Surface::Invalidate): add the int case around the
29463         complete expression to quiet gcc.
29465 2007-11-20  Larry Ewing  <lewing@novell.com>
29467         * runtime.cpp (Surface::expose_event_callback): take allocation
29468         offsets into account when invalidating and drawing.  Fixes
29469         #339010.
29471 2007-11-20  Chris Toshok  <toshok@ximian.com>
29473         * xaml.cpp (XamlElementInstance::ClearSetProperties): in glib <
29474         2.12, destroy the hash table and set it to NULL so we'll recreate
29475         it.
29477 2007-11-20  Chris Toshok  <toshok@ximian.com>
29479         * collection.cpp (VisualRemoved): switch from using
29480         item->parent->ChildInvalidated(UIElement), use
29481         item->parent->Invalidate (item->GetBounds()).
29483         * uielement.h, uielement.cpp: change ChildInvalidated(Region *) to
29484         Invalidate (Region*) and update calls to it.  Remove
29485         ChildInvalidated(UIElement*).  Also, remove all references to the
29486         children_dirty_region field.  everything goes through dirty_region
29487         now.
29489         * dirty.cpp: switch to using item->parent->Invalidate instead of
29490         item->parent->ChildInvalidated, and remove references to
29491         children_dirty_region.
29493 2007-11-20  Chris Toshok  <toshok@ximian.com>
29495         * dependencyobject.cpp: add a ctor for EventClosure, and do a deep
29496         copy before emitting an event.
29498 2007-11-20  Jeffrey Stedfast  <fejj@novell.com>
29500         * runtime.cpp (surface_get_toplevel): Removed.
29502         * uielement.cpp (uielement_get_isloaded): Removed.
29504 2007-11-20  Jb Evain  <jbevain@novell.com>
29506         * downloader.h (Downloader): override SetSurface and GetSurface
29507         to work on a custom surface field.
29508         * downloader.cpp (Downloader::Downloader): initialize
29509         surface to NULL.
29510         * runtime.h (Surface::CreateDownloader): initialize the surface
29511         of the downloader.
29512         * collection.cpp: when removing an UIElement from an UIElementCollection,
29513         clear out its surface to NULL.
29514         * visual.cpp: remove null check preventing to set the surface to NULL.
29515         * dependencyobject.cpp: (DependencyObject::FindName): if the
29516         current DO has no parent, fallback to its surface to try
29517         FindName on its top level element (needed to call FindName
29518         on a downloader for instance). Fixes #335018.
29520 2007-11-20  Jackson Harper  <jackson@ximian.com>
29522         * xaml.cpp: If we need to reparse the attributes for an element
29523         (because we loaded a class and the props need to be set on the new
29524         class) we have to clear out the hash of properties that are marked
29525         as already set. Otherwise we get a property already set error.
29527 2007-11-20  Jackson Harper  <jackson@ximian.com>
29529         * xaml.cpp: Add new function to create a value from a string
29530         without having the Kind available (you still need to have the type
29531         in string form).
29532         - SetAttribute now ensures that the attribute was set properly
29533         - If the object we are trying to set an attribute on is a managed
29534         object and there is no DependencyProperty for the attribute, we
29535         try setting the attribute on the object.
29537 2007-11-20  Sebastien Pouliot  <sebastien@ximian.com>
29539         * uielement.cpp: Ensure the default value for VisibilityProperty
29540         is VisibilityCollapsed even if the value is invalid (for Javascript
29541         compatibility, since 1.1 should throw an exception). See #340799
29543 2007-11-20  Stephane Delcroix  <sdelcroix@novell.com>
29545         * uielement.cpp: FullInvalidate on setting Viibility to Visible.
29546         Fixes bnc #342662.
29548 2007-11-19  Larry Ewing  <lewing@novell.com>
29550         * uielement.cpp: setup the clip before push/pop group so that
29551         we reduce the temp surface size.
29553 2007-11-16  Sebastien Pouliot  <sebastien@ximian.com>
29555         * transform.cpp: Use cairo_matrix_init_translate instead of 
29556         cairo_matrix_init + cairo_matrix_translate where possible (which
29557         avoid the multiplication with the identity matrix).
29559 2007-11-16  Jeffrey Stedfast  <fejj@novell.com>
29561         * runtime.cpp (surface_get_toplevel): New function needed by the
29562         managed land to implement a bit of a hack for the Resize
29563         event (when someone connects to the Resize event, if the toplevel
29564         canvas is already loaded, we want to immediately call the
29565         handler).
29567         * uielement.cpp (uielement_get_isloaded): Same.
29569 2007-11-15  Jackson Harper  <jackson@ximian.com>
29571         * Makefile.am:
29572         * parsertest.cpp: Some tests I use for checking the parsing
29573         functions.
29575 2007-11-15  Jackson Harper  <jackson@ximian.com>
29577         * color.h: Add equality operators.
29579 2007-11-15  Jackson Harper  <jackson@ximian.com>
29581         * xaml.cpp: use isalpha for determining whether or not an int32 is
29582         an enum.  This allows things like -1 to work.
29584 2007-11-15  Jackson Harper  <jackson@ximian.com>
29586         * xaml.cpp: Make sure the entire string is validate ie no 25.0XXXX
29587         for doubles.
29589 2007-11-15  Jackson Harper  <jackson@ximian.com>
29591         * point.h|cpp:
29592         * rect.h|cpp: Update signatures to allow for error checking when
29593         creating types from strings.
29594         * xaml.h|cpp: Consolidate code to create values from strings, add
29595         some error checking.  Update most of the parsing methods so it is
29596         possible to return errors when parsing.
29597         * playlist.cpp: Sig update.
29598         
29599 2007-11-15  Jackson Harper  <jackson@ximian.com>
29601         * stylus.h|cpp: Initialize these collections so we don't get NULLs
29602         for GetValue on them.
29604 2007-11-14  Chris Toshok  <toshok@ximian.com>
29606         * runtime.cpp (strcase_hash): swap this out for mono's eglib
29607         implementation, augmented with g_ascii_tolower, to remove the
29608         malloc/free and 2 passes over the string.
29610 2007-11-14  Chris Toshok  <toshok@ximian.com>
29612         * dependencyobject.cpp: move the strcase_hash/equals functions...
29613         
29614         * runtime.cpp: here.
29616         * runtime.h: and make them public.
29618         * type.cpp.in, type.cpp (RegisterEvent): and use them here
29619         (RegisterType): and here.
29621 2007-11-14  Jb Evain  <jbevain@novell.com>
29623         * media.cpp|h: remove specific Image and MediaElement
29624         accessors for progress property now that the code
29625         moved to MediaBase.
29627 2007-11-14  Jb Evain  <jbevain@novell.com>
29629         * type.cpp.in, type.cpp, media.h, media.cpp: Move
29630         DownloadProgressProperty and DownloadProgressChangedEvent
29631         to MediaBase so it gets shared for both Image and MediaElement.
29632         Fixes #325255.
29634 2007-11-14  Jb Evain  <jbevain@novell.com>
29636         * value.h.in: update code template to match current value.h.
29638 2007-11-14  Sebastien Pouliot  <sebastien@ximian.com> 
29640         * openfile.cpp: Added support for Filter and FilterIndex.
29642 2007-11-14  Sebastien Pouliot  <sebastien@ximian.com>
29644         * animation.cpp: Replaced g_assert_not_reached with g_warning.
29645         At least until #340799 (enum validation) is fixed. Part of #335413
29646         * shape.cpp: Add g_warning to replace the g_assert_not_reached 
29647         removed earlier. At least until #340799 (enum validation) is fixed.
29648         * uielement.cpp: Replaced g_assert_not_reached with g_warning.
29649         At least until #340799 (enum validation) is fixed. Part of #335413
29651 2007-11-13  Miguel de Icaza  <miguel@novell.com>
29653         * value.cpp (Value::ToString): Add method to help debug some
29654         apps. 
29656 2007-11-13  Jeffrey Stedfast  <fejj@novell.com>
29658         * text.cpp (SetValue): Get rid of \r's and treat \n's as LineBreak
29659         elements.
29661 2007-11-13  Sebastien Pouliot  <sebastien@ximian.com>
29663         * brush.cpp|h: Do not compute brush bounds for a SolidColorBrush 
29664         as this is unrequired (API wise) and can be expensive (it was enough
29665         to add custom bound calculation code to shapes and geometries).
29667 2007-11-12  Sebastien Pouliot  <sebastien@ximian.com>
29669         * shape.cpp: Removed g_assert_not_reached and, if any bad value is
29670         supplied (should be catched well before that, #340799), use the 
29671         default value. Fix part of #335413
29673 2007-11-09  Chris Toshok  <toshok@ximian.com>
29675         * dirty.cpp, uielement.h, uielement.cpp: glib was hurting my head.
29676         convert this over to using our List class.  Also fix a bug where
29677         elements with down dirty flags weren't being inserted propertly
29678         into the up dirty list.
29680 2007-11-09  Sebastien Pouliot  <sebastien@ximian.com>
29682         * animation.cpp: Fix crash on empty BeginStoryboard (#340384)
29684 2007-11-09  Miguel de Icaza  <miguel@novell.com>
29686         * value.h (struct Value): Cope with NULL strings.
29688 2007-11-09  Jackson Harper  <jackson@ximian.com>
29690         * xaml.cpp: Closepath needs to draw a line to the path's starting
29691         point and needs to create a new path figure element at the
29692         starting point.
29694 2007-11-09  Jackson Harper  <jackson@ximian.com>
29696         * type.cpp|h.in: Add an accesor for the ContentProperty name.
29697         
29698 2007-11-09  Jackson Harper  <jackson@ximian.com>
29700         * xaml.cpp: Rework to allow unparented properties.  createFromXaml
29701         ("<Canvas.Background><SolidColorBrush></Canvas.Background") will
29702         basically ignore the property and will return the SolidColorBrush
29703         as the top element. This fixes 335865.
29705 2007-11-08  Chris Toshok  <toshok@ximian.com>
29707         [ may go a long way toward fixing #337714, if it doesn't fix it
29708         outright ]
29709         
29710         * uielement.h, uielement.cpp: add an overload of ChildInvalidated
29711         that takes a UIElement* instead of a region.  The implementation
29712         just invalidates the entire bounds of the child in the parent.
29714         * collection.h, collection.cpp: we weren't breaking the
29715         item->parent link when removing visuals from a VisualCollection.
29716         Add VisualRemoved, which invalidates the child's region (and stop
29717         using child->Invalidate, since that won't work once the link to
29718         the parent is broken) and breaks the parent link.  Call
29719         VisualRemoved from everywhere we remove/replace a visual in our
29720         collection.  Also, rename VisualUpdated to VisualAdded, since
29721         that's more indicative of why the method is being called.
29722         
29723 2007-11-08  Jeffrey Stedfast  <fejj@novell.com>
29725         * runtime.cpp (Attach): Emit the Resize event.
29726         (drawing_area_size_allocate): Emit the Resize event.
29728 2007-11-07  Chris Toshok  <toshok@ximian.com>
29730         * clock.cpp (Clock::Begin): guard against division by zero.
29732 2007-11-07  Chris Toshok  <toshok@ximian.com>
29734         * runtime.cpp, runtime.h: make GetWidth()/GetHeight() return the
29735         width the canvas tells the surface to be (if it does).  this fixes
29736         issues uncovered by larry's improved bounds checking code.  Also,
29737         remove the instance fields for screen_height/width.  they're only
29738         used in one place, so make them local to that function.
29740 2007-11-07  Chris Toshok  <toshok@ximian.com>
29742         * brush.h, brush.cpp: add some c++ setters/getters to make some
29743         code a little smaller.
29745 2007-11-06  Larry Ewing  <lewing@novell.com>
29747         * src/frameworkelement.cpp: Force a full invalidate if the width
29748         or height property because panels include their children in the
29749         bounds compution and will pass the dirty check.
29751         * media.cpp: Implement the Region based rendering for MediaElement
29752         and Image.
29754         * panel.cpp: Unconditionally pass the region to the Children.
29756         * panel.cpp: when rendering children treat panels and other
29757         objects differently.  For containers pass the clipped region
29758         directly, for elements subdivide the region and paint each block.
29759         Renable FindStartingElement with a slightly less expensive
29760         algorithm.
29762         * rect.cpp: don't collapse complicated regions the drawing code is
29763         smarter now.
29765 2007-11-06  Jeffrey Stedfast  <fejj@novell.com>
29767         * font.cpp (TextFont): Fixed to not exit() even when no font could
29768         be loaded from FreeType.
29770 2007-11-06  Chris Toshok  <toshok@ximian.com>
29772         * dependencyobject.cpp (GetObjectType): make this g_critical, and
29773         also print out a stack trace if STACK_DEBUG is enabled.
29775         * dependencyobject.h: stop Emitting the DestroyedEvent from the
29776         dtor.  instead do it from unref before we delete the object.
29778 2007-11-05  Chris Toshok  <toshok@ximian.com>
29780         * rect.h (ToGdkRectangle): quiet countless warnings.
29782 2007-11-05  Larry Ewing  <lewing@novell.com>
29784         Merge most of dirty region branch.  This makes the dirty logic and
29785         rendering code use the new region class to track more complicated
29786         shapes than bounding boxes when processing changed areas.
29788         * media.cpp: switch back to indirect rendering for drawing media
29789         elements until a solution to the boundry clipping can be found.
29791         * panel.cpp: disable FindStartingElement (the buggy) until a more
29792         optimal method can be found.
29794         * dirty.cpp: Use dirty regions.  Process DirtyOpacity first (still
29795         needs to be fixed to order dirty children.
29797 2007-11-03  Chris Toshok  <toshok@ximian.com>
29799         * clock.cpp (ClockGroup::Tick): instead of calling Clock::Stop,
29800         call SkipToFill if we have no active child clocks.
29801         (ClockGroup::Stop): simplify this.
29802         (ClockGroup::Seek): make this look a little more like ::Stop.
29804 2007-11-03  Chris Toshok  <toshok@ximian.com>
29806         * xaml.cpp (repeat_behavior_from_str): add support for the
29807         "ff.ffx" format for repeat behaviors.
29809         * clock.cpp, clock.h: the first sizeable amount of work done in a
29810         while to correct the multitude of tiny bugs in clock handling.
29811         this gets AnimationMatrix.xaml maybe 40% working.  Clean up and
29812         comment Clock::Tick a lot, and remove a bunch of the old
29813         CLOCK_DEBUG spew which was making the code that much more
29814         difficult to look at.
29815         
29816 2007-11-02  Jeffrey Stedfast  <fejj@novell.com>
29818         * font.cpp (TextFontDescription::SetScale): Removed, this hack
29819         wasn't working as well as I'd hoped.
29820         (TextFontDescription::GetScale): Same.
29821         (TextFontDescription::CreatePattern): If the requested font size
29822         is < 41.0 (seems to be the magic number where scaling loses impact
29823         on metrics), use FontSize=41.0 and do proper scaling to get the
29824         actual size we want. My worry was that asking for small font sizes
29825         (smaller than 16.0?) would look ugly with this hack, but that is
29826         surprisingly not true. By always requesting a font size that will
29827         yield the generic font metrics (e.g. not some hacked font size),
29828         we will always be able to wrap identically no matter what FontSize
29829         is requested (so long as the width gets scaled appropriately).
29831         * text.cpp (TextBlock::ComputeTransform): Removed.
29833 2007-11-02  Jeffrey Stedfast  <fejj@novell.com>
29835         * font.cpp (RenderLine): Render glyphs with index 0 too, so that
29836         we render an empty box for glyphs not in the font (just like
29837         Silverlight).
29839         * text.cpp (ComputeTransform): Fixed to use the correct matrix for
29840         getting the scale values.
29842 2007-11-01  Jackson Harper  <jackson@ximian.com>
29844         * trigger.h:
29845         * text.h:
29846         * geometry.h
29847         * transform.h:
29848         * animation.h:
29849         * brush.h:
29850         * panel.h: Add ContentProperty 'attributes'.
29851         * typegen.cs:
29852         * type.cpp|h:  Add content property information to types.  This
29853         will be used by the parser and will allow the parser to drop it's
29854         special type system.
29856 2007-11-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29858         * animation.cpp: AnimationStorage: unregister from registered events on
29859           destruction.
29861 2007-11-01  Jeffrey Stedfast  <fejj@novell.com>
29863         * text.cpp (TextBlock::SetValue): Oops - if we are setting an
29864         empty string on the Text property, then we need to clear out
29865         whatever was there before (if anything).
29867 2007-10-31  Jeffrey Stedfast  <fejj@novell.com>
29869         Fixes for handling lwsp cdata between <Run> elements.
29871         * xaml.cpp (flush_char_data): Reworked a bit. Now takes a 'start'
29872         arg suggesting that we are being called in response to a new
29873         element starting vs an element ending.
29874         (start_element_handler): Pass true as the start arg to
29875         flush_char_data().
29876         (end_element_handler): Pass false as the start arg to
29877         flush_char_data().
29879         * text.cpp (SetValue): Only add a run if the string is non-empty.
29881 2007-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29883         * dependencyobject.cpp: Guard against calling NULL.
29885 2007-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29887         * media.cpp: Redo ASFParser::Malloc to avoid warnings, and make sure the
29888           return value is always checked.
29890 2007-10-31  Chris Toshok  <toshok@ximian.com>
29892         * trigger.cpp (EventTrigger::SetTarget,
29893         EventTrigger::RemoveTarget): use UIElement::LoadedEvent instead of
29894         "Loaded".
29896 2007-10-31  Jackson Harper  <jackson@ximian.com>
29898         * dependencyobject.h|cpp: Give DependencyProperties the ability to
29899         be readonly.
29900         * canvas.cpp:
29901         * animation.cpp: Signature updates
29902         
29903 2007-10-30  Jackson Harper  <jackson@ximian.com>
29905         * xaml.h: Add the error args to the loader.
29906         * xaml.cpp: Make most of our parsing errors match Silverlight.
29908 2007-10-30  Jeffrey Stedfast  <fejj@novell.com>
29910         * font.cpp (Path): Check the path data != NULL before we make any
29911         cairo calls, no sense wasting cycles if we will no-op in the end.
29913 2007-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29915         * media.cpp, media.h: Fix signedness mismatch warning.
29917 2007-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29919         * mplayer.h: Added asf_player field.
29921 2007-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29923         * Makefile.am: Add files in asf/.
29924         * media.cpp, media.h: Read ASF markers from the file. Save the position when
29925           advancing frames. Use the difference between the last position and the
29926           current position to determine if any MarkerReached events are supposed
29927           to be raised.
29928         * mplayer.cpp: Add some error checking/reporting when opening streams.
29929           Register our own demuxer with ffmpeg (defining MOON_DEMUXER is required
29930           to actually use it).
29932 2007-10-26  Jeffrey Stedfast  <fejj@novell.com>
29934         * font.cpp (RenderLine): Split out from TextLayout::Render() and
29935         made to reset the brush at each segment to match Silverlight's
29936         behaviour.
29938 2007-10-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
29940         * debug.cpp: Added print_gdb_trace with an explaining comment.
29941         * debug.h: Make print_stack_trace compile (to nothing) when STACK_DEBUG
29942           isn't defined.
29944 2007-10-25  Jeffrey Stedfast  <fejj@novell.com>
29946         * font.cpp (TextLayout::Render): Set y1 before creating/appending
29947         the path instead of in the segment loop.
29948         (TextLayout::Render): Make underline pos relative to y1 (aka the
29949         baseline) that we calculated above. Makes this easier to
29950         understand.
29952 2007-10-25  Jeffrey Stedfast  <fejj@novell.com>
29954         * font.cpp (TextLayout::Layout): Always calculate segment->width
29955         here.
29956         (TextLayout::Render): Not here.
29958         * text.cpp (Glyphs::GetTransformOrigin): Implemented.
29960 2007-10-25  Jackson Harper  <jackson@ximian.com>
29962         * type.cpp|.in:
29963         * runtime.h|cpp: Add the Error event to the surface.  Raising this
29964         event will cause the plugins onError handler to be invoked, the
29965         default onError handler notifies the user of the error with a
29966         javascript alert.
29968 2007-10-25  Sebastien Pouliot  <sebastien@ximian.com>
29970         * stylus.cpp|h: Keep the semi-working code as a fast path to
29971         render strokes (if no outline color is used and when width ==
29972         height). Added a hack to support OutlineColor.
29974 2007-10-25  Jeffrey Stedfast  <fejj@novell.com>
29976         * brush.cpp (Brush::SetupBrush): Now takes width and height
29977         arguments. Updated all brushes.
29979         * text.cpp (Glyphs::Render): We want to check this->width and
29980         this->height, not the width/height arguments.
29982         * brush.cpp (ImageBrush::SetupBrush): If the image isn't loaded
29983         yet (surface = NULL), return.
29984         (LinearGradientBrush::SetupBrush): Get rid of some of the valgrind
29985         warnings.
29987 2007-10-24  Jeffrey Stedfast  <fejj@novell.com>
29989         * text.cpp (Glyphs::GetSizeForBrush): Implemented.
29991         * font.cpp (TextLayout::Layout): Slight fix for Wrap mode.
29993 2007-10-24  Jackson Harper  <jackson@ximian.com>
29995         * type.cpp.in/h.in: Add some c-style functions for creating
29996         instances.
29998 2007-10-24  Jackson Harper  <jackson@ximian.com>
30000         * typegen.cs:
30001         * type.cpp.in/h.in: Add a create instance call to types.  This
30002         will allow the parser to use our Type object instead of creating
30003         it's own.
30005 2007-10-24  Chris Toshok  <toshok@ximian.com>
30007         * clock.cpp (ManualTimeSource::SetCurrentTime): pass FALSE to
30008         g_main_context_iteration so we don't block if there isn't anything
30009         to do.  also, emit 3 TickEvents to make sure the tick is
30010         propagated down into the animations.
30012 2007-10-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30014         * xaml.cpp: No need to check if the created object is an UIElement before
30015           calling SetSurface anymore.
30016         * visual.h: Update SetSurface to virtual.
30017         * brush.cpp, brush.h: Override SetSurface so that we can forward the call to
30018           our Image object.
30019         * dependencyobject.h: Add virtual Set/GetSurface to DependencyObject (here
30020           the methods do nothing, the surface is still stored in Visual, but this
30021           allows classes that do not inherit from Visual to correctly set the
30022           surface on their members which do inherit from Visual).
30024 2007-10-24  Jeffrey Stedfast  <fejj@novell.com>
30026         * uri.cpp (Uri::Parse): Treat uri's w/o a protocol as file uri's.
30028 2007-10-23  Jeffrey Stedfast  <fejj@novell.com>
30030         * text.cpp (TextBlock::ComputeTransform): If the scale has
30031         changed, set dirty = true so that we recalculate the layout.
30033         * mplayer.cpp (audio_play): Instead of using the SET_VOLUME()
30034         macro, just do it w/o so that we hush the compiler warning.
30036 2007-10-23  Chris Toshok  <toshok@ximian.com>
30038         * clock.cpp (Clock::GetBeginTime): stop treating the BeginTime of
30039         a clock in absolute terms.  instead, offset it from the current
30040         time of the parent clock (or time manager).
30041         (Clock::Begin): clamp progress to 1.0
30042         (SMOOTHING_ALPHA): switch this to 0.30 to see if that helps things
30043         by making it less sensitive to immediate changes.
30045 2007-10-23  Chris Toshok  <toshok@ximian.com>
30047         * mplayer.cpp (Open): if RUNTIME_INIT_AUDIO_DISABLE, don't use
30048         audio (so we sync to the clock).
30050         * runtime.h: add RUNTIME_INIT_AUDIO_DISABLE.
30052 2007-10-23  Chris Toshok  <toshok@ximian.com>
30054         * clock.cpp (ManualTimeSource::SetCurrentTime): call
30055         g_main_context_iteration as a stopgap to make video elements show
30056         up.
30057         (TimeManager::TimeManager): remove spew.
30058         (TimeManager::Tick): re-enable the clock throttling.  oops.
30060 2007-10-23  Larry Ewing  <lewing@novell.com>
30062         * src/runtime.cpp: clear the background in more cases.
30064 2007-10-23  Larry Ewing  <lewing@novell.com>
30066         * src/runtime.cpp: make the eventbox windowless and remove the
30067         stale event code.  Let gtk do the clearing.
30069 2007-10-23  Jeffrey Stedfast  <fejj@novell.com>
30071         * mplayer.cpp (MediaPlayer::Open): Re-enable audio :)
30072         (MediaPlayer::LoadVideoFrame): Keep decoding video until we find
30073         the correct frame rather than just rendering the first frame we
30074         find.
30076 2007-10-23  Chris Toshok  <toshok@ximian.com>
30078         * mplayer.cpp: replace all occurences of av_gettime with
30079         TimeManager::Instance()->GetCurrentTimeUsec().
30081         * runtime.cpp (overrides): add the "timesource=manual" OVERRIDE
30082         thingy.
30083         (render_cb): re-enable the fps on the console.  oops.
30085         * runtime.h (RuntimeInitFlags): add
30086         RUNTIME_INIT_TIMESOURCE_MANUAL.
30088         * type.h.in, type.cpp.in: remove BASE (should have happened on my
30089         last commit), and add in the TIMESOURCE's, and TIMESOURCE's "Tick"
30090         event.
30092         * type.h, type.cpp: sync to the .in files.
30094         * clock.h, clock.cpp: add the idea of a TimeSource to the
30095         TimeManager.  Two are written - SystemTimeSource, which uses the
30096         gtk timeout, and ManualTimeSource, which allows code to set what
30097         the global time should be.  Also, add GetCurrentTimeUsec() for use
30098         by mplayer, so we can switch it away from av_gettime and make it
30099         possible for video to sync to the ManualTimeSource.
30101 2007-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30103         * runtime.cpp: Base -> EventObject changes when OBJECT_TRACKING is defined.
30105 2007-10-23  Larry Ewing  <lewing@novell.com>
30107         * runtime.cpp: make sure we unref the surface.
30109 2007-10-23  Larry Ewing  <lewing@novell.com>
30111         * runtime.cpp: avoid making gdk calls that pull in the platform
30112         cairo.
30114 2007-10-22  Jeffrey Stedfast  <fejj@novell.com>
30116         * text.cpp: Don't allow Pango rendering if disabled at
30117         configure-time.
30118         (TextBlock::ComputeTransform): Moved the scale logic here from
30119         OnPropertyChanged() so that we catch all transform changes.
30121         * uielement.h: Made ComputeTransform() virtual.
30123 2007-10-22  Chris Toshok  <toshok@ximian.com>
30125         * clock.cpp (TimeManager::Shutdown): don't cast to Base anymore..
30126         we can just cast to Clock here.
30128         * dependencyobject.h, dependencyobject.cpp: remove the Base class,
30129         and make roll EventObject and Base into one class (still called
30130         EventObject).
30132 2007-10-20  Sebastien Pouliot  <sebastien@ximian.com>
30134         * runtime.h: Add gtk.h (since it depended on stylus.h to get it)
30135         * stylus.cpp|h: Add some missing functions. Rendering changes 
30136         (not active, work in progress).
30138 2007-10-18  Chris Toshok  <toshok@ximian.com>
30140         * dependencyobject.h: fix comment.
30142         * animation.h, animation.cpp: use the
30143         Clock::CurrentStateInvalidated event to reset the property value
30144         to baseValue instead of overriding the Clock::Stop method.  This
30145         fixes clocks with FillBehavior="Stop" instead of storyboard with
30146         FillBehavior="Fill".
30148         * clock.cpp (Clock::Tick): remove a stupid block of code that was
30149         causing clocks which were Filling to spontaneously end up in their
30150         Active state again.
30152 2007-10-18  Sebastien Pouliot  <sebastien@ximian.com>
30154         * geometry.cpp: New code to handle arc segments. No known issues
30155         (except the handling of near zero values which doesn't seems to
30156         be constant).
30157         * libmoon.h, Makefile.am: Remove reference to rsvg.h
30158         * rsvg.cpp|h: Remove from SVN.
30160 2007-10-17  Andrew Jorgensen  <ajorgensen@novell.com>
30162         * cairo-embed.h, pixman-embed.h: Added symbol renaming headers
30163         based on the ones from libgdiplus.
30165 2007-10-17  Chris Toshok  <toshok@ximian.com>
30167         * xaml.cpp (XNamespace::SetAttribute): make sure to add the newly
30168         created managed dob to the created_elements list so it gets
30169         unrefed properly.
30170         (XamlLoader::XamlLoader): use ->ref() instead of base_ref().
30171         (XamlLoader::~XamlLoader): use ->unref() instead of base_unref().
30173 2007-10-17  Chris Toshok  <toshok@ximian.com>
30175         * Makefile.am (demo_LDADD): add MOON_PROG_LIBS.
30176         (sizes_LDADD): same.
30178 2007-10-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30180         * dependencyobject.h: Add a GET_OBJ_ID macro that resolves to -1 if
30181           OBJECT_TRACKING isn't defined.
30182         * runtime.h: Enable the contextual downloader warning again.
30183         * dependencyobject.cpp: Fix build when DEBUG is defined.
30185 2007-10-16  Jeffrey Stedfast  <fejj@gnome.org>
30187         * text.cpp (OnPropertyChanged): When intercepting non-TextBlock
30188         properties changing value, don't fall thru to the rest of the
30189         checks (as then we'd re-emit it to sublisteners which isn't what
30190         we want I don't think). Also, don't change the font scale unless
30191         it's >= 1.0 (e.g. don't down-scale). Fixes an infinite loop.
30193 2007-10-16  Jeffrey Stedfast  <fejj@novell.com>
30195         * text.cpp (OnPropertyChanged): Listen for RenderTransformProperty
30196         changes and apply the y-scale to the font so that we can more
30197         accurately path the font glyphs at the scale we intend to render
30198         them at.
30200         * font.cpp (TextFont): Cache the scale here.
30201         (Kerning): Apply the scale.
30202         (Descender): Here too.
30203         (Ascender): And here.
30204         (Height): Same.
30205         (GetGlyphInfo): Create and apply the scale/invert matrix. Also
30206         scale the glyph metrics.
30207         (UnderlinePosition): Apply the scale.
30208         (UnderlineThickness): Same here.
30209         (TextFontDescription): Added a scale, default to 1.0
30210         (CreatePattern): Set the scale on the pattern.
30211         (UnsetFields): When unsetting values, restore them to their
30212         default values.
30213         (Merge): Merge the scale.
30214         (GetScale): New method.
30215         (SetScale): New method.
30217 2007-10-16  Chris Toshok  <toshok@ximian.com>
30219         * dependencyobject.cpp (detach_depobj_values): call
30220         obj->SetParent(NULL) here as well, so we don't reference a
30221         destroyed parent.
30223         * runtime.cpp (Surface::Surface): use Surface::timeline instead of
30224         a local variable.
30225         (Surface::~Surface): make sure to remove the surface's clock_group
30226         from the time manager.  Also, unref the timeline we create in the
30227         ctor.
30228         (runtime_shutdown): reimplement the oldest 10 alive object
30229         printing stuff in the face of using a hashtable.
30231         * runtime.h: add Surface::timeline, so we can clean it up in
30232         ~Surface.
30234         * dependencyobject.h (Base::) use a hash table to track alive
30235         objects instead of a list.  this speeds up things immensely.
30237         * clock.cpp (ClockGroup::~ClockGroup): call SetParent(NULL) on our
30238         children so any further GetParent() calls won't return a destroyed
30239         object.
30241         * animation.cpp (Storyboard::~Storyboard): guard against a crash
30242         when a parent clock is freed before the child clock.
30244         * text.cpp (TextBlock::TextBlock): plug a couple memory leaks.
30246 2007-10-15  Chris Toshok  <toshok@ximian.com>
30248         * animation.[h,cpp]: remove the strong reference from
30249         AnimationStorage to its target object, and instead use the
30250         EventObject::DestroyEvent to implement a weak reference.  See the
30251         TODO for a blurb about generalizing this.
30253         * typegen.cs (GenerateTypeCpp): remove the special case code that
30254         makes INVALID the parent of DEPENDENCY_OBJECT - we need it to have
30255         EVENTOBJECT as the parent for the DestroyedEvent to line up
30256         properly in the event tables.
30258         * type.cpp.in, type.cpp (types_init_register_events): register the
30259         Destroyed event.
30261         * dependencyobject.[h,cpp]: add EventObject::DestroyedEvent,
30262         emitted just before we clean up the EventObject's event list.
30264 2007-10-15  Jeffrey Stedfast  <fejj@novell.com>
30266         * text.cpp (Layout): I think I finally figured out the scaling to
30267         apply to the units provided in the Indices property and also
30268         discovered that the Advance is not applied at the uOffset, it is
30269         applied independently of the uOffset.
30270         (Render): Same fixes as in Layout().
30272 2007-10-13  Chris Toshok  <toshok@ximian.com>
30274         * animation.cpp (balf): fix bug 325175 by not taking the square
30275         root of a negative number (fixes the flashing in the credits for
30276         Monotone.)  Also clean up this code so that we're not using
30277         globals to communicate parameters (through Simpson) between balf
30278         and BezierArcLength, and lower the tolerance (I doubt we need
30279         *that* much precision).
30281 2007-10-12  Chris Toshok  <toshok@ximian.com>
30283         * control.[h,cpp], brush.[h,cpp], text.[h,cpp], geometry.[h,cpp],
30284         dependencyobject.[h,cpp], shape.[h,cpp], animation.[h,cpp],
30285         transform.[h,cpp]: add an extra parameter to OnSubPropertyChanged,
30286         which gives the actual object whose property changed.  Also, in a
30287         few instances fix the NotifyAttachersOnPropertyChanged call that
30288         some classes used to not use the subprop, but the prop.  The
30289         subprop doesn't refer to "this" in those instances, but to @obj.
30290         @prop refers to "this".
30292         * collection.[h,cpp]: use the above change to correctly support
30293         the DependencyObject parameter of OnCollectionChanged (when the
30294         change type is ItemChanged).
30295         
30296         * uielement.[h,cpp], panel.[h,cpp]: use the above two changes to
30297         move the ZIndex property support from UIElement to Panel, which
30298         makes more logical sense (and is likely the reason MS removed the
30299         property from UIElement in 1.1) -- ZIndex is about what happens to
30300         this UIElement in relation to its siblings.
30301         
30302 2007-10-12  Sebastien Pouliot  <sebastien@ximian.com>
30304         * shape.cpp: Only set miter limit if line join is set to miter.
30306 2007-10-12  Chris Toshok  <toshok@ximian.com>
30308         * collection.cpp: move the panel logic away from VisualCollection.
30309         It belongs in Panel::OnCollectionChanged.
30311         * panel.cpp: flesh out Panel::OnCollectionChanged, making it do
30312         everything the VisualCollection code used to do on its behalf.
30314         * uielement.h, uielement.cpp: introduce a new field for use with
30315         the dirty code - force_redraw_of_new_bounds.  Basically, we set
30316         the field according to the parameter passed to UpdateBounds.
30318         * dirty.cpp (UpdateBounds): force an invalidate if
30319         el->force_redraw_of_new_bounds is set.
30321 2007-10-12  Chris Toshok  <toshok@ximian.com>
30323         * clock.h, clock.cpp: add some Timeout functions (AddTimeout,
30324         RemoveTimeout) which wrap the glib timeout calls we were making.
30325         This lets us keep track of active timeout ids and remove them all
30326         when the TimeManager shuts down.  So, if we leak MediaElements
30327         (which seems to be happening in TopBanana), we don't crash.
30329         * mplayer.cpp: use the new TimeManager timeout call instead of the
30330         glib mainloop directly.
30332         * media.cpp: same.
30333         
30334 2007-10-12  Jeffrey Stedfast  <fejj@novell.com>
30336         * downloader.cpp (downloader_init): Default the DownloadProgress
30337         to 0.0.
30339 2007-10-12  Jackson Harper  <jackson@ximian.com>
30341         * downloader.h: Add an access to the downloader state.  I need
30342         this in the plugin.
30344 2007-10-12  Jb Evain  <jbevain@novell.com>
30346         * brush.cpp|h: add image_brush_set_source.
30348 2007-10-11  Jeffrey Stedfast  <fejj@novell.com>
30350         * mplayer.cpp (convert_to_rgb): Worked around an swscaler crash
30351         where it doesn't handle J-Type picture frames.
30353 2007-10-11  Sebastien Pouliot  <sebastien@ximian.com>
30355         * panel.cpp|h: Split Render into Render and RenderChildren, so 
30356         the later can be overriden in InkPresenter.
30357         * stylus.cpp|h: A quick (see FIXME) implementation to render 
30358         ink found in some xaml files.
30360 2007-10-11  Jeffrey Stedfast  <fejj@novell.com>
30362         * mplayer.cpp: Updated to use the new Queue class.
30363         (AdvanceFrame): Accessing the queue directly as a linked list
30364         allows us to simplify the loop a little so that we don't have to
30365         keep a reference to the previous packet's decoded frame.
30367         * list.cpp: Added a new Queue class which will replace GAsyncQueue
30368         in mplayer.cpp.
30370 2007-10-11  Jeffrey Stedfast  <fejj@novell.com>
30372         * mplayer.cpp: Added ctors/dtors for Audio and Video structs.
30373         (AdvanceFrame): Keep a reference to the previous frame in case we
30374         reach the end of the queue.
30376 2007-10-11  Jb Evain  <jbevain@novell.com>
30378         * dependencyobject.cpp|h: add dependency_object_set_name.
30380         * media.cpp|h: add media_attribute_get_value and
30381         media_attribute_set_value
30383         * playlist.cpp|h: populate MediaAttributeCollection when
30384         a playlist entry is opened.
30386 2007-10-11  Larry Ewing  <lewing@novell.com>
30388         * dirty.cpp, uielement.cpp|h: Use gdk_regions to tract dirty
30389         areas... have more fun in general.
30390         
30391         * src/rect.h: replace Floor function with RoundOut function.
30392         * panel.cpp, dirty.cpp: use RoundOut where appropriate.  Fixes
30393         clipping issue in sprawl.
30395 2007-10-11  Sebastien Pouliot  <sebastien@ximian.com>
30397         * xaml.cpp: Let InkPresenter handle childs like a Canvas (from 
30398         which it inherits)
30400 2007-10-11  Jb Evain  <jbevain@novell.com>
30402         * playlist.cpp: replace C++ casts to plain casts.
30404 2007-10-11  Jb Evain  <jbevain@novell.com>
30406         * collection.cpp: replace dynamic_casts with plain casts
30407         as per Miguel suggestion.
30409 2007-10-11  Jb Evain  <jbevain@novell.com>
30411         * collection.cpp|h: add, implement and expose the
30412         MediaAttributeCollection::GetItemByName method.
30414 2007-10-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30416         * downloader.cpp, downloader.h: Fix some const char/char mismatch warnings.
30418 2007-10-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30420         * text.h, animation.h, text.cpp: Fix some const char/char mismatch warnings.
30421         * dependencyobject.h, dependencyobject.cpp, animation.cpp: Remove some const
30422           char/char mismatch warnings.
30423         * visual.cpp: Fix no newline warning.
30424         * runtime.cpp: Fix a initialization warning.
30425         * demo.cpp: Remove unused variable.
30427 2007-10-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30429         * dependencyobject.cpp: base_unref_delayed: do nothing if base is NULL,
30430           matches base_unref behaviour.
30431         * dependencyobject.h: Use g_atomic_int* to make ref counting atomic
30432           operations.
30434 2007-10-10  Chris Toshok  <toshok@ximian.com>
30436         * runtime.cpp (runtime_shutdown): explicitly drain all remaining
30437         pending managed unrefs.
30439         * dependencyobject.cpp: remove the Base::ref/unref implementations
30440         from here.  Add the threadsafe base_unref_delayed code, as well as
30441         code to manage a tick call to free up the instances on the next
30442         clock tick.  Also provide an external api (drain_unrefs -- bad
30443         name, fix me plz k thx) so that runtime.cpp can explicitly unref
30444         everything when we shutdown (if they haven't already been dealt
30445         with.)
30447         * dependencyobject.h: clean up the OBJECT_TRACKING ifdefs so that
30448         we don't have 2 implementations of all these methods.  Instead,
30449         just ifdef the relevant portions of the methods, and keep them in
30450         dependencyobject.h.  Also, add prototypes for drain_unrefs and
30451         base_unref_delayed, which is called from managed code.
30453         * collection.h, collection.cpp: make Clear take an optional
30454         "emit_event" argument (default = true.)  Call Clear instead of
30455         list->Clear(true) in our dtor so we clean up the namespaces and
30456         Detach properly.
30458         * debug.cpp: use an extern "C" block. looks nicer.
30460 2007-10-10  Sebastien Pouliot  <sebastien@ximian.com>
30462         * brush.cpp: Handle GradientStop with negative offset like 
30463         Silverlight (seems to) do.
30465 2007-10-10  Chris Toshok  <toshok@ximian.com>
30467         * panel.cpp (Panel::~Panel): no need to clear our Children
30468         collection.  the normal dtor stuff will do that for us.
30470 2007-10-10  Larry Ewing  <lewing@novell.com>
30472         * media.cpp: Fill with the element extents don't just paint the
30473         surface because if the stretch is specified we may end up painting
30474         outside the proper area.
30476 2007-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30478         * media.cpp: When updating the MediaElement's progress, get the Downloader's
30479           DownloadProgressProperty.
30481 2007-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30483         * visual.cpp, visual.h: Added visual_set_surface, and guard against
30484           overwriting a set surface with null.
30486 2007-10-10  Jackson Harper  <jackson@ximian.com>
30488         * collection.cpp: Set the surface when adding a visual element.
30490 2007-10-10  Jackson Harper  <jackson@ximian.com>
30492         * shape.cpp: We need to do something when line properties are
30493         changed. Fixes test-animation-line.xaml
30495 2007-10-10  Jackson Harper  <jackson@ximian.com>
30497         * xaml.cpp: Don't allow the same property to be set twice.
30499 2007-10-09  Jackson Harper  <jackson@ximian.com>
30501         * xaml.cpp: When we create custom elements we also need to set the
30502         surface on them and mark them for cleanup.
30504 2007-10-09  Jackson Harper  <jackson@ximian.com>
30506         * xaml.cpp: When we are creating objects from a string, set the
30507         encoding to utf8 so that expat doesn't try to determine the
30508         encoding from the ?xml declaration (which will be incorrect
30509         because the string is in utf8).
30511 2007-10-09  Chris Toshok  <toshok@ximian.com>
30513         * clock.cpp (ClockGroup::Stop): If the clock group has children we
30514         depend on stopping them first.  But if the clock group is without
30515         children, chain up to Clock::Stop here.
30517 2007-10-09  Jb Evain  <jbevain@novell.com>
30519         * uielement.h: define new methods RenderClipPath and
30520         IntersectBoundsWithClipPath.
30521         * uielement.cpp: implement them.
30522         * panel.cpp, shape.cpp, media.cpp: use them.
30524 2007-10-09  Chris Toshok  <toshok@ximian.com>
30526         * clock.cpp, trigger.cpp, uielement.cpp, geometry.cpp, shape.cpp,
30527         frameworkelement.cpp, transform.cpp, media.cpp, animation.cpp,
30528         brush.cpp, text.cpp: s/Attachee/Attacher.
30530         * dependencyobject.h: couple of Detach changes: 1) Add a DetachAll
30531         call that is used at dtor time to call Detach on all
30532         DependencyObject-subclassed Values, and 2) make NULL available in
30533         detach as a wildcard - passing NULL for the property detaches all
30534         properties that the current object might be watching on.
30536         Also, correct a longstanding problem in terminology/api.  if A's
30537         code calls B->Attach (..., this), then A is the Attacher, not the
30538         Attachee.  Basically s/Attachee/Attacher in all places,
30539         everywhere.
30541         * dependencyobject.cpp: same changes as above.  Also, change the
30542         current_values hash table to key off the DependencyProperty, not
30543         off the DependencyProperty name.  This allows us to use a direct
30544         hash, as opposed to a string hash.
30545         
30546         * collection.cpp (dtor): make sure sure to detach from all the
30547         list elements before we clear the list.
30549 2007-10-09  Jeffrey Stedfast  <fejj@novell.com>
30551         * font.cpp (Layout): Only break words on ASCII lwsp, we should not
30552         break on nbsp's for example.
30554 2007-10-09  Jackson Harper  <jackson@ximian.com>
30556         * xaml.cpp: Make sure the Surface gets set on custom created
30557         UIElements.  Also add them to the created list, so they get freed.
30559 2007-10-09  Jackson Harper  <jackson@ximian.com>
30561         * control.cpp: Since controls are UIElements we need to make sure
30562         their surface is set when we create them from XAML.
30564 2007-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30566         * dependencyobject.cpp: resolve_property_path: Add a nullcheck.
30568 2007-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30570         * debug.cpp, debug.h: Conditionally compile support for managed stack
30571           frames.
30573         * runtime.cpp: add more debug code.
30575 2007-10-08  Jeffrey Stedfast  <fejj@novell.com>
30577         * text.cpp (OnPropertyChanged): We may need to relayout even if
30578         the wrapping is set to NoWrap.
30580 2007-10-08  Zoltan Varga  <vargaz@gmail.com>
30582         * text.cpp (OnPropertyChanged): Do a relayout if the Width property
30583         changes and text wrapping is enabled.
30585 2007-10-08  Jeffrey Stedfast  <fejj@novell.com>
30587         * mplayer.cpp (Open): If the media has video, load the first video
30588         frame.
30589         (Seek): Same.
30590         (AdvanceFrame): Fixed to "end" properly.
30592         * media.cpp: Don't manually call DisplayFrame() anymore.
30594 2007-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30596         * xaml.cpp: Set the surface of newly created objects (where applicable).
30597         * canvas.h, uielement.h, canvas.cpp: Move the surface field to Visual.
30598         * playlist.cpp, media.cpp, text.cpp: Create the downloader using Surface'
30599           brand new CreateDownloader method.
30600         * visual.h: Added a surface field, complete with setters and getters.
30601         * downloader.cpp, downloader.h: Add a context field.
30602         * runtime.h: Add a downloader_context field, and CreateDownloader methods.
30603         * runtime.cpp: Add a downloader_context field.
30605 2007-10-09  Larry Ewing  <lewing@novell.com>
30607         * media.cpp: add clipping to shape::DoDraw and to the bounds
30608         computations.
30610 2007-10-08  Larry Ewing  <lewing@novell.com>
30612         * media.cpp:
30613         * panel.cpp: intersect the bounds with the clip path to
30614         optimize the invalidated region.
30616         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
30617         with a NULL.
30619 2007-10-08  Larry Ewing  <lewing@novell.com>
30621         * media.cpp:
30622         * panel.cpp: intersect the bounds with the clip path to
30623         optimize the invalidated region.
30625         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
30626         with a NULL.
30628 2007-10-08  Larry Ewing  <lewing@novell.com>
30630         * media.cpp:
30631         * panel.cpp: intersect the bounds with the clip path to
30632         optimize the invalidated region.
30634         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
30635         with a NULL.
30637 2007-10-08  Larry Ewing  <lewing@novell.com>
30639         * media.cpp:
30640         * panel.cpp: intersect the bounds with the clip path to
30641         optimize the invalidated region.
30643         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
30644         with a NULL.
30646 2007-10-08  Larry Ewing  <lewing@novell.com>
30648         * media.cpp:
30649         * panel.cpp: intersect the bounds with the clip path to
30650         optimize the invalidated region.
30652         * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
30653         with a NULL.
30655 2007-10-08  Larry Ewing  <lewing@novell.com>
30657         * runtime.cpp: change previous logic to drop the alpha
30658         completely here until more testing can be done.
30660 2007-10-08  Larry Ewing  <lewing@novell.com>
30662         * runtime.cpp: draw the background color blended over white.
30664 2007-10-08  Larry Ewing  <lewing@novell.com>
30666         * media.cpp: render clip paths on media elements.
30668 2007-10-07  Larry Ewing  <lewing@novell.com>
30670         * xaml.cpp:
30671         * rect.cpp:
30672         * point.cpp:
30673         * array.cpp: use g_utf8_next_char in some places to start making
30674         the parsers more utf8 safe.  Make rect/point_from_str more robust
30675         against separator characters
30677 2007-10-07  Chris Toshok  <toshok@ximian.com>
30679         * clock.cpp (Clock::Tick): make sure we're reversed before
30680         switching to Fill if the clock is at 0 (and make sure we're not
30681         reversed before switching to Fill on the other end of the
30682         timespan).  Some animations were skipping directly to fill without
30683         ever running.
30684         (ClockGroup::Tick): don't Tick a child clock if it's about to
30685         Stop.  the new tick might cause it to fill.. this needs work
30686         still.
30688 2007-10-06  Jb Evain  <jbevain@novell.com>
30690         * media.cpp (Image::Render): Deal with clipping.
30692 2007-10-05  Chris Toshok  <toshok@ximian.com>
30694         * animation.cpp (KeyFrameComparer): fix airlines (and probably a
30695         host of other keyframe usage besides).  The problem was that this
30696         function was treating its args as keyframe*'s, when in actuality
30697         they were keyframe**'s.  that explains the intermittent nature of
30698         the bug, as well as the faulty sorting I was experiencing earlier.
30700         * clock.cpp (TimeManager::Tick): reinstate the throttling, yay.
30702 2007-10-05  Chris Toshok  <toshok@ximian.com>
30704         * clock.cpp (TimeManager::Tick): I have no idea how this is
30705         possible, but the throttle code is *completely* screwing up the
30706         Airlines demo animations.
30708 2007-10-05  Jackson Harper  <jackson@ximian.com>
30710         * control.cpp: need to pass this down.  Fixes dragging controls in
30711         top banana.
30713 2007-10-05  Jeffrey Stedfast  <fejj@gnome.org>
30715         * media.cpp (DownloaderComplete): Call mplayer->DisplayFrame() in
30716         the paused case.
30717         (Stop): Here too.
30718         (SetValue): And here too after a Seek() (altho it won't work if
30719         the media is paused).
30721         * mplayer.cpp (AdvanceFrame): Introduced a new bool variable,
30722         update, which is true if any avcodec_decode_video() sets redraw to
30723         true.
30724         (DisplayFrame): New method largely based on JB's work to load the
30725         current video frame into the mplayer surface.
30727 2007-10-05  Jb Evain  <jbevain@novell.com>
30729         * media.cpp|h, playlist.cpp|h: Don't open the first entry
30730         when a playlist entry has been stopped before switching to
30731         the next one.
30733 2007-10-04  Chris Toshok  <toshok@ximian.com>
30735         * clock.cpp: fix a couple of compilation warnings, and tighten up
30736         the list_clocks output.
30738 2007-10-04  Jeffrey Stedfast  <fejj@gnome.org>
30740         * text.cpp (SetIndices): Use g_ascii_strtod() instead of strtod()
30741         since it is not locale dependant.
30743         * rect.cpp (rect_from_str): Same.
30745         * point.cpp (point_from_str): Same.
30747         * xaml.cpp (get_point): Fixed to update *in properly on success.
30749 2007-10-05  Jb Evain  <jbevain@novell.com>
30751         * media.cpp: correctly advertise 'Opening' state of MediaElement.
30753 2007-10-04  Jeffrey Stedfast  <fejj@novell.com>
30755         * xaml.cpp: (more_points_available): Simplified by looping while
30756         isspace. Also, update our input pointer if we have to scan over
30757         lwsp.
30758         (get_point): Now returns bool based on whether it manages to
30759         extract a point or not.
30760         (geometry_from_str): Updated.
30762 2007-10-04  Jackson Harper  <jackson@ximian.com>
30764         * xaml.cpp: Points after the initial two line points should
30765         actually create new line segments, not a polyline, this fixes
30766         relative points on multiple lines.
30768 2007-10-04  Jeffrey Stedfast  <fejj@novell.com>
30770         * text.cpp (TextBlock): Can't use GetValue() here yet as stuff
30771         hasn't completely been initialized.
30772         (Glyphs::SetIndices): Do not do scaling here, this seems to be
30773         font size dependant.
30775         * shape.cpp (DoDraw): Use 'delete []' to free dmul.
30777 2007-10-04  Jackson Harper  <jackson@ximian.com>
30779         * xaml.cpp: Handle repeated bezier segments properly.
30781 2007-10-04  Chris Toshok  <toshok@ximian.com>
30783         * clock.cpp: lots of little changes.  fixes clock16.xaml, and
30784         therefor the score animation in dr.popper goes away properly.
30785         also fixes a few other issues with FillBehavior (checked by our
30786         clock xaml tests.)
30788 2007-10-04  Jeffrey Stedfast  <fejj@gnome.org>
30790         * text.cpp (Glyphs::.ctor): We no longer have a TextFont member
30791         variable.
30792         (Layout): Use a local TextFont variable.
30793         (Render): Same.
30794         (text_init): Always call font_init() as Glyphs use it even when
30795         text=pango is specified.
30797 2007-10-04  Sebastien Pouliot  <sebastien@ximian.com>
30799         * shape.cpp|h: Shapes that uses their Width and Height must use
30800         them for brush size. Fix brush rendering when used with 
30801         UIElement.RenderTransform property.
30803 2007-10-03  Chris Toshok  <toshok@ximian.com>
30805         * text.cpp: make Glyphs usable even when text=pango.  "usable"
30806         means "don't crash" :)
30808 2007-10-03  Chris Toshok  <toshok@ximian.com>
30810         * uielement.h: rename UseAA() to EnableAntiAlias().  it's
30811         arguably a better name, and more importantly it's the name that
30812         media.cpp/h changed it too, which broke the AA hack used in
30813         dirty.cpp.
30815         * dirty.cpp (process_dirty_elements): rename UseAA() to
30816         EnableAntiAlias().
30818 2007-10-03  Sebastien Pouliot  <sebastien@ximian.com>
30820         * array.cpp: Move double array allocations back to new/delete.
30822 2007-10-03  Jeffrey Stedfast  <fejj@novell.com>
30824         * font.cpp (EmSize): Removed, not needed.
30825         (GetGlyphInfo): Commented out vertical glyph metrics, saves a fair
30826         bit of memory that we aren't using.
30828         * text.cpp (TextBlock::SetFontSource): Implemented.
30829         (text_init): Default StyleSimulations to None.
30831 2007-10-03  Sebastien Pouliot  <sebastien@ximian.com>
30833         * brush.cpp|h: SL and Cairo defaults to different values (end 
30834         color versus start color) when a gradiant is restricted to a 
30835         single color (e.g. if the start and end points of a linear 
30836         gradient are identical).
30838 2007-10-03  Jeffrey Stedfast  <fejj@novell.com>
30840         * text.cpp: Implemented the Glyphs element.
30842         * font.cpp: Made GlyphMetrics and GlyphInfo structs public for use
30843         with the the Glyphs element implemented in text.cpp.
30844         (GetGlyphInfo): Fixes to allow loading of the index=0 glyph.
30845         (GetGlyphInfoByIndex): New method.
30846         (CreatePattern): If the filename is specified, don't call
30847         FcFontMatch(), simply return the constructed pattern.
30849 2007-10-02  Chris Toshok  <toshok@ximian.com>
30851         * clock.h, clock.cpp: remove TimeManager::current_fps, it's
30852         unused.
30854 2007-10-02  Chris Toshok  <toshok@ximian.com>
30856         * runtime.cpp (Surface::UpdateFullScreen): just call
30857         gtk_window_fullscreen instead of setting decorations/above
30858         manually.  this puts us on top of the panel.
30860 2007-10-02  Chris Toshok  <toshok@ximian.com>
30862         * clock.h, clock.cpp: rip out the old stupid throttling code and
30863         replace it with an exponential moving average of the delays.
30865 2007-10-02  Chris Toshok  <toshok@ximian.com>
30867         * clock.h, clock.cpp: add Timeline::Get/SetSpeedRatio methods, and
30868         use them to make test/xaml/clock8.xaml work.
30870 2007-10-02  Larry Ewing  <lewing@novell.com>
30872         * shape.cpp (Path::ComputeBounds): use the specified width/height
30873         if stretch is != StretchNone.  Fixes rendering issues with halo
30874         and several other sites.
30876 2007-10-02  Chris Toshok  <toshok@ximian.com>
30878         * animation.h, animation.cpp: override Stop() on AnimationClocks
30879         so we can reset the property value to the baseValue stored in our
30880         AnimationStorage.
30882         * clock.h, clock.cpp: fix the starting of stopped clockgroups when
30883         there are active children (fixes the storyboards running for 1
30884         tick then stopping).  Add more convoluted code in order to get the
30885         expected behavior when FillBehavior=Stop on a storyboard.
30887 2007-10-02  Chris Toshok  <toshok@ximian.com>
30889         * clock.h, clock.cpp: a few changes.  quit with all the delay
30890         computation in the throttling code, and just deal with fps until
30891         we're ready to switch to delays.  it simplifies everything a
30892         bunch.  Also, narrow the type for Clock::Get/SetParent to
30893         ClockGroup.  Add some rudimentary code for printing out the state
30894         of all clocks (use TimeManager::Instance()->ListClocks() or
30895         time_manager_list_clocks()).  Also, remove the TimeManager::Tick
30896         code which started clocks.  This commit changes the way
30897         storyboards are registered, so the only things in the
30898         TimeManager's list should be the per-surface ClockGroups, which
30899         are started in Storyboard::Begin (if they aren't already running.)
30901         * collection.cpp (VisualCollection::Add): this is a bug waiting to
30902         happen.  Call VisualUpdate (thereby setting the child's parent and
30903         initializing the transforms/opacity) before emitting Loaded on the
30904         child.
30906         * animation.h, animation.cpp: Storyboards now add their clocks to
30907         the per-surface ClockGroup.  This involves some groveling to find
30908         the surface, but it's nothing we haven't seen before.  There's no
30909         direct TimeManager calls here now - stopping the surface's
30910         ClockGroup will stop all animations running on it.
30912         * runtime.h, runtime.cpp: add the per-surface ClockGroup.  all
30913         storyboards attach to this, and this attaches to the TimeManager.
30914         
30915 2007-10-02  Jackson Harper  <jackson@ximian.com>
30917         * media.cpp: Some default values to avoid nullref exceptions.
30919 2007-10-02  Sebastien Pouliot  <sebastien@ximian.com>
30921         * xaml.cpp: Add support for 'F' in the PML parser to enable setting
30922         the FillMode of Geometry objects. Removed default value set as it is 
30923         identical to the default property value.
30925 2007-10-02  Jb Evain  <jbevain@novell.com>
30927         * playlist.cpp|h: implemented start time for playlist entries.
30929 2007-10-02  Jb Evain  <jbevain@novell.com>
30931         * playlist.cpp|h, media.cpp|h: rename MediaSource::OpenSource to OpenInternal.
30933 2007-10-02  Larry Ewing  <lewing@novell.com>
30935         * uielement.cpp (UIElement::Invalidate): Only invalidate if
30936         opacity is > 0.
30937         * dirty.cpp (process_dirty_elements): be sure to invalidate before
30938         and after the opacity change.
30940 2007-10-02  Jb Evain  <jbevain@novell.com>
30942         * playlist.cpp: deal with non lowercase file exts.
30944 2007-10-01  Jeffrey Stedfast  <fejj@novell.com>
30946         * font.cpp: Reduced Glyph table memory usage.
30948 2007-10-01  Chris Toshok  <toshok@ximian.com>
30950         * dirty.cpp (process_dirty_elements): remove the special if checks
30951         which kept the ComputeBounds/Invalidate code from running on the
30952         toplevel surface.  Canvas::ComputeBounds() does the right thing
30953         for the toplevel surface, so we just trust it.  fixes invalidation
30954         of root canvases.
30956         * panel.cpp (OnPropertyChanged): remove the ComputeBounds call.
30957         (OnSubPropertyChanged): same.
30959 2007-10-01  Sebastien Pouliot  <sebastien@ximian.com>
30961         * brush.cpp|h: Change SetupBrush and SetupGradient signatures to 
30962         void (instead of the, now, unused bool);
30964 2007-10-01  Jeffrey Stedfast  <fejj@novell.com>
30966         * font.cpp (Layout): Made WrapWithOverflow closer to Silverlight's.
30968 2007-10-01  Sebastien Pouliot  <sebastien@ximian.com>
30970         * shape.cpp|h: Remove Path::IsFilled since the property 
30971         PathFigure::IsFilledProperty doesn't exists anymore.
30973 2007-10-01  Jeffrey Stedfast  <fejj@novell.com>
30975         * text.cpp (LayoutPango): Fixed Wrap vs WrapWithOverflow text
30976         wrapping.
30978         * font.cpp (Layout): Fixed the TextWrapping="Wrap" case.
30980 2007-10-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30982         * runtime.cpp: Only show the server as the url in the fullscreen
30983         message.
30985 2007-10-01  Sebastien Pouliot  <sebastien@ximian.com>
30987         * panel.cpp: Call ComputeBounds before invalidating on Background 
30988         changes. Fix parts of #327691 (like BubbleMark-CLR and Monotone).
30990 2007-10-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
30992         * fullscreen.h, fullscreen.xaml: Added.
30993         * text.h: Make GetActualHeight and GetActualWidth public.
30994         * runtime.h, runtime.cpp: Added IsTopLevel (since there can be two toplevel
30995           objects now: the fullscreen message and the toplevle canvas),
30996           SetSourceLocation and Show/HideFullScreenMessage.
30997         * dirty.cpp: Use Surface::IsTopLevel instead of comparing directly agains
30998           Surface::GetTopLevel.
31000 2007-09-30  Zoltan Varga  <vargaz@gmail.com>
31002         * xaml.cpp (CreateManagedObject): Move the call to GetMapping ()
31003         to managed code.
31005         * text.cpp (text_destroy): Avoid crash if default_foreground_brush
31006         is not set.
31008 2007-09-28  Chris Toshok  <toshok@ximian.com>
31010         * Makefile.am: remove the XRANDR conditional here.  it's #defined
31011         in config.h now.
31013 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
31015         * font.cpp (CreatePattern): If a filename has been specified for
31016         loading a font, don't set family values. Also, call
31017         FcDefaultSubstitute() on the pattern before trying to find a
31018         match.
31020 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
31022         Optimization hack that saves time by not recalculating the layout
31023         when the foreground brush changes (since we'd have exactly the
31024         same layout).
31026         * font.cpp (TextRun): Now takes the address of the brush than the
31027         brush itself, so that when brushes change on the Inline, we get
31028         the brush change for free.
31030         * text.cpp (LayoutSilverlight): Pass the addresses of the
31031         foreground brushes to TextRun ctor and don't bother with the
31032         default foreground brush here, save that for ::Paint-time.
31033         (LayoutPango): Same idea as LayoutSilverlight().
31034         (Paint): Get the default foreground and pass that off to the
31035         pango/silverlight text renderers.
31036         (OnPropertyChanged): Don't force a re-layout if the property that
31037         changed was the TextBlock::ForegroundProperty.
31038         (OnCollectionChanged): Same (but for Inline::ForegroundProperty).
31040         * mango.cpp (mango_renderer_show_layout): Now takes a default_fg
31041         argument so that we don't have to specify it in the creation of
31042         our layout attributes (this saving us a re-layout when a brush
31043         changes).
31044         (mango_attr_foreground_new): Now takes the address of the brush
31045         rather than the brush itself, so that when brushes change on the
31046         Inline, we get the brush change for free.
31048 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
31050         * text.cpp (TextBlock): We cannot re-use the
31051         default_foreground_brush here because we cannot allow it to be
31052         altered in any way.
31054 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
31056         * font.cpp (TextFont::IsScalable): New method.
31057         (TextFont::Path): Paths a glyph but does not stroke or fill. Only
31058         available if the font is scalable.
31059         (TextLayout::Render): Cache each segment's cairo_path_t so that
31060         future renders do not have to do it on a glyph-by-glyph basis
31061         (avoids possible glyph cache misses). May also save time by doing
31062         a single fill rather than a fill per glyph.
31064 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
31066         * font.cpp (RenderGlyphBitmap): No longer takes a TextDecorations
31067         argument.
31068         (RenderGlyphPath): Same.
31069         (UnderlinePosition): New method.
31070         (UnderlineThickness): New method.
31071         (TextLayout::Render): Draw our underline here in 1 stroke (haha, I
31072         made a funny).
31074 2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
31076         * text.cpp (LayoutSilverlight): LineBreaks don't really care about
31077         TextDecorations or Foreground properties.
31079         * font.cpp (TextRun::~TextRun): unref the font.
31080         (TextSegment): now references the original TextRun instead of
31081         copying pointers/values.
31082         (TextLayout::Render): Updated for above change.
31084 2007-09-28  Zoltan Varga  <vargaz@gmail.com>
31086         * xaml.cpp (SetNameAttribute): New callback to enable managed code to process
31087         x:Name attributes.
31088         (LoadCode): Change return type to bool to indicate a loading error.
31090 2007-09-28  Jeffrey Stedfast  <fejj@gnome.org>
31092         * media.cpp (SingleMedia::~SingleMedia): Close the media stream.
31093         (MediaElement::AdvanceFrame): If mplayer->AdvanceFrame() returns
31094         false, then it signifies MediaEnded, no need to explicitly check.
31095         (MediaElement::SetSource): Delete the current source here.
31096         (MediaElement::~MediaElement): C++ `delete' operator doesn't
31097         handle freeing NULL pointers.
31098         (MediaElement::DownloaderComplete): No need to delete the source
31099         here, done in SetSource() instead.
31101         * font.cpp: Created my own GlyphMetrics struct which uses doubles
31102         instead of ints for more accurate layout/rendering calculations.
31103         (Layout): When comparing to max_width, add 1.0 to account for
31104         rounding errors/hinting. Add 1.0 to the Actual/BoundingBox
31105         width/height values for the same reason.
31107 2007-09-28  Sebastien Pouliot  <sebastien@ximian.com>
31109         * xaml.cpp: Free locally allocated Points inside get_point_array.
31111 2007-09-28  Jeffrey Stedfast  <fejj@gnome.org>
31113         * font.cpp (GetGlyphInfo): Don't cache the bitmap if we're caching
31114         the path.
31116 2007-09-28  Sebastien Pouliot  <sebastien@ximian.com>
31118         * shape.cpp: ComputeBoundsSlow is no more so we can re-enable the
31119         thickness == 0 optimization.
31121 2007-09-27  Jeffrey Stedfast  <fejj@novell.com>
31123         * xaml.cpp (flush_char_data): g_strchomp() the cdata (as
31124         Silverlight does).
31126         * text.cpp: Merged with custom text layout code - layout algorithm
31127         is chosen at runtime_init() via flags or environment variable.
31129 2007-09-27  Jeffrey Stedfast  <fejj@novell.com>
31131         * runtime.cpp (runtime_init): Don't check pango version info,
31132         we're just gonna statically link in pango (and/or do
31133         configure-time checks if the user decides to link to a system
31134         pango). Implemented some preliminary environment variable parsing
31135         action to decide if the user wnts to use ffmpeg vs ms codecs,
31136         pango vs my "silverlight" text layout engine, etc.
31138 2007-09-27  Jeffrey Stedfast  <fejj@novell.com>
31140         * runtime.cpp (runtime_init): Now takes a flags argument for
31141         enabling/disabling features. If RUNTIME_INIT_BROWSER is not set,
31142         then make sure pango is recent enough (if not, print a warning
31143         akin to the cairo warning).
31145 2007-09-27  Sebastien Pouliot  <sebastien@ximian.com>
31147         * array.cpp: Fix issues on double parsing, including bug #328915 and
31148         test cases in /moon/test/xaml/points-torture.xaml
31150 2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31152         * animation.cpp: Add a few null checks.
31154 2007-09-27  Larry Ewing  <lewing@novell.com>
31156         * media.cpp: Don't mark our download progress as 100% until we've
31157         been notified by the downloader that it is complete.  Some
31158         programs check download progress to decide when they can safely
31159         poke at the media element properties.
31160         * downloader.cpp: set the final downloader progress to 1.0 not 100.
31162 2007-09-27  Sebastien Pouliot  <sebastien@ximian.com>
31164         * xaml.cpp: Don't freak out if <?xml ... ?> isn't on the first 
31165         line. Fix bug #328907.
31167 2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31169         * control.h, control.cpp: Added control_initialize_from_xaml_callbacks, and
31170           change InitializeFromXaml to take a XamlLoader argument.
31172 2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31174         * xaml.cpp: More unrefs.
31176 2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31178         * text.cpp: Unref a few newly created objects.
31179         * control.cpp: Remove an unnecessary ref.
31181 2007-09-26  Zoltan Varga  <vargaz@gmail.com>
31183         * text.cpp (SetValue): Implement proper handling of the Text property.
31184         (GetValue): Ditto.
31185         (OnPropertyChanged): Force a relayout when the foreground property changes.
31186         (Layout): Remove the laying out of the contents of the Text property, since the
31187         text is now contained in the first inline.
31188         
31189 2007-09-26  Jeffrey Stedfast  <fejj@novell.com>
31191         * font.cpp (Layout): Include the space char on the line before
31192         wrapping, this is noticable when TextDecorations="Underline" is
31193         enabled.
31194         (TextLayout::RenderGlyphBitmap): Moved to TextFont class.
31195         (TextLayout::RenderGlyphPath): Same. Also implemented underlining.
31196         (TextFont::Render): Implemented.
31198 2007-09-26  Sebastien Pouliot  <sebastien@ximian.com>
31200         * geometry.h: PathFigure::IsFilledProperty doesn't exist anymore
31201         (and was removed elsewhere, except here);
31203 2007-09-26  Chris Toshok  <toshok@ximian.com>
31205         * clock.cpp (TimeManager::Tick): a few changes.  first and
31206         foremost, fix the signs on the FPS_ADJUSTMENTS.  oops.  also, add
31207         a buffer of 50ms on either side of the timeout before we consider
31208         the Tick either slow or fast.  Increase the number of out-of-line
31209         ticks we need and decrease the fps adjustment.
31211 2007-09-26  Jeffrey Stedfast  <fejj@novell.com>
31213         * text.cpp (OnCollectionChanged): Needs to call Invalidate().
31215 2007-09-26  Chris Toshok  <toshok@ximian.com>
31217         * clock.cpp: initialize the min_timeout based on a good default
31218         max fps (60 in our case).  Also, calculate the fps adjustments in
31219         a nicer way.
31221         * runtime.cpp: remove the non-xrandr SetMaximumRefreshRate call -
31222         it's handled by TimeManager's default.
31224 2007-09-26  Jeffrey Stedfast  <fejj@novell.com>
31226         * font.cpp: A bunch of fixes/changes to mimic Microsoft's
31227         Silverlight TextBlock layout logic.
31229 2007-09-26  Andrew Jorgensen  <ajorgensen@novell.com>
31231         * Makefile.am: Added missing files for dist tarball
31233 2007-09-26  Chris Toshok  <toshok@ximian.com>
31235         * clock.h, clock.cpp: add some very naive, rather lame fps tuning.
31236         we just adjust fps by a fixed amount (4fps) either up or down, if
31237         a certain number (5, by default) of ticks in a row take either
31238         less or more time to complete (respectively), than the current
31239         timeout.
31241 2007-09-26  Sebastien Pouliot  <sebastien@ximian.com> 
31243         * moon-path.c: Fix typos.
31244         * shape.h: Remove old ComputeBounds[Slow|Fast] from header.
31246 2007-09-26  Sebastien Pouliot  <sebastien@ximian.com>
31248         * shape.h|cpp: Remove Line (direct path manipulation) hack.
31250 2007-09-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31252         * xaml.cpp: Unref collections and matrix transforms we create.
31254 2007-09-25  Sebastien Pouliot  <sebastien@ximian.com>
31256         * geometry.h|cpp, shape.cpp: Implement GetBounds without a cairo 
31257         context.
31259 2007-09-26  Zoltan Varga  <vargaz@gmail.com>
31261         * text.cpp (TextBlock): Set an empty string as a default Text property.
31262         (InsideObject): Implement this for text blocks.
31264 2007-09-25  Sebastien Pouliot  <sebastien@ximian.com>
31266         * font.cpp: Fix warning.
31268 2007-09-25  Larry Ewing  <lewing@novell.com>
31270         * brush.cpp|h: add image_brush_create_similar to simplify creating
31271         similar surfaces.  Use it where appropriate.
31273         * media.ccp: use image_brush_create_similar where possible. In
31274         MediaElement::Render draw with opacity directly rather than
31275         creating a temporary surface for every frame. Rework image opacity
31276         cache so that we don't have to recreate the surface every time. 
31278 2007-09-25  Jb Evain  <jbevain@novell.com>
31280         * media.cpp|h: let the MediaElement be the only one to trigger
31281         its own events, terminate its friendship with MediaBase.
31283 2007-09-25  Jb Evain  <jbevain@novell.com>
31285         * playlist.cpp|h: trigger a parsing error when no href attribute
31286         is found for base and ref elements.
31288 2007-09-25  Jb Evain  <jbevain@novell.com>
31290         * playlist.cpp|h, media.cpp: Auto play for playlists.
31292 2007-09-24  Jeffrey Stedfast  <fejj@novell.com>
31294         * font.cpp (Render): Fixed some y1 offset logic that didn't amke
31295         any sense (and was wrong afaict anyway). We now render exactly
31296         like Microsoft Silverlight.
31298 2007-09-24  Jb Evain  <jbevain@novell.com>
31300         * playlist.cpp: close the previous source before playing
31301         the next one.
31303 2007-09-24  Jb Evain  <jbevain@novell.com>
31305         * mplayer.cpp: on Close, reset height and width to zero.
31307 2007-09-24  Jeffrey Stedfast  <fejj@novell.com>
31309         * media.cpp (OnPropertyChanged): Set recalculate_matrix to true if
31310         either the NaturalWidth or NaturalHeight changes.
31312 2007-09-24  Jb Evain  <jbevain@novell.com>
31314         * media.cpp|h, playlist.cpp|h: refactor MediaSource so that
31315         only a SingleMedia deals with the MediaPlay directly. A playlist
31316         being a collection of either other playlist or singlemedias,
31317         playing one at a time.
31319 2007-09-24  Jb Evain  <jbevain@novell.com>
31321         * media.cpp, playlist.cpp: let the Media Sources change
31322         the state of the MediaElement (Playing/Paused/Stopped).
31324 2007-09-24  Jb Evain  <jbevain@novell.com>
31326         * media.h: let the media source change the properties
31327         of the media element. Make MediaSource friend of MediaElement
31328         to do so.
31329         * playlist.h, playlist.cpp: adjus to the changes in MediaSource.
31331 2007-09-24  Jeffrey Stedfast  <fejj@novell.com>
31333         * font.cpp: Added kerning.
31335         * mplayer.cpp: Added mutex locking for the target_pts variable.
31337 2007-09-24  Jb Evain  <jbevain@novell.com>
31339         * playlist.cpp: Playlist::IsPlaylistFile: return false
31340         on null argument.
31342 2007-09-23  Jb Evain  <jbevain@novell.com>
31344         * playlist.cpp: A base element stores the base in
31345         a href attribute, not in its body.
31347 2007-09-22  Chris Toshok  <toshok@ximian.com>
31349         * Makefile.am (USE_XRANDR): define USE_XRANDR.
31351         * runtime.cpp (Surface::realized_callback): get the RANDR screen
31352         config info, and set the TimeManager's max refresh to match the
31353         screen's .
31355         * clock.h, clock.cpp (TimeManager::SetMaximumRefreshRate): new
31356         method.
31358 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
31360         * xaml.h xaml.cpp: Add support for parsing x:Code elements and
31361         passing them to managed code.
31363 2007-09-21  Jeffrey Stedfast  <fejj@gnome.org>
31365         * mplayer.cpp (audio_play): Slightly optimized the volume
31366         adjustment loop.
31368         * font.cpp (Layout): Keep track of the line ascend and pad our
31369         extents with an extra pixel on all sides to account for hinting.
31370         (Render): Starts rendering glyphs 1 pixel in. Also modified the
31371         logic such that we didn't have to treat path/bitmap glyphs
31372         differently.
31374 2007-09-21  Jeffrey Stedfast  <fejj@novell.com>
31376         * font.cpp: Now handles scalable fonts by rendering their outline
31377         paths rather than rendering bitmaps.
31379         * moon-path.c (moon_path_move_to): Resize the path auto-magically
31380         if we don't have enough room. Same for all of the other
31381         line_to/curve_to/etc.
31383 2007-09-21  Jeffrey Stedfast  <fejj@gnome.org>
31385         * font.cpp (SetMaxWidth): Oops, set max_width = max (rather than
31386         the old width extents).
31387         (Layout): When breaking a long line, the new line height should
31388         not be set to 0 (duh), it should be set to the font height.
31390 2007-09-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31392         * xaml.cpp, xaml.h: Added a XamlLoaderCalbacks structure that contains all
31393           the callbacks XamlLoader needs. Added xaml_loader_set_callbacks for
31394           managed code to set them. Keep track of mappings in native code, call
31395           into managed code only if a mapping is not found here. Keep a list of
31396           missing assemblies, allows managed code to request downloading of
31397           several assemblies before trying to parse xaml again. Added
31398           XamlLoader::CreateManagedObject, tries to parse xmlns/name, if
31399           successful (and only then), requests a vm to be loaded, before calling
31400           into managed code to actually create the managed object.
31402 2007-09-20  Chris Toshok  <toshok@ximian.com>
31404         * type.cpp, type.cpp.in (types_init_register_events): register the
31405         LostFocus/GotFocus events.
31407         * uielement.h: add LostFocusEvent/GotFocusEvent.
31409         * uielement.cpp (uielement_init): lookup LostFocus/GotFocus events.
31411 2007-09-20  Jeffrey Stedfast  <fejj@gnome.org>
31413         * text.cpp (InsideObject): Removed.
31415         * font.cpp (Layout): Add the horiBearingX value of the last glyph
31416         in each line to the width of said line.
31417         (RenderGlyphBitmap): Cache the surface and use it as a mask when
31418         filling so that the true source pattern shows thru.
31420 2007-09-20  Jeffrey Stedfast  <fejj@novell.com>
31422         * mango.cpp (mango_renderer_draw_glyphs): Cache the paths that we
31423         render.
31424         (mango_renderer_show_layout): Instead of having pango render the
31425         text, do it ourselves using our cached paths from the previous
31426         call to mango_renderer_layout_path().
31427         (mango_renderer_layout_path): Clear our cache paths.
31429 2007-09-20  Jeffrey Stedfast  <fejj@novell.com>
31431         * text.cpp (OnPropertyChanged): Don't dirty actual width/height on
31432         foreground changes.
31433         (OnSubPropertyChanged): Same.
31435         * font.cpp (GetFont): No longer need to pass the size to
31436         TextFont::Load().
31437         (TextFont::Load): No longer needs the size argument.
31438         (TextFont::.ctor): We just get the size from the pattern now.
31439         (TextFontDescription::CreatePattern): Call FcFontMatch() on our
31440         generated font pattern here instead of having our lower-level
31441         TextFont::.ctor do it.
31442         (TextFont::Ascender): Use the size metrics so that this always
31443         works properly (at least it seems to).
31444         (TextFont::Height): Same.
31445         (TextLayout::Layout): Changed line-height logic a bit for
31446         LineBreaks.
31448 2007-09-20  Chris Toshok  <toshok@ximian.com>
31450         * type.cpp.in, type.cpp (LookupEvent): fix this to check in parent
31451         type event hashes as well if we don't find it in ours.
31453 2007-09-20  Sebastien Pouliot  <sebastien@ximian.com>
31455         * brush.cpp: Implemented MappingMode for LinearGradientBrush.
31456         Buttons from Dr Popper are now rendered correctly.
31458 2007-09-20  Chris Toshok  <toshok@ximian.com>
31460         * typegen.cs (GenerateTypeCpp): add a call to
31461         types_init_register_events.
31463         * type.h.in, type.cpp.in: add Type::RegisterEvent,
31464         Type::LookupEvent, Type::GetEventCount, and Type::GetEventBase.
31466         * type.cpp.in: add types_init_register_events, which registers all
31467         the events we care about for all the types.  we do it here to
31468         guarantee that events have been registered by the time any
31469         instance code is run for any type.
31470         
31471         * dependencyobject.h, dependencyobject.cpp: remove the event
31472         registration from EventObject, it's moving to Type.  so the Type
31473         will contain the name to id hash, and the EventObject will only
31474         contain an array of GSLists, where the index into that array is
31475         the event's id.
31476         
31477         * clock.cpp (clock_init): lookup the static events here.
31479         * runtime.cpp (runtime_init): same.
31481         * animation.cpp (animation_init): same.
31483         * downloader.cpp (downloader_init): same.
31485         * uielement.cpp (uielement_init): same.
31487         * src/clock.h, src/uielement.h, src/media.h, src/animation.h,
31488         src/type.h, src/runtime.h, src/downloader.h: events are static to
31489         the classes now, instead of being per-instance.
31491         * src/types.h src/types.cpp: regen.
31492         
31493 2007-09-20  Sebastien Pouliot  <sebastien@ximian.com> 
31495         * geometry.cpp: Avoid re-allocating path memory when possible.
31496         * moon-path.c|h: Added documentation and new moon_path_renew and 
31497         moon_path_clear functions to reduce memory re-allocations.
31498         * shape.cpp|h: Avoid re-allocating path memory when possible.
31500 2007-09-20  Sebastien Pouliot  <sebastien@ximian.com>
31502         * brush.cpp|h: Implemented MappingMode for RadialGradientBrush.
31503         Bubbles from bubblemark.com are now rendered correctly.
31505 2007-09-19  Sebastien Pouliot  <sebastien@ximian.com>
31507         * shape.cpp|h: Remove dead code.
31509 2007-09-19  Jeffrey Stedfast  <fejj@novell.com>
31511         * font.cpp: More fixes to make stuff build/work (more or less).
31513         * text.patch: Patch to make text layout/rendering use my new code
31514         rather than pango.
31516 2007-09-19  Chris Toshok  <toshok@ximian.com>
31518         * text.cpp (TextBlock::Layout): don't insert multiple fg_attrs.
31520 2007-09-19  Sebastien Pouliot  <sebastien@ximian.com>
31522         * moon-path.c|h: New. Create simple or complex paths without a
31523         (expensive) cairo_context_t using an API similar to cairo.
31524         * geometry.cpp|h: Use moon_path functions. Added (still inactive)
31525         code to compute bounds for paths.
31526         * shape.cpp|h: Use moon_path functions. Avoid Cairo extents API 
31527         for Polylines and Polygons. Still not perfect for large thickness 
31528         and steep angles but 8-10x faster and better (no artifact left) 
31529         than previous code, see new xaml animation tests).
31530         * rsvg.cpp|h: Adapt to use moon-path functions.
31531         * Makefile.am: Add moon-path.c and moon-path.h to the build.
31533 2007-09-19  Jeffrey Stedfast  <fejj@gnome.org>
31535         * font.cpp: More hackery.
31537 2007-09-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31539         * panel.cpp: Add a null check.
31540         * xaml.cpp: Created a list that contains most created elements in order to
31541           unref them once parsing is finished (we need to unref all created
31542           elements except the top one, but the parser callback functions don't
31543           know which is the top one, so we delay the unrefing until the end). If
31544           parsing is done manually (*_from_str, etc), just use unref.
31545         * text.h, text.cpp: Add text_destroy to properly destroy the default
31546           foreground brush on shutdown.
31547         * clock.cpp: When we allocate a clock, unref it after adding it to the
31548           group.
31549         * collection.h: Store the parent in the Node, since we can't call
31550           obj->GetParent () in a destructor (it will walk up the hierarchy using
31551           the type system, but since the parent can be in the destructor, the type
31552           system isn't reliable anymore).
31553         * mango.h, mango.cpp: MangoAttrForeground: hold a reference to the
31554           foreground brush, not to the element. Add a mango_renderer_get_type_safe
31555           that can reinitialize static variables (after a libmoon reload) from
31556           glib.
31557         * geometry.cpp, transform.cpp, brush.cpp: Use Value::CreateUnref for default
31558           values.
31559         * collection.cpp: Store the parent in the Node, since we can't call
31560           obj->GetParent () in a destructor (it will walk up the hierarchy using
31561           the type system, but since the parent can be in the destructor itself,
31562           the type system isn't reliable anymore).
31563         * dependencyobject.cpp: Attachee: don't hold a ref to the container anymore.
31564         * media.cpp: Sprinkle a few unrefs here and there.
31565         * animation.cpp: Don't ref root_clock, CreateClock already gives us a ref.
31566           Add a null check in the Storyboard destructor. Use Value::CreateUnref
31567           for default values.
31568         * runtime.cpp: Attach: Don't attach a null element. Call text_destroy on
31569           shutdown.
31571 2007-09-18  Jeffrey Stedfast  <fejj@gnome.org>
31573         Continued fixes to go along with Rolf's other TextBlock leak
31574         fixes.
31576         * mango.cpp (mango_attr_foreground_new): Don't ref the fg.
31577         (mango_attr_foreground_destroy): Don't unref the fg.
31579         * text.cpp (default_foreground): Make return a static reference.
31580         (Layout): Don't ref the fg.
31582 2007-09-17  Jeffrey Stedfast  <fejj@gnome.org>
31584         * font.cpp: more progress on text layout.
31586 2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31588         * xaml.cpp, xaml.h: Move callbacks from PluginXamlLoader back to XamlLoader.
31590 2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31592         * xaml.cpp: Fix warning.
31594 2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31596         [Removed mono dependency for 1.0 moonlight applications. 
31597         We now have a native [Plugin]XamlLoader that is the native counterpart of the 
31598         managed Loader object, the native loader handles xaml loading when the 
31599         mono runtime isn't loaded.]
31601         * xaml.cpp, xaml.h: Added a XamlLoader class that replaces the callbacks.
31602           Changed xaml_create_from* to take a loader (XamlLoader*) argument. This
31603           was necessary because the callback handler isn't given enough
31604           information (it needs to know the plugin, but this information is not
31605           passed on), and it now also avoids the potential problem of overwriting
31606           static callbacks when several plugins are created simultanously.
31607         * control.cpp, demo.cpp: Update according to API change.
31609 2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31611         * panel.cpp, dependencyobject.cpp, dirty.cpp: Add some null checks.
31613 2007-09-14  Jeffrey Stedfast  <fejj@novell.com>
31615         * font.cpp|h: New font/text rendering engine (e.g. replacement for
31616         pango). Nowhere near complete yet.
31618 2007-09-14  Miguel de Icaza  <miguel@novell.com>
31620         * media.cpp (Stop, Pause): Do not dereference source if it is not
31621         yet set (TopBanana does this).
31623 2007-09-13  Jb Evain  <jbevain@novell.com>
31625         * media.cpp|h, playlist.cpp|h: Work on playlist integration.
31627 2007-09-10  Jeffrey Stedfast  <fejj@novell.com>
31629         * mplayer.cpp (StopThreads): When resetting current_pts and
31630         target_pts, use the audio (or video) initial_pts value rather than
31631         0 since they are meant to be absolute pts values, not
31632         relative. This fixes a bug in the halo3 site where pressing Stop
31633         would cause the current time string to become "59:55" when it
31634         should have been "00:00".
31636         * media.cpp (OnPropertyChanged): Only Invalidate() on
31637         PositionProperty changes if we have video content to render. Fixes
31638         bug #82474.
31640         * mplayer.cpp (HasVideo): New method that returns true if the
31641         media source has video content.
31643 2007-09-10  Jeffrey Stedfast  <fejj@gnome.org>
31645         * mplayer.cpp (Duration): Only use audio duration as the defacto
31646         duration if we've got a valid pcm handle.
31648 2007-09-10  Chris Toshok  <toshok@ximian.com>
31650         * animation.cpp (HookupAnimationsRecurse): make the message
31651         involving failure to hookup a property more verbose.  Looks like
31652         MS is treating a TranslateTransform as a ScaleTransform in popfly
31653         - that is, they're trying to animate ScaleX on a
31654         TranslateTransform (which is oddly enough named "scale".)
31656         * media.cpp: Emit ImageFailedEvent if we failed to load the image.
31657         Remove that damn TODO printf.
31659         * media.h: add ImageFailedEvent to Image, and change signature of
31660         CreateSurface so we can return false if there's an error.
31662         * xaml.cpp (parser_error): use the new ParserErrorEventArgs ctor.
31664         * error.h: make these classes instead of structs, and also make
31665         them copy/free the type specific strings.  it'll result in more
31666         allocations but it cleans up the code using them.
31668 2007-09-07  Sebastien Pouliot  <sebastien@ximian.com>
31670         * shape.cpp: Fixed Polygon "special" case when it only has to draw
31671         a line. Fixed Line::ComputeBound (Shape::ComputeBoundFast wasn't 
31672         working) which is now 10x faster than calling ComputeBoundSlow (the
31673         working alternative). Started to reuse the same concept for Polyline
31674         and Polygon but the (#def-out) code doesn't yet handle line joins 
31675         correctly (so it still use the correct ComputeBoundSlow);
31677 2007-09-06  Chris Toshok  <toshok@ximian.com>
31679         * dirty.cpp (process_dirty_elements): some guards against unioning
31680         an empty rectangle.
31682 2007-09-06  Chris Toshok  <toshok@ximian.com>
31684         * runtime.cpp (Surface::Invalidate): only invalidate the actual
31685         rectangle.  The +1/-2 stuff is done in dirty.cpp, if it needs to
31686         be.
31688         * rect.h (Rect::Floor): drop fractional part of all values.
31690         * media.h,media.cpp: we cheat and turn off AA on MediaElements
31691         when they aren't rotated or skewed.
31693         * uielement.h, uielement.cpp: we need to keep track of 2
31694         dirty_rects.  one for the element itself, which is GrowBy(1)'ed in
31695         dirty.cpp if the child uses AA, and one for children who have
31696         passed their invalidation rect up the tree (we don't grow this
31697         one).  Also, add the default UseAA method, which returns true, and
31698         the ChildInvalidated method, which mirrors Invalidate(Rect r) but
31699         uses the children_dirt_rect.
31701         * panel.h, panel.cpp (Panel::~Panel): clear our children
31702         collection.
31703         (Panel::FindStartingElement): the meat of the optimization hack -
31704         we determine if we can skip parts of the tree if the expose
31705         rectangle exists completely within the bounds of an opaque
31706         element, unrotated, unskewed element.
31707         
31708         * dirty.cpp (process_dirty_elements): handle
31709         item->children_dirty_rect as well as item->dirty_rect.  Also, Grow
31710         the item's dirty_rect by 1 before combining them, if the item uses
31711         AA.
31713 2007-09-05  Jb Evain  <jbevain@novell.com>
31715         * playlist.cpp: the asx format is case insensitive, parse it
31716         accordingly.
31718 2007-09-05  Sebastien Pouliot  <sebastien@ximian.com>
31720         * animation.h: Make KeySpline::GetObjectType virtual.
31722 2007-09-05  Jb Evain  <jbevain@novell.com>
31724         * playlist.cpp, playlist.h: work on playlist parsing.
31726 2007-09-05  Jb Evain  <jbevain@novell.com>
31728         * xaml.h: export timespan_from_str.
31730 2007-09-05  Jb Evain  <jbevain@novell.com>
31732         * list.h, list.cpp: add Remove(Node) and RemoveAt(int) method.
31734 2007-09-04  Chris Toshok  <toshok@ximian.com>
31736         * media.cpp (Image::Render): unref the backing pixbuf as soon as
31737         possible.
31738         (Image::CleanupSurface): guard against double unreffing the
31739         backing pixbuf.
31741 2007-09-04  Chris Toshok  <toshok@ximian.com>
31743         * xaml.cpp (xaml_set_property_from_str): delete the color.
31744         (dependency_object_set_attributes): same.
31746 2007-09-04  Chris Toshok  <toshok@ximian.com>
31748         * media.cpp (Image::CreateSurface): if we need to create a new
31749         surface, make sure to unref the old one.
31751         * geometry.cpp (PathGeometry::PathGeomtry): use
31752         Value::CreateUnrefPtr (bad name, imo, but eh)
31753         (PathFigure::PathFigure): same.
31755 2007-09-04  Jb Evain  <jbevain@novell.com>
31757         * playlist.h, playlist.cpp: Work on the overall design.
31759 2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
31761         * brush.cpp (image_brush_create_pattern): Revert previous patch as
31762         it broke test suite.
31764 2007-09-04  Jb Evain  <jbevain@novell.com>
31766         * list.h, list.cpp: add a List::ForEach method.
31768 2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
31770         * brush.cpp (image_brush_create_pattern): Set CAIRO_FILTER_FAST
31771         (based on lewings performance patch).
31773 2007-09-04  Sebastien Pouliot  <sebastien@ximian.com>
31775         * text.h|cpp: TextBlock actual_[height|width] are already cached 
31776         because they're expansive to calculate. Make sure we don't compute
31777         them until they're really required (e.g. when a lot of properties
31778         changes when loading an XAML file).
31780 2007-09-04  Chris Toshok  <toshok@ximian.com>
31782         * animation.cpp (KeyFrameAnimation_ResolveKeyFrames): add the
31783         keyframes in reverse order so the sort works.
31785 2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
31787         * list.cpp (Insert): Fixed.
31789         * runtime.cpp (render_cb): Added some "FPS" debug spew.
31791         * media.cpp (AdvanceFrame): On MediaEnded, don't remove the source
31792         timeout id, by returning false, it is removed for us.
31794 Tue Sep 4 17:50:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
31796         * media.cpp: fix memory leaks and crashes when a download gets
31797         aborted.
31799 2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
31801         * mplayer.cpp: Changed all pts variables to int64_t from uint64_t
31802         as that seems to be what ffmpeg uses internally. Also added a new
31803         'eof' state so that we can easily tell if we've reached the end of
31804         the media stream (eof is true and no packets queued).
31806 2007-09-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31808         * media.h, media.cpp: If we get a play request before the media is loaded,
31809           save the request and start playing when the media is loaded. Hopefully
31810           this is what MS is doing.
31812 2007-09-04  Jeffrey Stedfast  <fejj@gnome.org>
31814         * collection.cpp (Clear): Use list->IsEmpty () as it is cheaper
31815         than comparing the Length() to 0.
31817         * list.cpp: Added more tests.
31819 2007-09-03  Sebastien Pouliot  <sebastien@ximian.com> 
31821         * rect.cpp: Safer IsEmpty (handles negative values)
31822         * shape.cpp: In Shape::ComputeBoundsSlow make empty shape returns
31823         empty bounds. In Shape::DoDraw avoid call to  cairo_set_matrix if 
31824         shape is empty.
31826 2007-09-03  Sebastien Pouliot  <sebastien@ximian.com>
31828         * media.cpp: Fix premul and remove confusing macro.
31830 2007-09-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31832         * clock.cpp, uielement.cpp, trigger.cpp, panel.cpp, animation.cpp,
31833           canvas.cpp, namescope.cpp: Plug some leaks.
31834         * value.h.in, value.h, value.cpp: Added CreateUnrefRef and CreateUnref.
31835         * dependencyobject.cpp: free_attachee: unref the contained dob. Use
31836           base_unref () instead of accessing the pointer in a few places to allow
31837           for null pointers.
31838         * debug.cpp: get_stack_trace is now able to get meaningful data for managed
31839           parts of the stack trace as well.
31841 2007-09-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31843         * list.cpp: List::Unlink: Link my neighbours to eachother.
31845 2007-09-01  Sebastien Pouliot  <sebastien@ximian.com>
31847         * rect.cpp: Fix union with empty rectangles (so x and y are not
31848         assigned to 0 resulting in large bounds). Fix IsEmpty.
31849         * shape.cpp: Fix possible division by 0, resulting in infinite 
31850         values (and much too large bounds)
31852 2007-08-31  Jeffrey Stedfast  <fejj@novell.com>
31854         *.cpp: Updated for the slightly different List API (list nodes no
31855         longer have Next() or Prev() methods, just access the pointers
31856         directly).
31858         * animation.cpp: Made sorted_list a GPtrArray and updated to use
31859         g_ptr_array_insert_sorted(). Also, a lot of the 'list' (not
31860         sorted_list) accesses assumed nodes were of type KeyFrameNode,
31861         which they were not. Fixed.
31863         * xaml.cpp: Made XamlElementInstance.dtor virtual.
31865         * collection.h: Made the Collection::Node.dtor virtual.
31867         * list.cpp: Rewritten, if we add a virtual .dtor to List::Node, we
31868         can no longer guarantee that List::Node->next will have the same
31869         address as the List::Node object and so the list implementation
31870         broke. This rewrite is a bit less fancy, but doesn't rely on that
31871         feature.
31873 2007-08-31  Sebastien Pouliot  <sebastien@ximian.com> 
31875         * media.cpp, panel.cpp, shape.cpp, text.cpp: Calling GrowBy 
31876         doesn't change the current rectangle (but returns a new one).
31877         However everything seems to work, so they are probably not needed.
31879 2007-08-31  Jeffrey Stedfast  <fejj@novell.com>
31881         * text.cpp (OnPropertyChanged): Need to Invalidate() too.
31883 2007-08-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31885         * runtime.h, runtime.cpp: Implement fullscreen support, drawing_area does
31886           now reference either the fullscreen drawing area or the normal drawing
31887           area. Refactored drawing area initialization and destruction into
31888           seperate methods. Modified ConnectEvent to be able to specify whether
31889           the drawing area should attach to realize/unrealize events (fullscreen
31890           drawing area shouldn't). Only emit ResizeEvent if we're not in
31891           fullscreen mode. Added normal_height/width, contains the size of the
31892           surface when not in fullscreen (as opposed to screen_height/width for
31893           fullscreen mode). Height/width now contains the actual size of the area
31894           where we draw, whether in fullscreen mode or not.
31896 2007-08-31  Sebastien Pouliot  <sebastien@ximian.com> 
31898         * shape.cpp: #ifdef out an optimization that doesn't work with
31899         ComputeBoundsSlow (a specified stroke brush, with a thickness of 0,
31900         wouldn't render at all with it's fill brush). Added same shortcut 
31901         (as before) for Shape::ComputeBoundsSlow.
31903 2007-08-31  Sebastien Pouliot  <sebastien@ximian.com>
31905         * shape.cpp: Added a shortcut in Shape::ComputeBoundsFast when shapes
31906         are known to be empty (UIElement::SHAPE_EMPTY).
31908 2007-08-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31910         * shape.h, shape.cpp: Revert to the old CanFill method for shapes,
31911           apparently a point is inside a shape unregarding to whether it's filled
31912           or not, unlike geometries.
31914 2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
31916         * shape.cpp: Better degenerate handling for round-rectangles and 
31917         for ellipses.
31919 2007-08-30  Chris Toshok  <toshok@ximian.com>
31921         * collection.h, collection.cpp: change the prototype of
31922         Collection::Add, ::Insert, and ::SetVal to return bool.  Make the
31923         subclasses check the return value before doing their type specific
31924         handling of the child.  Fixes the crash from invalid xaml in
31925         alan's testcase.
31927         * animation.h, animation.cpp: track collection api change.
31929 2007-08-30  Chris Toshok  <toshok@ximian.com>
31931         * collection.cpp (Collection::Add): make the warning a lot more
31932         useful if the child isn't of the right type.
31934 2007-08-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
31936         * xaml.cpp: Unref the namescope.
31937         * debug.h, debug.cpp: Added. Implemented get_stack_trace and
31938           print_stack_trace.
31939         * clock.cpp: Unref the _instance.
31940         * dependencyobject.h, dependencyobject.cpp: Implement object tracking for
31941           debug purposes. It's able to log to console object creation,
31942           destruction, ref/unrefs with a stacktrace with C++ unmangled function
31943           names, file and line number. Keep a count of created and destroyed
31944           objects, and a list of objects still alive. Ref and unref attached
31945           objects, and free the attachees when we're deleted.
31946         * animation.h, animation.cpp: Add animation_destroy, and destroy the default
31947           dependency property for a few properties.
31948         * type.cpp, type.cpp.in: Initialize Type::types to NULL.
31949         * runtime.cpp: Add a g_type_inited to avoid initializing g_types several
31950           types. Call animation_destroy on shutdown, and add some object tracking
31951           output to runtime_init and runtime_shutdown.
31952         * Makefile.am: Added debug.*.
31954 2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
31956         * shape.cpp: In some degenerate cases Radius[X|Y] can be ignored 
31957         for rectangles.
31959 2007-08-30  Jeffrey Stedfast  <fejj@novell.com>
31961         * mplayer.cpp (AdvanceFrame): If there is no video stream, return
31962         based on audio state. Also, if current_pts >= target_pts already,
31963         return true rather than false to pretend we advanced a frame (it's
31964         really not that important to our caller, all the value is used for
31965         is updating position).
31967 2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
31969         * shape.cpp: Handle negative values for Height and Width (not 
31970         drawn) and for Radius[X|Y] (absolute values).
31972 2007-08-30  Jb Evain  <jbevain@novell.com> 
31974         * media.h, media.cpp: introduce a new MediaSource class that a
31975         MediaElement uses, so we can have either a SingleMedia or a Playlist
31976         as a source.
31977         * playlist.cpp, playlist.h: added
31978         * Makefile.am: add the previous files.
31980 2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
31982         * shape.cpp: Fix small rectangle fills when no stroke brush is 
31983         specified.
31985 2007-08-29  Jeffrey Stedfast  <fejj@novell.com>
31987         * text.cpp (OnPropertyChanged): Don't recalculate width/height nor
31988         bounds on TextProperty change explicitly, it should already be
31989         recalculated later in the function in the same place it gets
31990         reclauclated for other property changes.
31991         (ComputeBounds): Updated to work the same as the rest of the
31992         elements work.
31994 2007-08-29  Sebastien Pouliot  <sebastien@ximian.com> 
31996         * shape.cpp: Fix ComputeBoundsFast to consider the stroke 
31997         thickness
31999 2007-08-29  Sebastien Pouliot  <sebastien@ximian.com>
32001         * shape.cpp: Fix Path::BuildPath cairo_path_t caching as we modify 
32002         the path after we get a copy of it. Remove the now unrequired 
32003         clipping inside the *::BuildPath for StretchUniformToFill.
32005 2007-08-29  Jeffrey Stedfast  <fejj@novell.com>
32007         * media.cpp (Render): Cache the pattern matrix.
32008         (DownloaderComplete): Remove the assert and simply handle that
32009         case by returning (which defers the call until OnLoaded).
32011 2007-08-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32013         * runtime.cpp: Initialize the FullScreen variables. Helps a lot in
32014           making things consistent.
32016 2007-08-29  Chris Toshok  <toshok@ximian.com>
32018         * merged delayed-rendering-branch branch to head.  ChangeLog is:
32019         
32020         2007-08-28  Chris Toshok  <toshok@ximian.com>
32022                 * control.cpp (GetTransformFor): change this to act as
32023                 Canvas::GetTransformFor does - we only put in the transform from
32024                 parent to child here - don't include the parent's transform as
32025                 well.  Fixes the airlines demo.
32027         2007-08-28  Chris Toshok  <toshok@ximian.com>
32029                 * dirty.cpp (process_dirty_elements): use a different method for
32030                 checking if against the toplevel canvas, and also use
32031                 UIElement::parent instead of DependencyObject::GetParent() to get
32032                 controls working a little better than before.
32034                 * control.h, control.cpp: remove UpdateTransform.  this is handled
32035                 by the dirty.cpp code now.
32037                 * dependencyobject.h, dependencyobject.cpp: copy over the
32038                 event_object_{add,remove}_event_handler change from the trunk so
32039                 we can continue to work with HEAD olive.
32041         2007-08-22  Chris Toshok  <toshok@ximian.com>
32043                 * uielement.cpp (Invalidate): don't actually invalidate the
32044                 element unless it's visible.
32045                 (OnPropertyChanged): the above change requires us to invalidate
32046                 the element before setting the flags (in the case where we're
32047                 hiding an element).
32049         2007-08-21  Jeffrey Stedfast  <fejj@novell.com>
32051                 * media.cpp (ComputeBounds): Use the FrameworkElement width/height
32052                 unless unspecified, only then should we use video width/height.
32054         2007-08-21  Chris Toshok  <toshok@ximian.com>
32056                 * uielement.cpp (DoRender): short-circuit rendering of uielements
32057                 when their opacity is 0.
32059                 * dirty.cpp (process_dirty_elements): handle controls.
32061         2007-08-21  Chris Toshok  <toshok@ximian.com>
32063                 * shape.h: add Shape::ComputeBoundsSlow, which uses the slow
32064                 (cairo_*_extents) codepath for computing bounds.  Use this path
32065                 for polygons, polylines, and paths.  Implement a Line-specific
32066                 fast ComputeBounds.
32068         2007-08-20  Chris Toshok  <toshok@ximian.com>
32070                 * media.cpp (MediaElement::ComputeBounds): GrowBy(1).
32071                 (Image::ComputeBounds): use bounding_rect_for_transformed_rect.
32073         2007-08-20  Chris Toshok  <toshok@ximian.com>
32075                 * rect.h, rect.cpp: add bounding_rect_from_transformed_rect.
32077                 * panel.cpp (Panel::ComputeBounds): use the bounding_rect
32078                 call, and Rect::GrowBy
32080                 * media.cpp (MediaElement::ComputeBounds): use the bounding_rect
32081                 call.
32083         2007-08-20  Chris Toshok  <toshok@ximian.com>
32085                 * shape.h, shape.cpp: move the ellipse bound computing to shape
32086                 instead.
32088 2007-08-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32090         * clock.h: Implement TimeManager::GetObjectType.
32091         * dependencyobject.h, dependencyobject.cpp: Move all type management down to
32092           Base (GetObjectType, Is, GetType, GetTypeName), and implement
32093           GetObjectType in the classes that don't do it already. Remove
32094           BASE_FLOATS, simplifying ref counting.
32095         * type.cpp.in, type.h, type.cpp, type.h.in: Added Base and inherited classes
32096           that don't already inherit from DependencyObject.
32097         * runtime.h, runtime.cpp: Add the Fullscreen API (not implemented yet, only
32098           raises events), and implement GetObjectType.
32100 2007-08-28  Sebastien Pouliot  <sebastien@ximian.com> 
32102         * shape.cpp: Fix StretchUniformToFill
32104 2007-08-28  Sebastien Pouliot  <sebastien@ximian.com>
32106         * shape.cpp: Fix StrokeDashArray and StrokeDashOffset as they now
32107         (new since refresh?) need to be multiplied with the stroke's 
32108         thickness
32110 2007-08-28  Jeffrey Stedfast  <fejj@novell.com>
32112         * text.cpp (Render): Fixed the "no text to render" optimization:
32113         don't check TextBlock::TextProperty to see if we have any text to
32114         render, instead check TextBlock::layout (which will have any text
32115         from inlines as well).
32116         (OnPropertyChanged): If the TextProperty changes, recalculate the
32117         layout and bounds.
32119 2007-08-28  Sebastien Pouliot  <sebastien@ximian.com>
32121         * geometry.h: Add a Path* parameter to Draw as we need to know some 
32122         stuff (e.g. stroke thickness) in order to detect degenerate cases.
32123         * geometry.cpp: Handle degenerate case for RectangleGeometry.
32124         * panel.cpp, uielementy.cpp: Adjust Draw calls for optional Path 
32125         element (NULL in the case of clipping).
32126         * shape.cpp|h: Move cairo_path_t caching logic from Path to Shape
32127         class. Add GetFillRule method. Handle most cases where a large stroke
32128         thickness change the SL drawing behaviour (wrt Cairo behaviour)
32129         * uielement.h: Add flags for empty/normal/degenerate shapes
32131 2007-08-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32133         * panel.cpp: InsideObject: The point is only inside us if we have a
32134           background, otherwise we act like if we were transparent (which is what
32135           we are if we aren't painting anything inside us).
32136         * geometry.h, uielement.cpp, shape.h: Rename CanFill to IsFilled so that
32137           it's closer to what it actually does.
32138         * shape.cpp: Changed implementation of Shape::CanFill to return true only if
32139           we're actually filled, and rename CanFill to IsFilled so that it's
32140           closer to what it actually does. 
32142 2007-08-27  Jackson Harper  <jackson@ximian.com>
32144         * dependencyobject.cpp|h: Don't return Collections when getting
32145         parents.
32147 2007-08-27  Jeffrey Stedfast  <fejj@novell.com>
32149         * mplayer.cpp (Play): Always add a timeout, even for audio-only
32150         media, so that the callback can check if the media has ended and
32151         emit the MediaEnded event.
32153         * media.cpp (AdvanceFrame): Emit the MediaEndedEvent.
32155         * mplayer.cpp (MediaEnded): New convenience function.
32157 2007-08-27  Sebastien Pouliot  <sebastien@ximian.com>
32159         * shape.cpp: Remove cairo_new_path call in moon_rounded_rectangle
32160         as this clear any path data in the context (see
32161         test-path-group.xaml)
32163 2007-08-27  Jeffrey Stedfast  <fejj@novell.com>
32165         * mplayer.cpp (audio_play): Implement software balance/volume here
32166         rather than using the system's mixer (as that changes the
32167         balance/volume for all applications which is a bad thing). Fixes
32168         bug #82602.
32170 2007-08-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32172         * panel.cpp: InsideObject: only skip checking the children if the
32173           point is not in the clipped area.
32175         * uielement.h, uielement.cpp: Added InsideClip, and moved the
32176           corresponding code from InsideObject to InsideClip.
32178 2007-08-27  Sebastien Pouliot  <sebastien@ximian.com>
32180         * xaml.cpp: Fix calculation for smooth quadatric bezier (T) as seen in
32181         tests/xaml/test-path-smoothquadraticbezier.xaml
32183 2007-08-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32185         * uielement.h, uielement.cpp: Implement InsideObject here too, the same
32186           implementation as Shape has (for our Clip property).
32187         * frameworkelement.cpp: InsideObject: call new base implementation as well.
32188         * panel.cpp: InsideObject: don't check our children, the mouse may be over
32189           them, but they're not visible for some reason (the parent object might
32190           be clipped, etc).
32192 2007-08-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
32194         * panel.cpp: Panel::HandleMotion, if we're the captured element, handle the
32195           motion event even though the mouse isn't over us.
32196         * runtime.h: Add a public Surface::GetCapturedElement.
32198 2007-08-24  Jeffrey Stedfast  <fejj@novell.com>
32200         * mplayer.cpp (StopThreads): Need to reset current_pts to 0 so the
32201         video frames will update if we seek backwards.
32203         * uielement.cpp (DoRender): Shortcut out if total_opacity == 0.0
32205         * media.cpp (UpdateProgress): Use the downloader progress value as
32206         the buffering progress value as well (since we don't yet stream).
32207         (DownloaderComplete): Call UpdateProgres() here so that we can
32208         flush the 100% progress value.
32210         * downloader.cpp (Write): Update the progress first, so that the
32211         writer callback can query the actual progress (all data read up to
32212         and /including/ this point in time).
32213         (NotifyFinished): Set progress to 100% and emit an event.
32215 2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
32217         * value.h[.in]: Added AsNPObj.
32218         * type.cpp[.in]: Initialize Type::NPOBJ correctly.
32220 2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
32222         * media.cpp: (DownloaderCompleted): The initial state of media
32223         elements that aren't autoplayed is 'Paused'.
32225 2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
32227         * media.cpp (MediaElement): Initialize 'loaded' to false.
32228         (SetSource): Don't call DownloaderComplete() if we haven't been
32229         loaded yet.
32230         (GetValue): Convert to position from ms to TimeSpan ticks.
32231         (OnLoaded): Set loaded to true and, if we have a downloader which
32232         has completed the download, call DownloaderComplete() which will
32233         then open the media file and autoplay if appropriate.
32234         (OnPropertyChanged): Protect against creating a downloader for an
32235         empty string uri.
32237 2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
32239         * media.cpp (DownloaderComplete): If we fail to open, emit the
32240         MediaFailedEvent and set some default values.
32241         (OnPropertyChanged): Don't StopLoader() here, do that all in
32242         SetSource (since SetSource needs to do it anyway).
32243         (SetSource): Call StopLoader() here and close the MediaPlayer,
32244         etc.
32246 2007-08-23  Jackson Harper  <jackson@ximian.com>
32248         * runtime.cpp|h: Make Resize use our event system (so the plugin
32249         can use it).
32250         * dependencyobject.cpp|h: Rename the add/remove handler functions
32251         to not require dependencyobjects.
32253 2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
32255         * media.cpp (OnPropertyChanged): Don't autoplay here.
32256         (advance_frame): Do ms->TimeSpan conversion here, too.
32257         (DownloaderComplete): Instead of calling ::Pause(), just set the
32258         pause state since the MediaPlayer already starts out in paused
32259         state.
32261 2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
32263         * clock.h: Add defines and methods to convert between timespans and
32264         floats.
32265         * media.cpp: Create a default (empty) Markers collection. When setting
32266         MediaPlayer time values, convert between ticks (in TimeSpans) and 
32267         milliseconds (which is what MediaPlayer expects). Emit MediaOpened
32268         when we're finished downloading a media, and if we're not autoplaying
32269         it, we're pausing it. Update uses of Value (gint64) constructors.
32270         * value.cpp|h|h.in: Remove the Value (gint64) constructor and add a 
32271         Value (gint64, Type::Kind) constructor to avoid mixups between
32272         INT64 and TIMESPAN values. Check for null before unref'ing a 
32273         dependency object.
32274         * xaml.cpp: Update uses of Value (gint64) constructors.
32275         
32276 2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
32278         * type.[cpp|h].in: Add const's here that were only added manually
32279         to the generated files.
32281 2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
32283         * mplayer.cpp: Implemented volume/balance
32285 2007-08-23  Sebastien Pouliot  <sebastien@ximian.com>
32287         * shape.cpp: Remove unneeded (cairo_close_path) and dead (break)
32288         code in Polygon::Draw.
32290 2007-08-22  Chris Toshok  <toshok@ximian.com>
32292         * clock.cpp (Tick): guard against division by zero.  gets
32293         "monotone" displaying.
32295 2007-08-22  Sebastien Pouliot  <sebastien@ximian.com>
32297         * shape.cpp|h: Provide GetTransformOrigin on Shape and remove them 
32298         from Rectangle and Ellipse. Monotone requires that on Path and I can't
32299         recall the reason I made this (while all the test cases I made still
32300         work that way).
32302 2007-08-22  Jeffrey Stedfast  <fejj@novell.com>
32304         * mplayer.cpp (MediaPlayer): Init mixer variables.
32306 2007-08-22  Jeffrey Stedfast  <fejj@novell.com>
32308         * media.cpp (advance_frame): Don't bother invalidating here, we'll
32309         do that in OnPropertyChanged() for the PositionProperty.
32310         (OnPropertyChanged): Invalidate if Position has changed and
32311         opacity > 0.0f (and we actually have video).
32312         (ComputeBounds): Use the FrameworkElement width/height if set.
32313         (GetTransformOrigin): Same.
32315 2007-08-21  Jeffrey Stedfast  <fejj@novell.com>
32317         * mplayer.cpp (Open): Merged both Open() implementations into a
32318         single one. We no longer use Open() without passing a uri (since
32319         Stop() has been implemented in a better way).
32320         (AdvanceFrame): Keep track of our current pts so that we won't get
32321         ahead of the audio if called too often.
32323 2007-08-20  Chris Toshok  <toshok@ximian.com>
32325         * rect.cpp (bounding_rect_for_transformed_rect): oops, got
32326         MAX2/MIN2 mixed up.
32328 2007-08-20  Chris Toshok  <toshok@ximian.com>
32330         * rect.h, rect.cpp (bounding_rect_for_transformed_rect): horrible
32331         name, I know, but we need this functionality.  it's not enough to
32332         use UL and LR corners of the rectangle when computing the bounding
32333         rect for a transformed rectangle.  we have to test all 4 points.
32335         * panel.cpp (ComputeBounds): use
32336         bounding_rect_for_transformed_rect.
32338 2007-08-17  Chris Toshok  <toshok@ximian.com>
32340         * dependencyobject.cpp (strcase_equal, strcase_hash): new case
32341         insensitive hash functions.
32342         (RegisterFull): the property hash tables (per type, used for
32343         GetDependencyProperty) need to be case insensitive.
32345 2007-08-17  Chris Toshok  <toshok@ximian.com>
32347         * xaml.cpp: remove Hidden from the visibility_map.
32348         (enum_from_str): if we don't see a name we recognize, try to parse
32349         it as a number.  This could maybe be someplace else.
32351         * enums.h: remove VisibilityHidden
32353         * uielement.h, uielement.cpp: remove
32354         VisibilityHidden/LAYOUT_VISIBLE
32356         * control.h: remove GetLayoutVisible.
32358         * panel.cpp (ComputeBounds): switch from item->GetLayoutVisible to
32359         item->GetVisible, since there's no need to distinguish between the
32360         two anymore.
32362 2007-08-17  Jackson Harper  <jackson@ximian.com>
32364         * clock.h: Add ToSeconds utility functions.
32366 2007-08-16  Jeffrey Stedfast  <fejj@novell.com>
32368         * list.cpp (InsertSorted): For the stable evrsion, work backwards
32369         instead of forwards (improves performance in the typical case,
32370         altho we aren't gonna sue this feature anymore - z-sorted lists
32371         will now be GPtrArrays).
32373         * garray-ext.cpp|h: New src file containing an extension to
32374         GPtrArray for inserting an item into a presorted array.
32376         * collection.cpp (VisualCollection): z_sorted is now a GPtrArray,
32377         updated all usages of it.
32379         * panel.cpp (Render): Updated now that z_sorted is an array
32380         instead of a linked list.
32382 2007-08-16  Jackson Harper  <jackson@ximian.com>
32384         * xaml.cpp: Transforms can be set as attributes, they are just a
32385         matrix in string form, that become a MatrixTransform on the
32386         object.
32387         - Made the debug a little nicer
32389 2007-08-15  Jackson Harper  <jackson@ximian.com>
32391         * xaml.cpp: Since the callback setting is now a once per a domain
32392         thing, we don't want to check if they are already set. The 'are
32393         they already set' check only worked when we were setting them at
32394         the beginning of each parsing attempt.  With our current setup it
32395         was causing everything to get loaded in the same domain.
32397 2007-08-13  Jeffrey Stedfast  <fejj@novell.com>
32399         * mplayer.cpp (AdvanceFrame): Init frame to NULL so we don't
32400         segfault if there are no packets in the queue.
32402 2007-08-13  Chris Toshok  <toshok@ximian.com>
32404         * animation.cpp (*KeyFrame::InterpolateValue): for all the
32405         keyframes, if we don't have a Value defined, don't bother
32406         interpolating anything, just return baseValue.
32408 2007-08-13  Chris Toshok  <toshok@ximian.com>
32410         * collection.cpp: fix merging/unmerging of child namescopes.
32412         * namescope.h, namescope.cpp: add a flag (merged) and a list of
32413         child merged namescopes which are searched any time this namescope
32414         is searched.  Reimplement merge as list->Append, and unmerge as
32415         list->Remove.
32417         * dependencyobject.h: add ClearValue, and make GetParent
32418         inlineable.
32420         * dependencyobject.cpp: add impl for ClearValue, and remove
32421         GetParent.  Also, when finding a name we only check non-merged
32422         namescopes.  The merged ones in the hieararchy will be checked as
32423         the children of the non-merged ones.  Given that the set of names
32424         in merged scopes can't overlap, I'm not strictly sure this is
32425         necessary, except to reproduce Silverlight's faulty lookups after
32426         subtree removal.
32428 2007-08-10  Jeffrey Stedfast  <fejj@novell.com>
32430         * collection.cpp (Clear): Unregister the object names.
32432         * dependencyobject.h (GetName): uhh... just return the value, lets
32433         not go returning "(null)" in string form.
32435 2007-08-10  Chris Toshok  <toshok@ximian.com>
32437         * runtime.h, runtime.cpp (key_press_callback): map the gdk keyval
32438         to the silverlight Key and call s->toplevel->HandleKeyDown.
32439         (key_release_callback): same.
32440         (gdk_keyval_to_key): new function, to map between gdk and
32441         silverlight.
32442         
32443         * uielement.h, uielement.cpp: add HandleKeyDown/HandleKeyUp, which
32444         just package up the args into a structure and Emit the event.
32446         * enums.h: add the Key enum from the silverlight docs.
32448 2007-08-10  Jeffrey Stedfast  <fejj@novell.com>
32450         * dependencyobject.cpp (resolve_property_path): Keep track of the
32451         last '.' so that when we go to get the DependencyProperty, we can
32452         pass the property name component rather than the full path of the
32453         property name. Fixes the color fades in Monotone.
32455 2007-08-09  Chris Toshok  <toshok@ximian.com>
32457         * animation.h, animation.cpp: if any keyframe's keytime changes,
32458         we need to re-resolve the collection.
32460 2007-08-09  Jeffrey Stedfast  <fejj@novell.com>
32462         * mplayer.cpp (Play): Only start up the io/audio threads if we
32463         aren't simply paused (e.g. if they are already alive).
32464         (IsPlaying): Return true only if playing && !paused.
32465         (audio_loop): Changed the locking logic to lock outside of the
32466         loop rather than inside. We now only release the lock inside the
32467         loop if/when the paused state changes.
32469 2007-08-08  Chris Toshok  <toshok@ximian.com>
32471         * animation.h: sprinkle Resolve() methods and resolved flags
32472         around.
32474         * animation.cpp (Storyboard::HookupAnimationsRecurse): call
32475         Resolve() on the animation as we recurse.
32476         (KeyFrameNodeComparer): compare using the keyframe's resolved
32477         keytime.
32478         (KeyFrameNodeFinder): nuke.
32479         (KeyFrameCollection::Add): just mark the collection as needing to
32480         be resolved.  don't muck with the sorted list here.
32481         (KeyFrameCollection::Insert): same.
32482         (KeyFrameCollection::Remove): same.
32483         (KeyFrameCollection::Clear): also mark the collection as
32484         unresolved.
32485         (KeyFrameCollection::GetKeyFrameForTime): use resolved keytime.
32486         (KeyFrameAnimation_ResolveKeyFrames): implement most of the
32487         algorithm posted at
32488         http://msdn2.microsoft.com/en-us/library/ms742524.aspx to resolve
32489         keytimes of different types.  this is all untested, unfortunately,
32490         as I can't get non-TimeSpan keytimes to work on SL.
32491         (*AnimationUsingKeyFrames::GetCurrentValue): use resolved
32492         keytime.
32493         (*AnimationUsingKeyFrames::GetNaturalDurationCore): resolve
32494         the key frames before using sorted_list.
32495         (*AnimationUsingKeyFrames::Resolve): override the empty
32496         default, and call KeyFrameAnimation_ResolveKeyFrames.
32498 2007-08-08  Chris Toshok  <toshok@ximian.com>
32500         * clock.cpp (Begin): make sure we handle clocks that seek in the
32501         first tick.
32503 2007-08-08  Chris Toshok  <toshok@ximian.com>
32505         * canvas.cpp (Canvas::Canvas): create a temporary namescope
32506         whenever we create a canvas.  We need this for animations that are
32507         started before the canvas is attached to the tree, or in any case
32508         where FindName is called on code associated with a subtree before
32509         it's added to the surface.
32511         * animation.cpp (Storyboard::HookupAnimationsRecurse): turns out
32512         Storyboard.TargetName can be assigned to the parent storyboard as
32513         well as the animation.  Loop up the clock hierarchy when looking
32514         for the targetname.
32515         
32516 2007-08-07  Chris Toshok  <toshok@ximian.com>
32518         * animation.cpp, animation.h
32519         (*AnimationUsingKeyFrames::GetNaturalDurationCore): no need to
32520         iterate over all the keyframes looking for the last one - just
32521         look at the last one in the sorted list.
32523 2007-08-07  Jeffrey Stedfast  <fejj@novell.com>
32525         * media.cpp (SetValue): Only crop position values if we're not
32526         updating state from the media player (we're allowed to set values
32527         outside of the duration range from the media player). Also, do our
32528         seeking here.
32529         (OnPropertyChanged): Don't do our seeking here because we can't
32530         get the actual seek position as GetValue()'s override will
32531         re-query the media player for its actual position.
32533         * mplayer.cpp (Open): Don't create the threads here anymore,
32534         create them in Play() instead. Also calculate ahead of time the
32535         new audio->pts_per_frame value which allows the video to keep even
32536         better sync with the audio (we used to base this on actual time
32537         spent playing the audio frame rather which could sometimes be off
32538         a smidgen).
32539         (AdvanceFrame): If seek_pts is non-zero, then we need to base
32540         target_pts on it rather than video->initial_pts (assuming we have
32541         no audio to sync to).
32542         (Play): Set playing = true and create the audio/io threads.
32543         (Close): A lot of the logic has been moved into a new method,
32544         StopThreads().
32545         (StopThreads): Stop the threads and reset minimal state.
32546         (Stop): Call StopThreads() and seek back to the beginning of the
32547         av stream.
32548         (Seek): Implemented.
32549         (Position): Back to subtracting the initial_pts so that we always
32550         have a range of 0:duration. If seek_pts is set and >target_pts,
32551         use that rather than target_pts so even if we are in a stopped
32552         state, querying the position will return expected results.
32553         (audio_play): Return audio->pts_per_frame rather than the actual
32554         time difference.
32556 2007-08-06  Jackson Harper  <jackson@ximian.com>
32558         * xaml.cpp: add VisualCollections.
32560 2007-08-06  Chris Toshok  <toshok@ximian.com>
32562         * clock.cpp, clock.h: this might be completely wrong and break
32563         other demos... but childless clockgroups Stop when they hit their
32564         duration, they don't SkipToFill.  fixes the silverlightclr balls
32565         demo.
32567 2007-08-06  Larry Ewing  <lewing@novell.com>
32569         * dependencyobject.h:
32570         * dependencyobject.cpp:
32571         * media.cpp:
32572         * type.h: 
32573         * type.cpp: add const to the various string apis.
32575 2007-08-06  Jeffrey Stedfast  <fejj@novell.com>
32577         * mplayer.cpp: Fixes to make it work with media files w/ no audio
32578         (or where we are unable to play the audio).
32580 2007-08-04  Chris Toshok  <toshok@ximian.com>
32582         * brush.h, brush.cpp: add VisualBrush.
32584         * xaml.cpp (xaml_init): hookup VisualBrush parsing.
32586         * value.h, type.h, type.cpp: sync up the VisualBrush stuff.
32588 2007-08-04  Chris Toshok  <toshok@ximian.com>
32590         * panel.cpp (Panel::ChildInvalidated): for the Invalidated stuff
32591         to work properly, panel needs to call
32592         FrameworkElement::Invalidate, not parent->ChildInvalidated
32593         directly.
32595         * uielement.h, uielement.cpp: add an Invalidated event for use by
32596         the visual brush.
32597         
32598 2007-08-03  Chris Toshok  <toshok@ximian.com>
32600         * collection.cpp (Collection::Add, Collection::Insert): reinstate
32601         jackson's merging code, but only do it if @data's namescope is
32602         temporary.
32604         * namescope.h, namescope.cpp: Add {Set,Get}Temporary.
32606         * xaml.cpp (xaml_create_from_str): set the namescope to be
32607         temporary if create_namescope is false.
32608         (xaml_create_from_file): same.
32610 2007-08-03  Chris Toshok  <toshok@ximian.com>
32612         * panel.h, panel.cpp: add an optimization for the 2 updates that
32613         travel down the tree (UpdateTotalOpacity and UpdateTransform).
32614         Since we're already invalidating the panel's bounds (in fact we do
32615         it before traversing), we can ignore the invalidates which come
32616         back up the tree from the children.
32618         * media.cpp, media.h: make NaturalDuration a Duration.  this gets
32619         the last of roeder's demos sorta working.
32621 2007-08-03  Jeffrey Stedfast  <fejj@novell.com>
32623         * mplayer.cpp: Whenever we change the 'paused' state, signal to
32624         the other thread(s) that it has changed so that they can go on
32625         with their lives immediately rather than waiting for the kernel to
32626         context switch.
32628 2007-08-02  Chris Toshok  <toshok@ximian.com>
32630         * control.cpp (GetTransformFor, OnSubPropertyChanged): now, before
32631         you get your panties in a twist, check this out.  If you have a
32632         control and set both its Canvas.LeftProperty and that of its root
32633         object (the return value of InitializeFromXaml), the effects are
32634         *additive*, yet GetValue on each object returns exactly what you'd
32635         expect - the value you set on it.  The only reasonable explanation
32636         for this is that Control has Canvas's layout algorithm c&p'ed into
32637         it.
32639 2007-08-02  Chris Toshok  <toshok@ximian.com>
32641         * xaml.h, xaml.cpp: switch the xaml_create_from_{file,str}
32642         functions to returning DependencyObjects instead of UIElements.
32643         in javascript you can create arbitrary xaml hierarchies (transform
32644         groups, brushes, etc).
32646         * control.cpp: need a cast here due to the above change.
32648 2007-08-02  Chris Toshok  <toshok@ximian.com>
32650         * runtime.h, runtime.cpp (Surface::Invalidate): add this call, and
32651         stuff the gtk_widget_queue_draw_area call there.
32653         * uielement.h, uielement.cpp, canvas.h, canvas.cpp, panel.h,
32654         panel.cpp, control.h, control.cpp: change the way
32655         UIElement::Invalidate works.  It used to call GetSurface() which
32656         would recurse up the tree to the root, and return the Surface*
32657         back down.  It would then call gtk_widget_queue_draw_area there.
32658         This left little room for optimization.  Switch everything over to
32659         using a new method implemented by all container classes,
32660         ChildInvalidated.  Basically Invalidate's recurse up to the root
32661         as before, but the actual gtk call happens at the root (well, 1
32662         level above it.  at the Surface itself).  In the future we can
32663         freeze Invalidates in container elements when they do things like
32664         update their transform so we'll just send 1 Invalidate up the
32665         tree, not N Invalidates for N children.
32666         
32667 2007-08-02  Jeffrey Stedfast  <fejj@novell.com>
32669         * media.cpp (DownloaderComplete): Set the CanPause and CanSeek
32670         properties.
32672         * mplayer.cpp (~MediaPlayer): Destroy the pause_mutex
32673         (IsPaused): New method.
32675         * media.cpp (MediaElement::GetValue): If the Position is being
32676         requested, query the MediaPlayer.
32677         (MediaElement::SetValue): Make sure the PositionProperty value is
32678         within bounds and force it to be if not.
32679         (MediaElement::Stop): Do nothing if we aren't playing/paused.
32680         (MediaElement::OnPropertyChanged): Call mplayer->Seek() if the
32681         position changed.
32683 2007-08-02  Chris Toshok  <toshok@ximian.com>
32685         * uielement.h, uielement.cpp: propagate opacity changes the way we
32686         do transform changes.  Store the total opacity of an item in the
32687         item, as we do with absolute_xform.  This keeps us from doing a
32688         walk up to the root of the hierarchy every time we have to draw an
32689         element (which we we were doing before in
32690         UIElement::GetTotalOpacity.)
32692         * panel.cpp, panel.h: when we update our total opacity, loop over
32693         the children telling them to update as well.
32695         * collection.cpp: propagate the panel's total opacity downward
32696         into the newly added subtree.
32698 2007-08-02  Chris Toshok  <toshok@ximian.com>
32700         * uielement.h, uielement.cpp, canvas.h, canvas.cpp: inline
32701         GetSurface/SetSurface.
32703 2007-08-02  Chris Toshok  <toshok@ximian.com>
32705         * canvas.cpp (Canvas::OnChildPropertyChanged): return true if we
32706         handle the property changing.
32708         * control.h, control.cpp: rip out all the proxying behavior.
32709         Control now works as a very specialized container.  Imagine if
32710         Panel had only 1 child, and no generalized way of manipulating it
32711         (other than initializing it from a xaml fragment), and you have
32712         Control.
32714 2007-08-01  Larry Ewing  <lewing@novell.com>
32716         * xaml.cpp: don't ever make the previous point relative.
32718 2007-08-01  Jeffrey Stedfast  <fejj@novell.com>
32720         * text.h: Removed deprecated enum values for FontWeights
32722         * media.cpp, mplayer.cpp: Updated to add features newly added with
32723         the July 2007 release of Silverlight 1.1
32725 2007-07-31  Chris Toshok  <toshok@ximian.com>
32727         * runtime.cpp (Attach): attach a namescope to the toplevel canvas
32728         if there isn't one when it's attached.
32730 2007-07-31  Jeffrey Stedfast  <fejj@novell.com>
32732         * media.cpp: NaturalDuration is actually a TimeSpan, not a
32733         Duration.
32735 2007-07-31  Chris Toshok  <toshok@ximian.com>
32737         * media.h, media.cpp: move the MediaBase events to MediaElement.
32739 2007-07-31  Jeffrey Stedfast  <fejj@novell.com>
32741         * text.h: Added StyleSimulations enum values.
32743         * xaml.cpp: Updated the StyleSimulations enum mapping.
32745 2007-07-31  Chris Toshok  <toshok@ximian.com>
32747         * text.h, text.cpp: Glyph.StyleSimulations changed from a char* to
32748         enum StyleSimulations.
32750         * xaml.cpp: add stylesimulations enum map.
32752 2007-07-30  Chris Toshok  <toshok@ximian.com>
32754         * uielement.cpp, uielement.h: add the Tag property.
32756 2007-07-30  Chris Toshok  <toshok@ximian.com>
32758         * animation.h, animation.cpp: add the three KeyFrameCollection
32759         subclass types, and switch all references to "KeyFrameCollection"
32760         to the more specific types.
32762         * xaml.cpp (xaml_init): make KeyFrameCollection a ghost element
32763         with Color/Double/PointKeyFrameCollections as subclasses.
32765         * value.h, type.h, type.cpp: sync up with the KeyFrameCollection
32766         type changes.
32767         
32768 2007-07-30  Larry Ewing  <lewing@novell.com>
32770         * color.cpp: make sure that we size expand 3 digit color
32771         specifications properly.
32773 2007-07-30  Chris Toshok  <toshok@ximian.com>
32775         * uielement.h, uielement.cpp: remove InsideObject from here, and
32776         move its warning to Visual::InsideObject instead.
32778         * visual.h, visual.cpp: add visual.cpp, and move implementation of
32779         InsideObject there.
32781         * Makefile.am (libmoon_la_SOURCES): add visual.cpp
32783 2007-07-30  Larry Ewing  <lewing@novell.com>
32785         * xaml.cpp: correct smooth path segments to use the correct value for
32786         cp1 and don't try to make it relative because all the sources are
32787         absolute.  Test case at http://intertwingly.net/stories/2007/05/06/?icon=caution
32788         
32789 2007-07-30  Chris Toshok  <toshok@ximian.com>
32791         * clock.h, clock.cpp: add very naive, probably broken first pass
32792         at Clock::Seek.
32794 2007-07-30  Chris Toshok  <toshok@ximian.com>
32796         * geometry.h, geometry.cpp: PathFigure.IsFilled is gone in RC1.
32798 2007-07-30  Chris Toshok  <toshok@ximian.com>
32800         * brush.h, brush.cpp: track breaking change of the
32801         Brush.Transform/RelativeTransform properties - they're speced to
32802         be Transforms, not TransformGroups.
32804 2007-07-29  Chris Toshok  <toshok@ximian.com>
32806         * collection.h, collection.cpp: change "ResourceCollection" to
32807         "ResourceDictionary".
32809         * uielement.cpp: same.
32811         * type.cpp, type.h, value.cpp, value.h: same.
32813         * xaml.cpp: same.
32815 2007-07-27  Chris Toshok  <toshok@ximian.com>
32817         * xaml.cpp (xaml_set_property_from_str): look up the enum map from
32818         the property name, not the value.
32820 2007-07-27  Chris Toshok  <toshok@ximian.com>
32822         * transform.h, transform.cpp: cache the transformation matrix once
32823         we recompute it.  This gives us the responsiveness of delayed
32824         updating without the cost of calculating the matrix once per
32825         object associated with it.  a property change just sets the
32826         "need_update" flag, which causes a recompute on the next
32827         GetTransform call.
32829 2007-07-27  Larry Ewing  <lewing@novell.com>
32831         * uielement.cpp: implement initial support for OpacityMask.
32833 2007-07-26  Miguel de Icaza  <miguel@novell.com>
32835         This implements support for relative MediaElement sources and
32836         makes all of them go through the downloader, like we do for
32837         images.
32838         
32839         * media.cpp (MediaElement): Do an implementation of SetSource
32840         similar to the one in Image.   Although there is some code that
32841         could be shared, the problem is that some parameters get in the
32842         way.   
32844         (MediaElement::DownloaderComplete): Move the playback here. 
32845         
32846         (StopLoader): Utility routine, factor this out also on the Image
32847         case, and hook this up to the destructor of Image and
32848         MediaElement.
32849         
32851 2007-07-25  Chris Toshok  <toshok@ximian.com>
32853         * media.h, media.cpp: add the MediaElement events,and emit
32854         DownloadProgressChanged and CurrentStateChanged.
32856 2007-07-25  Chris Toshok  <toshok@ximian.com>
32858         * media.h, media.cpp: register the 3 MediaBase events.  now we
32859         need to figure out where to emit them.
32861 2007-07-25  Jackson Harper  <jackson@ximian.com>
32863         * value.cpp: Assign the kind for NPOBJs.
32865 2007-07-25  Miguel de Icaza  <miguel@novell.com>
32867         * openfile.cpp (open_file_dialog_show): Change this method to
32868         return an array with all the selected files.   
32870 2007-07-24  Chris Toshok  <toshok@ximian.com>
32872         * runtime.h, runtime.cpp: permit setting of the the surface's
32873         background color, which is used to fill the widget before we
32874         render the toplevel canvas.  only do this, though, if the canvas
32875         is not transparent.
32877 2007-07-24  Chris Toshok  <toshok@ximian.com>
32879         * runtime.cpp (Surface::Attach): call Canvas::SetSurface instead
32880         of making the assignment.
32882         * canvas.h, canvas.cpp: make surface private, and add SetSurface
32883         for runtime.cpp to use.
32885 2007-07-24  Chris Toshok  <toshok@ximian.com>
32887         * brush.h, brush.cpp: make ImageBrush::SetSource take a const
32888         char*.
32890 2007-07-24  Jackson Harper  <jackson@ximian.com>
32892         * type.h.in: Add the NPOBJ type.
32893         * value.h.in: Add the npobj value, it's just stored as a pointer
32894         so that we don't become dependent on mozilla.
32895         * value.cpp|h,type.h: sync.
32897 2007-07-24  Jackson Harper  <jackson@ximian.com>
32899         * typegen.cs: Kind.cs lives in agmono now.
32902 2007-07-24  Chris Toshok  <toshok@ximian.com>
32904         * media.h, media.cpp: const-ify the PartName argument of the
32905         SetSource methods.  also, ref the new downloader before unreffing
32906         the old one in Image::SetSource.  they could be the same object.
32908 2007-07-24  Chris Toshok  <toshok@ximian.com>
32910         * geometry.cpp (RectangleGeometry::Draw): if the geometry's rect
32911         is NULL, return early.
32913 2007-07-23  Chris Toshok  <toshok@ximian.com>
32915         * Makefile.am (libmooninclude_headers): add some missing headers.
32917         * error.h: split out the error classes here.
32919         * libmoon.h: include error.h
32921         * xaml.h: remove the error classes from here.
32923         * xaml.cpp: include error.h
32925 2007-07-23  Miguel de Icaza  <miguel@novell.com>
32927         * runtime.cpp: Removed the timer code from here, move to plugin.
32929 2007-07-20  Chris Toshok  <toshok@ximian.com>
32931         * xaml.cpp (custom_add_child): this method is what's called when
32932         we add a child to an element of a custom namespace.  Trouble is,
32933         it might be a panel subclass.  If it is, and the child is a
32934         UIElement subclass, go ahead and add the child using
32935         panel_child_add.  This gets the Loaded events working properly in
32936         the chess demo (the trouble was that the custom children weren't
32937         even added to the tree, so their OnLoaded methods weren't being
32938         called)
32940 2007-07-20  Miguel de Icaza  <miguel@novell.com>
32942         * collection.cpp: Add support for RemoveAt. 
32944         * runtime.cpp (html_timer_timeout_add): Added helper routine to
32945         setup Html timeouts.
32947 2007-07-20  Chris Toshok  <toshok@ximian.com>
32949         * canvas.cpp, canvas.h, panel.cpp, panel.h: move much of the guts
32950         from Canvas to Panel.  I consider this cleaning up the source, as
32951         it's entirely possible to write Panel subclasses that aren't
32952         Canvas subclasses, but if you did that you'd have no
32953         rendering/event handling.
32955         Now pretty much all logic that involves iterating over the list of
32956         children is in Panel.  This also greatly simplifies Canvas.  It is
32957         now just a Panel with 2 interesting things about it: 1) it
32958         provides 2 attached properties to lay out its children, and 2) it
32959         allows the surface to dictate its bounds if it's the toplevel
32960         element.
32962 2007-07-20  Chris Toshok  <toshok@ximian.com>
32964         * downloader.cpp (Open): set the uri of the downloader.
32966 2007-07-20  Chris Toshok  <toshok@ximian.com>
32968         * dependencyobject.cpp: allocate the event hash/ptrarray lazily,
32969         so the potentially large number of objects which don't register
32970         events don't allocate them.
32972 2007-07-20  Chris Toshok  <toshok@ximian.com>
32974         * clock.h, clock.cpp: lock around access to the tick_call list, so
32975         tick calls can be added from other threads.
32977 2007-07-16  Miguel de Icaza  <miguel@novell.com>
32979         * media.cpp (SetSource): Also handle Completed.
32981         * downloader.cpp (Send): If a send operation is performed on an
32982         object that has completed its operation, immediately emit the
32983         finished event or error event.
32985         (Open): During open invalidate the state, to
32986         ensure that new downloads are properly triggered. 
32988 2007-07-16  Chris Toshok  <toshok@ximian.com>
32990         * frameworkelement.h, frameworkelement.cpp: we need
32991         framework_element_new so managed subclasses of FrameworkElement
32992         are possible.
32994         * uielement.h, uielement.cpp: same for this type.
32996 2007-07-13  Chris Toshok  <toshok@ximian.com>
32998         * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
32999         normally we'd only update the bounds of this element on a
33000         width/height change, but if the render transform is someplace
33001         other than (0,0), the transform needs to be updated as well.
33003 2007-07-12  Chris Toshok  <toshok@ximian.com>
33005         * runtime.h, runtime.cpp, uielement.cpp, uielement.h: Add mouse
33006         capturing.  This should be on Visual and not UIElement, but we
33007         don't dispatch events that way.
33009 2007-07-12  Chris Toshok  <toshok@ximian.com>
33011         * downloader.h, downloader.cpp: make the Downloader object a bit
33012         more C++ friendly, and make all the private data private.
33014         Also, take this opportunity to switch to using RegisterEvent/Emit
33015         to generate events, instead of the custom listeners.  This will
33016         let JS hook up to the events.
33018         * media.h, media.cpp: track the downloader changes.
33020 2007-07-11  Jackson Harper  <jackson@ximian.com>
33022         * collection.cpp: Comment out the namescope merging stuff for now,
33023         it causes some regressions.
33025 2007-07-12  Jackson Harper  <jackson@ximian.com>
33027         * xaml.cpp: Restart the whole attribute parsing loop when the
33028         reparse flag is set, otherwise the first attribute will be
33029         skipped.
33031 2007-07-11  Chris Toshok  <toshok@ximian.com>
33033         * uielement.cpp (UIElement::UIElement): the event names need to
33034         match those used by microsoft.  makes it easier to handle the
33035         event hooking up in the plugin, where the event names are used.
33037 2007-07-11  Chris Toshok  <toshok@ximian.com>
33039         * xaml.cpp (xaml_set_property_from_str): the plugin does its own
33040         resolution of properties now, so it doesn't need to pass the
33041         property name.  Change this to take the DependencyProperty*
33042         instead.
33044         * xaml.h: change prototype for xaml_set_property_from_str.
33046 2007-07-11  Jackson Harper  <jackson@ximian.com>
33048         * collection.cpp: When new objects are added to a collection, try
33049         to merge them into the containers namescope.
33051 2007-07-11  Jackson Harper  <jackson@ximian.com>
33053         * xaml.cpp: We need to stop parsing if there is an error while
33054         resolving a custom namespace type.
33056 2007-07-10  Chris Toshok  <toshok@ximian.com>
33058         * dependencyobject.cpp (resolve_property_path): we need to reset
33059         "expression_found" when we hit a '.' so that we'll lookup what
33060         comes after it.
33062 2007-07-10  Chris Toshok  <toshok@ximian.com>
33063         
33064         * dependencyobject.cpp (resolve_property_path): we need to be able
33065         to handle more than just single digit indexers.  use strtol and
33066         recompute 'i' afterward.
33068         * canvas.cpp (Canvas::InsideObject): revert the change that helped
33069         dr.popper because it breaks lunareclipse.
33071 2007-07-09  Chris Toshok  <toshok@ximian.com>
33073         * demo.cpp: don't pass the parser callbacks to the individual xaml
33074         functions.
33076         * control.h, control.cpp: don't pass the parser callbacks to
33077         initialize_from_xaml.
33079         * xaml.h, xaml.cpp: remove the parser callbacks from the
33080         individual parsing methods, and add xaml_set_parser_callbacks.
33082 2007-07-09  Jeffrey Stedfast  <fejj@novell.com>
33084         * mplayer.cpp (audio_loop): If we break out of the loop because
33085         the media player was stopped, don't forget to unlock the pause
33086         mutex.
33087         (Close): Don't free the uri here.
33088         (~MediaPlayer): Free it ehre, though.
33090 2007-07-09  Chris Toshok  <toshok@ximian.com>
33092         * uielement.h, uielement.cpp: we need to register the
33093         KeyUp/KeyDown events (even if we aren't emitting them) to keep
33094         from getting a warning when running aglayoutdemo.
33096         * xaml.cpp (timespan_from_str): port our System.TimeSpan.Parse
33097         method (and remove all error handling, which should likely go back
33098         in) and replace the previous implementation.  It was failing to
33099         parse timespans like this: 0:0:0.20000000 because it was treating
33100         it as if I wanted "20000000" tenths of a second, instead of 2.
33101         This makes the 'pop' animation in dr.popper actually show up.
33102         
33103 2007-07-09  Chris Toshok  <toshok@ximian.com>
33105         * animation.cpp: fix some missing NotifyAttacheesOfPropertyChange
33106         calls.
33107         (Storyboard::Begin): This is a dubious change.  Remove the check
33108         to see if we weren't already Active.  This fixes the calendar view
33109         in airlines, since there's a window where the start animation is
33110         startable when we enter a day, but the end animation isn't (since
33111         it's still active) when we leave.  So we're left with a selected
33112         day.
33114         * clock.cpp: instead of Stopping clocks that come to the end of
33115         their active period, move to the Filling state.  ClockGroups with
33116         automatic duration and no Active children still stop correctly.
33118 2007-07-08  Chris Toshok  <toshok@ximian.com>
33120         * many-files (again!): another, smaller change to the event stuff.
33121         stop using strings for everything that we can.  Register events at
33122         object construction time, and use those id's for everything else.
33123         The string interface is still around because of
33124         EventTrigger::Set/RemoveTarget, as well as the managed code.
33126         One further change that's needed - the id's are per-instance now,
33127         which is stupid.  they should be static.
33129         This further cuts down the work (in terms of hash functions) that
33130         needs to be performed in order to dispatch an event.
33131         
33132 2007-07-08  Chris Toshok  <toshok@ximian.com>
33134         * many-files: fairly big change.  Stick the EventObject class
33135         between Base and DependencyObject in the hierarchy, and get rid of
33136         DependencyObject's "events" field.  Get rid of all the registered
33137         events on surface, and emit them directly from the elements where
33138         they occur.  This allows us to remove the Surface* parameter to
33139         all the event methods.  Also, change the EventHandler signature to
33140         include the sender of the event as well as a "calldata" pointer,
33141         which is where we stuff the unmanaged MouseEventArgs (and later
33142         will the KeyboardEventArgs).
33144         Next step is to add RegisterEvent in EventObject and use that
33145         integer id everywhere instead of the string name when we Emit
33146         events.
33148 2007-07-07  Chris Toshok  <toshok@ximian.com>
33150         * dependencyobject.h: add GetName() instance method.
33152         * dependencyobject.cpp (dependency_object_get_name): and call it
33153         here.
33155         * shape.h, shape.cpp (Shape::GetSizeForBrush): we need this
33156         implementation here since FrameworkElement just goes by
33157         Width/Height.
33159         * canvas.cpp (Canvas::FindMouseOver): remove the "still over the
33160         same element" optimization.  it's stupid and doesn't work. what
33161         was i thinking?
33162         (Canvas::ComputeBounds): simplify this by using
33163         item->GetLayoutVisible instead of item->GetValue.
33164         (Canvas::Render): enable the rendering optimization where we only
33165         bother rendering elements whose bounds intersect those of the
33166         rectangle we're repainting.  This seriously speeds up airlines.
33168         * uielement.cpp, uielement.h: add GetLayoutVisible() method, and
33169         another flag.  now the three VisibilityProperty states are
33170         represented by two flags.
33172         Also, remove the implementation of GetSizeForBrush (not all
33173         UIElements are stroked) and warn callers.
33175         * control.cpp: Attach to the real object, and report back its
33176         property changes to our parents.  Also, control_initialize_from_xaml
33177         should call Control::InitializeFromXaml.
33179         * control.h: override the 3 Get*Visible methods from UIElement,
33180         and return our real_object's state.
33182         
33184 2007-07-07  Jeffrey Stedfast  <fejj@gnome.org>
33186         * demo.cpp (FileDownloadState::Send): Only notify complete if uri
33187         != NULL (if uri is NULL, then it means it couldn't be opened).
33188         (FileDownloadState::Open): notify error if we can't open the file.
33190         * mplayer.cpp: Fix to make sure we have
33191         AVCODEC_MAX_AUDIO_FRAME_SIZE bytes left in our output buffer
33192         before calling decode to prevent an ffmpeg warning.
33194 2007-07-07  Chris Toshok  <toshok@ximian.com>
33196         * brush.cpp: make sure to use GetSizeForBrush for everything
33197         instead of cairo_stroke_extents, which won't work for non-stroked
33198         elements like canvases.  Also, notify changes to the
33199         GradientStopCollection up the hierarchy properly.
33201         * frameworkelement.h, frameworkelement.cpp: add a GetSizeForBrush
33202         implementation for FrameworkElement so Canvases (and other
33203         uielement subclasses) can have brushes assigned to them (canvas
33204         uses it for its background.)
33206         * canvas.cpp (Canvas::Render): remove the unused label.
33208 2007-07-06  Miguel de Icaza  <miguel@novell.com>
33210         * media.cpp: Do not pass the filename as the result now on the
33211         calls.   Code must use the downloader_get_response_text or
33212         downloader_get_response_file to get the contents from the download
33213         (as the request will include the part name).
33215         * downloader.cpp: Add a cache for zip file parts.
33217         * media.h (Image): track the part name that was requested on the
33218         call to SetSource.
33220 2007-07-06  Chris Toshok  <toshok@ximian.com>
33222         * canvas.cpp (Canvas::ComputeBounds): if the width/height
33223         framework element properties haven't been set (their default is
33224         0.0), then don't union it with the rest of our bounds.
33226 2007-07-06  Chris Toshok  <toshok@ximian.com>
33228         * runtime.h, runtime.cpp: continue the marginalization of
33229         Surface-as-general-data-dumping-ground by passing the cairo
33230         context to all the event handlers that need it (all but Leave, but
33231         should we make this distinction?).
33232         
33233         Make tons of stuff private that doesn't need exposing.  Add
33234         accessors for the easier things, and leave the callbacks public
33235         for now.  Also clean up the partially C/partially c++
33236         implementation in runtime.cpp.  Now the C api is a thin wrapper
33237         around instance method calls, and all the gtk/clock event
33238         callbacks are static methods so they can still access the private
33239         data.
33241         * canvas.h, canvas.cpp, control.h, control.cpp, uielement.h,
33242         uielement.cpp: fallout from the event signature changes - add
33243         cairo_t* to a lot of places, basically.
33245         * demo.cpp: no need to use the C api for Surface here.  just use
33246         the c++ one.
33248 2007-07-06  Jeffrey Stedfast  <fejj@novell.com>
33250         * media.cpp (OnPropertyChanged): Oops, be consistant with other
33251         implementations - only chain up if it wasn't a property owned by
33252         us.
33254         * text.cpp: We don't use TextBlock::Inlines anymore, so remove it
33255         to save object size.
33257         * media.cpp (OnPropertyChanged): Fixed to always notify property
33258         listeners and chain up to our parent impl.
33260 2007-07-06  Miguel de Icaza  <miguel@novell.com>
33262         * downloader.cpp: Implement the zip file support for the
33263         downloader using miniZip, from:
33265                 http://www.winimage.com/zLibDll/minizip.html
33267         The implementation is in C++, so there are no needs to delegate
33268         this to the managed side as previously planned. 
33270         There are two APIs: one returns a filename, the other returns the
33271         file loaded into memory, with the size of the memory blob.
33273 2007-07-06  Chris Toshok  <toshok@ximian.com>
33275         * uielement.h, uielement.cpp (UIElement::OnPropertyChanged): keep
33276         track of the visibility (boolean, not three-state) and hit test
33277         visibility state in our flags.  implement GetVisible() and
33278         GetHitTestVisible() using the flags.
33280         * canvas.cpp (Canvas::CheckOver): use GetVisible and
33281         GetHitTestVisible to avoid property lookups when dispatching
33282         events.
33284 2007-07-06  Chris Toshok  <toshok@ximian.com>
33286         * runtime.cpp (measuring_context_create): we keep a singleton
33287         measuring context now.
33288         (measuring_context_destroy): do nothing here.  it's freed in
33289         runtime_shutdown.
33290         (runtime_shutdown): free up our measuring context.
33292         * canvas.cpp, canvas.h, control.cpp, control.h,
33293         frameworkelement.cpp, frameworkelement.h, shape.cpp, shape.h,
33294         text.cpp, text.h, uielement.cpp, uielement.h, visual.h: change
33295         InsideObject to take the cairo_t* instead of the Surface.
33296         
33297 2007-07-06  Chris Toshok  <toshok@ximian.com>
33299         * runtime.cpp (Surface::SetCursor): new method, used in the event
33300         code to update the cursor as we enter/leave elements.
33302         * runtime.h: add method, cursor_instance field, and move the body
33303         of the Surface ctor (and initializations) to the .cpp file.
33304         
33305         * xaml.cpp: fix name of Cursor property enum mapping.
33307         * canvas.h, canvas.cpp, uielement.h, uielement.cpp, control.h,
33308         control.cpp: add MouseCursor* arg to HandleMotion so we can report
33309         back cursor changes on elements.
33311         Also, in canvas.cpp, implement IsHitTestVisible checking in
33312         CheckOver.
33314         * enums.h: add the MouseCursor enum.
33315         
33316 2007-07-05  Chris Toshok  <toshok@ximian.com>
33318         * Makefile.am (libmooninclude_headers): remove cutil.h
33319         (libmoon_la_SOURCES): remove cutil.cpp
33321         * cutil.h, cutil.cpp: remove.  no longer necessary.
33323         * text.cpp (TextBlock::ComputeBounds): load the identity matrix
33324         before stroke/fill_extents to work around a cairo bug that was
33325         giving us enormous bounds on rotated elements.  also, -1 from x/y
33326         and +2 to width/height of our bounds.
33328         * media.cpp (MediaElement::ComputeBounds): load the identity
33329         matrix before stroke/fill_extents to work around a cairo bug that
33330         was giving us enormous bounds on rotated elements.  also, -1 from
33331         x/y and +2 to width/height of our bounds.
33332         (Image::ComputeBounds): same.
33334         * shape.cpp (Shape::DoDraw): only call cairo_new_path if there's
33335         no stroke, we drew it, and do_op was true.
33336         (Shape::ComputeBounds): load the identity matrix before
33337         stroke/fill_extents to work around a cairo bug that was giving us
33338         enormous bounds on rotated elements.  also, -1 from x/y and +2 to
33339         width/height of our bounds.
33341         * uielement.cpp (OnSubPropertyChanged): we don't need to watch for
33342         subproperty changes on RenderTransformOrigin, since it's a point
33343         and not a dependency object.
33345 2007-07-05  Chris Toshok  <toshok@ximian.com>
33347         * runtime.cpp, runtime.h: store the last mouse position of events
33348         so that we can continue to update after the clock tick (and
33349         provide motion/enter/leave events to elements that might have
33350         moved under the pointer).
33352         The "update-input" event isn't presently emitted (see clock.cpp)
33353         because it results in this code calling HandleMotion on every
33354         tick, which ends up emitting the C# event (which is wrong).
33356         * clock.h, clock.cpp: add a (presently unused) phase to the clock
33357         tick to update the current mouse over after we've updated our
33358         clocks (and therefore possibly updated the transforms on
33359         elements).
33361 2007-07-05  Chris Toshok  <toshok@ximian.com>
33363         * dependencyobject.cpp (dependency_object_get_name): change this
33364         to return the x:Name value if there is one (and "(null)" if not).
33365         (dependency_object_get_type_name): and make this function do the
33366         job originally done by _get_name.
33368         * dependencyobject.h: add dependency_object_get_type_name
33369         prototype.
33371 2007-07-05  Chris Toshok  <toshok@ximian.com>
33373         * uielement.h, uielement.cpp, canvas.h, canvas.cpp: refactor the
33374         mouse event code so that the Handle* calls return void, like the
33375         Enter/Leave calls do.  Also, all checks for "inside"-ness happen
33376         in the canvas/parent object.  Also factored out the loop over
33377         children to "FindMouseOver", with the checks happening in
33378         "CheckOver".
33380         This needs more testing to make sure that we're still emitting
33381         events in the right order/amount as silverlight.
33383         In uielement.cpp, also add support for showing the bounding
33384         rectangle.
33386         * control.h, control.cpp: track event refactoring.
33388         * frameworkelement.cpp (FrameworkElement::InsideObject): remove
33389         the bounding rect check.  that's handled in the parent object now.
33391 2007-07-04  Chris Toshok  <toshok@ximian.com>
33393         * media.cpp, media.h: rework our caching for images.  we now
33394         properly refcount things, don't leak the filename (or the
33395         surface), share 1 xlib surface amongst all Image's, and don't
33396         crash.  improvements all around!
33398 2007-07-04  Miguel de Icaza  <miguel@novell.com>
33400         * value.cpp (Value): Add a couple of extra cases I had missed
33401         where we should be using g_new instead of new as FreeValue always
33402         uses g_free.
33404 2007-07-03  Jackson Harper  <jackson@ximian.com>
33406         * xaml.cpp: Add the stylus types and some missing collections,
33407         this brings us up to sync with everything implemented in
33408         moonlight.
33410 2007-07-03  Chris Toshok  <toshok@ximian.com>
33412         * shape.cpp (Shape::DoDraw): if we aren't going to stroke (but we
33413         filled), we need to call cairo_new_path.
33415 2007-07-03  Jackson Harper  <jackson@ximian.com>
33417         * xaml.cpp: Some post parsing memory cleanup and a little extra
33418         debug code.
33420 2007-07-03  Chris Toshok  <toshok@ximian.com>
33422         * text.h: add prototype for text_block_set_font_source.
33424 2007-07-03  Chris Toshok  <toshok@ximian.com>
33426         * shape.cpp, shape.h: add Shape::OnSubPropertyChanged to deal with
33427         brush property changes.  Property chain up to
33428         Shape::OnSubPropertyChanged from Path::OnSubPropertyChanged.
33429         (Shape::ComputeBounds): we need to do the fill, so pass true as
33430         consider_fill to DoDraw.  otherwise a stroke-less filled shape
33431         gets bounds with w == h == 0.0.
33433 2007-07-03  Chris Toshok  <toshok@ximian.com>
33435         * collection.cpp (VisualCollection::Clear): force the invalidate
33436         when we update our bounds.  Also, don't do anything if the length
33437         of the collection is 0.
33439 2007-07-03  Chris Toshok  <toshok@ximian.com>
33441         * canvas.cpp (Canvas::ComputeBounds): we need to always include
33442         our FrameworkElement::Width/Height in our bounds computation,
33443         instead of only consulting them if we have no children.
33445 2007-07-03  Chris Toshok  <toshok@ximian.com>
33447         * media.cpp, media.h: add an image surface cache.  we don't cache
33448         the xlib surface unfortunately, so there's still a slowdown from
33449         generating 1 per Image for shared pixbufs.
33450         
33451 2007-07-03  Miguel de Icaza  <miguel@novell.com>
33453         * collection.cpp: Add support for reporting errors if the iterator
33454         gets out of sync with the collection.
33456         * demo.cpp: Updated to the new downloader interface.
33458         * downloader.cpp: Eliminates the in-memory buffer during
33459         download. 
33461         We still do the progressive updates as those are necessary for the
33462         progress indicators, and if we ever need to hook up during
33463         progressive downloads again.   
33465         But now downloads on completion must notify the downloader of the
33466         local file where the download contents have been placed (necesary
33467         for implementing the Zip-file support).
33469         (Downloader): eliminate our in-memory buffer byte_array_contents 
33471         (downloader_notify): takes a new extra argument, overloaded
33472         depended on the operation.
33473         
33474         (get_response_text): currently not implemented, it needs to be
33475         implemented by a callback into managed code so we can use ZipLib
33476         (unless we can find a suitable unmanaged version).
33478         * media.cpp: Remove the stale code for progressive image
33479         downloads. 
33480 2007-07-02  Miguel de Icaza  <miguel@novell.com>
33482         * media.cpp (SetSource): If we had a previous downloader, unref
33483         it.  
33485 2007-07-02  Chris Toshok  <toshok@ximian.com>
33487         * collection.cpp (VisualCollection::Remove): punt on the optimized
33488         behavior for now.  invalidating just the item should work if the
33489         item's bounds are correct, but for some reason the map path
33490         segments in the airline demo aren't redrawing properly.  So, for
33491         now we just invalidate the parent container when an item is
33492         removed.
33494         * control.h, control.cpp: override GetValue to report back values
33495         from our real_object if there is one, from us otherwise.  and
33496         override SetValue to set values both on us and the real_object if
33497         there is one.
33499         Also, do nothing in our ComputeBounds call.  Our GetBounds always
33500         returns the right thing (the bounds of the real_object), so
33501         there's no need to do any computation.
33503         lastly, remove the OnChildPropertyChanged. This is only invoked
33504         for attached properties, so we shouldn't ever be called.
33506 2007-07-02  Chris Toshok  <toshok@ximian.com>
33508         * canvas.cpp (Canvas::OnChildPropertyChanged): we don't need to
33509         updatebounds/invalidate here.  UpdateTransform will take care of
33510         that for us.
33512 2007-07-02  Chris Toshok  <toshok@ximian.com>
33514         * shape.cpp (Shape::OnPropertyChanged): turns out we need to
33515         update our bounds on the FillProperty changing as well, for shapes
33516         that aren't stroked.
33518 2007-07-02  Miguel de Icaza  <miguel@ximian.com>
33520         * collection.cpp: Guard for cases where we are not attached to
33521         anything (closure is set to NULL).
33523 2007-07-02  Chris Toshok  <toshok@ximian.com>
33525         * collection.cpp (collection_iterator_move_next): rework the logic
33526         here so we don't do the "current = next" assignment if
33527         iterator->first is true.
33528         (VisualCollection::Add): fix g++ warning.
33529         (TriggerCollection::SetVal): return the old element.
33531 2007-07-02  Jackson Harper  <jackson@ximian.com>
33533         * xaml.cpp: Convert char data into Runs and set them on
33534         TextBlocks, also flush the char data when starting elements, so
33535         things like: <TextBlock>line one<LineBreak />line two</TextBlock>
33536         work properly. <TextBlock><TextBlock.Inlines>text... is illegal
33537         though.
33539 2007-07-02  Miguel de Icaza  <miguel@novell.com>
33541         * value.cpp: Use g_malloc/g_free as the managed code is not able
33542         to use C++ new operator, so we have a potential error when we
33543         mismatch g_new with new and g_free with delete. 
33545         Reported by Valgrind.
33547         * uielement.cpp: Add new helper method needed by Alan.
33549 2007-07-01  Chris Toshok  <toshok@ximian.com>
33551         * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
33552         notify attachees here.
33554         * text.cpp (TextBlock::OnPropertyChanged): need to notify on
33555         Actual Width/Height property changes, even if we don't recalc
33556         anything.
33558 2007-07-01  Chris Toshok  <toshok@ximian.com>
33560         * panel.cpp (Panel::OnSubPropertyChanged): oops, didn't follow the
33561         guidelines here.  need to chain up to FrameworkElement.  fixes
33562         airline demo.
33564 2007-07-01  Chris Toshok  <toshok@ximian.com>
33566         * shape.cpp (Line::OnPropertyChanged): use recommended pattern.
33567         (Polygon::OnPropertyChanged): same.
33568         (Path::OnPropertyChanged): same.
33569         (Shape::OnPropertyChanged): same.
33570         (Rectangle::OnPropertyChanged): same.
33572         * geometry.cpp (GeometryGroup::OnPropertyChanged): use recommended
33573         pattern.
33574         (PathGeometry::OnPropertyChanged): same.
33575         (PathFigure::OnPropertyChanged): same.
33577         * brush.cpp (Brush::OnPropertyChanged): use the recommended
33578         pattern.
33579         (SolidColorBrush::OnPropertyChanged): same.
33580         (GradientBrush::OnPropertyChanged): same.
33581         (LinearGradientBrush::OnPropertyChanged): same.
33582         (RadialGradientBrush::OnPropertyChanged): new method.
33585         * brush.h: add RadialGradientBrush::OnPropertyChanged.
33587         * animation.cpp (animation_init): mark the storyboard TargetName
33588         and TargetProperty properties as attached.
33590         * text.cpp (Inline::OnPropertyChanged): follow recommended pattern
33591         for chaining.
33592         (Run::OnPropertyChanged): same.
33593         (Inline::OnSubPropertyChanged): add to handle the inline's
33594         foreground brush changing.
33596         * text.h: add Inline::OnSubPropertyChanged.
33598         * panel.h, panel.cpp: add OnSubPropertyChanged for the panel's
33599         background brush, and invalidate whenever it changes.
33601 2007-06-30  Chris Toshok  <toshok@ximian.com>
33603         * shape.cpp (Shape::OnPropertyChanged): when need to update our
33604         bounding rectangle when a number of the stroke properties change.
33605         Also update them when the stroke itself is changed.
33607 2007-06-29  Chris Toshok  <toshok@ximian.com>
33609         * text.cpp, text.h: Add back in TextBlock::OnSubPropertyChanged -
33610         we need it for the foreground property.  Make this explicit.
33611         also, add an OnSubPropertyChanged method for Glyphs, to handle the
33612         FillProperty.
33614 2007-06-29  Chris Toshok  <toshok@ximian.com>
33616         * uielement.cpp (UIElement::UpdateBounds): oops.  really only do
33617         that invalidate if the flag is true.
33619 2007-06-29  Chris Toshok  <toshok@ximian.com>
33621         * text.cpp: Do CalcActualWidtHeight on any property that might
33622         cause a change.  This is going to be a performance hit, but we
33623         need to take this step backward to get things working with the new
33624         ComputeBounds stuff.  we'll need to reoptimize this so that it
33625         still works.  Make sure to listen to OnCollectionChanged so we'll
33626         update our bounds (and recompute our actual width/height) on
33627         Inlines collection changes.
33629         * text.h: remove OnSubPropertyChanged (since it's not used.)  Add
33630         OnCollectionChanged.
33631         
33632 2007-06-29  Chris Toshok  <toshok@ximian.com>
33634         * uielement.cpp (UIElement::OnPropertyChanged): reformat this so I
33635         can actually read it, and notify attachees of our property
33636         changes.  this makes ZIndex setting resort the parent panels list.
33638         * uielement.h: add an arg to UpdateBounds (a bool that defaults to
33639         false) to force an invalidation of the new bounds.
33641 2007-06-29  Chris Toshok  <toshok@ximian.com>
33643         * panel.h, panel.cpp: okay, i'm stupid.  it's not
33644         OnChildPropertyChanged either.  it's OnCollectionChanged.  we
33645         seriously need to clean this stuff up.
33647 2007-06-29  Chris Toshok  <toshok@ximian.com>
33649         * panel.h, panel.cpp: child ZIndex property changes are reflected
33650         via OnChildPropertyChanged, not OnSubPropertyChanged.
33652 2007-06-28  Chris Toshok  <toshok@ximian.com>
33654         * canvas.cpp (Canvas::ComputeBounds): fix the debug printf's.
33656         * collection.cpp (VisualCollectoin::Clear): update the panel's
33657         bounds after the clear so we redraw everything.
33659 2007-06-27  Chris Toshok  <toshok@ximian.com>
33661         * uielement.h: stop using x1,y1,x2,y2 for bounds, use a Rect
33662         instead.  Also, rename getbounds to ComputeBounds(), and add a new
33663         GetBounds which returns the bounding rectangle.
33665         * canvas.cpp (Canvas::ComputeBounds): rename GetBounds to this.
33666         Simplify it a bit by using Rect's instead of the 4 doubles.  Note
33667         that the calls to item->GetBounds do *not* cause item's bounds to
33668         be computed.
33669         (Canvas::OnChildPropertyChanged): just call UpdateTransform on the
33670         child when its Left/Top properties change.
33671         (Canvas::HandleMotion): use Rect.PointInside to clean up the
33672         check.
33673         (Canvas::HandleButton): same.
33674         (Canvas::Render): remove the local "item_rect" and just use the
33675         item's bounds.
33677         * uielement.cpp (UIElement::UpdateBounds): remember the old
33678         bounds, compute the new bounds, and (if they're different)
33679         invalidate both and chain up to the parent's UpdateBounds method.
33680         (UIElement::UIElement): init the bounds.
33681         (UIElement::OnPropertyChanged): when switch away from a lot of the
33682         FullInvalidate calls.  If the clip or OpacityMask is changed, just
33683         Invalidate.  If the RenderTransform or RenderTransformOrigin is
33684         changed, called UpdateTransform.
33685         (UIElement::UpdateTransform): all UpdateBounds, since it's
33686         uncommon that our transform will change without our bounds
33687         changing..
33688         (UIElement::OnSubPropertyChanged): These shouldn't be necessary,
33689         but again switch away from FullInvalidate to other more targeted
33690         methods.  If the transform properties change, call
33691         UpdateTransform, for clip and OpacityMask just call Invalidate.
33692         (UIElement::Invalidate): add a Rect taking one that just
33693         invalidates the rect, and make the default variety call it with
33694         bounds as the arg.
33695         (UIElement::ComputeBounds): rename GetBounds().
33697         * shape.cpp (ComputeBounds): don't use GetSurface.  use a
33698         measuring cairo context.
33699         (Shape::OnPropertyChanged): if the Stretch property changed,
33700         UpdateBounds.  also, change from FullInvalidate to just Invalidate
33701         for everything.  Remove the UpdateTransform call as that gets
33702         handled by UIElement::OnPropetyChanged.
33703         (Rectangle::OnPropertyChanged): we only need to invalidate on a
33704         property change.
33705         (Polygon::OnPropertyChanged): if the Points property changes we
33706         need to UpdateBounds and force an Invalidate.  otherwise, just
33707         Invalidate.  no need for FullInvalidate always.
33708         (Polygon::OnCollectionChanged): new method.
33709         UpdateBounds+Invalidate to catch changes to the points collection.
33710         (Polyline::OnPropertyChanged): analogous changes as were made to
33711         Polygon::OnPropertyChanged.
33712         (Polyline::OnCollectionChanged): same as
33713         Polygon::OnCollectionChanged.
33715         * text.cpp (TextBlock::TextBlock): move the SetValue call to the
33716         end, past all the initialization of things that might be needed in
33717         ComputeBounds, which gets called.
33718         (TextBlock::ComputeBounds): don't use GetSurface.  use a measuring
33719         cairo context.
33720         (TextBlock::CalcActualWidthHeight): use a measuring context here.
33721         (TextBlock::OnPropertyChanged): remove unnecessary call to
33722         FrameworkElement::OnPropertyChanged from the end of the method.
33723         (Glyphs::ComputeBounds): return Rect (0,0,0,0).
33725         * media.cpp (MediaElement::ComputeBounds): don't use GetSurface.
33726         use a measuring context.
33727         (Image::ComputeBounds): same.
33728         (OnPropertyChanged): just Invalidate here, no need for
33729         FullInvalidate.
33730         (DownloaderEvent): just Invalidate here, not FullInvalidate.
33732         * frameworkelement.cpp (FrameworkElement::InsideObject): use
33733         Rect.PointInside.
33735         * control.cpp (Control::GetBounds): use a Rect here.
33736         (Control::ComputeBounds): forward on to the real_object.
33738         * collection.cpp (VisualCollection::VisualUpdate): when adding an
33739         element, we need to force its invalidation, but not the parent's.
33740         we just update the parent's bounds and UpdateBounds will do the
33741         invalidating if it needs to.
33743         * runtime.cpp (surface_attach): we don't need to do a full
33744         invalidate.  just update the bounds of the toplevel (which sets
33745         the width and height to the widget's) and force an invalidate
33746         (just in case the user set the width/height to exactly the same
33747         thing before attaching).
33748         (surface_size_allocate): same thing here - no need for
33749         FullInvalidate.  Just update the bounds.
33750         (measuring_context_create): create a tiny surface and a cairo_t
33751         for use in measuring things.
33752         (measuring_context_destroy): destroy the surface and cairo_t.
33754         * control.h, text.h, canvas.h, media.h, shape.h: GetBounds ->
33755         ComputeBounds.
33756         
33757 2007-06-28  Miguel de Icaza  <miguel@novell.com>
33759         * runtime.cpp (expose_event_callback): Introduce a new
33760         "transparent" field in the Surface.   If set, we clear the
33761         region with a transparent region.
33763 2007-06-27  Miguel de Icaza  <miguel@novell.com>
33765         * runtime.cpp: Event handlers will work with or without GdkWindows
33766         on the GtkWindows in preparation to support Larry later.
33768         Paint the surface with alpha transparency for now, this breaks the
33769         F-Spot embedding but will be fixed later when we can paint at an
33770         offset, wonder if this will affect performance for now.
33772         Call gtk_event_box_set_visible_window () with TRUE, so that we
33773         have a window, for now we require this to get the events working
33774         properly. 
33775         
33776         * canvas.cpp: Drop the translate transform on the topmost canvas
33777         as that was breaking all the code that depended on the inverse
33778         matrix transform to work for doing coordinate mapping based on the
33779         absolute_xform. 
33781         Instead we need to draw the cairo context at the given offset
33782         in the repaint routine.  This is left as an excercise for Larry. 
33784         Tests to validate that the mouse input is working:
33786                 * test/demo.exe: enter/leave
33787                 * surface demo
33788                 * silverlight airlines
33789                 * LunarEclipse designer.
33790         
33791         * value.cpp (FreeValue): New method that does the actual releasing
33792         of the value.   We do this here so the managed code can release
33793         things in the same way.
33795         (value_free_value): helper method.
33797 2007-06-27  Chris Toshok  <toshok@ximian.com>
33799         * clock.cpp (RaiseEnqueuedEvents): ref/unref the clocks around the
33800         calls to RaiseAccumulatedEvents.
33802 2007-06-27  Chris Toshok  <toshok@ximian.com>
33804         * clock.cpp (get_now): turns out we really do want this extra *10
33805         in there, so that it matches up with mono's TimeSpan.Tick values.
33807 2007-06-27  Chris Toshok  <toshok@ximian.com>
33809         * canvas.cpp (Canvas::GetBounds): Collapsed elements shouldn't
33810         take part in bounds computation.
33811         (Canvas::HandleButton): !Visible elements don't take part in hit
33812         testing.
33813         (Canvas::HandleMotion): same here.
33815 2007-06-27  Jackson Harper  <jackson@ximian.com>
33817         * xaml.cpp: Use Type to lookup the property owner, because it
33818         might be a "ghost" type that the xaml parser can't lookup.
33820 2007-06-27  Miguel de Icaza  <miguel@novell.com>
33822         * control.cpp: When handling events, we also need to pass the
33823         event notification to the control, not only to the "real_object"
33824         that we are proxying for.   This is what cause the calendar to
33825         malfunction. 
33827         * canvas.cpp (GetBounds): Do not use 0, 0, 0, 0 for the bounds of
33828         the canvas, instead use the point at (0,0) and the width, height
33829         with its absolute transformation.
33831         Otherwise canvases with children would end up with
33832         (0,0,0,0) and when compounded would extend the bounding box of
33833         containing ones to include this region even when not needed.
33835 2007-06-26  Chris Toshok  <toshok@ximian.com>
33837         * uielement.h: add virtual GetSurface() method.
33839         * uielement.cpp: implement UIElement::GetSurface to just chain up
33840         to the parent element if we have one, and return NULL otherwise.
33841         Also, make item_get_surface call this method.  removes the
33842         dependency on canvas.h from this file.
33844         * canvas.h: we override UIElement::GetSurface ()
33846         * canvas.cpp (Canvas::GetSurface): if we're the toplevel canvas,
33847         return our surface.  otherwise call our base class's GetSurface.
33849         * media.h: rename Image::GetSurface here to GetCairoSurface to
33850         avoid name collision.
33852         * brush.cpp, media.cpp: track media.h change.
33854 2007-06-26  Miguel de Icaza  <miguel@novell.com>
33856         * collection.h: Change of course.   The actual public interface
33857         implements IList<T> and ICollection<T> not IList nor ICollection
33858         which means that Add does not need to return an index, and Remove
33859         must return whether it actually removed the object.
33860         
33861         * collection.h (Add): Make this method return the index of the
33862         object just created, so we can implement int IList.Add(...).
33864         Removed all the empty Add/Remove methods from collections that
33865         were not doing anything interesting with them, the remaining
33866         chunks of old hacks.
33867         
33868         * (SetVal): This method is used to replace a value at a given
33869         index with another one.   For the C# IList.this [int] indexer.
33871 2007-06-26  Chris Toshok  <toshok@ximian.com>
33873         * clock.cpp: make a copy of the child clocks lists before
33874         traversing them calling callbacks that could result in the lists
33875         being modified.
33877 2007-06-26  Chris Toshok  <toshok@ximian.com>
33879         * dependencyobject.h: add OnCollectionChanged to allow
33880         propertychange notifications from elements in collections to
33881         bubble up to their parent.
33883         * collection.h: make the closure a DependencyObject*, just to be
33884         explicit.  also, add OnSubPropertyChanged to Collection so we can
33885         generate OnCollectionChanged notifications.
33887         * collection.cpp: hook things up on elements in collections, and
33888         generate proper notifications from the collection to its closure.
33890         * enums.h: add CollectionChangeType for use in
33891         OnCollectionChanged.
33893         * geometry.h, geometry.cpp, shape.h, shape.cpp: use the new
33894         collection notification stuff to bubble changes up the hierarchy.
33895         
33896 2007-06-26  Jeffrey Stedfast  <fejj@novell.com>
33898         * list.cpp (Replace): Added.
33900         * dependencyobject.cpp (dependency_object_get_value_no_default):
33901         New binding function.
33902         (dependency_object_get_object_type): Renamed from get_kind() which
33903         didn't mirror the native API at all.
33905 2007-06-26  Sebastien Pouliot  <sebastien@ximian.com>
33907         * geometry.cpp|h: Add missing PathSegment::OnPropertyChanged
33908         * shape.cpp: Remove debugging output.
33910 2007-06-26  Chris Toshok  <toshok@ximian.com>
33912         * uielement.h: change render/dorender to take a cairo_t* instead
33913         of a Surface*.
33915         * canvas.h, control.h, text.h, geometry.h, canvas.cpp,
33916         uielement.cpp, geometry.cpp, shape.cpp, media.h, shape.h,
33917         media.cpp, control.cpp, runtime.cpp, text.cpp: fallout from the
33918         above change.
33919         
33920 2007-06-25  Jeffrey Stedfast  <fejj@gnome.org>
33922         * brush.cpp (LinearGradientBrush::SetupBrush): Use
33923         uielement->get_size_for_brush() because the framework width/height
33924         might be 0.
33926         * text.cpp: Implement text wrapping and clipping to Width/Height
33927         bounds if specified.
33929 2007-06-25  Miguel de Icaza  <miguel@novell.com>
33931         * runtime.cpp: Cope with the fact that we are now windowless and
33932         we will be sharing the parent's window.   Fixes mouse events.
33934         * collection.cpp (collection_get_value_at, collection_count): Add
33935         new methods.
33937 2007-06-25  Jeffrey Stedfast  <fejj@novell.com>
33939         Mango-licious.
33941         * text.cpp: Rewritten to use the new MangoRenderer and
33942         MangoAttrForeground classes.
33944         * mango.cpp: New source file implementing a PangoRenderer and
33945         providing a new PangoAttribute for brushes.
33947 2007-06-25  Chris Toshok  <toshok@ximian.com>
33949         * runtime.h: add decl for Panel::OnSubPropertyChanged.
33951         * runtime.cpp (UIElement::OnPropertyChanged): handle changes to
33952         zIndex by invalidating the item's rectangle.
33953         (UIElement::OnSubPropertyChanged): add braces around all the if
33954         blocks for consistency.
33955         (Panel::OnSubPropertyChanged): if a child changes its z index we
33956         need to resort our visual collection.
33957         (Canvas::render): loop over the z sorted list of children instead
33958         of the default collection list.
33959         (item_init): just to be anal, cast the Zindex default value to
33960         gint32.
33962 x2007-06-25  Chris Toshok  <toshok@ximian.com>
33964         * collection.cpp: keep a z-sorted list in VisualCollection,
33965         adding/removing elements from it when needed, and clearing it when
33966         the collection is cleared.
33968         * collection.h: add a virtual clear method so VisualCollection can
33969         override it.  Also, add a z_sorted_list member to
33970         VisualCollection, so we can deal with the ZIndices of children.
33972 2007-06-24  Alan McGovern  <amcgovern@novell.com>
33974         * runtime.(cpp|h): Implemented UIElement.ZIndexPropery
33976 2007-06-24  Larry Ewing  <lewing@novell.com>
33978         * runtime.cpp: rework size allocation and make toplevel Canvas
33979         items read the allocation->x and allocation->y offsets from the
33980         surface widget when computing their position.
33982 2007-06-24  Chris Toshok  <toshok@ximian.com>
33984         * Makefile.am (libmooninclude_HEADERS): add collection.h
33985         (libmoon_la_SOURCES): add collection.cpp
33987         * collection.h, collection.cpp: new files.  split out Collection
33988         and all the collection-related code from runtime.h/runtime.cpp.
33989         arguably the collections specific to certain elements should exist
33990         completely in those .cpp/.h files, instead of here.
33992         * runtime.h, runtime.cpp: remove collection stuff.
33994         * clock.h, animation.h, transform.h: #include collection.h
33996         * value.h, value.h.in: #include <string.h> here so we can stop
33997         requiring it for everyone else.  really, though we should be using
33998         g_strcmp or something that's already pulled in from glib.
33999         
34000 2007-06-24  Chris Toshok  <toshok@ximian.com>
34002         * Makefile.am (libmoon_la_SOURCES): add array.cpp
34003         (libmooninclude_HEADERS): add array.h
34005         * xaml.cpp, value.cpp, shape.cpp, geometry.cpp: include array.h
34007         * array.h, array.cpp: new files, split them out from
34008         runtime.h/.cpp.
34010 2007-06-24  Chris Toshok  <toshok@ximian.com>
34012         * Makefile.am (libmooninclude_HEADERS): add xaml.h
34014         * xaml.h: split this out from...
34016         * runtime.h: ... here.
34018         * xaml.cpp, runtime.cpp, control.h, demo.cpp: #include xaml.h
34019         
34020 2007-06-24  Chris Toshok  <toshok@ximian.com>
34022         * Makefile.am (libmooninclude_HEADERS): add control.h
34024         * control.h: split out class Control stuff...
34026         * runtime.h: .. from here.
34028         * runtime.cpp: #include control.h
34030         * control.cpp: same.
34032 2007-06-24  Chris Toshok  <toshok@ximian.com>
34034         * runtime.h: add OnLoaded methods to UIElement, Panel, and
34035         Control.
34037         * runtime.cpp (UIElement::OnLoaded): emit the Loaded event if we
34038         haven't already.
34039         (VisualCollection::Add): only invoke OnLoaded on the item if the
34040         closure (the parent of the collection) has been loaded.
34041         (VisualCollection::Insert): same.
34042         (Panel::OnLoaded): call OnLoaded on all our children, then chain
34043         up.
34044         (surface_attach): call canvas->OnLoaded instead of
34045         emit_loaded_events(canvas).  also, don't use a special IS_CANVAS
34046         flag - just use the type system.
34047         (item_get_surface): get rid of the IS_CANVAS flag and just use the
34048         type system.
34050         * control.cpp (Control::OnLoaded): new method, invoke OnLoaded on
34051         the real object before chaining up.
34053 2007-06-24  Larry Ewing  <lewing@novell.com>
34055         * runtime.cpp: disable transparent surfaces while fixing the
34056         drawing offset problem.
34058 2007-06-24  Larry Ewing  <lewing@novell.com>
34060         * brush.cpp: use cairo_create_similar rather than using an image
34061         brush.
34063 2007-06-24  Chris Toshok  <toshok@ximian.com>
34065         * runtime.cpp (VisualCollection::Add): only emit Loaded if the
34066         tree we're adding it to has already been loaded.
34068 2007-06-24  Larry Ewing  <lewing@novell.com>
34070         * demo.cpp: add -trans flag to demo to make the toplevel transparent.
34072 2007-06-24  Larry Ewing  <lewing@novell.com>
34074         * runtime.cpp: add comments to the new gtk functions.
34076         * runtime.h: expose surface_paint.
34078 2007-06-23  Miguel de Icaza  <miguel@novell.com>
34080         * runtime.cpp: Since unrealize does not seem to be called when our
34081         widget is destroyed by Mozilla, we need to cleanup on destroy the
34082         tick event.   This takes care of one of the plugin crashers.
34084         There are still others that I have to find out, I added some
34085         debugging prints for now.
34087 2007-06-24  Larry Ewing  <lewing@novell.com>
34089         * runtime.cpp: derive from EventBox not drawing area so that we
34090         can use it as a quick method of switching back and forth between
34091         transparent and not.  Add a method to let external code paint to a
34092         cairo context.
34094 2007-06-23  Jeffrey Stedfast  <fejj@gnome.org>
34096         * text.cpp (SetValue): Overridden to enforce Text strings not
34097         preserving any leading nor trailing whitespace (as defined in the
34098         Silverlight docs).
34100 2007-06-22  Jeffrey Stedfast  <fejj@novell.com>
34102         * xaml.cpp (matrix_value_from_str): use delete[] to free the array
34103         of doubles instead of g_free() as it was allocated with new, not
34104         g_malloc().
34106         * text.cpp (Layout): D'oh, make sure to always init text/block
34107         width/height values. This fixes VideoBrush again.
34109 2007-06-22  Jeffrey Stedfast  <fejj@novell.com>
34111         * mplayer.cpp: Initialize 'opened' state variable.
34113         * text.cpp (GetValue): Override DependencyObject::GetValue() so
34114         that we can special-case getting TextBlock::Actual[Width,Height]
34115         properties (this allows us to prolong re-calculating these values
34116         until after the user has set the values he's going to set -
34117         re-calculating on ever property change is too expensive.
34119         * runtime.h: Make DependencyObject::GetValue() virtual.
34121 2007-06-22  Jeffrey Stedfast  <fejj@gnome.org>
34123         * text.cpp: Stubbed out the required virtual methods for Glyphs
34124         and attempted to make ActualWidth and ActualHeight calculated
34125         immediately in an attempt to get DrPopper working better.
34127 2007-06-22  Sebastien Pouliot  <sebastien@ximian.com>
34129         * shape.cpp: Small hack to avoid calling Draw 2 times during render.
34131 2007-06-22  Chris Toshok  <toshok@ximian.com>
34133         * xaml.cpp (key_spline_from_str): free up the point arrays from
34134         point_array_from_str after we use them.
34135         (xaml_set_property_from_str): same.
34137 2007-06-22  Chris Toshok  <toshok@ximian.com>
34139         * value.cpp (Value): the copy ctor is definitely corrupting memory
34140         in the MATRIX case - we need to allocate the destination matrix.
34142 2007-06-21  Chris Toshok  <toshok@ximian.com>
34144         * Makefile.am: not that anyone should be installing this yet,
34145         install the headers to $(includedir)/libmoon.
34147 2007-06-21  Jeffrey Stedfast  <fejj@novell.com>
34149         * text.cpp: Reworked text layout/rendering logic - we now cache
34150         width/height info for each text string as well as the overall
34151         block width/height. This info is then used to align text strings
34152         on each line along the bottom edge (rather than along the top
34153         edge) of the line of text.
34155         * xaml.cpp (char_data_handler): Ignore insignificant lwsp CDATA
34157 2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34159         * stylus.h|cpp: Add InkPresenter.
34160         * media.h|cpp: Add C methods to stop, pause and play a MediaElement.
34161         * value.h, type.h|cpp: Updated.
34163 2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34165         * animation.cpp: Register *KeyFrame::Value properties as nullable.
34166         * clock.cpp: Register TimelineMarker properties.
34168 2007-06-21  Jackson Harper  <jackson@ximian.com>
34170         * xaml.cpp: When setting the x:Name also set the name property.
34172 2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34174         * stylus.cpp|h: Added Stroke and DrawingAttributes.
34175         * runtime.h: All collections can now implement GetElementType.
34176         * value.h, type.h, type.cpp: Updated.
34177         
34178 2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34180         * stylus.cpp|h: Added.
34181         * runtime.cpp|h: Define and call stylus_init.
34182         * Makefile.am: Add stylus.cpp|h.
34183         * value.h, type.h, type.cpp: Updated.
34185 2007-06-21  Jackson Harper  <jackson@ximian.com>
34187         * xaml.cpp: Add a global set of callbacks, so that all of the
34188         custom callbacks for a given parsing instance use the same
34189         methods.  This needs to be encapsulated properly, but for now is
34190         fine.
34192 2007-06-20  Chris Toshok  <toshok@ximian.com>
34194         * animation.cpp, animation.h: KeyFrameCollection overrides
34195         Collection::Clear to clear its sorted list.
34197         * runtime.cpp, runtime.h: add overrideable Collection::Clear
34198         method, and move collection_clear's body into it.
34200 2007-06-21  Jackson Harper  <jackson@ximian.com>
34202         * runtime.cpp|h: Don't return false on single element collections
34203         on the first item.
34205 2007-06-21  Jeffrey Stedfast  <fejj@gnome.org>
34207         * text.cpp: Use absolute font sizes, makes the fonts not so huge.
34209 2007-06-20  Jackson Harper  <jackson@ximian.com>
34211         * xaml.cpp: Set namecopes earlier, and make sure to copy the
34212         namescope when we recreate a class using x:Class.
34213         - When we use x:Class reparse the element's attributes, so it can
34214         hook up to events and set properties.
34215         * runtime.cpp|h: When the Name property is set, register it with
34216         the proper NameScope.
34217         
34218 2007-06-20  Chris Toshok  <toshok@ximian.com>
34220         * runtime.cpp, runtime.h: add rudimentary Visibility support.  we
34221         only support Visible/Hidden really, and treat Collapsed as Hidden.
34223         * xaml.cpp (enum_from_str): use g_strcasecmp here.
34225 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com> 
34227         * shape.cpp|h: Implement caching of Path (this could be extended to
34228         all shapes).
34229         * geometry.cpp|h: Notify on changes.
34231 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com>
34233         * xaml.cpp: Don't allocate (and free) a copy of the PML before 
34234         calling geometry_from_str.
34236 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com> 
34238         * shape.cpp: Fix some Stretch modes for paths. This can get very
34239         expansive, next step is to cache the cairo_path_t* in the Path and
34240         recompute it only on changes.
34242 2007-06-20  Chris Toshok  <toshok@ximian.com>
34244         * xaml.cpp (is_valid_event_name): new function.
34245         (dependency_object_hookup_event): only allow valid events to be
34246         hooked up.
34248 2007-06-20  Jackson Harper  <jackson@ximian.com>
34250         * runtime.cpp|h: New method for finding an objects namescope.
34251         - Call an objects loaded event when it is added to a Collection
34252         - Some bits of namescope merging, these functions aren't called
34253         yet though.
34255 2007-06-20  Chris Toshok  <toshok@ximian.com>
34257         * xaml.cpp (dependency_object_hookup_event): we need more than
34258         just the Loaded event.
34260 2007-06-20  Jeffrey Stedfast  <fejj@novell.com>
34262         * text.cpp (Run): Don't set default font values here... we need
34263         them to be unset if they aren't explicitly set by the user so that
34264         we can inherit font properties from our parent TextBlock.
34265         (Draw): Fixed to make Runs inherit unset font properties from the
34266         TextBlock at render-time. Also fixed to make sure we have a
34267         foreground brush to draw with... if unset, use the default brush.
34269 2007-06-20  Chris Toshok  <toshok@ximian.com>
34271         * runtime.cpp (UIElement::render): make this print the classname
34272         like UIElement::getbounds() does.
34274         * runtime.h, runtime.cpp: make control_initialize_from_xaml take
34275         the xaml parser custom element callbacks.
34277 2007-06-20  Chris Toshok  <toshok@ximian.com>
34279         * runtime.cpp (runtime_shutdown): set inited to false, since we
34280         want people to be able to call runtime_init again after this.
34282         * type.cpp.in (Type::RegisterType): allocate types if we need to.
34283         (Type::Shutdown): free types.
34285         * type.h.in (private): make the types array dynamically allocated.
34287         * type.h, type.cpp: sync
34289 2007-06-20  Jeffrey Stedfast  <fejj@novell.com>
34291         * text.cpp (TextBlock): Need to actually set ActualWidth and
34292         ActualHeight values.
34294 2007-06-20  Chris Toshok  <toshok@ximian.com>
34296         * clock.cpp (Clock::Tick): if we hit our natural duration but our
34297         duration is Automatic, go to Fill mode, since we may have child
34298         clocks that started after us and need a chance to run their last
34299         tick.
34301 2007-06-20  Jeffrey Stedfast  <fejj@novell.com>
34303         * runtime.cpp (collection_iterator_move_next): If we can't iterate
34304         to the next item, don't set current = NULL.
34305         (dependency_object_get_name): New function needed for the binding.
34307 2007-06-20  Larry Ewing  <lewing@novell.com>
34309         * runtime.cpp: use gdk_cairo helper functions and clip to the
34310         expose event region.
34312         * runtime.h: remove unused members.
34314         * media.cpp: use cairo_get_target rather than keeping track of
34315         pixmap.
34317 2007-06-20  Jackson Harper  <jackson@ximian.com>
34319         * xaml.cpp/runtime.h: Add one more callback, this one will hookup
34320         events to methods. So things like Loaded=CanvasLoaded will work.
34321         * demo.cpp:
34322         * control.cpp:
34323         
34324 2007-06-20  Jackson Harper  <jackson@ximian.com>
34326         * xaml.cpp: More verbose debug output with namespace lookup
34327         errors.
34328         - Map in the default namespaces if we are unable to lookup the
34329         proper namespace name.
34331 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com> 
34333         * shape.cpp: Call cairo_[stroke|fill]_extents inside Shape::getbounds
34334         or the mouse moving won't work.
34336 2007-06-20  Sebastien Pouliot  <sebastien@ximian.com>
34338         * shape.cpp: Fix Shape::getbounds to work even if no stroke brush is
34339         assigned, in that case we get the extents of the fill.
34341 2007-06-20  Chris Toshok  <toshok@ximian.com>
34343         * animation.cpp: um.. "oops".
34345         * xaml.cpp (xaml_init): enable the parsing of the color/point
34346         spline key frames.
34348 2007-06-20  Chris Toshok  <toshok@ximian.com>
34350         * animation.cpp: guard against division by zero in the double
34351         keyframe GetCurrentValue method.  I'll fix this method up some
34352         more and then report it to the other animation types.
34354         Also, add the Spline(Color,Point)KeyFrames.
34356         * clock.cpp, clock.h: fixes to get all this working again while
34357         still supporting the needed things from the last patch (like
34358         BeginTime.)
34360         * transform.cpp (GetTransform): i hate like hell to have to do
34361         this, but if we scale by 0.0 cairo can't invert the matrix and
34362         then everything goes belly up.  0.00002 is the smallest number I
34363         found (0.00001 doesn't work, for instance) where cairo doesn't
34364         complain about the inverse stuff.
34366         * media.cpp (media_element_set_buffering_time): we have to use the
34367         hacky Value ctor here.
34368         (media_element_set_position): and here.
34370         * runtime.cpp (emit_loaded_events): new function to walk the tree
34371         and emit loaded events.
34372         (surface_attach): call emit_loaded_events here - the docs specify
34373         that Loaded is emitted after it's associated with the host but
34374         before it's rendered.
34375         (Canvas::render): don't emit Loaded here.
34376         (runtime_init): output a nice message here if you run cairo
34377         against a verion of cairo that you shouldn't be using.
34379         * type.h, type.cpp, value.h: resync.
34381 2007-06-20  Jackson Harper  <jackson@ximian.com>
34383         * xaml.cpp: Improve the way we handle x:Class attributes failing
34384         to load.
34386 2007-06-20  Jackson Harper  <jackson@ximian.com>
34388         * xaml.cpp: Hookup attached properties in the property_from_str
34389         method.
34391 2007-06-19  Chris Toshok  <toshok@ximian.com>
34393         * media.cpp (media_element_get_buffering_time): use AsTimeSpan().
34394         (media_element_get_position): same.
34395         (media_init): mark BufferingTime and Position as TimeSpan's.
34397 2007-06-19  Chris Toshok  <toshok@ximian.com>
34399         * clock.cpp, clock.h: bad time for a a rearchitecting, perhaps,
34400         but this was necessary to get BeginTime's to be supported.  It
34401         reintroduces the "popping" in the surface demo, though, and
34402         honestly I'm unsure how we can ever guarantee that enough ticks
34403         will have occured to be sure we won't see the initial state of the
34404         surface objects.
34406         * animation.cpp: track clock api changes.
34408         * runtime.h: decl for FramworkElement::OnPropertyChanged.
34409         
34410         * runtime.cpp (EventObject::Emit): make a copy of the list before
34411         we start emitting, to keep us crashing if the list is modified
34412         while we're traversing it.
34413         (FramworkElement::OnPropertyChanged): invalidate on width/height
34414         changes.
34416         * xaml.cpp: when parsing a TIMESPAN property, use
34417         timespan_from_str.  This fixes the parsing of BeginTime
34418         attributes.
34420         * type.cpp.in: register TIMESPAN.
34422         * value.h.in: add a AsTimeSpan method, and special hacky
34423         constructor so the parser can construct a value of type TIMESPAN
34424         (which is problematic since it's typedef'ed to gint64.)  Move the
34425         TimeSpan typedef here.
34427         * value.cpp: add the impl for that hacky ctor.
34428         
34429         * type.h.in: add a TIMESPAN kind.
34431         * type.h, value.h, type.cpp: sync.
34433 2007-06-19  Jackson Harper  <jackson@ximian.com>
34435         * xaml.cpp: we need to new the points.
34437 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
34439         * geometry.cpp: Add safety to ensure the number of points are 
34440         valid before iterating on them.
34442 2007-06-19  Jackson Harper  <jackson@ximian.com>
34444         * xaml.cpp: make sure to get all the points.
34445         - sneak peek at the exciting new attached property setting code.
34446         - improve error message
34447         - dont step off the end of the string when the trailing characters
34448         are white space.
34450 2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
34452         * *.cpp: Updated to use the new List type.
34454         * runtime.cpp|h (Collection): Modified to use List instead of
34455         GList which made some code simpler, we get to take advantage of
34456         destructors, woo!
34458         * demo.cpp (main): Removed surface_destroy() and
34459         runtime_shutdown() out of the delete_event callback (gtk timeouts
34460         could still fire after the gtk_main_quit() call it seems).
34462 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com>
34464         * runtime.cpp: Enforce UIElement::ClipProperty when rendering
34465         Canvas
34467 2007-06-19  Jackson Harper  <jackson@ximian.com>
34469         * xaml.cpp: Content properties can be inherited.
34471 2007-06-19  Jackson Harper  <jackson@ximian.com>
34473         * xaml.cpp: Make sure that we have a previous figure.
34475 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
34477         * geometry.cpp|h: Revert previous changes. That didn't work well
34478         with groups/collections.
34479         * shape.cpp: Path::Draw now process the path (find and susbtract
34480         origin) when Stretch requires it.
34482 2007-06-19  Jackson Harper  <jackson@ximian.com>
34484         * xaml.cpp: Set the namescope right away, so FindName will work in
34485         element constructors.
34487 2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
34489         * animation.cpp: Switched to use List instead of GList.
34491 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
34493         * geometry.cpp|h: Change API so the Strech value is propagated from
34494         the shape to all the geometry figures. Fixed Stretch for LineGeometry,
34495         EllipseGeometry and RectangleGeometry.
34496         * shape.cpp: Path::Draw now supply the Stretch property value to
34497         all Geometry objects drawing methods.
34499 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
34501         * shape.cpp: Don't call cairo_new_path inside moon_ellipse. It's
34502         the caller responsbility to do so, if required (e.g. it isn't for
34503         geometry stuff).
34505 2007-06-19  Jackson Harper  <jackson@ximian.com>
34507         * xaml.cpp: Implement all the optional points on path markup.
34509 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
34511         * shape.cpp: Fix Stretch for Polyline and Polygon.
34513 2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
34515         * xaml.cpp: Updated to use a real linked list implementation.. for
34516         added uberness. Also reduces memory leakage.
34518         * mplayer.cpp: Stubbed out a few more things and can now return
34519         the video duration.
34521 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
34523         * shape.cpp|h: Set Shape::Stretch default to None and set Stretch
34524         property to fill inside Rectangle and Ellipse ctors.
34526 2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
34528         * runtime.cpp (Insert): Make this use SharedAdd too, which I
34529         presume was the whole point.
34531 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
34533         * shape.cpp: Fix Strech support for Rectangle (it behave more like
34534         Ellipse but that shows only with non squares).
34536 2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
34538         * mplayer.cpp (audio_loop): Fixed muting to advance the correct
34539         number of pts and not hang forever in a g_usleep() (gah, the timer
34540         was a huge negative value).
34542 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34544         * clock.h: Added TimelineMarker.
34545         * type.h, type.cpp, value.h: Updated.
34547 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
34549         * shape.h: Fix filling for Polyline. MS supports filling polylines,
34550         even unclosed ones.
34552 2007-06-19  Chris Toshok  <toshok@ximian.com>
34554         * runtime.cpp (surface_realloc): make sure to reassign s->cairo to
34555         s->cairo_xlib after recreating the xlib stuff.  avoids a crash
34556         when resizing surfaces.
34558 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
34560         * shape.cpp: Add Strech support for Ellipse.
34562 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com>
34564         * shape.cpp: Add Strech support for Rectangle (only None is different).
34565         Add comments to Line as Stretch doesn't apply for this Shape.
34567 2007-06-19  Miguel de Icaza  <miguel@novell.com>
34569         * runtime.cpp (Collection): Add new Insert method, and update all
34570         the callers that overwrote it.   We probably need to cleanup
34571         everything that is doing virtual overrides and is a no-op 
34573 2007-06-19  Chris Toshok  <toshok@ximian.com>
34575         * runtime.cpp (clear_drawing_area): this method doesn't need to
34576         clean up the xlib cairo context/surface and the pixmap.
34578         There are two possibilities:
34580         1) the drawing area has been realized, which means we have xlib
34581         surface/context + pixmap.  We're guaranteed to hit
34582         unrealized_callback before this method is called, so they will
34583         have already been freed.
34585         2) the drawing area has not been realized, which means we have no
34586         xlib surface/context + pixmap, and this method doesn't need to do
34587         anything.
34589 2007-06-19  Jackson Harper  <jackson@ximian.com>
34591         * runtime.h/shape.cpp: Fix typo.
34593 2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
34595         * text.cpp (Run::OnPropertyChanged): Always chain up to our parent
34596         implementation and if one of our properties changed, notify our
34597         attachees.
34598         (Inline::OnPropertyChanged): Same.
34599         (TextBlock::OnPropertyChanged): Keep track of Inlines changes.
34600         (TextBlock::Draw): Use our foreground brush directly and the same
34601         for run's foreground brush.
34603 2007-06-19  Miguel de Icaza  <miguel@novell.com>
34605         * runtime.cpp: Implement collection iterators.
34607 2007-06-19  Chris Toshok  <toshok@ximian.com>
34609         * xaml.cpp (timespan_from_str): don't walk off the end of the
34610         string.
34612 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34614         * animation.h|cpp: Remove pureness from KeyFrame::InterpolateValue.
34616 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34618         * animation.h|cpp: Add *_key_frame_new.
34620 2007-06-19  Jackson Harper  <jackson@ximian.com>
34622         * xaml.cpp\runtime.h: Add a public function for setting
34623         properties, from strings.  Basically a copy and paste of my
34624         set_attributes code.  Eventually I should be able to merge the
34625         two, but they use different name lookup mechanisms right now.
34627 2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
34629         * animation.cpp (Remove): Remove the KeyFrame from the sorted list
34630         before removing it from the collection (since it may be freed by
34631         Collection::Remove).
34633 2007-06-19  Miguel de Icaza  <miguel@novell.com>
34635         * runtime.cpp: Add support for notifying the consumer that the
34636         surface has resized.
34638         Add support for resizing objects.
34640 2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
34642         * brush.cpp (~VideoBrush): We want to detach from the media
34643         element, not ourselves. Doh.
34645 2007-06-19  Sebastien Pouliot  <sebastien@ximian.com>
34647         * shape.h: Update comments about which shapes needs, or not, to 
34648         provide a getxformorigin method.
34650 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34652         * media.h|cpp: Add media_base_new.
34654 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34656         * value.cpp|h|in: Inline the non-DependencyObject
34657         As* functions as well.
34659 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34660         
34661         * typegen.cs: Removed some dead code.
34662         * value.cpp.in: Deleted, not needed anymore.
34663         * runtime.cpp, value.cpp, type.cpp.in: Moved 
34664         implementation of Value and Type into their own files.
34665         * type.cpp: Updated.
34667 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34669         * type.h, type.h.in: Created, moved declaration of Type here.
34670         * *.h|cpp|in: Move Value:Kind to Type::Kind and update all
34671         references. Move the Value::As* into the header.
34672         * typegen.cs: Updated to cope with Kind changes.
34674 2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34676         * runtime.cpp|h, value.h.in: Remove current nullable code,
34677         it's easier to store an is_nullable flag in the registered
34678         property, and store NULL values in the objects hashtable.
34679         * xaml.cpp: Revert unnecessary fixes.
34680         * value.h: Updated.
34682 2007-06-19  Chris Toshok  <toshok@ximian.com>
34684         * runtime.h: get rid of the specialized surface callbacks for
34685         mouse events.  we can dispatch them directly to the UIElements.
34686         Change the EventObject signatures to permit an event/call data as
34687         well as the closure.  add the sender object for kicks while we're
34688         at it.
34690         * runtime.cpp: dispatch element events through the
34691         DependencyObject's events object.
34693         * animation.h, animation.cpp: update signatures for event
34694         handlers.
34696         * control.cpp (handle_button): track signature change.
34698         * clock.cpp: same.
34700 2007-06-18  Chris Toshok  <toshok@ximian.com>
34702         * clock.cpp (TimeManager::Tick): add a lot of timing foo.
34703         (ClockGroup::RaiseAccumulatedEvents): raise the Completed event if
34704         we switching to the stopped state and our progress is 1.0 (that
34705         is, if we've finished).
34707         * animation.h, animation.cpp (Storyboard::Begin): rather heavy
34708         handed (but bulletproof) approach to making Begin work on a
34709         storyboard that has run its course - destroy the clock hierarchy
34710         and recreate it.  Also, add a handler for the ClockGroup's
34711         "Completed" event so we can reflect that back to managed land.
34713         * runtime.h: add C functions to add/remove handlers from the
34714         EventObject inside a dep object.
34716 2007-06-18  Jackson Harper  <jackson@ximian.com>
34718         * xaml.cpp: Set text context properties from char data.  This
34719         allows you to do things like <Run>Hi I am some text</Run>.  As far
34720         as I can tell, Run is the only element that allows this.
34722 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
34724         * shape.cpp|h: Fix Line and Ellipse getxformorigin.
34726 2007-06-18  Jackson Harper  <jackson@ximian.com>
34728         * xaml.cpp: Now implement the smooth beziers correctly, much
34729         thanks to spouliot for figuring out the formula to reflect control
34730         points.
34732 2007-06-18  Chris Toshok  <toshok@ximian.com>
34734         * clock.h, clock.cpp: ifdef some debug spew, add a bitmask for
34735         what the timemanager should do on a given tick, and add some
34736         #defines/logic to calculate the gtk delay from the desired
34737         framerate.  Set the desired framerate to 20fps.
34739 2007-06-18  Jeffrey Stedfast  <fejj@novell.com>
34741         Instead of attaching to Brush::ChangedProperty, connect to NULL.
34743         * media.cpp (render): If the width/height are 0.0, then use the
34744         video's natural width/height.
34745         (OnPropertyChanged): chain up.
34747         * shape.cpp (OnPropertyChanged): Always chain up to our parent.
34749 2007-06-18  Chris Toshok  <toshok@ximian.com>
34751         * xaml.cpp (dependency_object_set_attributes): suggestion by rolf.
34752         fixes setting of nullable property values.
34754 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34756         * runtime.cpp: Store NULL again in the property hashtable,
34757         but use the lookup_extended function to detect this and return
34758         a correct NULL value instead of the default value.
34760 2007-06-18  Chris Toshok  <toshok@ximian.com>
34762         * runtime.cpp (RemoveHandler): more cleanups.
34764 2007-06-18  Chris Toshok  <toshok@ximian.com>
34766         * runtime.cpp (RemoveHandler): g_free'ing a new'ed c++ object =
34767         bad.
34769 2007-06-18  Jackson Harper  <jackson@ximian.com>
34771         * xaml.cpp: Implement path closing and ArcSegments.
34773 2007-06-18  Miguel de Icaza  <miguel@novell.com>
34775         * runtime.cpp (SetValue): This looks painful, now
34776         DependencyObjects are stored inside the hash but they might
34777         contain a NULL.   This seems bad.
34778         
34779         (Value): Do not delete null dependency objects.
34781         Remove this patch, and try demo.exe, enter/leave/enter, this
34782         crashes now, because the leave sets the fill to "null" and the
34783         enter then tries to access it
34785 2007-06-18  Jeffrey Stedfast  <fejj@novell.com>
34787         * brush.cpp: Do proper OnPropertyChanged proagation.
34788         (ImageBrush::OnPropertyChanged): Notify using the generic
34789         Brush::ChangedProperty.
34790         (VideoBrush::OnPropertyChanged): Same.
34791         (VideoBrush::OnSubPropertyChanged): Same.
34793         * shape.cpp (Shape): Need to keep track of our stroke/fill brushes
34794         so we can listen for change notification.
34796         * runtime.cpp (UIElement): Same.
34797         (Panel): Here too.
34799         * text.cpp (TextBlock): Same here (need to do it for Inlines too
34800         at some point).
34802         * media.cpp (media_base_new): Removed, you can't instantiate a
34803         MediaBase.
34804         (advance_frame): Optimization hack: don't invalidate if our
34805         opacity is 0.
34806         (MediaElement::render): Respect opacity and stretch properties.
34808 2007-06-18  Jackson Harper  <jackson@ximian.com>
34810         * xaml.cpp: We need to create new figures if we get a Move
34811         command.
34813 2007-06-18  Chris Toshok  <toshok@ximian.com>
34815         * demo.cpp: use TimeManager::AddTickCall for the async file
34816         loading.  This makes the image visible immediately for me, instead
34817         of requiring the animations be paused to see it.
34819         * clock.cpp, clock.h: add a one-shot "tick call" idle handler of
34820         sorts to TimeManager.  This way we can better control when the
34821         cross thread downloader calls happen, and keep them from affecting
34822         the frame rate, and also keep them from being starved by an
34823         overzealous demo.cpp.
34825 2007-06-18  Chris Toshok  <toshok@ximian.com>
34827         * runtime.cpp (unrealized_callback): remove the render handler.
34828         (realized_callback): attach the render handler.
34829         (render_surface): a very simple render handler.  We just force gtk
34830         to process all pending updates.
34832         * clock.cpp (TimeManager::Tick): as a temporary hack, have
34833         TimeManager emit the "render" event after every animation tick.
34834         We should add tuning to this method to achieve usable framerates
34835         without killing the cpu.
34837         * clock.h: make TimeManager subclass from EventObject so we can
34838         hook up to events on it.
34840 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
34842         * shape.cpp: getbounds gets bad results if stroke (or fill) isn't 
34843         called. We create a new path so the bounds, for an invisible object,
34844         will be empty.
34846 2007-06-18  Chris Toshok  <toshok@ximian.com>
34848         * clock.cpp (Clock::TimeUpdated): return immediately if we're stopped.
34850 2007-06-18  Jackson Harper  <jackson@ximian.com>
34852         * xaml.cpp: Fix smooth quadratic bezier's.
34854 2007-06-18  Chris Toshok  <toshok@ximian.com>
34856         * media.cpp, media.h (Image::render): on our first rendering,
34857         convert to using an xlib surface to speed up future redraws.
34859 2007-06-18  Chris Toshok  <toshok@ximian.com>
34861         * runtime.cpp (UIElement::dorender): add this, and make everything
34862         that calls ->render call ->dorender.
34864         * control.cpp (render): call dorender on the realobject.
34866         * runtime.h: add STARTTIMER/ENDTIMER macros, and add
34867         UIElement::dorender which can be used to wrap render calls with
34868         debug info (in this case timer info.)
34870         * clock.h: add prototype for get_now().
34872         * clock.cpp (get_now): make this public, so we can use it for
34873         timers.
34875 2007-06-18  Jackson Harper  <jackson@ximian.com>
34877         * xaml.cpp: Implement Path Geometry parsing.
34879 2007-06-18  Jeffrey Stedfast  <fejj@novell.com>
34881         * brush.cpp (VideoBrush::SetupBrush): Get a reference to the
34882         MediaElement if we don't already have one.
34883         (VideoBrush::OnPropertyChanged): SourceName does not refer to a
34884         uri, instead SourceName refers to a MediaElement.
34886         * media.cpp: Implemented some more helper "setters", defaulted
34887         some more MediaElement property values to correct values, and
34888         implemented updating of both the CurrentState property and the
34889         PositionProperty.
34891         * mplayer.cpp (Position): Implemented.
34893 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
34895         * media.cpp: Close the path after rendering the image.
34896         * shape.cpp: Avoid the filling operation in calls to getbounds. Also
34897         open and close a path before drawing normal (square) rectangles.
34899 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34901         * runtime.h|cpp: Add DependencyObject::RegisterNullable. Add a few
34902         C-style methods to access Type and DependencyProperty fields.
34903         In Type::IsSubclassOf don't take into account nullability.
34904         * animation.cpp, clock.cpp: Register nullable properties as such.
34906 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34908         * media.h|cpp: Add media_base_new.
34910 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34912         * value.h.in: Make checked_get_subclass handle null values. Include the
34913         Kind::*Null* values in the C# Kind.cs, and change their values to fit
34914         in a signed int.
34915         * value.h: Updated.
34917 2007-06-18  Miguel de Icaza  <miguel@novell.com>
34919         * media.cpp (DownloaderEvent): If the Width/Height have not been
34920         set explicitly, provide them from the images (demo works, but it
34921         takes a while, due to the idle handler being too busy to be
34922         invoked).
34924         * runtime.cpp (Canvas::render):  Cope with rounding from floats to
34925         ints, add 2, fixes the droppings in the surface.
34927         Include some of my debugging helpers (you sprinkle
34928         draw_grid in key places to see whats going on, useful to debug the
34929         bounding boxes and visually inspect if things are right.
34930         
34931         * media.cpp (getbounds): use the framework width/height not the
34932         pixbuf image size, this shrinks the size of the bounding box.
34933         (getxformorigin): Use it here too.
34935 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
34937         * brush.cpp|h: SetupBrush and SetupGradient now returns a boolean that
34938         indicates if their use would be visible or not (e.g. opacity > 0.0).
34939         * shape.cpp: Don't setup brush for getting bounds (do_op == FALSE). 
34940         Don't Fill or Stroke if the brush is invisible (opacity == 0).
34942 2007-06-18  Marek Habersack  <grendello@gmail.com>
34944         * mplayer.cpp (ALIGN): make sure the ALIGN macro is correct on 64
34945         bit platforms too.
34947         * ffvideo.cpp (ALIGN): as above.
34949 2007-06-18  Chris Toshok  <toshok@ximian.com>
34951         * clock.cpp: simplify pausing and stopping a clock that has
34952         children by keeping track of the new state (the one the clock will
34953         take at the end of this tick).  This is necessary because the
34954         parent clock doesn't actually stop until the end of the tick, so
34955         we still need to update child clocks after we've determined the
34956         parent clock should stop.
34958 Mon Jun 18 19:35:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
34960         * runtime.cpp: properly remove items from the doubly-linked list.
34962 2007-06-18  Chris Toshok  <toshok@ximian.com>
34964         * animation.cpp (AnimationStorage::~AnimationStorage): delete the
34965         baseValue here.
34966         (Storyboard::Begin): force a TimeManager tick after we've hooked
34967         up the clock, so that all the animations have proper values before
34968         the next render.  Fixes the "popping" in the surface demo.
34970 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34972         * runtime.cpp: Changed DependencyObject::SetValue to never store 
34973         a null value in the hashtable.
34975 2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
34977         * brush.cpp: Refactor the pattern creation to allow caching.
34978         * media.cpp|h: Add caching of cairo_pattern_t to Image.
34980 Mon Jun 18 17:53:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
34982         * runtime.cpp: use motion hints for smoother motion event handling.
34984 2007-06-18  Jeffrey Stedfast  <fejj@gnome.org>
34986         * text.cpp|h: Runs now cache their own PangoFontDescription and
34987         PangoLayouts as an optimzation (seems to be very slight for simple
34988         us-ascii text, but might help enormously for more complex
34989         languages). Also added some FIXME thoughts.
34991 2007-06-18  Everaldo Canuto  <ecanuto@novell.com>
34993         * downloader.cpp: Add missing downloader_notify_finished.
34995 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
34997         * downloader.cpp: Only set dummy downloader functions if they
34998         aren't already set.
35000 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35002         * runtime.cpp: Add a few null checks.
35003         * downloader.cpp: Add initial dummy downloader functions to get
35004         meaningful messages if the downloader functions aren't initialized.
35006 2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35007         
35008         * typegen.cs: Special case a few things for DependencyObject, 
35009         and make a few messages more informative.
35010         * runtime.h|cpp: Add a value_type field to Type, and a constructor
35011         to specify the value. Add a constructor to DependencyProperty that
35012         can specify default value and type (in the case the default value
35013         doesn't have the same type as the property). Changed
35014         DependencyObject::SetValue to never store a null value in the 
35015         hashtable. In Value destructor check for null pointers in a few 
35016         cases. Update all uses of Value.k to Value.GetKind.
35017         * type.cpp.in: Update to specify value_type information.
35018         * value.h.in: Implement nullable type handling in Value.
35019         * value.cpp, type.cpp, value.h: Updated.
35021 2007-06-18  Jeffrey Stedfast  <fejj@gnome.org>
35023         * text.cpp (get_size_for_brush): Calculate width/height if they
35024         are unset.
35025         (Draw): Don't use the brush if we aren't going to render (this is
35026         needed so that we don't get into a recursive loop since we have to
35027         manually calculate width/height).
35029 2007-06-18  Jeffrey Stedfast  <fejj@gnome.org>
35031         * text.cpp (get_size_for_brush): Implemented (since
35032         cairo_stroke_extents() won't work for us).
35034         * brush.cpp (VideoBrush::SetupBrush): Use get_size_for_brush().
35035         (ImageBrush::SetupBrush): Same.
35037         * runtime.cpp (UIElement::get_size_for_brush): New method to get
35038         width/height needed by Brushes for scaling.
35040 2007-06-17  Jeffrey Stedfast  <fejj@gnome.org>
35042         * runtime.cpp (UIElement::OnPropertyChanged): Chain up to our
35043         parent.
35045 2007-06-17  Atsushi Enomoto  <atsushi@ximian.com>
35047         * text.cpp : added text_block_set_font_source().
35049 2007-06-17  Miguel de Icaza  <miguel@novell.com>
35051         * brush.cpp (brush_init): Create a BRUSH property called
35052         "FrameChange", it is internal and the sole use of it is so that
35053         upper layers that care about brush changes act on it by updating
35054         their elements.
35056         * runtime.cpp (UIElement::OnSubPropertyChanged): Changes on
35057         brushes only trigger an invalidate, there is no need to recompute
35058         bounds. 
35060 2007-06-17  Jeffrey Stedfast  <fejj@gnome.org>
35062         * xaml.cpp: c++ isn't smart enough to invoke the correct .dtor on
35063         delete for a void pointer, it can only delete known class types.
35065 2007-06-17  Jackson Harper  <jackson@ximian.com>
35067         * xaml.cpp: Implement x:Class, we can now load the Surface demo's
35068         XAML file, and it's custom Canvas class (things still don't work
35069         though because the custom canvas uses a downloader.)
35071 2007-06-17  Miguel de Icaza  <miguel@novell.com>
35073         The surface rotate and translate controls should both work, and
35074         the enter/leave events are now correct.
35075         
35076         * runtime.cpp (UIElement::handle_motion, handle_button): Change
35077         the semantics to better match Silverlight.   Now these methods
35078         should check if the mouse is inside their region before calling
35079         the callback.
35081         This is necessary because children of the canvas (and panel) are
35082         within the confines of the bounding box, but the canvas can be
35083         smaller than that.   The canvas is a container whose boundaries
35084         are only used for paiting, children might be outside of these
35085         boundaries.
35087         It is necessary in these cases to pass the events to all the
35088         children within the canvas bounding box and for each child to
35089         determine if the event was within its range. 
35091         (inside_object): replaced the default implementation for
35092         FrameworkElements with a more performing version: instead of
35093         mapping the point and using cairo_in_stroke and in_fill operations
35094         on a rectangle with mapped coordinates, we map the coordinates and
35095         check against the rectangle.
35097         (Canvas::getbounds): if we are the topmost canvas, the boundaries
35098         are those from the Surface, not the ones that include the maximum
35099         extent from the children.   Used to do precise mouse enter/leave. 
35101 2007-06-17  Jeffrey Stedfast  <fejj@gnome.org>
35103         * media.cpp (MediaElement::OnPropertyChanged): Chain to parent
35104         when its not our property.
35106         * brush.cpp: Implemented VideoBrush (tho it's not yet debugged).
35108         * mplayer.cpp (GetSurface): Added.
35110         * text.cpp (text_init): Fixed to use RegisterFull for Froeground
35111         so we can specify Value::BRUSH as the default value type instead
35112         of it using SolidColorBrush as the type.
35114 2007-06-17  Chris Toshok  <toshok@ximian.com>
35116         * xaml.cpp (timespan_from_str): fix parsing of timespans shorter
35117         than 1 second.
35119 2007-06-17  Chris Toshok  <toshok@ximian.com>
35121         * clock.cpp (Clock::TimeUpdated): remove a special case for the
35122         clock's duration being Automatic.  Fixes infinite animation in
35123         Surface port.
35125         * runtime.cpp (crossing_notify_callback): return type is gboolean,
35126         and make sure we always return something.
35127         
35128 2007-06-17  Miguel de Icaza  <miguel@novell.com>
35130         Propagate changes from children of the transform up to our
35131         containers, this is done in several steps:
35133         * runtime.cpp (DependencyObject::Attach, Detach): New methods that
35134         are used to attach an object to a container and detach it.   They
35135         were previously inlined inside SetValue.
35137         (Collection::Add, Remove): Attach and detach objects when they are
35138         added/removed. 
35139         
35140         * transform.cpp (Transform::OnPropertyChanged): if any class
35141         derived from Transform has one of its properties changed, it
35142         has a visual effect, propage this to the attacchees.
35144         (TransformGroup::OnSubPropertyChanged): Escalate here as well,
35145         this will catch the messages coming from anyone in the collection
35146         to its container. 
35148         (TransformCollection::OnSubPropertyChanged): Buble the event up
35149         here as well.
35151         * runtime.cpp (handle_motion): Change the order in which we send
35152         the events to the UIElement, we should start at the topmost
35153         element, and have the toplevel canvas be last.
35155 2007-06-17  Sebastien Pouliot  <sebastien@ximian.com>
35157         * brush.cpp: Refactor ImageBrush::SetupBrush to reuse parts of it
35158         inside Image::render.
35159         * media.cpp: Use code from ImageBrush to render image with it's
35160         properties (e.g. Stretch)
35161         * transform.cpp: Update (commented) debug output.
35163 2007-06-17  Miguel de Icaza  <miguel@novell.com>
35165         * runtime.cpp (GetValueNoDefault): This is necessary so we can
35166         distinguish a value that has been explicitly set from one that has
35167         not.
35168         
35170         * media.cpp (Image): use Framework::Width,Height for the image
35171         dimensions instead of the pixbuf width/height, used in extents and
35172         rotation computation.
35174         * runtime.cpp (Canvas::render): Set the clipping path on the
35175         identity matrix so we do not miss-clip.
35177         Render the canvas from 0, 0, fwidht, fheight, not the expose
35178         area. 
35180 2007-06-16  Miguel de Icaza  <miguel@novell.com>
35182         * runtime.cpp (Cairo::render): The canvas also needs to set the
35183         matrix and clear its background. 
35185         (surface_resize): convenience entry point to resize a surface.
35186         Notice that this will resize the surface, but not the toplevel
35187         canvas. 
35189 2007-06-16  Jackson Harper  <jackson@ximian.com>
35191         * demo.cpp:
35192         * runtime.h:
35193         * control.cpp:
35194         * xaml.cpp: Use a callback for setting custom attributes in
35195         elements.
35197 2007-06-16  Jeffrey Stedfast  <fejj@gnome.org>
35199         * media.cpp: Implemented all the needed virtual methods for
35200         MediaElement to work, using my new MediaPlayer class.
35202         * mplayer.cpp|h: New class for playing media sources.
35204         * ffvideo.cpp: Removed from the build.
35206 2007-06-16  Miguel de Icaza  <miguel@novell.com>
35208         Observation: either it is the surface, or something else is very
35209         slow, but entering the surface is quite slow right now to show the
35210         handles.   Not sure what it could be.
35211         
35212         * runtime.cpp (OnPropertyChanged): We probably should catch the
35213         property changes here, and not in the Sub* variant of this thing,
35214         this will update the canvas properly now.
35216         (dump_hierarchy): useful bit to debug what is going wrong. 
35217         
35218         (Canvas::get_xform_for): Do not apply extra
35219         transformations to the child other than the absolute_xform.
35221         (surface_attach): On attach we need to do a full invalidate, so
35222         the transformations are computed, otherwise it uses the defaults
35223         for the toplevel (zero), this fixes the atom.xaml issue. 
35225         * control.cpp (get_xform_for): This is not proxied to the real
35226         object, this is proxied to the parent.
35227         (control_initialize_from_xaml): Set the parent link here.
35229 2007-06-16  Chris Toshok  <toshok@ximian.com>
35231         * transform.cpp, transform.h, runtime.cpp, runtime.h,
35232           geometry.cpp, geometry.h, animation.cpp: Another pass (the last)
35233           at removing all cached instance collections and using GetValue
35234           for them.
35236 2007-06-16  Chris Toshok  <toshok@ximian.com>
35238         * media.cpp (Image::SetSource): we want events even if we attach a
35239         downloader that's been started.
35241 2007-06-16  Sebastien Pouliot  <sebastien@ximian.com>
35243         * shape.cpp: If StrokeThickness == 0 then don't stroke, otherwise it
35244         will mess with the earlier filling.
35246 2007-06-16  Chris Toshok  <toshok@ximian.com>
35248         * runtime.h, runtime.cpp: remove the instance cached
35249         Panel::children, use accessor to get it when we need it.
35251         * brush.h, brush.cpp: same for the GradientBrush::children
35252         property.
35254 2007-06-16  Chris Toshok  <toshok@ximian.com>
35256         * runtime.h: make these const Rect&'s.
35258 2007-06-16  Sebastien Pouliot  <sebastien@ximian.com> 
35260         * control.cpp|runtime.h: control_initialize_from_xaml needs to return
35261         the Value::Kind of the object that was created so the managed side do
35262         a Lookup on it.
35264 2007-06-16  Sebastien Pouliot  <sebastien@ximian.com>
35266         * control.cpp|runtime.h: control_initialize_from_xaml needs to return
35267         the element as the managed side needs (and defines) it.
35269 2007-06-16  Miguel de Icaza  <miguel@novell.com>
35271         * control.cpp: Implement Control.
35273         * downloader.cpp: Implement a system to send various notifications
35274         as Chris wants his notifications and managed world wants the
35275         notifications as well. 
35277         Should they ahve been separate?   For now I just added a list of
35278         them.   This code is turning uglier every minute.
35280 2007-06-16  Jackson Harper  <jackson@ximian.com>
35282         * xaml.cpp: Kill top_kind, I have no idea how this guy crept back
35283         in.
35284         - Handle expat errors a little better.
35286 2007-06-16  Sebastien Pouliot  <sebastien@ximian.com>
35288         * runtime.h: Implement missing IntersectsWith and Intersection to fix 
35289         build.
35291 2007-06-15  Chris Toshok  <toshok@ximian.com>
35293         * runtime.cpp (Canvas::render): small optimization.  only call the
35294         item's render method if its bounds actually intersects with the
35295         rectangle we're rendering.  Also, clip to the bounding rectangle
35296         of the item here.
35298 2007-06-16  Chris Toshok  <toshok@ximian.com>
35300         * clock.cpp, clock.h: don't use a constant for the timeout in
35301         gtk_timeout_add, and add methods to add/remove the timeout.
35303         (ClockGroup::TimeUpdated): if we're paused or stopped,
35304         don't call child clock TimeUpdated methods at all.  they always
35305         generate CurrentTimeInvalidated even when the time hasn't changed,
35306         which triggers redraws that don't need to happen.
35308 2007-06-16  Jackson Harper  <jackson@ximian.com>
35310         * runtime.cpp|h: We still need C style base_ref/unref.
35311         * demo.cpp:
35312         * xaml.cpp: Takle a callback for the from_file method also.
35313         
35314 2007-06-16  Jeffrey Stedfast  <fejj@gnome.org>
35316         * ffvideo.cpp (Stop): Implemented.
35317         (.ctor): init paused to false (maybe this is why video
35318         didn'talways work?).
35319         (.dtor): Stop() the video and unhook the timeout.
35321         * runtime.cpp: Implement Base::ref and Base::unref instead of
35322         doing it the c way.
35324         * *.cpp: Updated for above change.
35326         * shape.cpp (shape_set_stroke): Don't unref the old stroke.
35327         (shape_set_fill): Same.
35329         * text.cpp (text_init): Use a separate brush for TextBlocks and
35330         Inlines.
35331         (text_block_set_foreground): Don't unref the old brush.
35332         (inline_set_foreground): Same.
35334 2007-06-15  Chris Toshok  <toshok@ximian.com>
35336         * xaml.cpp: little leak fixes here and there.
35338 2007-06-15  Chris Toshok  <toshok@ximian.com>
35340         * demo.cpp (delete_event): destroy the surface and shutdown the
35341         runtime before we quit, just to make finding leaks a little
35342         easier.
35344         * ffvideo.cpp (MediaElementFfmpeg): re-order the
35345         close/g_io_channel_close calls to quiet down glib.
35347         * media.cpp: don't close the loader in DownloaderEvents.  do it in
35348         the dtor for now, to keep from getting that stupid gdk warning.
35349         this is wrong, but at least it's quiet.
35351         * text.cpp: delete the color we initialize the solid color brush
35352         with in text_init.
35354         * animation.cpp, animation.h: remove the cached key_frames
35355         collections.
35357         * runtime.h, runtime.cpp: clean up our cleanup a lot.
35359         in the copy constructor we actually need to make a copy (or
35360         ref in cases where we can) everything we store as a pointer in
35361         our union.  This is to facilitate us destroying it in the
35362         destructor.
35364         in surface_destroy just delete the surface.  move all the destroy
35365         code to the destructor.  Also, in the destructor unhook from the
35366         gtk events, since we get an unrealize event as part of widget
35367         destruction, apparently.
35369         Add DependencyObject::Shutdown which destroys our properties
35370         hashtable.  Create all the hashtables with _new_full so we can
35371         give free functions for keys/values.  actually make use of them,
35372         and clean up the relevant destructors.
35374         Add a destructor for Type, and have the Type ctor take its
35375         arguments.  free the name in the dtor.  Same deal with _new_full
35376         for hashtable creation, and also add Type::Shutdown.
35378         (runtime_shutdown): call TimeManager::Shutdown, Type::Shutdown,
35379         and DependencyObject::Shutdown to free all our stuff.
35380         
35381         * clock.h, clock.cpp: add TimeManager::Shutdown.
35383 2007-06-15  Jeffrey Stedfast  <fejj@gnome.org>
35385         * demo.cpp (gettime): Improved fps reporting.
35387 2007-06-15  Miguel de Icaza  <miguel@novell.com>
35389         * media.cpp (SetSource): Make it so we use the data from a
35390         downloader that might have already finished.
35392 2007-06-15  Chris Toshok  <toshok@ximian.com>
35394         * runtime.cpp: simplify refcounting a little more.  we now have 3
35395         rules:
35397             1. Value() holds a ref to its contained dependency object.
35398                This means we don't have to do anything special for
35399                anything stored in a DP.
35400         
35401             2. Collections hold a ref to their constituents.
35403             3. If you *must* cache an DO pointer in an instance field, you
35404                must ref/unref it properly.  But really, you shouldn't need
35405                to cache it, and I'll likely go through and remove all the
35406                ones I can find.
35408         * media.cpp (media_element_set_markers): remove the ref/unref
35409         stuff.
35411         * animation.cpp: comment out some spew, and follow a safer pattern
35412         in OnPropertyChanged.
35414         * brush.cpp (OnPropertyChanged): safer pattern.
35416         * geometry.cpp (OnPropertyChanged): safer pattern.
35418         * runtime.h: make all these dtors virtual.
35420         * clock.cpp, clock.h: remove the cached child_timelines instance
35421         field to clean up some of the ref counting problems.
35423 2007-06-15  Miguel de Icaza  <miguel@novell.com>
35425         * media.cpp (SetSource): Make it so we use the data from a
35426         downloader that might have already finished.
35428         We now accumulated data as we go.
35429         
35430         * downloader.cpp (downloader_get_response_text): Return
35431         accumulated data.
35433 2007-06-15  Jackson Harper  <jackson@ximian.com>
35435         * demo.cpp:
35436         * runtime.h:
35437         * xaml.cpp: Callback into managed code to create custom element
35438         instances.
35440 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
35442         * media.cpp (media_base_new): Removed, not instantiable.
35443         (Image::getbounds): Need to set the absolute_xform matrix :)
35445 2007-06-15  Miguel de Icaza  <miguel@novell.com>
35447         * media.cpp (Image::getxformorigin): Implement getxformorigin, so
35448         rotations are correct.
35450         (Image::getbounds): Implement getbounds correctly, the coordinates
35451         should be in device coordinates with the transform applied.
35453 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
35455         * demo.cpp (main): Add some Inlines to the TextBlock to test
35456         bounding box calculations.
35458         * text.cpp (OnPropertyChanged): If the property that changed is
35459         the Actual width/height, then don't invalidate anything - simply
35460         return (these are just cache values that only we can set
35461         internally).
35462         (Draw): Keep track of the pixel width/height of the entire
35463         rendered TextBlock+Inlines.
35464         (getbounds): Use the cached width/height of the TextBlock+Inlines
35465         and draw a rectangle instead to improve performance.
35467 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
35469         * media.cpp|h: Add media_base_new.
35471 2007-06-15  Miguel de Icaza  <miguel@novell.com>
35473         * Add destructors to classes that are caching DO collections and
35474         keeping refs to those, thanks to Chris Toshok for the pattern to
35475         use here. 
35477 2007-06-15  Chris Toshok  <toshok@ximian.com>
35479         * media.cpp (Image::render): use the uielement's opacity when
35480         painting.  Fixes the DrPopperSilverlight Bubble.xaml file.
35482 2007-06-15  Miguel de Icaza  <miguel@novell.com>
35484         * runtime.cpp (UIElement): The problem was that:
35486                 The ~UIElement destructor was setting the collection
35487                 properties to NULL in an attempt to unref stuff (these
35488                 are now automatically unrefed).
35490                 This caused the hash table destructor to unref the values
35491                 that were held in the collection.
35493                 At a later point, since "triggers" was cached and
35494                 OnPropertyNotify was called, we attempted to unref the
35495                 value, but that cached value pointed to an object that had
35496                 already been released.
35498         * Everywhere: remove duplicated code that got copy/pasted
35499         everywhere for tracking collections and caching values.  
35501         This should help fixing the crashing problem, but I still need to
35502         review the rules for reference counting and keeping a cache of
35503         variables in instance fields. 
35505 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
35507         * text.cpp (Draw): Now renders inlines.
35509 2007-06-15  Chris Toshok  <toshok@ximian.com>
35511         * Makefile.am (EXTRA_DIST): add alpha-premul-table.inc from
35512         libgdiplus.
35514         * demo.cpp: notify the downloader of the image file size so that
35515         it'll generate a COMPLETED event for the Image.
35517         * media.h, media.cpp: make image downloading non-progressive (we
35518         only create the surface when the downloader notifies the download
35519         is complete), but gain something in return: images with alpha
35520         channels.
35522         * downloader.h, downloader.cpp: add closure to event_notify, and
35523         expose the Event kind.
35525 2007-06-15  Miguel de Icaza  <miguel@novell.com>
35527         * runtime.cpp (UIElement, Canvas): send events to the objects as
35528         well.   My original test on orcas was buggy.
35530 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
35532         * runtime.cpp|h, type.cpp, value.cpp|h: Add Control.
35534 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
35536         * xaml.cpp (dependency_object_add_child): If the col_v collection
35537         value is NULL, create a new collection and add it to the
35538         DependencyObject.
35540         * runtime.cpp: Added a generic collection_new() function which
35541         takes a Value::Kind to specificy which collection-type it should
35542         allocate.
35544 2007-06-15  Miguel de Icaza  <miguel@novell.com>
35546         * downloader.cpp: Implement DownloadProgress property and event
35547         notification. 
35549         * runtime.h (DependencyObject::Is): new method, similar to C# is.
35551         * runtime.cpp (surface_repaint): We clear the background here
35552         again, to allow canvases to have transparent brushes.
35554 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
35556         * runtime.cpp: Panel.Background is NULL by default, which means it's
35557         transparent. This fixes Canvas inside Canvas.
35559 2007-06-15  Jackson Harper  <jackson@ximian.com>
35561         * runtime.cpp|h: Implement some Inlines stuff that the parser will
35562         need.
35563         * xaml.cpp: Add some of the pieces for creating textblock inlines.
35564         - Added some TODO areas for creating late bound collections (maybe
35565         this should just be illegal??).
35567 2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
35569         * text.cpp: Have inlines cache their PangoFontDescription and
35570         added logic to render textblock inlines.
35572 2007-06-15  Alan McGovern  <amcgovern@novell.com>
35574         * runtime.cpp|h: Added DependencyProperty.NameProperty
35576 2007-06-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35578         * transform.cpp|h: Add Transform C constructor.
35579         * runtime.cpp: Better warning message.
35581 2007-06-15  Miguel de Icaza  <miguel@novell.com>
35583         * runtime.cpp (surface_attach): Only hook up the events when we
35584         get a toplevel attached.   
35586         * downloader.h: Drop the C++ API with a C proxy API, switch to a
35587         pure C API as we need this from the managed side anyways.
35589         * downloader.h: Move downloader defs into .h file
35591         Add a notification system for reporting the size of a stream, so
35592         we can do progress indication.
35594         * downloader.cpp: Move downloader to its own file.
35596 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
35598         * brush.cpp: Implement ImageBrush.Opacity like MS does it in 1.1 alpha
35599         (i.e. Brush.Opacity isn't considered, only UIElement.Opacity is)
35600         * geometry.cpp: PathFigure::IsFilledProperty is ignored in Mix and
35601         will be removed in 1.0.
35602         * media.cpp|h: Make Image aware of ImageBrush (so we can update too)
35603         * runtime.cpp|h: Move calculation of "total" opacity of UIElement at
35604         the *right* place.
35606 2007-06-15  Jeffrey Stedfast  <fejj@gnome.org>
35608         * text.cpp (text_init): Set more default values.
35610         * runtime.cpp (Panel::OnPropertyChanged): Free children->list (as
35611         we iterate thru them) and set the resulting list to NULL (in case
35612         we don't hold the last ref) before unreffing the children object
35613         (in case we do own the last ref).
35614         (EventTrigger::OnPropertyChanged): Same.
35615         (UIElement::OnPropertyChanged): Same.
35617         * transform.cpp (OnPropertyChanged): Same.
35619         * geometry.cpp (GeometryGroup::OnPropertyChanged): Same.
35620         (PathGeometry::OnPropertyChanged): Same
35621         (PathFigure::OnPropertyChanged): Same.
35623         * clock.cpp (TimelineGroup::OnPropertyChanged): Same.
35625         * animation.cpp
35626         (DoubleAnimationUsingKeyFrames::OnPropertyChanged): Same.
35627         (ColorAnimationUsingKeyFrames::OnPropertyChanged): Same.
35628         (PointAnimationUsingKeyFrames::OnPropertyChanged): Same.
35630 2007-06-15  Sebastien Pouliot  <sebastien@ximian.com> 
35632         * brush.cpp: Complete ImageBrush.Transform
35633         * shape.cpp: Please at least one side of the lines.
35635 2007-06-15  Jeffrey Stedfast  <fejj@gnome.org>
35637         * text.cpp (text_init): No longer should ref the foreground brush
35638         or we leak refs.
35640         * xaml.cpp: Added support for Runs/LineBreaks
35642         * text.cpp: Implemented Run/LineBreak classes.
35643         (inline_new): Removed (can't instantiate this class).
35645 2007-06-15  Miguel de Icaza  <miguel@novell.com>
35647         * runtime.cpp (~DependencyObject, free_value): unref all the
35648         values that are stored in the object on destruction
35650         * runtime.cpp: Add support for enter/leave events.
35652 2007-06-14  Jeffrey Stedfast  <fejj@gnome.org>
35654         * text.cpp (getbounds): Set the actual width/height values to keep
35655         them up-to-date.
35657 2007-06-14  Jeffrey Stedfast  <fejj@gnome.org>
35659         * text.cpp (getbounds): Revert prior change.
35660         (getxformorigin): Same.
35662         * shape.cpp (getbounds): Revert prior change.
35664         * ffvideo.cpp (getbounds): Revert prior change.
35666         * runtime.cpp (update_xform): Revert my last change.
35667         (item_update_bounds): Same.
35669 2007-06-14  Jackson Harper  <jackson@ximian.com>
35671         * xaml.cpp: Set content properties when adding child elements.  We
35672         now no longer need to special case any elements except panel.
35674 2007-06-14  Jackson Harper  <jackson@ximian.com>
35676         * xaml.cpp: I must have been very tired when I wrote that.
35678 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com>
35680         * media.h: Expose Image's Height and Width (required for ImageBrush)
35681         * brush.cpp: Implement all Strech and Alignment[X|Y] options. Nothing
35682         (yet) force an update of the drawing once the image is available.
35684 2007-06-14  Jeffrey Stedfast  <fejj@gnome.org>
35686         * demo.cpp: Updated s/textblock/text_block/g
35688         * xaml.cpp: Don't register TextBlock twice.
35690         * ffvideo.cpp (getbounds): Can now depend on surface being set.
35692         * text.cpp: s/textblock/text_block/g
35693         (getbounds): Can now depend on surface being set.
35694         (getxformorigin): Same.
35696         * shape.cpp (getbounds): Can now depend on surface being set.
35698         * runtime.cpp (item_update_bounds): Don't update bounds if the
35699         surface hasn't been set yet.
35700         (update_xform): Same.
35702 2007-06-14  Jackson Harper  <jackson@ximian.com>
35704         * xaml.cpp: Add keyspline parsing.
35706 2007-06-14  Jackson Harper  <jackson@ximian.com>
35708         * value.h: This guy doesn't exist anymore, he is a
35709         DependencyObject now.
35711 2007-06-14  Jackson Harper  <jackson@ximian.com>
35713         * animation.cpp:
35714         * runtime.cpp|h: We also need to update the DependencyObject when
35715         resolving PropertyPaths.
35717 2007-06-14  Jackson Harper  <jackson@ximian.com>
35719         * runtime.cpp|h: New function that follows PropertyPath's to
35720         DependencyProperties.
35721         * animation.cpp: Use new function to resolve animation target
35722         properties.
35724 2007-06-14  Jackson Harper  <jackson@ximian.com>
35726         * runtime.cpp (GetDependencyProperty): If there is no table for a
35727         property, we still need to lookup the property in the parent
35728         chain (assumming inherit is true).
35729         - Fix some typos with types_by_name
35731 2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
35733         * demo.cpp (main): Rotate our demo text inside a filled rectangle
35734         around the center of the text.
35736         * text.cpp (TextBlock.ctor): Initialise a cached
35737         PangoFontDescription that we will update when properties change.
35738         (TextBlock.dtor): Free our font/layout.
35739         (getbounds): Implemented correctly.
35740         (getxformorigin): Implemented.
35741         (Draw): Simplified since we don't need to create our layout/font
35742         anymore (just use the cached ones).
35743         (OnPropertyChanged): Implemented.
35745 2007-06-14  Miguel de Icaza  <miguel@novell.com>
35747         * brush.cpp (Brush, SolidColorBrush, LinearGradientBrush,
35748         RadialGradientBrush): Notify owners when changes happen in the
35749         Brush.
35751         This makes the demo test-color-animation.xaml work without fps.
35753         * runtime.cpp: Make Canvas use the Background property to render
35754         the background.
35756 2007-06-14  Chris Toshok  <toshok@ximian.com>
35758         * demo.cpp (main): create a namescope to attach to the canvas, and
35759         also make sure to add the storyboard to the tree someplace so that
35760         it can find the names of things.
35762         * xaml.cpp: create a namescope to attach to the top_element.
35764         * runtime.cpp (FindName): rework this to walk up the tree.  Drop
35765         the global namescope.
35767 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com>
35769         * brush.cpp|h: Add ImageBrush functions, which delegates most of its
35770         work to Image (downloader).
35771         * media.cpp|h: Expose the cairo_surface_t that contains the image.
35773 2007-06-14  Chris Toshok  <toshok@ximian.com>
35775         * demo.cpp (FileDownloadState::AsyncFillBuffer): increase buffer
35776         size from 1024 to 8192 (and make it an instance instead of stack
35777         variable).  Also, add a return statement that will cause the idle
35778         handler to no longer be called when we get a write of 0 length.
35779         This might be wrong in the long term.
35781         * media.cpp, media.h: add cleanup methods for the Image class, and
35782         add a dtor as well.
35784 2007-06-14  Chris Toshok  <toshok@ximian.com>
35786         * media.cpp (LoaderSizePrepared): fill in the initial state of the
35787         image to gray with black border.
35788         (LoaderAreaUpdated): invalidate the item.
35790         * media.h: fix the progressive image loading.
35792 2007-06-14  Chris Toshok  <toshok@ximian.com>
35794         * demo.cpp: use the MediaBase::SourceProperty to set the image's
35795         source.
35797         * media.h, media.cpp: add Image::OnPropertyChanged so we can watch
35798         for changes in MediaBase::SourceProperty and kick off the download
35799         and stop the currently running one.
35801 2007-06-14  Chris Toshok  <toshok@ximian.com>
35803         * demo.cpp: track downloader api change.
35805         * media.cpp: track downloader api change.
35807         * runtime.h, runtime.cpp: the downloader's write function needs an
35808         offset as well as a length to work with mozilla's streaming api.
35810 2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
35812         * demo.cpp (main): Draw some text
35814         * text.cpp (text_init): Set a default solid black brush for
35815         foreground properties on Inline/TextBlock objects.
35816         (Draw): Setup the Brush stuff before drawing.
35818 2007-06-14  Jackson Harper  <jackson@ximian.com>
35820         * xaml.cpp: Add support for loading all implemented (and semi
35821         implemented) dependency object types.
35822         * text.cpp|h: C style constructors.
35824 2007-06-14  Chris Toshok  <toshok@ximian.com>
35826         * animation.cpp (KeySpline): default should be 1,1 for
35827         controlPoint2.
35829 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com>
35831         * xaml.cpp: Add support for Matrix (non-DO) type.
35833 2007-06-14  Chris Toshok  <toshok@ximian.com>
35835         * runtime.cpp (downloader_write): add C-style downloader_write
35836         method so we can call into it from the binding.
35838 2007-06-14  Chris Toshok  <toshok@ximian.com>
35840         * value.cpp, animation.h, type.cpp, value.h, runtime.cpp,
35841         type.cpp.in, value.h.in: make KeySpline subclass from
35842         DependencyObject like it should, and fix resulting fallout.
35844 2007-06-14  Miguel de Icaza  <miguel@novell.com>
35846         * runtime.cpp (Canvas): Implement OnChildPropertyChanged so we can
35847         catch cases of Top/Left being set on a child, this makes changes
35848         to the object after it has been created (adding/removing the
35849         property) work. 
35851 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com> 
35853         * brush.cpp|h: Much closer results for RadialGradients (but I still
35854         have a test case that fails). Also added Transform support for 
35855         LinearGradient.
35857 2007-06-14  Jackson Harper  <jackson@ximian.com>
35859         * animation.h: C style constructors.
35860         * clock.cpp|h: C style constructors.
35861         * runtime.cpp|h: Follow proper naming convention for
35862         TimelineMarker C style constructors.
35864 2007-06-14  Chris Toshok  <toshok@ximian.com>
35866         * runtime.h, runtime.cpp: remove the hack UnmanagedDownloader from
35867         here, and made Downloader pluggable with a set of functions.
35869         * demo.cpp: use the pluggable nature of Downloader to put
35870         UnmanagedDownloader here (and call it FileDownloadState).
35872         * value.cpp, value.h, type.cpp: resync.
35874 2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
35876         * text.cpp: Fixed Brush accessors for the NULL case.
35878         * media.cpp: Fixed accessors that could return NULL
35879         (media_init): init MediaBase and MediaElement items.
35881 2007-06-14  Jackson Harper  <jackson@ximian.com>
35883         * animation.cpp: C style constructor.
35884         * media.cpp|h: Add some C style constructors.
35885         * xaml.cpp:  Add parsing hooks for new components.
35887 2007-06-14  Chris Toshok  <toshok@ximian.com>
35889         * demo.cpp: make one of the videos an image instead.
35891 2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
35893         * xaml.cpp: Fixed the font_widths and font_stretches maps to
35894         reflect the numeric enum values defined in text.h (and msdn docs).
35896         * text.h: Sync enum values to documented numeric values.
35898 2007-06-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35900         * transform.cpp|h, media.cpp|h, brush.cpp|h, runtime.cpp|h:
35901         Make all classes that inherit from DO constructable, and add
35902         missing C-style constructors.
35904 2007-06-14  Jackson Harper  <jackson@ximian.com>
35906         * runtime.cpp|h: Hookup the resource collection.
35907         * xaml.cpp: Parse resource collections.
35909 2007-06-14  Chris Toshok  <toshok@ximian.com>
35911         * type.cpp, value.h, type.h: resync these.
35913         * media.h, media.cpp: add naive Image class.
35915         * runtime.h, runtime.cpp: add some Downloader methods, and
35916         subclass Downloader with a *very* hackish UnmanagedDownloader
35917         class that just loads from files.  Also add a "write_func"
35918         callback that the downloader can call when it has new data to hand
35919         off.
35921 2007-06-14  Chris Toshok  <toshok@ximian.com>
35923         * animation.cpp: import an arc length calculator I found on the
35924         net (at http://steve.hollasch.net/cgindex/curves/cbezarclen.html)
35925         and use that for KeySpline::GetSplineProgress.  The results don't
35926         match MS's exactly, though.
35928 2007-06-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
35930         * geometry.cpp, geometry.h: Add collection constructors.
35931         * brush.cpp, brush.h: Add ImageBrush and VideoBrush DPs.
35932         * runtime.cpp|runtime.h: Implement collection add/remove methods. 
35933         Add Downloader DPs.
35934         * media.cpp: Add MediaAttribute DP.     
35936 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com> 
35938         * brush.cpp|h: Refactor Opacity to make it reusable to other brushes
35939         (as it cannot be globally applied). Added DP, and related functions,
35940         to TileBrush.
35942 2007-06-14  Miguel de Icaza  <miguel@novell.com>
35944         * Improve the destruction scenario to release the resources that
35945         we have acquired, we are now up to the point of stopping clocks
35946         properly, but more work is going to be needed in the long term to
35947         properly track refs and objects.
35949         Ensured that all virtual GetObjectType are flagged with virtual.
35951         * Makefile.am: Put runtime.cpp at the top, to improve
35952         compile/test cycle.
35954 2007-06-14  Sebastien Pouliot  <sebastien@ximian.com> 
35956         * brush.cpp|h: One step closer for RadialGradientBrush
35957         * geometry.cpp: Fix ArcSegment sweep direction. All chess pieces now 
35958         render (shape-wise) correctly.
35959         * shape.cpp: Draw before setting the brush. This allows the brush
35960         setting code to ask for the extents to stroke/fill.
35962 2007-06-13  Chris Toshok  <toshok@ximian.com>
35964         * animation.cpp (KeySpline::GetSplineProgress): reimplement this
35965         to return a percentage of the arc length of the bezier that is
35966         traversed when t = linearProgress, taking the algorithm from
35967         http://steve.hollasch.net/cgindex/curves/cbezarclen.html
35969 2007-06-13  Chris Toshok  <toshok@ximian.com>
35971         * brush.h, geometry.h, animation.h, clock.h: add GetElementType
35972         collection overloads.
35974         * type.cpp: resync to track UIElement : Visual relationship.
35976         * runtime.h: add Collection::GetElementType, and add overloads
35977         (some commented out) for the collections listed.  Also, fix
35978         UIElement's superclass to be Visual.
35980         * runtime.cpp (Add): make sure we're only adding subclasses of our
35981         element type.
35983 2007-06-13  Chris Toshok  <toshok@ximian.com>
35985         * clock.cpp (AddChild): just pass the child, unwrapped.
35987         * runtime.h: remove the Value* overloads for Collection::Add and
35988         Collection::Remove.
35990         * xaml.cpp (dependency_object_add_child): just pass the dependency
35991         object, unwrapped.
35993 2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
35995         * text.cpp: Implemented a ton of stuff...
35996         (text_init): Added.
35998         * runtime.cpp (runtime_init): Call text_init().
36000 2007-06-13  Miguel de Icaza  <miguel@novell.com>
36002         * runtime.h (Collection): Since it seems that everything we have
36003         so far are collections of dependency objects, the code is now
36004         simplified and will also take refs and remove refs on destruction.
36006         The only reason to implement the Add/Remove methods is if you must
36007         do something as a hook during add/remove
36008         
36009         * runtime.cpp (SetValue): Enable NULLs to be set on Dependency
36010         Objects. 
36011         
36012         (OnPropertyChanged): Allow the value to be NULL, cope with that,
36013         we use this to clear all of our objects.
36015 2007-06-13  Chris Toshok  <toshok@ximian.com>
36017         * xaml.cpp (xaml_create_from_str): make the from_str a little
36018         closer to from_file.  fixes hooking up names when loading from
36019         strings.
36021 2007-06-13  Chris Toshok  <toshok@ximian.com>
36023         * runtime.cpp (runtime_init): start the time manager here.
36025         * demo.cpp (main): instead of here.
36027 2007-06-13  Jackson Harper  <jackson@ximian.com>
36029         * xaml.cpp: Gracefull handling of error conditions. Being
36030         intentionally non strict about some things while we are
36031         developing (like unknown elements, and attributes, and missing
36032         namespaces).
36034 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
36036         * brush.cpp: Better, but still imperfect, RadialGradientBrush
36038 2007-06-13  Jackson Harper  <jackson@ximian.com>
36040         * runtime.h: Add some of the error event handler args, so i can
36041         use these in the parser.
36043 2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
36045         * brush.cpp (OnPropertyChanged): Free list nodes as we iterate
36046         (soptimsation, woot).
36048         * text.cpp: Implemented c wrappers for Inline
36050 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
36052         * brush.cpp: Implemented LinearGradientBrush::SetupBrush
36053         * xaml.cpp: Handle GradientStops correctly (at GradientBrush) and add
36054         support for LinearGradientBrush.
36056 2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
36058         * text.cpp: Stubbed out TextBlock and Glyphs
36060 2007-06-13  Jackson Harper  <jackson@ximian.com>
36062         * xaml.cpp: GradientBrush is a Brush.
36064 2007-06-13  Miguel de Icaza  <miguel@novell.com>
36066         * runtime.cpp (dependency_object_find_name): Add new wrapper 
36068 2007-06-13  Chris Toshok  <toshok@ximian.com>
36070         * animation.cpp, animation.h: add public storyboard methods for
36071         begin/pause/resume/seek/stop.  also start in on the spline
36072         keyframe/KeySpline stuff.
36074         * type.cpp: resync.
36076         * value.cpp: resync.
36078         * value.h: resync.
36080         * value.h.in: add keyspline stuff.
36082         * type.cpp.in: add keyspline stuff.
36084 2007-06-13  Chris Toshok  <toshok@ximian.com>
36086         * demo.cpp: a few changes - none of the animations run forever
36087         now.  also, add some gtk events (button press/release/motion).  we
36088         pause animations on press, resume them on release.
36090         * clock.cpp: keep track of the offset caused by pausing/resuming
36091         the clock from our parent's time.
36093         * animation.cpp: split out all the logic for finding the current
36094         (and previous) keyframes into
36095         KeyFrameCollection::GetKeyFrameForTime.  Also, make the key frame
36096         collection maintain a separate sorted list of keyframes.
36098 2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
36100         * media.cpp (media_base_get_source): Implemented; use char*
36101         instead of Uri - we'll make the binding convert between the types.
36102         (media_base_set_source): Same.
36104 2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36106         * runtime.cpp: Xlib and we are both defining Visual,
36107         so implement a workaround.
36109 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
36111         * brush.cpp|h: Added code for LinearGradientBrush and partial setup
36112         for all gradient-related brushes (needs testing). Add all color 
36113         definitions supported by XAML.
36114         * mkcolor.cs: Tool to generate colors from System.Drawing (as they
36115         are identical).
36117 2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36118         
36119         * runtime.h: Add Visual.
36120         * value.cpp, value.h, type.cpp: Updated.
36122 2007-06-13  Jeffrey Stedfast  <fejj@gnome.org>
36124         * ffvideo.cpp: Back to using ALSA, but this time I got it right ;)
36126 2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36128         * media.h: Added MediaAttribute.
36129         * runtime.h: Added Downloader.
36130         * value.cpp, value.h, type.cpp: Updated.
36131         * typegen.cs: Copy Kind.cs to the correct directory.
36133 2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36135         * brush.cpp, brush.h, geometry.cpp: Fix property registration
36136         typos.
36138 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
36140         * brush.cpp|h: Fix Brush::RelativeTransformProperty and 
36141         Brush::RelativeTransformProperty types.
36143 2007-06-13  Sebastien Pouliot  <sebastien@ximian.com>
36145         * brush.cpp|h: Complete DependencyProperties for GradientBrush and
36146         add GradientStopCollection.
36147         * runtime.cpp|h: Remove code for GradientStopCollection.
36148         * xaml.cpp: Register new brush classes.
36150 2007-06-13  Miguel de Icaza  <miguel@novell.com>
36152         * runtime.cpp: Various new events are now sent.
36154 2007-06-13  Jackson Harper  <jackson@ximian.com>
36156         * xaml.cpp: When using the xaml_create_from_str we automatically
36157         add the default and x: namespaces.
36159 2007-06-12  Jeffrey Stedfast  <fejj@gnome.org>
36161         * ffvideo.cpp: Fixed to subclass the new MediaElement class.
36163         * video.cpp: Removed.
36165 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
36167         * brush.cpp|h: Added DependencyProperty for GradientBrush and 
36168         GradiantStop. Added new brush-related enums. Add [g|s]etter functions
36169         for RadialGradient and BrushGradiantStop.
36171 2007-06-12  Jackson Harper  <jackson@ximian.com>
36173         * xaml.cpp: Repsect namespaces.
36174         - Clean up code a little
36176 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
36178         * brush.h: New. Brush related stuff.
36179         * brush.cpp: DependencyProperty for RadialGradientBrush
36180         * runtime.h: [Re]move brush stuff.
36181         * shape.h: Add include for brush.h
36182         * type.cpp, value.h, value.h: Add RadialGradientBrush type.
36183         * Makefile.am: Add brush.h to the build.
36185 2007-06-12  Jeffrey Stedfast  <fejj@gnome.org>
36187         * media.cpp|h: Added to the build
36189 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
36191         * transform.cpp|h: Complete MatrixTransform.
36192         * value.h, value.h.in, runtime.cpp, type.cpp, type.cpp.in: Introduce
36193         Matrix type.
36195 2007-06-12  Miguel de Icaza  <miguel@novell.com>
36197         * runtime.h (UIElement::inside_object): new routine that should
36198         return true if the given absolute x, y is inside the given object
36199         or not. 
36201         (UIElement::handle_motion): new routine that is called when a
36202         motion event happens, it should determine if it can handle the
36203         given event at x, y.
36205         (Surface): new callbacks, these are callbacks that will pass the
36206         notification of the event to managed code. 
36208         * runtime.cpp (FrameworkElement): provide a default implementation
36209         for inside object that works for "squares" (things with widths and
36210         heights) 
36212 2007-06-12  Jeffrey Stedfast  <fejj@novell.com>
36214         * ffvideo.cpp: Instead of aborting when SDL_OpenAudio() fails,
36215         simply disable audio for that video. Temporary hack.
36217 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
36219         * transform.cpp: Fix SkewTransform with translations (Center[X|Y])
36221 2007-06-12  Jackson Harper  <jackson@ximian.com>
36223         * xaml.cpp: Implement enums.  This implementation is very naive,
36224         but works with the current Silverlight object model.  Basically,
36225         we just index property names to enum maps.  So a property name
36226         maps to a single enum type regardless of the type the enum is
36227         declared in.  This works fine with the current silverlight object
36228         model, but in the future might need to be changed, if we get
36229         conflicting property names.
36231 2007-06-12  Jeffrey Stedfast  <fejj@novell.com>
36233         * ffvideo.cpp: Fixed sound playback to not get that nasty
36234         reverb-like effect. Also switched to using SDL for audio.
36236 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
36238         * transform.cpp|h: Implement SkewTransform.
36239         * type.cpp: Register new type SkewTransform.
36240         * value.cpp|h: Add SkewTransform.
36241         * xaml.cpp: Register DO for SkewTransform.
36243 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36245         * runtime.cpp, runtime.h: Make DependencyObject::ParentProperty
36246         a normal field.
36248 2007-06-12  Jackson Harper  <jackson@ximian.com>
36250         * xaml.cpp: Don't try to add properties to the panel.
36252 2007-06-12  Sebastien Pouliot  <sebastien@ximian.com> 
36254         * geometry.cpp: Implemented ArcSegment::Draw using librsvg code
36255         * rsvg.cpp|h: New. Code from LGPL librsvg to implement arc_to
36256         * Makefile.am: Add rsvg.cpp|h to the build.
36258 2007-06-12  Jackson Harper  <jackson@ximian.com>
36260         * xaml.cpp: Add parser for KeyTime structures.
36262 2007-06-12  Chris Toshok  <toshok@ximian.com>
36264         * animation.cpp
36265         (ColorAnimationUsingKeyFrames::GetNaturalDurationCore): implement.
36266         (PointAnimationUsingKeyFrames::GetNaturalDurationCore): implement.
36267         (animation_init): make sure to initialize
36268         ColorKeyFrame::ValueProperty.
36270         * clock.cpp (Timeline::GetNaturalDuration): comment out some spew.
36272 2007-06-12  Jackson Harper  <jackson@ximian.com>
36274         * animation.cpp|h: C style constructor for KeyFrameCollection.
36275         * xaml.cpp: Implement the KeyFrame types
36276         - Make the base types ghosts, despite what the docs say, they
36277         can't be used.
36279 2007-06-12  Miguel de Icaza  <miguel@novell.com>
36281         * runtime.cpp (NotifyParentOfPropertyChange): Stop propagating
36282         when we have reached someone that handles that property in the way
36283         up. 
36285 2007-06-12  Jackson Harper  <jackson@ximian.com>
36287         * xaml.cpp: Register the TriggerCollection so that
36288         TriggerCollections can be created using the explicit syntax.
36289         
36290 2007-06-12  Jackson Harper  <jackson@ximian.com>
36292         * xaml.cpp: No longer need to special case EventTriggers. Remove
36293         some dead code (yippie!)
36294         * runtime.cpp: Unregister the target when removing from the
36295         collection.
36297 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36299         * runtime.h: Implement Inlines.
36300         * value.cpp, value.h, type.cpp: Updated.
36302 2007-06-12  Jackson Harper  <jackson@ximian.com>
36304         * runtime.cpp|h: Hook up the UIElement::Triggers and
36305         EventTrigger::Actions/RoutedEvent properly.
36306         * xaml.cpp: Remove some of the special casing for event triggers
36307         now that they are proper DependencyProperties.
36309 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36311         * typegen.cs: Now checks if classes that inherits DependencyObject
36312         implement GetObjectType.
36313         * animation.h, runtime.h, text.h, geometry.h, shape.h: Implement
36314         missing GetObjectTypes and fix a few that were returning the wrong
36315         type.
36317 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36319         * runtime.cpp: 
36320         - (DependencyObject::SetValue): Allow assigning an object of a 
36321           more derived type than the defined property type. Change the
36322           attached_list code to handle NULL dependency_objects.
36323         - Delete types_init, it's generated now.
36324         - Delete Value:As[DependencyObjects], its generated now.
36325         * runtime.h: Added definitions for a few missing collection classes.
36326         * types.cpp[.in], value.cpp[.in], value.h.in: Added.
36327         * value.h: Update.
36328         * Makefile.am: Add types.cpp and value.cpp
36329         * typegen.cs, typegen.cs: Added, generates types.cpp, value.cpp, 
36330         value.h and Kind.cs from the headers.
36332 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36334         * runtime.cpp, runtime.h: (DO/DP) Make all char*'s const.
36336 2007-06-12  Chris Toshok  <toshok@ximian.com>
36338         * clock.h, clock.cpp, runtime.cpp, value.h: use a
36339         TimelineCollection to store child collections in TimelineGroup.
36341 2007-06-12  Chris Toshok  <toshok@ximian.com>
36343         * animation.h, animation.cpp (animation_init): remove the
36344         clock.cpp property registration.
36345         (DoubleAnimationUsingKeyFrames::GetNaturalDurationCore): initial
36346         attempt, calculate our timespan from our key frames.
36347         (Animation::GetNaturalDurationCore): return a 1 second duration,
36348         as doc'ed on msdn.
36349         (UpdatePropertyValue): plug leak.
36351         * runtime.cpp (runtime_init): call clock_init.
36353         * clock.h, clock.cpp: largish pass at implementing support for
36354         Duration::Automatic in ClockGroups (where they query their child
36355         timelines to see how long they should make themselves).  Also, add
36356         clock_init.
36358         * xaml.cpp (timespan_from_str): correct math.
36360 2007-06-12  Jackson Harper  <jackson@ximian.com>
36362         * xaml.cpp: Add a couple more of the animation elements.
36364 2007-06-12  Jackson Harper  <jackson@ximian.com>
36366         * runtime.cpp|h: There is no public Triggers property.
36368 2007-06-12  Miguel de Icaza  <miguel@novell.com>
36370         * runtime.cpp (DependencyObject::RegisterFull): Allow for
36371         properties to be flagged as attached, and only propagate the child
36372         notification to those those that care about it.
36374 2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36376         * Implement a mechanism to keep track of parents and notify
36377         parents of changes in attached properties.
36379 2007-06-11  Jackson Harper  <jackson@ximian.com>
36381         * xaml.cpp: Add content properties, and handle collections that
36382         are content properties, by implicitly adding items to the
36383         collections.
36385 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com>
36387         * runtime.cpp: Remove matrix initialization (to avoid double-inits in 
36388         most cases).
36389         * transform.cpp: Add matrix initialization in TransformGroup::
36390         GetTransform. Makes the API safer :)
36392 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com> 
36394         * geometry.cpp: Implemented [Ploy]QuadraticBezierSegment::Draw.
36396 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com>
36398         * geometry.cpp|h: Add drawing of [Poly]LinesSegment and 
36399         [Poly]BezierSegment. More than half of Sam Ruby's samples can work
36400         with this.
36402 2007-06-11  Jeffrey Stedfast  <fejj@novell.com>
36404         * ffvideo.cpp: Attempt to get video to be in sync with audio by
36405         using the audio pts as the target_pts.
36407 2007-06-11  Jackson Harper  <jackson@ximian.com>
36409         * runtime.cpp: Register the collection types as derived from
36410         COLLECTION.
36412 2007-06-11  Chris Toshok  <toshok@ximian.com>
36414         * xaml.cpp (timespan_from_str): fix reading off the end of digits
36415         array.
36417 2007-06-11  Jackson Harper  <jackson@ximian.com>
36419         * xaml.cpp: Implement some more collection loading. A lot of
36420         duplicate code here, so I should probably refactor things a bit,
36421         but will wait until I've seen how more collections are laid out.
36423 2007-06-11  Chris Toshok  <toshok@ximian.com>
36425         * animation.h, animation.cpp: use KeyFrameCollection's for the
36426         *AnimationUsingKeyFrames key frame stuff, instead of GLists.
36428         * value.h, runtime.cpp: add Value::AsKeyFrameCollection.
36430 2007-06-11  Jackson Harper  <jackson@ximian.com>
36432         * xaml.cpp: Make the parents of collections the Collection ghost
36433         element.  This is a first step in cleaning up collection creation
36434         a little.
36436 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com> 
36438         * transform.cpp: remove dead code.
36439         * xaml.cpp: Partial collection support for geometry.
36441 2007-06-11  Sebastien Pouliot  <sebastien@ximian.com>
36443         * transform.cpp: Multiply each matrix in a TransformGroup (fix the 
36444         open-clipart sample, at least the correct parts of the sample).
36445         * runtime.cpp: Always initialize the matrix in item_get_render_affine
36446         otherwise we'll end up with bad random results.
36448 2007-06-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36450         * runtime.h, runtime.cpp: (DependencyObject) Add SetValue/GetValue 
36451         overloads that takes strings as well as DP, GetDependencyProperty where 
36452         it's possible to specify whether the parent type is searched for the
36453         property or not, and a HasProperty method
36455 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com>
36457         * geometry.cpp|h: Fix function names wrt type.
36458         * shape.cpp: Detect RenderTransform and RenderTransformOrigin changes
36459         and call update_xform. This fix the "atom" sample :)
36460         * transform.cpp: Fix Rotate and Scale around a center point.
36462 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com> 
36464         * geometry.cpp: Add more precision to types.
36465         * runtime.cpp: Apply Canvas' RenderTransform and RenderTransformOrigin
36467 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com> 
36469         * brush.cpp: Implement Opacity for SolidColorBrush.
36470         * runtime.cpp|h: Add an UIElement parameter to SetupBrush so we can 
36471         access it's properties (e.g. Opacity in this case). Add uielement_
36472         [g|s]et_opacity functions.
36473         * shape.cpp: Supply the UIElement when setting up brushes.
36475 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com>
36477         * shape.cpp: Fix rounded rectangle when radius_[x|y] are larger than 
36478         half the width|height.
36480 2007-06-10  Miguel de Icaza  <miguel@novell.com>
36482         * shape.cpp (OnPropertyChanged): Implement this property for most
36483         shapes: if the property is set, we need to invalidate and
36484         repaint. 
36486         * runtime.h (FullInvalidate): A method to perform a queue to
36487         redraw the underlying region, update the bounds and queue an
36488         update for the new region.
36490         * runtime.h (Base): make destructor virtual so that base_unref can
36491         call delete (Base *) p.   Exposed by the managed code when the
36492         first base_unref ran for the first time :-)
36494         I sense a leak!
36496         * runtime.cpp (surface_attach): invalidate the areas before and
36497         after, compute the bounds using item_update_bounds, not the
36498         getbounds method directly.
36500 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com>
36502         * xaml.cpp: Add PathFigure[Collection]/Segments support.
36504 2007-06-10  Sebastien Pouliot  <sebastien@ximian.com> 
36506         * brush.cpp: Fix Green definition, like GDI+ MS use a dark (0x80)
36507         green unlike other basic colors (red/blue at 0xFF).
36508         * xaml.cpp: Don't assert on an empty collection.
36510 2007-06-10  Miguel de Icaza  <miguel@novell.com>
36512         * runtime.cpp, runtime.h (BasicArray): New base struct for
36513         PointArray and double array, puts the count field at the beginning
36514         and avoids an extra block to be allocated (count and values are
36515         now on a single contiguous block).
36517         Introduce a refcount for the arrays, so that we can release those
36518         properly.  Due to the nature of how we copied values before we
36519         had to leak the values, when the leak was plugged, we crashed.  
36521         The refcount is there just because it was easy, we could clone if
36522         we wanted, but also I would like to keep the refcount there to
36523         ensure that the array of doubles is aligned on an 8 byte
36524         boundary. 
36526         (double_array_new, point_array_new): New methods to create the
36527         structures. 
36529         (Value): Now free the arrays.
36530         
36532 2007-06-09  Sebastien Pouliot  <sebastien@ximian.com>
36534         * geometry.cpp|h: Add/complete PathFigureCollection and 
36535         PathSegmentCollection. Doesn't parse from xaml.
36536         * runtime.cpp, value.h: Add support for new classes.
36538 2007-06-09  Sebastien Pouliot  <sebastien@ximian.com>
36540         * geometry.cpp|h: Complete GeometryGroup with GeometryCollection.
36541         But color rending is not yet correct in demo files.
36542         * runtime.cpp, value.h: Add support for GeometryCollection
36543         * xaml.cpp: Add support for GeometryGroup
36545 2007-06-09  Chris Toshok  <toshok@ximian.com>
36547         * animation.h, animation.cpp, value.h, runtime.cpp: add
36548         ColorKeyFrame and it's linear/discrete subclasses, as well as
36549         ColorAnimationUsingKeyFrames.
36551 2007-06-09  Chris Toshok  <toshok@ximian.com>
36553         * animation.h, animation.cpp, value.h, runtime.cpp: add the
36554         Discrete keyframes for point and double.
36556 2007-06-09  Chris Toshok  <toshok@ximian.com>
36558         * genkindcs.sh: new file, a script to generate
36559         olive/class/agclr/Mono/Kind.cs.
36561         * value.h: add marker comments so that genkindcs.sh works.  Also,
36562         remove the explicit value assignments to enum elements <
36563         DEPENDENCY_OBJECT.  there's no need for it.
36565 2007-06-09  Chris Toshok  <toshok@ximian.com>
36567         * demo.cpp (main): add in another animation, this one using
36568         keyframes, that moves a square around in a square, while animating
36569         its background color the same way as the other rectangles.
36571         * value.h, runtime.cpp: add in the keyframe types.
36573         * runtime.cpp (DependencyObject::DependenceyObject): fix a
36574         valgrind error - we shouldn't be "free"ing Values, since they're
36575         "new"ed.  Add free_value and use that for the hash table value
36576         dtor, and delete them correctly.
36578         * animation.h, animation.cpp: add a lot of the keyframe animation
36579         stuff.  DoubleAnimationUsingKeyFrames + LinearDoubleKeyFrame is
36580         the only tested configuration, though.
36582         * clock.cpp (everywhere): guint64->TimeSpan fixing.
36583         (TimeUpdated): turns out that not only does the progress go from
36584         1.0 to 0.0 when reversed, but current_time actually goes backward
36585         as well.  this has the nice effect of actually simplifying this
36586         method substantially, since we can always compute progress as
36587         time/duration.
36589         * clock.h: typedef TimeSpan to gint64 (switching from guint64
36590         everywhere), and update the api to use this.
36592 2007-06-09  Miguel de Icaza  <miguel@novell.com>
36594         * runtime.h (value_color_from_argb): Temporary hack until we
36595         figure out how to marshal Colors properly, we are using the uint32
36596         constructor, we should figure out if this is what we want, or if
36597         we should go down the route of using doubles (C++ stores thinks as
36598         Doubles our managed API as bytes).
36600 2007-06-10  Jackson Harper  <jackson@ximian.com>
36602         * xaml.cpp: Handle the TransformGroup default collection.
36603         - Add Value's to the collection
36605 2007-06-09  Jackson Harper  <jackson@ximian.com>
36607         * transform.cpp|h: C style constructor for TransformGroup
36608         * xaml.cpp: Implement loading transform groups and transform
36609         collections
36611 2007-06-09  Jackson Harper  <jackson@ximian.com>
36613         * value.h:
36614         * runtime.cpp:
36615         * transform.cpp|h: Impplement transform groups and transform
36616         collections.
36618 2007-06-09  Jackson Harper  <jackson@ximian.com>
36620         * value.h:
36621         * runtime.cpp|h: Use the new collection classes for triggers and
36622         actions. These are unsettable, so don't register them as
36623         DependencyProperties.
36625 2007-06-08  Everaldo Canuto  <ecanuto@novell.com>
36627         * runtime.cpp: In surface_destroy check for toplevel before unref
36628         it. 
36630 2007-06-08  Chris Toshok  <toshok@ximian.com>
36632         * animation.h: remove the huge whitespace gap after KeyTime, and
36633         remove the ifdef'ed out Nullable<T> template.
36634         
36635         * animation.cpp: remove the unused point_animation C api, and use
36636         the overloaded + operator on Color and Point when initializing
36637         "end" in GetCurrentValue for those animations.  They're looking
36638         more and more similar.
36640 2007-06-08  Chris Toshok  <toshok@ximian.com>
36642         * globally: move away from all uses of Value::u union.  switch
36643         everything to using Value::As* methods, which do typechecking and
36644         safe downcasting.
36645         
36646         * value.h: make the union private to catch anyone accessing it
36647         directly.
36649         * runtime.cpp (IsSubclassOf): return true if type == super.  Not
36650         strictly "subclass", but it makes this method a little more
36651         useful/efficient.  Add As* methods for string, point arrays, and
36652         double arrays, and add nullable As* methods for the types which
36653         don't return pointers already.
36655 2007-06-09  Jackson Harper  <jackson@ximian.com>
36657         * xaml.cpp: Parse time spans correctly.
36659 2007-06-08  Miguel de Icaza  <miguel@novell.com>
36661         * runtime.h (UIElement): Remove user_xform_origin as a field, now
36662         we pull this from the DependencyObject as it should be. 
36664         * runtime.cpp (UIElement::OnSubPropertyChanged): Catch a bunch of
36665         other properties that would trigger an invalidate/bounds
36666         recomputation. 
36668         (item_init): initialize the other properties that the managed code
36669         needs. 
36670         
36671         * shape.cpp, ffvideo.cpp: updated to use the
36672         RenderTransformOriginProperty in the computation of the center for
36673         the transformation.
36675 2007-06-08  Chris Toshok  <toshok@ximian.com>
36677         * Makefile.am (libmoon_la_SOURCES): add value.h
36679         * runtime.h, value.h: move the Value structure to value.h, since
36680         it (and its required forward decls) have grown huge.
36681         
36682         * runtime.cpp: add all the Value::As* methods, yay for CPP.
36684 2007-06-08  Jeffrey Stedfast  <fejj@novell.com>
36686         * ffvideo.cpp (queue_data): Replaced the sound code with my newest
36687         implementation, seems to play sound correctly now.
36689 2007-06-08  Chris Toshok  <toshok@ximian.com>
36691         * clock.h, clock.cpp: move all the TimeManager/Clock/Timeline
36692         stuff here, to help relieve some of the pressure building up in
36693         animation.h/animation.cpp.
36695 2007-06-08  Chris Toshok  <toshok@ximian.com>
36697         * animation.cpp: add some skeleton code for point keyframe
36698         animations, and reduce all the Double/Point/Color Animation
36699         GetCurrentValue() methods to much the same, using LERP and the
36700         operators defined in runtime.h.
36702         * runtime.cpp (types_init): register the new keyframe types.
36704         * runtime.h: add some new animation types to Value, and add
36705         operators for +, -, and * (scalar) for Color and Point to make the
36706         animation code a little more concise.
36708         * animation.h: add some new classes/structs for use in keyframe
36709         animations.
36711 2007-06-08  Miguel de Icaza  <miguel@novell.com>
36713         * runtime.cpp, runtime.h (Collection): Rework the collection to
36714         use abstract methods (gulp), 
36716         (VisualCollection): New collection, derives from Collection, does
36717         the collection thing.
36719         (Panel.OnPropertyChanged): If our children collection is updated,
36720         take care of it here.
36722         (DependencyObject): use free instead of g_free as we are
36723         allocating strings with strdup.
36724         
36725         (Value): drop constructor that specified type, type is not part of
36726         Value.
36727         
36728         * xaml.cpp, shape.cpp: Remove use of the old destructors now that we keep
36729         track of types correctly.
36731 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
36733         * brush.cpp: Fix color formats argb and rgb (too dark).
36735 2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36737         * runtime.h, runtime.cpp: Change Value::Kind to not have any holes
36738         in the integer ranges, and change Type's type hashtable to an array
36739         of types, indexed by Value::Kind. Also add Value::COLLECTION and 
36740         update Collection to use it.
36742 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
36744         * shape.cpp|h: Add Path::CanFill as it depends on the Geometry 
36745         object(s) being used.
36746         * geometry.cpp|h: Implemented Poly[Line|Bezier|QuadraticBezier]Segment
36747         Points properties and some basic draw stuff too.
36749 2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36751         * runtime.h, runtime.cpp, shape.cpp, xaml.cpp:
36752         Remove the Value (DependencyObject, Kind) constructor,
36753         the type of the DependencyObject can be obtained directly 
36754         from the DependencyObject itself now, and update all uses
36755         to the Value (DependencyObject) constructor.
36757 2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36759         * *.h, *.cpp: Remove objectType and SetObjectType from 
36760         DependencyObject, make DependencyObject::GetObjectType virtual, 
36761         and update all inheritors of DependencyObject to not use 
36762         SetObjectType, but override GetObjectType.
36764 2007-06-08  Jackson Harper  <jackson@ximian.com>
36766         * xaml.cpp: Add some type checks to ensure we are setting child
36767         properties to legal types.
36768         - explicitly set properties value types, Value now requires this.
36769         - fix warning
36771 2007-06-08  Jackson Harper  <jackson@ximian.com>
36773         * runtime.cpp: Initialize the surface to NULL
36774         - use UIElement as the type for flags 
36776 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com> 
36778         * shape.h: Don't waste time trying to fill lines.
36779         * shape.cpp: Fix dashes support. First reset between shapes and, 
36780         second, handle cairo dislike of a single dash value of 0.0.
36782 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
36784         * shape.cpp|h: Some shapes, like polylines, don't supports Fill.
36786 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com> 
36788         * shape.cpp|h: Implement Polygon::Points aad Polyline:Points 
36789         properties as DependencyProperty. Adjust their Draw methods.
36790         * runtime.cpp: Implement point_array_from_str.
36792 2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
36794         * shape.cpp|h: Add DP support for StrokeDashArray (double*).
36795         * runtime.cpp|h: Add double* and Point* (array) support to Value.
36796         * xaml.cpp: Add DOUBLE_ARRAY and POINT_ARRAY support. Supply value 
36797         kind for brushes to avoid runtime warnings.
36799 2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
36801         * runtime.cpp, runtime.h: Implemented a type system that tracks
36802         types' name and parent type.
36804 2007-06-08  Miguel de Icaza  <miguel@novell.com>
36806         * runtime.cpp (Panel): Make children a property of the panel so we
36807         can access it from the managed world.
36809         (Value): Add new constructor that takes a full type, need to
36810         discuss this with the team.
36812 2007-06-08  Jackson Harper  <jackson@ximian.com>
36814         * animation.cpp|h: Implement BeginStoryboard
36815         * runtime.cpp|h: Implement event triggers
36816         - Fire a loaded event when we first render an element
36817         * xaml.cpp: Implement parsing and loading storyboard and begin
36818         storyboard as well as event triggers and some of the property
36819         types that go with these guys.
36820         
36821 2007-06-08  Miguel de Icaza  <miguel@novell.com>
36823         * runtime.cpp (runtime_init): Add panel_init
36825         (panel_init): Register Children property (must still create the
36826         collections, that will be a new fight).
36828 2007-06-07  Miguel de Icaza  <miguel@novell.com>
36830         * xaml.cpp (start_element_handler): For the top element, track the
36831         type that we loaded, so we can return this to our caller (needed
36832         for the managed interface).
36834         (XamlParserInfo): track also the Value::Kind of the top_element. 
36836         (xaml_create_from_file, xaml_create_from_str): Both now can
36837         optionally return the type of the toplevel element.
36839         * runtime.cpp (Value): Switch Value to strdup/free.
36841         Use inited to prevent multiple initializations.
36843 2007-06-07  Chris Toshok  <toshok@ximian.com>
36845         * demo.cpp (main): track more of the api axing.
36847         * animation.h, animation.cpp (Storyboard::Begin): return
36848         immediately if we've already got a root clock.
36849         (globally) continue axing unused C api.
36851 2007-06-07  Chris Toshok  <toshok@ximian.com>
36853         * demo.cpp: track all the animation changes away from the C api,
36854         and also test out the from/by animation combination by making the
36855         X scaling only go From 1.0 By -0.5 (so it animates in the range of
36856         [1.0..0.5].
36857         
36858         * animation.h, animation.cpp: lots of changes - get rid of many of
36859         the animation/timeline C api calls, since they're unnecessary for
36860         the binding.  Implement the nullable property getter/setters as
36861         #defines since I didn't want to c&p all of them and make the
36862         obvious mistakes.  While I'm at it, implement the thing I needed
36863         nullable typed values for - "by" animation support.  Now you can
36864         specify any of the following combinations and get a usable
36865         animation: From+By, From+To, By, To.  You can actually just put
36866         From as well, but it won't animate (since both start end end will
36867         be the same).  The To property overrides the By property, if both
36868         are present.
36870         * runtime.h, runtime.cpp: add an overload of
36871         DependencyProperty::SetValue which takes a Value*, to enable
36872         nullable types to be set.  the existing SetValue method calls the
36873         new one with &value.
36875 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
36877         * brush.cpp: Fix comment.
36878         * shape.cpp: Reduce duplication.
36880 2007-06-07  Miguel de Icaza  <miguel@novell.com>
36882         * runtime.h: Store Value.BOOL in an int32, simplifies my life. 
36884         * runtime.cpp (dependency_object_set_value,
36885         dependency_object_get_value): Add C# callable method calls to
36886         control the properties.
36888         (dependency_property_lookup): Add a way of find dependency
36889         properties.
36891 2007-06-07  Chris Toshok  <toshok@ximian.com>
36893         * animation.cpp (TimeUpdated): comment out some spew.
36895         * runtime.cpp (SetValue): use the copy ctor, and fix != check for
36896         current_value and value.
36897         (Value::Value): add a copy ctor, which takes care of the g_strdup
36898         for us.
36900         * runtime.h: add copy ctor for Value.
36902 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
36904         * brush.cpp, geometry.cpp, shape.cpp: Protect against NULL properties.
36906 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com> 
36908         * geometry.cpp: #if-out transforms, it crash the xaml samples
36909         * runtime.h: Fix hierarchy. Panel inherits from FrameworkElement.
36911 2007-06-07  Chris Toshok  <toshok@ximian.com>
36913         * animation.cpp: switch all the various linear interpolation
36914         expressions to using the LERP macro, and add the PointAnimation
36915         implementation.
36917         * animation.h: add PointAnimation.
36919         * runtime.h: add Value::POINTANIMATION.
36921 2007-06-07  Chris Toshok  <toshok@ximian.com>
36923         * runtime.h (Value): add COLORANIMATION to the list of types.
36924         Also, add a Kind constructor so we can use that for nullable type
36925         default values in the ::RegisterProperty calls.  That is,
36926         initializing the default to Value(Value::COLOR) gives you a null
36927         default value with the COLOR type.
36929         * runtime.cpp (Value): new Kind ctor.
36931         * animation.cpp/.h: add ColorAnimation.
36933         * demo.cpp (main): add a color animation that interpolates between
36934         Red and Blue for the SolidColorBrush.
36936 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
36938         * runtime.cpp: Restore alpha support. Don't call cairo_set_operator
36939         without a cairo_save|restore pair (or without resetting it's original
36940         value). Anyway right now it works without any of that :)
36942 2007-06-07  Jackson Harper  <jackson@ximian.com>
36944         * runtime.cpp|h: add event triggers.
36945         * xaml.cpp: parse event triggers.
36947 2007-06-07  Chris Toshok  <toshok@ximian.com>
36949         * animation.cpp/.h (Clock): initialize duration here.
36950         (TimeUpdated): instead of getting it every time through this
36951         function.
36953 2007-06-07  Chris Toshok  <toshok@ximian.com>
36955         * animation.h: make Duration::FromSeconds return numbers of the
36956         same magnitude as get_now().
36958         * animation.cpp (Clock): fix UMR.
36960 2007-06-07  Jackson Harper  <jackson@ximian.com>
36962         * xamp.cpp: Oops, not sure how that happened.  Set the property
36963         name correctly, not to the type name.
36965 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
36967         * geometry.cpp|h: Apply transform. Fix default values.
36969 2007-06-07  Miguel de Icaza  <miguel@novell.com>
36971         * animation.cpp (get_now): The time computation was wrong, there
36972         was an extra "10" in there that made all computations go astray
36973         and in particular cause the large values for ScaleY, which made
36974         getboundingbox ridiculously slow.
36976         For debugging purposes: ScaleY was being set to
36977         131472940552.95215, which came from
36978         DoubleAnimation:GetCurrentValue which was computing this value
36979         from a busted clock.
36981 2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
36983         * geometry.cpp|h: Add drawing for [Ellipse|Line|Rectangle] geometry.
36984         Add basic code for the other geometry types.
36985         * runtime.cpp|h: Add basic implementation for point_from_str and 
36986         rect_from_str 
36987         * shape.h: Export some cairo helpers.
36988         * shape.cpp: Refactor drawing to reuse the code from geometry.
36989         * xaml.cpp: Add Point and Rect parsing.
36991 2007-06-07  Chris Toshok  <toshok@ximian.com>
36993         * demo.cpp: make all the animation stuff work declaratively, and
36994         test some of the different repeatbehavior and autoreverse
36995         settings.
36996         
36997         * animation.cpp: huge block of nasty code to determine our
36998         progress given the combinations of autoreverse and repeatbehavior.
37000         * animation.h: Add Duration stucture, add a few C api calls for
37001         getting/setting timeline properties.
37003         * runtime.h, runtime.cpp: add DURATION support to Value.
37004         
37005 2007-06-07  Jackson Harper  <jackson@ximian.com>
37007         * runtime.cpp|h: Some pieces of the triggers framework.
37009 2007-06-07  Jackson Harper  <jackson@ximian.com>
37011         * xaml.cpp: Handle repeat behaviors, lookup attached properties.
37013 2007-06-06  Chris Toshok  <toshok@ximian.com>
37015         * animation.cpp, animation.h: add timeline_set_autoreverse.
37017 2007-06-06  Chris Toshok  <toshok@ximian.com>
37019         * animation.h: add prototype for timeline_set_repeat_behavior.
37020         
37021         * animation.cpp (animation_init): register the RepeatBehavior
37022         property.
37023         (timeline_set_repeat_behavior): new function.
37025         * runtime.h: a better solution to enforcing types in the Value
37026         ctors - make Value (void*) private.  this gives compilation errors
37027         at all usage points where you're passing an unrecognized pointer
37028         type.  Also, add RepeatBehavior support to Value.
37030         * runtime.cpp: add repeatbehavior support to Value.
37031         
37032         * geometry.cpp: change all Value(pointer-to-struct) calls to
37033         Value(struct) calls.
37035         * transform.h: we need do define TransformGroup as a subclass of
37036         Transform, or the functions that SetValue a transformgroup fail to
37037         compile (since it's not a descendent of DependencyObject.)
37039 2007-06-07  Jackson Harper  <jackson@ximian.com>
37041         * xaml.cpp: Get object element property setting working.
37043 2007-06-06  Chris Toshok  <toshok@ximian.com>
37045         * runtime.h, runtime.cpp: add a special void* ctor to value so
37046         pointers aren't silently converted to bool (bad c++, bad!), and
37047         have that ctor output a warning message to the console, along with
37048         the likely cause.
37050         * brush.cpp: need to deref the Color* in the Value ctor.
37052 2007-06-06  Chris Toshok  <toshok@ximian.com>
37054         * animation.cpp: new dump of the animation stuff.  this is much
37055         closer in spirit and implementation to that of WPF's
37056         timing/animation system.  it's not perfect yet, but it's much,
37057         much closer.
37059 2007-06-06  Chris Toshok  <toshok@ximian.com>
37061         * runtime.h: make the point/color/rect copy constructors take a
37062         ref, not a pointer.  also, make the value contructors for struct
37063         types by-value.
37065         * runtime.cpp: make the value constructors for struct types
37066         by-value.
37068         * brush.cpp (brush_init): pass the Color by value.
37070 2007-06-06  Chris Toshok  <toshok@ximian.com>
37072         * runtime.h, runtime.cpp: move the Value implementation (for
37073         everything but the operators) to the .cpp file.
37075 2007-06-06  Miguel de Icaza  <miguel@novell.com>
37077         * runtime.h, runtime.cpp: Surface is no longer derived from
37078         Canvas, it now instead hosts a canvas, should avoid having two
37079         nested canvases for loading XAML files.
37081         demo.cpp: update.
37083         Correct computation of the bounding box for shapes and videos.
37085         * shape.cpp: Do not pop the cairo state after draw and then call
37086         extents as the computation on extents is done with the current
37087         cairo context, not the cairo context that drew the data before
37088         popping (this would show up with thick brushes).
37090         * runtime.cpp: Add 2 instead of 1, as double to integer rounding
37091         can take two values (negative and positive).
37093         * cutil.cpp: Cut and paste cairo code here, it computes the proper
37094         bounding box from the extents using the current absolute matrix. 
37096         * ffvideo.cpp (queue_data): Memory leak gone.
37098 2007-06-06  Jackson Harper  <jackson@ximian.com>
37100         * xaml.cpp: Set brush attributes.
37102 2007-06-06  Jackson Harper  <jackson@ximian.com>
37104         * runtime.h:
37105         * transform.h: Need to register this base DependencyObject for the
37106         xaml parser.
37107         * geometry.cpp: use correct value kind for registering properties
37108         * runtime.cpp: Don't be strict about the type with properties that
37109         derive from DependencyObject, we can't be too strict here, because
37110         of inheritance the registered type BRUSH could be set to
37111         SOLIDCOLORBRUSH
37112         - register some properties with the correct type
37113         
37114 2007-06-06  Jackson Harper  <jackson@ximian.com>
37116         * animation.cpp|h:
37117         * runtime.h: Staring to add triggers
37118         * shape.cpp: Use brush as our property kind
37119         
37120 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
37122         * runtime.h: Add new types and SweepDirection enum.
37123         * geometry.cpp|h: Add PathFigure, ArcSegment, BezierSegment and 
37124         LineSegment classes and [g|s]etter functions.
37126 2007-06-06  Miguel de Icaza  <miguel@novell.com>
37128         * runtime.h: Move all the types into the Value::Kind enumeration
37129         so that we can have a shared type system.
37131         * demo.cpp (main): Allow loading a XAML file from the command
37132         line, for your testing pleasure.
37134         * ffvideo.cpp (convert_to_rgb): We no longer need the loop to swap
37135         channels.
37137         Move to cairo to render to the screen the contents
37138         of the buffer.   ffmpeg and cairo do have the same RGBA format, it
37139         was actually the copy from this format to the screen using
37140         gdk_draw_pixbuf that failed: pixbuf expected the data in another
37141         format and there is no way to configure it.
37142         
37143         * runtime.cpp (surface_clear): use the cairo api as the surface is
37144         no longer living on the client buffer. 
37146         (surface_destroy): update
37148         (create_xlib, realized_callback, unrealized_callback): When the
37149         widget is realized, create a cairo context
37151 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
37153         * runtime.h: Add Value support for Point and Rect
37154         * geometry.cpp: Implement [g|s]etters for Point and Rect properties
37156 2007-06-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37158         * runtime.cpp, runtime.h: Added DependencyObject::GetObjectType.
37160 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
37162         * shape.cpp|h, runtime.cpp|h: Remove the (now) useless 
37163         set_prop_from_str methods since everything they handled is now
37164         moved into DependencyProperty.
37166 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com> 
37168         * shape.cpp|h: Use DependencyProperty for Shape Fill and Stroke 
37169         brushes. Add getter functions for fill and stroke.
37171 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
37173         * runtime.h: Call SetObjectType on Brush and SolidColorBrush
37175 2007-06-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37177         * runtime.cpp, runtime.h: Remove the default_values hashtable
37178         from DependencyObject, it's redundant since the default value
37179         is stored inside the DependencyProperty anyway.
37181 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
37183         * demo.cpp: Adapted to API changes.
37184         * brush.cpp: Add [g|s]etters for Brush and SolidColorBrush using
37185         DependencyProperty. Add brush initialization code.
37186         * runtime.cpp|h: Change Brush to inherit from DependencyObject. 
37187         Add Color support to Value. Call brush initialization.
37188         * shape.cpp: Add miter, pen join|cap and fill rule drawing support.
37189         * xaml.cpp: Adapted to API changes since SolidColorBrush now inherits
37190         from DependencyObject.
37192 2007-06-06  Jeffrey Stedfast  <fejj@gnome.org>
37194         * ffvideo.cpp (convert_to_rgb): Make sure the frame->data is
37195         non-NULL before trying to scale.
37197 2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
37199         * brush.cpp: Fix compiler warning.
37201 2007-06-06  Jackson Harper  <jackson@ximian.com>
37203         * runtime.cpp/h: initialize xaml
37204         - Add canvas C style constructor
37205         - Make SolidColorBrush's Color public
37206         * shape.cpp: Comment out the set_prop... stuff, this code won't be
37207         used anymore, now that the xaml parser is using dependency objects
37208         to set properties.
37209         * animation.cpp|h:
37210         * transform.cpp|h: Add some C style constructors
37211         * brush.cpp: Create colors from a string instead of solid brushes
37212         * xaml.cpp: Add in a known element tree, and move property setting
37213         into the xaml code, also added code for setting properties with
37214         property element syntax
37215         
37216 2007-06-05  Miguel de Icaza  <miguel@novell.com>
37218         Add type checking on SetValue, RegisterProperty to avoid
37219         mistakes. 
37220         
37221         * runtime.cpp (SetValue): Add simple type checking
37222         (Register): Ensure that no empty values are passed. 
37224         * runtime.h (DependencyObject): events, remove unused field.
37226 2007-06-05  Chris Toshok  <toshok@ximian.com>
37228         * runtime.cpp: we need to maintain another hash table for
37229         DependencyProperties so we can return the actual property, not the
37230         default value, which is what GetDependencyProperty needs to do.
37231         (DependencyObject::FindName): implement this by either trying to
37232         use the namescope on this object or the global_NameScope (rather
37233         suboptimal, it's supposed to 'walk the logical tree' according to
37234         msdn).
37236         partially implement NameScope.
37238         * runtime.h: add NameScope, and add a uint64 Value.  Also add
37239         FindName on DependencyObject.
37241 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
37243         * shape.cpp|h: Add Shape's thickness and some dash support. Add more
37244         [g|s]etters for Shape using DependencyProperty.
37245         * demo.cpp: Add thickness and dashes to the rectangles.
37247 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com> 
37249         * shape.cpp|h: Move FrameworkElement stuff into runtime.cpp|h. Use
37250         functions to retrieve the height and width of shapes (values defined
37251         in FrameworkElement).
37252         * runtime.cpp|h: Use DependencyProperty for FrameworkElement Height 
37253         and Width properties.
37254         * demo.cpp: Adjust to API changes.
37256 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
37258         * shape.cpp: Remove (now) useless properties in Line.
37260 2007-06-05  Miguel de Icaza  <miguel@novell.com>
37262         * shape.cpp, ffvideo.cpp, video.cpp: Do not use x, y anymore, we
37263         now have an absolute affine set for us beforehand.
37265         * runtim.cpp: on update_xform call the parent ::get_xform_for to
37266         obtain the base affine transform to use.
37268 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
37270         * geometry.cpp|h: Use DependencyProperty for properties.
37271         * transform.h: Protect.
37273 2007-06-05  Chris Toshok  <toshok@ximian.com>
37275         * runtime.h: call SetObjectType where we need it.
37277         * shape.h: same.
37278         
37279         * geometry.h: same.
37281 2007-06-05  Miguel de Icaza  <miguel@novell.com>
37283         * ffvideo.cpp (VideoFfmpeg): Initialize audio_frames_size, caught
37284         by valgrind
37286         * runtime.cpp (item_set_transform): This routine was doing nothing
37287         but doing an invalidate of the region, updating the transform,
37288         updating the bounding box and re-invalidating the new area.   Move
37289         that logic elsewhere (it was also ignoring the affine parameter
37290         anyways). 
37292         Unify user_xform with the RenderTransform dependency property, now
37293         we always have a static absolute transformation in the UIElement. 
37295 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com> 
37297         * shape.cpp|h: Update shape_init with correct values and implement
37298          path_[g|s]et_data.
37300 2007-06-05  Chris Toshok  <toshok@ximian.com>
37302         * animation.cpp (ClockTimeChanged): use the instance variety of
37303         GetDependencyProperty.
37305         * runtime.cpp (GetDependencyProperty): just call the static
37306         variety with our objectType.
37307         (SetObjectType): method to enable subclasses to set the object
37308         type.
37310         * runtime.h: add DependencyObject::SetObjectType, as well as the
37311         instance version of DependencyObject::GetDependencyProperty.
37313         * transform.h: call SetObjectType to identify this object.
37315 2007-06-05  Chris Toshok  <toshok@ximian.com>
37317         * runtime.cpp (AddHandler): oops, g_list_append requires an assignment.
37319 2007-06-05  Chris Toshok  <toshok@ximian.com>
37321         * runtime.h (Canvas): declare our dependencyproperties here.
37323         * runtime.cpp (canvas_init): actually assign the properties.
37325 2007-06-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37326         
37327         * runtime.cpp, runtime.h: Implement a DependencyProperty::
37328         GetDependencyProperty.
37330 2007-06-05  Chris Toshok  <toshok@ximian.com>
37332         * runtime.cpp (OnSubPropertyChanged): remove the event handler for
37333         the render transform and use OnSubPropertyChange instead.
37334         (item_set_render_transform): clean this up substantially - the
37335         property system handles all the "event" stuff now.
37336         (item_get_render_transform): we need a getter now that this uses
37337         the depprop stuff.
37338         (NotifyAttacheesOfPropertyChange): new method, call
37339         OnSubPropertyChanged with both the attachee's property (the thing
37340         storing 'this') and the subproperty that changed.
37341         (SetValue): complicate the attachee stuff a bit, since we need to
37342         store both the object and the property it's storing the value in.
37343         (item_init): initialize RenderTransformProperty.
37345         * runtime.h: make UIElement subclass from DependencyObject. This
37346         flattens the hierarchy some from SL (which has Visual in between,
37347         but we have no Visual.)
37349         * transform.cpp (OnPropertyChanged): call
37350         NotifyAttacheesOfPropertyChange.  Also, reindent some stuff.
37352 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com> 
37354         * demo.cpp: Updated to use rectangle_set_radius_[x|y]
37355         * shape.cpp|h: Add [get|set]ter functions for Line and Rectangle
37356         * xaml.cpp: Updated for API change.
37358 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
37360         * runtime.h: Add new ctor for Color(uint). Change UIElement to inherit
37361         from DependencyObject.
37362         * brush.cpp: Complete named colors (wrt System.Windows.Media.Colors)
37364 2007-06-05  Jeffrey Stedfast  <fejj@gnome.org>
37366         * ffvideo.cpp (queue_data): If we fail to get an audio codec, then
37367         we simply cannot play sound (or maybe there is no sound), either
37368         way, don't try to dereference the audio_codec pointer if it is
37369         NULL. Also wrapped audio setup in an #ifdef
37371 2007-06-05  Miguel de Icaza  <miguel@novell.com>
37373         Implement the OnPropertySet stuff, builds on Toshok's first pass.
37375         Next stage: discuss with Toshok the migration to this awesome
37376         framework from Events ;-)
37377         
37378         * runtime.cpp (SetValue): when adding dependencyobjects track on
37379         the attached object the ownership.
37381         Notify all containers of a property change.
37383         * brush.cpp (Brush): Remove AddListener, RemoveListener, we can
37384         use the property notification system for these.
37386         * runtime.h (DependencyObject): Add a "attached_list" gslist to
37387         keep track of all the objects where this particular
37388         DependencyObject has been attached to, to provide OnPropertyChange
37389         notifications (not hooked up yet).
37391         (Value): Introduce DependencyObject constructor.
37393 2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
37395         * shape.cpp|h: Started moving properties to DependencyObject. Added
37396         Path.
37397         * geometry.cpp|h: New. System.Windows.Media.Geometry related classes
37398         * runtime.cpp: Added calls to shape_init and geometry_init
37399         * runtime.h: Added Rect structure and new DependencyObject types for
37400         shapes and geometry.
37401         * Makefile.am: Added geometry.cpp|h to source files.
37403 2007-06-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37405         * runtime.h: initialize Value to zero on construction.
37407 2007-06-05  Chris Toshok  <toshok@ximian.com>
37409         * demo.cpp: abstract the cairo transformations away by using
37410         RotateTransforms.. and this is probably going to annoy some
37411         people, but make the normally stationary elements bounce between
37412         smaller and larger.
37414         * animation.h: make Clock subclass from DependencyObject.
37416         * animation.cpp (animation_init): assign the properties, don't
37417         just call Register.
37419         also, track the EventObject method name change.
37421         * runtime.cpp (item_set_render_transform): new method.  unhook the
37422         old transform and hook up the new one.  also, explicit set our
37423         transformation here.
37424         (SetValue): make this only do the work (and more importantly only
37425         call OnPropertyChanged) if the value is different.
37427         * runtime.h: shorten the names of the EventObject methods.  Add
37428         operator== and operator!= to Value.  Add an EventObject to
37429         DependencyObject to give us rudimentary event handlers.  Add the
37430         render_transform "higher-level" transform into to UIElement.
37432         * transform.h: add the OnPropertyChanged override and rename
37433         transform_get_value to transform_get_transform.
37435         * transform.cpp (transform_init): oops.  we need to actually
37436         assign the properties.
37437         (transform_get_transform): indent.
37438         (OnPropertyChanged): override this method to emit
37439         "TransformChanged".
37441 2007-06-04  Chris Toshok  <toshok@ximian.com>
37443         * Makefile.am (libmoon_la_SOURCES): add animation and transform to
37444         the build.
37446         * runtime.h: flesh out Value some, adding BOOL (has to be C++
37447         bool, not gboolean, or else it conflicts with int32), INT32,
37448         INT64, and STRING (char*).
37450         * runtime.cpp (runtime_init): call animation_init and
37451         transform_init.
37453         * animation.cpp, animation.h, transform.h, transform.cpp: get
37454         these using the new dependency object/value foo, and get them
37455         compiling.
37457 2007-06-04  Miguel de Icaza  <miguel@novell.com>
37459         * runtime.h: Make the "Base" refcounting class the base for
37460         DependencyObject. 
37462         * ffvideo.cpp: Set audio initialization to zero for now, so we can
37463         continue debugging.
37465         * runtime.cpp (Canvas): override render, in preparation for using
37466         attached properties.   I get the feeling am going to regret not
37467         keeping the top/left attached properties somewhere else.
37469         (Value): introduce the discriminating union for values as
37470         discussed on irc.
37471         
37472         (DependencyObject): use lower case name for properties.
37473         Take Value * instead of void *, this is so we can represent NULL
37474         values (is this a good idea Chris, or do we want to have a
37475         Value.Type.NULL enumeration value?
37477         Update hash table creation to g_free the result on hash table
37478         update and removal.
37480         (Event): Update indentation to be Linux-like instead of GNU like.
37482 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
37484         * shape.cpp|h: Add Poly[line|gon] drawing code and C helper functions 
37485         to create them. Replace the "old" C1 constant in Ellipse::Draw with 
37486         ARC_TO_BEZIER (now that I know where it comes from ;-)
37488 2007-06-04  Jeffrey Stedfast  <fejj@novell.com>
37490         * ffvideo.cpp (queue_data): Got sound kinda sorta working...
37492 2007-06-04  Jackson Harper  <jackson@ximian.com>
37494         * xaml.cpp: Give elements a type
37496 2007-06-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
37498         * runtime.cpp, runtime.h: implemented DependencyProperty and DependencyObject.
37500 2007-06-04  Chris Toshok  <toshok@ximian.com>
37502         * animation.h, animation.cpp: initial pass at some of the
37503         animation stuff.  doesn't build yet.
37505 2007-06-04  Chris Toshok  <toshok@ximian.com>
37507         * runtime.cpp, runtime.h: add EventObject, a c++ only base class
37508         for managing events.
37510 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
37512         * shape.h: Remove Ellipse::set_prop_from_str, it's "virtually" empty
37513         and added Draw methods to Polygon and Polyline.
37514         * shape.cpp: Added round-corner rectangle support (RadiusX, RadiusY)
37515         and match changes in header file.
37517 2007-06-04  Jackson Harper  <jackson@ximian.com>
37519         * shape.cpp/h: width and height are properties of the
37520         FrameworkElement.
37522 2007-06-04  Jackson Harper  <jackson@ximian.com>
37524         * shape.cpp/h: add ellipse_new
37525         - set width/height on ellipses (ellipsi ?) and draw them.
37526         * xaml.cpp: create ellipses, get zorder correct
37528 2007-06-04  Jackson Harper  <jackson@ximian.com>
37530         * xaml.cpp: put in character data functionality, eventually we
37531         will need to add FrameworkElement methods for setting the default
37532         content element. See
37533         http://msdn2.microsoft.com/en-us/library/ms752059.aspx#contentmodels
37534         for more info on content properties.
37536 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
37538         * demo.cpp: Include shape.h and use a rounded-rectangle
37539         * runtime.h: Added FillRule and moved out Shapes.
37540         * shape.h: New. Moved all shapes from runtime.h and added new ones.
37541         * shape.cpp: Added Polygon and Polyline.
37542         * xaml.cpp: Include shape.h
37543         * Makefile.am: Add shape.h
37545 2007-06-04  Chris Toshok  <toshok@ximian.com>
37547         * transform.cpp, transform.h: initial code for the transform
37548         objects.  doesn't compile yet.
37550 2007-06-04  Jackson Harper  <jackson@ximian.com>
37552         * demo.cpp: fix typo
37554 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com> 
37556         * demo.cpp: Fix for API changes.
37557         * runtime.h: Add FrameworkElement, other Shape properties and move
37558         around some properties to match the managed definitions.
37559         * shape.cpp: Add setters for new Shape properties and move properties
37560         parsing to match managed definitions.
37561         * xaml.cpp: Fix for API changes.
37563 2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
37565         * shape.cpp: Don't typecast doubles into ints.
37567 2007-06-04  Jackson Harper  <jackson@ximian.com>
37569         * runtime.h:
37570         * xaml.cpp: Implement function that allows you to load xaml from a
37571         chunk of text.
37572         * demo.cpp: add a very small xaml demo
37574 2007-06-04  Jackson Harper  <jackson@ximian.com>
37576         * xaml.cpp: remove old no longer used function.
37577         - track whether or not we are adding to a panel instead of surface
37578         * shape.cpp: Fix typo, need to set line_* not x1, x2, etc.
37580 2007-06-04  Jackson Harper  <jackson@ximian.com>
37582         * shape.cpp: Add new methods to allow shapes to have their
37583         properties filled in from text values.
37585         * brush.cpp: Start work on allowing solid color brushes to be
37586         created from strings.
37588         * runtime.cpp: stub in methods for setting properties on canvas
37589         and UIElements (these had some meat but I am removing it now that
37590         some of the names are updated, will put back later).
37592         * runtime.h: add some methods and functions for XAML parsing.
37594         * xaml.cpp: Initial implementation of the XAML parser.
37596 2007-06-03  Miguel de Icaza  <miguel@novell.com>
37598         * runtime.cpp (Collection, Panel): The beginning of an API to
37599         encapsulate collections that we will expose to the unmanaged
37600         world.  
37602         This should be the backend for the base collection class in agclr
37603         for the strongly typed types.   
37605         The idea is to have the MS.Internal.Collection<T> be a proxy that
37606         contains an IntPtr pointer to the C++ Collection instance and map
37607         the various add/remove methods to it.
37609         The immediate goal is to be able to do from C#:
37611                 Rectangle r = new Rectangle ();
37612                 r.Brush = new SolidColorBrush (new Color (1, 0, 0));
37613                 Canvas.Children.Add (r);
37615 2007-06-02  Miguel de Icaza  <miguel@novell.com>
37617         Implement support for the render origin.
37618         
37619         * runtime.cpp (item_invalidate): add one to cope with the rouding
37620         from floats to ints (fixes some trailing junk).
37622         Item: redo the affine transformation setup to support both the
37623         render_transform_origin property and avoid recomputing all of this
37624         on each repaint request.
37626         * ffvideo.cpp: Changed the code to do the actual video decoding on
37627         the main thread so we can put all the video and audio in the
37628         queues before we start rendering.
37630         Failed attempts at getting audio to work.
37632         * Everywhere: renamed Item to UIElement to better match the actual
37633         class hierarchy that we will be exposing.
37635 2007-06-01  Jackson Harper  <jackson@ximian.com>
37637         * shape.cpp: Fix typo.
37639 2007-06-01  Miguel de Icaza  <miguel@novell.com>
37641         * ffvideo.cpp: No longer use CMD_INITED, instead use g_idle_add to
37642         notify a special function (callback_video_inited).  Makes me
37643         wonder if I should do the same for the new-frame call
37645         Initialize the cairo surface on the callback_video_inited routine
37646         instead of doing this on the decoder thread (that was a mistake).
37648         This solves the misterious case of the video that randomly did not
37649         show up.
37651 2007-05-29  Miguel de Icaza  <miguel@novell.com>
37653         * video.cpp (load_next_frame): reimplement the video play back
37654         logic so that it will now properly paint the proper frame on the
37655         screen as needed.
37657         Add logic to skip frames if video is playing back too slowly, and
37658         to resume playback when new frames are ready.
37660         Currently its computing the delay using the n_frame_rate field
37661         (which no sample uses, but I could not find any other way of
37662         estimating the frame rate other than this.
37664         It works at least with some sample streams that I have with 30 fps
37665         and 15 fps.
37667         * runtime.cpp: Move the GtkDrawingArea widget into the Surface,
37668         and handle exposes in the runtime, not in the demo.   Show the
37669         widget (thats why I was not getting the expose events on the
37670         widget, duh). 
37672 2007-05-26  Miguel de Icaza  <miguel@novell.com>
37674         * runtime.cpp (Brush, SolidBrush): Introduce brushes. 
37676         (Shape): introduce reusable drawing framework for shapes, not
37677         complete. 
37678         
37679         (Line): introduce second user besides rectangles. 
37681         Remove agg test code.
37683         (Group::getbounds): implement.